/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x140059fc0 FUN_140059fc0 * Pseudocode, not original source. */ longlong * FUN_140059fc0(longlong *param_1,ulong *param_2,undefined8 param_3,undefined8 param_4) { int *piVar1; undefined *puVar2; ulonglong uVar3; int *piVar4; undefined **ppuVar5; undefined *puVar6; undefined *local_res20; FUN_14006cb70(param_1,param_2,param_3,param_4); local_res20 = PTR_DAT_1401ac010; ppuVar5 = &local_res20; uVar3 = FUN_140074360(param_2,(longlong *)ppuVar5,param_3,param_4); if ((char)uVar3 == '\0') { FUN_14006cb70(param_2,ppuVar5,param_3,param_4); puVar2 = local_res20; puVar6 = PTR_DAT_1401ac010; *param_1 = (longlong)PTR_DAT_1401ac010; if (local_res20 == (undefined *)0x0) { return param_1; } if (local_res20 == puVar6) { return param_1; } puVar6 = local_res20 + -8; if (puVar6 == (undefined *)0x0) { return param_1; } piVar4 = (int *)FUN_14006cb70(param_2,ppuVar5,param_3,param_4); FUN_14006b350(piVar4); piVar1 = (int *)(puVar2 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14006cc60(puVar6); } } else { FUN_14006cb70(param_2,ppuVar5,param_3,param_4); puVar6 = PTR_DAT_1401ac010; *param_1 = (longlong)PTR_DAT_1401ac010; if (puVar6 == (undefined *)0x0) { *param_1 = 0; } if (local_res20 != (undefined *)*param_1) { param_2 = (ulong *)FUN_14006cb70(param_2,ppuVar5,param_3,param_4); FUN_14006b350((int *)param_2); FUN_1400031e0(param_1,ppuVar5,param_3,param_4); *param_1 = (longlong)local_res20; if (((local_res20 != PTR_DAT_1401ac010) && (local_res20 != (undefined *)0x0)) && (local_res20 != (undefined *)0x8)) { *(int *)(local_res20 + -4) = *(int *)(local_res20 + -4) + 1; } FUN_14006b3e0((longlong)param_2); puVar6 = PTR_DAT_1401ac010; } puVar2 = local_res20; if (local_res20 == (undefined *)0x0) { return param_1; } if (local_res20 == puVar6) { return param_1; } puVar6 = local_res20 + -8; if (puVar6 == (undefined *)0x0) { return param_1; } piVar4 = (int *)FUN_14006cb70(param_2,ppuVar5,param_3,param_4); FUN_14006b350(piVar4); piVar1 = (int *)(puVar2 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14006cc60(puVar6); } } FUN_14006b3e0((longlong)piVar4); return param_1; }