/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x140005b90 FUN_140005b90 * Pseudocode, not original source. */ void FUN_140005b90(longlong param_1,undefined8 *param_2,undefined8 param_3,undefined8 param_4) { int *piVar1; longlong *plVar2; longlong *plVar3; undefined8 *puVar4; longlong *plVar5; longlong lVar6; longlong lVar7; wchar_t *pwVar8; ulonglong uVar9; undefined8 uVar10; undefined *local_res10; longlong *local_90; longlong *local_88; undefined8 local_80; undefined8 local_70; undefined8 local_68; undefined8 local_60; undefined8 local_58; void *local_50 [5]; puVar4 = (undefined8 *) (**(code **)*param_2)(param_2,&local_res10,param_3,param_4,0xfffffffffffffffe); uVar10 = *puVar4; uVar9 = (ulonglong)*(uint *)(param_2 + 6); pwVar8 = L"AGENT DISCONNECT : HostID:[%d][%s]"; lVar7 = DAT_14017c8a8; FUN_1400ef250(DAT_14017c8a8,L"AGENT DISCONNECT : HostID:[%d][%s]",uVar9,uVar10); if (((local_res10 != (undefined *)0x0) && (local_res10 != PTR_DAT_14016f010)) && (local_res10 + -8 != (undefined *)0x0)) { plVar5 = (longlong *)FUN_14003e7c0(lVar7,pwVar8,uVar9,uVar10); local_90 = plVar5; FUN_14003d040((int *)plVar5); local_88 = (longlong *)CONCAT71(local_88._1_7_,1); piVar1 = (int *)(local_res10 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14003e8b0(local_res10 + -8); } FUN_14003d0d0((longlong)plVar5); } local_res10 = PTR_DAT_14016f010; lVar7 = DAT_14017cf20; lVar6 = FUN_1400395f0(DAT_14017cf20,*(int *)(param_2 + 6)); if (lVar6 != 0) { *(undefined4 *)(lVar6 + 0xa0) = 0; local_90 = (longlong *)0x0; local_88 = (longlong *)0x0; local_80 = 0; FUN_1400397d0(lVar7,(ulonglong *)&local_90); plVar3 = local_88; plVar2 = local_90; for (plVar5 = local_90; plVar5 != plVar3; plVar5 = plVar5 + 1) { lVar7 = *plVar5; if (*(int *)(lVar7 + 8) == *(int *)(lVar6 + 4)) { *(undefined4 *)(lVar7 + 0xc4) = 0; puVar4 = FUN_140005da0(lVar7,local_50); local_70 = *(undefined8 *)(lVar7 + 0xb8); local_68 = *(undefined8 *)(lVar7 + 0xc0); local_60 = *(undefined8 *)(lVar7 + 200); local_58 = *(undefined8 *)(lVar7 + 0xd0); FUN_140012020(*(longlong *)(param_1 + 0x78),*(undefined4 *)(lVar7 + 4),&local_70,puVar4); if (local_50[0] != (void *)0x0) { operator_delete(local_50[0]); } } } if (plVar2 != (longlong *)0x0) { operator_delete(plVar2); } } return; }