86 lines
2.7 KiB
C
86 lines
2.7 KiB
C
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
|
* Ghidra 12.1.2 decompiler output for 0x1400c2090 FUN_1400c2090
|
|
* Pseudocode, not original source. */
|
|
|
|
uint FUN_1400c2090(longlong param_1,uint param_2)
|
|
|
|
{
|
|
char *pcVar1;
|
|
char *pcVar2;
|
|
uint uVar3;
|
|
longlong lVar4;
|
|
char *pcVar5;
|
|
uint uVar6;
|
|
uint uVar7;
|
|
char *pcVar8;
|
|
char *pcVar9;
|
|
int iVar10;
|
|
uint uVar11;
|
|
ulonglong uVar12;
|
|
char cVar13;
|
|
char cVar14;
|
|
uint uVar15;
|
|
|
|
uVar7 = *(uint *)(param_1 + 0x94);
|
|
uVar6 = *(uint *)(param_1 + 0xa4);
|
|
lVar4 = *(longlong *)(param_1 + 0x50);
|
|
uVar12 = (ulonglong)(int)*(uint *)(param_1 + 0xa0);
|
|
pcVar2 = (char *)((ulonglong)uVar7 + lVar4);
|
|
if (*(int *)(param_1 + 0x44) - 0x106U < uVar7) {
|
|
uVar7 = (uVar7 - *(int *)(param_1 + 0x44)) + 0x106;
|
|
}
|
|
else {
|
|
uVar7 = 0;
|
|
}
|
|
cVar13 = pcVar2[uVar12 - 1];
|
|
cVar14 = pcVar2[uVar12];
|
|
if (*(uint *)(param_1 + 0xb4) <= *(uint *)(param_1 + 0xa0)) {
|
|
uVar6 = uVar6 >> 2;
|
|
}
|
|
uVar3 = *(uint *)(param_1 + 0x9c);
|
|
uVar15 = *(uint *)(param_1 + 0xb8);
|
|
if (uVar3 < *(uint *)(param_1 + 0xb8)) {
|
|
uVar15 = uVar3;
|
|
}
|
|
do {
|
|
iVar10 = (int)uVar12;
|
|
pcVar5 = (char *)(lVar4 + (ulonglong)param_2);
|
|
if ((((pcVar5[iVar10] == cVar14) && (pcVar5[(longlong)iVar10 + -1] == cVar13)) &&
|
|
(*pcVar5 == *pcVar2)) && (pcVar5[1] == pcVar2[1])) {
|
|
pcVar5 = pcVar5 + 2;
|
|
pcVar8 = pcVar2 + 2;
|
|
while (((((pcVar9 = pcVar8 + 1, *pcVar9 == pcVar5[1] &&
|
|
(pcVar9 = pcVar8 + 2, *pcVar9 == pcVar5[2])) &&
|
|
((pcVar9 = pcVar8 + 3, *pcVar9 == pcVar5[3] &&
|
|
((pcVar9 = pcVar8 + 4, *pcVar9 == pcVar5[4] &&
|
|
(pcVar9 = pcVar8 + 5, *pcVar9 == pcVar5[5])))))) &&
|
|
(pcVar9 = pcVar8 + 6, *pcVar9 == pcVar5[6])) &&
|
|
(pcVar9 = pcVar8 + 7, *pcVar9 == pcVar5[7]))) {
|
|
pcVar1 = pcVar5 + 8;
|
|
pcVar5 = pcVar5 + 8;
|
|
pcVar9 = pcVar8 + 8;
|
|
if ((*pcVar9 != *pcVar1) || (pcVar8 = pcVar9, pcVar2 + 0x102 <= pcVar9)) break;
|
|
}
|
|
uVar11 = ((int)pcVar9 - (int)(pcVar2 + 0x102)) + 0x102;
|
|
if (iVar10 < (int)uVar11) {
|
|
*(uint *)(param_1 + 0x98) = param_2;
|
|
uVar12 = (ulonglong)uVar11;
|
|
if ((int)uVar15 <= (int)uVar11) break;
|
|
cVar13 = pcVar2[(longlong)(int)uVar11 + -1];
|
|
cVar14 = pcVar2[(int)uVar11];
|
|
}
|
|
}
|
|
uVar11 = (uint)uVar12;
|
|
param_2 = (uint)*(ushort *)
|
|
(*(longlong *)(param_1 + 0x60) +
|
|
(ulonglong)(*(uint *)(param_1 + 0x4c) & param_2) * 2);
|
|
if (param_2 <= uVar7) break;
|
|
uVar6 = uVar6 - 1;
|
|
lVar4 = *(longlong *)(param_1 + 0x50);
|
|
} while (uVar6 != 0);
|
|
if (uVar11 <= uVar3) {
|
|
uVar3 = uVar11;
|
|
}
|
|
return uVar3;
|
|
}
|
|
|