decompiled agent_release
This commit is contained in:
parent
baac905ef2
commit
11a3488883
6439 changed files with 229565 additions and 1 deletions
260
decomp/Agent_Release_x64/full/functions/0x1400d9324.c
Normal file
260
decomp/Agent_Release_x64/full/functions/0x1400d9324.c
Normal file
|
|
@ -0,0 +1,260 @@
|
|||
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
||||
* Ghidra 12.1.2 decompiler output for 0x1400d9324 FUN_1400d9324
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
||||
|
||||
undefined8
|
||||
FUN_1400d9324(int param_1,ushort *param_2,uint param_3,longlong *param_4,uint *param_5,
|
||||
undefined *param_6)
|
||||
|
||||
{
|
||||
byte bVar1;
|
||||
ushort uVar2;
|
||||
ushort *puVar3;
|
||||
undefined8 uVar4;
|
||||
byte bVar5;
|
||||
longlong lVar6;
|
||||
ulonglong uVar7;
|
||||
ulonglong uVar8;
|
||||
ulonglong uVar9;
|
||||
uint uVar10;
|
||||
uint uVar11;
|
||||
uint uVar12;
|
||||
int iVar13;
|
||||
char cVar14;
|
||||
uint uVar15;
|
||||
uint uVar16;
|
||||
int iVar17;
|
||||
int iVar18;
|
||||
uint uVar19;
|
||||
byte bVar21;
|
||||
ulonglong uVar22;
|
||||
uint uVar23;
|
||||
undefined *puVar24;
|
||||
undefined4 local_d8;
|
||||
longlong local_d0;
|
||||
uint local_c8;
|
||||
uint local_c4;
|
||||
uint local_c0;
|
||||
uint local_bc;
|
||||
undefined *local_b0;
|
||||
ushort local_80 [32];
|
||||
ulonglong local_40;
|
||||
ulonglong uVar20;
|
||||
|
||||
local_40 = DAT_1401555a0 ^ (ulonglong)&local_d8;
|
||||
uVar22 = 0;
|
||||
uVar23 = 1;
|
||||
puVar3 = local_80;
|
||||
for (lVar6 = 0x10; lVar6 != 0; lVar6 = lVar6 + -1) {
|
||||
*puVar3 = 0;
|
||||
puVar3 = puVar3 + 1;
|
||||
}
|
||||
if (param_3 != 0) {
|
||||
uVar8 = (ulonglong)param_3;
|
||||
puVar3 = param_2;
|
||||
do {
|
||||
uVar2 = *puVar3;
|
||||
puVar3 = puVar3 + 1;
|
||||
local_80[uVar2] = local_80[uVar2] + 1;
|
||||
uVar8 = uVar8 - 1;
|
||||
} while (uVar8 != 0);
|
||||
}
|
||||
uVar10 = 0xf;
|
||||
local_c4 = 0xffffffff;
|
||||
puVar3 = local_80 + 0xf;
|
||||
do {
|
||||
if (*puVar3 != 0) break;
|
||||
uVar10 = uVar10 - 1;
|
||||
puVar3 = puVar3 + -1;
|
||||
} while (uVar10 != 0);
|
||||
uVar16 = *param_5;
|
||||
if (uVar10 < *param_5) {
|
||||
uVar16 = uVar10;
|
||||
}
|
||||
if (uVar10 == 0) {
|
||||
*(undefined4 *)*param_4 = 0x140;
|
||||
*param_4 = *param_4 + 4;
|
||||
*(undefined4 *)*param_4 = 0x140;
|
||||
*param_4 = *param_4 + 4;
|
||||
*param_5 = 1;
|
||||
LAB_1400d93f2:
|
||||
uVar4 = 0;
|
||||
}
|
||||
else {
|
||||
puVar3 = local_80;
|
||||
uVar15 = uVar23;
|
||||
do {
|
||||
puVar3 = puVar3 + 1;
|
||||
if (*puVar3 != 0) break;
|
||||
uVar15 = uVar15 + 1;
|
||||
} while (uVar15 < 0x10);
|
||||
uVar8 = (ulonglong)uVar16;
|
||||
uVar11 = uVar23;
|
||||
if (uVar16 < uVar15) {
|
||||
uVar8 = (ulonglong)uVar15;
|
||||
}
|
||||
do {
|
||||
uVar23 = uVar23 * 2 - (uint)local_80[uVar11];
|
||||
if ((int)uVar23 < 0) goto LAB_1400d9761;
|
||||
uVar11 = uVar11 + 1;
|
||||
} while (uVar11 < 0x10);
|
||||
if (((int)uVar23 < 1) || ((param_1 != 0 && (uVar10 == 1)))) {
|
||||
local_80[0x11] = 0;
|
||||
lVar6 = 0xe;
|
||||
uVar7 = uVar22;
|
||||
do {
|
||||
lVar6 = lVar6 + -1;
|
||||
*(short *)((longlong)local_80 + uVar7 + 0x24) =
|
||||
*(short *)((longlong)local_80 + uVar7 + 2) +
|
||||
*(short *)((longlong)local_80 + uVar7 + 0x22);
|
||||
uVar7 = uVar7 + 2;
|
||||
} while (lVar6 != 0);
|
||||
puVar3 = param_2;
|
||||
uVar7 = uVar22;
|
||||
if (param_3 != 0) {
|
||||
do {
|
||||
if (*puVar3 != 0) {
|
||||
*(short *)(param_6 + (ulonglong)local_80[(ulonglong)*puVar3 + 0x10] * 2) = (short)uVar7;
|
||||
local_80[(ulonglong)*puVar3 + 0x10] = local_80[(ulonglong)*puVar3 + 0x10] + 1;
|
||||
}
|
||||
uVar23 = (int)uVar7 + 1;
|
||||
puVar3 = puVar3 + 1;
|
||||
uVar7 = (ulonglong)uVar23;
|
||||
} while (uVar23 < param_3);
|
||||
}
|
||||
if (param_1 == 0) {
|
||||
local_b0 = param_6;
|
||||
iVar13 = 0x13;
|
||||
puVar24 = param_6;
|
||||
}
|
||||
else if (param_1 == 1) {
|
||||
iVar13 = 0x100;
|
||||
local_b0 = &DAT_14011811e;
|
||||
puVar24 = &UNK_1401180de;
|
||||
}
|
||||
else {
|
||||
iVar13 = -1;
|
||||
local_b0 = &DAT_1401183a0;
|
||||
puVar24 = &DAT_140118360;
|
||||
}
|
||||
local_d0 = *param_4;
|
||||
uVar16 = (uint)uVar8;
|
||||
bVar5 = (byte)uVar8;
|
||||
local_bc = 1 << (bVar5 & 0x1f);
|
||||
uVar23 = local_bc - 1;
|
||||
local_c0 = 0;
|
||||
uVar7 = uVar22;
|
||||
uVar9 = uVar22;
|
||||
local_c8 = local_bc;
|
||||
if ((param_1 != 1) || (uVar7 = 0, uVar9 = 0, local_bc < 0x5b0)) {
|
||||
LAB_1400d9544:
|
||||
cVar14 = (char)uVar15;
|
||||
bVar21 = (byte)uVar22;
|
||||
bVar1 = cVar14 - bVar21;
|
||||
uVar2 = *(ushort *)(param_6 + uVar9 * 2);
|
||||
if ((int)(uint)uVar2 < iVar13) {
|
||||
local_d8._0_2_ = (ushort)bVar1 << 8;
|
||||
}
|
||||
else if (iVar13 < (int)(uint)uVar2) {
|
||||
local_d8._0_2_ = CONCAT11(bVar1,local_b0[(ulonglong)*(ushort *)(param_6 + uVar9 * 2) * 2])
|
||||
;
|
||||
uVar2 = *(ushort *)(puVar24 + (ulonglong)*(ushort *)(param_6 + uVar9 * 2) * 2);
|
||||
}
|
||||
else {
|
||||
local_d8 = CONCAT31((uint3)bVar1,0x60);
|
||||
uVar2 = 0;
|
||||
}
|
||||
uVar12 = (uint)uVar7;
|
||||
local_d8 = CONCAT22(uVar2,(ushort)local_d8);
|
||||
iVar17 = 1 << (cVar14 - bVar21 & 0x1f);
|
||||
uVar7 = (ulonglong)((uVar12 >> (bVar21 & 0x1f)) + local_bc);
|
||||
uVar11 = local_bc;
|
||||
do {
|
||||
uVar7 = (ulonglong)(uint)((int)uVar7 - iVar17);
|
||||
uVar11 = uVar11 - iVar17;
|
||||
*(uint *)(local_d0 + uVar7 * 4) = local_d8;
|
||||
} while (uVar11 != 0);
|
||||
for (uVar11 = 1 << (cVar14 - 1U & 0x1f); (uVar12 & uVar11) != 0; uVar11 = uVar11 >> 1) {
|
||||
}
|
||||
uVar19 = 0;
|
||||
if (uVar11 != 0) {
|
||||
uVar19 = uVar11 + (uVar11 - 1 & uVar12);
|
||||
}
|
||||
uVar7 = (ulonglong)uVar19;
|
||||
local_c0 = local_c0 + 1;
|
||||
uVar9 = (ulonglong)local_c0;
|
||||
puVar3 = local_80 + uVar15;
|
||||
*puVar3 = *puVar3 - 1;
|
||||
if (*puVar3 != 0) goto LAB_1400d960e;
|
||||
if (uVar15 != uVar10) {
|
||||
uVar15 = (uint)param_2[*(ushort *)(param_6 + uVar9 * 2)];
|
||||
goto LAB_1400d960e;
|
||||
}
|
||||
local_d8._0_2_ = CONCAT11(cVar14 - bVar21,0x40);
|
||||
local_d8 = (uint)(ushort)local_d8;
|
||||
while (uVar19 != 0) {
|
||||
uVar10 = (uint)uVar7;
|
||||
if (((int)uVar22 != 0) && ((uVar23 & uVar10) != local_c4)) {
|
||||
local_d0 = *param_4;
|
||||
uVar22 = 0;
|
||||
local_d8._0_2_ = CONCAT11(bVar5,(undefined1)local_d8);
|
||||
local_d8 = (uint)(ushort)local_d8;
|
||||
uVar15 = uVar16;
|
||||
}
|
||||
*(uint *)(local_d0 + (uVar7 >> ((byte)uVar22 & 0x3f)) * 4) = local_d8;
|
||||
for (uVar11 = 1 << ((char)uVar15 - 1U & 0x1f); (uVar10 & uVar11) != 0;
|
||||
uVar11 = uVar11 >> 1) {
|
||||
}
|
||||
uVar19 = 0;
|
||||
if (uVar11 != 0) {
|
||||
uVar19 = uVar11 + (uVar11 - 1 & uVar10);
|
||||
}
|
||||
uVar7 = (ulonglong)uVar19;
|
||||
}
|
||||
*param_4 = *param_4 + (ulonglong)local_c8 * 4;
|
||||
*param_5 = uVar16;
|
||||
goto LAB_1400d93f2;
|
||||
}
|
||||
LAB_1400d9535:
|
||||
uVar4 = 1;
|
||||
}
|
||||
else {
|
||||
LAB_1400d9761:
|
||||
uVar4 = 0xffffffff;
|
||||
}
|
||||
}
|
||||
return uVar4;
|
||||
LAB_1400d960e:
|
||||
if (uVar16 < uVar15) {
|
||||
uVar19 = uVar23 & uVar19;
|
||||
uVar20 = (ulonglong)uVar19;
|
||||
if (uVar19 == local_c4) goto LAB_1400d9544;
|
||||
if ((int)uVar22 == 0) {
|
||||
uVar22 = uVar8;
|
||||
}
|
||||
local_d0 = local_d0 + (ulonglong)local_bc * 4;
|
||||
iVar18 = uVar15 - (int)uVar22;
|
||||
uVar11 = (int)uVar22 + iVar18;
|
||||
for (iVar17 = 1 << ((byte)iVar18 & 0x1f);
|
||||
(uVar11 < uVar10 && (uVar9 = (ulonglong)uVar11, 0 < (int)(iVar17 - (uint)local_80[uVar9])));
|
||||
iVar17 = (iVar17 - (uint)local_80[uVar9]) * 2) {
|
||||
uVar11 = uVar11 + 1;
|
||||
iVar18 = iVar18 + 1;
|
||||
}
|
||||
local_bc = 1 << ((byte)iVar18 & 0x1f);
|
||||
local_c8 = local_c8 + local_bc;
|
||||
if ((param_1 != 1) || (local_c8 < 0x5b0)) {
|
||||
*(byte *)(*param_4 + uVar20 * 4) = (byte)iVar18;
|
||||
uVar9 = (ulonglong)local_c0;
|
||||
*(byte *)(*param_4 + 1 + uVar20 * 4) = bVar5;
|
||||
*(short *)(*param_4 + 2 + uVar20 * 4) = (short)(local_d0 - *param_4 >> 2);
|
||||
local_c4 = uVar19;
|
||||
goto LAB_1400d9544;
|
||||
}
|
||||
goto LAB_1400d9535;
|
||||
}
|
||||
goto LAB_1400d9544;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue