/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x140005bf0 FUN_140005bf0 * Pseudocode, not original source. */ void FUN_140005bf0(longlong param_1,ulonglong param_2,uint param_3,ulonglong param_4,short *param_5) { uint uVar1; uint uVar2; uint uVar3; int *piVar4; uint *puVar5; longlong lVar6; longlong *plVar7; undefined ***pppuVar8; uint *puVar9; LPVOID pvVar10; uint uVar11; ulonglong uVar12; LPVOID pvVar13; undefined *puVar14; uint uVar15; uint *local_68; undefined8 local_60; int *local_58; undefined1 local_50; undefined **local_48; longlong *local_40; LPVOID local_38; ulonglong local_30; undefined8 local_28; local_60 = 0xfffffffffffffffe; local_48 = Proud::CFastArray::vftable; uVar15 = 0; local_40 = (longlong *)0x0; local_38 = (LPVOID)0x0; local_30 = 0; local_28 = 0; lVar6 = DAT_140162d60; if (param_3 == 0) { uVar12 = param_2 & 0xffffffff; pppuVar8 = &local_48; FUN_14002cb80(DAT_140162d60,(longlong)pppuVar8,uVar12,param_4); } else { param_4 = (ulonglong)(byte)param_3; uVar12 = param_2 & 0xffffffff; pppuVar8 = &local_48; FUN_14002cce0(DAT_140162d60,(longlong)pppuVar8,uVar12,param_4); } FUN_140030200(lVar6,pppuVar8,uVar12,param_4); local_68 = (uint *)PTR_DAT_140155010; uVar1 = FUN_140030080(param_5); uVar3 = 0; pvVar13 = (LPVOID)0x0; if ((local_68 != (uint *)0x0) && (pvVar13 = (LPVOID)0x0, local_68 != (uint *)PTR_DAT_140155010)) { pvVar13 = (LPVOID)(ulonglong)local_68[-2]; } uVar2 = uVar1; if ((((int)uVar1 <= (int)pvVar13) && (uVar2 = uVar3, local_68 != (uint *)0x0)) && (local_68 != (uint *)PTR_DAT_140155010)) { uVar2 = local_68[-2]; } uVar11 = 1; if (1 < (int)uVar2) { uVar11 = uVar2; } uVar2 = uVar3; if ((local_68 != (uint *)0x0) && (local_68 != (uint *)PTR_DAT_140155010)) { uVar2 = local_68[-2]; } if ((int)uVar2 < (int)uVar11) { puVar5 = local_68; if (local_68 == (uint *)0x0) { puVar5 = (uint *)PTR_DAT_140155010; } local_68 = puVar5; if ((int)uVar11 < 0) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } if (uVar11 == 0) { local_68 = (uint *)PTR_DAT_140155010; if (((puVar5 != (uint *)0x0) && (puVar5 != (uint *)PTR_DAT_140155010)) && (puVar5 + -2 != (uint *)0x0)) { local_68 = puVar5; piVar4 = (int *)FUN_140030200(puVar5,PTR_DAT_140155010,pvVar13,param_4); local_58 = piVar4; FUN_14002e6e0(piVar4); local_50 = 1; puVar9 = puVar5 + -1; *puVar9 = *puVar9 - 1; if (*puVar9 == 0) { FUN_1400302f0(puVar5 + -2); } FUN_14002e770((longlong)piVar4); local_68 = (uint *)PTR_DAT_140155010; } } else { uVar2 = uVar3; if ((puVar5 != (uint *)0x0) && (puVar5 != (uint *)PTR_DAT_140155010)) { uVar2 = puVar5[-2]; } if (uVar11 != uVar2) { puVar5 = (uint *)FUN_140030280((longlong)(int)uVar11 * 2 + 10); if (puVar5 != (uint *)0x0) { *puVar5 = 0; puVar5[1] = 1; } *puVar5 = uVar11; uVar2 = uVar3; if ((local_68 != (uint *)0x0) && (local_68 != (uint *)PTR_DAT_140155010)) { uVar2 = local_68[-2]; } puVar9 = (uint *)PTR_DAT_140155010; if ((int)uVar11 < (int)uVar2) { LAB_140005d9e: if (local_68 != (uint *)0x0) { puVar9 = local_68; } } else { uVar11 = uVar3; if (local_68 != (uint *)0x0) { if (local_68 != (uint *)PTR_DAT_140155010) { uVar11 = local_68[-2]; } goto LAB_140005d9e; } } uVar12 = (ulonglong)uVar11; FUN_1400300b0(puVar5 + 2,puVar9,uVar11); FUN_140003240((longlong *)&local_68,puVar9,uVar12,param_4); local_68 = puVar5 + 2; } } } FUN_140002ea0((longlong *)&local_68); puVar5 = local_68; if (local_68 == (uint *)0x0) { puVar5 = (uint *)PTR_DAT_140155010; } FUN_1400300b0(puVar5,param_5,uVar1); puVar5 = local_68; if (local_68 == (uint *)0x0) { puVar5 = (uint *)PTR_DAT_140155010; } uVar3 = FUN_140030080((short *)puVar5); pvVar13 = local_38; uVar1 = uVar15; if (0 < (int)uVar3) { uVar1 = uVar3; } uVar3 = uVar15; if ((local_68 != (uint *)0x0) && (local_68 != (uint *)PTR_DAT_140155010)) { uVar3 = local_68[-2]; } if (((int)uVar3 <= (int)uVar1) && (uVar1 = uVar15, local_68 != (uint *)0x0)) { if (local_68 == (uint *)PTR_DAT_140155010) goto LAB_140005e4f; uVar1 = local_68[-2]; } if (((local_68 != (uint *)PTR_DAT_140155010) && (local_68 != (uint *)0x0)) && (local_68 + -2 != (uint *)0x0)) { local_68[-2] = uVar1; *(undefined2 *)((longlong)local_68 + (longlong)(int)uVar1 * 2) = 0; } LAB_140005e4f: uVar12 = local_30 & 0xffffffff; pvVar10 = local_38; if ((int)local_30 == 0) { pvVar10 = (LPVOID)0x0; } plVar7 = (longlong *)(param_1 + 0x50); puVar14 = &DAT_1401555d0; (**(code **)(*plVar7 + 0x48))(); puVar5 = local_68; if (((local_68 != (uint *)0x0) && (local_68 != (uint *)PTR_DAT_140155010)) && (puVar9 = local_68 + -2, puVar9 != (uint *)0x0)) { piVar4 = (int *)FUN_140030200(plVar7,pvVar10,uVar12,puVar14); local_58 = piVar4; FUN_14002e6e0(piVar4); local_50 = 1; puVar5 = puVar5 + -1; *puVar5 = *puVar5 - 1; if (*puVar5 == 0) { FUN_1400302f0(puVar9); } FUN_14002e770((longlong)piVar4); } if (pvVar13 != (LPVOID)0x0) { if (local_40 == (longlong *)0x0) { FUN_1400302f0(pvVar13); } else { (**(code **)(*local_40 + 0x18))(local_40,pvVar13); } } return; }