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

77 lines
2.5 KiB
C

/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
* Ghidra 12.1.2 decompiler output for 0x1400e14e0 FUN_1400e14e0
* Pseudocode, not original source. */
void FUN_1400e14e0(longlong *param_1,undefined8 param_2,ulonglong param_3,ulonglong param_4)
{
longlong lVar1;
int *piVar2;
int *piVar3;
undefined *puVar4;
undefined **ppuVar5;
wchar_t *pwVar6;
ulonglong uVar7;
ulonglong uVar8;
bool bVar9;
undefined *local_res10;
undefined *local_res18 [2];
bVar9 = (int)param_1[0x20] == 5;
uVar7 = (ulonglong)bVar9;
puVar4 = (undefined *)0x0;
if (*(longlong *)(param_1[0x21] + 0x5d8) != 0) {
puVar4 = *(undefined **)(*(longlong *)(param_1[0x21] + 0x5d8) + 0x38);
}
FUN_14006b350((int *)(puVar4 + 0x10));
lVar1 = param_1[2];
puVar4 = puVar4 + 0x10;
FUN_14006b3e0((longlong)puVar4);
uVar8 = (ulonglong)(lVar1 == 0);
if ((!bVar9) || (lVar1 != 0)) {
FUN_14006cb70(puVar4,param_2,param_3,param_4);
local_res18[0] = PTR_DAT_1401ac010;
pwVar6 = L"CNetClientManager.dtor assert fail: %d %d";
ppuVar5 = local_res18;
FUN_140053d20((longlong *)ppuVar5,L"CNetClientManager.dtor assert fail: %d %d",uVar7,uVar8);
FUN_14006cb70(ppuVar5,pwVar6,uVar7,uVar8);
puVar4 = local_res18[0];
local_res10 = PTR_DAT_1401ac010;
if (PTR_DAT_1401ac010 == (undefined *)0x0) {
local_res10 = (undefined *)0x0;
}
param_3 = uVar7;
param_4 = uVar8;
if (local_res18[0] != PTR_DAT_1401ac010) {
piVar2 = (int *)FUN_14006cb70(ppuVar5,pwVar6,uVar7,uVar8);
FUN_14006b350(piVar2);
FUN_1400031e0((longlong *)&local_res10,pwVar6,uVar7,uVar8);
local_res10 = puVar4;
if (((puVar4 != PTR_DAT_1401ac010) && (puVar4 != (undefined *)0x0)) &&
(puVar4 != (undefined *)0x8)) {
*(int *)(puVar4 + -4) = *(int *)(puVar4 + -4) + 1;
}
FUN_14006b3e0((longlong)piVar2);
param_3 = uVar7;
param_4 = uVar8;
}
ppuVar5 = &local_res10;
FUN_14006fa80((longlong *)ppuVar5,pwVar6,param_3,param_4);
if (((puVar4 != (undefined *)0x0) && (puVar4 != PTR_DAT_1401ac010)) &&
(puVar4 + -8 != (undefined *)0x0)) {
piVar3 = (int *)FUN_14006cb70(ppuVar5,pwVar6,param_3,param_4);
FUN_14006b350(piVar3);
piVar2 = (int *)(puVar4 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_14006cc60(puVar4 + -8);
}
FUN_14006b3e0((longlong)piVar3);
}
}
if ((longlong *)param_1[2] != (longlong *)0x0) {
FUN_1400dfdc0((longlong *)param_1[2],param_1,param_3,param_4);
}
return;
}