/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400f2810 FUN_1400f2810 * Pseudocode, not original source. */ void FUN_1400f2810(longlong param_1,longlong param_2) { uint uVar1; uint uVar2; longlong lVar3; ulonglong uVar4; undefined8 uVar5; uint *puVar6; uint *puVar7; uint uVar8; uint local_res8 [2]; *(undefined4 *)(param_2 + 0x20) = *(undefined4 *)(param_1 + 0x56c); *(undefined4 *)(param_2 + 8) = *(undefined4 *)(param_1 + 0x578); *(undefined2 *)(param_2 + 0xc) = *(undefined2 *)(param_1 + 0x57c); *(undefined4 *)(param_2 + 0x18) = *(undefined4 *)(param_1 + 0x588); *(undefined2 *)(param_2 + 0x1c) = *(undefined2 *)(param_1 + 0x58c); *(undefined8 *)(param_2 + 0x88) = *(undefined8 *)(param_1 + 0x50); *(undefined4 *)(param_2 + 0x90) = *(undefined4 *)(param_1 + 0x58); if (*(longlong *)(param_1 + 0x5d0) == 0) { puVar7 = (uint *)0x0; } else { puVar7 = *(uint **)(param_1 + 0x5c0); } do { if (puVar7 == (uint *)0x0) { *(undefined1 *)(param_2 + 0x24) = *(undefined1 *)(param_1 + 0x608); *(bool *)(param_2 + 0x80) = *(int *)(param_1 + 0x588) != *(int *)(param_1 + 0x578); *(undefined8 *)(param_2 + 0x98) = *(undefined8 *)(param_1 + 0x678); *(undefined8 *)(param_2 + 0xa0) = *(undefined8 *)(param_1 + 0x160); *(undefined4 *)(param_2 + 0xa8) = *(undefined4 *)(param_1 + 0x40); *(undefined4 *)(param_2 + 0xac) = *(undefined4 *)(param_1 + 0x44); return; } uVar1 = *puVar7; uVar2 = *(uint *)(param_2 + 0x50); lVar3 = *(longlong *)(param_2 + 0x30); uVar4 = (ulonglong)uVar1 % (ulonglong)uVar2; uVar8 = (uint)uVar4; local_res8[0] = uVar1; if (lVar3 == 0) { LAB_1400f28fe: uVar5 = FUN_1400a1910(param_2 + 0x28,uVar2,'\x01'); if ((char)uVar5 == '\0') { /* WARNING: Subroutine does not return */ FUN_1400064e0(0x8007000e); } } else { for (puVar6 = *(uint **)(lVar3 + uVar4 * 8); (puVar6 != (uint *)0x0 && (uVar8 == puVar6[6] % uVar2)); puVar6 = *(uint **)(puVar6 + 2)) { if (*puVar6 == uVar1) goto LAB_1400f293e; } if (lVar3 == 0) goto LAB_1400f28fe; for (puVar6 = *(uint **)(lVar3 + uVar4 * 8); (puVar6 != (uint *)0x0 && (uVar8 == puVar6[6] % uVar2)); puVar6 = *(uint **)(puVar6 + 2)) { if (*puVar6 == uVar1) goto LAB_1400f293a; } if (lVar3 == 0) goto LAB_1400f28fe; } FUN_1400cadd0((char *)(param_2 + 0x28)); puVar6 = FUN_14007d400((char *)(param_2 + 0x28),local_res8,uVar8,uVar1); FUN_1400cadd0((char *)(param_2 + 0x28)); LAB_1400f293a: *(undefined1 *)(puVar6 + 1) = 0; LAB_1400f293e: puVar7 = *(uint **)(puVar7 + 4); } while( true ); }