server-re/decomp/Agent_Release_x64/full/functions/0x1400d7b3c.c
2026-10-14 16:45:19 -04:00

82 lines
2.7 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400d7b3c FUN_1400d7b3c
* Pseudocode, not original source. */
uint FUN_1400d7b3c(longlong param_1,uint param_2)
{
char *pcVar1;
uint uVar2;
char *pcVar3;
int iVar4;
uint uVar5;
ulonglong uVar6;
uint uVar7;
uint uVar8;
char *pcVar9;
char *pcVar10;
uint uVar11;
char cVar12;
char cVar13;
uVar11 = *(uint *)(param_1 + 0x94);
uVar8 = *(uint *)(param_1 + 0xa4);
uVar6 = (ulonglong)(int)*(uint *)(param_1 + 0xa0);
pcVar1 = (char *)((ulonglong)uVar11 + *(longlong *)(param_1 + 0x50));
if (*(int *)(param_1 + 0x44) - 0x106U < uVar11) {
uVar11 = (uVar11 - *(int *)(param_1 + 0x44)) + 0x106;
}
else {
uVar11 = 0;
}
cVar12 = pcVar1[uVar6 - 1];
cVar13 = pcVar1[uVar6];
if (*(uint *)(param_1 + 0xb4) <= *(uint *)(param_1 + 0xa0)) {
uVar8 = uVar8 >> 2;
}
uVar2 = *(uint *)(param_1 + 0x9c);
uVar7 = *(uint *)(param_1 + 0xb8);
if (uVar2 < *(uint *)(param_1 + 0xb8)) {
uVar7 = uVar2;
}
do {
iVar4 = (int)uVar6;
pcVar3 = (char *)((ulonglong)param_2 + *(longlong *)(param_1 + 0x50));
if ((((pcVar3[iVar4] == cVar13) && (pcVar3[(longlong)iVar4 + -1] == cVar12)) &&
(*pcVar3 == *pcVar1)) && (pcVar3[1] == pcVar1[1])) {
pcVar3 = pcVar3 + 2;
pcVar9 = pcVar1 + 2;
while (((((pcVar10 = pcVar9 + 1, *pcVar10 == pcVar3[1] &&
(pcVar10 = pcVar9 + 2, *pcVar10 == pcVar3[2])) &&
((pcVar10 = pcVar9 + 3, *pcVar10 == pcVar3[3] &&
((pcVar10 = pcVar9 + 4, *pcVar10 == pcVar3[4] &&
(pcVar10 = pcVar9 + 5, *pcVar10 == pcVar3[5])))))) &&
(pcVar10 = pcVar9 + 6, *pcVar10 == pcVar3[6])) &&
(pcVar10 = pcVar9 + 7, *pcVar10 == pcVar3[7]))) {
pcVar3 = pcVar3 + 8;
pcVar10 = pcVar9 + 8;
if ((*pcVar10 != *pcVar3) || (pcVar9 = pcVar10, pcVar1 + 0x102 <= pcVar10)) break;
}
uVar5 = ((int)pcVar10 - (int)(pcVar1 + 0x102)) + 0x102;
if (iVar4 < (int)uVar5) {
*(uint *)(param_1 + 0x98) = param_2;
uVar6 = (ulonglong)uVar5;
if ((int)uVar7 <= (int)uVar5) {
LAB_1400d7cab:
if (uVar5 <= uVar2) {
uVar2 = uVar5;
}
return uVar2;
}
cVar12 = pcVar1[(longlong)(int)uVar5 + -1];
cVar13 = pcVar1[(int)uVar5];
}
}
uVar5 = (uint)uVar6;
param_2 = (uint)*(ushort *)
(*(longlong *)(param_1 + 0x60) +
(ulonglong)(*(uint *)(param_1 + 0x4c) & param_2) * 2);
if ((param_2 <= uVar11) || (uVar8 = uVar8 - 1, uVar8 == 0)) goto LAB_1400d7cab;
} while( true );
}