/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14006e7d0 FUN_14006e7d0 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ uint FUN_14006e7d0(longlong param_1,undefined4 *param_2,int param_3,uint **param_4, undefined1 *param_5) { longlong *plVar1; LPVOID pvVar2; undefined8 *puVar3; bool bVar4; uint uVar5; uint uVar6; uint uVar7; undefined ***pppuVar8; longlong lVar9; longlong *plVar10; int *piVar11; uint *puVar12; uint *puVar13; longlong lVar14; ulonglong uVar15; uint *puVar16; void *pvVar17; undefined8 *puVar18; uint uVar19; uint *puVar20; uint uVar21; int iVar22; uint *puVar23; ulonglong uVar24; uint **ppuVar25; undefined ***pppuVar26; longlong lVar27; undefined8 uVar28; undefined1 auStackY_2e8 [32]; uint *local_2b8; undefined8 *local_2b0; undefined ***local_2a8; longlong local_2a0; uint **local_298; undefined ***local_290; undefined1 local_288; undefined **local_280; undefined8 local_278; undefined8 local_270; undefined8 local_268; undefined8 local_260; int *local_258; undefined1 local_250; uint **local_248; undefined8 local_240; longlong local_238; undefined **local_230 [5]; void *local_208; longlong local_200; ulonglong local_1f8; undefined8 local_1f0; uint local_1e8 [100]; ulonglong local_58; local_240 = 0xfffffffffffffffe; local_58 = DAT_14016f5a0 ^ (ulonglong)auStackY_2e8; lVar27 = (longlong)param_3; plVar1 = (longlong *)(param_1 + -0xa8); ppuVar25 = param_4; local_2a0 = param_1; local_298 = param_4; local_248 = param_4; pppuVar8 = (undefined ***)(**(code **)(*plVar1 + 0x58))(plVar1); local_2a8 = pppuVar8; local_290 = pppuVar8; FUN_14003d040((int *)pppuVar8); local_288 = 1; if (DAT_14017614f != '\0') { (**(code **)(*plVar1 + 200))(plVar1); } if ((param_3 < 0) || (*(longlong *)(param_1 + 0x3d0) == 0)) { FUN_14003d0d0((longlong)pppuVar8); } else { if ((*(char *)(param_1 + 0x1758) != '\0') || (param_3 != 0)) { puVar20 = (uint *)0x0; uVar7 = 0; local_208 = (void *)0x0; local_1f0 = 0; local_200 = 0; local_1f8 = 100; uVar19 = 0; if (0 < param_3) { FUN_14004e290((longlong *)&local_208,param_2,lVar27); FUN_14004d790((longlong *)&local_208); local_2b0 = (undefined8 *)local_200; pvVar17 = local_208; uVar24 = local_1f8; puVar12 = puVar20; if (0 < (int)local_200) { do { iVar22 = (int)puVar12; lVar9 = (longlong)iVar22; if ((iVar22 < 0) || (local_200 <= lVar9)) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } puVar12 = local_1e8 + lVar9; if (100 < uVar24) { puVar12 = (uint *)((longlong)pvVar17 + lVar9 * 4); } if (*puVar12 != 1) { puVar12 = local_1e8 + lVar9; if (100 < uVar24) { puVar12 = (uint *)((longlong)pvVar17 + lVar9 * 4); } uVar15 = (ulonglong)*puVar12; lVar9 = FUN_14004f000((longlong)plVar1,*puVar12); if (lVar9 == 0) { if (100 < uVar24) { operator_delete__(pvVar17); } FUN_14003d0d0((longlong)local_2a8); param_4 = local_298; goto LAB_14006eecd; } lVar14 = lVar9 + 0x288; bVar4 = FUN_140086080(lVar14); if ((bVar4) && ((pvVar17 = local_208, uVar24 = local_1f8, *(char *)(lVar9 + 0x680) != '\0' || (*(int *)(lVar9 + 0x670) != 0)))) goto LAB_14006ebdd; FUN_14003e7c0(lVar14,uVar15,lVar27,ppuVar25); local_2b8 = (uint *)PTR_DAT_14016f010; uVar5 = FUN_14003e620((short *)&DAT_14010ed80); puVar12 = puVar20; if ((local_2b8 != (uint *)0x0) && (puVar12 = (uint *)0x0, local_2b8 != (uint *)PTR_DAT_14016f010)) { puVar12 = (uint *)(ulonglong)local_2b8[-2]; } uVar6 = uVar5; if ((((int)uVar5 <= (int)puVar12) && (uVar6 = uVar19, local_2b8 != (uint *)0x0)) && (local_2b8 != (uint *)PTR_DAT_14016f010)) { uVar6 = local_2b8[-2]; } uVar21 = 1; if (1 < (int)uVar6) { uVar21 = uVar6; } uVar6 = uVar19; if ((local_2b8 != (uint *)0x0) && (local_2b8 != (uint *)PTR_DAT_14016f010)) { uVar6 = local_2b8[-2]; } if ((int)uVar6 < (int)uVar21) { if (local_2b8 == (uint *)0x0) { local_2b8 = (uint *)PTR_DAT_14016f010; } if ((int)uVar21 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } if (uVar21 == 0) { FUN_140002190((longlong *)&local_2b8,PTR_DAT_14016f010,puVar12,ppuVar25); } else { uVar6 = uVar19; if ((local_2b8 != (uint *)0x0) && (local_2b8 != (uint *)PTR_DAT_14016f010)) { uVar6 = local_2b8[-2]; } if (uVar21 != uVar6) { puVar12 = (uint *)FUN_14003e840((longlong)(int)uVar21 * 2 + 10); if (puVar12 != (uint *)0x0) { *puVar12 = 0; puVar12[1] = 1; } *puVar12 = uVar21; uVar6 = uVar19; if ((local_2b8 != (uint *)0x0) && (local_2b8 != (uint *)PTR_DAT_14016f010)) { uVar6 = local_2b8[-2]; } puVar16 = (uint *)PTR_DAT_14016f010; if ((int)uVar21 < (int)uVar6) { LAB_14006ea64: if (local_2b8 != (uint *)0x0) { puVar16 = local_2b8; } } else { uVar21 = uVar19; if (local_2b8 != (uint *)0x0) { if (local_2b8 != (uint *)PTR_DAT_14016f010) { uVar21 = local_2b8[-2]; } goto LAB_14006ea64; } } uVar24 = (ulonglong)uVar21; puVar13 = puVar16; FUN_14003e650(puVar12 + 2,puVar16,uVar21); FUN_140002190((longlong *)&local_2b8,puVar16,uVar24,puVar13); local_2b8 = puVar12 + 2; } } } FUN_140001df0((longlong *)&local_2b8); puVar12 = local_2b8; if (local_2b8 == (uint *)0x0) { puVar12 = (uint *)PTR_DAT_14016f010; } FUN_14003e650(puVar12,&DAT_14010ed80,uVar5); puVar12 = local_2b8; if (local_2b8 == (uint *)0x0) { puVar12 = (uint *)PTR_DAT_14016f010; } uVar6 = FUN_14003e620((short *)puVar12); uVar5 = uVar7; if (0 < (int)uVar6) { uVar5 = uVar6; } uVar6 = uVar7; if ((local_2b8 != (uint *)0x0) && (local_2b8 != (uint *)PTR_DAT_14016f010)) { uVar6 = local_2b8[-2]; } if (((int)uVar5 < (int)uVar6) || (uVar5 = uVar7, local_2b8 == (uint *)0x0)) { LAB_14006eb00: if (((local_2b8 != (uint *)PTR_DAT_14016f010) && (local_2b8 != (uint *)0x0)) && (local_2b8 + -2 != (uint *)0x0)) { local_2b8[-2] = uVar5; *(undefined2 *)((longlong)local_2b8 + (longlong)(int)uVar5 * 2) = 0; } } else if (local_2b8 != (uint *)PTR_DAT_14016f010) { uVar5 = local_2b8[-2]; goto LAB_14006eb00; } local_278 = 0; local_270 = 0; local_268 = 0; local_260 = 0; local_280 = Proud::ByteArray::vftable; ppuVar25 = &local_2b8; plVar10 = FUN_140071c20(&local_238,1,(ulonglong)*(uint *)(lVar9 + 0x6f8), (longlong *)ppuVar25,(longlong)&local_280); lVar27 = *plVar1; (**(code **)(lVar27 + 0x80))(plVar1); pppuVar8 = &local_280; FUN_140049e40(pppuVar8); puVar12 = local_2b8; if (((local_2b8 != (uint *)0x0) && (local_2b8 != (uint *)PTR_DAT_14016f010)) && (puVar16 = local_2b8 + -2, puVar16 != (uint *)0x0)) { piVar11 = (int *)FUN_14003e7c0(pppuVar8,plVar10,lVar27,ppuVar25); local_258 = piVar11; FUN_14003d040(piVar11); local_250 = 1; puVar12 = puVar12 + -1; *puVar12 = *puVar12 - 1; if (*puVar12 == 0) { FUN_14003e8b0(puVar16); } FUN_14003d0d0((longlong)piVar11); local_250 = 0; } local_2b8 = (uint *)PTR_DAT_14016f010; pvVar17 = local_208; uVar24 = local_1f8; } LAB_14006ebdd: puVar12 = (uint *)(ulonglong)(iVar22 + 1U); param_1 = local_2a0; } while ((int)(iVar22 + 1U) < (int)local_2b0); } param_3 = (int)local_2b0; } local_2b0 = (undefined8 *)FUN_14003e840(0xf8); puVar12 = puVar20; if (local_2b0 != (undefined8 *)0x0) { puVar12 = FUN_140096650((undefined4 *)local_2b0); } if (puVar12 == (uint *)0x0) { local_2b0 = (undefined8 *)0x0; } else { local_2b0 = (undefined8 *)FUN_14003e840(0x10); local_2b0[1] = 1; *local_2b0 = puVar12; } puVar18 = local_2b0; plVar10 = *(longlong **)(param_1 + 0x3d0); puVar12 = puVar20; if (local_2b0 != (undefined8 *)0x0) { puVar12 = (uint *)*local_2b0; } lVar27 = *plVar10; uVar28 = (**(code **)(*(longlong *)(local_2a0 + 0x70) + 8))(); uVar7 = (**(code **)(lVar27 + 8))(plVar10,uVar28); lVar27 = local_2a0; *puVar12 = uVar7; puVar12 = puVar20; if (puVar18 != (undefined8 *)0x0) { puVar12 = (uint *)*puVar18; } pppuVar8 = (undefined ***)(ulonglong)*puVar12; uVar24 = (ulonglong)pppuVar8 % (ulonglong)*(uint *)(local_2a0 + 0x380); puVar16 = (uint *)0x0; if (*(longlong *)(local_2a0 + 0x360) != 0) { for (puVar16 = *(uint **)(*(longlong *)(local_2a0 + 0x360) + uVar24 * 8); (puVar16 != (uint *)0x0 && ((uint)uVar24 == puVar16[8] % *(uint *)(local_2a0 + 0x380))); puVar16 = *(uint **)(puVar16 + 4)) { pppuVar26 = local_2a8; if (*puVar16 == *puVar12) goto LAB_14006eda8; } } puVar13 = FUN_1400673e0((char *)(local_2a0 + 0x358),puVar12); pppuVar26 = local_2a8; if (puVar18 != *(undefined8 **)puVar13) { if (puVar18 != (undefined8 *)0x0) { puVar18[1] = puVar18[1] + 1; puVar18 = local_2b0; pppuVar26 = local_290; } puVar23 = puVar20; if ((*(longlong *)puVar13 != 0) && (*(longlong *)(*(longlong *)puVar13 + 8) = *(longlong *)(*(longlong *)puVar13 + 8) + -1, puVar18 = local_2b0, pppuVar26 = local_290, *(longlong *)(*(longlong *)puVar13 + 8) == 0) ) { puVar23 = *(uint **)puVar13; } *(undefined8 **)puVar13 = puVar18; if (puVar23 != (uint *)0x0) { pvVar2 = *(LPVOID *)puVar23; if (pvVar2 != (LPVOID)0x0) { FUN_1400519b0((longlong)pvVar2,puVar12,puVar16,pppuVar8); FUN_14003e8b0(pvVar2); } FUN_14003e8b0(puVar23); lVar27 = local_2a0; } } LAB_14006eda8: puVar12 = puVar20; if (puVar18 != (undefined8 *)0x0) { puVar12 = (uint *)*puVar18; } *(undefined1 *)(puVar12 + 0x3c) = *param_5; *(int *)(lVar27 + 0x16f0) = *(int *)(lVar27 + 0x16f0) + 1; if (0 < param_3) { local_2a8 = local_230; puVar13 = puVar20; do { FUN_14004e000(local_230,(longlong)local_298,(SIZE_T)puVar16); local_230[0] = Proud::ByteArray::vftable; puVar12 = puVar20; if (puVar18 != (undefined8 *)0x0) { puVar12 = (uint *)*puVar18; } iVar22 = (int)puVar13; lVar9 = (longlong)iVar22; if ((iVar22 < 0) || (local_200 <= lVar9)) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } if (local_1f8 < 0x65) { puVar13 = local_1e8 + lVar9; } else { puVar13 = (uint *)((longlong)local_208 + lVar9 * 4); } pppuVar8 = local_230; puVar16 = (uint *)(ulonglong)*puVar12; puVar12 = (uint *)(ulonglong)*puVar13; FUN_14006a630((longlong)plVar1,*puVar13,puVar16,pppuVar8,*(undefined4 *)(lVar27 + 0x16f0)) ; puVar13 = (uint *)(ulonglong)(iVar22 + 1U); } while ((int)(iVar22 + 1U) < param_3); } puVar3 = local_2b0; if (puVar18 != (undefined8 *)0x0) { puVar20 = (uint *)*puVar18; } uVar7 = *puVar20; if (puVar18 != (undefined8 *)0x0) { plVar1 = puVar18 + 1; *plVar1 = *plVar1 + -1; pppuVar26 = local_290; if (*plVar1 == 0) { pvVar2 = (LPVOID)*local_2b0; if (pvVar2 != (LPVOID)0x0) { FUN_1400519b0((longlong)pvVar2,puVar12,puVar16,pppuVar8); FUN_14003e8b0(pvVar2); } FUN_14003e8b0(puVar3); pppuVar26 = local_290; } } if (100 < local_1f8) { operator_delete__(local_208); } FUN_14003d0d0((longlong)pppuVar26); FUN_140049e40(local_298); return uVar7; } FUN_14003d0d0((longlong)pppuVar8); } LAB_14006eecd: FUN_140049e40(param_4); return 0; }