############ NO_FUNCTION 0x18001474c ############ ############ FUN_ 18003b6c0 size=559 ############ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ longlong FUN_18003b6c0(longlong param_1,uint param_2,longlong param_3,int param_4,undefined8 param_5 ,undefined8 param_6) { longlong lVar1; undefined8 uVar2; longlong lVar3; ulonglong uVar4; uint uVar5; longlong lVar6; uint uVar7; uint uVar8; int iVar9; int iVar10; longlong lVar11; longlong lVar12; int iVar13; longlong lVar14; longlong lVar15; if ((int)param_2 < 0x12) { uVar2 = FUN_180034280(param_2,param_5); } else { uVar2 = FUN_180105de0(param_2,5,param_5); } if (*(int *)(&DAT_181c5e3fc + (longlong)(int)param_2 * 4) == 0) { *(undefined8 *)(param_1 + 0x38) = uVar2; lVar3 = FUN_18003a2a0(0x11,param_3,param_4); iVar10 = 1; iVar9 = 1 << (param_2 & 0x1f); uVar5 = (int)(((uint)(iVar9 >> 1) >> 0x1e) + iVar9) >> 2; *(longlong *)(param_1 + 0x40) = lVar3; if (0 < (int)uVar5) { if (uVar5 >> 1 != 0) { iVar10 = 1 << (param_4 - param_2 & 0x1f); iVar9 = uVar5 * iVar10 + iVar10; lVar15 = (longlong)iVar10; lVar14 = 0; lVar12 = (longlong)(iVar9 + iVar10 * -2); lVar11 = (longlong)(iVar9 - iVar10); uVar8 = 0; do { uVar7 = uVar8; lVar1 = lVar11 * 8; uVar8 = uVar7 + 1; lVar6 = (longlong)(int)(uVar7 * 2) * 0x10; lVar11 = lVar11 + iVar10 * -2; *(undefined8 *)(lVar3 + lVar6) = *(undefined8 *)(param_3 + lVar1); lVar1 = lVar14 * 8; lVar14 = lVar14 + iVar10 * 2; *(ulonglong *)(lVar3 + 8 + lVar6) = *(ulonglong *)(param_3 + lVar1) ^ _DAT_181c5e4e0; lVar1 = lVar12 * 8; lVar12 = lVar12 + iVar10 * -2; *(undefined8 *)(lVar3 + 0x10 + lVar6) = *(undefined8 *)(param_3 + lVar1); lVar1 = lVar15 * 8; lVar15 = lVar15 + iVar10 * 2; *(ulonglong *)(lVar3 + 0x18 + lVar6) = *(ulonglong *)(param_3 + lVar1) ^ _DAT_181c5e4e0; } while (uVar8 < uVar5 >> 1); iVar10 = uVar7 + 2 + uVar8; } if (iVar10 - 1U < uVar5) { iVar9 = 1 << (param_4 - param_2 & 0x1f); iVar13 = (iVar10 - 1U) * iVar9; *(undefined8 *)((longlong)iVar10 * 0x10 + -0x10 + lVar3) = *(undefined8 *)(param_3 + (longlong)(int)(iVar9 * uVar5 - iVar13) * 8); *(ulonglong *)((longlong)iVar10 * 0x10 + -8 + lVar3) = *(ulonglong *)(param_3 + (longlong)iVar13 * 8) ^ _DAT_181c5e4e0; } } uVar4 = lVar3 + (longlong)(int)uVar5 * 0x10; *(undefined4 *)(param_1 + 0x1c) = 0x200000; lVar3 = uVar4 + (-(uVar4 & 0x3f) & 0x3f); } else { lVar3 = FUN_18003b900(param_1,param_2,param_3,param_4,0,uVar2,param_6); } if (0x11 < (int)param_2) { iVar10 = 0x8000; if (0x7fff < *(int *)(param_1 + 0x1c)) { iVar10 = *(int *)(param_1 + 0x1c); } *(int *)(param_1 + 0x1c) = iVar10; } return lVar3; } ############ FUN_ 18003f1a0 size=1102 ############ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ longlong FUN_18003f1a0(uint param_1,longlong param_2,int param_3,longlong param_4) { longlong lVar1; double dVar2; int iVar3; ulonglong uVar4; longlong lVar5; longlong lVar6; longlong lVar7; uint uVar8; int iVar9; longlong lVar10; longlong lVar11; longlong lVar12; int iVar13; uint uVar14; uint uVar15; longlong lVar16; int iVar17; uint uVar18; ulonglong uVar19; longlong lVar20; undefined1 auVar21 [16]; undefined1 auVar22 [16]; undefined1 auVar23 [16]; undefined1 auVar24 [16]; undefined1 auVar25 [16]; undefined1 auVar26 [16]; undefined1 auVar27 [16]; undefined1 auVar28 [16]; dVar2 = DAT_181c5e510; iVar13 = 1; iVar9 = 1 << (param_1 & 0x1f); iVar17 = 1 << (param_3 - param_1 & 0x1f); iVar3 = ((uint)(iVar9 >> 1) >> 0x1e) + iVar9; lVar6 = (longlong)(iVar17 * 2); uVar18 = iVar3 >> 2; uVar19 = (ulonglong)uVar18; lVar7 = (longlong)(iVar17 * -2); if (iVar9 < 0x20000) { uVar19 = (ulonglong)(int)uVar18; uVar4 = 2; if (8 < iVar9) { uVar4 = uVar19; } } else { uVar4 = (longlong)(iVar3 >> 0xb) + 0x200; } uVar4 = uVar4 * 0x10 + param_4; lVar5 = uVar4 + (-(uVar4 & 0x3f) & 0x3f); uVar18 = (uint)uVar19; if (iVar9 < 0x20000) { if (iVar9 < 9) { if (0 < (int)uVar18) { if ((uVar19 >> 1 & 0x7fffffff) != 0) { auVar21._8_8_ = 0; auVar21._0_8_ = DAT_181c5e510; iVar13 = uVar18 * iVar17 + iVar17; lVar7 = (longlong)iVar17; lVar11 = 0; lVar6 = (longlong)(iVar13 + iVar17 * -2); lVar16 = (longlong)(iVar13 - iVar17); uVar8 = 0; do { uVar15 = uVar8; lVar10 = lVar16 * 8; lVar20 = (longlong)(int)(uVar15 * 4); uVar8 = uVar15 + 1; lVar16 = lVar16 + iVar17 * -2; *(double *)(param_4 + lVar20 * 8) = dVar2 * *(double *)(param_2 + lVar10); auVar24._8_8_ = 0; auVar24._0_8_ = *(ulonglong *)(param_2 + lVar11 * 8); lVar11 = lVar11 + iVar17 * 2; auVar24 = vfnmadd213sd_fma(auVar24,auVar21,auVar21); *(longlong *)(param_4 + 8 + lVar20 * 8) = auVar24._0_8_; lVar10 = lVar6 * 8; lVar6 = lVar6 + iVar17 * -2; *(double *)(param_4 + 0x10 + lVar20 * 8) = dVar2 * *(double *)(param_2 + lVar10); auVar27._8_8_ = 0; auVar27._0_8_ = *(ulonglong *)(param_2 + lVar7 * 8); lVar7 = lVar7 + iVar17 * 2; auVar24 = vfnmadd213sd_fma(auVar27,auVar21,auVar21); *(longlong *)(param_4 + 0x18 + lVar20 * 8) = auVar24._0_8_; } while (uVar8 < ((uint)(uVar19 >> 1) & 0x7fffffff)); iVar13 = uVar15 + 2 + uVar8; } if (iVar13 - 1U < uVar18) { iVar3 = (iVar13 - 1U) * iVar17; auVar25._8_8_ = 0; auVar25._0_8_ = DAT_181c5e510; *(double *)(param_4 + -0x10 + (longlong)(iVar13 * 2) * 8) = DAT_181c5e510 * *(double *)(param_2 + (longlong)(int)(uVar18 * iVar17 - iVar3) * 8); auVar23._8_8_ = 0; auVar23._0_8_ = *(ulonglong *)(param_2 + (longlong)iVar3 * 8); auVar21 = vfnmadd213sd_fma(auVar25,auVar23,auVar25); *(longlong *)(param_4 + -8 + (longlong)(iVar13 * 2) * 8) = auVar21._0_8_; } } return lVar5; } lVar11 = (longlong)iVar17; iVar13 = 0; if (0 < (int)uVar18) { auVar22._8_8_ = 0; auVar22._0_8_ = DAT_181c5e510; lVar10 = (longlong)(int)(iVar17 * uVar18 - iVar17); lVar20 = (longlong)(iVar17 * 2); lVar16 = (longlong)(int)(iVar17 * uVar18 + iVar17 * -2); do { lVar1 = lVar10 * 8; lVar12 = (longlong)(iVar13 * 2); iVar13 = iVar13 + 2; lVar10 = lVar10 + lVar7; *(double *)(param_4 + lVar12 * 8) = dVar2 * *(double *)(param_2 + lVar1); lVar1 = lVar16 * 8; lVar16 = lVar16 + lVar7; *(double *)(param_4 + 8 + lVar12 * 8) = dVar2 * *(double *)(param_2 + lVar1); auVar26._8_8_ = 0; auVar26._0_8_ = *(ulonglong *)(param_2 + lVar11 * 8); lVar11 = lVar11 + lVar6; auVar21 = vfnmadd213sd_fma(auVar26,auVar22,auVar22); *(longlong *)(param_4 + 0x10 + lVar12 * 8) = auVar21._0_8_; auVar28._8_8_ = 0; auVar28._0_8_ = *(ulonglong *)(param_2 + lVar20 * 8); lVar20 = lVar20 + lVar6; auVar21 = vfnmadd213sd_fma(auVar28,auVar22,auVar22); *(longlong *)(param_4 + 0x18 + lVar12 * 8) = auVar21._0_8_; } while (iVar13 < (int)uVar18); } } else { iVar3 = 0; lVar10 = (longlong)(int)(iVar17 * uVar18 - iVar17); lVar20 = (longlong)(iVar17 * 2); lVar16 = (longlong)(int)(iVar17 * uVar18 + iVar17 * -2); lVar11 = (longlong)iVar17; do { uVar19 = (ulonglong)(uint)(iVar3 * 2); *(undefined8 *)(param_4 + uVar19 * 8) = *(undefined8 *)(param_2 + lVar10 * 8); iVar3 = iVar3 + 2; lVar10 = lVar10 + lVar7; *(undefined8 *)(param_4 + 8 + uVar19 * 8) = *(undefined8 *)(param_2 + lVar16 * 8); lVar16 = lVar16 + lVar7; lVar1 = lVar11 * 8; lVar11 = lVar11 + lVar6; *(ulonglong *)(param_4 + 0x10 + uVar19 * 8) = *(ulonglong *)(param_2 + lVar1) ^ _DAT_181c5e500 ; lVar1 = lVar20 * 8; lVar20 = lVar20 + lVar6; *(ulonglong *)(param_4 + 0x18 + uVar19 * 8) = *(ulonglong *)(param_2 + lVar1) ^ _DAT_181c5e500 ; } while (iVar3 < 0x200); if (0 < (int)uVar18) { uVar8 = uVar18 + 0x1ff; if (uVar8 >> 10 != 0) { iVar3 = iVar17 * -0x400; lVar6 = (longlong)(iVar17 * 0x200); iVar13 = uVar18 * iVar17 + iVar17 * 0x200; lVar11 = 0; lVar7 = (longlong)(iVar13 + iVar3); lVar16 = (longlong)(iVar17 * -0x200 + iVar13); uVar15 = 0; do { uVar14 = uVar15; lVar10 = lVar16 * 8; lVar20 = (longlong)(int)(uVar14 * 4); uVar15 = uVar14 + 1; lVar16 = lVar16 + iVar3; *(undefined8 *)(param_4 + 0x2000 + lVar20 * 8) = *(undefined8 *)(param_2 + lVar10); lVar10 = lVar11 * 8; lVar11 = lVar11 + iVar17 * 0x400; *(ulonglong *)(param_4 + 0x2008 + lVar20 * 8) = *(ulonglong *)(param_2 + lVar10) ^ _DAT_181c5e500; lVar10 = lVar7 * 8; lVar7 = lVar7 + iVar3; *(undefined8 *)(param_4 + 0x2010 + lVar20 * 8) = *(undefined8 *)(param_2 + lVar10); lVar10 = lVar6 * 8; lVar6 = lVar6 + iVar17 * 0x400; *(ulonglong *)(param_4 + 0x2018 + lVar20 * 8) = *(ulonglong *)(param_2 + lVar10) ^ _DAT_181c5e500; } while (uVar15 < uVar8 >> 10); iVar13 = uVar14 + 2 + uVar15; } uVar15 = iVar13 - 1; if (uVar15 < (uint)((int)(((uint)((int)uVar8 >> 8) >> 0x17) + 0x1ff + uVar18) >> 9)) { *(undefined8 *)(param_4 + 0x1ff0 + (longlong)(iVar13 * 2) * 8) = *(undefined8 *) (param_2 + (longlong)(int)(uVar18 * iVar17 + uVar15 * iVar17 * -0x200) * 8); *(ulonglong *)(param_4 + 0x1ff8 + (longlong)(iVar13 * 2) * 8) = *(ulonglong *)(param_2 + (longlong)(int)(iVar17 * 0x200 * uVar15) * 8) ^ _DAT_181c5e500 ; } } } return lVar5; } ############ FUN_ 18003f600 size=1038 ############ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ longlong FUN_18003f600(uint param_1,longlong param_2,int param_3,longlong param_4) { longlong lVar1; int iVar2; ulonglong uVar3; longlong lVar4; longlong lVar5; longlong lVar6; longlong lVar7; int iVar8; int iVar9; uint uVar10; longlong lVar11; longlong lVar12; longlong lVar13; uint uVar14; uint uVar15; int iVar16; uint uVar17; ulonglong uVar18; longlong lVar19; iVar8 = 1; iVar9 = 1 << (param_1 & 0x1f); iVar16 = 1 << (param_3 - param_1 & 0x1f); iVar2 = ((uint)(iVar9 >> 1) >> 0x1e) + iVar9; lVar5 = (longlong)(iVar16 * 2); uVar17 = iVar2 >> 2; uVar18 = (ulonglong)uVar17; lVar6 = (longlong)(iVar16 * -2); if (iVar9 < 0x20000) { uVar18 = (ulonglong)(int)uVar17; uVar3 = 2; if (8 < iVar9) { uVar3 = uVar18; } } else { uVar3 = (longlong)(iVar2 >> 0xb) + 0x200; } uVar3 = uVar3 * 0x10 + param_4; lVar4 = uVar3 + (-(uVar3 & 0x3f) & 0x3f); uVar17 = (uint)uVar18; if (iVar9 < 0x20000) { if (iVar9 < 9) { if (0 < (int)uVar17) { if ((uVar18 >> 1 & 0x7fffffff) != 0) { iVar8 = uVar17 * iVar16 + iVar16; lVar12 = (longlong)iVar16; lVar19 = 0; lVar6 = (longlong)(iVar8 + iVar16 * -2); lVar5 = (longlong)(iVar8 - iVar16); uVar10 = 0; do { uVar15 = uVar10; lVar11 = lVar5 * 8; lVar7 = (longlong)(int)(uVar15 * 4); uVar10 = uVar15 + 1; lVar5 = lVar5 + iVar16 * -2; *(undefined8 *)(param_4 + lVar7 * 8) = *(undefined8 *)(param_2 + lVar11); lVar11 = lVar19 * 8; lVar19 = lVar19 + iVar16 * 2; *(ulonglong *)(param_4 + 8 + lVar7 * 8) = *(ulonglong *)(param_2 + lVar11) ^ _DAT_181c5e520; lVar11 = lVar6 * 8; lVar6 = lVar6 + iVar16 * -2; *(undefined8 *)(param_4 + 0x10 + lVar7 * 8) = *(undefined8 *)(param_2 + lVar11); lVar11 = lVar12 * 8; lVar12 = lVar12 + iVar16 * 2; *(ulonglong *)(param_4 + 0x18 + lVar7 * 8) = *(ulonglong *)(param_2 + lVar11) ^ _DAT_181c5e520; } while (uVar10 < ((uint)(uVar18 >> 1) & 0x7fffffff)); iVar8 = uVar15 + 2 + uVar10; } if (iVar8 - 1U < uVar17) { iVar2 = (iVar8 - 1U) * iVar16; *(undefined8 *)(param_4 + -0x10 + (longlong)(iVar8 * 2) * 8) = *(undefined8 *)(param_2 + (longlong)(int)(uVar17 * iVar16 - iVar2) * 8); *(ulonglong *)(param_4 + -8 + (longlong)(iVar8 * 2) * 8) = *(ulonglong *)(param_2 + (longlong)iVar2 * 8) ^ _DAT_181c5e520; } } return lVar4; } lVar12 = (longlong)iVar16; iVar8 = 0; if (0 < (int)uVar17) { lVar19 = (longlong)(int)(iVar16 * uVar17 - iVar16); lVar7 = (longlong)(iVar16 * 2); lVar11 = (longlong)(int)(iVar16 * uVar17 + iVar16 * -2); do { lVar1 = lVar19 * 8; lVar13 = (longlong)(iVar8 * 2); iVar8 = iVar8 + 2; lVar19 = lVar19 + lVar6; *(undefined8 *)(param_4 + lVar13 * 8) = *(undefined8 *)(param_2 + lVar1); lVar1 = lVar11 * 8; lVar11 = lVar11 + lVar6; *(undefined8 *)(param_4 + 8 + lVar13 * 8) = *(undefined8 *)(param_2 + lVar1); lVar1 = lVar12 * 8; lVar12 = lVar12 + lVar5; *(ulonglong *)(param_4 + 0x10 + lVar13 * 8) = *(ulonglong *)(param_2 + lVar1) ^ _DAT_181c5e520; lVar1 = lVar7 * 8; lVar7 = lVar7 + lVar5; *(ulonglong *)(param_4 + 0x18 + lVar13 * 8) = *(ulonglong *)(param_2 + lVar1) ^ _DAT_181c5e520; } while (iVar8 < (int)uVar17); } } else { iVar2 = 0; lVar11 = (longlong)(int)(iVar16 * uVar17 - iVar16); lVar7 = (longlong)(iVar16 * 2); lVar19 = (longlong)(int)(iVar16 * uVar17 + iVar16 * -2); lVar12 = (longlong)iVar16; do { uVar18 = (ulonglong)(uint)(iVar2 * 2); *(undefined8 *)(param_4 + uVar18 * 8) = *(undefined8 *)(param_2 + lVar11 * 8); iVar2 = iVar2 + 2; lVar11 = lVar11 + lVar6; *(undefined8 *)(param_4 + 8 + uVar18 * 8) = *(undefined8 *)(param_2 + lVar19 * 8); lVar19 = lVar19 + lVar6; lVar1 = lVar12 * 8; lVar12 = lVar12 + lVar5; *(ulonglong *)(param_4 + 0x10 + uVar18 * 8) = *(ulonglong *)(param_2 + lVar1) ^ _DAT_181c5e520 ; lVar1 = lVar7 * 8; lVar7 = lVar7 + lVar5; *(ulonglong *)(param_4 + 0x18 + uVar18 * 8) = *(ulonglong *)(param_2 + lVar1) ^ _DAT_181c5e520 ; } while (iVar2 < 0x200); if (0 < (int)uVar17) { uVar10 = uVar17 + 0x1ff; if (uVar10 >> 10 != 0) { iVar2 = iVar16 * -0x400; lVar5 = (longlong)(iVar16 * 0x200); iVar8 = uVar17 * iVar16 + iVar16 * 0x200; lVar12 = 0; lVar6 = (longlong)(iVar8 + iVar2); lVar19 = (longlong)(iVar16 * -0x200 + iVar8); uVar15 = 0; do { uVar14 = uVar15; lVar11 = lVar19 * 8; lVar7 = (longlong)(int)(uVar14 * 4); uVar15 = uVar14 + 1; lVar19 = lVar19 + iVar2; *(undefined8 *)(param_4 + 0x2000 + lVar7 * 8) = *(undefined8 *)(param_2 + lVar11); lVar11 = lVar12 * 8; lVar12 = lVar12 + iVar16 * 0x400; *(ulonglong *)(param_4 + 0x2008 + lVar7 * 8) = *(ulonglong *)(param_2 + lVar11) ^ _DAT_181c5e520; lVar11 = lVar6 * 8; lVar6 = lVar6 + iVar2; *(undefined8 *)(param_4 + 0x2010 + lVar7 * 8) = *(undefined8 *)(param_2 + lVar11); lVar11 = lVar5 * 8; lVar5 = lVar5 + iVar16 * 0x400; *(ulonglong *)(param_4 + 0x2018 + lVar7 * 8) = *(ulonglong *)(param_2 + lVar11) ^ _DAT_181c5e520; } while (uVar15 < uVar10 >> 10); iVar8 = uVar14 + 2 + uVar15; } uVar15 = iVar8 - 1; if (uVar15 < (uint)((int)(((uint)((int)uVar10 >> 8) >> 0x17) + 0x1ff + uVar17) >> 9)) { *(undefined8 *)(param_4 + 0x1ff0 + (longlong)(iVar8 * 2) * 8) = *(undefined8 *) (param_2 + (longlong)(int)(uVar17 * iVar16 + uVar15 * iVar16 * -0x200) * 8); *(ulonglong *)(param_4 + 0x1ff8 + (longlong)(iVar8 * 2) * 8) = *(ulonglong *)(param_2 + (longlong)(int)(iVar16 * 0x200 * uVar15) * 8) ^ _DAT_181c5e520 ; } } } return lVar4; } ############ FUN_ 180034280 size=156 ############ undefined4 * FUN_180034280(int param_1,undefined4 *param_2) { int iVar1; int iVar2; longlong lVar3; longlong lVar4; int iVar5; if (1 < param_1) { iVar2 = 1 << (param_1 + 0x1eU & 0x1f); iVar1 = 0; lVar3 = (longlong)iVar2; iVar2 = iVar2 >> 1; lVar4 = 1; if (1 < lVar3) { do { iVar5 = iVar2; if (iVar2 <= iVar1) { do { iVar1 = iVar1 - iVar5; iVar5 = iVar5 >> 1; } while (iVar5 <= iVar1); } iVar1 = iVar1 + iVar5; param_2[lVar4] = iVar1 * 2; lVar4 = lVar4 + 1; } while (lVar4 < lVar3); } *param_2 = 0; param_2[lVar3] = 0; return (undefined4 *) ((longlong)(param_2 + lVar3 + 1) + (-((ulonglong)(param_2 + lVar3 + 1) & 0x3f) & 0x3f)); } return param_2; } ############ FUN_ 180039b00 size=1939 ############ /* WARNING: Globals starting with '_' overlap smaller symbols at the same address */ longlong FUN_180039b00(uint param_1,ulonglong param_2) { double *pdVar1; ulonglong *puVar2; undefined8 *puVar3; bool bVar4; bool bVar5; bool bVar6; uint uVar7; uint uVar8; ulonglong uVar9; uint uVar10; int iVar11; longlong lVar12; uint uVar13; ulonglong uVar14; ulonglong uVar15; uint uVar16; longlong lVar17; longlong lVar18; ulonglong uVar19; longlong lVar20; int iVar21; ulonglong uVar22; undefined1 auVar23 [16]; undefined1 auVar24 [16]; undefined1 auVar25 [16]; undefined1 auVar26 [16]; undefined1 auVar27 [16]; undefined1 auVar28 [16]; undefined1 auVar29 [32]; undefined1 auVar30 [32]; undefined1 auVar31 [32]; undefined1 auVar32 [32]; undefined1 auVar33 [32]; double dVar34; undefined1 auVar35 [16]; double dVar36; iVar11 = 1 << (param_1 & 0x1f); uVar10 = (int)(((uint)(iVar11 >> 1) >> 0x1e) + iVar11) >> 2; if ((int)param_1 < 0xb) { if ((int)uVar10 < 1) { lVar12 = (longlong)(int)uVar10 * 8; } else { if ((int)uVar10 < 7) { lVar12 = (longlong)(int)uVar10 * 8; goto LAB_180039ce5; } iVar11 = 1 << (10 - param_1 & 0x1f); lVar18 = (longlong)iVar11; lVar17 = (longlong)(int)uVar10; if (iVar11 * 8 < 1) { LAB_180039cdd: lVar12 = lVar17 * 8; } else if (param_2 < 0x182616800) { lVar12 = lVar17 * 8; if (lVar12 <= (longlong)((longlong)&DAT_182616800 - param_2)) { LAB_180039bbf: lVar12 = lVar17 * 8; if ((int)uVar10 < 0xb) { uVar14 = 0; uVar16 = uVar10 & 0xfffffffe; LAB_180039c37: lVar17 = uVar14 * lVar18; do { puVar2 = &DAT_182616800 + lVar17; auVar35._8_8_ = 0; auVar35._0_8_ = *puVar2; lVar17 = lVar17 + lVar18 * 2; auVar35 = vmovhpd_avx(auVar35,puVar2[lVar18]); *(undefined1 (*) [16])(param_2 + uVar14 * 8) = auVar35; uVar14 = uVar14 + 2; } while (uVar14 < (ulonglong)(longlong)(int)uVar16); } else { uVar14 = param_2 & 0xf; if ((param_2 & 7) == 0) { if ((int)uVar14 != 0) { uVar14 = 1; } } else { uVar14 = 0; } iVar21 = (int)uVar14; if (iVar21 + 2 <= (int)uVar10) { uVar19 = 0; uVar16 = uVar10 - (uVar10 - iVar21 & 1); if (iVar21 != 0) { lVar17 = 0; do { puVar3 = &DAT_182616800 + lVar17; lVar17 = lVar17 + lVar18; *(undefined8 *)(param_2 + uVar19 * 8) = *puVar3; uVar19 = uVar19 + 1; } while (uVar19 < uVar14); } goto LAB_180039c37; } uVar16 = 0; } uVar7 = 0; lVar17 = 0; if (uVar16 + 1 <= uVar10) { lVar20 = (longlong)(int)(iVar11 * uVar16); do { uVar7 = uVar7 + 1; *(undefined8 *)(param_2 + (longlong)(int)uVar16 * 8 + lVar17 * 8) = (&DAT_182616800)[lVar20]; lVar20 = lVar20 + lVar18; lVar17 = lVar17 + 1; } while (uVar7 < uVar10 - uVar16); } goto LAB_180039db6; } } else { if (param_2 < 0x182616801) goto LAB_180039cdd; lVar12 = lVar17 * 8; if ((lVar17 + -1) * (longlong)(iVar11 * 8) + 8 <= (longlong)(param_2 - 0x182616800)) goto LAB_180039bbf; } LAB_180039ce5: iVar11 = 1; if (uVar10 >> 1 != 0) { iVar11 = 1 << (10 - param_1 & 0x1f); lVar18 = (longlong)iVar11; lVar20 = (longlong)(iVar11 * 2); lVar17 = 0; uVar16 = 0; do { uVar7 = uVar16; puVar3 = &DAT_182616800 + lVar17; uVar16 = uVar7 + 1; lVar17 = lVar17 + lVar20; *(undefined8 *)(param_2 + (longlong)(int)(uVar7 * 2) * 8) = *puVar3; puVar3 = &DAT_182616800 + lVar18; lVar18 = lVar18 + lVar20; *(undefined8 *)(param_2 + 8 + (longlong)(int)(uVar7 * 2) * 8) = *puVar3; } while (uVar16 < uVar10 >> 1); iVar11 = uVar7 + 2 + uVar16; } if (iVar11 - 1U < uVar10) { *(undefined8 *)((param_2 - 8) + (longlong)iVar11 * 8) = (&DAT_182616800)[(int)((1 << (10 - param_1 & 0x1f)) * (iVar11 - 1U))]; } } LAB_180039db6: *(undefined8 *)(lVar12 + param_2) = 0x3ff0000000000000; goto LAB_18003a23f; } iVar21 = (int)(((uint)(iVar11 >> 2) >> 0x1d) + iVar11) >> 3; dVar36 = DAT_181c5e3f0 / (double)iVar11; uVar16 = iVar21 + 1; if (-1 < iVar21) { if ((int)uVar16 < 0x10) { LAB_18003a28c: uVar8 = 0; } else { uVar14 = param_2 & 0x1f; if ((param_2 & 7) == 0) { if ((int)uVar14 != 0) { uVar14 = (ulonglong)(0x20U - (int)uVar14 >> 3); } } else { uVar14 = 0; } uVar7 = (uint)uVar14; if ((int)uVar16 < (int)(uVar7 + 0x10)) goto LAB_18003a28c; uVar13 = 0; lVar12 = 0; uVar8 = uVar16 - (uVar16 - uVar7 & 0xf); if (uVar7 != 0) { do { dVar34 = (double)(int)uVar13; uVar13 = uVar13 + 1; *(double *)(param_2 + lVar12 * 8) = dVar36 * dVar34; lVar12 = lVar12 + 1; } while (uVar13 < uVar7); } auVar35 = _DAT_181c5e3d0; auVar23 = vpunpcklqdq_avx512vl(ZEXT416(uVar7),ZEXT416(uVar7 + 1)); auVar24 = vpunpcklqdq_avx512vl(ZEXT416(uVar7 + 2),ZEXT416(uVar7 + 3)); auVar23 = vshufps_avx512vl(auVar23,auVar24,0x88); auVar32._8_8_ = dVar36; auVar32._0_8_ = dVar36; auVar32._16_8_ = dVar36; auVar32._24_8_ = dVar36; do { auVar24 = vpaddd_avx512vl(auVar23,auVar35); auVar25 = vpaddd_avx512vl(auVar24,auVar35); auVar26 = vpaddd_avx512vl(auVar25,auVar35); auVar33 = vcvtdq2pd_avx(auVar23); auVar29 = vcvtdq2pd_avx512vl(auVar24); auVar30 = vcvtdq2pd_avx512vl(auVar25); auVar31 = vcvtdq2pd_avx512vl(auVar26); auVar29 = vmulpd_avx512vl(auVar32,auVar29); auVar23 = vpaddd_avx512vl(auVar26,auVar35); auVar30 = vmulpd_avx512vl(auVar32,auVar30); auVar31 = vmulpd_avx512vl(auVar32,auVar31); pdVar1 = (double *)(param_2 + uVar14 * 8); *pdVar1 = dVar36 * auVar33._0_8_; pdVar1[1] = dVar36 * auVar33._8_8_; pdVar1[2] = dVar36 * auVar33._16_8_; pdVar1[3] = dVar36 * auVar33._24_8_; *(undefined1 (*) [32])(param_2 + 0x20 + uVar14 * 8) = auVar29; *(undefined1 (*) [32])(param_2 + 0x40 + uVar14 * 8) = auVar30; *(undefined1 (*) [32])(param_2 + 0x60 + uVar14 * 8) = auVar31; uVar14 = uVar14 + 0x10; } while (uVar14 < (ulonglong)(longlong)(int)uVar8); } auVar35 = _DAT_181c5e3d0; if (uVar8 + 1 <= uVar16) { auVar23 = vpunpcklqdq_avx512vl(ZEXT416(uVar8),ZEXT416(uVar8 + 1)); uVar14 = 0; auVar24 = vpunpcklqdq_avx512vl(ZEXT416(uVar8 + 2),ZEXT416(uVar8 + 3)); auVar23 = vshufps_avx512vl(auVar23,auVar24,0x88); auVar33._8_8_ = dVar36; auVar33._0_8_ = dVar36; auVar33._16_8_ = dVar36; auVar33._24_8_ = dVar36; auVar25 = vpbroadcastd_avx512vl(); lVar12 = 0; auVar24 = _DAT_181c5e3e0; do { auVar32 = vcvtdq2pd_avx512vl(auVar23); uVar14 = uVar14 + 4; auVar23 = vpaddd_avx(auVar23,auVar35); uVar19 = vpcmpgtd_avx512vl(auVar25,auVar24); uVar19 = uVar19 & 0xf; auVar24 = vpaddd_avx(auVar24,auVar35); auVar32 = vmulpd_avx512vl(auVar33,auVar32); puVar2 = (ulonglong *)(lVar12 + param_2 + (longlong)(int)uVar8 * 8); bVar4 = (bool)((byte)uVar19 & 1); bVar5 = (bool)((byte)(uVar19 >> 1) & 1); bVar6 = (bool)((byte)(uVar19 >> 2) & 1); *puVar2 = (ulonglong)bVar4 * auVar32._0_8_ | (ulonglong)!bVar4 * *puVar2; puVar2[1] = (ulonglong)bVar5 * auVar32._8_8_ | (ulonglong)!bVar5 * puVar2[1]; puVar2[2] = (ulonglong)bVar6 * auVar32._16_8_ | (ulonglong)!bVar6 * puVar2[2]; puVar2[3] = (uVar19 >> 3) * auVar32._24_8_ | (ulonglong)!SUB81(uVar19 >> 3,0) * puVar2[3]; lVar12 = lVar12 + 0x20; } while (uVar14 < (ulonglong)((longlong)(int)uVar16 - (longlong)(int)uVar8)); } } auVar35 = _DAT_181c5e3d0; uVar7 = uVar10 - iVar21; if ((int)uVar10 < (int)uVar16) { uVar14 = param_2 + 8 + (longlong)iVar21 * 8; } else { lVar12 = param_2 + (longlong)iVar21 * 8; uVar14 = lVar12 + 8; if ((int)uVar7 < 0x10) { uVar19 = 0; } else { uVar8 = (uint)uVar14 & 0x1f; if ((uVar14 & 7) == 0) { if (((uVar14 & 0x1f) != 0) && (uVar8 = 0x20 - uVar8 >> 3, (int)uVar7 < (int)uVar8)) { uVar8 = uVar7; } } else { uVar8 = 0; } uVar13 = uVar7 - uVar8 & 0xf; uVar19 = (longlong)(int)uVar7 - (ulonglong)uVar13; uVar15 = (ulonglong)(int)uVar8; if (uVar8 != 0) { auVar27 = vmovdqu32_avx512vl(_DAT_181c5e3e0); auVar24 = vpbroadcastd_avx512vl(); auVar25 = vpbroadcastd_avx512vl(); auVar23 = vpunpcklqdq_avx512vl(ZEXT416(uVar16),ZEXT416(iVar21 + 2)); uVar9 = 0; auVar29._8_8_ = dVar36; auVar29._0_8_ = dVar36; auVar29._16_8_ = dVar36; auVar29._24_8_ = dVar36; auVar26 = vpunpcklqdq_avx512vl(ZEXT416(iVar21 + 3),ZEXT416(iVar21 + 4)); auVar23 = vshufps_avx512vl(auVar23,auVar26,0x88); lVar17 = 0; do { auVar26 = vpsubd_avx512vl(auVar24,auVar23); uVar9 = uVar9 + 4; auVar32 = vcvtdq2pd_avx512vl(auVar26); auVar23 = vpaddd_avx(auVar23,auVar35); uVar22 = vpcmpgtd_avx512vl(auVar25,auVar27); uVar22 = uVar22 & 0xf; auVar27 = vpaddd_avx512vl(auVar27,auVar35); auVar32 = vmulpd_avx512vl(auVar29,auVar32); puVar2 = (ulonglong *)(lVar17 + 8 + lVar12); bVar4 = (bool)((byte)uVar22 & 1); bVar5 = (bool)((byte)(uVar22 >> 1) & 1); bVar6 = (bool)((byte)(uVar22 >> 2) & 1); *puVar2 = (ulonglong)bVar4 * auVar32._0_8_ | (ulonglong)!bVar4 * *puVar2; puVar2[1] = (ulonglong)bVar5 * auVar32._8_8_ | (ulonglong)!bVar5 * puVar2[1]; puVar2[2] = (ulonglong)bVar6 * auVar32._16_8_ | (ulonglong)!bVar6 * puVar2[2]; puVar2[3] = (uVar22 >> 3) * auVar32._24_8_ | (ulonglong)!SUB81(uVar22 >> 3,0) * puVar2[3]; lVar17 = lVar17 + 0x20; } while (uVar9 < uVar15); if (uVar7 == uVar8) goto LAB_18003a220; } uVar16 = uVar8 + 1 + iVar21; auVar23 = vpunpcklqdq_avx512vl(ZEXT416(uVar16),ZEXT416(uVar16 + 1)); auVar24 = vpunpcklqdq_avx512vl(ZEXT416(uVar16 + 2),ZEXT416(uVar16 + 3)); auVar23 = vshufps_avx512vl(auVar23,auVar24,0x88); if ((longlong)(uVar15 + 0x10) <= (longlong)uVar19) { auVar24 = vpbroadcastd_avx512vl(); auVar30._8_8_ = dVar36; auVar30._0_8_ = dVar36; auVar30._16_8_ = dVar36; auVar30._24_8_ = dVar36; do { auVar25 = vpaddd_avx512vl(auVar23,auVar35); auVar23 = vpsubd_avx(auVar24,auVar23); auVar26 = vpaddd_avx512vl(auVar25,auVar35); auVar25 = vpsubd_avx512vl(auVar24,auVar25); auVar27 = vpaddd_avx512vl(auVar26,auVar35); auVar26 = vpsubd_avx512vl(auVar24,auVar26); auVar28 = vpsubd_avx512vl(auVar24,auVar27); auVar32 = vcvtdq2pd_avx512vl(auVar23); auVar33 = vcvtdq2pd_avx512vl(auVar25); auVar23 = vpaddd_avx512vl(auVar27,auVar35); auVar29 = vcvtdq2pd_avx512vl(auVar26); auVar31 = vcvtdq2pd_avx512vl(auVar28); auVar32 = vmulpd_avx512vl(auVar30,auVar32); auVar33 = vmulpd_avx512vl(auVar30,auVar33); auVar29 = vmulpd_avx512vl(auVar30,auVar29); auVar31 = vmulpd_avx512vl(auVar30,auVar31); *(undefined1 (*) [32])(lVar12 + 8 + uVar15 * 8) = auVar32; *(undefined1 (*) [32])(lVar12 + 0x28 + uVar15 * 8) = auVar33; *(undefined1 (*) [32])(lVar12 + 0x48 + uVar15 * 8) = auVar29; *(undefined1 (*) [32])(lVar12 + 0x68 + uVar15 * 8) = auVar31; uVar15 = uVar15 + 0x10; } while (uVar15 < uVar19); if (uVar13 == 0) goto LAB_18003a220; } } lVar12 = lVar12 + uVar19 * 8; iVar11 = (uVar7 - 1) - (int)uVar19; do { uVar16 = (int)uVar19 + 1; uVar19 = (ulonglong)uVar16; dVar34 = (double)iVar11; iVar11 = iVar11 + -1; *(double *)(lVar12 + 8) = dVar36 * dVar34; lVar12 = lVar12 + 8; } while ((int)uVar16 < (int)uVar7); } LAB_18003a220: thunk_FUN_1801de760(param_2,param_2); thunk_FUN_1801e3f20(uVar14,uVar14,uVar7); LAB_18003a23f: uVar14 = param_2 + 8 + (longlong)(int)uVar10 * 8; return uVar14 + (-(uVar14 & 0x3f) & 0x3f); }