/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400abca0 FUN_1400abca0 * Pseudocode, not original source. */ void FUN_1400abca0(longlong param_1,longlong param_2,short *param_3,undefined8 param_4) { longlong *plVar1; undefined8 *puVar2; uint uVar3; uint uVar4; uint uVar5; int *piVar6; uint *puVar7; longlong *plVar8; int *piVar9; longlong *plVar10; undefined ***pppuVar11; longlong **pplVar12; uint *puVar13; uint uVar14; ulonglong uVar15; SIZE_T SVar16; longlong lVar17; uint **ppuVar18; uint uVar19; uint *local_res8; longlong *local_res10; longlong local_res20; undefined **local_90; undefined4 local_88; undefined2 local_84; int *local_80; undefined1 local_78; int *local_70; undefined1 local_68; undefined **local_60; undefined8 local_58; undefined8 local_50; undefined8 local_48; undefined8 local_40; plVar1 = (longlong *)(param_1 + -0x88); piVar6 = (int *)(**(code **)(*plVar1 + 0x58))(plVar1); local_80 = piVar6; FUN_14003d040(piVar6); local_78 = 1; local_90 = Proud::AddrPort::vftable; local_88 = *(undefined4 *)(param_2 + 8); local_84 = *(undefined2 *)(param_2 + 0xc); pppuVar11 = &local_90; pplVar12 = &local_res10; plVar10 = plVar1; FUN_1400a5f70((longlong)plVar1,pplVar12,(longlong)pppuVar11); FUN_14003e7c0(plVar10,pplVar12,pppuVar11,param_4); local_res8 = (uint *)PTR_DAT_14016f010; uVar3 = FUN_14003e620(param_3); SVar16 = 0; uVar19 = 0; uVar5 = 0; uVar15 = SVar16; if ((local_res8 != (uint *)0x0) && (uVar15 = 0, local_res8 != (uint *)PTR_DAT_14016f010)) { uVar15 = (ulonglong)local_res8[-2]; } uVar4 = uVar3; if ((((int)uVar3 <= (int)uVar15) && (uVar4 = uVar5, local_res8 != (uint *)0x0)) && (local_res8 != (uint *)PTR_DAT_14016f010)) { uVar4 = local_res8[-2]; } uVar14 = 1; if (1 < (int)uVar4) { uVar14 = uVar4; } uVar4 = uVar5; if ((local_res8 != (uint *)0x0) && (local_res8 != (uint *)PTR_DAT_14016f010)) { uVar4 = local_res8[-2]; } if ((int)uVar4 < (int)uVar14) { if (local_res8 == (uint *)0x0) { local_res8 = (uint *)PTR_DAT_14016f010; } if ((int)uVar14 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } if (uVar14 == 0) { FUN_140002190((longlong *)&local_res8,PTR_DAT_14016f010,uVar15,param_4); } else { uVar4 = uVar5; if ((local_res8 != (uint *)0x0) && (local_res8 != (uint *)PTR_DAT_14016f010)) { uVar4 = local_res8[-2]; } if (uVar14 != uVar4) { puVar7 = (uint *)FUN_14003e840((longlong)(int)uVar14 * 2 + 10); if (puVar7 != (uint *)0x0) { *puVar7 = 0; puVar7[1] = 1; } *puVar7 = uVar14; uVar4 = uVar5; if ((local_res8 != (uint *)0x0) && (local_res8 != (uint *)PTR_DAT_14016f010)) { uVar4 = local_res8[-2]; } puVar13 = (uint *)PTR_DAT_14016f010; if ((int)uVar14 < (int)uVar4) { LAB_1400abe13: if (local_res8 != (uint *)0x0) { puVar13 = local_res8; } } else { uVar14 = uVar5; if (local_res8 != (uint *)0x0) { if (local_res8 != (uint *)PTR_DAT_14016f010) { uVar14 = local_res8[-2]; } goto LAB_1400abe13; } } uVar15 = (ulonglong)uVar14; FUN_14003e650(puVar7 + 2,puVar13,uVar14); FUN_140002190((longlong *)&local_res8,puVar13,uVar15,param_4); local_res8 = puVar7 + 2; } } } FUN_140001df0((longlong *)&local_res8); puVar7 = local_res8; if (local_res8 == (uint *)0x0) { puVar7 = (uint *)PTR_DAT_14016f010; } FUN_14003e650(puVar7,param_3,uVar3); puVar7 = local_res8; if (local_res8 == (uint *)0x0) { puVar7 = (uint *)PTR_DAT_14016f010; } uVar5 = FUN_14003e620((short *)puVar7); plVar10 = local_res10; uVar3 = uVar19; if (0 < (int)uVar5) { uVar3 = uVar5; } uVar5 = uVar19; if ((local_res8 != (uint *)0x0) && (local_res8 != (uint *)PTR_DAT_14016f010)) { uVar5 = local_res8[-2]; } if (((int)uVar5 <= (int)uVar3) && (uVar3 = uVar19, local_res8 != (uint *)0x0)) { if (local_res8 == (uint *)PTR_DAT_14016f010) goto LAB_1400abec3; uVar3 = local_res8[-2]; } if (((local_res8 != (uint *)PTR_DAT_14016f010) && (local_res8 != (uint *)0x0)) && (local_res8 + -2 != (uint *)0x0)) { local_res8[-2] = uVar3; *(undefined2 *)((longlong)local_res8 + (longlong)(int)uVar3 * 2) = 0; } LAB_1400abec3: if ((local_res10 != (longlong *)0x0) && (*local_res10 != 0)) { SVar16 = (SIZE_T)*(uint *)(*local_res10 + 0x56c); } local_58 = 0; local_50 = 0; local_48 = 0; local_40 = 0; local_60 = Proud::ByteArray::vftable; ppuVar18 = &local_res8; plVar8 = FUN_140071c20(&local_res20,0x1f,SVar16,(longlong *)ppuVar18,(longlong)&local_60); lVar17 = *plVar1; (**(code **)(lVar17 + 0x88))(plVar1); pppuVar11 = &local_60; FUN_140049e40(pppuVar11); puVar7 = local_res8; if (((local_res8 != (uint *)0x0) && (local_res8 != (uint *)PTR_DAT_14016f010)) && (puVar13 = local_res8 + -2, puVar13 != (uint *)0x0)) { piVar9 = (int *)FUN_14003e7c0(pppuVar11,plVar8,lVar17,ppuVar18); local_70 = piVar9; FUN_14003d040(piVar9); local_68 = 1; puVar7 = puVar7 + -1; *puVar7 = *puVar7 - 1; if (*puVar7 == 0) { FUN_14003e8b0(puVar13); } FUN_14003d0d0((longlong)piVar9); local_68 = 0; } local_res8 = (uint *)PTR_DAT_14016f010; if (plVar10 != (longlong *)0x0) { plVar10 = plVar10 + 1; *plVar10 = *plVar10 + -1; piVar6 = local_80; if (*plVar10 == 0) { puVar2 = (undefined8 *)*local_res10; if (puVar2 != (undefined8 *)0x0) { (**(code **)*puVar2)(puVar2,1); } FUN_14003e8b0(local_res10); piVar6 = local_80; } } FUN_14003d0d0((longlong)piVar6); return; }