/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400060f0 FUN_1400060f0 * Pseudocode, not original source. */ void FUN_1400060f0(longlong param_1,uint param_2,short *param_3,longlong param_4) { uint uVar1; uint uVar2; uint uVar3; int *piVar4; uint *puVar5; longlong lVar6; longlong *plVar7; LPVOID pvVar8; undefined ***pppuVar9; uint *puVar10; LPVOID pvVar11; uint uVar12; ulonglong uVar13; undefined *puVar14; uint uVar15; uint *local_res20; undefined **local_50; longlong *local_48; LPVOID local_40; ulonglong local_38; undefined8 local_30; local_50 = Proud::CFastArray::vftable; uVar15 = 0; local_48 = (longlong *)0x0; local_40 = (LPVOID)0x0; local_38 = 0; local_30 = 0; uVar13 = (ulonglong)param_2; pppuVar9 = &local_50; lVar6 = DAT_140162d60; FUN_14002cb80(DAT_140162d60,(longlong)pppuVar9,uVar13,param_4); if ((int)local_38 < 1) { if (local_40 == (LPVOID)0x0) { return; } pvVar8 = local_40; if (local_48 != (longlong *)0x0) { (**(code **)(*local_48 + 0x18))(local_48,local_40); return; } goto LAB_1400063f6; } FUN_140030200(lVar6,pppuVar9,uVar13,param_4); local_res20 = (uint *)PTR_DAT_140155010; uVar1 = FUN_140030080(param_3); uVar3 = 0; pvVar8 = (LPVOID)0x0; if ((local_res20 != (uint *)0x0) && (pvVar8 = (LPVOID)0x0, local_res20 != (uint *)PTR_DAT_140155010)) { pvVar8 = (LPVOID)(ulonglong)local_res20[-2]; } uVar2 = uVar1; if ((((int)uVar1 <= (int)pvVar8) && (uVar2 = uVar3, local_res20 != (uint *)0x0)) && (local_res20 != (uint *)PTR_DAT_140155010)) { uVar2 = local_res20[-2]; } uVar12 = 1; if (1 < (int)uVar2) { uVar12 = uVar2; } uVar2 = uVar3; if ((local_res20 != (uint *)0x0) && (local_res20 != (uint *)PTR_DAT_140155010)) { uVar2 = local_res20[-2]; } if ((int)uVar2 < (int)uVar12) { puVar5 = local_res20; if (local_res20 == (uint *)0x0) { puVar5 = (uint *)PTR_DAT_140155010; } local_res20 = puVar5; if ((int)uVar12 < 0) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } if (uVar12 == 0) { local_res20 = (uint *)PTR_DAT_140155010; if (((puVar5 != (uint *)0x0) && (puVar5 != (uint *)PTR_DAT_140155010)) && (puVar5 + -2 != (uint *)0x0)) { local_res20 = puVar5; piVar4 = (int *)FUN_140030200(puVar5,PTR_DAT_140155010,pvVar8,param_4); FUN_14002e6e0(piVar4); puVar10 = puVar5 + -1; *puVar10 = *puVar10 - 1; if (*puVar10 == 0) { FUN_1400302f0(puVar5 + -2); } FUN_14002e770((longlong)piVar4); local_res20 = (uint *)PTR_DAT_140155010; } } else { uVar2 = uVar3; if ((puVar5 != (uint *)0x0) && (puVar5 != (uint *)PTR_DAT_140155010)) { uVar2 = puVar5[-2]; } if (uVar12 != uVar2) { puVar5 = (uint *)FUN_140030280((longlong)(int)uVar12 * 2 + 10); if (puVar5 != (uint *)0x0) { *puVar5 = 0; puVar5[1] = 1; } *puVar5 = uVar12; uVar2 = uVar3; if ((local_res20 != (uint *)0x0) && (local_res20 != (uint *)PTR_DAT_140155010)) { uVar2 = local_res20[-2]; } puVar10 = (uint *)PTR_DAT_140155010; if ((int)uVar12 < (int)uVar2) { LAB_1400062b2: if (local_res20 != (uint *)0x0) { puVar10 = local_res20; } } else { uVar12 = uVar3; if (local_res20 != (uint *)0x0) { if (local_res20 != (uint *)PTR_DAT_140155010) { uVar12 = local_res20[-2]; } goto LAB_1400062b2; } } uVar13 = (ulonglong)uVar12; FUN_1400300b0(puVar5 + 2,puVar10,uVar12); FUN_140003240((longlong *)&local_res20,puVar10,uVar13,param_4); local_res20 = puVar5 + 2; } } } FUN_140002ea0((longlong *)&local_res20); puVar5 = local_res20; if (local_res20 == (uint *)0x0) { puVar5 = (uint *)PTR_DAT_140155010; } FUN_1400300b0(puVar5,param_3,uVar1); puVar5 = local_res20; if (local_res20 == (uint *)0x0) { puVar5 = (uint *)PTR_DAT_140155010; } uVar3 = FUN_140030080((short *)puVar5); pvVar8 = local_40; uVar1 = uVar15; if (0 < (int)uVar3) { uVar1 = uVar3; } uVar3 = uVar15; if ((local_res20 != (uint *)0x0) && (local_res20 != (uint *)PTR_DAT_140155010)) { uVar3 = local_res20[-2]; } if (((int)uVar1 < (int)uVar3) || (uVar1 = uVar15, local_res20 == (uint *)0x0)) { LAB_140006344: if (((local_res20 != (uint *)PTR_DAT_140155010) && (local_res20 != (uint *)0x0)) && (local_res20 + -2 != (uint *)0x0)) { local_res20[-2] = uVar1; *(undefined2 *)((longlong)local_res20 + (longlong)(int)uVar1 * 2) = 0; } } else if (local_res20 != (uint *)PTR_DAT_140155010) { uVar1 = local_res20[-2]; goto LAB_140006344; } pvVar11 = local_40; if ((int)local_38 == 0) { pvVar11 = (LPVOID)0x0; } plVar7 = (longlong *)(param_1 + 0x50); puVar14 = &DAT_1401555d0; uVar13 = local_38 & 0xffffffff; (**(code **)(*plVar7 + 0x78))(); puVar5 = local_res20; if (((local_res20 != (uint *)0x0) && (local_res20 != (uint *)PTR_DAT_140155010)) && (puVar10 = local_res20 + -2, puVar10 != (uint *)0x0)) { piVar4 = (int *)FUN_140030200(plVar7,pvVar11,uVar13,puVar14); FUN_14002e6e0(piVar4); puVar5 = puVar5 + -1; *puVar5 = *puVar5 - 1; if (*puVar5 == 0) { FUN_1400302f0(puVar10); } FUN_14002e770((longlong)piVar4); } if (pvVar8 == (LPVOID)0x0) { return; } if (local_48 != (longlong *)0x0) { (**(code **)(*local_48 + 0x18))(local_48,pvVar8); return; } LAB_1400063f6: FUN_1400302f0(pvVar8); return; }