/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14018a2b0 FUN_14018a2b0 * Pseudocode, not original source. */ undefined8 FUN_14018a2b0(longlong param_1,uint param_2) { int *piVar1; longlong lVar2; longlong lVar3; ulonglong uVar4; undefined *puVar5; undefined8 uVar6; longlong *plVar7; undefined8 uVar8; undefined *puVar9; uint *puVar10; undefined *puVar11; char local_res10 [8]; undefined *local_80; undefined2 local_78; undefined8 local_70; undefined1 local_68; undefined8 local_60; undefined1 local_58; undefined8 local_50; undefined1 local_48; undefined *local_40; undefined1 local_38; uVar6 = (**(code **)(**(longlong **)(param_1 + 0x20) + 0x58))(); local_70 = uVar6; FUN_14016db50(uVar6); local_68 = 1; if (DAT_14034c86f != '\0') { (**(code **)(**(longlong **)(param_1 + 0x20) + 200))(); } lVar2 = *(longlong *)(param_1 + 0x20); uVar4 = (ulonglong)param_2 % (ulonglong)*(uint *)(lVar2 + 0xca0); if ((*(longlong *)(lVar2 + 0xc80) != 0) && (puVar10 = *(uint **)(*(longlong *)(lVar2 + 0xc80) + uVar4 * 8), puVar10 != (uint *)0x0)) { while ((uint)uVar4 == puVar10[8] % *(uint *)(lVar2 + 0xca0)) { if (*puVar10 == param_2) { lVar3 = *(longlong *)(puVar10 + 2); if ((lVar3 != 0) && (*(longlong *)(lVar3 + 0x228) == 0)) { local_res10[0] = FUN_140188d20(lVar2,lVar3); FUN_14016d8c0(); local_80 = PTR_DAT_140344098; if (local_res10[0] != '\0') { if (*(undefined8 **)(lVar3 + 0x740) == (undefined8 *)0x0) { uVar8 = 0; } else { uVar8 = **(undefined8 **)(lVar3 + 0x740); } plVar7 = (longlong *)FUN_1401bb140(uVar8,&local_40,lVar3); if (local_80 == (undefined *)0x0) { local_80 = PTR_DAT_140344098; } if ((undefined *)*plVar7 != local_80) { uVar6 = FUN_14016d8c0(); local_60 = uVar6; FUN_14016db50(uVar6); puVar5 = local_80; local_58 = 1; if (((local_80 != (undefined *)0x0) && (local_80 != PTR_DAT_140344098)) && (puVar11 = local_80 + -8, puVar11 != (undefined *)0x0)) { uVar8 = FUN_14016d8c0(); local_50 = uVar8; FUN_14016db50(uVar8); local_48 = 1; piVar1 = (int *)(puVar5 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14016d970(puVar11); } FUN_14016dbe0(uVar8); } local_80 = (undefined *)*plVar7; if (((local_80 != PTR_DAT_140344098) && (local_80 != (undefined *)0x0)) && (local_80 != (undefined *)0x8)) { *(int *)(local_80 + -4) = *(int *)(local_80 + -4) + 1; } FUN_14016dbe0(uVar6); uVar6 = local_70; } puVar5 = local_40; local_78 = (undefined2)plVar7[1]; if (((local_40 != (undefined *)0x0) && (local_40 != PTR_DAT_140344098)) && (puVar11 = local_40 + -8, puVar11 != (undefined *)0x0)) { uVar8 = FUN_14016d8c0(); local_50 = uVar8; FUN_14016db50(uVar8); local_48 = 1; piVar1 = (int *)(puVar5 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14016d970(puVar11); } FUN_14016dbe0(uVar8); } } plVar7 = (longlong *)(*(longlong *)(param_1 + 0x20) + 0x4a8); (**(code **)(*plVar7 + 0x150)) (plVar7,(ulonglong)param_2,&DAT_14034c4b0,local_res10,&local_80); if (local_res10[0] != '\0') { FUN_140181e40(*(undefined8 *)(param_1 + 0x20),lVar3); } puVar5 = local_80; if (((local_80 != (undefined *)0x0) && (local_80 != PTR_DAT_140344098)) && (puVar11 = local_80 + -8, puVar11 != (undefined *)0x0)) { puVar9 = (undefined *)FUN_14016d8c0(); local_40 = puVar9; FUN_14016db50(puVar9); local_38 = 1; piVar1 = (int *)(puVar5 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14016d970(puVar11); } FUN_14016dbe0(puVar9); } } break; } puVar10 = *(uint **)(puVar10 + 4); if (puVar10 == (uint *)0x0) break; } } FUN_14016dbe0(uVar6); return 1; }