/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400e58a0 FUN_1400e58a0 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 FUN_1400e58a0(int *param_1,int *param_2,int *param_3,int param_4) { int iVar1; int iVar2; int iVar3; longlong lVar4; longlong lVar5; uint uVar6; uint uVar7; undefined8 uVar8; int iVar9; ulonglong uVar10; longlong lVar11; void *_Dst; int iVar12; uint *puVar13; uint *puVar14; ulonglong uVar15; longlong lVar16; longlong lVar17; undefined1 auStack_888 [40]; undefined8 local_860; undefined1 auStack_858 [2048]; ulonglong local_58; local_58 = DAT_14016f5a0 ^ (ulonglong)auStack_888; lVar17 = (longlong)param_4; local_860 = param_3; if ((*param_2 + *param_1 <= param_3[1]) || (uVar8 = FUN_1400ddb60((longlong)param_3,*param_2 + *param_1), (int)uVar8 == 0)) { iVar3 = *param_1; iVar2 = iVar3 + *param_2; uVar15 = 0; lVar11 = (longlong)iVar2; if (lVar17 < lVar11) { lVar4 = *(longlong *)(param_1 + 4); lVar5 = *(longlong *)(param_2 + 4); iVar1 = *param_2 + -1; lVar16 = lVar17; iVar12 = param_4; do { iVar9 = iVar12; if (iVar1 < iVar12) { iVar9 = iVar1; } puVar13 = (uint *)(lVar4 + (longlong)(iVar12 - iVar9) * 4); puVar14 = (uint *)(lVar5 + (longlong)iVar9 * 4); uVar6 = iVar3 - (iVar12 - iVar9); uVar7 = iVar9 + 1U; if ((int)uVar6 < (int)(iVar9 + 1U)) { uVar7 = uVar6; } uVar10 = (ulonglong)uVar7; if (0 < (int)uVar7) { do { uVar7 = *puVar14; uVar6 = *puVar13; puVar14 = puVar14 + -1; puVar13 = puVar13 + 1; uVar15 = uVar15 + (ulonglong)uVar7 * (ulonglong)uVar6; uVar10 = uVar10 - 1; } while (uVar10 != 0); } lVar16 = lVar16 + 1; iVar12 = iVar12 + 1; uVar7 = (uint)uVar15; uVar15 = uVar15 >> 0x1c; *(uint *)(auStack_858 + lVar16 * 4 + -4) = uVar7 & 0xfffffff; param_3 = local_860; } while (lVar16 < lVar11); } iVar3 = *param_3; *param_3 = iVar2; _Dst = (void *)(*(longlong *)(param_3 + 4) + lVar17 * 4); if (lVar17 < lVar11) { lVar11 = lVar11 - lVar17; memcpy(_Dst,auStack_858 + lVar17 * 4,lVar11 * 4); param_4 = param_4 + (int)lVar11; _Dst = (void *)((longlong)_Dst + lVar11 * 4); } if (param_4 < iVar3) { memset(_Dst,0,(ulonglong)(uint)(iVar3 - param_4) << 2); } FUN_1400ddc00(param_3); uVar8 = 0; } return uVar8; }