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

83 lines
2.1 KiB
C

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