/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400ce560 FUN_1400ce560 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 FUN_1400ce560(int *param_1,int *param_2) { int iVar1; longlong lVar2; uint uVar3; uint uVar4; undefined8 uVar5; int iVar6; uint *puVar7; uint *puVar8; int iVar9; ulonglong uVar10; ulonglong uVar11; ulonglong uVar12; int iVar13; longlong lVar14; ulonglong uVar15; ulonglong uVar16; ulonglong uVar17; uint uVar18; undefined1 auStack_878 [32]; int *local_858; uint auStack_84c [513]; ulonglong local_48; local_48 = DAT_1401555a0 ^ (ulonglong)auStack_878; uVar3 = *param_1 * 2; local_858 = param_2; if (((int)uVar3 <= param_2[1]) || (uVar5 = FUN_1400cce50((longlong)param_2,uVar3), (int)uVar5 == 0)) { uVar12 = 0; lVar14 = (longlong)(int)uVar3; if (0 < lVar14) { lVar2 = *(longlong *)(param_1 + 4); iVar1 = *param_1; uVar11 = uVar12; uVar15 = uVar12; uVar17 = uVar12; do { iVar6 = iVar1 + -1; iVar13 = (int)uVar11; iVar9 = iVar13; if (iVar6 < iVar13) { iVar9 = iVar6; } iVar6 = iVar13 - iVar9; puVar8 = (uint *)(lVar2 + (longlong)iVar6 * 4); puVar7 = (uint *)(lVar2 + (longlong)iVar9 * 4); uVar4 = iVar1 - iVar6; uVar18 = iVar9 + 1U; if ((int)uVar4 < (int)(iVar9 + 1U)) { uVar18 = uVar4; } uVar4 = (iVar9 - iVar6) + 1 >> 1; if ((int)uVar4 <= (int)uVar18) { uVar18 = uVar4; } uVar16 = uVar12; if (0 < (int)uVar18) { uVar10 = (ulonglong)uVar18; do { uVar18 = *puVar7; uVar4 = *puVar8; puVar7 = puVar7 + -1; puVar8 = puVar8 + 1; uVar16 = uVar16 + (ulonglong)uVar18 * (ulonglong)uVar4; uVar10 = uVar10 - 1; } while (uVar10 != 0); } uVar16 = uVar17 + uVar16 * 2; if ((uVar11 & 1) == 0) { uVar11 = (ulonglong)*(uint *)(lVar2 + ((longlong)iVar13 >> 1) * 4); uVar16 = uVar16 + uVar11 * uVar11; } uVar15 = uVar15 + 1; uVar11 = (ulonglong)(iVar13 + 1); uVar17 = uVar16 >> 0x1c; auStack_84c[uVar15] = (uint)uVar16 & 0xfffffff; param_2 = local_858; } while ((longlong)uVar15 < lVar14); } iVar1 = *param_2; puVar8 = *(uint **)(param_2 + 4); *param_2 = *param_1 * 2; puVar7 = puVar8; uVar18 = 0; if (0 < lVar14) { do { lVar2 = uVar12 + 1; uVar12 = uVar12 + 1; puVar8 = puVar7 + 1; *puVar7 = auStack_84c[lVar2] & 0xfffffff; puVar7 = puVar8; uVar18 = uVar3; } while ((longlong)uVar12 < lVar14); } if ((int)uVar18 < iVar1) { memset(puVar8,0,(ulonglong)(iVar1 - uVar18) << 2); } FUN_1400ccef0(param_2); uVar5 = 0; } return uVar5; }