/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401fcdc0 FUN_1401fcdc0 * Pseudocode, not original source. */ void FUN_1401fcdc0(longlong param_1,longlong param_2) { uint uVar1; uint uVar2; longlong lVar3; ulonglong uVar4; char cVar5; uint *puVar6; uint *puVar7; 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; local_res8[0] = uVar1; if (lVar3 == 0) { LAB_1401fceae: cVar5 = FUN_1401b5a10(param_2 + 0x28,(ulonglong)uVar2, CONCAT71((int7)((ulonglong)lVar3 >> 8),1)); if (cVar5 == '\0') { /* WARNING: Subroutine does not return */ FUN_14004dc60(0x8007000e); } } else { for (puVar6 = *(uint **)(lVar3 + uVar4 * 8); (puVar6 != (uint *)0x0 && ((uint)uVar4 == puVar6[6] % uVar2)); puVar6 = *(uint **)(puVar6 + 2)) { if (*puVar6 == uVar1) goto LAB_1401fceee; } if (lVar3 == 0) goto LAB_1401fceae; for (puVar6 = *(uint **)(lVar3 + uVar4 * 8); (puVar6 != (uint *)0x0 && ((uint)uVar4 == puVar6[6] % uVar2)); puVar6 = *(uint **)(puVar6 + 2)) { if (*puVar6 == uVar1) goto LAB_1401fceea; } if (lVar3 == 0) goto LAB_1401fceae; } FUN_140173d40(param_2 + 0x28); puVar6 = (uint *)FUN_140175ab0(param_2 + 0x28,local_res8,uVar4,uVar1); FUN_140173d40(param_2 + 0x28); LAB_1401fceea: *(undefined1 *)(puVar6 + 1) = 0; LAB_1401fceee: puVar7 = *(uint **)(puVar7 + 4); } while( true ); }