/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401c0630 FUN_1401c0630 * Pseudocode, not original source. */ undefined8 * FUN_1401c0630(longlong param_1,undefined8 param_2,uint param_3) { uint uVar1; longlong lVar2; longlong *plVar3; undefined8 uVar4; ulonglong uVar5; char cVar6; undefined8 *puVar7; uint *puVar8; uint uVar9; ulonglong uVar10; uint local_res18 [4]; uVar1 = *(uint *)(param_1 + 0x40); uVar10 = (ulonglong)uVar1; puVar7 = (undefined8 *)(param_3 / uVar10); uVar5 = (ulonglong)param_3 % uVar10; lVar2 = *(longlong *)(param_1 + 0x20); uVar9 = (uint)uVar5; if (lVar2 != 0) { for (puVar8 = *(uint **)(lVar2 + uVar5 * 8); (puVar8 != (uint *)0x0 && (puVar7 = (undefined8 *)(puVar8[10] / uVar10), uVar9 == puVar8[10] % uVar1)); puVar8 = *(uint **)(puVar8 + 6)) { if (*puVar8 == param_3) goto LAB_1401c068b; } } puVar8 = (uint *)0x0; LAB_1401c068b: local_res18[0] = param_3; if (puVar8 != (uint *)0x0) { if (*(double *)(puVar8 + 4) != 0.0) { return puVar7; } *(undefined8 *)(puVar8 + 4) = param_2; puVar7 = (undefined8 *)FUN_1401c0180(param_1 + 0x70,local_res18); return puVar7; } if (lVar2 != 0) { for (puVar8 = *(uint **)(lVar2 + uVar5 * 8); (puVar8 != (uint *)0x0 && (uVar9 == puVar8[10] % uVar1)); puVar8 = *(uint **)(puVar8 + 6)) { if (*puVar8 == param_3) goto LAB_1401c0797; } if (lVar2 != 0) { for (puVar8 = *(uint **)(lVar2 + uVar5 * 8); (puVar8 != (uint *)0x0 && (uVar9 == puVar8[10] % uVar1)); puVar8 = *(uint **)(puVar8 + 6)) { if (*puVar8 == param_3) goto LAB_1401c0785; } if (lVar2 != 0) goto LAB_1401c075c; } } cVar6 = FUN_1401b5a10(param_1 + 0x18,uVar10,CONCAT71((int7)((ulonglong)lVar2 >> 8),1)); if (cVar6 == '\0') { /* WARNING: Subroutine does not return */ FUN_14004dc60(0x8007000e); } LAB_1401c075c: FUN_1401b5720(param_1 + 0x18); puVar8 = (uint *)FUN_1401c0200(param_1 + 0x18,local_res18,uVar5,param_3); FUN_1401b5720(param_1 + 0x18); LAB_1401c0785: *(ulonglong *)(puVar8 + 2) = (ulonglong)param_3; *(undefined8 *)(puVar8 + 4) = param_2; LAB_1401c0797: plVar3 = *(longlong **)(param_1 + 0x70); uVar4 = *(undefined8 *)(param_1 + 0x80); if (plVar3 == (longlong *)0x0) { puVar7 = (undefined8 *)FUN_14016d940(0x18); } else { puVar7 = (undefined8 *)(**(code **)(*plVar3 + 8))(plVar3,0x18); } if (puVar7 != (undefined8 *)0x0) { *(uint *)(puVar7 + 2) = param_3; } puVar7[1] = uVar4; *puVar7 = 0; *(longlong *)(param_1 + 0x88) = *(longlong *)(param_1 + 0x88) + 1; if (*(undefined8 **)(param_1 + 0x80) == (undefined8 *)0x0) { *(undefined8 **)(param_1 + 0x78) = puVar7; } else { **(undefined8 **)(param_1 + 0x80) = puVar7; } *(undefined8 **)(param_1 + 0x80) = puVar7; return puVar7; }