server-re/decomp/MessageServer_Release_x64/full/functions/0x14008b7a0.c

95 lines
2.4 KiB
C

/* 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;
}