/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14004f780 FUN_14004f780 * Pseudocode, not original source. */ longlong * FUN_14004f780(longlong param_1,longlong *param_2,uint param_3) { longlong *plVar1; uint *puVar2; ulonglong uVar3; undefined8 *puVar4; undefined8 *local_res8; puVar4 = (undefined8 *)0x0; local_res8 = (undefined8 *)0x0; uVar3 = (ulonglong)param_3 % (ulonglong)*(uint *)(param_1 + 0x120); if (*(longlong *)(param_1 + 0x100) != 0) { for (puVar2 = *(uint **)(*(longlong *)(param_1 + 0x100) + uVar3 * 8); (puVar2 != (uint *)0x0 && ((uint)uVar3 == puVar2[8] % *(uint *)(param_1 + 0x120))); puVar2 = *(uint **)(puVar2 + 4)) { if (*puVar2 == param_3) { if (*(longlong *)(puVar2 + 2) != 0) { *(longlong *)(*(longlong *)(puVar2 + 2) + 8) = *(longlong *)(*(longlong *)(puVar2 + 2) + 8) + 1; local_res8 = *(undefined8 **)(puVar2 + 2); } *param_2 = 0; if (local_res8 != (undefined8 *)0x0) { local_res8[1] = local_res8[1] + 1; if ((*param_2 != 0) && (*(longlong *)(*param_2 + 8) = *(longlong *)(*param_2 + 8) + -1, *(longlong *)(*param_2 + 8) == 0)) { puVar4 = (undefined8 *)*param_2; } *param_2 = (longlong)local_res8; if (puVar4 != (undefined8 *)0x0) { if ((void *)*puVar4 != (void *)0x0) { operator_delete((void *)*puVar4); } FUN_14016d970(puVar4); } } if (local_res8 != (undefined8 *)0x0) { plVar1 = local_res8 + 1; *plVar1 = *plVar1 + -1; if (*plVar1 == 0) { if ((void *)*local_res8 != (void *)0x0) { operator_delete((void *)*local_res8); } FUN_14016d970(local_res8); return param_2; } return param_2; } return param_2; } } } *param_2 = 0; return param_2; }