/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400e884c FUN_1400e884c * Pseudocode, not original source. */ uint FUN_1400e884c(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_1400e89bb: 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_1400e89bb; } while( true ); }