/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400ac180 FUN_1400ac180 * Pseudocode, not original source. */ ulonglong * FUN_1400ac180(ulonglong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { int iVar1; undefined8 *puVar2; int *piVar3; ulonglong uVar4; int **ppiVar5; undefined1 uVar6; undefined7 uVar7; bool bVar8; int *local_res10; uVar6 = (undefined1)param_3; uVar7 = (undefined7)((ulonglong)param_3 >> 8); LOCK(); bVar8 = DAT_1401b6340 == 0; if (bVar8) { DAT_1401b6340 = 1; } UNLOCK(); if (bVar8) { puVar2 = (undefined8 *)FUN_14006cbf0(0x2c0); if (puVar2 == (undefined8 *)0x0) { puVar2 = (undefined8 *)0x0; } else { puVar2 = FUN_1400e8b00(puVar2,param_2,CONCAT71(uVar7,uVar6),param_4); } if (puVar2 == (undefined8 *)0x0) { local_res10 = (int *)0x0; } else { piVar3 = (int *)FUN_14006cbf0(0x48); if (piVar3 != (int *)0x0) { local_res10 = piVar3; uVar4 = FUN_140079250(); uVar6 = 1; FUN_14006b270(piVar3,uVar4 & 0xffffffff,CONCAT71(uVar7,1),param_4); } local_res10 = piVar3; FUN_14006b350(piVar3); piVar3[0x10] = 1; piVar3[0x11] = 0; *(undefined8 **)(piVar3 + 0xe) = puVar2; FUN_14006b3e0((longlong)piVar3); } ppiVar5 = &local_res10; FUN_1400a28b0((ulonglong *)&DAT_1401b6348,(ulonglong *)ppiVar5,CONCAT71(uVar7,uVar6),param_4); FUN_1400a25f0((longlong *)&local_res10,ppiVar5,CONCAT71(uVar7,uVar6),param_4); LOCK(); UNLOCK(); DAT_1401b6340 = 2; } else { LOCK(); iVar1 = DAT_1401b6340; if (DAT_1401b6340 == 9999) { DAT_1401b6340 = 999; iVar1 = 9999; } UNLOCK(); while (iVar1 != 2) { Sleep(5); LOCK(); iVar1 = DAT_1401b6340; if (DAT_1401b6340 == 9999) { DAT_1401b6340 = 999; iVar1 = 9999; } UNLOCK(); } } *param_1 = 0; FUN_1400a28b0(param_1,(ulonglong *)&DAT_1401b6348,CONCAT71(uVar7,uVar6),param_4); return param_1; }