/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x140018ae0 FUN_140018ae0 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 FUN_140018ae0(longlong param_1,longlong param_2) { uint uVar1; ulonglong *puVar2; ulonglong *puVar3; code *pcVar4; undefined8 *puVar5; undefined8 *puVar6; longlong lVar7; ulonglong uVar8; ulonglong *puVar9; undefined8 *puVar10; undefined8 uVar11; ulonglong **ppuVar12; ulonglong **extraout_RAX; ulonglong **extraout_RAX_00; ulonglong **extraout_RAX_01; ulonglong **extraout_RAX_02; ulonglong **ppuVar13; ulonglong uVar14; ulonglong uVar15; ulonglong **ppuVar16; ulonglong **ppuVar17; ulonglong *puVar18; ulonglong **ppuVar19; ulonglong *puVar20; longlong lVar21; undefined **ppuVar22; ulonglong *puVar23; ulonglong **ppuVar24; ulonglong **ppuVar25; undefined1 auStackY_298 [32]; ulonglong *local_268; ulonglong *local_260; ulonglong *local_258; ulonglong *local_250; ulonglong *local_248; ulonglong *local_240; undefined8 local_230; undefined4 local_228; undefined4 uStack_224; undefined4 local_220; undefined4 uStack_21c; undefined1 local_218; undefined1 uStack_217; undefined6 uStack_216; ulonglong *local_210; ulonglong **local_208; ulonglong **local_200; ulonglong **local_1f8; ulonglong **local_1e8; ulonglong **local_1e0; ulonglong **local_1d8; longlong local_1c8; longlong local_1c0; undefined8 *local_1b8; undefined8 *local_1b0; undefined8 local_1a8; undefined8 local_198; longlong local_188; undefined *local_180; undefined1 local_170; undefined8 local_168; undefined4 local_160; undefined8 local_158; undefined8 local_150; undefined4 local_148; uint local_144; void *local_120; ulonglong local_108; undefined2 local_f8; undefined6 uStack_f6; undefined8 local_e8; ulonglong local_e0; undefined2 local_d0; undefined6 uStack_ce; undefined8 local_c0; ulonglong local_b8; ulonglong local_a8; ulonglong uStack_a0; ulonglong local_98; undefined8 local_90; undefined8 local_88; ulonglong *local_80; undefined8 local_78; void *local_70; undefined8 local_68; undefined8 local_60; ulonglong local_48; local_198 = 0xfffffffffffffffe; local_48 = DAT_14016f5a0 ^ (ulonglong)auStackY_298; ppuVar22 = (undefined **)&DAT_1401303d0; lVar21 = 0x28; do { lVar7 = lVar21 / 2; if (ppuVar22[lVar7] < (undefined *)0xb) { ppuVar22 = ppuVar22 + lVar7 + 1; lVar7 = lVar21 + (-1 - lVar7); } lVar21 = lVar7; } while (0 < lVar7); if (ppuVar22 == &MBISingleton::vftable_meta_ptr) { ppuVar22 = (undefined **)&UNK_140130508; } local_180 = *ppuVar22; local_188 = 0; local_170 = 0; local_168 = 0; local_160 = 0x3f800000; local_158 = 0; local_150 = 0; local_1c8 = param_2; local_1c0 = param_1; uVar8 = FUN_14000e610((char *)(param_2 + 8),&local_188); if ((char)uVar8 == '\0') { if (local_188 != 0) { uVar8 = FUN_140010570(&local_188); } return uVar8 & 0xffffffffffffff00; } puVar9 = (ulonglong *)0x0; local_250 = (ulonglong *)0x0; local_248 = (ulonglong *)0x0; local_240 = (ulonglong *)0x0; puVar20 = puVar9; puVar23 = puVar9; if (*(longlong *)(DAT_14017cf20 + 0x58) == 0) { local_260 = (ulonglong *)0x0; } else { local_260 = *(ulonglong **)(DAT_14017cf20 + 0x68); if (local_260 != (ulonglong *)0x0) { local_258 = (ulonglong *)*local_260; puVar18 = local_260; puVar3 = local_258; goto joined_r0x000140018c29; } } local_258 = (ulonglong *)0x0; puVar18 = local_260; puVar3 = local_258; joined_r0x000140018c29: while (puVar3 != (ulonglong *)0x0) { puVar2 = (ulonglong *)puVar3[2]; if (puVar2 != (ulonglong *)0x0) { if ((puVar2 < puVar20) && (puVar9 <= puVar2)) { lVar21 = ((longlong)puVar2 - (longlong)puVar9) + SUB168(SEXT816(-0x7bdef7bdef7bdef7) * SEXT816((longlong)puVar2 - (longlong)puVar9), 8); if (puVar20 == puVar23) { FUN_14003a7e0((longlong *)&local_250); puVar20 = local_248; puVar23 = local_240; } local_268 = puVar20; local_260 = puVar20; if (puVar20 != (ulonglong *)0x0) { FUN_140003c50((undefined4 *)puVar20, (undefined4 *)(local_250 + ((lVar21 >> 7) - (lVar21 >> 0x3f)) * 0x1f)); } } else { if (puVar20 == puVar23) { FUN_14003a7e0((longlong *)&local_250); puVar20 = local_248; puVar23 = local_240; } local_268 = puVar20; local_260 = puVar20; if (puVar20 != (ulonglong *)0x0) { FUN_140003c50((undefined4 *)puVar20,(undefined4 *)puVar2); } } puVar20 = puVar20 + 0x1f; puVar9 = local_250; local_248 = puVar20; } puVar3 = (ulonglong *)*puVar3; while (puVar3 == (ulonglong *)0x0) { puVar18 = puVar18 + 1; puVar3 = (ulonglong *)*puVar18; } if (puVar18 == puVar3) { puVar3 = (ulonglong *)0x0; } } ppuVar16 = (ulonglong **)0x0; local_208 = (ulonglong **)0x0; local_200 = (ulonglong **)0x0; local_1f8 = (ulonglong **)0x0; local_1e8 = (ulonglong **)0x0; local_1e0 = (ulonglong **)0x0; local_1d8 = (ulonglong **)0x0; local_1b8 = (undefined8 *)0x0; local_1b0 = (undefined8 *)0x0; local_1a8 = 0; ppuVar13 = ppuVar16; ppuVar12 = ppuVar16; ppuVar17 = ppuVar16; ppuVar24 = ppuVar16; if (puVar9 != puVar20) { puVar9 = puVar9 + 0x17; ppuVar25 = ppuVar16; do { ppuVar12 = (ulonglong **)0x0; local_260 = puVar9; FUN_140004f20(&local_148,(undefined4 *)(puVar9 + -0x17)); local_a8 = puVar9[-3]; uStack_a0 = puVar9[-2]; local_98 = puVar9[-1]; local_90 = *puVar9; local_88 = puVar9[1]; local_80 = (ulonglong *)puVar9[2]; local_78 = puVar9[3]; FUN_140004de0(&local_70,(longlong *)(puVar9 + 4)); uVar1 = local_144; local_230._0_4_ = (undefined4)local_90; local_230._4_4_ = local_90._4_4_; local_228 = (undefined4)local_88; uStack_224 = (undefined4)local_78; local_220 = local_88._4_4_; local_218 = local_78._4_1_; uStack_217 = local_78._5_1_; local_210 = local_80; uVar8 = 0; uStack_21c = 0; local_268 = (ulonglong *)CONCAT44(local_268._4_4_,local_144); if ((&local_268 < ppuVar13) && (ppuVar17 <= &local_268)) { lVar21 = (longlong)&local_268 - (longlong)ppuVar17; if (ppuVar13 == ppuVar25) { uVar14 = (longlong)ppuVar13 - (longlong)ppuVar17 >> 2; if (0x3ffffffffffffffe < uVar14) { std::_Xlength_error("vector too long"); pcVar4 = (code *)swi(3); uVar11 = (*pcVar4)(); return uVar11; } uVar14 = uVar14 + 1; uVar15 = (longlong)ppuVar25 - (longlong)ppuVar17 >> 2; if (uVar15 < uVar14) { if (uVar15 <= 0x3fffffffffffffff - (uVar15 >> 1)) { uVar8 = uVar15 + (uVar15 >> 1); } if (uVar8 < uVar14) { uVar8 = uVar14; } FUN_14001a190((longlong *)&local_208,uVar8); ppuVar13 = local_200; ppuVar17 = local_208; ppuVar25 = local_1f8; } } if (ppuVar13 != (ulonglong **)0x0) { *(uint *)ppuVar13 = *(uint *)((longlong)ppuVar17 + (lVar21 >> 2) * 4); } } else { if (ppuVar13 == ppuVar25) { uVar14 = (longlong)ppuVar13 - (longlong)ppuVar17 >> 2; if (0x3ffffffffffffffe < uVar14) { std::_Xlength_error("vector too long"); break; } uVar14 = uVar14 + 1; uVar15 = (longlong)ppuVar25 - (longlong)ppuVar17 >> 2; if (uVar15 < uVar14) { if (uVar15 <= 0x3fffffffffffffff - (uVar15 >> 1)) { uVar8 = uVar15 + (uVar15 >> 1); } if (uVar8 < uVar14) { uVar8 = uVar14; } FUN_14001a190((longlong *)&local_208,uVar8); ppuVar13 = local_200; ppuVar17 = local_208; ppuVar25 = local_1f8; } } if (ppuVar13 != (ulonglong **)0x0) { *(uint *)ppuVar13 = uVar1; } } ppuVar13 = (ulonglong **)((longlong)ppuVar13 + 4); local_200 = ppuVar13; if ((&local_230 < ppuVar16) && (ppuVar24 <= &local_230)) { lVar21 = ((longlong)&local_230 - (longlong)ppuVar24) / 0x28; if (ppuVar16 == local_1d8) { FUN_140019fc0((longlong *)&local_1e8); ppuVar16 = local_1e0; ppuVar24 = local_1e8; } if (ppuVar16 != (ulonglong **)0x0) { *ppuVar16 = ppuVar24[lVar21 * 5]; ppuVar16[1] = ppuVar24[lVar21 * 5 + 1]; ppuVar16[2] = ppuVar24[lVar21 * 5 + 2]; ppuVar16[3] = ppuVar24[lVar21 * 5 + 3]; puVar9 = ppuVar24[lVar21 * 5 + 4]; LAB_140019042: ppuVar16[4] = puVar9; } } else { if (ppuVar16 == local_1d8) { FUN_140019fc0((longlong *)&local_1e8); ppuVar16 = local_1e0; ppuVar24 = local_1e8; } if (ppuVar16 != (ulonglong **)0x0) { *ppuVar16 = (ulonglong *)CONCAT44(local_230._4_4_,(undefined4)local_230); ppuVar16[1] = (ulonglong *)CONCAT44(uStack_224,local_228); ppuVar16[2] = (ulonglong *)CONCAT44(uStack_21c,local_220); ppuVar16[3] = (ulonglong *)CONCAT62(uStack_216,CONCAT11(uStack_217,local_218)); puVar9 = local_210; goto LAB_140019042; } } ppuVar16 = ppuVar16 + 5; local_1e0 = ppuVar16; puVar10 = FUN_140005da0((longlong)&local_148,&local_230); FUN_140019d70((longlong *)&local_1b8,puVar10); if ((void *)CONCAT44(local_230._4_4_,(undefined4)local_230) != (void *)0x0) { operator_delete((void *)CONCAT44(local_230._4_4_,(undefined4)local_230)); } if (local_70 != (void *)0x0) { operator_delete(local_70); } local_70 = (void *)0x0; local_68 = 0; local_60 = 0; if (7 < local_b8) { operator_delete((void *)CONCAT62(uStack_ce,local_d0)); } local_b8 = 7; local_c0 = 0; local_d0 = 0; if (7 < local_e0) { operator_delete((void *)CONCAT62(uStack_f6,local_f8)); } local_e0 = 7; local_e8 = 0; local_f8 = 0; if (7 < local_108) { operator_delete(local_120); } ppuVar12 = (ulonglong **)0x0; puVar9 = local_260 + 0x1f; puVar23 = local_260 + 8; local_260 = puVar9; } while (puVar23 != puVar20); } puVar10 = local_1b8; lVar21 = local_1c0; uVar1 = *(uint *)(local_1c8 + 0x208); local_268 = (ulonglong *)CONCAT44(local_268._4_4_,uVar1); ppuVar25 = (ulonglong **)((ulonglong)ppuVar12 & 0xffffffff); ppuVar19 = (ulonglong **)((longlong)ppuVar13 - (longlong)ppuVar17 >> 2); ppuVar13 = (ulonglong **)(ulonglong)uVar1; ppuVar16 = ppuVar12; if (ppuVar19 != (ulonglong **)0x0) { do { FUN_14001b0d0(lVar21,uVar1,*(uint *)ppuVar17,(uint *)(ppuVar24 + (longlong)ppuVar12 * 5), puVar10 + (longlong)ppuVar12 * 4); ppuVar12 = (ulonglong **)(ulonglong)((int)ppuVar25 + 1); ppuVar17 = (ulonglong **)((longlong)ppuVar17 + 4); ppuVar25 = ppuVar12; } while (ppuVar12 < ppuVar19); ppuVar16 = (ulonglong **)0x0; ppuVar13 = ppuVar12; puVar20 = local_248; ppuVar17 = local_208; } puVar6 = local_1b0; puVar5 = puVar10; if (puVar10 != (undefined8 *)0x0) { for (; puVar5 != puVar6; puVar5 = puVar5 + 4) { if ((void *)*puVar5 != (void *)0x0) { operator_delete((void *)*puVar5); ppuVar16 = (ulonglong **)0x0; } *puVar5 = ppuVar16; puVar5[1] = ppuVar16; puVar5[2] = ppuVar16; } operator_delete(puVar10); ppuVar13 = extraout_RAX; } if (ppuVar24 != (ulonglong **)0x0) { operator_delete(ppuVar24); ppuVar13 = extraout_RAX_00; } if (ppuVar17 != (ulonglong **)0x0) { operator_delete(ppuVar17); ppuVar13 = extraout_RAX_01; } puVar9 = local_250; if (local_250 != (ulonglong *)0x0) { FUN_140004ba0(local_250,puVar20); operator_delete(puVar9); ppuVar13 = extraout_RAX_02; } if (local_188 != 0) { ppuVar13 = (ulonglong **)FUN_140010570(&local_188); } return CONCAT71((int7)((ulonglong)ppuVar13 >> 8),1); }