add agent manager release decomp

This commit is contained in:
Benjamin Palko 2026-10-15 09:58:24 -04:00
parent 31ff800b2a
commit fac6117145
7019 changed files with 254032 additions and 5 deletions

View file

@ -0,0 +1,453 @@
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x14005efd0 FUN_14005efd0
* Pseudocode, not original source. */
void FUN_14005efd0(longlong *param_1,longlong *param_2,undefined8 param_3,double param_4)
{
int *piVar1;
uint uVar2;
int iVar3;
void *pvVar4;
undefined8 uVar5;
longlong *plVar6;
uint uVar7;
undefined8 *puVar8;
uint uVar9;
uint uVar10;
longlong lVar11;
uint *puVar12;
longlong *plVar13;
ulonglong uVar14;
longlong lVar15;
longlong *plVar16;
longlong lVar17;
uint *puVar18;
int iVar19;
longlong lVar20;
ulonglong uVar21;
ulonglong uVar22;
ulonglong in_R9;
int iVar23;
int iVar24;
longlong lVar25;
bool bVar26;
bool bVar27;
undefined8 *local_e0;
longlong local_d8;
longlong local_d0;
undefined8 local_c8;
undefined8 local_c0;
undefined8 local_b8;
undefined8 local_b0;
undefined8 local_a8;
undefined8 local_a0;
void *local_98;
exception local_90 [88];
if ((int)param_3 == 0) {
return;
}
local_a0 = 0xfffffffffffffffe;
bVar26 = false;
plVar6 = param_1 + 0x2f4;
FUN_14004c130((longlong)plVar6,0,param_3,in_R9);
lVar25 = param_2[1];
iVar24 = 0;
lVar11 = lVar25;
local_d8 = lVar25;
if (0 < (int)lVar25) {
do {
if ((iVar24 < 0) || (param_2[1] <= (longlong)iVar24)) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
iVar19 = iVar24;
if (iVar24 < (int)lVar25) {
do {
lVar15 = (longlong)iVar24;
if (iVar24 == iVar19) {
LAB_14005f108:
bVar27 = false;
}
else {
lVar11 = (longlong)iVar19;
if ((iVar19 < 0) || (param_2[1] <= lVar11)) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
if ((ulonglong)param_2[2] < 0x65) {
puVar12 = (uint *)(param_2 + (lVar11 + 1) * 4);
}
else {
puVar12 = (uint *)(lVar11 * 0x20 + *param_2);
}
if (param_2[1] <= lVar15) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
if ((ulonglong)param_2[2] < 0x65) {
puVar18 = (uint *)(param_2 + (lVar15 + 1) * 4);
}
else {
puVar18 = (uint *)(lVar15 * 0x20 + *param_2);
}
in_R9 = (ulonglong)*puVar12;
plVar13 = FUN_14005d550((longlong)(param_1 + 0x5b),(longlong *)&local_e0,*puVar18,
*puVar12);
bVar26 = true;
if ((longlong *)*plVar13 == (longlong *)0x0) {
lVar11 = 0;
goto LAB_14005f108;
}
lVar11 = *(longlong *)*plVar13;
if (lVar11 == 0) goto LAB_14005f108;
bVar27 = true;
}
puVar8 = local_e0;
if (((bVar26) && (bVar26 = false, local_e0 != (undefined8 *)0x0)) &&
(local_e0[1] = local_e0[1] + -1, local_e0[1] == 0)) {
pvVar4 = (void *)*local_e0;
local_98 = pvVar4;
if (pvVar4 != (void *)0x0) {
FUN_140049e40((undefined8 *)((longlong)pvVar4 + 0x148));
FUN_140049e40((undefined8 *)((longlong)pvVar4 + 0x120));
operator_delete(pvVar4);
}
FUN_14003e8b0(puVar8);
bVar26 = false;
lVar25 = local_d8;
}
if (((bVar27) && (*(char *)(lVar11 + 8) == '\0')) &&
(*(double *)(lVar11 + 0x188) <= param_4 && param_4 != *(double *)(lVar11 + 0x188))) {
local_c8 = CONCAT44(iVar19,iVar24);
plVar13 = plVar6;
local_d0 = lVar11;
FUN_14004c860((longlong)plVar6,(int)param_1[0x2f7],(longlong)&local_d0,1);
uVar14 = 0;
in_R9 = (ulonglong)(int)param_1[0x2f7];
uVar22 = uVar14;
uVar21 = uVar14;
if (0 < (longlong)in_R9) {
do {
if (((longlong)uVar21 < 0) || (iVar23 = (int)uVar22, (int)param_1[0x2f7] <= iVar23))
{
/* WARNING: Subroutine does not return */
FUN_14003def0(plVar13,uVar22,uVar21,in_R9);
}
lVar15 = param_1[0x2f6];
if (*(int *)(uVar14 + 8 + lVar15) == iVar24) {
piVar1 = (int *)(uVar14 + 0x10 + lVar15);
*piVar1 = *piVar1 + 1;
}
else if (*(int *)(uVar14 + 0xc + lVar15) == iVar24) {
piVar1 = (int *)(uVar14 + 0x14 + lVar15);
*piVar1 = *piVar1 + 1;
}
if ((int)param_1[0x2f7] <= iVar23) {
/* WARNING: Subroutine does not return */
FUN_14003def0(lVar15,uVar22,uVar21,in_R9);
}
plVar13 = (longlong *)param_1[0x2f6];
if (*(int *)(uVar14 + 8 + (longlong)plVar13) == iVar19) {
piVar1 = (int *)(uVar14 + 0x10 + (longlong)plVar13);
*piVar1 = *piVar1 + 1;
}
else if (*(int *)(uVar14 + 0xc + (longlong)plVar13) == iVar19) {
piVar1 = (int *)(uVar14 + 0x14 + (longlong)plVar13);
*piVar1 = *piVar1 + 1;
}
uVar21 = uVar21 + 1;
uVar14 = uVar14 + 0x18;
uVar22 = (ulonglong)(iVar23 + 1);
} while ((longlong)uVar21 < (longlong)in_R9);
}
local_d0 = 0;
local_c8 = 0;
local_c0 = 0;
}
iVar19 = iVar19 + 1;
} while (iVar19 < (int)lVar25);
}
iVar24 = iVar24 + 1;
} while (iVar24 < (int)lVar25);
}
lVar25 = 0;
uVar2 = *(uint *)(param_1 + 0x2f7);
if ((int)param_1[0x2f7] != 0) {
lVar25 = param_1[0x2f6];
}
uVar22 = 0;
if ((int)uVar2 < 0x65) {
FUN_14004d960(lVar25,uVar2,0);
}
else {
FUN_14005ccf0(lVar25,uVar2,0);
}
plVar16 = param_1 + 0x2f9;
plVar13 = (longlong *)0x0;
FUN_14004cce0((longlong)plVar16,0,uVar22);
iVar24 = 0;
lVar25 = 0;
if (0 < (int)param_1[0x2f7]) {
lVar11 = 0;
do {
if ((lVar25 < 0) || ((int)param_1[0x2f7] <= iVar24)) {
/* WARNING: Subroutine does not return */
FUN_14003def0(param_1,plVar13,uVar22,in_R9);
}
lVar15 = param_1[0x2f6];
local_b8 = *(undefined8 *)(lVar11 + lVar15);
in_R9 = *(ulonglong *)(lVar11 + 8 + lVar15);
uVar5 = *(undefined8 *)(lVar11 + 0x10 + lVar15);
iVar19 = (int)param_1[0x2fc];
lVar20 = (longlong)iVar19;
local_b0._4_4_ = (uint)(in_R9 >> 0x20);
uVar2 = local_b0._4_4_;
plVar13 = (longlong *)0x0;
while (iVar23 = (int)plVar13, local_b0 = in_R9, local_a8 = uVar5, iVar23 != iVar19) {
if ((iVar23 < 0) || ((int)param_1[0x2fc] <= iVar23)) {
/* WARNING: Subroutine does not return */
FUN_14003def0(lVar15,plVar13,uVar22,in_R9);
}
lVar15 = (longlong)iVar23;
uVar9 = *(uint *)(param_1[0x2fb] + lVar15 * 4);
uVar22 = (ulonglong)uVar9;
uVar21 = in_R9;
if ((uVar9 == (uint)in_R9) || (uVar21 = in_R9, uVar9 == local_b0._4_4_)) goto LAB_14005f42f;
plVar13 = (longlong *)(ulonglong)(iVar23 + 1);
}
local_a8._4_4_ = (int)((ulonglong)uVar5 >> 0x20);
if ((int)uVar5 < local_a8._4_4_) {
if (iVar19 < 0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
lVar15 = param_1[0x2fc];
uVar9 = (int)lVar15 + 1;
plVar13 = (longlong *)(ulonglong)uVar9;
FUN_14004cce0((longlong)plVar16,uVar9,uVar22);
iVar19 = (int)lVar15 - iVar19;
if (0 < iVar19) {
if ((int)param_1[0x2fc] == 0) {
lVar15 = 0;
lVar17 = 0;
}
else {
lVar15 = param_1[0x2fb];
lVar17 = param_1[0x2fb];
}
uVar22 = (longlong)iVar19 << 2;
plVar13 = (longlong *)(lVar15 + lVar20 * 4);
memmove((void *)(lVar17 + 4 + lVar20 * 4),plVar13,uVar22);
}
if ((int)param_1[0x2fc] == 0) {
lVar15 = 0;
}
else {
lVar15 = param_1[0x2fb];
}
*(uint *)(lVar15 + lVar20 * 4) = uVar2;
uVar21 = local_b0;
}
else {
if (iVar19 < 0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
lVar15 = param_1[0x2fc];
FUN_14004cce0((longlong)plVar16,(int)lVar15 + 1,uVar22);
iVar19 = (int)lVar15 - iVar19;
if (0 < iVar19) {
if ((int)param_1[0x2fc] == 0) {
lVar15 = 0;
lVar17 = 0;
}
else {
lVar15 = param_1[0x2fb];
lVar17 = param_1[0x2fb];
}
uVar22 = (longlong)iVar19 << 2;
memmove((void *)(lVar17 + 4 + lVar20 * 4),(void *)(lVar15 + lVar20 * 4),uVar22);
}
if ((int)param_1[0x2fc] == 0) {
plVar13 = (longlong *)0x0;
}
else {
plVar13 = (longlong *)param_1[0x2fb];
}
*(undefined4 *)((longlong)plVar13 + lVar20 * 4) = (undefined4)local_b0;
uVar21 = local_b0;
}
LAB_14005f42f:
local_b0 = uVar21;
iVar24 = iVar24 + 1;
lVar25 = lVar25 + 1;
lVar11 = lVar11 + 0x18;
} while (iVar24 < (int)param_1[0x2f7]);
}
iVar24 = 0;
lVar11 = 0;
lVar25 = param_1[0x2fc];
if (0 < (longlong)(int)lVar25) {
do {
if ((lVar11 < 0) || ((int)param_1[0x2fc] <= iVar24)) {
/* WARNING: Subroutine does not return */
FUN_14003def0(param_1,plVar13,uVar22,in_R9);
}
iVar19 = *(int *)(param_1[0x2fb] + lVar11 * 4);
lVar15 = (longlong)iVar19;
if ((iVar19 < 0) || (param_2[1] <= lVar15)) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
if ((ulonglong)param_2[2] < 0x65) {
plVar13 = param_2 + (lVar15 + 1) * 4;
}
else {
plVar13 = (longlong *)(lVar15 * 0x20 + *param_2);
}
if ((plVar13[2] == 0) && (plVar13[3] == 0)) {
lVar20 = 0;
iVar23 = 0;
in_R9 = 0;
lVar15 = param_1[0x2f7];
if (0 < (longlong)(int)lVar15) {
uVar22 = 0;
plVar16 = param_1;
do {
if ((int)param_3 <= lVar20) break;
if (((longlong)in_R9 < 0) || ((int)param_1[0x2f7] <= iVar23)) {
/* WARNING: Subroutine does not return */
FUN_14003def0(plVar16,plVar13,uVar22,in_R9);
}
lVar17 = param_1[0x2f6];
iVar3 = *(int *)(lVar17 + 8 + uVar22);
plVar16 = (longlong *)(longlong)iVar3;
if (iVar19 == iVar3) {
lVar17 = (longlong)*(int *)(lVar17 + 0xc + uVar22);
if ((lVar17 < 0) || (param_2[1] <= lVar17)) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
if ((ulonglong)param_2[2] < 0x65) {
plVar16 = param_2 + (lVar17 + 1) * 4;
}
else {
plVar16 = (longlong *)(lVar17 * 0x20 + *param_2);
}
if ((plVar16[2] == 0) && (plVar16[3] == 0)) {
LAB_14005f5cd:
plVar13[3] = (longlong)plVar16;
plVar16[2] = (longlong)plVar13;
lVar20 = lVar20 + 1;
plVar13 = (longlong *)plVar13[3];
}
}
else if (iVar19 == *(int *)(lVar17 + 0xc + uVar22)) {
if (((longlong)plVar16 < 0) || (param_2[1] <= (longlong)plVar16)) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
if ((ulonglong)param_2[2] < 0x65) {
plVar16 = param_2 + ((longlong)plVar16 + 1) * 4;
}
else {
plVar16 = (longlong *)((longlong)plVar16 * 0x20 + *param_2);
}
if ((plVar16[2] == 0) && (plVar16[3] == 0)) {
plVar13[2] = 0;
goto LAB_14005f5cd;
}
}
iVar23 = iVar23 + 1;
in_R9 = in_R9 + 1;
uVar22 = uVar22 + 0x18;
} while ((longlong)in_R9 < (longlong)(int)lVar15);
}
}
iVar24 = iVar24 + 1;
lVar11 = lVar11 + 1;
} while (lVar11 < (int)lVar25);
}
FUN_14004c130((longlong)plVar6,0,uVar22,in_R9);
iVar24 = (int)param_1[0x2fc];
if (iVar24 == 0) {
return;
}
uVar2 = *(uint *)((longlong)param_1 + 0x17e4);
uVar22 = (ulonglong)uVar2;
if (-1 < (int)uVar2) goto LAB_14005f731;
iVar19 = *(int *)((longlong)param_1 + 0x17ec);
if (iVar19 == 0) {
uVar10 = (int)(iVar24 + (iVar24 >> 0x1f & 7U)) >> 3;
uVar9 = 0x400;
if ((int)uVar10 < 0x400) {
uVar9 = uVar10;
}
uVar10 = 4;
if (4 < (int)uVar9) {
uVar10 = uVar9;
}
LAB_14005f6a5:
uVar9 = *(uint *)(param_1 + 0x2fd);
bVar27 = SBORROW4(uVar9,uVar10);
uVar7 = uVar9 - uVar10;
bVar26 = uVar9 == uVar10;
}
else {
if (iVar19 == 1) {
uVar9 = (int)(iVar24 + (iVar24 >> 0x1f & 7U)) >> 3;
uVar10 = 0x10;
if (0x10 < (int)uVar9) {
uVar10 = uVar9;
}
if (uVar10 < 0x11) {
uVar10 = 0x10;
}
goto LAB_14005f6a5;
}
if (iVar19 != 2) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
uVar9 = *(uint *)(param_1 + 0x2fd);
uVar10 = 0;
bVar27 = false;
bVar26 = uVar9 == 0;
uVar7 = uVar9;
}
if (!bVar26 && bVar27 == (int)uVar7 < 0) {
uVar10 = uVar9;
}
plVar6 = (longlong *)param_1[0x2fa];
if (uVar2 == 0) {
if (plVar6 == (longlong *)0x0) {
lVar11 = FUN_14003e840((longlong)(int)uVar10 << 2);
}
else {
lVar11 = (**(code **)(*plVar6 + 8))(plVar6,(longlong)(int)uVar10 << 2);
}
}
else {
lVar25 = param_1[0x2fb];
if (plVar6 == (longlong *)0x0) {
lVar11 = FUN_14003e870(lVar25,(longlong)(int)uVar10 << 2);
}
else {
uVar22 = (longlong)(int)uVar10 << 2;
lVar11 = (**(code **)(*plVar6 + 0x10))(plVar6,lVar25);
}
if (lVar11 == 0) {
FUN_14003db10(local_90,L"Memory allocation failure!",uVar22,lVar25);
/* WARNING: Subroutine does not return */
_CxxThrowException(local_90,(ThrowInfo *)&DAT_14016c210);
}
}
param_1[0x2fb] = lVar11;
*(uint *)((longlong)param_1 + 0x17e4) = uVar10;
LAB_14005f731:
*(undefined4 *)(param_1 + 0x2fc) = 0;
return;
}