/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400c0900 FUN_1400c0900 * Pseudocode, not original source. */ void FUN_1400c0900(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_14003d040((int *)(puVar4 + 0x10)); lVar1 = param_1[2]; puVar4 = puVar4 + 0x10; FUN_14003d0d0((longlong)puVar4); uVar8 = (ulonglong)(lVar1 == 0); if ((!bVar9) || (lVar1 != 0)) { FUN_14003e7c0(puVar4,param_2,param_3,param_4); local_res18[0] = PTR_DAT_14016f010; pwVar6 = L"CNetClientManager.dtor assert fail: %d %d"; ppuVar5 = local_res18; FUN_140029b80((longlong *)ppuVar5,L"CNetClientManager.dtor assert fail: %d %d",uVar7,uVar8); FUN_14003e7c0(ppuVar5,pwVar6,uVar7,uVar8); puVar4 = local_res18[0]; local_res10 = PTR_DAT_14016f010; if (PTR_DAT_14016f010 == (undefined *)0x0) { local_res10 = (undefined *)0x0; } param_3 = uVar7; param_4 = uVar8; if (local_res18[0] != PTR_DAT_14016f010) { piVar2 = (int *)FUN_14003e7c0(ppuVar5,pwVar6,uVar7,uVar8); FUN_14003d040(piVar2); FUN_140002190((longlong *)&local_res10,pwVar6,uVar7,uVar8); local_res10 = puVar4; if (((puVar4 != PTR_DAT_14016f010) && (puVar4 != (undefined *)0x0)) && (puVar4 != (undefined *)0x8)) { *(int *)(puVar4 + -4) = *(int *)(puVar4 + -4) + 1; } FUN_14003d0d0((longlong)piVar2); param_3 = uVar7; param_4 = uVar8; } ppuVar5 = &local_res10; FUN_1400416f0((longlong *)ppuVar5,pwVar6,param_3,param_4); if (((puVar4 != (undefined *)0x0) && (puVar4 != PTR_DAT_14016f010)) && (puVar4 + -8 != (undefined *)0x0)) { piVar3 = (int *)FUN_14003e7c0(ppuVar5,pwVar6,param_3,param_4); FUN_14003d040(piVar3); piVar2 = (int *)(puVar4 + -4); *piVar2 = *piVar2 + -1; if (*piVar2 == 0) { FUN_14003e8b0(puVar4 + -8); } FUN_14003d0d0((longlong)piVar3); } } if ((longlong *)param_1[2] != (longlong *)0x0) { FUN_1400bf1e0((longlong *)param_1[2],param_1,param_3,param_4); } return; }