/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400e07e0 FUN_1400e07e0 * Pseudocode, not original source. */ /* WARNING: Function: __chkstk replaced with injection: alloca_probe */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 FUN_1400e07e0(uint *param_1,uint *param_2,int param_3) { uint uVar1; int iVar2; ulonglong uVar3; undefined8 uVar4; ulonglong *puVar5; ulonglong *puVar6; ulonglong *puVar7; uint *puVar8; int iVar9; uint *_Dst; ulonglong uVar10; uint uVar11; ulonglong uVar12; int iVar13; uint uVar14; undefined1 auStack_1078 [32]; uint local_1058; int local_1054; uint *local_1050; ulonglong local_1048 [512]; ulonglong local_48; local_48 = DAT_14016f5a0 ^ (ulonglong)auStack_1078; uVar14 = *param_1; local_1058 = uVar14; local_1054 = param_3; local_1050 = param_1; if (((int)(*param_2 + 1) <= (int)param_1[1]) || (uVar4 = FUN_1400ddb60((longlong)param_1,*param_2 + 1), (int)uVar4 == 0)) { _Dst = *(uint **)(param_1 + 4); iVar9 = 0; puVar7 = local_1048; uVar11 = 0; if (0 < (int)*param_1) { uVar11 = *param_1; uVar10 = (ulonglong)uVar11; puVar6 = puVar7; puVar8 = _Dst; do { uVar1 = *puVar8; puVar7 = puVar6 + 1; puVar8 = puVar8 + 1; uVar10 = uVar10 - 1; *puVar6 = (ulonglong)uVar1; puVar6 = puVar7; } while (uVar10 != 0); } uVar1 = *param_2; iVar2 = uVar1 * 2 + 1; if ((int)uVar11 < iVar2) { memset(puVar7,0,(ulonglong)(iVar2 - uVar11) << 3); } uVar11 = 0; if (0 < (int)uVar1) { puVar6 = local_1048; puVar7 = local_1048; uVar10 = (ulonglong)uVar1; do { puVar6 = puVar6 + 1; uVar3 = puVar6[-1]; puVar8 = *(uint **)(param_2 + 4); if (0 < (int)uVar1) { uVar12 = (ulonglong)uVar1; puVar5 = puVar7; do { uVar14 = *puVar8; puVar8 = puVar8 + 1; *puVar5 = *puVar5 + (ulonglong)uVar14 * (ulonglong)((int)uVar3 * local_1054 & 0xfffffff) ; uVar12 = uVar12 - 1; puVar5 = puVar5 + 1; } while (uVar12 != 0); } puVar7 = puVar7 + 1; *puVar6 = *puVar6 + (puVar6[-1] >> 0x1c); uVar10 = uVar10 - 1; param_1 = local_1050; uVar14 = local_1058; uVar11 = uVar1; } while (uVar10 != 0); } iVar13 = uVar11 + 1; puVar7 = local_1048 + (int)uVar11; if (iVar13 <= iVar2) { uVar10 = (ulonglong)((iVar2 - iVar13) + 1); puVar6 = local_1048 + iVar13; do { uVar3 = *puVar7; puVar7 = puVar7 + 1; *puVar6 = *puVar6 + (uVar3 >> 0x1c); uVar10 = uVar10 - 1; puVar6 = puVar6 + 1; } while (uVar10 != 0); } puVar7 = local_1048 + (int)uVar1; puVar8 = _Dst; if (0 < (int)(uVar1 + 1)) { do { uVar10 = *puVar7; iVar9 = iVar9 + 1; _Dst = puVar8 + 1; puVar7 = puVar7 + 1; *puVar8 = (uint)uVar10 & 0xfffffff; puVar8 = _Dst; } while (iVar9 < (int)(*param_2 + 1)); } if (iVar9 < (int)uVar14) { memset(_Dst,0,(ulonglong)(uVar14 - iVar9) << 2); } *param_1 = *param_2 + 1; FUN_1400ddc00((int *)param_1); uVar4 = FUN_1400ddd70((int *)param_1,(int *)param_2); if ((int)uVar4 == -1) { uVar4 = 0; } else { uVar4 = FUN_1400de150(param_1,param_2,param_1); } } return uVar4; }