decompiled agent_release

This commit is contained in:
Benjamin Palko 2026-10-14 16:45:19 -04:00
parent baac905ef2
commit 11a3488883
6439 changed files with 229565 additions and 1 deletions

View file

@ -0,0 +1,359 @@
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400d6edc FUN_1400d6edc
* Pseudocode, not original source. */
ulonglong FUN_1400d6edc(longlong *param_1,uint param_2)
{
byte bVar1;
int iVar2;
undefined8 *puVar3;
int *piVar4;
uint uVar5;
uint uVar6;
int iVar7;
undefined8 *puVar8;
undefined1 uVar9;
ulonglong uVar10;
ulonglong uVar11;
uint uVar12;
if (((param_1 == (longlong *)0x0) ||
(puVar3 = (undefined8 *)param_1[5], puVar3 == (undefined8 *)0x0)) || (4 < param_2)) {
return 0xfffffffe;
}
if (((param_1[2] == 0) || ((*param_1 == 0 && ((int)param_1[1] != 0)))) ||
((*(int *)(puVar3 + 1) == 0x29a && (param_2 != 4)))) {
param_1[4] = (longlong)"stream error";
return 0xfffffffe;
}
if ((int)param_1[3] == 0) {
param_1[4] = (longlong)"buffer error";
return 0xfffffffb;
}
iVar7 = *(int *)(puVar3 + 8);
uVar12 = 1;
*puVar3 = param_1;
*(uint *)(puVar3 + 8) = param_2;
if (*(int *)(puVar3 + 1) == 0x2a) {
if (*(int *)((longlong)puVar3 + 0x2c) == 2) {
uVar5 = FUN_1400da318(0,(uint *)0x0,0);
*(uint *)((longlong)param_1 + 0x4c) = uVar5;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) = 0x1f;
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) = 0x8b;
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) = 8;
piVar4 = (int *)puVar3[6];
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
if (piVar4 == (int *)0x0) {
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) = 0;
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) = 0;
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) = 0;
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) = 0;
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) = 0;
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
if (*(int *)((longlong)puVar3 + 0xac) == 9) {
uVar9 = 2;
}
else if ((1 < *(int *)(puVar3 + 0x16)) || (uVar9 = 0, *(int *)((longlong)puVar3 + 0xac) < 2)
) {
uVar9 = 4;
}
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) = uVar9;
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) = 0xb;
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined4 *)(puVar3 + 1) = 0x71;
}
else {
*(byte *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
(-(*(longlong *)(piVar4 + 0xc) != 0) & 0x10U) + (-(piVar4[0xf] != 0) & 2U) +
(-(*(longlong *)(piVar4 + 8) != 0) & 8U) + (-(*(longlong *)(piVar4 + 4) != 0) & 4U) +
(*piVar4 != 0);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)(puVar3[6] + 4);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)(puVar3[6] + 5);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)(puVar3[6] + 6);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)(puVar3[6] + 7);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
if (*(int *)((longlong)puVar3 + 0xac) == 9) {
uVar9 = 2;
}
else if ((1 < *(int *)(puVar3 + 0x16)) || (uVar9 = 0, *(int *)((longlong)puVar3 + 0xac) < 2)
) {
uVar9 = 4;
}
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) = uVar9;
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)(puVar3[6] + 0xc);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
uVar5 = *(uint *)(puVar3 + 5);
if (*(longlong *)(puVar3[6] + 0x10) != 0) {
*(undefined1 *)((ulonglong)uVar5 + puVar3[2]) = *(undefined1 *)(puVar3[6] + 0x18);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)(puVar3[6] + 0x19);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
uVar5 = *(uint *)(puVar3 + 5);
}
if (*(int *)(puVar3[6] + 0x3c) != 0) {
uVar5 = FUN_1400da318(*(uint *)((longlong)param_1 + 0x4c),(uint *)puVar3[2],uVar5);
*(uint *)((longlong)param_1 + 0x4c) = uVar5;
}
*(undefined4 *)(puVar3 + 7) = 0;
*(undefined4 *)(puVar3 + 1) = 0x45;
}
}
else {
uVar5 = 0;
if (((*(int *)(puVar3 + 0x16) < 2) && (iVar2 = *(int *)((longlong)puVar3 + 0xac), 1 < iVar2))
&& (uVar5 = uVar12, 5 < iVar2)) {
uVar5 = (iVar2 != 6) + 2;
}
uVar5 = (*(int *)(puVar3 + 9) + -8) * 0x1000 + 0x800U | uVar5 << 6;
if (*(int *)((longlong)puVar3 + 0x94) != 0) {
uVar5 = uVar5 | 0x20;
}
*(undefined4 *)(puVar3 + 1) = 0x71;
puVar8 = puVar3;
FUN_1400d6e2c((longlong)puVar3,(uVar5 / 0x1f + 1) * 0x1f);
if (*(int *)((longlong)puVar3 + 0x94) != 0) {
FUN_1400d6e2c((longlong)puVar8,(uint)*(ushort *)((longlong)param_1 + 0x4e));
FUN_1400d6e2c((longlong)puVar8,(uint)*(ushort *)((longlong)param_1 + 0x4c));
}
uVar5 = FUN_1400d978c(0,(byte *)0x0,0);
*(uint *)((longlong)param_1 + 0x4c) = uVar5;
}
}
if (*(int *)(puVar3 + 1) == 0x45) {
if (*(longlong *)(puVar3[6] + 0x10) != 0) {
uVar5 = *(uint *)(puVar3 + 5);
if (*(uint *)(puVar3 + 7) < (uint)*(ushort *)(puVar3[6] + 0x18)) {
do {
uVar6 = *(uint *)(puVar3 + 5);
if (uVar6 == *(uint *)(puVar3 + 3)) {
if ((*(int *)(puVar3[6] + 0x3c) != 0) && (uVar5 < uVar6)) {
uVar5 = FUN_1400da318(*(uint *)((longlong)param_1 + 0x4c),
(uint *)((ulonglong)uVar5 + puVar3[2]),uVar6 - uVar5);
*(uint *)((longlong)param_1 + 0x4c) = uVar5;
}
FUN_1400d6e5c((longlong)param_1);
uVar5 = *(uint *)(puVar3 + 5);
uVar6 = uVar5;
if (uVar5 == *(uint *)(puVar3 + 3)) break;
}
*(undefined1 *)((ulonglong)uVar6 + puVar3[2]) =
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 7) + *(longlong *)(puVar3[6] + 0x10));
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(int *)(puVar3 + 7) = *(int *)(puVar3 + 7) + 1;
} while (*(uint *)(puVar3 + 7) < (uint)*(ushort *)(puVar3[6] + 0x18));
}
if ((*(int *)(puVar3[6] + 0x3c) != 0) && (uVar5 < *(uint *)(puVar3 + 5))) {
uVar5 = FUN_1400da318(*(uint *)((longlong)param_1 + 0x4c),
(uint *)((ulonglong)uVar5 + puVar3[2]),*(uint *)(puVar3 + 5) - uVar5);
*(uint *)((longlong)param_1 + 0x4c) = uVar5;
}
if (*(int *)(puVar3 + 7) != *(int *)(puVar3[6] + 0x18)) goto LAB_1400d7320;
*(undefined4 *)(puVar3 + 7) = 0;
}
*(undefined4 *)(puVar3 + 1) = 0x49;
}
LAB_1400d7320:
if (*(int *)(puVar3 + 1) == 0x49) {
if (*(longlong *)(puVar3[6] + 0x20) != 0) {
uVar10 = (ulonglong)*(uint *)(puVar3 + 5);
do {
uVar5 = *(uint *)(puVar3 + 5);
uVar11 = (ulonglong)uVar5;
if (uVar5 == *(uint *)(puVar3 + 3)) {
if ((*(int *)(puVar3[6] + 0x3c) != 0) && ((uint)uVar10 < uVar5)) {
uVar5 = FUN_1400da318(*(uint *)((longlong)param_1 + 0x4c),(uint *)(uVar10 + puVar3[2]),
uVar5 - (uint)uVar10);
*(uint *)((longlong)param_1 + 0x4c) = uVar5;
}
FUN_1400d6e5c((longlong)param_1);
uVar10 = (ulonglong)*(uint *)(puVar3 + 5);
uVar11 = uVar10;
uVar5 = uVar12;
if (*(uint *)(puVar3 + 5) == *(uint *)(puVar3 + 3)) break;
}
bVar1 = *(byte *)(*(longlong *)(puVar3[6] + 0x20) + (ulonglong)*(uint *)(puVar3 + 7));
*(uint *)(puVar3 + 7) = *(uint *)(puVar3 + 7) + 1;
*(byte *)(uVar11 + puVar3[2]) = bVar1;
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
uVar5 = (uint)bVar1;
} while (bVar1 != 0);
if (*(int *)(puVar3[6] + 0x3c) != 0) {
if ((uint)uVar10 < *(uint *)(puVar3 + 5)) {
uVar6 = FUN_1400da318(*(uint *)((longlong)param_1 + 0x4c),(uint *)(uVar10 + puVar3[2]),
*(uint *)(puVar3 + 5) - (uint)uVar10);
*(uint *)((longlong)param_1 + 0x4c) = uVar6;
}
}
if (uVar5 != 0) goto LAB_1400d73de;
*(undefined4 *)(puVar3 + 7) = 0;
}
*(undefined4 *)(puVar3 + 1) = 0x5b;
}
LAB_1400d73de:
if (*(int *)(puVar3 + 1) == 0x5b) {
if (*(longlong *)(puVar3[6] + 0x30) != 0) {
uVar10 = (ulonglong)*(uint *)(puVar3 + 5);
do {
uVar5 = *(uint *)(puVar3 + 5);
uVar11 = (ulonglong)uVar5;
if (uVar5 == *(uint *)(puVar3 + 3)) {
if ((*(int *)(puVar3[6] + 0x3c) != 0) && ((uint)uVar10 < uVar5)) {
uVar5 = FUN_1400da318(*(uint *)((longlong)param_1 + 0x4c),(uint *)(uVar10 + puVar3[2]),
uVar5 - (uint)uVar10);
*(uint *)((longlong)param_1 + 0x4c) = uVar5;
}
FUN_1400d6e5c((longlong)param_1);
uVar10 = (ulonglong)*(uint *)(puVar3 + 5);
uVar11 = uVar10;
uVar5 = uVar12;
if (*(uint *)(puVar3 + 5) == *(uint *)(puVar3 + 3)) break;
}
bVar1 = *(byte *)(*(longlong *)(puVar3[6] + 0x30) + (ulonglong)*(uint *)(puVar3 + 7));
*(uint *)(puVar3 + 7) = *(uint *)(puVar3 + 7) + 1;
*(byte *)(uVar11 + puVar3[2]) = bVar1;
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
uVar5 = (uint)bVar1;
} while (bVar1 != 0);
if (*(int *)(puVar3[6] + 0x3c) != 0) {
if ((uint)uVar10 < *(uint *)(puVar3 + 5)) {
uVar12 = FUN_1400da318(*(uint *)((longlong)param_1 + 0x4c),(uint *)(uVar10 + puVar3[2]),
*(uint *)(puVar3 + 5) - (uint)uVar10);
*(uint *)((longlong)param_1 + 0x4c) = uVar12;
}
}
if (uVar5 != 0) goto LAB_1400d7499;
}
*(undefined4 *)(puVar3 + 1) = 0x67;
}
LAB_1400d7499:
if (*(int *)(puVar3 + 1) == 0x67) {
if (*(int *)(puVar3[6] + 0x3c) != 0) {
if (*(uint *)(puVar3 + 3) < *(int *)(puVar3 + 5) + 2U) {
FUN_1400d6e5c((longlong)param_1);
}
if (*(uint *)(puVar3 + 3) < *(uint *)(puVar3 + 5) + 2) goto LAB_1400d74fd;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)((longlong)param_1 + 0x4c);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)((longlong)param_1 + 0x4d);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
uVar12 = FUN_1400da318(0,(uint *)0x0,0);
*(uint *)((longlong)param_1 + 0x4c) = uVar12;
}
*(undefined4 *)(puVar3 + 1) = 0x71;
}
LAB_1400d74fd:
if (*(int *)(puVar3 + 5) == 0) {
if ((((int)param_1[1] == 0) && ((int)param_2 <= iVar7)) && (param_2 != 4)) goto LAB_1400d7529;
LAB_1400d7539:
if (*(int *)(puVar3 + 1) == 0x29a) {
if ((int)param_1[1] != 0) {
LAB_1400d7529:
param_1[4] = (longlong)"buffer error";
return 0xfffffffb;
}
LAB_1400d7551:
if ((*(int *)((longlong)puVar3 + 0x9c) != 0) ||
((param_2 != 0 && (*(int *)(puVar3 + 1) != 0x29a)))) goto LAB_1400d756b;
}
else {
if ((int)param_1[1] == 0) goto LAB_1400d7551;
LAB_1400d756b:
iVar7 = (*(code *)(&PTR_FUN_1401181b8)[(longlong)*(int *)((longlong)puVar3 + 0xac) * 2])
(puVar3);
if ((iVar7 == 2) || (iVar7 == 3)) {
*(undefined4 *)(puVar3 + 1) = 0x29a;
}
if ((iVar7 == 0) || (iVar7 == 2)) {
if ((int)param_1[3] != 0) {
return 0;
}
goto LAB_1400d750f;
}
if (iVar7 == 1) {
if (param_2 == 1) {
FUN_1400dbb08((longlong)puVar3);
}
else {
FUN_1400dba68((longlong)puVar3,(undefined1 *)0x0,0,0);
if (param_2 == 3) {
*(undefined2 *)(puVar3[0xd] + (ulonglong)(*(int *)((longlong)puVar3 + 0x74) - 1) * 2) =
0;
memset((void *)puVar3[0xd],0,(ulonglong)(*(int *)((longlong)puVar3 + 0x74) - 1) * 2);
}
}
FUN_1400d6e5c((longlong)param_1);
if ((int)param_1[3] == 0) goto LAB_1400d750f;
}
}
if (param_2 == 4) {
if (0 < *(int *)((longlong)puVar3 + 0x2c)) {
if (*(int *)((longlong)puVar3 + 0x2c) == 2) {
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)((longlong)param_1 + 0x4c);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)((longlong)param_1 + 0x4d);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)((longlong)param_1 + 0x4e);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)((longlong)param_1 + 0x4f);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)((longlong)param_1 + 0xc);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)((longlong)param_1 + 0xd);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)((longlong)param_1 + 0xe);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
*(undefined1 *)((ulonglong)*(uint *)(puVar3 + 5) + puVar3[2]) =
*(undefined1 *)((longlong)param_1 + 0xf);
*(int *)(puVar3 + 5) = *(int *)(puVar3 + 5) + 1;
}
else {
puVar8 = puVar3;
FUN_1400d6e2c((longlong)puVar3,(uint)*(ushort *)((longlong)param_1 + 0x4e));
FUN_1400d6e2c((longlong)puVar8,(uint)*(ushort *)((longlong)param_1 + 0x4c));
}
FUN_1400d6e5c((longlong)param_1);
if (0 < *(int *)((longlong)puVar3 + 0x2c)) {
*(int *)((longlong)puVar3 + 0x2c) = -*(int *)((longlong)puVar3 + 0x2c);
}
return (ulonglong)(*(int *)(puVar3 + 5) == 0);
}
return 1;
}
}
else {
FUN_1400d6e5c((longlong)param_1);
if ((int)param_1[3] != 0) goto LAB_1400d7539;
LAB_1400d750f:
*(undefined4 *)(puVar3 + 8) = 0xffffffff;
}
return 0;
}