server-re/decomp/Agent_Release_x64/full/functions/0x1400a4dc0.c
2026-10-14 16:45:19 -04:00

77 lines
2.5 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400a4dc0 FUN_1400a4dc0
* Pseudocode, not original source. */
void FUN_1400a4dc0(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_14002e6e0((int *)(puVar4 + 0x10));
lVar1 = param_1[2];
puVar4 = puVar4 + 0x10;
FUN_14002e770((longlong)puVar4);
uVar8 = (ulonglong)(lVar1 == 0);
if ((!bVar9) || (lVar1 != 0)) {
FUN_140030200(puVar4,param_2,param_3,param_4);
local_res18[0] = PTR_DAT_140155010;
pwVar6 = L"CNetClientManager.dtor assert fail: %d %d";
ppuVar5 = local_res18;
FUN_14001b7a0((longlong *)ppuVar5,L"CNetClientManager.dtor assert fail: %d %d",uVar7,uVar8);
FUN_140030200(ppuVar5,pwVar6,uVar7,uVar8);
puVar4 = local_res18[0];
local_res10 = PTR_DAT_140155010;
if (PTR_DAT_140155010 == (undefined *)0x0) {
local_res10 = (undefined *)0x0;
}
param_3 = uVar7;
param_4 = uVar8;
if (local_res18[0] != PTR_DAT_140155010) {
piVar2 = (int *)FUN_140030200(ppuVar5,pwVar6,uVar7,uVar8);
FUN_14002e6e0(piVar2);
FUN_140003240((longlong *)&local_res10,pwVar6,uVar7,uVar8);
local_res10 = puVar4;
if (((puVar4 != PTR_DAT_140155010) && (puVar4 != (undefined *)0x0)) &&
(puVar4 != (undefined *)0x8)) {
*(int *)(puVar4 + -4) = *(int *)(puVar4 + -4) + 1;
}
FUN_14002e770((longlong)piVar2);
param_3 = uVar7;
param_4 = uVar8;
}
ppuVar5 = &local_res10;
FUN_140033120((longlong *)ppuVar5,pwVar6,param_3,param_4);
if (((puVar4 != (undefined *)0x0) && (puVar4 != PTR_DAT_140155010)) &&
(puVar4 + -8 != (undefined *)0x0)) {
piVar3 = (int *)FUN_140030200(ppuVar5,pwVar6,param_3,param_4);
FUN_14002e6e0(piVar3);
piVar2 = (int *)(puVar4 + -4);
*piVar2 = *piVar2 + -1;
if (*piVar2 == 0) {
FUN_1400302f0(puVar4 + -8);
}
FUN_14002e770((longlong)piVar3);
}
}
if ((longlong *)param_1[2] != (longlong *)0x0) {
FUN_1400a3700((longlong *)param_1[2],param_1,param_3,param_4);
}
return;
}