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