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,395 @@
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400c36c0 FUN_1400c36c0
* Pseudocode, not original source. */
uint FUN_1400c36c0(longlong *param_1,uint param_2)
{
char cVar1;
undefined2 uVar2;
int iVar3;
longlong *plVar4;
int *piVar5;
bool bVar6;
longlong lVar7;
uint uVar8;
int iVar9;
undefined8 uVar10;
uint uVar11;
undefined1 uVar12;
ulonglong uVar13;
ulonglong uVar14;
if (((param_1 == (longlong *)0x0) || (plVar4 = (longlong *)param_1[5], plVar4 == (longlong *)0x0))
|| (5 < param_2)) {
return 0xfffffffe;
}
if (((param_1[2] == 0) || ((*param_1 == 0 && ((int)param_1[1] != 0)))) ||
(((int)plVar4[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;
}
lVar7 = plVar4[8];
*(uint *)(plVar4 + 8) = param_2;
*plVar4 = (longlong)param_1;
iVar9 = 0;
if ((int)plVar4[1] == 0x2a) {
if (*(int *)((longlong)plVar4 + 0x2c) == 2) {
uVar8 = FUN_1400ba3f0(0,(uint *)0x0,0);
*(uint *)((longlong)param_1 + 0x4c) = uVar8;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = 0x1f;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = 0x8b;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = 8;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
piVar5 = (int *)plVar4[6];
uVar12 = 0;
if (piVar5 == (int *)0x0) {
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = 0;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = 0;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = 0;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = 0;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = 0;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
if (*(int *)((longlong)plVar4 + 0xac) == 9) {
uVar12 = 2;
}
else if ((1 < (int)plVar4[0x16]) || (*(int *)((longlong)plVar4 + 0xac) < 2)) {
uVar12 = 4;
}
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = uVar12;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = 0xb;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined4 *)(plVar4 + 1) = 0x71;
}
else {
*(byte *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
(-(*(longlong *)(piVar5 + 0xc) != 0) & 0x10U) + (-(piVar5[0xf] != 0) & 2U) +
(-(*(longlong *)(piVar5 + 8) != 0) & 8U) + (-(*(longlong *)(piVar5 + 4) != 0) & 4U) +
(*piVar5 != 0);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)(plVar4[6] + 4);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)(plVar4[6] + 5);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)(plVar4[6] + 6);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)(plVar4[6] + 7);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
if (*(int *)((longlong)plVar4 + 0xac) == 9) {
uVar12 = 2;
}
else if ((1 < (int)plVar4[0x16]) || (*(int *)((longlong)plVar4 + 0xac) < 2)) {
uVar12 = 4;
}
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = uVar12;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)(plVar4[6] + 0xc);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
uVar8 = *(uint *)(plVar4 + 5);
if (*(longlong *)(plVar4[6] + 0x10) != 0) {
*(undefined1 *)((ulonglong)uVar8 + plVar4[2]) = *(undefined1 *)(plVar4[6] + 0x18);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)(plVar4[6] + 0x19);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
uVar8 = *(uint *)(plVar4 + 5);
}
if (*(int *)(plVar4[6] + 0x3c) != 0) {
uVar8 = FUN_1400ba3f0(*(uint *)((longlong)param_1 + 0x4c),(uint *)plVar4[2],uVar8);
*(uint *)((longlong)param_1 + 0x4c) = uVar8;
}
*(undefined4 *)(plVar4 + 7) = 0;
*(undefined4 *)(plVar4 + 1) = 0x45;
}
}
else {
if (((int)plVar4[0x16] < 2) && (iVar3 = *(int *)((longlong)plVar4 + 0xac), 1 < iVar3)) {
if (iVar3 < 6) {
iVar9 = 1;
}
else {
iVar9 = (iVar3 != 6) + 2;
}
}
uVar8 = ((int)plVar4[9] + -8) * 0x1000 + 0x800U | iVar9 << 6;
if (*(int *)((longlong)plVar4 + 0x94) != 0) {
uVar8 = uVar8 | 0x20;
}
*(undefined4 *)(plVar4 + 1) = 0x71;
iVar9 = (uVar8 / 0x1f + 1) * 0x1f;
*(char *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = (char)((uint)iVar9 >> 8);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(char *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = (char)iVar9;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
if (*(int *)((longlong)plVar4 + 0x94) != 0) {
uVar2 = *(undefined2 *)((longlong)param_1 + 0x4e);
*(char *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = (char)((ushort)uVar2 >> 8);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(char *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = (char)uVar2;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
uVar2 = *(undefined2 *)((longlong)param_1 + 0x4c);
*(char *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = (char)((ushort)uVar2 >> 8);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(char *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = (char)uVar2;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
}
*(undefined4 *)((longlong)param_1 + 0x4c) = 1;
}
}
if ((int)plVar4[1] == 0x45) {
if (*(longlong *)(plVar4[6] + 0x10) != 0) {
uVar8 = *(uint *)(plVar4 + 5);
if (*(uint *)(plVar4 + 7) < (uint)*(ushort *)(plVar4[6] + 0x18)) {
do {
uVar11 = *(uint *)(plVar4 + 5);
if (uVar11 == *(uint *)(plVar4 + 3)) {
if ((*(int *)(plVar4[6] + 0x3c) != 0) && (uVar8 < uVar11)) {
uVar8 = FUN_1400ba3f0(*(uint *)((longlong)param_1 + 0x4c),
(uint *)((ulonglong)uVar8 + plVar4[2]),uVar11 - uVar8);
*(uint *)((longlong)param_1 + 0x4c) = uVar8;
}
FUN_1400c1e90((longlong)param_1);
uVar8 = *(uint *)(plVar4 + 5);
uVar11 = uVar8;
if (uVar8 == *(uint *)(plVar4 + 3)) break;
}
*(undefined1 *)((ulonglong)uVar11 + plVar4[2]) =
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 7) + *(longlong *)(plVar4[6] + 0x10));
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(int *)(plVar4 + 7) = (int)plVar4[7] + 1;
} while (*(uint *)(plVar4 + 7) < (uint)*(ushort *)(plVar4[6] + 0x18));
}
if ((*(int *)(plVar4[6] + 0x3c) != 0) && (uVar8 < *(uint *)(plVar4 + 5))) {
uVar8 = FUN_1400ba3f0(*(uint *)((longlong)param_1 + 0x4c),
(uint *)((ulonglong)uVar8 + plVar4[2]),*(uint *)(plVar4 + 5) - uVar8);
*(uint *)((longlong)param_1 + 0x4c) = uVar8;
}
if ((int)plVar4[7] != *(int *)(plVar4[6] + 0x18)) goto LAB_1400c3b50;
*(undefined4 *)(plVar4 + 7) = 0;
}
*(undefined4 *)(plVar4 + 1) = 0x49;
}
LAB_1400c3b50:
if ((int)plVar4[1] == 0x49) {
if (*(longlong *)(plVar4[6] + 0x20) != 0) {
uVar13 = (ulonglong)*(uint *)(plVar4 + 5);
do {
uVar8 = *(uint *)(plVar4 + 5);
uVar14 = (ulonglong)uVar8;
if (uVar8 == *(uint *)(plVar4 + 3)) {
if ((*(int *)(plVar4[6] + 0x3c) != 0) && ((uint)uVar13 < uVar8)) {
uVar8 = FUN_1400ba3f0(*(uint *)((longlong)param_1 + 0x4c),(uint *)(uVar13 + plVar4[2]),
uVar8 - (uint)uVar13);
*(uint *)((longlong)param_1 + 0x4c) = uVar8;
}
FUN_1400c1e90((longlong)param_1);
uVar13 = (ulonglong)*(uint *)(plVar4 + 5);
uVar14 = uVar13;
if (*(uint *)(plVar4 + 5) == *(uint *)(plVar4 + 3)) {
bVar6 = true;
goto LAB_1400c3be0;
}
}
cVar1 = *(char *)(*(longlong *)(plVar4[6] + 0x20) + (ulonglong)*(uint *)(plVar4 + 7));
*(uint *)(plVar4 + 7) = *(uint *)(plVar4 + 7) + 1;
*(char *)(uVar14 + plVar4[2]) = cVar1;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
} while (cVar1 != '\0');
bVar6 = false;
LAB_1400c3be0:
if (*(int *)(plVar4[6] + 0x3c) != 0) {
if ((uint)uVar13 < *(uint *)(plVar4 + 5)) {
uVar8 = FUN_1400ba3f0(*(uint *)((longlong)param_1 + 0x4c),(uint *)(uVar13 + plVar4[2]),
*(uint *)(plVar4 + 5) - (uint)uVar13);
*(uint *)((longlong)param_1 + 0x4c) = uVar8;
}
}
if (bVar6) goto LAB_1400c3c14;
*(undefined4 *)(plVar4 + 7) = 0;
}
*(undefined4 *)(plVar4 + 1) = 0x5b;
}
LAB_1400c3c14:
if ((int)plVar4[1] == 0x5b) {
if (*(longlong *)(plVar4[6] + 0x30) != 0) {
uVar13 = (ulonglong)*(uint *)(plVar4 + 5);
do {
uVar8 = *(uint *)(plVar4 + 5);
uVar14 = (ulonglong)uVar8;
if (uVar8 == *(uint *)(plVar4 + 3)) {
if ((*(int *)(plVar4[6] + 0x3c) != 0) && ((uint)uVar13 < uVar8)) {
uVar8 = FUN_1400ba3f0(*(uint *)((longlong)param_1 + 0x4c),(uint *)(uVar13 + plVar4[2]),
uVar8 - (uint)uVar13);
*(uint *)((longlong)param_1 + 0x4c) = uVar8;
}
FUN_1400c1e90((longlong)param_1);
uVar13 = (ulonglong)*(uint *)(plVar4 + 5);
uVar14 = uVar13;
if (*(uint *)(plVar4 + 5) == *(uint *)(plVar4 + 3)) {
bVar6 = true;
goto LAB_1400c3ca0;
}
}
cVar1 = *(char *)(*(longlong *)(plVar4[6] + 0x30) + (ulonglong)*(uint *)(plVar4 + 7));
*(uint *)(plVar4 + 7) = *(uint *)(plVar4 + 7) + 1;
*(char *)(uVar14 + plVar4[2]) = cVar1;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
} while (cVar1 != '\0');
bVar6 = false;
LAB_1400c3ca0:
if (*(int *)(plVar4[6] + 0x3c) != 0) {
if ((uint)uVar13 < *(uint *)(plVar4 + 5)) {
uVar8 = FUN_1400ba3f0(*(uint *)((longlong)param_1 + 0x4c),(uint *)(uVar13 + plVar4[2]),
*(uint *)(plVar4 + 5) - (uint)uVar13);
*(uint *)((longlong)param_1 + 0x4c) = uVar8;
}
}
if (bVar6) goto LAB_1400c3cd0;
}
*(undefined4 *)(plVar4 + 1) = 0x67;
}
LAB_1400c3cd0:
if ((int)plVar4[1] == 0x67) {
if (*(int *)(plVar4[6] + 0x3c) != 0) {
if (*(uint *)(plVar4 + 3) < (int)plVar4[5] + 2U) {
FUN_1400c1e90((longlong)param_1);
}
if (*(uint *)(plVar4 + 3) < *(uint *)(plVar4 + 5) + 2) goto LAB_1400c3d3a;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)((longlong)param_1 + 0x4c);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)((longlong)param_1 + 0x4d);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
uVar8 = FUN_1400ba3f0(0,(uint *)0x0,0);
*(uint *)((longlong)param_1 + 0x4c) = uVar8;
}
*(undefined4 *)(plVar4 + 1) = 0x71;
}
LAB_1400c3d3a:
if ((int)plVar4[5] == 0) {
if ((((int)param_1[1] == 0) && ((int)param_2 <= (int)lVar7)) && (param_2 != 4))
goto LAB_1400c3d89;
LAB_1400c3d79:
if ((int)plVar4[1] == 0x29a) {
if ((int)param_1[1] != 0) {
LAB_1400c3d89:
param_1[4] = (longlong)"buffer error";
return 0xfffffffb;
}
LAB_1400c3da1:
if ((*(int *)((longlong)plVar4 + 0x9c) != 0) || ((param_2 != 0 && ((int)plVar4[1] != 0x29a))))
goto LAB_1400c3dbd;
}
else {
if ((int)param_1[1] == 0) goto LAB_1400c3da1;
LAB_1400c3dbd:
if ((int)plVar4[0x16] == 2) {
uVar10 = FUN_1400c3370(plVar4,param_2);
iVar9 = (int)uVar10;
}
else if ((int)plVar4[0x16] == 3) {
iVar9 = FUN_1400c2ff0(plVar4,param_2);
}
else {
iVar9 = (*(code *)(&PTR_FUN_140110dd8)[(longlong)*(int *)((longlong)plVar4 + 0xac) * 2])();
}
if ((iVar9 == 2) || (iVar9 == 3)) {
*(undefined4 *)(plVar4 + 1) = 0x29a;
}
if ((iVar9 == 0) || (iVar9 == 2)) {
if ((int)param_1[3] != 0) {
return 0;
}
goto LAB_1400c3d4e;
}
if (iVar9 == 1) {
if (param_2 == 1) {
FUN_1400c6430((longlong)plVar4);
}
else if ((param_2 != 5) &&
(FUN_1400c6390((longlong)plVar4,(undefined1 *)0x0,0,0), param_2 == 3)) {
*(undefined2 *)(plVar4[0xd] + (ulonglong)(*(int *)((longlong)plVar4 + 0x74) - 1) * 2) = 0;
memset((void *)plVar4[0xd],0,(ulonglong)(*(int *)((longlong)plVar4 + 0x74) - 1) * 2);
if (*(int *)((longlong)plVar4 + 0x9c) == 0) {
*(undefined4 *)((longlong)plVar4 + 0x94) = 0;
*(undefined4 *)((longlong)plVar4 + 0x84) = 0;
}
}
FUN_1400c1e90((longlong)param_1);
if ((int)param_1[3] == 0) goto LAB_1400c3d4e;
}
}
if (param_2 == 4) {
if (0 < *(int *)((longlong)plVar4 + 0x2c)) {
if (*(int *)((longlong)plVar4 + 0x2c) == 2) {
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)((longlong)param_1 + 0x4c);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)((longlong)param_1 + 0x4d);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)((longlong)param_1 + 0x4e);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)((longlong)param_1 + 0x4f);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)((longlong)param_1 + 0xc);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)((longlong)param_1 + 0xd);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)((longlong)param_1 + 0xe);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(undefined1 *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) =
*(undefined1 *)((longlong)param_1 + 0xf);
}
else {
uVar2 = *(undefined2 *)((longlong)param_1 + 0x4e);
*(char *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = (char)((ushort)uVar2 >> 8);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(char *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = (char)uVar2;
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
uVar2 = *(undefined2 *)((longlong)param_1 + 0x4c);
*(char *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = (char)((ushort)uVar2 >> 8);
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
*(char *)((ulonglong)*(uint *)(plVar4 + 5) + plVar4[2]) = (char)uVar2;
}
*(int *)(plVar4 + 5) = (int)plVar4[5] + 1;
FUN_1400c1e90((longlong)param_1);
if (0 < *(int *)((longlong)plVar4 + 0x2c)) {
*(int *)((longlong)plVar4 + 0x2c) = -*(int *)((longlong)plVar4 + 0x2c);
}
return (uint)((int)plVar4[5] == 0);
}
return 1;
}
}
else {
FUN_1400c1e90((longlong)param_1);
if ((int)param_1[3] != 0) goto LAB_1400c3d79;
LAB_1400c3d4e:
*(undefined4 *)(plVar4 + 8) = 0xffffffff;
}
return 0;
}