/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14020a4c0 FUN_14020a4c0 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ undefined8 FUN_14020a4c0(int *param_1,int *param_2) { int iVar1; longlong lVar2; int iVar3; 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_1403463c0 ^ (ulonglong)auStack_878; iVar3 = *param_1 * 2; local_858 = param_2; if ((iVar3 <= param_2[1]) || (uVar5 = FUN_140208db0(param_2,iVar3), (int)uVar5 == 0)) { uVar12 = 0; lVar14 = (longlong)iVar3; 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; iVar6 = 0; if (0 < lVar14) { do { lVar2 = uVar12 + 1; uVar12 = uVar12 + 1; puVar8 = puVar7 + 1; *puVar7 = auStack_84c[lVar2] & 0xfffffff; puVar7 = puVar8; iVar6 = iVar3; } while ((longlong)uVar12 < lVar14); } if (iVar6 < iVar1) { memset(puVar8,0,(ulonglong)(uint)(iVar1 - iVar6) << 2); } FUN_140208e50(param_2); uVar5 = 0; } return uVar5; }