414 lines
12 KiB
C
414 lines
12 KiB
C
/* 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<MagiStatistics>::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<T> 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<T> 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);
|
|
}
|
|
|