/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14009b3c0 FUN_14009b3c0 * Pseudocode, not original source. */ longlong * FUN_14009b3c0(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { int iVar1; DWORD DVar2; ulonglong uVar3; undefined8 *puVar4; longlong lVar5; longlong lVar6; longlong *plVar7; longlong *plVar8; longlong **pplVar9; longlong *plVar10; int iVar11; longlong *plVar12; longlong *plVar13; longlong lVar14; longlong lVar15; int iVar16; longlong *local_res18; uVar3 = FUN_140094860(); pplVar9 = (longlong **)(uVar3 & 0xffffffff); plVar13 = (longlong *)CONCAT71((int7)((ulonglong)param_3 >> 8),1); plVar7 = param_1; FUN_14003cf60((undefined4 *)param_1,(ulonglong)pplVar9,plVar13,param_4); iVar16 = 0; param_1[7] = 0; param_1[8] = 0; *(undefined4 *)(param_1 + 9) = 0; plVar10 = param_1 + 10; *plVar10 = (longlong)Proud::CFastArray,0>::vftable; param_1[0xb] = 0; param_1[0xc] = 0; param_1[0xd] = 0; param_1[0xe] = 0; *(undefined1 *)(param_1 + 0x10) = 1; DVar2 = FUN_14003df50(); if (0 < (int)DVar2) { do { puVar4 = (undefined8 *)0x0; local_res18 = operator_new(0x28); if (local_res18 != (longlong *)0x0) { plVar13 = param_1; puVar4 = FUN_140045b20(local_res18,&LAB_14009b1d0,param_1); } if (puVar4 == (undefined8 *)0x0) { local_res18 = (longlong *)0x0; } else { local_res18 = (longlong *)FUN_14003e840(0x10); local_res18[1] = 1; *local_res18 = (longlong)puVar4; } plVar12 = local_res18; iVar1 = (int)param_1[0xd]; if (iVar1 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } lVar14 = param_1[0xd]; FUN_14007f220((longlong)plVar10,(int)lVar14 + 1,plVar13,param_4); iVar11 = (int)lVar14 - iVar1; if ((0 < iVar11) && (iVar11 = iVar11 + -1, -1 < iVar11)) { lVar14 = (longlong)(iVar11 + iVar1 + 1) << 3; lVar15 = (longlong)(iVar11 + iVar1) << 3; do { lVar5 = FUN_140074a30((longlong)plVar10); lVar6 = FUN_140074a30((longlong)plVar10); FUN_14007b440((longlong *)(lVar14 + lVar6),(longlong *)(lVar15 + lVar5)); lVar15 = lVar15 + -8; lVar14 = lVar14 + -8; iVar11 = iVar11 + -1; } while (-1 < iVar11); } lVar14 = FUN_140074a30((longlong)plVar10); plVar7 = (longlong *)(lVar14 + (longlong)iVar1 * 8); pplVar9 = &local_res18; FUN_14007b440(plVar7,(longlong *)pplVar9); plVar8 = local_res18; if (plVar12 != (longlong *)0x0) { plVar12 = plVar12 + 1; *plVar12 = *plVar12 + -1; if (*plVar12 == 0) { puVar4 = (undefined8 *)*local_res18; if (puVar4 != (undefined8 *)0x0) { FUN_140045c30(puVar4); operator_delete(puVar4); } FUN_14003e8b0(plVar8); plVar7 = plVar8; } } iVar16 = iVar16 + 1; } while (iVar16 < (int)DVar2); } plVar8 = (longlong *)0x0; plVar10 = plVar8; plVar12 = plVar8; if (0 < (int)DVar2) { do { if (((longlong)plVar10 < 0) || ((int)param_1[0xd] <= (int)plVar12)) { /* WARNING: Subroutine does not return */ FUN_14003def0(plVar7,pplVar9,plVar13,param_4); } puVar4 = *(undefined8 **)(param_1[0xc] + (longlong)plVar10 * 8); plVar7 = plVar8; if (puVar4 != (undefined8 *)0x0) { plVar7 = (longlong *)*puVar4; } FUN_140045d20(plVar7,pplVar9,plVar13,param_4); plVar12 = (longlong *)(ulonglong)((int)plVar12 + 1); plVar10 = (longlong *)((longlong)plVar10 + 1); } while ((longlong)plVar10 < (longlong)(int)DVar2); } return param_1; }