/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14008b7a0 FUN_14008b7a0 * Pseudocode, not original source. */ ulonglong * FUN_14008b7a0(ulonglong *param_1,undefined8 param_2,undefined8 param_3,longlong param_4) { longlong *plVar1; int iVar2; undefined1 *puVar3; int *piVar4; ulonglong uVar5; int **ppiVar6; undefined1 uVar7; undefined7 uVar8; bool bVar9; int *local_res10; uVar7 = (undefined1)param_3; uVar8 = (undefined7)((ulonglong)param_3 >> 8); LOCK(); bVar9 = DAT_1401b6300 == 0; if (bVar9) { DAT_1401b6300 = 1; } UNLOCK(); if (bVar9) { puVar3 = operator_new(0xc0); if (puVar3 == (undefined1 *)0x0) { puVar3 = (undefined1 *)0x0; } else { puVar3 = FUN_1400ccfb0(puVar3,param_2,CONCAT71(uVar8,uVar7),param_4); } if (puVar3 == (undefined1 *)0x0) { piVar4 = (int *)0x0; local_res10 = (int *)0x0; } else { piVar4 = (int *)FUN_14006cbf0(0x48); if (piVar4 != (int *)0x0) { local_res10 = piVar4; uVar5 = FUN_140079250(); uVar7 = 1; FUN_14006b270(piVar4,uVar5 & 0xffffffff,CONCAT71(uVar8,1),param_4); } local_res10 = piVar4; FUN_14006b350(piVar4); piVar4[0x10] = 1; piVar4[0x11] = 0; *(undefined1 **)(piVar4 + 0xe) = puVar3; FUN_14006b3e0((longlong)piVar4); } ppiVar6 = &local_res10; FUN_1400801c0(&DAT_1401b6308,(ulonglong *)ppiVar6,CONCAT71(uVar8,uVar7),param_4); if (piVar4 != (int *)0x0) { FUN_14006b350(piVar4); plVar1 = (longlong *)(piVar4 + 0x10); *plVar1 = *plVar1 + -1; if (*plVar1 == 0) { FUN_14006b3e0((longlong)piVar4); FUN_14007d3b0(piVar4,ppiVar6,CONCAT71(uVar8,uVar7),param_4); } else { FUN_14006b3e0((longlong)piVar4); } } LOCK(); UNLOCK(); DAT_1401b6300 = 2; } else { LOCK(); iVar2 = DAT_1401b6300; if (DAT_1401b6300 == 9999) { DAT_1401b6300 = 999; iVar2 = 9999; } UNLOCK(); while (iVar2 != 2) { Sleep(5); LOCK(); iVar2 = DAT_1401b6300; if (DAT_1401b6300 == 9999) { DAT_1401b6300 = 999; iVar2 = 9999; } UNLOCK(); } } *param_1 = 0; FUN_1400801c0(param_1,&DAT_1401b6308,CONCAT71(uVar8,uVar7),param_4); return param_1; }