/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14000cc40 FUN_14000cc40 * Pseudocode, not original source. */ void FUN_14000cc40(longlong param_1,undefined8 param_2,undefined8 param_3,longlong param_4, short *param_5) { uint uVar1; uint uVar2; int *piVar3; uint *puVar4; longlong lVar5; longlong *plVar6; LPVOID pvVar7; undefined ***pppuVar8; uint *puVar9; LPVOID pvVar10; uint uVar11; uint uVar12; ulonglong uVar13; undefined *puVar14; uint uVar15; uint *local_78; undefined8 local_70; int *local_68; undefined1 local_60; undefined **local_58; longlong *local_50; LPVOID local_48; ulonglong local_40; undefined8 local_38; local_70 = 0xfffffffffffffffe; local_58 = Proud::CFastArray::vftable; local_50 = (longlong *)0x0; local_48 = (LPVOID)0x0; local_40 = 0; local_38 = 0; pppuVar8 = &local_58; lVar5 = DAT_14017cf20; FUN_140039670(DAT_14017cf20,(longlong)pppuVar8,param_3,param_4); uVar15 = 0; if ((int)local_40 == 0) { if (local_48 == (LPVOID)0x0) { return; } pvVar7 = local_48; if (local_50 != (longlong *)0x0) { (**(code **)(*local_50 + 0x18))(local_50,local_48); return; } goto LAB_14000cf5f; } FUN_14003e7c0(lVar5,pppuVar8,param_3,param_4); local_78 = (uint *)PTR_DAT_14016f010; uVar1 = FUN_14003e620(param_5); uVar13 = 0; if ((local_78 != (uint *)0x0) && (uVar13 = 0, local_78 != (uint *)PTR_DAT_14016f010)) { uVar13 = (ulonglong)local_78[-2]; } uVar2 = uVar1; if ((((int)uVar1 <= (int)uVar13) && (uVar2 = uVar15, local_78 != (uint *)0x0)) && (local_78 != (uint *)PTR_DAT_14016f010)) { uVar2 = local_78[-2]; } uVar11 = 1; if (1 < (int)uVar2) { uVar11 = uVar2; } uVar2 = uVar15; if ((local_78 != (uint *)0x0) && (local_78 != (uint *)PTR_DAT_14016f010)) { uVar2 = local_78[-2]; } uVar12 = 0; if ((int)uVar2 < (int)uVar11) { puVar4 = local_78; if (local_78 == (uint *)0x0) { puVar4 = (uint *)PTR_DAT_14016f010; } local_78 = puVar4; if ((int)uVar11 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } if (uVar11 == 0) { local_78 = (uint *)PTR_DAT_14016f010; if (((puVar4 != (uint *)0x0) && (puVar4 != (uint *)PTR_DAT_14016f010)) && (puVar4 + -2 != (uint *)0x0)) { local_78 = puVar4; piVar3 = (int *)FUN_14003e7c0(puVar4,PTR_DAT_14016f010,uVar13,param_4); local_68 = piVar3; FUN_14003d040(piVar3); local_60 = 1; puVar9 = puVar4 + -1; *puVar9 = *puVar9 - 1; if (*puVar9 == 0) { FUN_14003e8b0(puVar4 + -2); } FUN_14003d0d0((longlong)piVar3); local_78 = (uint *)PTR_DAT_14016f010; } } else { uVar2 = uVar15; if ((puVar4 != (uint *)0x0) && (puVar4 != (uint *)PTR_DAT_14016f010)) { uVar2 = puVar4[-2]; } if (uVar11 != uVar2) { puVar4 = (uint *)FUN_14003e840((longlong)(int)uVar11 * 2 + 10); if (puVar4 != (uint *)0x0) { *puVar4 = 0; puVar4[1] = 1; } *puVar4 = uVar11; uVar2 = uVar12; if ((local_78 != (uint *)0x0) && (local_78 != (uint *)PTR_DAT_14016f010)) { uVar2 = local_78[-2]; } puVar9 = (uint *)PTR_DAT_14016f010; if ((int)uVar11 < (int)uVar2) { LAB_14000ce07: if (local_78 != (uint *)0x0) { puVar9 = local_78; } } else { uVar11 = uVar15; if (local_78 != (uint *)0x0) { if (local_78 != (uint *)PTR_DAT_14016f010) { uVar11 = local_78[-2]; } goto LAB_14000ce07; } } uVar13 = (ulonglong)uVar11; FUN_14003e650(puVar4 + 2,puVar9,uVar11); FUN_140002190((longlong *)&local_78,puVar9,uVar13,param_4); local_78 = puVar4 + 2; } } } FUN_140001df0((longlong *)&local_78); puVar4 = local_78; if (local_78 == (uint *)0x0) { puVar4 = (uint *)PTR_DAT_14016f010; } FUN_14003e650(puVar4,param_5,uVar1); puVar4 = local_78; if (local_78 == (uint *)0x0) { puVar4 = (uint *)PTR_DAT_14016f010; } uVar1 = FUN_14003e620((short *)puVar4); pvVar7 = local_48; uVar15 = 0; if (0 < (int)uVar1) { uVar15 = uVar1; } uVar1 = uVar12; if ((local_78 != (uint *)0x0) && (local_78 != (uint *)PTR_DAT_14016f010)) { uVar1 = local_78[-2]; } if (((int)uVar15 < (int)uVar1) || (uVar15 = uVar12, local_78 == (uint *)0x0)) { LAB_14000ce9a: if (((local_78 != (uint *)PTR_DAT_14016f010) && (local_78 != (uint *)0x0)) && (local_78 + -2 != (uint *)0x0)) { local_78[-2] = uVar15; *(undefined2 *)((longlong)local_78 + (longlong)(int)uVar15 * 2) = 0; } } else if (local_78 != (uint *)PTR_DAT_14016f010) { uVar15 = local_78[-2]; goto LAB_14000ce9a; } plVar6 = (longlong *)(param_1 + 0x48); puVar14 = &DAT_14016f5d0; uVar13 = local_40 & 0xffffffff; pvVar10 = local_48; (**(code **)(*plVar6 + 0x48))(); puVar4 = local_78; if (((local_78 != (uint *)0x0) && (local_78 != (uint *)PTR_DAT_14016f010)) && (puVar9 = local_78 + -2, puVar9 != (uint *)0x0)) { piVar3 = (int *)FUN_14003e7c0(plVar6,pvVar10,uVar13,puVar14); local_68 = piVar3; FUN_14003d040(piVar3); local_60 = 1; puVar4 = puVar4 + -1; *puVar4 = *puVar4 - 1; if (*puVar4 == 0) { FUN_14003e8b0(puVar9); } FUN_14003d0d0((longlong)piVar3); } if (pvVar7 == (LPVOID)0x0) { return; } if (local_50 != (longlong *)0x0) { (**(code **)(*local_50 + 0x18))(local_50,pvVar7); return; } LAB_14000cf5f: FUN_14003e8b0(pvVar7); return; }