From d7a0fa810051832f7fc64a0fa55f1c5cdc435d4c Mon Sep 17 00:00:00 2001 From: gouyt13clear Date: Tue, 22 Sep 2026 18:03:04 +0800 Subject: [PATCH 1/6] Add Windows x86-64 support and wheel builds --- .github/workflows/python.yml | 17 + .github/workflows/release.yml | 47 +- .github/workflows/test.yaml | 18 + CMakeLists.txt | 55 +- README.md | 6 +- docs/docs/quick_start.md | 14 +- include/rabitqlib/defines.hpp | 3 +- include/rabitqlib/index/hnsw/hnsw.hpp | 7 +- include/rabitqlib/index/ivf/initializer.hpp | 7 +- include/rabitqlib/index/ivf/ivf.hpp | 26 +- .../rabitqlib/index/symqg/detail/pipnn.hpp | 24 +- include/rabitqlib/index/symqg/qg_builder.hpp | 32 +- .../rabitqlib/quantization/rabitq_impl.hpp | 3 +- include/rabitqlib/utils/bitops.hpp | 44 + include/rabitqlib/utils/memory.hpp | 49 +- include/rabitqlib/utils/rotator.hpp | 7 +- include/rabitqlib/utils/space.hpp | 17 +- include/rabitqlib/utils/warmup_space.hpp | 10 +- pyproject.toml | 6 +- python_bindings/hnsw_bindings.cpp | 23 +- python_bindings/ivf_bindings.cpp | 6 +- python_bindings/symqg_bindings.cpp | 10 +- scripts/generate-fht-masm.py | 165 + src/index/qg.cpp | 11 +- src/simd/dispatch.cpp | 6 +- src/simd/fht_avx2_masm.asm | 53182 ++++++++++++++++ src/simd/quantization_avx2.cpp | 3 +- src/simd/quantization_avx512.cpp | 7 +- src/simd/rotator_kernels.hpp | 41 +- src/simd/warmup_avx2.cpp | 7 +- src/simd/warmup_avx512.cpp | 7 +- tests/README.md | 12 +- .../unit/rabitqlib/fastscan/fastscan_test.cpp | 3 +- tests/unit/rabitqlib/index/qg_test.cpp | 5 +- .../quantization/rescale_search_test.cpp | 4 +- tests/unit/rabitqlib/utils/bitops_test.cpp | 23 + tests/unit/rabitqlib/utils/memory_test.cpp | 14 + tests/unit/rabitqlib/utils/rotator_test.cpp | 79 + tests/unit/rabitqlib/utils/space_test.cpp | 133 +- 39 files changed, 53971 insertions(+), 162 deletions(-) create mode 100644 include/rabitqlib/utils/bitops.hpp create mode 100644 scripts/generate-fht-masm.py create mode 100644 src/simd/fht_avx2_masm.asm create mode 100644 tests/unit/rabitqlib/utils/bitops_test.cpp diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index f3ec66cb..961adcb1 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -66,3 +66,20 @@ jobs: - name: Run pytest run: pytest --tb=short -q + + python-windows: + needs: changes + if: ${{ !cancelled() && (needs.changes.result != 'success' || needs.changes.outputs.python_build == 'true') }} + name: Python Windows x86-64 + runs-on: windows-2022 + timeout-minutes: 45 + steps: + - uses: actions/checkout@v7 + - uses: actions/setup-python@v7 + with: + python-version: "3.11" + cache: pip + - name: Build and install package + run: python -m pip install ".[test]" -v + - name: Test IVF and HNSW bindings + run: python -m pytest tests/python/test_ivf.py tests/python/test_hnsw.py --tb=short -q diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 04320f01..03262fd6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -95,9 +95,44 @@ jobs: path: wheelhouse/*.whl if-no-files-found: error + windows-wheels: + name: Windows x86-64 wheels + needs: [prepare, changes] + if: >- + !cancelled() && needs.prepare.result == 'success' && + needs.prepare.outputs.build == 'true' && + (needs.changes.result != 'success' || needs.changes.outputs.wheels == 'true') + runs-on: windows-2022 + timeout-minutes: 90 + steps: + - uses: actions/checkout@v7 + with: + ref: ${{ needs.prepare.outputs.sha }} + - uses: actions/setup-python@v7 + with: + python-version: "3.14" + - name: Build and test PR wheel + if: github.event_name == 'pull_request' + uses: pypa/cibuildwheel@v4.2.0 + env: + CIBW_BUILD: cp311-win_amd64 + with: + output-dir: wheelhouse + - name: Build and test release wheels + if: github.event_name != 'pull_request' + uses: pypa/cibuildwheel@v4.2.0 + with: + output-dir: wheelhouse + - name: Store wheel artifacts + uses: actions/upload-artifact@v7 + with: + name: windows-x86_64-wheels + path: wheelhouse/*.whl + if-no-files-found: error + release-tag: name: Create version tag - needs: [prepare, linux-wheels] + needs: [prepare, linux-wheels, windows-wheels] if: >- (github.event_name == 'push' || github.event_name == 'workflow_run') && needs.prepare.outputs.publish == 'true' @@ -126,7 +161,7 @@ jobs: if: >- (github.event_name == 'push' || github.event_name == 'workflow_run') && needs.prepare.outputs.publish == 'true' - needs: [prepare, linux-wheels, release-tag] + needs: [prepare, linux-wheels, windows-wheels, release-tag] runs-on: ubuntu-latest environment: name: pypi @@ -138,8 +173,9 @@ jobs: - name: Download wheel artifacts uses: actions/download-artifact@v8 with: - name: linux-x86_64-wheels + pattern: '*-wheels' path: wheelhouse + merge-multiple: true - name: Publish wheels uses: pypa/gh-action-pypi-publish@release/v1 @@ -152,7 +188,7 @@ jobs: if: >- (github.event_name == 'push' || github.event_name == 'workflow_run') && needs.prepare.outputs.publish == 'true' - needs: [prepare, linux-wheels, pypi-publish] + needs: [prepare, linux-wheels, windows-wheels, pypi-publish] runs-on: ubuntu-latest permissions: contents: write @@ -165,8 +201,9 @@ jobs: - name: Download wheel artifacts uses: actions/download-artifact@v8 with: - name: linux-x86_64-wheels + pattern: '*-wheels' path: wheelhouse + merge-multiple: true - name: Create GitHub release env: diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 5827f3c5..d0c3ce3a 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -125,6 +125,24 @@ jobs: - name: Test run: ctest --test-dir build --output-on-failure + windows: + needs: changes + if: ${{ !cancelled() && (needs.changes.result != 'success' || needs.changes.outputs.cpp == 'true') }} + name: Windows x86-64 + runs-on: windows-2022 + timeout-minutes: 45 + steps: + - uses: actions/checkout@v7 + - name: Configure + run: >- + cmake -S . -B build-windows -G "Visual Studio 17 2022" -A x64 + -DRABITQ_BUILD_TESTS=ON + -DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF + - name: Build + run: cmake --build build-windows --config Release --parallel 2 + - name: Test + run: ctest --test-dir build-windows -C Release --output-on-failure + sanitizers: needs: changes if: ${{ !cancelled() && (needs.changes.result != 'success' || needs.changes.outputs.cpp == 'true') }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 72c31310..ec03fa05 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,6 +29,11 @@ target_compile_options(rabitq_compile_options INTERFACE $<$,$>:-march=native> ) target_link_libraries(rabitq_compile_options INTERFACE OpenMP::OpenMP_CXX) +if(MSVC) + # MSVC spells the GNU restrict extension differently. Public headers use + # __restrict__, so consumers need the same definition as the library. + target_compile_definitions(rabitq_compile_options INTERFACE __restrict__=__restrict) +endif() if(RABITQ_ENABLE_SANITIZERS) target_compile_options(rabitq_compile_options INTERFACE $<$:-fsanitize=address,undefined;-fno-omit-frame-pointer> @@ -116,24 +121,38 @@ set_target_properties(rabitq_core PROPERTIES ) rabitq_enable_warnings(rabitq_core) -set_source_files_properties(${RABITQ_AVX2_SOURCES} PROPERTIES - COMPILE_OPTIONS "-mavx2;-mfma" -) -set_source_files_properties(${RABITQ_AVX512_SOURCES} PROPERTIES - COMPILE_OPTIONS "-mavx512f;-mavx512bw;-mavx512dq;-mfma" -) -set_source_files_properties(${RABITQ_AVX512_POPCNT_SOURCES} PROPERTIES - COMPILE_OPTIONS "-mavx512f;-mavx512bw;-mavx512dq;-mavx512vpopcntdq;-mfma" -) -set_source_files_properties(${RABITQ_HNSW_AVX2_SOURCES} PROPERTIES - COMPILE_OPTIONS "-mavx2;-mfma" -) -set_source_files_properties(${RABITQ_HNSW_AVX512_CORE_SOURCES} PROPERTIES - COMPILE_OPTIONS "-mavx512f;-mavx512bw;-mavx512dq;-mavx2;-mfma" -) -set_source_files_properties(${RABITQ_HNSW_AVX512_POPCNT_SOURCES} PROPERTIES - COMPILE_OPTIONS "-mavx512f;-mavx512bw;-mavx512dq;-mavx512vpopcntdq;-mfma" -) +if(MSVC) + enable_language(ASM_MASM) + target_sources(rabitq_core PRIVATE src/simd/fht_avx2_masm.asm) + set_source_files_properties( + ${RABITQ_AVX2_SOURCES} ${RABITQ_HNSW_AVX2_SOURCES} + PROPERTIES COMPILE_OPTIONS "/arch:AVX2" + ) + set_source_files_properties( + ${RABITQ_AVX512_SOURCES} ${RABITQ_AVX512_POPCNT_SOURCES} + ${RABITQ_HNSW_AVX512_CORE_SOURCES} ${RABITQ_HNSW_AVX512_POPCNT_SOURCES} + PROPERTIES COMPILE_OPTIONS "/arch:AVX512" + ) +else() + set_source_files_properties(${RABITQ_AVX2_SOURCES} PROPERTIES + COMPILE_OPTIONS "-mavx2;-mfma" + ) + set_source_files_properties(${RABITQ_AVX512_SOURCES} PROPERTIES + COMPILE_OPTIONS "-mavx512f;-mavx512bw;-mavx512dq;-mfma" + ) + set_source_files_properties(${RABITQ_AVX512_POPCNT_SOURCES} PROPERTIES + COMPILE_OPTIONS "-mavx512f;-mavx512bw;-mavx512dq;-mavx512vpopcntdq;-mfma" + ) + set_source_files_properties(${RABITQ_HNSW_AVX2_SOURCES} PROPERTIES + COMPILE_OPTIONS "-mavx2;-mfma" + ) + set_source_files_properties(${RABITQ_HNSW_AVX512_CORE_SOURCES} PROPERTIES + COMPILE_OPTIONS "-mavx512f;-mavx512bw;-mavx512dq;-mavx2;-mfma" + ) + set_source_files_properties(${RABITQ_HNSW_AVX512_POPCNT_SOURCES} PROPERTIES + COMPILE_OPTIONS "-mavx512f;-mavx512bw;-mavx512dq;-mavx512vpopcntdq;-mfma" + ) +endif() add_library(rabitq_headers INTERFACE) add_library(rabitqlib::rabitqlib ALIAS rabitq_headers) diff --git a/README.md b/README.md index 1c54b151..30cad720 100644 --- a/README.md +++ b/README.md @@ -52,8 +52,10 @@ python -m pip install --upgrade rabitqlib ``` -Prebuilt wheels support Linux x86-64 and CPython 3.11–3.14. AVX2 + FMA is the -portable CPU baseline; supported AVX-512 kernels are selected at runtime. +Published wheels currently support Linux x86-64 with CPython 3.11–3.14. The +release workflow is configured to add Windows x86-64 wheels in the next release. +AVX2 and FMA are the CPU baseline; supported AVX-512 kernels are selected at +runtime. ## Python quick start diff --git a/docs/docs/quick_start.md b/docs/docs/quick_start.md index e24794b2..d222cf5f 100644 --- a/docs/docs/quick_start.md +++ b/docs/docs/quick_start.md @@ -7,8 +7,10 @@ a C++17 API for both indexes and low-level quantization. - An x86-64 CPU supported by the selected kernels: most paths accept either AVX2 with FMA or AVX-512F/BW/DQ with FMA -- Linux x86-64 and CPython 3.11–3.14 for prebuilt Python wheels -- For source builds: a C++17 compiler with OpenMP support and CMake 3.20 or newer +- Linux x86-64 and CPython 3.11–3.14 for currently published Python wheels; + Windows x86-64 wheels are configured for the next release +- For source builds: a C++17 compiler with OpenMP support and CMake 3.20 or newer; + Windows builds use Visual Studio 2022 with the C++ workload
CPU dispatch details @@ -29,9 +31,11 @@ path when available. AVX-512 translation units are compiled with FMA enabled. python -m pip install rabitqlib ``` -Prebuilt wheels support Linux x86-64 and CPython 3.11–3.14 and do not require -a compiler or CMake. AVX2 + FMA is the portable CPU baseline; supported -AVX-512 kernels are selected at runtime. +Published Linux x86-64 wheels for CPython 3.11–3.14 do not require a compiler +or CMake. Windows x86-64 wheels are configured for the next release; until then, +installing on Windows builds from source with Visual Studio 2022 and CMake. +AVX2 + FMA is the CPU baseline; supported AVX-512 kernels are selected at +runtime. ### Build and search an IVF index diff --git a/include/rabitqlib/defines.hpp b/include/rabitqlib/defines.hpp index b2d722e3..ef7402ee 100644 --- a/include/rabitqlib/defines.hpp +++ b/include/rabitqlib/defines.hpp @@ -5,8 +5,9 @@ #include #include "rabitqlib/third/Eigen/Dense" +#include "rabitqlib/utils/bitops.hpp" // IWYU pragma: keep; used by BIT_ID -#define BIT_ID(x) (__builtin_popcount((x)-1)) +#define BIT_ID(x) (rabitqlib::bitops::popcount32((x)-1)) #define LOWBIT(x) ((x) & (-(x))) namespace rabitqlib { diff --git a/include/rabitqlib/index/hnsw/hnsw.hpp b/include/rabitqlib/index/hnsw/hnsw.hpp index 9717e96a..15cd342d 100644 --- a/include/rabitqlib/index/hnsw/hnsw.hpp +++ b/include/rabitqlib/index/hnsw/hnsw.hpp @@ -204,7 +204,7 @@ class HierarchicalNSW { )(const float* __restrict__, const float* __restrict__, size_t){nullptr}; void free_memory() { - free(data_level0_memory_); + memory::aligned_deallocate(data_level0_memory_); data_level0_memory_ = nullptr; for (PID i = 0; i < cur_element_count_; i++) { if (element_levels_[i] > 0) { @@ -215,7 +215,7 @@ class HierarchicalNSW { linkLists_ = nullptr; cur_element_count_ = 0; - free(centroids_memory_); + memory::aligned_deallocate(centroids_memory_); centroids_memory_ = nullptr; rotator_.reset(); @@ -829,7 +829,8 @@ inline void HierarchicalNSW::construct( num_cluster_ = cluster_num; const size_t centroids_bytes = num_cluster_ * padded_dim_ * sizeof(float); - centroids_memory_ = reinterpret_cast(malloc(centroids_bytes)); + centroids_memory_ = + static_cast(memory::aligned_allocate_bytes(64, centroids_bytes)); if (centroids_memory_ == nullptr) { throw std::runtime_error("Not enough memory: HNSW failed to allocate centroids"); } diff --git a/include/rabitqlib/index/ivf/initializer.hpp b/include/rabitqlib/index/ivf/initializer.hpp index d61841b1..9a8bfa45 100644 --- a/include/rabitqlib/index/ivf/initializer.hpp +++ b/include/rabitqlib/index/ivf/initializer.hpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -162,14 +163,14 @@ class FlatInitializer : public Initializer { void save(std::ofstream& output, const char*) const override { output.write( reinterpret_cast(centroids_.data()), - static_cast(sizeof(float) * dim_ * num_cluster_) + static_cast(sizeof(float) * dim_ * num_cluster_) ); } void load(std::ifstream& input, const char*) override { input.read( reinterpret_cast(centroids_.data()), - static_cast(sizeof(float) * dim_ * num_cluster_) + static_cast(sizeof(float) * dim_ * num_cluster_) ); } }; @@ -284,7 +285,7 @@ class HNSWInitializer : public Initializer { const float* query, size_t nprobe, std::vector>& candidates ) const override { std::lock_guard lock(search_mutex_); - alg_hnsw_->setEf(std::max(768UL, 2 * nprobe)); + alg_hnsw_->setEf(std::max(size_t{768}, 2 * nprobe)); std::priority_queue> result = alg_hnsw_->searchKnn(query, nprobe); diff --git a/include/rabitqlib/index/ivf/ivf.hpp b/include/rabitqlib/index/ivf/ivf.hpp index b142770f..d8f74be7 100644 --- a/include/rabitqlib/index/ivf/ivf.hpp +++ b/include/rabitqlib/index/ivf/ivf.hpp @@ -281,7 +281,9 @@ inline void IVF::construct( num_threads = std::clamp(num_threads, size_t{1}, rabitqlib::total_threads()); /* Quantize each cluster */ #pragma omp parallel for schedule(dynamic) num_threads(num_threads) - for (size_t i = 0; i < num_cluster_; ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(num_cluster_); + ++index) { + const size_t i = static_cast(index); const float* cur_centroid = centroids + (i * dim_); float* cur_rotated_c = &rotated_centroids[i * padded_dim_]; Cluster& cp = cluster_lst_[i]; @@ -436,7 +438,7 @@ inline void IVF::save(const char* filename) const { } output.write( reinterpret_cast(cluster_sizes.data()), - static_cast(sizeof(size_t) * num_cluster_) + static_cast(sizeof(size_t) * num_cluster_) ); /* Save rotator */ @@ -444,11 +446,15 @@ inline void IVF::save(const char* filename) const { /* Save data */ this->initer_->save(output, filename); - output.write(batch_data(), static_cast(batch_data_bytes(cluster_sizes))); + output.write( + batch_data(), static_cast(batch_data_bytes(cluster_sizes)) + ); if (ex_data_bytes() != 0) { - output.write(ex_data(), static_cast(ex_data_bytes())); + output.write(ex_data(), static_cast(ex_data_bytes())); } - output.write(reinterpret_cast(ids()), static_cast(ids_bytes())); + output.write( + reinterpret_cast(ids()), static_cast(ids_bytes()) + ); output.close(); } @@ -522,7 +528,7 @@ inline void IVF::load(const char* filename) { std::vector cluster_sizes(loaded.num_cluster_, 0); input.read( reinterpret_cast(cluster_sizes.data()), - static_cast(sizeof(size_t) * loaded.num_cluster_) + static_cast(sizeof(size_t) * loaded.num_cluster_) ); size_t total = 0; @@ -550,13 +556,15 @@ inline void IVF::load(const char* filename) { loaded.allocate_memory(cluster_sizes); loaded.initer_->load(input, filename); input.read( - loaded.batch_data(), static_cast(loaded.batch_data_bytes(cluster_sizes)) + loaded.batch_data(), + static_cast(loaded.batch_data_bytes(cluster_sizes)) ); if (loaded.ex_data_bytes() != 0) { - input.read(loaded.ex_data(), static_cast(loaded.ex_data_bytes())); + input.read(loaded.ex_data(), static_cast(loaded.ex_data_bytes())); } input.read( - reinterpret_cast(loaded.ids()), static_cast(loaded.ids_bytes()) + reinterpret_cast(loaded.ids()), + static_cast(loaded.ids_bytes()) ); for (size_t i = 0; i < loaded.num_; ++i) { if (loaded.ids()[i] >= loaded.num_ || diff --git a/include/rabitqlib/index/symqg/detail/pipnn.hpp b/include/rabitqlib/index/symqg/detail/pipnn.hpp index a1257f7b..897700af 100644 --- a/include/rabitqlib/index/symqg/detail/pipnn.hpp +++ b/include/rabitqlib/index/symqg/detail/pipnn.hpp @@ -167,7 +167,10 @@ inline std::vector partition( { auto work = scratch.worker(static_cast(omp_get_thread_num())); #pragma omp for schedule(static) - for (size_t begin = 0; begin < ids.size(); begin += kTileSize) { + for (std::ptrdiff_t offset = 0; + offset < static_cast(ids.size()); + offset += static_cast(kTileSize)) { + const size_t begin = static_cast(offset); assign_tile(begin, work); } } @@ -207,7 +210,9 @@ inline std::vector cluster( std::vector> finished(active.size()); #pragma omp parallel for num_threads(active.front().depth == 0 ? 1 : threads) \ schedule(dynamic) - for (size_t i = 0; i < active.size(); ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(active.size()); + ++index) { + const size_t i = static_cast(index); auto& job = active[i]; if (job.ids.size() <= kLeafSize) { finished[i].push_back(std::move(job.ids)); @@ -306,7 +311,9 @@ inline InitialGraph build_initial_graph( } RowMajorMatrix sketches(count, kHashBits); #pragma omp parallel for num_threads(threads) schedule(static) - for (size_t begin = 0; begin < count; begin += kTileSize) { + for (std::ptrdiff_t offset = 0; offset < static_cast(count); + offset += static_cast(kTileSize)) { + const size_t begin = static_cast(offset); const size_t rows = std::min(kTileSize, count - begin); simd::matrix_product( data + begin * dim, @@ -377,7 +384,9 @@ inline InitialGraph build_initial_graph( { auto work = scratch.worker(static_cast(omp_get_thread_num())); #pragma omp for schedule(dynamic) - for (size_t leaf = 0; leaf < leaves.size(); ++leaf) { + for (std::ptrdiff_t index = 0; index < static_cast(leaves.size()); + ++index) { + const size_t leaf = static_cast(index); const auto& ids = leaves[leaf]; if (ids.size() < 2) { continue; @@ -419,7 +428,9 @@ inline InitialGraph build_initial_graph( std::vector candidates; Bucket selected; #pragma omp for schedule(dynamic) - for (size_t i = 0; i < count; ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(count); + ++index) { + const size_t i = static_cast(index); const auto* row = table.data() + i * capacity; candidates.assign(row, row + sizes[i]); std::sort( @@ -463,7 +474,8 @@ inline InitialGraph build_initial_graph( std::partial_sum(result.offsets.begin(), result.offsets.end(), result.offsets.begin()); result.neighbors.resize(result.offsets.back()); #pragma omp parallel for num_threads(threads) - for (size_t i = 0; i < count; ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(count); ++index) { + const size_t i = static_cast(index); for (size_t j = 0; j < result.offsets[i + 1] - result.offsets[i]; ++j) { result.neighbors[result.offsets[i] + j] = table[i * capacity + j].id; } diff --git a/include/rabitqlib/index/symqg/qg_builder.hpp b/include/rabitqlib/index/symqg/qg_builder.hpp index 42bb6698..55485f13 100644 --- a/include/rabitqlib/index/symqg/qg_builder.hpp +++ b/include/rabitqlib/index/symqg/qg_builder.hpp @@ -127,7 +127,9 @@ class QGBuilder { std::vector ids; ids.reserve(degree_bound_); #pragma omp for schedule(dynamic) - for (size_t i = 0; i < num_nodes_; ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(num_nodes_); + ++index) { + const size_t i = static_cast(index); row.clear(); ids.assign( neighbors.begin() + static_cast(offsets[i]), @@ -182,7 +184,9 @@ class QGBuilder { [[nodiscard]] bool check_dup() const { std::atomic flag(false); #pragma omp parallel for num_threads(num_threads_) - for (size_t i = 0; i < num_nodes_; ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(num_nodes_); + ++index) { + const size_t i = static_cast(index); std::unordered_set edges; for (auto nei : new_neighbors_[i]) { if (edges.find(nei.id) != edges.end()) { @@ -358,7 +362,9 @@ inline void QGBuilder::heuristic_prune( */ inline void QGBuilder::search_new_neighbors(bool refine) { #pragma omp parallel for schedule(dynamic) num_threads(num_threads_) - for (size_t i = 0; i < num_nodes_; ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(num_nodes_); + ++index) { + const size_t i = static_cast(index); PID cur_id = i; auto tid = omp_get_thread_num(); CandidateList candidates; @@ -413,7 +419,9 @@ inline void QGBuilder::add_reverse_edges(bool refine) { // Keep new_neighbors_ read-only while reverse candidates are collected. Mutating a // destination row here races with another worker reading that row as its source. #pragma omp parallel for schedule(dynamic) num_threads(num_threads_) - for (PID data_id = 0; data_id < num_nodes_; ++data_id) { + for (std::ptrdiff_t index = 0; index < static_cast(num_nodes_); + ++index) { + const PID data_id = static_cast(index); for (const auto& nei : new_neighbors_[data_id]) { const PID destination = nei.id; const CandidateList& destination_neighbors = new_neighbors_[destination]; @@ -439,7 +447,9 @@ inline void QGBuilder::add_reverse_edges(bool refine) { } #pragma omp parallel for schedule(dynamic) num_threads(num_threads_) - for (PID data_id = 0; data_id < num_nodes_; ++data_id) { + for (std::ptrdiff_t index = 0; index < static_cast(num_nodes_); + ++index) { + const PID data_id = static_cast(index); CandidateList& tmp_pool = reverse_buffer[data_id]; if (qg_.is_quantized() && !tmp_pool.empty()) { // RaBitQ estimates are directional: score destination -> source afresh. @@ -463,7 +473,9 @@ inline void QGBuilder::random_init() { const PID min_id = 0; const PID max_id = num_nodes_ - 1; #pragma omp parallel for schedule(dynamic) num_threads(num_threads_) - for (size_t i = 0; i < num_nodes_; ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(num_nodes_); + ++index) { + const size_t i = static_cast(index); std::unordered_set neighbor_set; neighbor_set.reserve(degree_bound_); while (neighbor_set.size() < degree_bound_) { @@ -496,7 +508,9 @@ inline void QGBuilder::random_init() { */ inline void QGBuilder::graph_refine() { #pragma omp parallel for schedule(dynamic) num_threads(num_threads_) - for (size_t i = 0; i < num_nodes_; ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(num_nodes_); + ++index) { + const size_t i = static_cast(index); CandidateList& cur_neighbors = new_neighbors_[i]; size_t cur_degree = cur_neighbors.size(); @@ -573,7 +587,9 @@ inline void QGBuilder::iter(bool refine) { // update qg #pragma omp parallel for schedule(dynamic) num_threads(num_threads_) - for (size_t i = 0; i < num_nodes_; ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(num_nodes_); + ++index) { + const size_t i = static_cast(index); qg_.update_qg(i, new_neighbors_[i]); degrees_[i] = new_neighbors_[i].size(); } diff --git a/include/rabitqlib/quantization/rabitq_impl.hpp b/include/rabitqlib/quantization/rabitq_impl.hpp index e6707dbb..d6a2b81d 100644 --- a/include/rabitqlib/quantization/rabitq_impl.hpp +++ b/include/rabitqlib/quantization/rabitq_impl.hpp @@ -251,7 +251,8 @@ inline void one_bit_compact_codes( constexpr size_t kTypeBits = sizeof(TC) * 8; #pragma omp parallel for if (Parallel) - for (size_t i = 0; i < num; ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(num); ++index) { + const size_t i = static_cast(index); T add; T rescale; T error; diff --git a/include/rabitqlib/utils/bitops.hpp b/include/rabitqlib/utils/bitops.hpp new file mode 100644 index 00000000..610df2e2 --- /dev/null +++ b/include/rabitqlib/utils/bitops.hpp @@ -0,0 +1,44 @@ +#pragma once + +#include + +#if defined(_MSC_VER) +#include +#endif + +namespace rabitqlib::bitops { + +inline unsigned popcount32(uint32_t value) { +#if defined(_MSC_VER) + value -= (value >> 1) & 0x55555555U; + value = (value & 0x33333333U) + ((value >> 2) & 0x33333333U); + return ((value + (value >> 4)) & 0x0F0F0F0FU) * 0x01010101U >> 24; +#else + return static_cast(__builtin_popcount(value)); +#endif +} + +inline unsigned popcount64(uint64_t value) { +#if defined(_MSC_VER) + value -= (value >> 1) & 0x5555555555555555ULL; + value = (value & 0x3333333333333333ULL) + ((value >> 2) & 0x3333333333333333ULL); + return static_cast( + (((value + (value >> 4)) & 0x0F0F0F0F0F0F0F0FULL) * 0x0101010101010101ULL) >> 56 + ); +#else + return static_cast(__builtin_popcountll(value)); +#endif +} + +// Callers pass nonzero masks. +inline unsigned countr_zero32(uint32_t value) { +#if defined(_MSC_VER) + unsigned long index = 0; + _BitScanForward(&index, value); + return static_cast(index); +#else + return static_cast(__builtin_ctz(value)); +#endif +} + +} // namespace rabitqlib::bitops diff --git a/include/rabitqlib/utils/memory.hpp b/include/rabitqlib/utils/memory.hpp index af11ee6f..1c3c6b84 100644 --- a/include/rabitqlib/utils/memory.hpp +++ b/include/rabitqlib/utils/memory.hpp @@ -1,9 +1,14 @@ #pragma once -#if defined(__x86_64__) || defined(__i386__) +#if defined(__x86_64__) || defined(__i386__) || defined(_M_X64) || defined(_M_IX86) #include #endif +#if defined(__linux__) #include +#endif +#if defined(_MSC_VER) +#include +#endif #include #include @@ -12,8 +17,30 @@ #include namespace rabitqlib::memory { -#define PORTABLE_ALIGN32 __attribute__((aligned(32))) -#define PORTABLE_ALIGN64 __attribute__((aligned(64))) +inline void* aligned_allocate_bytes(size_t alignment, size_t size) { +#if defined(_MSC_VER) + return _aligned_malloc(size, alignment); +#else + return std::aligned_alloc(alignment, size); +#endif +} + +inline void aligned_deallocate(void* ptr) noexcept { +#if defined(_MSC_VER) + _aligned_free(ptr); +#else + std::free(ptr); +#endif +} + +inline void advise_huge_pages(void* ptr, size_t size) { +#if defined(__linux__) + madvise(ptr, size, MADV_HUGEPAGE); +#else + (void)ptr; + (void)size; +#endif +} template class AlignedAllocator { @@ -72,17 +99,17 @@ class AlignedAllocator { } const auto nbytes = aligned_size(n * sizeof(T)); - auto* ptr = std::aligned_alloc(Alignment, nbytes); + auto* ptr = aligned_allocate_bytes(Alignment, nbytes); if (ptr == nullptr) { throw std::bad_alloc(); } if (HugePage) { - madvise(ptr, nbytes, MADV_HUGEPAGE); + advise_huge_pages(ptr, nbytes); } return reinterpret_cast(ptr); } - void deallocate(T* ptr, [[maybe_unused]] std::size_t n) { std::free(ptr); } + void deallocate(T* ptr, [[maybe_unused]] std::size_t n) { aligned_deallocate(ptr); } }; template @@ -123,12 +150,12 @@ inline T* align_allocate(size_t nbytes) { throw std::bad_array_new_length(); } const size_t size = nbytes + padding; - void* ptr = std::aligned_alloc(Alignment, size); + void* ptr = aligned_allocate_bytes(Alignment, size); if (ptr == nullptr) { throw std::bad_alloc(); } if (HugePage) { - madvise(ptr, size, MADV_HUGEPAGE); + advise_huge_pages(ptr, size); } return static_cast(ptr); } @@ -142,15 +169,15 @@ inline T* huge_page_allocate(size_t nbytes) { } static inline void prefetch_l1(const void* addr) { -#if defined(__SSE2__) - _mm_prefetch(addr, _MM_HINT_T0); +#if defined(__SSE2__) || defined(_M_X64) || defined(_M_IX86) + _mm_prefetch(static_cast(addr), _MM_HINT_T0); #else __builtin_prefetch(addr, 0, 3); #endif } static inline void prefetch_l2(const void* addr) { -#if defined(__SSE2__) +#if defined(__SSE2__) || defined(_M_X64) || defined(_M_IX86) _mm_prefetch((const char*)addr, _MM_HINT_T1); #else __builtin_prefetch(addr, 0, 2); diff --git a/include/rabitqlib/utils/rotator.hpp b/include/rabitqlib/utils/rotator.hpp index 18bbea96..ab256e39 100644 --- a/include/rabitqlib/utils/rotator.hpp +++ b/include/rabitqlib/utils/rotator.hpp @@ -6,6 +6,7 @@ #include #include #include +#include #include #include #include @@ -88,7 +89,7 @@ class MatrixRotator : public Rotator { void load(std::ifstream& input) override { input.read( reinterpret_cast(rand_mat_.data()), - static_cast(sizeof(T) * this->dim_ * this->padded_dim_) + static_cast(sizeof(T) * this->dim_ * this->padded_dim_) ); } @@ -169,14 +170,14 @@ class FhtKacRotator : public Rotator { void load(std::ifstream& input) override { input.read( reinterpret_cast(flip_.data()), - static_cast(sizeof(uint8_t) * flip_.size()) + static_cast(sizeof(uint8_t) * flip_.size()) ); } void save(std::ofstream& output) const override { output.write( reinterpret_cast(flip_.data()), - static_cast(sizeof(uint8_t) * flip_.size()) + static_cast(sizeof(uint8_t) * flip_.size()) ); } diff --git a/include/rabitqlib/utils/space.hpp b/include/rabitqlib/utils/space.hpp index 9c8549b1..80da7b6a 100644 --- a/include/rabitqlib/utils/space.hpp +++ b/include/rabitqlib/utils/space.hpp @@ -15,6 +15,7 @@ #include "rabitqlib/defines.hpp" #include "rabitqlib/simd/space_dispatch.hpp" +#include "rabitqlib/utils/bitops.hpp" #include "rabitqlib/utils/tools.hpp" namespace rabitqlib { @@ -201,7 +202,9 @@ inline std::vector compute_centroid( std::vector> all_results(thread_count, std::vector(dim, 0)); #pragma omp parallel for schedule(dynamic) num_threads(thread_count) - for (size_t i = 0; i < num_points; ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(num_points); + ++index) { + const size_t i = static_cast(index); auto tid = omp_get_thread_num(); std::vector& cur_results = all_results[tid]; const T* cur_data = data + (dim * i); @@ -245,7 +248,9 @@ inline PID exact_nn( std::vector> best_entries(thread_count); #pragma omp parallel for schedule(dynamic) num_threads(thread_count) - for (size_t i = 0; i < num_points; ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(num_points); + ++index) { + const size_t i = static_cast(index); auto tid = omp_get_thread_num(); AnnCandidate& cur_entry = best_entries[tid]; const T* cur_data = data + (dim * i); @@ -357,11 +362,11 @@ inline float ip_x0_q( for (size_t i = 0; i < num_blk; ++i) { uint64_t x = *static_cast(it_data); - ppc += __builtin_popcountll(x); + ppc += bitops::popcount64(x); for (size_t j = 0; j < b_query; ++j) { uint64_t y = *static_cast(it_query); - ip += (__builtin_popcountll(x & y) << j); + ip += (bitops::popcount64(x & y) << j); it_query++; } it_data++; @@ -374,7 +379,7 @@ static inline uint32_t ip_bin_bin(const uint64_t* q, const uint64_t* d, size_t p uint64_t ret = 0; size_t iter = padded_dim / 64; for (size_t i = 0; i < iter; ++i) { - ret += __builtin_popcountll((*d) & (*q)); + ret += bitops::popcount64((*d) & (*q)); q++; d++; } @@ -396,7 +401,7 @@ inline uint32_t ip_byte_bin( inline size_t popcount(const uint64_t* __restrict__ d, size_t length) { size_t ret = 0; for (size_t i = 0; i < length / 64; ++i) { - ret += __builtin_popcountll((*d)); + ret += bitops::popcount64((*d)); ++d; } return ret; diff --git a/include/rabitqlib/utils/warmup_space.hpp b/include/rabitqlib/utils/warmup_space.hpp index 6f65beaa..9bbe73be 100644 --- a/include/rabitqlib/utils/warmup_space.hpp +++ b/include/rabitqlib/utils/warmup_space.hpp @@ -3,6 +3,8 @@ #include #include +#include "rabitqlib/utils/bitops.hpp" + namespace rabitqlib { float warmup_ip_x0_q_512( @@ -41,11 +43,11 @@ inline float warmup_ip_x0_q( for (size_t i = 0; i < num_blk; ++i) { uint64_t x = *static_cast(it_data); - ppc += __builtin_popcountll(x); + ppc += bitops::popcount64(x); for (size_t j = 0; j < b_query; ++j) { uint64_t y = *static_cast(it_query); - ip += (__builtin_popcountll(x & y) << j); + ip += (bitops::popcount64(x & y) << j); it_query++; } it_data++; @@ -74,11 +76,11 @@ inline float warmup_ip_x0_q( for (size_t i = 0; i < num_blk; ++i) { uint64_t x = *static_cast(it_data); - ppc += __builtin_popcountll(x); + ppc += rabitqlib::bitops::popcount64(x); for (size_t j = 0; j < b_query; ++j) { uint64_t y = *static_cast(it_query); - ip += (__builtin_popcountll(x & y) << j); + ip += (rabitqlib::bitops::popcount64(x & y) << j); it_query++; } it_data++; diff --git a/pyproject.toml b/pyproject.toml index eb811b74..f4cdd40c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,12 +40,16 @@ cmake.args = [ ] [tool.cibuildwheel] -build = "cp311-manylinux_x86_64 cp312-manylinux_x86_64 cp313-manylinux_x86_64 cp314-manylinux_x86_64" +build = "cp311-manylinux_x86_64 cp312-manylinux_x86_64 cp313-manylinux_x86_64 cp314-manylinux_x86_64 cp311-win_amd64 cp312-win_amd64 cp313-win_amd64 cp314-win_amd64" build-verbosity = 1 environment = { CMAKE_ARGS = "-DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF" } test-requires = "pytest" test-command = "pytest {project}/tests/python --tb=short -q" +[tool.cibuildwheel.windows] +before-build = "python -m pip install delvewheel" +repair-wheel-command = "delvewheel repair -w {dest_dir} {wheel}" + [tool.pytest.ini_options] testpaths = ["tests/python"] diff --git a/python_bindings/hnsw_bindings.cpp b/python_bindings/hnsw_bindings.cpp index 32b6868d..559237dd 100644 --- a/python_bindings/hnsw_bindings.cpp +++ b/python_bindings/hnsw_bindings.cpp @@ -1,13 +1,20 @@ -#include +#include +#include +#include +#include +#include #include #include #include #include +#include #include +#include #include #include "bindings_common.hpp" +#include "rabitqlib/defines.hpp" #include "rabitqlib/index/hnsw/hnsw.hpp" namespace py = pybind11; @@ -71,7 +78,7 @@ class HnswIndex { if (num_clusters == 0) { throw std::invalid_argument("at least one centroid is required"); } - for (ssize_t i = 0; i < cluster_ids_array.shape(0); ++i) { + for (py::ssize_t i = 0; i < cluster_ids_array.shape(0); ++i) { if (cluster_ids_array.data()[i] >= num_clusters) { throw std::invalid_argument("cluster_ids contains an out-of-range value"); } @@ -115,8 +122,8 @@ class HnswIndex { throw std::invalid_argument("k must be between 1 and max_elements"); } - const auto shape = std::vector{ - static_cast(query_array.shape(0)), static_cast(k)}; + const auto shape = std::vector{ + static_cast(query_array.shape(0)), static_cast(k)}; auto ids = py::array_t(shape); auto dists = py::array_t(shape); std::fill(ids.mutable_data(), ids.mutable_data() + ids.size(), rabitqlib::kPidMax); @@ -136,10 +143,10 @@ class HnswIndex { num_threads ); - for (ssize_t i = 0; i < static_cast(results.size()); ++i) { - for (ssize_t j = 0; j < static_cast(std::min( - k, results[static_cast(i)].size() - )); + for (py::ssize_t i = 0; i < static_cast(results.size()); ++i) { + for (py::ssize_t j = 0; j < static_cast(std::min( + k, results[static_cast(i)].size() + )); ++j) { ids_buf(i, j) = results[static_cast(i)][static_cast(j)].second; diff --git a/python_bindings/ivf_bindings.cpp b/python_bindings/ivf_bindings.cpp index 9ab8f91e..7442cb62 100644 --- a/python_bindings/ivf_bindings.cpp +++ b/python_bindings/ivf_bindings.cpp @@ -1,9 +1,9 @@ #include +#include #include #include #include #include // IWYU pragma: keep; registers std::optional casters -#include #include #include @@ -113,8 +113,8 @@ class IvfIndex { } const size_t nq = static_cast(query_array.shape(0)); - const auto shape = - std::vector{static_cast(nq), static_cast(k)}; + const auto shape = std::vector{ + static_cast(nq), static_cast(k)}; auto ids = py::array_t(shape); auto dists = py::array_t(shape); auto* ids_data = ids.mutable_data(); diff --git a/python_bindings/symqg_bindings.cpp b/python_bindings/symqg_bindings.cpp index 48ce4484..edd66e5c 100644 --- a/python_bindings/symqg_bindings.cpp +++ b/python_bindings/symqg_bindings.cpp @@ -1,8 +1,8 @@ #include +#include #include #include #include -#include #include #include @@ -112,8 +112,8 @@ class SymqgIndex { index_->set_ef(ef); const size_t nq = static_cast(query_array.shape(0)); - const auto shape = - std::vector{static_cast(nq), static_cast(k)}; + const auto shape = std::vector{ + static_cast(nq), static_cast(k)}; auto ids = py::array_t(shape); auto dists = py::array_t(shape); auto* ids_data = ids.mutable_data(); @@ -133,7 +133,9 @@ class SymqgIndex { std::atomic failed{false}; std::exception_ptr error; #pragma omp parallel for num_threads(workers) if (workers > 1) schedule(dynamic) - for (size_t idx = 0; idx < nq; ++idx) { + for (std::ptrdiff_t query_index = 0; query_index < static_cast(nq); + ++query_index) { + const size_t idx = static_cast(query_index); if (failed.load(std::memory_order_relaxed)) { continue; } diff --git a/scripts/generate-fht-masm.py b/scripts/generate-fht-masm.py new file mode 100644 index 00000000..dc64cb02 --- /dev/null +++ b/scripts/generate-fht-masm.py @@ -0,0 +1,165 @@ +#!/usr/bin/env python3 +"""Regenerate the Windows MASM FHT kernels from the imported FFHT header. + +Requires Clang 22. The checked-in assembly is built with MSVC; Clang is only +needed when regenerating it. Keep the AVX instruction sequences in sync with +include/rabitqlib/utils/fht_avx.hpp. +""" + +import argparse +import re +import subprocess +import tempfile +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +HEADER = ROOT / "include/rabitqlib/utils/fht_avx.hpp" +OUTPUT = ROOT / "src/simd/fht_avx2_masm.asm" +HOT_LOG_SIZES = range(6, 12) +ALL_HELPERS = [(kind, size) for kind in ("float", "double") for size in range(1, 31)] +OTHER_HELPERS = [ + (kind, size) + for kind, size in ALL_HELPERS + if kind != "float" or size not in HOT_LOG_SIZES +] + + +def to_intel(match): + instruction, operands = match.groups() + operands = [ + re.sub(r"\((%\d+)\)", r"[\1]", operand).replace("%%ymm", "ymm").replace("$", "") + for operand in operands.split(", ") + ] + return '"' + instruction + " " + ", ".join(reversed(operands)) + r"\n" + '"' + + +def build_clang_source(directory, helpers, name): + source = HEADER.read_text() + source = re.sub(r'"(v\w+) (.*?)\\n"', to_intel, source) + header = directory / "fht_avx_intel.hpp" + header.write_text(source) + wrapper = directory / f"fht_windows_{name}.cpp" + wrapper.write_text( + f'#include "{header}"\n' + + "".join( + f'extern "C" void rabitq_fht_avx_{kind}_{size}({kind}* values) ' + f"{{ helper_{kind}_{size}(values); }}\n" + for kind, size in helpers + ) + ) + return wrapper + + +def to_masm(source): + functions = [] + current = None + for line in source.splitlines(): + if "# -- Begin function " in line: + current = [] + continue + if "# -- End function" in line: + functions.append(current) + current = None + continue + if current is not None: + current.append(line.split("#", 1)[0].rstrip()) + + internal = {} + for function in functions: + for line in function: + for name in re.findall(r'"(\?helper_[^\"]+)"', line): + if name not in internal: + internal[name] = "fht_" + re.match( + r"\?([A-Za-z_0-9]+)@@", name + ).group(1) + + result = [] + for function in functions: + started = False + name = None + framed = any(line.startswith(".seh_proc") for line in function) + for line in function: + for old, new in internal.items(): + line = line.replace(f'"{old}"', new) + line = line.strip() + if not line or line.startswith((".globl", ".p2align", ".section")): + continue + if line.endswith(":") and not started: + name = line[:-1] + result.append(f"{name} PROC" + (" FRAME" if framed else "")) + started = True + elif line.startswith(".seh_proc") or line.startswith(".seh_endproc"): + continue + elif line.startswith(".seh_pushreg"): + result.append(" .pushreg " + line.split(None, 1)[1]) + elif line.startswith(".seh_stackalloc"): + result.append(" .allocstack " + line.split(None, 1)[1]) + elif line.startswith(".seh_savexmm"): + result.append(" .savexmm128 " + line.split(None, 1)[1]) + elif line == ".seh_endprologue": + result.append(" .endprolog") + elif line.startswith(".seh_") or line in ("#APP", "#NO_APP"): + continue + elif line.startswith(".LBB") and line.endswith(":"): + result.append(line[1:]) + elif line.startswith("."): + raise ValueError(f"Unrecognized assembler directive: {line}") + else: + # Clang spells 64-bit immediate moves "movabs" in Intel syntax; + # MASM uses "mov" for the same instruction. + line = re.sub(r"^movabs(?=\s)", "mov", line) + result.append(" " + line.replace(".LBB", "LBB")) + if not started: + raise ValueError("Function label missing") + result.append(f"{name} ENDP") + result.append("") + return result + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--clang", default="clang++-22") + args = parser.parse_args() + with tempfile.TemporaryDirectory() as temporary: + directory = Path(temporary) + body = [] + for name, helpers, optimization in ( + ("hot", [("float", size) for size in HOT_LOG_SIZES], "-O3"), + ("other", OTHER_HELPERS, "-O0"), + ): + wrapper = build_clang_source(directory, helpers, name) + assembly = directory / f"fht_windows_{name}.s" + subprocess.run( + [ + args.clang, + "--target=x86_64-pc-windows-msvc", + "-mavx", + optimization, + "-S", + "-masm=intel", + str(wrapper), + "-o", + str(assembly), + ], + check=True, + ) + body.extend(to_masm(assembly.read_text())) + license_lines = HEADER.read_text().splitlines()[:23] + output = ["; Generated by scripts/generate-fht-masm.py from fht_avx.hpp."] + output.extend( + "; " + line.lstrip("/ ") if line.strip() else ";" for line in license_lines + ) + output.append("") + output.append( + "; The six float sizes used by RaBitQ are optimized; other FFHT helpers" + ) + output.append("; retain the original AVX blocks and loop structure.") + output.extend(f"PUBLIC rabitq_fht_avx_{kind}_{size}" for kind, size in ALL_HELPERS) + output.extend(["", ".code", ""]) + output.extend(body) + output.append("END") + OUTPUT.write_text("\n".join(output) + "\n") + + +if __name__ == "__main__": + main() diff --git a/src/index/qg.cpp b/src/index/qg.cpp index 1dbd3c66..59dcfcdb 100644 --- a/src/index/qg.cpp +++ b/src/index/qg.cpp @@ -22,6 +22,7 @@ #include "rabitqlib/quantization/pack_excode.hpp" #include "rabitqlib/quantization/rabitq.hpp" #include "rabitqlib/simd/estimator_dispatch.hpp" +#include "rabitqlib/utils/bitops.hpp" #include "rabitqlib/utils/buffer.hpp" #include "rabitqlib/utils/io.hpp" #include "rabitqlib/utils/memory.hpp" @@ -205,7 +206,9 @@ void QuantizedGraph::copy_vectors(const float* data, size_t num_threads) std::vector rotated_data(padded_dim_); std::vector quantized_data(padded_dim_); #pragma omp for schedule(dynamic) - for (size_t i = 0; i < num_points_; ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(num_points_); + ++index) { + const size_t i = static_cast(index); rotator_->rotate(data + (dim_ * i), rotated_data.data()); ExDataMap output( get_quantized_vector(i), padded_dim_, quantization_bits_ @@ -234,7 +237,9 @@ void QuantizedGraph::copy_vectors(const float* data, size_t num_threads) return; } #pragma omp parallel for schedule(dynamic) num_threads(thread_count) - for (size_t i = 0; i < num_points_; ++i) { + for (std::ptrdiff_t index = 0; index < static_cast(num_points_); + ++index) { + const size_t i = static_cast(index); const float* src = data + (dim_ * i); float* dst = get_vector(i); std::copy(src, src + dim_, dst); @@ -548,7 +553,7 @@ void QuantizedGraph::scan_neighbors( } while (candidate_mask != 0) { - const auto lane = static_cast(__builtin_ctz(candidate_mask)); + const auto lane = static_cast(bitops::countr_zero32(candidate_mask)); candidate_mask &= candidate_mask - 1; const size_t i = begin + lane; PID cur_neighbor = neighbors[i]; diff --git a/src/simd/dispatch.cpp b/src/simd/dispatch.cpp index f517672f..8927f2db 100644 --- a/src/simd/dispatch.cpp +++ b/src/simd/dispatch.cpp @@ -254,7 +254,9 @@ static float missing_mask_ip_x0_q(const float*, const uint8_t*, size_t) { missing_feature("mask ip x0 q"); } -static void missing_fastscan_accumulate(const uint8_t*, const uint8_t*, int32_t*, size_t) { +static void missing_fastscan_accumulate( + const uint8_t* __restrict__, const uint8_t* __restrict__, int32_t* __restrict__, size_t +) { missing_feature("fastscan accumulate"); } @@ -263,7 +265,7 @@ static void missing_fastscan_transfer_lut_hacc(const uint16_t*, size_t, uint8_t* } static void missing_fastscan_accumulate_hacc( - const uint8_t*, const uint8_t*, int32_t*, size_t + const uint8_t* __restrict__, const uint8_t* __restrict__, int32_t*, size_t ) { missing_feature("fastscan high-accuracy accumulate"); } diff --git a/src/simd/fht_avx2_masm.asm b/src/simd/fht_avx2_masm.asm new file mode 100644 index 00000000..cf2b5705 --- /dev/null +++ b/src/simd/fht_avx2_masm.asm @@ -0,0 +1,53182 @@ +; Generated by scripts/generate-fht-masm.py from fht_avx.hpp. +; https://github.com/FALCONN-LIB/FFHT +; +; The MIT License (MIT) +; +; Copyright (c) 2015 Alexandr Andoni, Piotr Indyk, Thijs Laarhoven, +; Ilya Razenshteyn, Ludwig Schmidt +; +; Permission is hereby granted, free of charge, to any person obtaining a copy +; of this software and associated documentation files (the "Software"), to deal +; in the Software without restriction, including without limitation the rights +; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +; copies of the Software, and to permit persons to whom the Software is +; furnished to do so, subject to the following conditions: +; +; The above copyright notice and this permission notice shall be included in +; all copies or substantial portions of the Software. +; +; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + +; The six float sizes used by RaBitQ are optimized; other FFHT helpers +; retain the original AVX blocks and loop structure. +PUBLIC rabitq_fht_avx_float_1 +PUBLIC rabitq_fht_avx_float_2 +PUBLIC rabitq_fht_avx_float_3 +PUBLIC rabitq_fht_avx_float_4 +PUBLIC rabitq_fht_avx_float_5 +PUBLIC rabitq_fht_avx_float_6 +PUBLIC rabitq_fht_avx_float_7 +PUBLIC rabitq_fht_avx_float_8 +PUBLIC rabitq_fht_avx_float_9 +PUBLIC rabitq_fht_avx_float_10 +PUBLIC rabitq_fht_avx_float_11 +PUBLIC rabitq_fht_avx_float_12 +PUBLIC rabitq_fht_avx_float_13 +PUBLIC rabitq_fht_avx_float_14 +PUBLIC rabitq_fht_avx_float_15 +PUBLIC rabitq_fht_avx_float_16 +PUBLIC rabitq_fht_avx_float_17 +PUBLIC rabitq_fht_avx_float_18 +PUBLIC rabitq_fht_avx_float_19 +PUBLIC rabitq_fht_avx_float_20 +PUBLIC rabitq_fht_avx_float_21 +PUBLIC rabitq_fht_avx_float_22 +PUBLIC rabitq_fht_avx_float_23 +PUBLIC rabitq_fht_avx_float_24 +PUBLIC rabitq_fht_avx_float_25 +PUBLIC rabitq_fht_avx_float_26 +PUBLIC rabitq_fht_avx_float_27 +PUBLIC rabitq_fht_avx_float_28 +PUBLIC rabitq_fht_avx_float_29 +PUBLIC rabitq_fht_avx_float_30 +PUBLIC rabitq_fht_avx_double_1 +PUBLIC rabitq_fht_avx_double_2 +PUBLIC rabitq_fht_avx_double_3 +PUBLIC rabitq_fht_avx_double_4 +PUBLIC rabitq_fht_avx_double_5 +PUBLIC rabitq_fht_avx_double_6 +PUBLIC rabitq_fht_avx_double_7 +PUBLIC rabitq_fht_avx_double_8 +PUBLIC rabitq_fht_avx_double_9 +PUBLIC rabitq_fht_avx_double_10 +PUBLIC rabitq_fht_avx_double_11 +PUBLIC rabitq_fht_avx_double_12 +PUBLIC rabitq_fht_avx_double_13 +PUBLIC rabitq_fht_avx_double_14 +PUBLIC rabitq_fht_avx_double_15 +PUBLIC rabitq_fht_avx_double_16 +PUBLIC rabitq_fht_avx_double_17 +PUBLIC rabitq_fht_avx_double_18 +PUBLIC rabitq_fht_avx_double_19 +PUBLIC rabitq_fht_avx_double_20 +PUBLIC rabitq_fht_avx_double_21 +PUBLIC rabitq_fht_avx_double_22 +PUBLIC rabitq_fht_avx_double_23 +PUBLIC rabitq_fht_avx_double_24 +PUBLIC rabitq_fht_avx_double_25 +PUBLIC rabitq_fht_avx_double_26 +PUBLIC rabitq_fht_avx_double_27 +PUBLIC rabitq_fht_avx_double_28 +PUBLIC rabitq_fht_avx_double_29 +PUBLIC rabitq_fht_avx_double_30 + +.code + +rabitq_fht_avx_float_6 PROC FRAME + push rsi + .pushreg rsi + sub rsp, 160 + .allocstack 160 + vmovaps xmmword ptr [rsp + 144], xmm15 + .savexmm128 xmm15, 144 + vmovaps xmmword ptr [rsp + 128], xmm14 + .savexmm128 xmm14, 128 + vmovaps xmmword ptr [rsp + 112], xmm13 + .savexmm128 xmm13, 112 + vmovaps xmmword ptr [rsp + 96], xmm12 + .savexmm128 xmm12, 96 + vmovaps xmmword ptr [rsp + 80], xmm11 + .savexmm128 xmm11, 80 + vmovaps xmmword ptr [rsp + 64], xmm10 + .savexmm128 xmm10, 64 + vmovaps xmmword ptr [rsp + 48], xmm9 + .savexmm128 xmm9, 48 + vmovaps xmmword ptr [rsp + 32], xmm8 + .savexmm128 xmm8, 32 + vmovaps xmmword ptr [rsp + 16], xmm7 + .savexmm128 xmm7, 16 + vmovaps xmmword ptr [rsp], xmm6 + .savexmm128 xmm6, 0 + .endprolog + lea rax, [rcx + 32] + lea rdx, [rcx + 64] + lea r8, [rcx + 96] + lea r9, [rcx + 128] + lea r10, [rcx + 160] + lea r11, [rcx + 192] + lea rsi, [rcx + 224] + vmovups ymm0, ymmword ptr [rcx] + vmovups ymm1, ymmword ptr [rax] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rcx], ymm8 + vmovups ymmword ptr [rax], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + vmovaps xmm6, xmmword ptr [rsp] + vmovaps xmm7, xmmword ptr [rsp + 16] + vmovaps xmm8, xmmword ptr [rsp + 32] + vmovaps xmm9, xmmword ptr [rsp + 48] + vmovaps xmm10, xmmword ptr [rsp + 64] + vmovaps xmm11, xmmword ptr [rsp + 80] + vmovaps xmm12, xmmword ptr [rsp + 96] + vmovaps xmm13, xmmword ptr [rsp + 112] + vmovaps xmm14, xmmword ptr [rsp + 128] + vmovaps xmm15, xmmword ptr [rsp + 144] + add rsp, 160 + pop rsi + vzeroupper + ret +rabitq_fht_avx_float_6 ENDP + +rabitq_fht_avx_float_7 PROC FRAME + push r15 + .pushreg r15 + push r14 + .pushreg r14 + push r13 + .pushreg r13 + push r12 + .pushreg r12 + push rsi + .pushreg rsi + push rdi + .pushreg rdi + push rbp + .pushreg rbp + push rbx + .pushreg rbx + sub rsp, 184 + .allocstack 184 + vmovaps xmmword ptr [rsp + 160], xmm15 + .savexmm128 xmm15, 160 + vmovaps xmmword ptr [rsp + 144], xmm14 + .savexmm128 xmm14, 144 + vmovaps xmmword ptr [rsp + 128], xmm13 + .savexmm128 xmm13, 128 + vmovaps xmmword ptr [rsp + 112], xmm12 + .savexmm128 xmm12, 112 + vmovaps xmmword ptr [rsp + 96], xmm11 + .savexmm128 xmm11, 96 + vmovaps xmmword ptr [rsp + 80], xmm10 + .savexmm128 xmm10, 80 + vmovaps xmmword ptr [rsp + 64], xmm9 + .savexmm128 xmm9, 64 + vmovaps xmmword ptr [rsp + 48], xmm8 + .savexmm128 xmm8, 48 + vmovaps xmmword ptr [rsp + 32], xmm7 + .savexmm128 xmm7, 32 + vmovaps xmmword ptr [rsp + 16], xmm6 + .savexmm128 xmm6, 16 + .endprolog + lea rax, [rcx + 32] + mov qword ptr [rsp + 8], rax + lea rdx, [rcx + 64] + lea r8, [rcx + 96] + lea r9, [rcx + 128] + lea r10, [rcx + 160] + lea r11, [rcx + 192] + lea rsi, [rcx + 224] + mov rdi, rcx + vmovups ymm0, ymmword ptr [rcx] + vmovups ymm1, ymmword ptr [rax] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rcx], ymm8 + vmovups ymmword ptr [rax], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + lea rbx, [rcx + 256] + lea r14, [rcx + 288] + lea r15, [rcx + 320] + lea r12, [rcx + 352] + lea r13, [rcx + 384] + lea rbp, [rcx + 416] + lea rax, [rcx + 448] + add rcx, 480 + vmovups ymm0, ymmword ptr [rbx] + vmovups ymm1, ymmword ptr [r14] + vmovups ymm2, ymmword ptr [r15] + vmovups ymm3, ymmword ptr [r12] + vmovups ymm4, ymmword ptr [r13] + vmovups ymm5, ymmword ptr [rbp] + vmovups ymm6, ymmword ptr [rax] + vmovups ymm7, ymmword ptr [rcx] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rbx], ymm8 + vmovups ymmword ptr [r14], ymm9 + vmovups ymmword ptr [r15], ymm10 + vmovups ymmword ptr [r12], ymm11 + vmovups ymmword ptr [r13], ymm12 + vmovups ymmword ptr [rbp], ymm13 + vmovups ymmword ptr [rax], ymm14 + vmovups ymmword ptr [rcx], ymm15 + vmovups ymm0, ymmword ptr [rdi] + vmovups ymm1, ymmword ptr [rbx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rdi], ymm8 + vmovups ymmword ptr [rbx], ymm9 + mov rdi, qword ptr [rsp + 8] + vmovups ymm0, ymmword ptr [rdi] + vmovups ymm1, ymmword ptr [r14] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rdi], ymm8 + vmovups ymmword ptr [r14], ymm9 + vmovups ymm0, ymmword ptr [rdx] + vmovups ymm1, ymmword ptr [r15] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rdx], ymm8 + vmovups ymmword ptr [r15], ymm9 + vmovups ymm0, ymmword ptr [r8] + vmovups ymm1, ymmword ptr [r12] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [r8], ymm8 + vmovups ymmword ptr [r12], ymm9 + vmovups ymm0, ymmword ptr [r9] + vmovups ymm1, ymmword ptr [r13] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [r9], ymm8 + vmovups ymmword ptr [r13], ymm9 + vmovups ymm0, ymmword ptr [r10] + vmovups ymm1, ymmword ptr [rbp] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [r10], ymm8 + vmovups ymmword ptr [rbp], ymm9 + vmovups ymm0, ymmword ptr [r11] + vmovups ymm1, ymmword ptr [rax] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [r11], ymm8 + vmovups ymmword ptr [rax], ymm9 + vmovups ymm0, ymmword ptr [rsi] + vmovups ymm1, ymmword ptr [rcx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rsi], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovaps xmm6, xmmword ptr [rsp + 16] + vmovaps xmm7, xmmword ptr [rsp + 32] + vmovaps xmm8, xmmword ptr [rsp + 48] + vmovaps xmm9, xmmword ptr [rsp + 64] + vmovaps xmm10, xmmword ptr [rsp + 80] + vmovaps xmm11, xmmword ptr [rsp + 96] + vmovaps xmm12, xmmword ptr [rsp + 112] + vmovaps xmm13, xmmword ptr [rsp + 128] + vmovaps xmm14, xmmword ptr [rsp + 144] + vmovaps xmm15, xmmword ptr [rsp + 160] + add rsp, 184 + pop rbx + pop rbp + pop rdi + pop rsi + pop r12 + pop r13 + pop r14 + pop r15 + vzeroupper + ret +rabitq_fht_avx_float_7 ENDP + +rabitq_fht_avx_float_8 PROC FRAME + push r15 + .pushreg r15 + push r14 + .pushreg r14 + push r13 + .pushreg r13 + push r12 + .pushreg r12 + push rsi + .pushreg rsi + push rdi + .pushreg rdi + push rbp + .pushreg rbp + push rbx + .pushreg rbx + sub rsp, 328 + .allocstack 328 + vmovaps xmmword ptr [rsp + 304], xmm15 + .savexmm128 xmm15, 304 + vmovaps xmmword ptr [rsp + 288], xmm14 + .savexmm128 xmm14, 288 + vmovaps xmmword ptr [rsp + 272], xmm13 + .savexmm128 xmm13, 272 + vmovaps xmmword ptr [rsp + 256], xmm12 + .savexmm128 xmm12, 256 + vmovaps xmmword ptr [rsp + 240], xmm11 + .savexmm128 xmm11, 240 + vmovaps xmmword ptr [rsp + 224], xmm10 + .savexmm128 xmm10, 224 + vmovaps xmmword ptr [rsp + 208], xmm9 + .savexmm128 xmm9, 208 + vmovaps xmmword ptr [rsp + 192], xmm8 + .savexmm128 xmm8, 192 + vmovaps xmmword ptr [rsp + 176], xmm7 + .savexmm128 xmm7, 176 + vmovaps xmmword ptr [rsp + 160], xmm6 + .savexmm128 xmm6, 160 + .endprolog + lea rax, [rcx + 32] + mov qword ptr [rsp + 104], rax + lea rdx, [rcx + 64] + mov qword ptr [rsp + 112], rdx + lea r8, [rcx + 96] + mov qword ptr [rsp + 120], r8 + lea r9, [rcx + 128] + mov qword ptr [rsp + 128], r9 + lea r10, [rcx + 160] + mov qword ptr [rsp + 136], r10 + lea r11, [rcx + 192] + mov qword ptr [rsp + 144], r11 + lea rsi, [rcx + 224] + mov qword ptr [rsp + 152], rsi + mov qword ptr [rsp + 96], rcx + vmovups ymm0, ymmword ptr [rcx] + vmovups ymm1, ymmword ptr [rax] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rcx], ymm8 + vmovups ymmword ptr [rax], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + lea rax, [rcx + 256] + mov qword ptr [rsp + 32], rax + lea rdx, [rcx + 288] + mov qword ptr [rsp + 40], rdx + lea r8, [rcx + 320] + mov qword ptr [rsp + 48], r8 + lea r9, [rcx + 352] + mov qword ptr [rsp + 56], r9 + lea r10, [rcx + 384] + mov qword ptr [rsp + 64], r10 + lea r11, [rcx + 416] + mov qword ptr [rsp + 72], r11 + lea rsi, [rcx + 448] + mov qword ptr [rsp + 80], rsi + lea rdi, [rcx + 480] + mov qword ptr [rsp + 88], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea r8, [rcx + 512] + mov qword ptr [rsp + 8], r8 + lea r9, [rcx + 544] + mov qword ptr [rsp], r9 + lea r15, [rcx + 576] + lea r12, [rcx + 608] + lea r13, [rcx + 640] + lea rbp, [rcx + 672] + lea rax, [rcx + 704] + mov qword ptr [rsp + 16], rax + lea rdx, [rcx + 736] + mov qword ptr [rsp + 24], rdx + vmovups ymm0, ymmword ptr [r8] + vmovups ymm1, ymmword ptr [r9] + vmovups ymm2, ymmword ptr [r15] + vmovups ymm3, ymmword ptr [r12] + vmovups ymm4, ymmword ptr [r13] + vmovups ymm5, ymmword ptr [rbp] + vmovups ymm6, ymmword ptr [rax] + vmovups ymm7, ymmword ptr [rdx] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r8], ymm8 + vmovups ymmword ptr [r9], ymm9 + vmovups ymmword ptr [r15], ymm10 + vmovups ymmword ptr [r12], ymm11 + vmovups ymmword ptr [r13], ymm12 + vmovups ymmword ptr [rbp], ymm13 + vmovups ymmword ptr [rax], ymm14 + vmovups ymmword ptr [rdx], ymm15 + lea rax, [rcx + 768] + lea rdx, [rcx + 800] + lea r8, [rcx + 832] + lea r9, [rcx + 864] + lea r10, [rcx + 896] + lea r11, [rcx + 928] + lea rsi, [rcx + 960] + add rcx, 992 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rcx] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rcx], ymm15 + mov rdi, qword ptr [rsp + 96] + mov rbx, qword ptr [rsp + 32] + mov r14, qword ptr [rsp + 8] + vmovups ymm0, ymmword ptr [rdi] + vmovups ymm1, ymmword ptr [rbx] + vmovups ymm2, ymmword ptr [r14] + vmovups ymm3, ymmword ptr [rax] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rdi], ymm0 + vmovups ymmword ptr [rbx], ymm1 + vmovups ymmword ptr [r14], ymm2 + vmovups ymmword ptr [rax], ymm3 + mov rax, qword ptr [rsp + 104] + mov rdi, qword ptr [rsp + 40] + mov rbx, qword ptr [rsp] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdi] + vmovups ymm2, ymmword ptr [rbx] + vmovups ymm3, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rdi], ymm1 + vmovups ymmword ptr [rbx], ymm2 + vmovups ymmword ptr [rdx], ymm3 + mov rax, qword ptr [rsp + 112] + mov rdx, qword ptr [rsp + 48] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r15] + vmovups ymm3, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rdx], ymm1 + vmovups ymmword ptr [r15], ymm2 + vmovups ymmword ptr [r8], ymm3 + mov rax, qword ptr [rsp + 120] + mov rdx, qword ptr [rsp + 56] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r12] + vmovups ymm3, ymmword ptr [r9] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rdx], ymm1 + vmovups ymmword ptr [r12], ymm2 + vmovups ymmword ptr [r9], ymm3 + mov rax, qword ptr [rsp + 128] + mov rdx, qword ptr [rsp + 64] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r13] + vmovups ymm3, ymmword ptr [r10] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rdx], ymm1 + vmovups ymmword ptr [r13], ymm2 + vmovups ymmword ptr [r10], ymm3 + mov rax, qword ptr [rsp + 136] + mov rdx, qword ptr [rsp + 72] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [rbp] + vmovups ymm3, ymmword ptr [r11] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rdx], ymm1 + vmovups ymmword ptr [rbp], ymm2 + vmovups ymmword ptr [r11], ymm3 + mov rax, qword ptr [rsp + 144] + mov rdx, qword ptr [rsp + 80] + mov r8, qword ptr [rsp + 16] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rdx], ymm1 + vmovups ymmword ptr [r8], ymm2 + vmovups ymmword ptr [rsi], ymm3 + mov rax, qword ptr [rsp + 152] + mov rdx, qword ptr [rsp + 88] + mov r8, qword ptr [rsp + 24] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [rcx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rdx], ymm1 + vmovups ymmword ptr [r8], ymm2 + vmovups ymmword ptr [rcx], ymm3 + vmovaps xmm6, xmmword ptr [rsp + 160] + vmovaps xmm7, xmmword ptr [rsp + 176] + vmovaps xmm8, xmmword ptr [rsp + 192] + vmovaps xmm9, xmmword ptr [rsp + 208] + vmovaps xmm10, xmmword ptr [rsp + 224] + vmovaps xmm11, xmmword ptr [rsp + 240] + vmovaps xmm12, xmmword ptr [rsp + 256] + vmovaps xmm13, xmmword ptr [rsp + 272] + vmovaps xmm14, xmmword ptr [rsp + 288] + vmovaps xmm15, xmmword ptr [rsp + 304] + add rsp, 328 + pop rbx + pop rbp + pop rdi + pop rsi + pop r12 + pop r13 + pop r14 + pop r15 + vzeroupper + ret +rabitq_fht_avx_float_8 ENDP + +rabitq_fht_avx_float_9 PROC + jmp fht_helper_float_9 +rabitq_fht_avx_float_9 ENDP + +fht_helper_float_9 PROC FRAME + push r15 + .pushreg r15 + push r14 + .pushreg r14 + push r13 + .pushreg r13 + push r12 + .pushreg r12 + push rsi + .pushreg rsi + push rdi + .pushreg rdi + push rbp + .pushreg rbp + push rbx + .pushreg rbx + sub rsp, 616 + .allocstack 616 + vmovaps xmmword ptr [rsp + 592], xmm15 + .savexmm128 xmm15, 592 + vmovaps xmmword ptr [rsp + 576], xmm14 + .savexmm128 xmm14, 576 + vmovaps xmmword ptr [rsp + 560], xmm13 + .savexmm128 xmm13, 560 + vmovaps xmmword ptr [rsp + 544], xmm12 + .savexmm128 xmm12, 544 + vmovaps xmmword ptr [rsp + 528], xmm11 + .savexmm128 xmm11, 528 + vmovaps xmmword ptr [rsp + 512], xmm10 + .savexmm128 xmm10, 512 + vmovaps xmmword ptr [rsp + 496], xmm9 + .savexmm128 xmm9, 496 + vmovaps xmmword ptr [rsp + 480], xmm8 + .savexmm128 xmm8, 480 + vmovaps xmmword ptr [rsp + 464], xmm7 + .savexmm128 xmm7, 464 + vmovaps xmmword ptr [rsp + 448], xmm6 + .savexmm128 xmm6, 448 + .endprolog + lea rax, [rcx + 32] + mov qword ptr [rsp + 392], rax + lea rdx, [rcx + 64] + mov qword ptr [rsp + 400], rdx + lea r8, [rcx + 96] + mov qword ptr [rsp + 408], r8 + lea r9, [rcx + 128] + mov qword ptr [rsp + 416], r9 + lea r10, [rcx + 160] + mov qword ptr [rsp + 424], r10 + lea r11, [rcx + 192] + mov qword ptr [rsp + 432], r11 + lea rsi, [rcx + 224] + mov qword ptr [rsp + 440], rsi + mov qword ptr [rsp + 384], rcx + vmovups ymm0, ymmword ptr [rcx] + vmovups ymm1, ymmword ptr [rax] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rcx], ymm8 + vmovups ymmword ptr [rax], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + lea rax, [rcx + 256] + mov qword ptr [rsp + 320], rax + lea rdx, [rcx + 288] + mov qword ptr [rsp + 328], rdx + lea r8, [rcx + 320] + mov qword ptr [rsp + 336], r8 + lea r9, [rcx + 352] + mov qword ptr [rsp + 344], r9 + lea r10, [rcx + 384] + mov qword ptr [rsp + 352], r10 + lea r11, [rcx + 416] + mov qword ptr [rsp + 360], r11 + lea rsi, [rcx + 448] + mov qword ptr [rsp + 368], rsi + lea rdi, [rcx + 480] + mov qword ptr [rsp + 376], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 512] + mov qword ptr [rsp + 256], rax + lea rdx, [rcx + 544] + mov qword ptr [rsp + 264], rdx + lea r8, [rcx + 576] + mov qword ptr [rsp + 272], r8 + lea r9, [rcx + 608] + mov qword ptr [rsp + 280], r9 + lea r10, [rcx + 640] + mov qword ptr [rsp + 288], r10 + lea r11, [rcx + 672] + mov qword ptr [rsp + 296], r11 + lea rsi, [rcx + 704] + mov qword ptr [rsp + 304], rsi + lea rdi, [rcx + 736] + mov qword ptr [rsp + 312], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 768] + mov qword ptr [rsp + 192], rax + lea rdx, [rcx + 800] + mov qword ptr [rsp + 200], rdx + lea r8, [rcx + 832] + mov qword ptr [rsp + 208], r8 + lea r9, [rcx + 864] + mov qword ptr [rsp + 216], r9 + lea r10, [rcx + 896] + mov qword ptr [rsp + 224], r10 + lea r11, [rcx + 928] + mov qword ptr [rsp + 232], r11 + lea rsi, [rcx + 960] + mov qword ptr [rsp + 240], rsi + lea rdi, [rcx + 992] + mov qword ptr [rsp + 248], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 1024] + mov qword ptr [rsp + 128], rax + lea rdx, [rcx + 1056] + mov qword ptr [rsp + 136], rdx + lea r8, [rcx + 1088] + mov qword ptr [rsp + 144], r8 + lea r9, [rcx + 1120] + mov qword ptr [rsp + 152], r9 + lea r10, [rcx + 1152] + mov qword ptr [rsp + 160], r10 + lea r11, [rcx + 1184] + mov qword ptr [rsp + 168], r11 + lea rsi, [rcx + 1216] + mov qword ptr [rsp + 176], rsi + lea rdi, [rcx + 1248] + mov qword ptr [rsp + 184], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 1280] + mov qword ptr [rsp + 64], rax + lea rdx, [rcx + 1312] + mov qword ptr [rsp + 72], rdx + lea r8, [rcx + 1344] + mov qword ptr [rsp + 80], r8 + lea r9, [rcx + 1376] + mov qword ptr [rsp + 88], r9 + lea r10, [rcx + 1408] + mov qword ptr [rsp + 96], r10 + lea r11, [rcx + 1440] + mov qword ptr [rsp + 120], r11 + lea rsi, [rcx + 1472] + mov qword ptr [rsp + 112], rsi + lea rdi, [rcx + 1504] + mov qword ptr [rsp + 104], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea r10, [rcx + 1536] + mov qword ptr [rsp + 8], r10 + lea r9, [rcx + 1568] + mov qword ptr [rsp + 16], r9 + lea rdx, [rcx + 1600] + mov qword ptr [rsp + 24], rdx + lea rax, [rcx + 1632] + mov qword ptr [rsp + 32], rax + lea r8, [rcx + 1664] + mov qword ptr [rsp + 40], r8 + lea rdi, [rcx + 1696] + mov qword ptr [rsp], rdi + lea r11, [rcx + 1728] + mov qword ptr [rsp + 56], r11 + lea rsi, [rcx + 1760] + mov qword ptr [rsp + 48], rsi + vmovups ymm0, ymmword ptr [r10] + vmovups ymm1, ymmword ptr [r9] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [rax] + vmovups ymm4, ymmword ptr [r8] + vmovups ymm5, ymmword ptr [rdi] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r10], ymm8 + vmovups ymmword ptr [r9], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [rax], ymm11 + vmovups ymmword ptr [r8], ymm12 + vmovups ymmword ptr [rdi], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + lea rax, [rcx + 1792] + lea rdx, [rcx + 1824] + lea r8, [rcx + 1856] + lea r9, [rcx + 1888] + lea r10, [rcx + 1920] + lea r11, [rcx + 1952] + lea rsi, [rcx + 1984] + add rcx, 2016 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rcx] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rcx], ymm15 + mov rdi, qword ptr [rsp + 384] + mov rbx, qword ptr [rsp + 320] + mov r14, qword ptr [rsp + 256] + mov r15, qword ptr [rsp + 192] + mov r12, qword ptr [rsp + 128] + mov r13, qword ptr [rsp + 64] + mov rbp, qword ptr [rsp + 8] + vmovups ymm0, ymmword ptr [rdi] + vmovups ymm1, ymmword ptr [rbx] + vmovups ymm2, ymmword ptr [r14] + vmovups ymm3, ymmword ptr [r15] + vmovups ymm4, ymmword ptr [r12] + vmovups ymm5, ymmword ptr [r13] + vmovups ymm6, ymmword ptr [rbp] + vmovups ymm7, ymmword ptr [rax] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rdi], ymm8 + vmovups ymmword ptr [rbx], ymm9 + vmovups ymmword ptr [r14], ymm10 + vmovups ymmword ptr [r15], ymm11 + vmovups ymmword ptr [r12], ymm12 + vmovups ymmword ptr [r13], ymm13 + vmovups ymmword ptr [rbp], ymm14 + vmovups ymmword ptr [rax], ymm15 + mov rax, qword ptr [rsp + 392] + mov rdi, qword ptr [rsp + 328] + mov rbx, qword ptr [rsp + 264] + mov r14, qword ptr [rsp + 200] + mov r15, qword ptr [rsp + 136] + mov r12, qword ptr [rsp + 72] + mov r13, qword ptr [rsp + 16] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdi] + vmovups ymm2, ymmword ptr [rbx] + vmovups ymm3, ymmword ptr [r14] + vmovups ymm4, ymmword ptr [r15] + vmovups ymm5, ymmword ptr [r12] + vmovups ymm6, ymmword ptr [r13] + vmovups ymm7, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdi], ymm9 + vmovups ymmword ptr [rbx], ymm10 + vmovups ymmword ptr [r14], ymm11 + vmovups ymmword ptr [r15], ymm12 + vmovups ymmword ptr [r12], ymm13 + vmovups ymmword ptr [r13], ymm14 + vmovups ymmword ptr [rdx], ymm15 + mov rax, qword ptr [rsp + 400] + mov rdx, qword ptr [rsp + 336] + mov rdi, qword ptr [rsp + 272] + mov rbx, qword ptr [rsp + 208] + mov r14, qword ptr [rsp + 144] + mov r15, qword ptr [rsp + 80] + mov r12, qword ptr [rsp + 24] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [rdi] + vmovups ymm3, ymmword ptr [rbx] + vmovups ymm4, ymmword ptr [r14] + vmovups ymm5, ymmword ptr [r15] + vmovups ymm6, ymmword ptr [r12] + vmovups ymm7, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [rdi], ymm10 + vmovups ymmword ptr [rbx], ymm11 + vmovups ymmword ptr [r14], ymm12 + vmovups ymmword ptr [r15], ymm13 + vmovups ymmword ptr [r12], ymm14 + vmovups ymmword ptr [r8], ymm15 + mov rax, qword ptr [rsp + 408] + mov rdx, qword ptr [rsp + 344] + mov r8, qword ptr [rsp + 280] + mov rdi, qword ptr [rsp + 216] + mov rbx, qword ptr [rsp + 152] + mov r14, qword ptr [rsp + 88] + mov r15, qword ptr [rsp + 32] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [rdi] + vmovups ymm4, ymmword ptr [rbx] + vmovups ymm5, ymmword ptr [r14] + vmovups ymm6, ymmword ptr [r15] + vmovups ymm7, ymmword ptr [r9] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [rdi], ymm11 + vmovups ymmword ptr [rbx], ymm12 + vmovups ymmword ptr [r14], ymm13 + vmovups ymmword ptr [r15], ymm14 + vmovups ymmword ptr [r9], ymm15 + mov rax, qword ptr [rsp + 416] + mov rdx, qword ptr [rsp + 352] + mov r8, qword ptr [rsp + 288] + mov r9, qword ptr [rsp + 224] + mov rdi, qword ptr [rsp + 160] + mov rbx, qword ptr [rsp + 96] + mov r14, qword ptr [rsp + 40] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [rdi] + vmovups ymm5, ymmword ptr [rbx] + vmovups ymm6, ymmword ptr [r14] + vmovups ymm7, ymmword ptr [r10] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [rdi], ymm12 + vmovups ymmword ptr [rbx], ymm13 + vmovups ymmword ptr [r14], ymm14 + vmovups ymmword ptr [r10], ymm15 + mov rax, qword ptr [rsp + 424] + mov rdx, qword ptr [rsp + 360] + mov r8, qword ptr [rsp + 296] + mov r9, qword ptr [rsp + 232] + mov r10, qword ptr [rsp + 168] + mov rdi, qword ptr [rsp + 120] + mov rbx, qword ptr [rsp] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [rdi] + vmovups ymm6, ymmword ptr [rbx] + vmovups ymm7, ymmword ptr [r11] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [rdi], ymm13 + vmovups ymmword ptr [rbx], ymm14 + vmovups ymmword ptr [r11], ymm15 + mov rax, qword ptr [rsp + 432] + mov rdx, qword ptr [rsp + 368] + mov r8, qword ptr [rsp + 304] + mov r9, qword ptr [rsp + 240] + mov r10, qword ptr [rsp + 176] + mov r11, qword ptr [rsp + 112] + mov rdi, qword ptr [rsp + 56] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rdi] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rdi], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov rax, qword ptr [rsp + 440] + mov rdx, qword ptr [rsp + 376] + mov r8, qword ptr [rsp + 312] + mov r9, qword ptr [rsp + 248] + mov r10, qword ptr [rsp + 184] + mov r11, qword ptr [rsp + 104] + mov rsi, qword ptr [rsp + 48] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rcx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rcx], ymm15 + vmovaps xmm6, xmmword ptr [rsp + 448] + vmovaps xmm7, xmmword ptr [rsp + 464] + vmovaps xmm8, xmmword ptr [rsp + 480] + vmovaps xmm9, xmmword ptr [rsp + 496] + vmovaps xmm10, xmmword ptr [rsp + 512] + vmovaps xmm11, xmmword ptr [rsp + 528] + vmovaps xmm12, xmmword ptr [rsp + 544] + vmovaps xmm13, xmmword ptr [rsp + 560] + vmovaps xmm14, xmmword ptr [rsp + 576] + vmovaps xmm15, xmmword ptr [rsp + 592] + add rsp, 616 + pop rbx + pop rbp + pop rdi + pop rsi + pop r12 + pop r13 + pop r14 + pop r15 + vzeroupper + ret +fht_helper_float_9 ENDP + +rabitq_fht_avx_float_10 PROC + mov edx, 10 + jmp fht_helper_float_10_recursive +rabitq_fht_avx_float_10 ENDP + +rabitq_fht_avx_float_11 PROC + mov edx, 11 + jmp fht_helper_float_11_recursive +rabitq_fht_avx_float_11 ENDP + +fht_helper_float_10_recursive PROC FRAME + push r15 + .pushreg r15 + push r14 + .pushreg r14 + push r13 + .pushreg r13 + push r12 + .pushreg r12 + push rsi + .pushreg rsi + push rdi + .pushreg rdi + push rbp + .pushreg rbp + push rbx + .pushreg rbx + sub rsp, 1192 + .allocstack 1192 + vmovaps xmmword ptr [rsp + 1168], xmm15 + .savexmm128 xmm15, 1168 + vmovaps xmmword ptr [rsp + 1152], xmm14 + .savexmm128 xmm14, 1152 + vmovaps xmmword ptr [rsp + 1136], xmm13 + .savexmm128 xmm13, 1136 + vmovaps xmmword ptr [rsp + 1120], xmm12 + .savexmm128 xmm12, 1120 + vmovaps xmmword ptr [rsp + 1104], xmm11 + .savexmm128 xmm11, 1104 + vmovaps xmmword ptr [rsp + 1088], xmm10 + .savexmm128 xmm10, 1088 + vmovaps xmmword ptr [rsp + 1072], xmm9 + .savexmm128 xmm9, 1072 + vmovaps xmmword ptr [rsp + 1056], xmm8 + .savexmm128 xmm8, 1056 + vmovaps xmmword ptr [rsp + 1040], xmm7 + .savexmm128 xmm7, 1040 + vmovaps xmmword ptr [rsp + 1024], xmm6 + .savexmm128 xmm6, 1024 + .endprolog + cmp edx, 10 + jne LBB7_2 + lea rax, [rcx + 32] + mov qword ptr [rsp + 792], rax + lea rdx, [rcx + 64] + mov qword ptr [rsp + 800], rdx + lea r8, [rcx + 96] + mov qword ptr [rsp + 824], r8 + lea r9, [rcx + 128] + mov qword ptr [rsp + 848], r9 + lea r10, [rcx + 160] + mov qword ptr [rsp + 856], r10 + lea r11, [rcx + 192] + mov qword ptr [rsp + 864], r11 + lea rsi, [rcx + 224] + mov qword ptr [rsp + 896], rsi + mov qword ptr [rsp + 816], rcx + vmovups ymm0, ymmword ptr [rcx] + vmovups ymm1, ymmword ptr [rax] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rcx], ymm8 + vmovups ymmword ptr [rax], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + lea rax, [rcx + 256] + mov qword ptr [rsp + 720], rax + lea rdx, [rcx + 288] + mov qword ptr [rsp + 744], rdx + lea r8, [rcx + 320] + mov qword ptr [rsp + 680], r8 + lea r9, [rcx + 352] + mov qword ptr [rsp + 672], r9 + lea r10, [rcx + 384] + mov qword ptr [rsp + 704], r10 + lea r11, [rcx + 416] + mov qword ptr [rsp + 776], r11 + lea rsi, [rcx + 448] + mov qword ptr [rsp + 872], rsi + lea rdi, [rcx + 480] + mov qword ptr [rsp + 880], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 512] + mov qword ptr [rsp + 648], rax + lea rdx, [rcx + 544] + mov qword ptr [rsp + 664], rdx + lea r8, [rcx + 576] + mov qword ptr [rsp + 736], r8 + lea r9, [rcx + 608] + mov qword ptr [rsp + 752], r9 + lea r10, [rcx + 640] + mov qword ptr [rsp + 808], r10 + lea r11, [rcx + 672] + mov qword ptr [rsp + 832], r11 + lea rsi, [rcx + 704] + mov qword ptr [rsp + 840], rsi + lea rdi, [rcx + 736] + mov qword ptr [rsp + 888], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 768] + mov qword ptr [rsp + 576], rax + lea rdx, [rcx + 800] + mov qword ptr [rsp + 608], rdx + lea r8, [rcx + 832] + mov qword ptr [rsp + 656], r8 + lea r9, [rcx + 864] + mov qword ptr [rsp + 688], r9 + lea r10, [rcx + 896] + mov qword ptr [rsp + 728], r10 + lea r11, [rcx + 928] + mov qword ptr [rsp + 760], r11 + lea rsi, [rcx + 960] + mov qword ptr [rsp + 768], rsi + lea rdi, [rcx + 992] + mov qword ptr [rsp + 784], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 1024] + mov qword ptr [rsp + 536], rax + lea rdx, [rcx + 1056] + mov qword ptr [rsp + 544], rdx + lea r8, [rcx + 1088] + mov qword ptr [rsp + 592], r8 + lea r9, [rcx + 1120] + mov qword ptr [rsp + 600], r9 + lea r10, [rcx + 1152] + mov qword ptr [rsp + 632], r10 + lea r11, [rcx + 1184] + mov qword ptr [rsp + 640], r11 + lea rsi, [rcx + 1216] + mov qword ptr [rsp + 696], rsi + lea rdi, [rcx + 1248] + mov qword ptr [rsp + 712], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 1280] + mov qword ptr [rsp + 464], rax + lea rdx, [rcx + 1312] + mov qword ptr [rsp + 472], rdx + lea r8, [rcx + 1344] + mov qword ptr [rsp + 504], r8 + lea r9, [rcx + 1376] + mov qword ptr [rsp + 528], r9 + lea r10, [rcx + 1408] + mov qword ptr [rsp + 568], r10 + lea r11, [rcx + 1440] + mov qword ptr [rsp + 584], r11 + lea rsi, [rcx + 1472] + mov qword ptr [rsp + 616], rsi + lea rdi, [rcx + 1504] + mov qword ptr [rsp + 624], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea r12, [rcx + 1536] + lea r13, [rcx + 1568] + lea r8, [rcx + 1600] + mov qword ptr [rsp + 448], r8 + lea r9, [rcx + 1632] + mov qword ptr [rsp + 480], r9 + lea r10, [rcx + 1664] + mov qword ptr [rsp + 496], r10 + lea r11, [rcx + 1696] + mov qword ptr [rsp + 512], r11 + lea rsi, [rcx + 1728] + mov qword ptr [rsp + 552], rsi + lea rdi, [rcx + 1760] + mov qword ptr [rsp + 560], rdi + vmovups ymm0, ymmword ptr [r12] + vmovups ymm1, ymmword ptr [r13] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r12], ymm8 + vmovups ymmword ptr [r13], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + mov qword ptr [rsp + 928], r13 + mov qword ptr [rsp + 944], r12 + lea rbx, [rcx + 1792] + lea r14, [rcx + 1824] + lea r15, [rcx + 1856] + lea rbp, [rcx + 1888] + lea r10, [rcx + 1920] + mov qword ptr [rsp + 440], r10 + lea r11, [rcx + 1952] + mov qword ptr [rsp + 456], r11 + lea rsi, [rcx + 1984] + mov qword ptr [rsp + 488], rsi + lea rdi, [rcx + 2016] + mov qword ptr [rsp + 520], rdi + vmovups ymm0, ymmword ptr [rbx] + vmovups ymm1, ymmword ptr [r14] + vmovups ymm2, ymmword ptr [r15] + vmovups ymm3, ymmword ptr [rbp] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rbx], ymm8 + vmovups ymmword ptr [r14], ymm9 + vmovups ymmword ptr [r15], ymm10 + vmovups ymmword ptr [rbp], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + mov qword ptr [rsp + 904], rbp + mov qword ptr [rsp + 912], r15 + mov qword ptr [rsp + 936], r14 + mov qword ptr [rsp + 952], rbx + lea r11, [rcx + 2048] + mov qword ptr [rsp + 1016], r11 + lea r10, [rcx + 2080] + mov qword ptr [rsp + 1008], r10 + lea r8, [rcx + 2112] + mov qword ptr [rsp + 1000], r8 + lea r9, [rcx + 2144] + mov qword ptr [rsp + 992], r9 + lea rsi, [rcx + 2176] + mov qword ptr [rsp + 984], rsi + lea rdi, [rcx + 2208] + mov qword ptr [rsp + 976], rdi + lea rdx, [rcx + 2240] + mov qword ptr [rsp + 968], rdx + lea rax, [rcx + 2272] + mov qword ptr [rsp + 960], rax + vmovups ymm0, ymmword ptr [r11] + vmovups ymm1, ymmword ptr [r10] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [rsi] + vmovups ymm5, ymmword ptr [rdi] + vmovups ymm6, ymmword ptr [rdx] + vmovups ymm7, ymmword ptr [rax] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r11], ymm8 + vmovups ymmword ptr [r10], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [rsi], ymm12 + vmovups ymmword ptr [rdi], ymm13 + vmovups ymmword ptr [rdx], ymm14 + vmovups ymmword ptr [rax], ymm15 + lea rax, [rcx + 2304] + mov qword ptr [rsp + 432], rax + lea rdx, [rcx + 2336] + mov qword ptr [rsp + 424], rdx + lea r8, [rcx + 2368] + mov qword ptr [rsp + 416], r8 + lea r9, [rcx + 2400] + mov qword ptr [rsp + 408], r9 + lea r10, [rcx + 2432] + mov qword ptr [rsp + 400], r10 + lea r11, [rcx + 2464] + mov qword ptr [rsp + 392], r11 + lea rsi, [rcx + 2496] + mov qword ptr [rsp + 384], rsi + lea rdi, [rcx + 2528] + mov qword ptr [rsp + 376], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 2560] + mov qword ptr [rsp + 368], rax + lea rdx, [rcx + 2592] + mov qword ptr [rsp + 360], rdx + lea r8, [rcx + 2624] + mov qword ptr [rsp + 352], r8 + lea r9, [rcx + 2656] + mov qword ptr [rsp + 344], r9 + lea r10, [rcx + 2688] + mov qword ptr [rsp + 336], r10 + lea r11, [rcx + 2720] + mov qword ptr [rsp + 328], r11 + lea rsi, [rcx + 2752] + mov qword ptr [rsp + 320], rsi + lea rdi, [rcx + 2784] + mov qword ptr [rsp + 312], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 2816] + mov qword ptr [rsp + 248], rax + lea rdx, [rcx + 2848] + mov qword ptr [rsp + 304], rdx + lea r8, [rcx + 2880] + mov qword ptr [rsp + 296], r8 + lea r9, [rcx + 2912] + mov qword ptr [rsp + 288], r9 + lea r10, [rcx + 2944] + mov qword ptr [rsp + 280], r10 + lea r11, [rcx + 2976] + mov qword ptr [rsp + 272], r11 + lea rsi, [rcx + 3008] + mov qword ptr [rsp + 264], rsi + lea rdi, [rcx + 3040] + mov qword ptr [rsp + 256], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 3072] + mov qword ptr [rsp + 184], rax + lea rdx, [rcx + 3104] + mov qword ptr [rsp + 240], rdx + lea r8, [rcx + 3136] + mov qword ptr [rsp + 232], r8 + lea r9, [rcx + 3168] + mov qword ptr [rsp + 224], r9 + lea r10, [rcx + 3200] + mov qword ptr [rsp + 216], r10 + lea r11, [rcx + 3232] + mov qword ptr [rsp + 208], r11 + lea rsi, [rcx + 3264] + mov qword ptr [rsp + 200], rsi + lea rdi, [rcx + 3296] + mov qword ptr [rsp + 192], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 3328] + mov qword ptr [rsp + 120], rax + lea rdx, [rcx + 3360] + mov qword ptr [rsp + 176], rdx + lea r8, [rcx + 3392] + mov qword ptr [rsp + 168], r8 + lea r9, [rcx + 3424] + mov qword ptr [rsp + 160], r9 + lea r10, [rcx + 3456] + mov qword ptr [rsp + 152], r10 + lea r11, [rcx + 3488] + mov qword ptr [rsp + 144], r11 + lea rsi, [rcx + 3520] + mov qword ptr [rsp + 136], rsi + lea rdi, [rcx + 3552] + mov qword ptr [rsp + 128], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 3584] + mov qword ptr [rsp + 56], rax + lea rdx, [rcx + 3616] + mov qword ptr [rsp + 112], rdx + lea r8, [rcx + 3648] + mov qword ptr [rsp + 104], r8 + lea r9, [rcx + 3680] + mov qword ptr [rsp + 96], r9 + lea r10, [rcx + 3712] + mov qword ptr [rsp + 88], r10 + lea r11, [rcx + 3744] + mov qword ptr [rsp + 80], r11 + lea rsi, [rcx + 3776] + mov qword ptr [rsp + 72], rsi + lea rdi, [rcx + 3808] + mov qword ptr [rsp + 64], rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rdi, [rcx + 3840] + lea rdx, [rcx + 3872] + mov qword ptr [rsp + 48], rdx + lea r8, [rcx + 3904] + mov qword ptr [rsp + 40], r8 + lea r9, [rcx + 3936] + mov qword ptr [rsp + 32], r9 + lea r10, [rcx + 3968] + mov qword ptr [rsp + 24], r10 + lea r11, [rcx + 4000] + mov qword ptr [rsp + 16], r11 + lea rsi, [rcx + 4032] + mov qword ptr [rsp + 8], rsi + add rcx, 4064 + vmovups ymm0, ymmword ptr [rdi] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rcx] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rdi], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rcx], ymm15 + mov qword ptr [rsp + 920], rdi + mov rax, qword ptr [rsp + 720] + mov rdx, qword ptr [rsp + 648] + mov r8, qword ptr [rsp + 576] + mov r9, qword ptr [rsp + 536] + mov rsi, qword ptr [rsp + 464] + mov r10, qword ptr [rsp + 816] + vmovups ymm0, ymmword ptr [r10] + vmovups ymm1, ymmword ptr [rax] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [rsi] + vmovups ymm6, ymmword ptr [r12] + vmovups ymm7, ymmword ptr [rbx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r10], ymm8 + vmovups ymmword ptr [rax], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [rsi], ymm13 + vmovups ymmword ptr [r12], ymm14 + vmovups ymmword ptr [rbx], ymm15 + mov rax, qword ptr [rsp + 744] + mov rdx, qword ptr [rsp + 664] + mov r8, qword ptr [rsp + 608] + mov r9, qword ptr [rsp + 544] + mov r11, qword ptr [rsp + 472] + mov r10, qword ptr [rsp + 792] + vmovups ymm0, ymmword ptr [r10] + vmovups ymm1, ymmword ptr [rax] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [r13] + vmovups ymm7, ymmword ptr [r14] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r10], ymm8 + vmovups ymmword ptr [rax], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [r13], ymm14 + vmovups ymmword ptr [r14], ymm15 + mov rax, qword ptr [rsp + 736] + mov rdx, qword ptr [rsp + 656] + mov r8, qword ptr [rsp + 592] + mov r9, qword ptr [rsp + 680] + mov r10, qword ptr [rsp + 504] + mov rbx, qword ptr [rsp + 448] + mov r11, qword ptr [rsp + 800] + vmovups ymm0, ymmword ptr [r11] + vmovups ymm1, ymmword ptr [r9] + vmovups ymm2, ymmword ptr [rax] + vmovups ymm3, ymmword ptr [rdx] + vmovups ymm4, ymmword ptr [r8] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [rbx] + vmovups ymm7, ymmword ptr [r15] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r11], ymm8 + vmovups ymmword ptr [r9], ymm9 + vmovups ymmword ptr [rax], ymm10 + vmovups ymmword ptr [rdx], ymm11 + vmovups ymmword ptr [r8], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [rbx], ymm14 + vmovups ymmword ptr [r15], ymm15 + mov rax, qword ptr [rsp + 752] + mov rdx, qword ptr [rsp + 688] + mov r8, qword ptr [rsp + 672] + mov r9, qword ptr [rsp + 600] + mov rbx, qword ptr [rsp + 528] + mov r13, qword ptr [rsp + 480] + mov r10, qword ptr [rsp + 824] + vmovups ymm0, ymmword ptr [r10] + vmovups ymm1, ymmword ptr [r8] + vmovups ymm2, ymmword ptr [rax] + vmovups ymm3, ymmword ptr [rdx] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [rbx] + vmovups ymm6, ymmword ptr [r13] + vmovups ymm7, ymmword ptr [rbp] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r10], ymm8 + vmovups ymmword ptr [r8], ymm9 + vmovups ymmword ptr [rax], ymm10 + vmovups ymmword ptr [rdx], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [rbx], ymm13 + vmovups ymmword ptr [r13], ymm14 + vmovups ymmword ptr [rbp], ymm15 + mov rax, qword ptr [rsp + 808] + mov rdx, qword ptr [rsp + 728] + mov r8, qword ptr [rsp + 704] + mov rbx, qword ptr [rsp + 632] + mov r14, qword ptr [rsp + 568] + mov r13, qword ptr [rsp + 496] + mov r15, qword ptr [rsp + 440] + mov r9, qword ptr [rsp + 848] + vmovups ymm0, ymmword ptr [r9] + vmovups ymm1, ymmword ptr [r8] + vmovups ymm2, ymmword ptr [rax] + vmovups ymm3, ymmword ptr [rdx] + vmovups ymm4, ymmword ptr [rbx] + vmovups ymm5, ymmword ptr [r14] + vmovups ymm6, ymmword ptr [r13] + vmovups ymm7, ymmword ptr [r15] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r9], ymm8 + vmovups ymmword ptr [r8], ymm9 + vmovups ymmword ptr [rax], ymm10 + vmovups ymmword ptr [rdx], ymm11 + vmovups ymmword ptr [rbx], ymm12 + vmovups ymmword ptr [r14], ymm13 + vmovups ymmword ptr [r13], ymm14 + vmovups ymmword ptr [r15], ymm15 + mov rax, qword ptr [rsp + 832] + mov rdx, qword ptr [rsp + 776] + mov rbx, qword ptr [rsp + 760] + mov r14, qword ptr [rsp + 640] + mov r15, qword ptr [rsp + 584] + mov r13, qword ptr [rsp + 512] + mov r12, qword ptr [rsp + 456] + mov r8, qword ptr [rsp + 856] + vmovups ymm0, ymmword ptr [r8] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [rax] + vmovups ymm3, ymmword ptr [rbx] + vmovups ymm4, ymmword ptr [r14] + vmovups ymm5, ymmword ptr [r15] + vmovups ymm6, ymmword ptr [r13] + vmovups ymm7, ymmword ptr [r12] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r8], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [rax], ymm10 + vmovups ymmword ptr [rbx], ymm11 + vmovups ymmword ptr [r14], ymm12 + vmovups ymmword ptr [r15], ymm13 + vmovups ymmword ptr [r13], ymm14 + vmovups ymmword ptr [r12], ymm15 + mov rax, qword ptr [rsp + 872] + mov rbx, qword ptr [rsp + 840] + mov r14, qword ptr [rsp + 768] + mov r15, qword ptr [rsp + 696] + mov r12, qword ptr [rsp + 616] + mov r13, qword ptr [rsp + 552] + mov rdx, qword ptr [rsp + 864] + mov rbp, qword ptr [rsp + 488] + vmovups ymm0, ymmword ptr [rdx] + vmovups ymm1, ymmword ptr [rax] + vmovups ymm2, ymmword ptr [rbx] + vmovups ymm3, ymmword ptr [r14] + vmovups ymm4, ymmword ptr [r15] + vmovups ymm5, ymmword ptr [r12] + vmovups ymm6, ymmword ptr [r13] + vmovups ymm7, ymmword ptr [rbp] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rdx], ymm8 + vmovups ymmword ptr [rax], ymm9 + vmovups ymmword ptr [rbx], ymm10 + vmovups ymmword ptr [r14], ymm11 + vmovups ymmword ptr [r15], ymm12 + vmovups ymmword ptr [r12], ymm13 + vmovups ymmword ptr [r13], ymm14 + vmovups ymmword ptr [rbp], ymm15 + mov rbx, qword ptr [rsp + 888] + mov r14, qword ptr [rsp + 880] + mov r15, qword ptr [rsp + 784] + mov r12, qword ptr [rsp + 712] + mov r13, qword ptr [rsp + 624] + mov rbp, qword ptr [rsp + 560] + mov rax, qword ptr [rsp + 520] + mov rdx, qword ptr [rsp + 896] + vmovups ymm0, ymmword ptr [rdx] + vmovups ymm1, ymmword ptr [r14] + vmovups ymm2, ymmword ptr [rbx] + vmovups ymm3, ymmword ptr [r15] + vmovups ymm4, ymmword ptr [r12] + vmovups ymm5, ymmword ptr [r13] + vmovups ymm6, ymmword ptr [rbp] + vmovups ymm7, ymmword ptr [rax] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rdx], ymm8 + vmovups ymmword ptr [r14], ymm9 + vmovups ymmword ptr [rbx], ymm10 + vmovups ymmword ptr [r15], ymm11 + vmovups ymmword ptr [r12], ymm12 + vmovups ymmword ptr [r13], ymm13 + vmovups ymmword ptr [rbp], ymm14 + vmovups ymmword ptr [rax], ymm15 + mov rax, qword ptr [rsp + 1016] + mov rdx, qword ptr [rsp + 368] + mov r8, qword ptr [rsp + 248] + mov r10, qword ptr [rsp + 184] + mov r9, qword ptr [rsp + 432] + mov r11, qword ptr [rsp + 120] + mov rsi, qword ptr [rsp + 56] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [r9] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [r9], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + mov rdx, qword ptr [rsp + 1008] + mov r10, qword ptr [rsp + 360] + mov r11, qword ptr [rsp + 304] + mov rsi, qword ptr [rsp + 240] + mov rdi, qword ptr [rsp + 176] + mov r9, qword ptr [rsp + 112] + mov r8, qword ptr [rsp + 424] + mov rbx, qword ptr [rsp + 48] + vmovups ymm0, ymmword ptr [rdx] + vmovups ymm1, ymmword ptr [r8] + vmovups ymm2, ymmword ptr [r10] + vmovups ymm3, ymmword ptr [r11] + vmovups ymm4, ymmword ptr [rsi] + vmovups ymm5, ymmword ptr [rdi] + vmovups ymm6, ymmword ptr [r9] + vmovups ymm7, ymmword ptr [rbx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rdx], ymm8 + vmovups ymmword ptr [r8], ymm9 + vmovups ymmword ptr [r10], ymm10 + vmovups ymmword ptr [r11], ymm11 + vmovups ymmword ptr [rsi], ymm12 + vmovups ymmword ptr [rdi], ymm13 + vmovups ymmword ptr [r9], ymm14 + vmovups ymmword ptr [rbx], ymm15 + mov rbx, qword ptr [rsp + 1000] + mov r11, qword ptr [rsp + 352] + mov rsi, qword ptr [rsp + 296] + mov r10, qword ptr [rsp + 416] + mov rdi, qword ptr [rsp + 232] + mov r14, qword ptr [rsp + 168] + mov r9, qword ptr [rsp + 104] + mov r8, qword ptr [rsp + 40] + vmovups ymm0, ymmword ptr [rbx] + vmovups ymm1, ymmword ptr [r10] + vmovups ymm2, ymmword ptr [r11] + vmovups ymm3, ymmword ptr [rsi] + vmovups ymm4, ymmword ptr [rdi] + vmovups ymm5, ymmword ptr [r14] + vmovups ymm6, ymmword ptr [r9] + vmovups ymm7, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rbx], ymm8 + vmovups ymmword ptr [r10], ymm9 + vmovups ymmword ptr [r11], ymm10 + vmovups ymmword ptr [rsi], ymm11 + vmovups ymmword ptr [rdi], ymm12 + vmovups ymmword ptr [r14], ymm13 + vmovups ymmword ptr [r9], ymm14 + vmovups ymmword ptr [r8], ymm15 + mov r14, qword ptr [rsp + 992] + mov rsi, qword ptr [rsp + 344] + mov rdi, qword ptr [rsp + 288] + mov r10, qword ptr [rsp + 224] + mov r11, qword ptr [rsp + 408] + mov r15, qword ptr [rsp + 160] + mov r9, qword ptr [rsp + 96] + mov r8, qword ptr [rsp + 32] + vmovups ymm0, ymmword ptr [r14] + vmovups ymm1, ymmword ptr [r11] + vmovups ymm2, ymmword ptr [rsi] + vmovups ymm3, ymmword ptr [rdi] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r15] + vmovups ymm6, ymmword ptr [r9] + vmovups ymm7, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r14], ymm8 + vmovups ymmword ptr [r11], ymm9 + vmovups ymmword ptr [rsi], ymm10 + vmovups ymmword ptr [rdi], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r15], ymm13 + vmovups ymmword ptr [r9], ymm14 + vmovups ymmword ptr [r8], ymm15 + mov r15, qword ptr [rsp + 984] + mov r12, qword ptr [rsp + 400] + mov rsi, qword ptr [rsp + 336] + mov rdi, qword ptr [rsp + 280] + mov r10, qword ptr [rsp + 216] + mov r11, qword ptr [rsp + 152] + mov r9, qword ptr [rsp + 88] + mov r8, qword ptr [rsp + 24] + vmovups ymm0, ymmword ptr [r15] + vmovups ymm1, ymmword ptr [r12] + vmovups ymm2, ymmword ptr [rsi] + vmovups ymm3, ymmword ptr [rdi] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [r9] + vmovups ymm7, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r15], ymm8 + vmovups ymmword ptr [r12], ymm9 + vmovups ymmword ptr [rsi], ymm10 + vmovups ymmword ptr [rdi], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [r9], ymm14 + vmovups ymmword ptr [r8], ymm15 + mov r12, qword ptr [rsp + 976] + mov r13, qword ptr [rsp + 392] + mov rsi, qword ptr [rsp + 328] + mov rdi, qword ptr [rsp + 272] + mov r10, qword ptr [rsp + 208] + mov r11, qword ptr [rsp + 144] + mov r9, qword ptr [rsp + 80] + mov r8, qword ptr [rsp + 16] + vmovups ymm0, ymmword ptr [r12] + vmovups ymm1, ymmword ptr [r13] + vmovups ymm2, ymmword ptr [rsi] + vmovups ymm3, ymmword ptr [rdi] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [r9] + vmovups ymm7, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r12], ymm8 + vmovups ymmword ptr [r13], ymm9 + vmovups ymmword ptr [rsi], ymm10 + vmovups ymmword ptr [rdi], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [r9], ymm14 + vmovups ymmword ptr [r8], ymm15 + mov r13, qword ptr [rsp + 968] + mov rbp, qword ptr [rsp + 384] + mov rsi, qword ptr [rsp + 320] + mov rdi, qword ptr [rsp + 264] + mov r10, qword ptr [rsp + 200] + mov r11, qword ptr [rsp + 136] + mov r9, qword ptr [rsp + 72] + mov r8, qword ptr [rsp + 8] + vmovups ymm0, ymmword ptr [r13] + vmovups ymm1, ymmword ptr [rbp] + vmovups ymm2, ymmword ptr [rsi] + vmovups ymm3, ymmword ptr [rdi] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [r9] + vmovups ymm7, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r13], ymm8 + vmovups ymmword ptr [rbp], ymm9 + vmovups ymmword ptr [rsi], ymm10 + vmovups ymmword ptr [rdi], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [r9], ymm14 + vmovups ymmword ptr [r8], ymm15 + mov rbp, qword ptr [rsp + 960] + mov rsi, qword ptr [rsp + 376] + mov rdi, qword ptr [rsp + 312] + mov r10, qword ptr [rsp + 256] + mov r11, qword ptr [rsp + 192] + mov r9, qword ptr [rsp + 128] + mov r8, qword ptr [rsp + 64] + vmovups ymm0, ymmword ptr [rbp] + vmovups ymm1, ymmword ptr [rsi] + vmovups ymm2, ymmword ptr [rdi] + vmovups ymm3, ymmword ptr [r10] + vmovups ymm4, ymmword ptr [r11] + vmovups ymm5, ymmword ptr [r9] + vmovups ymm6, ymmword ptr [r8] + vmovups ymm7, ymmword ptr [rcx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rbp], ymm8 + vmovups ymmword ptr [rsi], ymm9 + vmovups ymmword ptr [rdi], ymm10 + vmovups ymmword ptr [r10], ymm11 + vmovups ymmword ptr [r11], ymm12 + vmovups ymmword ptr [r9], ymm13 + vmovups ymmword ptr [r8], ymm14 + vmovups ymmword ptr [rcx], ymm15 + mov rsi, qword ptr [rsp + 816] + vmovups ymm0, ymmword ptr [rsi] + vmovups ymm1, ymmword ptr [rax] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rsi], ymm8 + vmovups ymmword ptr [rax], ymm9 + mov rax, qword ptr [rsp + 792] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 800] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rbx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rbx], ymm9 + mov rax, qword ptr [rsp + 824] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [r14] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [r14], ymm9 + mov rax, qword ptr [rsp + 848] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [r15] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [r15], ymm9 + mov rax, qword ptr [rsp + 856] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [r12] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [r12], ymm9 + mov rax, qword ptr [rsp + 864] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [r13] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [r13], ymm9 + mov rax, qword ptr [rsp + 896] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rbp] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rbp], ymm9 + mov rax, qword ptr [rsp + 720] + mov rdx, qword ptr [rsp + 432] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 744] + mov rdx, qword ptr [rsp + 424] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 680] + mov rdx, qword ptr [rsp + 416] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 672] + mov rdx, qword ptr [rsp + 408] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 704] + mov rdx, qword ptr [rsp + 400] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 776] + mov rdx, qword ptr [rsp + 392] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 872] + mov rdx, qword ptr [rsp + 384] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 880] + mov rdx, qword ptr [rsp + 376] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 648] + mov rdx, qword ptr [rsp + 368] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 664] + mov rdx, qword ptr [rsp + 360] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 736] + mov rdx, qword ptr [rsp + 352] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 752] + mov rdx, qword ptr [rsp + 344] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 808] + mov rdx, qword ptr [rsp + 336] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 832] + mov rdx, qword ptr [rsp + 328] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 840] + mov rdx, qword ptr [rsp + 320] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 888] + mov rdx, qword ptr [rsp + 312] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 576] + mov rdx, qword ptr [rsp + 248] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 608] + mov rdx, qword ptr [rsp + 304] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 656] + mov rdx, qword ptr [rsp + 296] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 688] + mov rdx, qword ptr [rsp + 288] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 728] + mov rdx, qword ptr [rsp + 280] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 760] + mov rdx, qword ptr [rsp + 272] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 768] + mov rdx, qword ptr [rsp + 264] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 784] + mov rdx, qword ptr [rsp + 256] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 536] + mov rdx, qword ptr [rsp + 184] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 544] + mov rdx, qword ptr [rsp + 240] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 592] + mov rdx, qword ptr [rsp + 232] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 600] + mov rdx, qword ptr [rsp + 224] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 632] + mov rdx, qword ptr [rsp + 216] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 640] + mov rdx, qword ptr [rsp + 208] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 696] + mov rdx, qword ptr [rsp + 200] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 712] + mov rdx, qword ptr [rsp + 192] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 464] + mov rdx, qword ptr [rsp + 120] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 472] + mov rdx, qword ptr [rsp + 176] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 504] + mov rdx, qword ptr [rsp + 168] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 528] + mov rdx, qword ptr [rsp + 160] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 568] + mov rdx, qword ptr [rsp + 152] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 584] + mov rdx, qword ptr [rsp + 144] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 616] + mov rdx, qword ptr [rsp + 136] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 624] + mov rdx, qword ptr [rsp + 128] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 944] + mov rdx, qword ptr [rsp + 56] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 112] + mov rdx, qword ptr [rsp + 928] + vmovups ymm0, ymmword ptr [rdx] + vmovups ymm1, ymmword ptr [rax] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rdx], ymm8 + vmovups ymmword ptr [rax], ymm9 + mov rax, qword ptr [rsp + 448] + mov rdx, qword ptr [rsp + 104] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 480] + mov rdx, qword ptr [rsp + 96] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 496] + mov rdx, qword ptr [rsp + 88] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 512] + mov rdx, qword ptr [rsp + 80] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 552] + mov rdx, qword ptr [rsp + 72] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 560] + mov rdx, qword ptr [rsp + 64] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 952] + mov rdx, qword ptr [rsp + 920] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 936] + mov rdx, qword ptr [rsp + 48] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 40] + mov rdx, qword ptr [rsp + 912] + vmovups ymm0, ymmword ptr [rdx] + vmovups ymm1, ymmword ptr [rax] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rdx], ymm8 + vmovups ymmword ptr [rax], ymm9 + mov rax, qword ptr [rsp + 32] + mov rdx, qword ptr [rsp + 904] + vmovups ymm0, ymmword ptr [rdx] + vmovups ymm1, ymmword ptr [rax] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rdx], ymm8 + vmovups ymmword ptr [rax], ymm9 + mov rax, qword ptr [rsp + 440] + mov rdx, qword ptr [rsp + 24] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 456] + mov rdx, qword ptr [rsp + 16] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 488] + mov rdx, qword ptr [rsp + 8] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + mov rax, qword ptr [rsp + 520] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 +LBB7_2: + vmovaps xmm6, xmmword ptr [rsp + 1024] + vmovaps xmm7, xmmword ptr [rsp + 1040] + vmovaps xmm8, xmmword ptr [rsp + 1056] + vmovaps xmm9, xmmword ptr [rsp + 1072] + vmovaps xmm10, xmmword ptr [rsp + 1088] + vmovaps xmm11, xmmword ptr [rsp + 1104] + vmovaps xmm12, xmmword ptr [rsp + 1120] + vmovaps xmm13, xmmword ptr [rsp + 1136] + vmovaps xmm14, xmmword ptr [rsp + 1152] + vmovaps xmm15, xmmword ptr [rsp + 1168] + add rsp, 1192 + pop rbx + pop rbp + pop rdi + pop rsi + pop r12 + pop r13 + pop r14 + pop r15 + vzeroupper + ret +fht_helper_float_10_recursive ENDP + +fht_helper_float_11_recursive PROC FRAME + push r14 + .pushreg r14 + push rsi + .pushreg rsi + push rdi + .pushreg rdi + push rbx + .pushreg rbx + sub rsp, 168 + .allocstack 168 + vmovaps xmmword ptr [rsp + 144], xmm15 + .savexmm128 xmm15, 144 + vmovaps xmmword ptr [rsp + 128], xmm14 + .savexmm128 xmm14, 128 + vmovaps xmmword ptr [rsp + 112], xmm13 + .savexmm128 xmm13, 112 + vmovaps xmmword ptr [rsp + 96], xmm12 + .savexmm128 xmm12, 96 + vmovaps xmmword ptr [rsp + 80], xmm11 + .savexmm128 xmm11, 80 + vmovaps xmmword ptr [rsp + 64], xmm10 + .savexmm128 xmm10, 64 + vmovaps xmmword ptr [rsp + 48], xmm9 + .savexmm128 xmm9, 48 + vmovaps xmmword ptr [rsp + 32], xmm8 + .savexmm128 xmm8, 32 + vmovaps xmmword ptr [rsp + 16], xmm7 + .savexmm128 xmm7, 16 + vmovaps xmmword ptr [rsp], xmm6 + .savexmm128 xmm6, 0 + .endprolog + cmp edx, 11 + jne LBB8_5 + mov rax, -64 + xor edx, edx +LBB8_2: + lea r8, [rcx + rdx] + lea r9, [rcx + rdx] + add r9, 32 + lea r10, [rcx + rdx + 64] + lea r11, [rcx + rdx + 96] + lea rsi, [rcx + rdx + 128] + lea rdi, [rcx + rdx] + add rdi, 160 + lea rbx, [rcx + rdx] + add rbx, 192 + lea r14, [rcx + rdx] + add r14, 224 + vmovups ymm0, ymmword ptr [r8] + vmovups ymm1, ymmword ptr [r9] + vmovups ymm2, ymmword ptr [r10] + vmovups ymm3, ymmword ptr [r11] + vmovups ymm4, ymmword ptr [rsi] + vmovups ymm5, ymmword ptr [rdi] + vmovups ymm6, ymmword ptr [rbx] + vmovups ymm7, ymmword ptr [r14] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [r8], ymm8 + vmovups ymmword ptr [r9], ymm9 + vmovups ymmword ptr [r10], ymm10 + vmovups ymmword ptr [r11], ymm11 + vmovups ymmword ptr [rsi], ymm12 + vmovups ymmword ptr [rdi], ymm13 + vmovups ymmword ptr [rbx], ymm14 + vmovups ymmword ptr [r14], ymm15 + add rax, 64 + add rdx, 256 + cmp rax, 1984 + jb LBB8_2 + lea rax, [rcx + 256] + lea rdx, [rcx + 512] + lea r8, [rcx + 768] + lea r9, [rcx + 1024] + lea r10, [rcx + 1280] + lea r11, [rcx + 1536] + lea rsi, [rcx + 1792] + vmovups ymm0, ymmword ptr [rcx] + vmovups ymm1, ymmword ptr [rax] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rcx], ymm8 + vmovups ymmword ptr [rax], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + lea rax, [rcx + 32] + lea rdx, [rcx + 288] + lea r8, [rcx + 544] + lea r9, [rcx + 800] + lea r10, [rcx + 1056] + lea r11, [rcx + 1312] + lea rsi, [rcx + 1568] + lea rdi, [rcx + 1824] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 64] + lea rdx, [rcx + 320] + lea r8, [rcx + 576] + lea r9, [rcx + 832] + lea r10, [rcx + 1088] + lea r11, [rcx + 1344] + lea rsi, [rcx + 1600] + lea rdi, [rcx + 1856] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 96] + lea rdx, [rcx + 352] + lea r8, [rcx + 608] + lea r9, [rcx + 864] + lea r10, [rcx + 1120] + lea r11, [rcx + 1376] + lea rsi, [rcx + 1632] + lea rdi, [rcx + 1888] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 128] + lea rdx, [rcx + 384] + lea r8, [rcx + 640] + lea r9, [rcx + 896] + lea r10, [rcx + 1152] + lea r11, [rcx + 1408] + lea rsi, [rcx + 1664] + lea rdi, [rcx + 1920] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 160] + lea rdx, [rcx + 416] + lea r8, [rcx + 672] + lea r9, [rcx + 928] + lea r10, [rcx + 1184] + lea r11, [rcx + 1440] + lea rsi, [rcx + 1696] + lea rdi, [rcx + 1952] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 192] + lea rdx, [rcx + 448] + lea r8, [rcx + 704] + lea r9, [rcx + 960] + lea r10, [rcx + 1216] + lea r11, [rcx + 1472] + lea rsi, [rcx + 1728] + lea rdi, [rcx + 1984] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 224] + lea rdx, [rcx + 480] + lea r8, [rcx + 736] + lea r9, [rcx + 992] + lea r10, [rcx + 1248] + lea r11, [rcx + 1504] + lea rsi, [rcx + 1760] + lea rdi, [rcx + 2016] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 2048] + lea rdx, [rcx + 2304] + lea r8, [rcx + 2560] + lea r9, [rcx + 2816] + lea r10, [rcx + 3072] + lea r11, [rcx + 3328] + lea rsi, [rcx + 3584] + lea rdi, [rcx + 3840] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 2080] + lea rdx, [rcx + 2336] + lea r8, [rcx + 2592] + lea r9, [rcx + 2848] + lea r10, [rcx + 3104] + lea r11, [rcx + 3360] + lea rsi, [rcx + 3616] + lea rdi, [rcx + 3872] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 2112] + lea rdx, [rcx + 2368] + lea r8, [rcx + 2624] + lea r9, [rcx + 2880] + lea r10, [rcx + 3136] + lea r11, [rcx + 3392] + lea rsi, [rcx + 3648] + lea rdi, [rcx + 3904] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 2144] + lea rdx, [rcx + 2400] + lea r8, [rcx + 2656] + lea r9, [rcx + 2912] + lea r10, [rcx + 3168] + lea r11, [rcx + 3424] + lea rsi, [rcx + 3680] + lea rdi, [rcx + 3936] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 2176] + lea rdx, [rcx + 2432] + lea r8, [rcx + 2688] + lea r9, [rcx + 2944] + lea r10, [rcx + 3200] + lea r11, [rcx + 3456] + lea rsi, [rcx + 3712] + lea rdi, [rcx + 3968] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 2208] + lea rdx, [rcx + 2464] + lea r8, [rcx + 2720] + lea r9, [rcx + 2976] + lea r10, [rcx + 3232] + lea r11, [rcx + 3488] + lea rsi, [rcx + 3744] + lea rdi, [rcx + 4000] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 2240] + lea rdx, [rcx + 2496] + lea r8, [rcx + 2752] + lea r9, [rcx + 3008] + lea r10, [rcx + 3264] + lea r11, [rcx + 3520] + lea rsi, [rcx + 3776] + lea rdi, [rcx + 4032] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 2272] + lea rdx, [rcx + 2528] + lea r8, [rcx + 2784] + lea r9, [rcx + 3040] + lea r10, [rcx + 3296] + lea r11, [rcx + 3552] + lea rsi, [rcx + 3808] + lea rdi, [rcx + 4064] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 4096] + lea rdx, [rcx + 4352] + lea r8, [rcx + 4608] + lea r9, [rcx + 4864] + lea r10, [rcx + 5120] + lea r11, [rcx + 5376] + lea rsi, [rcx + 5632] + lea rdi, [rcx + 5888] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 4128] + lea rdx, [rcx + 4384] + lea r8, [rcx + 4640] + lea r9, [rcx + 4896] + lea r10, [rcx + 5152] + lea r11, [rcx + 5408] + lea rsi, [rcx + 5664] + lea rdi, [rcx + 5920] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 4160] + lea rdx, [rcx + 4416] + lea r8, [rcx + 4672] + lea r9, [rcx + 4928] + lea r10, [rcx + 5184] + lea r11, [rcx + 5440] + lea rsi, [rcx + 5696] + lea rdi, [rcx + 5952] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 4192] + lea rdx, [rcx + 4448] + lea r8, [rcx + 4704] + lea r9, [rcx + 4960] + lea r10, [rcx + 5216] + lea r11, [rcx + 5472] + lea rsi, [rcx + 5728] + lea rdi, [rcx + 5984] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 4224] + lea rdx, [rcx + 4480] + lea r8, [rcx + 4736] + lea r9, [rcx + 4992] + lea r10, [rcx + 5248] + lea r11, [rcx + 5504] + lea rsi, [rcx + 5760] + lea rdi, [rcx + 6016] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 4256] + lea rdx, [rcx + 4512] + lea r8, [rcx + 4768] + lea r9, [rcx + 5024] + lea r10, [rcx + 5280] + lea r11, [rcx + 5536] + lea rsi, [rcx + 5792] + lea rdi, [rcx + 6048] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 4288] + lea rdx, [rcx + 4544] + lea r8, [rcx + 4800] + lea r9, [rcx + 5056] + lea r10, [rcx + 5312] + lea r11, [rcx + 5568] + lea rsi, [rcx + 5824] + lea rdi, [rcx + 6080] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 4320] + lea rdx, [rcx + 4576] + lea r8, [rcx + 4832] + lea r9, [rcx + 5088] + lea r10, [rcx + 5344] + lea r11, [rcx + 5600] + lea rsi, [rcx + 5856] + lea rdi, [rcx + 6112] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 6144] + lea rdx, [rcx + 6400] + lea r8, [rcx + 6656] + lea r9, [rcx + 6912] + lea r10, [rcx + 7168] + lea r11, [rcx + 7424] + lea rsi, [rcx + 7680] + lea rdi, [rcx + 7936] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 6176] + lea rdx, [rcx + 6432] + lea r8, [rcx + 6688] + lea r9, [rcx + 6944] + lea r10, [rcx + 7200] + lea r11, [rcx + 7456] + lea rsi, [rcx + 7712] + lea rdi, [rcx + 7968] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 6208] + lea rdx, [rcx + 6464] + lea r8, [rcx + 6720] + lea r9, [rcx + 6976] + lea r10, [rcx + 7232] + lea r11, [rcx + 7488] + lea rsi, [rcx + 7744] + lea rdi, [rcx + 8000] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 6240] + lea rdx, [rcx + 6496] + lea r8, [rcx + 6752] + lea r9, [rcx + 7008] + lea r10, [rcx + 7264] + lea r11, [rcx + 7520] + lea rsi, [rcx + 7776] + lea rdi, [rcx + 8032] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 6272] + lea rdx, [rcx + 6528] + lea r8, [rcx + 6784] + lea r9, [rcx + 7040] + lea r10, [rcx + 7296] + lea r11, [rcx + 7552] + lea rsi, [rcx + 7808] + lea rdi, [rcx + 8064] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 6304] + lea rdx, [rcx + 6560] + lea r8, [rcx + 6816] + lea r9, [rcx + 7072] + lea r10, [rcx + 7328] + lea r11, [rcx + 7584] + lea rsi, [rcx + 7840] + lea rdi, [rcx + 8096] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 6336] + lea rdx, [rcx + 6592] + lea r8, [rcx + 6848] + lea r9, [rcx + 7104] + lea r10, [rcx + 7360] + lea r11, [rcx + 7616] + lea rsi, [rcx + 7872] + lea rdi, [rcx + 8128] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + lea rax, [rcx + 6368] + lea rdx, [rcx + 6624] + lea r8, [rcx + 6880] + lea r9, [rcx + 7136] + lea r10, [rcx + 7392] + lea r11, [rcx + 7648] + lea rsi, [rcx + 7904] + lea rdi, [rcx + 8160] + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vmovups ymm4, ymmword ptr [r10] + vmovups ymm5, ymmword ptr [r11] + vmovups ymm6, ymmword ptr [rsi] + vmovups ymm7, ymmword ptr [rdi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rdx], ymm9 + vmovups ymmword ptr [r8], ymm10 + vmovups ymmword ptr [r9], ymm11 + vmovups ymmword ptr [r10], ymm12 + vmovups ymmword ptr [r11], ymm13 + vmovups ymmword ptr [rsi], ymm14 + vmovups ymmword ptr [rdi], ymm15 + mov rax, -8 +LBB8_4: + lea rdx, [rcx + 2048] + lea r8, [rcx + 4096] + lea r9, [rcx + 6144] + vmovups ymm0, ymmword ptr [rcx] + vmovups ymm1, ymmword ptr [rdx] + vmovups ymm2, ymmword ptr [r8] + vmovups ymm3, ymmword ptr [r9] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rcx], ymm0 + vmovups ymmword ptr [rdx], ymm1 + vmovups ymmword ptr [r8], ymm2 + vmovups ymmword ptr [r9], ymm3 + add rax, 8 + add rcx, 32 + cmp rax, 504 + jb LBB8_4 +LBB8_5: + vmovaps xmm6, xmmword ptr [rsp] + vmovaps xmm7, xmmword ptr [rsp + 16] + vmovaps xmm8, xmmword ptr [rsp + 32] + vmovaps xmm9, xmmword ptr [rsp + 48] + vmovaps xmm10, xmmword ptr [rsp + 64] + vmovaps xmm11, xmmword ptr [rsp + 80] + vmovaps xmm12, xmmword ptr [rsp + 96] + vmovaps xmm13, xmmword ptr [rsp + 112] + vmovaps xmm14, xmmword ptr [rsp + 128] + vmovaps xmm15, xmmword ptr [rsp + 144] + add rsp, 168 + pop rbx + pop rdi + pop rsi + pop r14 + vzeroupper + ret +fht_helper_float_11_recursive ENDP + +rabitq_fht_avx_float_1 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_1 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_1 ENDP + +fht_helper_float_1 PROC FRAME + sub rsp, 24 + .allocstack 24 + .endprolog + mov qword ptr [rsp + 16], rcx + mov dword ptr [rsp + 12], 0 +LBB1_1: + cmp dword ptr [rsp + 12], 2 + jge LBB1_8 + mov dword ptr [rsp + 8], 0 +LBB1_3: + cmp dword ptr [rsp + 8], 1 + jge LBB1_6 + mov rax, qword ptr [rsp + 16] + mov ecx, dword ptr [rsp + 12] + add ecx, dword ptr [rsp + 8] + movsxd rcx, ecx + vmovss xmm0, dword ptr [rax + 4*rcx] + vmovss dword ptr [rsp + 4], xmm0 + mov rax, qword ptr [rsp + 16] + mov ecx, dword ptr [rsp + 12] + add ecx, dword ptr [rsp + 8] + add ecx, 1 + movsxd rcx, ecx + vmovss xmm0, dword ptr [rax + 4*rcx] + vmovss dword ptr [rsp], xmm0 + vmovss xmm0, dword ptr [rsp + 4] + vaddss xmm0, xmm0, dword ptr [rsp] + mov rax, qword ptr [rsp + 16] + mov ecx, dword ptr [rsp + 12] + add ecx, dword ptr [rsp + 8] + movsxd rcx, ecx + vmovss dword ptr [rax + 4*rcx], xmm0 + vmovss xmm0, dword ptr [rsp + 4] + vsubss xmm0, xmm0, dword ptr [rsp] + mov rax, qword ptr [rsp + 16] + mov ecx, dword ptr [rsp + 12] + add ecx, dword ptr [rsp + 8] + add ecx, 1 + movsxd rcx, ecx + vmovss dword ptr [rax + 4*rcx], xmm0 + mov eax, dword ptr [rsp + 8] + add eax, 1 + mov dword ptr [rsp + 8], eax + jmp LBB1_3 +LBB1_6: + jmp LBB1_7 +LBB1_7: + mov eax, dword ptr [rsp + 12] + add eax, 2 + mov dword ptr [rsp + 12], eax + jmp LBB1_1 +LBB1_8: + add rsp, 24 + ret +fht_helper_float_1 ENDP + +rabitq_fht_avx_float_2 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_2 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_2 ENDP + +fht_helper_float_2 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov dword ptr [rsp + 28], 0 +LBB3_1: + cmp dword ptr [rsp + 28], 4 + jge LBB3_8 + mov dword ptr [rsp + 24], 0 +LBB3_3: + cmp dword ptr [rsp + 24], 1 + jge LBB3_6 + mov rax, qword ptr [rsp + 32] + mov ecx, dword ptr [rsp + 28] + add ecx, dword ptr [rsp + 24] + movsxd rcx, ecx + vmovss xmm0, dword ptr [rax + 4*rcx] + vmovss dword ptr [rsp + 20], xmm0 + mov rax, qword ptr [rsp + 32] + mov ecx, dword ptr [rsp + 28] + add ecx, dword ptr [rsp + 24] + add ecx, 1 + movsxd rcx, ecx + vmovss xmm0, dword ptr [rax + 4*rcx] + vmovss dword ptr [rsp + 16], xmm0 + vmovss xmm0, dword ptr [rsp + 20] + vaddss xmm0, xmm0, dword ptr [rsp + 16] + mov rax, qword ptr [rsp + 32] + mov ecx, dword ptr [rsp + 28] + add ecx, dword ptr [rsp + 24] + movsxd rcx, ecx + vmovss dword ptr [rax + 4*rcx], xmm0 + vmovss xmm0, dword ptr [rsp + 20] + vsubss xmm0, xmm0, dword ptr [rsp + 16] + mov rax, qword ptr [rsp + 32] + mov ecx, dword ptr [rsp + 28] + add ecx, dword ptr [rsp + 24] + add ecx, 1 + movsxd rcx, ecx + vmovss dword ptr [rax + 4*rcx], xmm0 + mov eax, dword ptr [rsp + 24] + add eax, 1 + mov dword ptr [rsp + 24], eax + jmp LBB3_3 +LBB3_6: + jmp LBB3_7 +LBB3_7: + mov eax, dword ptr [rsp + 28] + add eax, 2 + mov dword ptr [rsp + 28], eax + jmp LBB3_1 +LBB3_8: + mov dword ptr [rsp + 12], 0 +LBB3_9: + cmp dword ptr [rsp + 12], 4 + jge LBB3_16 + mov dword ptr [rsp + 8], 0 +LBB3_11: + cmp dword ptr [rsp + 8], 2 + jge LBB3_14 + mov rax, qword ptr [rsp + 32] + mov ecx, dword ptr [rsp + 12] + add ecx, dword ptr [rsp + 8] + movsxd rcx, ecx + vmovss xmm0, dword ptr [rax + 4*rcx] + vmovss dword ptr [rsp + 4], xmm0 + mov rax, qword ptr [rsp + 32] + mov ecx, dword ptr [rsp + 12] + add ecx, dword ptr [rsp + 8] + add ecx, 2 + movsxd rcx, ecx + vmovss xmm0, dword ptr [rax + 4*rcx] + vmovss dword ptr [rsp], xmm0 + vmovss xmm0, dword ptr [rsp + 4] + vaddss xmm0, xmm0, dword ptr [rsp] + mov rax, qword ptr [rsp + 32] + mov ecx, dword ptr [rsp + 12] + add ecx, dword ptr [rsp + 8] + movsxd rcx, ecx + vmovss dword ptr [rax + 4*rcx], xmm0 + vmovss xmm0, dword ptr [rsp + 4] + vsubss xmm0, xmm0, dword ptr [rsp] + mov rax, qword ptr [rsp + 32] + mov ecx, dword ptr [rsp + 12] + add ecx, dword ptr [rsp + 8] + add ecx, 2 + movsxd rcx, ecx + vmovss dword ptr [rax + 4*rcx], xmm0 + mov eax, dword ptr [rsp + 8] + add eax, 1 + mov dword ptr [rsp + 8], eax + jmp LBB3_11 +LBB3_14: + jmp LBB3_15 +LBB3_15: + mov eax, dword ptr [rsp + 12] + add eax, 4 + mov dword ptr [rsp + 12], eax + jmp LBB3_9 +LBB3_16: + add rsp, 40 + ret +fht_helper_float_2 ENDP + +rabitq_fht_avx_float_3 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_3 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_3 ENDP + +fht_helper_float_3 PROC FRAME + sub rsp, 184 + .allocstack 184 + vmovaps xmmword ptr [rsp + 160], xmm15 + .savexmm128 xmm15, 160 + vmovaps xmmword ptr [rsp + 144], xmm14 + .savexmm128 xmm14, 144 + vmovaps xmmword ptr [rsp + 128], xmm13 + .savexmm128 xmm13, 128 + vmovaps xmmword ptr [rsp + 112], xmm12 + .savexmm128 xmm12, 112 + vmovaps xmmword ptr [rsp + 96], xmm11 + .savexmm128 xmm11, 96 + vmovaps xmmword ptr [rsp + 80], xmm10 + .savexmm128 xmm10, 80 + vmovaps xmmword ptr [rsp + 64], xmm9 + .savexmm128 xmm9, 64 + vmovaps xmmword ptr [rsp + 48], xmm8 + .savexmm128 xmm8, 48 + vmovaps xmmword ptr [rsp + 32], xmm7 + .savexmm128 xmm7, 32 + vmovaps xmmword ptr [rsp + 16], xmm6 + .savexmm128 xmm6, 16 + .endprolog + mov qword ptr [rsp + 8], rcx + mov dword ptr [rsp + 4], 0 +LBB5_1: + cmp dword ptr [rsp + 4], 8 + jge LBB5_4 + mov rax, qword ptr [rsp + 8] + movsxd rcx, dword ptr [rsp + 4] + shl rcx, 2 + add rax, rcx + vmovups ymm0, ymmword ptr [rax] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vmovups ymmword ptr [rax], ymm0 + mov eax, dword ptr [rsp + 4] + add eax, 8 + mov dword ptr [rsp + 4], eax + jmp LBB5_1 +LBB5_4: + vmovaps xmm6, xmmword ptr [rsp + 16] + vmovaps xmm7, xmmword ptr [rsp + 32] + vmovaps xmm8, xmmword ptr [rsp + 48] + vmovaps xmm9, xmmword ptr [rsp + 64] + vmovaps xmm10, xmmword ptr [rsp + 80] + vmovaps xmm11, xmmword ptr [rsp + 96] + vmovaps xmm12, xmmword ptr [rsp + 112] + vmovaps xmm13, xmmword ptr [rsp + 128] + vmovaps xmm14, xmmword ptr [rsp + 144] + vmovaps xmm15, xmmword ptr [rsp + 160] + add rsp, 184 + vzeroupper + ret +fht_helper_float_3 ENDP + +rabitq_fht_avx_float_4 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_4 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_4 ENDP + +fht_helper_float_4 PROC FRAME + sub rsp, 184 + .allocstack 184 + vmovaps xmmword ptr [rsp + 160], xmm15 + .savexmm128 xmm15, 160 + vmovaps xmmword ptr [rsp + 144], xmm14 + .savexmm128 xmm14, 144 + vmovaps xmmword ptr [rsp + 128], xmm13 + .savexmm128 xmm13, 128 + vmovaps xmmword ptr [rsp + 112], xmm12 + .savexmm128 xmm12, 112 + vmovaps xmmword ptr [rsp + 96], xmm11 + .savexmm128 xmm11, 96 + vmovaps xmmword ptr [rsp + 80], xmm10 + .savexmm128 xmm10, 80 + vmovaps xmmword ptr [rsp + 64], xmm9 + .savexmm128 xmm9, 64 + vmovaps xmmword ptr [rsp + 48], xmm8 + .savexmm128 xmm8, 48 + vmovaps xmmword ptr [rsp + 32], xmm7 + .savexmm128 xmm7, 32 + vmovaps xmmword ptr [rsp + 16], xmm6 + .savexmm128 xmm6, 16 + .endprolog + mov qword ptr [rsp + 8], rcx + mov dword ptr [rsp + 4], 0 +LBB7_1: + cmp dword ptr [rsp + 4], 16 + jge LBB7_8 + mov dword ptr [rsp], 0 +LBB7_3: + cmp dword ptr [rsp], 8 + jge LBB7_6 + mov rax, qword ptr [rsp + 8] + movsxd rcx, dword ptr [rsp + 4] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 8] + movsxd rdx, dword ptr [rsp + 4] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp] + add eax, 8 + mov dword ptr [rsp], eax + jmp LBB7_3 +LBB7_6: + jmp LBB7_7 +LBB7_7: + mov eax, dword ptr [rsp + 4] + add eax, 16 + mov dword ptr [rsp + 4], eax + jmp LBB7_1 +LBB7_8: + vmovaps xmm6, xmmword ptr [rsp + 16] + vmovaps xmm7, xmmword ptr [rsp + 32] + vmovaps xmm8, xmmword ptr [rsp + 48] + vmovaps xmm9, xmmword ptr [rsp + 64] + vmovaps xmm10, xmmword ptr [rsp + 80] + vmovaps xmm11, xmmword ptr [rsp + 96] + vmovaps xmm12, xmmword ptr [rsp + 112] + vmovaps xmm13, xmmword ptr [rsp + 128] + vmovaps xmm14, xmmword ptr [rsp + 144] + vmovaps xmm15, xmmword ptr [rsp + 160] + add rsp, 184 + vzeroupper + ret +fht_helper_float_4 ENDP + +rabitq_fht_avx_float_5 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_5 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_5 ENDP + +fht_helper_float_5 PROC FRAME + sub rsp, 184 + .allocstack 184 + vmovaps xmmword ptr [rsp + 160], xmm15 + .savexmm128 xmm15, 160 + vmovaps xmmword ptr [rsp + 144], xmm14 + .savexmm128 xmm14, 144 + vmovaps xmmword ptr [rsp + 128], xmm13 + .savexmm128 xmm13, 128 + vmovaps xmmword ptr [rsp + 112], xmm12 + .savexmm128 xmm12, 112 + vmovaps xmmword ptr [rsp + 96], xmm11 + .savexmm128 xmm11, 96 + vmovaps xmmword ptr [rsp + 80], xmm10 + .savexmm128 xmm10, 80 + vmovaps xmmword ptr [rsp + 64], xmm9 + .savexmm128 xmm9, 64 + vmovaps xmmword ptr [rsp + 48], xmm8 + .savexmm128 xmm8, 48 + vmovaps xmmword ptr [rsp + 32], xmm7 + .savexmm128 xmm7, 32 + vmovaps xmmword ptr [rsp + 16], xmm6 + .savexmm128 xmm6, 16 + .endprolog + mov qword ptr [rsp + 8], rcx + mov dword ptr [rsp + 4], 0 +LBB9_1: + cmp dword ptr [rsp + 4], 32 + jge LBB9_8 + mov dword ptr [rsp], 0 +LBB9_3: + cmp dword ptr [rsp], 8 + jge LBB9_6 + mov rax, qword ptr [rsp + 8] + movsxd rcx, dword ptr [rsp + 4] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 8] + movsxd rdx, dword ptr [rsp + 4] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 8] + movsxd r8, dword ptr [rsp + 4] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 8] + movsxd r9, dword ptr [rsp + 4] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp] + shl r9, 2 + add r8, r9 + add r8, 96 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rcx], ymm1 + vmovups ymmword ptr [rdx], ymm2 + vmovups ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp] + add eax, 8 + mov dword ptr [rsp], eax + jmp LBB9_3 +LBB9_6: + jmp LBB9_7 +LBB9_7: + mov eax, dword ptr [rsp + 4] + add eax, 32 + mov dword ptr [rsp + 4], eax + jmp LBB9_1 +LBB9_8: + vmovaps xmm6, xmmword ptr [rsp + 16] + vmovaps xmm7, xmmword ptr [rsp + 32] + vmovaps xmm8, xmmword ptr [rsp + 48] + vmovaps xmm9, xmmword ptr [rsp + 64] + vmovaps xmm10, xmmword ptr [rsp + 80] + vmovaps xmm11, xmmword ptr [rsp + 96] + vmovaps xmm12, xmmword ptr [rsp + 112] + vmovaps xmm13, xmmword ptr [rsp + 128] + vmovaps xmm14, xmmword ptr [rsp + 144] + vmovaps xmm15, xmmword ptr [rsp + 160] + add rsp, 184 + vzeroupper + ret +fht_helper_float_5 ENDP + +rabitq_fht_avx_float_12 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_12 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_12 ENDP + +fht_helper_float_12 PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 200 + .allocstack 200 + vmovaps xmmword ptr [rsp + 176], xmm15 + .savexmm128 xmm15, 176 + vmovaps xmmword ptr [rsp + 160], xmm14 + .savexmm128 xmm14, 160 + vmovaps xmmword ptr [rsp + 144], xmm13 + .savexmm128 xmm13, 144 + vmovaps xmmword ptr [rsp + 128], xmm12 + .savexmm128 xmm12, 128 + vmovaps xmmword ptr [rsp + 112], xmm11 + .savexmm128 xmm11, 112 + vmovaps xmmword ptr [rsp + 96], xmm10 + .savexmm128 xmm10, 96 + vmovaps xmmword ptr [rsp + 80], xmm9 + .savexmm128 xmm9, 80 + vmovaps xmmword ptr [rsp + 64], xmm8 + .savexmm128 xmm8, 64 + vmovaps xmmword ptr [rsp + 48], xmm7 + .savexmm128 xmm7, 48 + vmovaps xmmword ptr [rsp + 32], xmm6 + .savexmm128 xmm6, 32 + .endprolog + mov qword ptr [rsp + 24], rcx + mov dword ptr [rsp + 20], 0 +LBB11_1: + cmp dword ptr [rsp + 20], 4096 + jge LBB11_8 + mov dword ptr [rsp + 16], 0 +LBB11_3: + cmp dword ptr [rsp + 16], 8 + jge LBB11_6 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 20] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 16] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 20] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 16] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 20] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 16] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 20] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 16] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 24] + movsxd r10, dword ptr [rsp + 20] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 16] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 24] + movsxd r11, dword ptr [rsp + 20] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 16] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 24] + movsxd rsi, dword ptr [rsp + 20] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 16] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 24] + movsxd rdi, dword ptr [rsp + 20] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 16] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 16] + add eax, 8 + mov dword ptr [rsp + 16], eax + jmp LBB11_3 +LBB11_6: + jmp LBB11_7 +LBB11_7: + mov eax, dword ptr [rsp + 20] + add eax, 64 + mov dword ptr [rsp + 20], eax + jmp LBB11_1 +LBB11_8: + mov dword ptr [rsp + 12], 0 +LBB11_9: + cmp dword ptr [rsp + 12], 4096 + jge LBB11_16 + mov dword ptr [rsp + 8], 0 +LBB11_11: + cmp dword ptr [rsp + 8], 64 + jge LBB11_14 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 12] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 8] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 12] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 8] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 12] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 8] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 12] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 8] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 24] + movsxd r10, dword ptr [rsp + 12] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 8] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 24] + movsxd r11, dword ptr [rsp + 12] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 8] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 24] + movsxd rsi, dword ptr [rsp + 12] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 8] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 24] + movsxd rdi, dword ptr [rsp + 12] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 8] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 8] + add eax, 8 + mov dword ptr [rsp + 8], eax + jmp LBB11_11 +LBB11_14: + jmp LBB11_15 +LBB11_15: + mov eax, dword ptr [rsp + 12] + add eax, 512 + mov dword ptr [rsp + 12], eax + jmp LBB11_9 +LBB11_16: + mov dword ptr [rsp + 4], 0 +LBB11_17: + cmp dword ptr [rsp + 4], 4096 + jge LBB11_24 + mov dword ptr [rsp], 0 +LBB11_19: + cmp dword ptr [rsp], 512 + jge LBB11_22 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 4] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 4] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 4] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 4] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 24] + movsxd r10, dword ptr [rsp + 4] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 24] + movsxd r11, dword ptr [rsp + 4] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 24] + movsxd rsi, dword ptr [rsp + 4] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 24] + movsxd rdi, dword ptr [rsp + 4] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp] + add eax, 8 + mov dword ptr [rsp], eax + jmp LBB11_19 +LBB11_22: + jmp LBB11_23 +LBB11_23: + mov eax, dword ptr [rsp + 4] + add eax, 4096 + mov dword ptr [rsp + 4], eax + jmp LBB11_17 +LBB11_24: + vmovaps xmm6, xmmword ptr [rsp + 32] + vmovaps xmm7, xmmword ptr [rsp + 48] + vmovaps xmm8, xmmword ptr [rsp + 64] + vmovaps xmm9, xmmword ptr [rsp + 80] + vmovaps xmm10, xmmword ptr [rsp + 96] + vmovaps xmm11, xmmword ptr [rsp + 112] + vmovaps xmm12, xmmword ptr [rsp + 128] + vmovaps xmm13, xmmword ptr [rsp + 144] + vmovaps xmm14, xmmword ptr [rsp + 160] + vmovaps xmm15, xmmword ptr [rsp + 176] + add rsp, 200 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_12 ENDP + +rabitq_fht_avx_float_13 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_13 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_13 ENDP + +fht_helper_float_13 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 13 + call fht_helper_float_13_recursive + nop + add rsp, 40 + ret +fht_helper_float_13 ENDP + +rabitq_fht_avx_float_14 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_14 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_14 ENDP + +fht_helper_float_14 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 14 + call fht_helper_float_14_recursive + nop + add rsp, 40 + ret +fht_helper_float_14 ENDP + +rabitq_fht_avx_float_15 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_15 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_15 ENDP + +fht_helper_float_15 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 15 + call fht_helper_float_15_recursive + nop + add rsp, 40 + ret +fht_helper_float_15 ENDP + +rabitq_fht_avx_float_16 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_16 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_16 ENDP + +fht_helper_float_16 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 16 + call fht_helper_float_16_recursive + nop + add rsp, 40 + ret +fht_helper_float_16 ENDP + +rabitq_fht_avx_float_17 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_17 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_17 ENDP + +fht_helper_float_17 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 17 + call fht_helper_float_17_recursive + nop + add rsp, 40 + ret +fht_helper_float_17 ENDP + +rabitq_fht_avx_float_18 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_18 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_18 ENDP + +fht_helper_float_18 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 18 + call fht_helper_float_18_recursive + nop + add rsp, 40 + ret +fht_helper_float_18 ENDP + +rabitq_fht_avx_float_19 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_19 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_19 ENDP + +fht_helper_float_19 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 19 + call fht_helper_float_19_recursive + nop + add rsp, 40 + ret +fht_helper_float_19 ENDP + +rabitq_fht_avx_float_20 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_20 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_20 ENDP + +fht_helper_float_20 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 20 + call fht_helper_float_20_recursive + nop + add rsp, 40 + ret +fht_helper_float_20 ENDP + +rabitq_fht_avx_float_21 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_21 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_21 ENDP + +fht_helper_float_21 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 21 + call fht_helper_float_21_recursive + nop + add rsp, 40 + ret +fht_helper_float_21 ENDP + +rabitq_fht_avx_float_22 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_22 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_22 ENDP + +fht_helper_float_22 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 22 + call fht_helper_float_22_recursive + nop + add rsp, 40 + ret +fht_helper_float_22 ENDP + +rabitq_fht_avx_float_23 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_23 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_23 ENDP + +fht_helper_float_23 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 23 + call fht_helper_float_23_recursive + nop + add rsp, 40 + ret +fht_helper_float_23 ENDP + +rabitq_fht_avx_float_24 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_24 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_24 ENDP + +fht_helper_float_24 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 24 + call fht_helper_float_24_recursive + nop + add rsp, 40 + ret +fht_helper_float_24 ENDP + +rabitq_fht_avx_float_25 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_25 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_25 ENDP + +fht_helper_float_25 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 25 + call fht_helper_float_25_recursive + nop + add rsp, 40 + ret +fht_helper_float_25 ENDP + +rabitq_fht_avx_float_26 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_26 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_26 ENDP + +fht_helper_float_26 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 26 + call fht_helper_float_26_recursive + nop + add rsp, 40 + ret +fht_helper_float_26 ENDP + +rabitq_fht_avx_float_27 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_27 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_27 ENDP + +fht_helper_float_27 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 27 + call fht_helper_float_27_recursive + nop + add rsp, 40 + ret +fht_helper_float_27 ENDP + +rabitq_fht_avx_float_28 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_28 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_28 ENDP + +fht_helper_float_28 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 28 + call fht_helper_float_28_recursive + nop + add rsp, 40 + ret +fht_helper_float_28 ENDP + +rabitq_fht_avx_float_29 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_29 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_29 ENDP + +fht_helper_float_29 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 29 + call fht_helper_float_29_recursive + nop + add rsp, 40 + ret +fht_helper_float_29 ENDP + +rabitq_fht_avx_float_30 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_float_30 + nop + add rsp, 40 + ret +rabitq_fht_avx_float_30 ENDP + +fht_helper_float_30 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 30 + call fht_helper_float_30_recursive + nop + add rsp, 40 + ret +fht_helper_float_30 ENDP + +rabitq_fht_avx_double_1 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_1 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_1 ENDP + +fht_helper_double_1 PROC FRAME + sub rsp, 32 + .allocstack 32 + .endprolog + mov qword ptr [rsp + 24], rcx + mov dword ptr [rsp + 20], 0 +LBB49_1: + cmp dword ptr [rsp + 20], 2 + jge LBB49_8 + mov dword ptr [rsp + 16], 0 +LBB49_3: + cmp dword ptr [rsp + 16], 1 + jge LBB49_6 + mov rax, qword ptr [rsp + 24] + mov ecx, dword ptr [rsp + 20] + add ecx, dword ptr [rsp + 16] + movsxd rcx, ecx + vmovsd xmm0, qword ptr [rax + 8*rcx] + vmovsd qword ptr [rsp + 8], xmm0 + mov rax, qword ptr [rsp + 24] + mov ecx, dword ptr [rsp + 20] + add ecx, dword ptr [rsp + 16] + add ecx, 1 + movsxd rcx, ecx + vmovsd xmm0, qword ptr [rax + 8*rcx] + vmovsd qword ptr [rsp], xmm0 + vmovsd xmm0, qword ptr [rsp + 8] + vaddsd xmm0, xmm0, qword ptr [rsp] + mov rax, qword ptr [rsp + 24] + mov ecx, dword ptr [rsp + 20] + add ecx, dword ptr [rsp + 16] + movsxd rcx, ecx + vmovsd qword ptr [rax + 8*rcx], xmm0 + vmovsd xmm0, qword ptr [rsp + 8] + vsubsd xmm0, xmm0, qword ptr [rsp] + mov rax, qword ptr [rsp + 24] + mov ecx, dword ptr [rsp + 20] + add ecx, dword ptr [rsp + 16] + add ecx, 1 + movsxd rcx, ecx + vmovsd qword ptr [rax + 8*rcx], xmm0 + mov eax, dword ptr [rsp + 16] + add eax, 1 + mov dword ptr [rsp + 16], eax + jmp LBB49_3 +LBB49_6: + jmp LBB49_7 +LBB49_7: + mov eax, dword ptr [rsp + 20] + add eax, 2 + mov dword ptr [rsp + 20], eax + jmp LBB49_1 +LBB49_8: + add rsp, 32 + ret +fht_helper_double_1 ENDP + +rabitq_fht_avx_double_2 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_2 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_2 ENDP + +fht_helper_double_2 PROC FRAME + sub rsp, 184 + .allocstack 184 + vmovaps xmmword ptr [rsp + 160], xmm15 + .savexmm128 xmm15, 160 + vmovaps xmmword ptr [rsp + 144], xmm14 + .savexmm128 xmm14, 144 + vmovaps xmmword ptr [rsp + 128], xmm13 + .savexmm128 xmm13, 128 + vmovaps xmmword ptr [rsp + 112], xmm12 + .savexmm128 xmm12, 112 + vmovaps xmmword ptr [rsp + 96], xmm11 + .savexmm128 xmm11, 96 + vmovaps xmmword ptr [rsp + 80], xmm10 + .savexmm128 xmm10, 80 + vmovaps xmmword ptr [rsp + 64], xmm9 + .savexmm128 xmm9, 64 + vmovaps xmmword ptr [rsp + 48], xmm8 + .savexmm128 xmm8, 48 + vmovaps xmmword ptr [rsp + 32], xmm7 + .savexmm128 xmm7, 32 + vmovaps xmmword ptr [rsp + 16], xmm6 + .savexmm128 xmm6, 16 + .endprolog + mov qword ptr [rsp + 8], rcx + mov dword ptr [rsp + 4], 0 +LBB51_1: + cmp dword ptr [rsp + 4], 4 + jge LBB51_4 + mov rax, qword ptr [rsp + 8] + movsxd rcx, dword ptr [rsp + 4] + shl rcx, 3 + add rax, rcx + vmovupd ymm0, ymmword ptr [rax] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vmovupd ymmword ptr [rax], ymm0 + mov eax, dword ptr [rsp + 4] + add eax, 4 + mov dword ptr [rsp + 4], eax + jmp LBB51_1 +LBB51_4: + vmovaps xmm6, xmmword ptr [rsp + 16] + vmovaps xmm7, xmmword ptr [rsp + 32] + vmovaps xmm8, xmmword ptr [rsp + 48] + vmovaps xmm9, xmmword ptr [rsp + 64] + vmovaps xmm10, xmmword ptr [rsp + 80] + vmovaps xmm11, xmmword ptr [rsp + 96] + vmovaps xmm12, xmmword ptr [rsp + 112] + vmovaps xmm13, xmmword ptr [rsp + 128] + vmovaps xmm14, xmmword ptr [rsp + 144] + vmovaps xmm15, xmmword ptr [rsp + 160] + add rsp, 184 + vzeroupper + ret +fht_helper_double_2 ENDP + +rabitq_fht_avx_double_3 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_3 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_3 ENDP + +fht_helper_double_3 PROC FRAME + sub rsp, 184 + .allocstack 184 + vmovaps xmmword ptr [rsp + 160], xmm15 + .savexmm128 xmm15, 160 + vmovaps xmmword ptr [rsp + 144], xmm14 + .savexmm128 xmm14, 144 + vmovaps xmmword ptr [rsp + 128], xmm13 + .savexmm128 xmm13, 128 + vmovaps xmmword ptr [rsp + 112], xmm12 + .savexmm128 xmm12, 112 + vmovaps xmmword ptr [rsp + 96], xmm11 + .savexmm128 xmm11, 96 + vmovaps xmmword ptr [rsp + 80], xmm10 + .savexmm128 xmm10, 80 + vmovaps xmmword ptr [rsp + 64], xmm9 + .savexmm128 xmm9, 64 + vmovaps xmmword ptr [rsp + 48], xmm8 + .savexmm128 xmm8, 48 + vmovaps xmmword ptr [rsp + 32], xmm7 + .savexmm128 xmm7, 32 + vmovaps xmmword ptr [rsp + 16], xmm6 + .savexmm128 xmm6, 16 + .endprolog + mov qword ptr [rsp + 8], rcx + mov dword ptr [rsp + 4], 0 +LBB53_1: + cmp dword ptr [rsp + 4], 8 + jge LBB53_8 + mov dword ptr [rsp], 0 +LBB53_3: + cmp dword ptr [rsp], 4 + jge LBB53_6 + mov rax, qword ptr [rsp + 8] + movsxd rcx, dword ptr [rsp + 4] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 8] + movsxd rdx, dword ptr [rsp + 4] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp] + add eax, 4 + mov dword ptr [rsp], eax + jmp LBB53_3 +LBB53_6: + jmp LBB53_7 +LBB53_7: + mov eax, dword ptr [rsp + 4] + add eax, 8 + mov dword ptr [rsp + 4], eax + jmp LBB53_1 +LBB53_8: + vmovaps xmm6, xmmword ptr [rsp + 16] + vmovaps xmm7, xmmword ptr [rsp + 32] + vmovaps xmm8, xmmword ptr [rsp + 48] + vmovaps xmm9, xmmword ptr [rsp + 64] + vmovaps xmm10, xmmword ptr [rsp + 80] + vmovaps xmm11, xmmword ptr [rsp + 96] + vmovaps xmm12, xmmword ptr [rsp + 112] + vmovaps xmm13, xmmword ptr [rsp + 128] + vmovaps xmm14, xmmword ptr [rsp + 144] + vmovaps xmm15, xmmword ptr [rsp + 160] + add rsp, 184 + vzeroupper + ret +fht_helper_double_3 ENDP + +rabitq_fht_avx_double_4 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_4 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_4 ENDP + +fht_helper_double_4 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 4 + call fht_helper_double_4_recursive + nop + add rsp, 40 + ret +fht_helper_double_4 ENDP + +rabitq_fht_avx_double_5 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_5 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_5 ENDP + +fht_helper_double_5 PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 184 + .allocstack 184 + vmovaps xmmword ptr [rsp + 160], xmm15 + .savexmm128 xmm15, 160 + vmovaps xmmword ptr [rsp + 144], xmm14 + .savexmm128 xmm14, 144 + vmovaps xmmword ptr [rsp + 128], xmm13 + .savexmm128 xmm13, 128 + vmovaps xmmword ptr [rsp + 112], xmm12 + .savexmm128 xmm12, 112 + vmovaps xmmword ptr [rsp + 96], xmm11 + .savexmm128 xmm11, 96 + vmovaps xmmword ptr [rsp + 80], xmm10 + .savexmm128 xmm10, 80 + vmovaps xmmword ptr [rsp + 64], xmm9 + .savexmm128 xmm9, 64 + vmovaps xmmword ptr [rsp + 48], xmm8 + .savexmm128 xmm8, 48 + vmovaps xmmword ptr [rsp + 32], xmm7 + .savexmm128 xmm7, 32 + vmovaps xmmword ptr [rsp + 16], xmm6 + .savexmm128 xmm6, 16 + .endprolog + mov qword ptr [rsp + 8], rcx + mov dword ptr [rsp + 4], 0 +LBB57_1: + cmp dword ptr [rsp + 4], 32 + jge LBB57_8 + mov dword ptr [rsp], 0 +LBB57_3: + cmp dword ptr [rsp], 4 + jge LBB57_6 + mov rax, qword ptr [rsp + 8] + movsxd rcx, dword ptr [rsp + 4] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 8] + movsxd rdx, dword ptr [rsp + 4] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 8] + movsxd r8, dword ptr [rsp + 4] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 8] + movsxd r9, dword ptr [rsp + 4] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 8] + movsxd r10, dword ptr [rsp + 4] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 8] + movsxd r11, dword ptr [rsp + 4] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 8] + movsxd rsi, dword ptr [rsp + 4] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 8] + movsxd rdi, dword ptr [rsp + 4] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp] + add eax, 4 + mov dword ptr [rsp], eax + jmp LBB57_3 +LBB57_6: + jmp LBB57_7 +LBB57_7: + mov eax, dword ptr [rsp + 4] + add eax, 32 + mov dword ptr [rsp + 4], eax + jmp LBB57_1 +LBB57_8: + vmovaps xmm6, xmmword ptr [rsp + 16] + vmovaps xmm7, xmmword ptr [rsp + 32] + vmovaps xmm8, xmmword ptr [rsp + 48] + vmovaps xmm9, xmmword ptr [rsp + 64] + vmovaps xmm10, xmmword ptr [rsp + 80] + vmovaps xmm11, xmmword ptr [rsp + 96] + vmovaps xmm12, xmmword ptr [rsp + 112] + vmovaps xmm13, xmmword ptr [rsp + 128] + vmovaps xmm14, xmmword ptr [rsp + 144] + vmovaps xmm15, xmmword ptr [rsp + 160] + add rsp, 184 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_5 ENDP + +rabitq_fht_avx_double_6 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_6 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_6 ENDP + +fht_helper_double_6 PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 200 + .allocstack 200 + vmovaps xmmword ptr [rsp + 176], xmm15 + .savexmm128 xmm15, 176 + vmovaps xmmword ptr [rsp + 160], xmm14 + .savexmm128 xmm14, 160 + vmovaps xmmword ptr [rsp + 144], xmm13 + .savexmm128 xmm13, 144 + vmovaps xmmword ptr [rsp + 128], xmm12 + .savexmm128 xmm12, 128 + vmovaps xmmword ptr [rsp + 112], xmm11 + .savexmm128 xmm11, 112 + vmovaps xmmword ptr [rsp + 96], xmm10 + .savexmm128 xmm10, 96 + vmovaps xmmword ptr [rsp + 80], xmm9 + .savexmm128 xmm9, 80 + vmovaps xmmword ptr [rsp + 64], xmm8 + .savexmm128 xmm8, 64 + vmovaps xmmword ptr [rsp + 48], xmm7 + .savexmm128 xmm7, 48 + vmovaps xmmword ptr [rsp + 32], xmm6 + .savexmm128 xmm6, 32 + .endprolog + mov qword ptr [rsp + 24], rcx + mov dword ptr [rsp + 20], 0 +LBB59_1: + cmp dword ptr [rsp + 20], 64 + jge LBB59_8 + mov dword ptr [rsp + 16], 0 +LBB59_3: + cmp dword ptr [rsp + 16], 4 + jge LBB59_6 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 20] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 16] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 20] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 16] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 20] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 16] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 20] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 16] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 24] + movsxd r10, dword ptr [rsp + 20] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 16] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 24] + movsxd r11, dword ptr [rsp + 20] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 16] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 24] + movsxd rsi, dword ptr [rsp + 20] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 16] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 24] + movsxd rdi, dword ptr [rsp + 20] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 16] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 16] + add eax, 4 + mov dword ptr [rsp + 16], eax + jmp LBB59_3 +LBB59_6: + jmp LBB59_7 +LBB59_7: + mov eax, dword ptr [rsp + 20] + add eax, 32 + mov dword ptr [rsp + 20], eax + jmp LBB59_1 +LBB59_8: + mov dword ptr [rsp + 12], 0 +LBB59_9: + cmp dword ptr [rsp + 12], 64 + jge LBB59_16 + mov dword ptr [rsp + 8], 0 +LBB59_11: + cmp dword ptr [rsp + 8], 32 + jge LBB59_14 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 12] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 8] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 12] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 8] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp + 8] + add eax, 4 + mov dword ptr [rsp + 8], eax + jmp LBB59_11 +LBB59_14: + jmp LBB59_15 +LBB59_15: + mov eax, dword ptr [rsp + 12] + add eax, 64 + mov dword ptr [rsp + 12], eax + jmp LBB59_9 +LBB59_16: + vmovaps xmm6, xmmword ptr [rsp + 32] + vmovaps xmm7, xmmword ptr [rsp + 48] + vmovaps xmm8, xmmword ptr [rsp + 64] + vmovaps xmm9, xmmword ptr [rsp + 80] + vmovaps xmm10, xmmword ptr [rsp + 96] + vmovaps xmm11, xmmword ptr [rsp + 112] + vmovaps xmm12, xmmword ptr [rsp + 128] + vmovaps xmm13, xmmword ptr [rsp + 144] + vmovaps xmm14, xmmword ptr [rsp + 160] + vmovaps xmm15, xmmword ptr [rsp + 176] + add rsp, 200 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_6 ENDP + +rabitq_fht_avx_double_7 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_7 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_7 ENDP + +fht_helper_double_7 PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 200 + .allocstack 200 + vmovaps xmmword ptr [rsp + 176], xmm15 + .savexmm128 xmm15, 176 + vmovaps xmmword ptr [rsp + 160], xmm14 + .savexmm128 xmm14, 160 + vmovaps xmmword ptr [rsp + 144], xmm13 + .savexmm128 xmm13, 144 + vmovaps xmmword ptr [rsp + 128], xmm12 + .savexmm128 xmm12, 128 + vmovaps xmmword ptr [rsp + 112], xmm11 + .savexmm128 xmm11, 112 + vmovaps xmmword ptr [rsp + 96], xmm10 + .savexmm128 xmm10, 96 + vmovaps xmmword ptr [rsp + 80], xmm9 + .savexmm128 xmm9, 80 + vmovaps xmmword ptr [rsp + 64], xmm8 + .savexmm128 xmm8, 64 + vmovaps xmmword ptr [rsp + 48], xmm7 + .savexmm128 xmm7, 48 + vmovaps xmmword ptr [rsp + 32], xmm6 + .savexmm128 xmm6, 32 + .endprolog + mov qword ptr [rsp + 24], rcx + mov dword ptr [rsp + 20], 0 +LBB61_1: + cmp dword ptr [rsp + 20], 128 + jge LBB61_8 + mov dword ptr [rsp + 16], 0 +LBB61_3: + cmp dword ptr [rsp + 16], 4 + jge LBB61_6 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 20] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 16] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 20] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 16] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 20] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 16] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 20] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 16] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 24] + movsxd r10, dword ptr [rsp + 20] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 16] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 24] + movsxd r11, dword ptr [rsp + 20] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 16] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 24] + movsxd rsi, dword ptr [rsp + 20] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 16] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 24] + movsxd rdi, dword ptr [rsp + 20] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 16] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 16] + add eax, 4 + mov dword ptr [rsp + 16], eax + jmp LBB61_3 +LBB61_6: + jmp LBB61_7 +LBB61_7: + mov eax, dword ptr [rsp + 20] + add eax, 32 + mov dword ptr [rsp + 20], eax + jmp LBB61_1 +LBB61_8: + mov dword ptr [rsp + 12], 0 +LBB61_9: + cmp dword ptr [rsp + 12], 128 + jge LBB61_16 + mov dword ptr [rsp + 8], 0 +LBB61_11: + cmp dword ptr [rsp + 8], 32 + jge LBB61_14 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 12] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 8] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 12] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 8] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 12] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 8] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 12] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 8] + shl r9, 3 + add r8, r9 + add r8, 768 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 8] + add eax, 4 + mov dword ptr [rsp + 8], eax + jmp LBB61_11 +LBB61_14: + jmp LBB61_15 +LBB61_15: + mov eax, dword ptr [rsp + 12] + add eax, 128 + mov dword ptr [rsp + 12], eax + jmp LBB61_9 +LBB61_16: + vmovaps xmm6, xmmword ptr [rsp + 32] + vmovaps xmm7, xmmword ptr [rsp + 48] + vmovaps xmm8, xmmword ptr [rsp + 64] + vmovaps xmm9, xmmword ptr [rsp + 80] + vmovaps xmm10, xmmword ptr [rsp + 96] + vmovaps xmm11, xmmword ptr [rsp + 112] + vmovaps xmm12, xmmword ptr [rsp + 128] + vmovaps xmm13, xmmword ptr [rsp + 144] + vmovaps xmm14, xmmword ptr [rsp + 160] + vmovaps xmm15, xmmword ptr [rsp + 176] + add rsp, 200 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_7 ENDP + +rabitq_fht_avx_double_8 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_8 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_8 ENDP + +fht_helper_double_8 PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 200 + .allocstack 200 + vmovaps xmmword ptr [rsp + 176], xmm15 + .savexmm128 xmm15, 176 + vmovaps xmmword ptr [rsp + 160], xmm14 + .savexmm128 xmm14, 160 + vmovaps xmmword ptr [rsp + 144], xmm13 + .savexmm128 xmm13, 144 + vmovaps xmmword ptr [rsp + 128], xmm12 + .savexmm128 xmm12, 128 + vmovaps xmmword ptr [rsp + 112], xmm11 + .savexmm128 xmm11, 112 + vmovaps xmmword ptr [rsp + 96], xmm10 + .savexmm128 xmm10, 96 + vmovaps xmmword ptr [rsp + 80], xmm9 + .savexmm128 xmm9, 80 + vmovaps xmmword ptr [rsp + 64], xmm8 + .savexmm128 xmm8, 64 + vmovaps xmmword ptr [rsp + 48], xmm7 + .savexmm128 xmm7, 48 + vmovaps xmmword ptr [rsp + 32], xmm6 + .savexmm128 xmm6, 32 + .endprolog + mov qword ptr [rsp + 24], rcx + mov dword ptr [rsp + 20], 0 +LBB63_1: + cmp dword ptr [rsp + 20], 256 + jge LBB63_8 + mov dword ptr [rsp + 16], 0 +LBB63_3: + cmp dword ptr [rsp + 16], 4 + jge LBB63_6 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 20] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 16] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 20] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 16] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 20] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 16] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 20] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 16] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 24] + movsxd r10, dword ptr [rsp + 20] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 16] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 24] + movsxd r11, dword ptr [rsp + 20] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 16] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 24] + movsxd rsi, dword ptr [rsp + 20] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 16] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 24] + movsxd rdi, dword ptr [rsp + 20] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 16] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 16] + add eax, 4 + mov dword ptr [rsp + 16], eax + jmp LBB63_3 +LBB63_6: + jmp LBB63_7 +LBB63_7: + mov eax, dword ptr [rsp + 20] + add eax, 32 + mov dword ptr [rsp + 20], eax + jmp LBB63_1 +LBB63_8: + mov dword ptr [rsp + 12], 0 +LBB63_9: + cmp dword ptr [rsp + 12], 256 + jge LBB63_16 + mov dword ptr [rsp + 8], 0 +LBB63_11: + cmp dword ptr [rsp + 8], 32 + jge LBB63_14 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 12] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 8] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 12] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 8] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 12] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 8] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 12] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 8] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 24] + movsxd r10, dword ptr [rsp + 12] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 8] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 24] + movsxd r11, dword ptr [rsp + 12] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 8] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 24] + movsxd rsi, dword ptr [rsp + 12] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 8] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 24] + movsxd rdi, dword ptr [rsp + 12] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 8] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 8] + add eax, 4 + mov dword ptr [rsp + 8], eax + jmp LBB63_11 +LBB63_14: + jmp LBB63_15 +LBB63_15: + mov eax, dword ptr [rsp + 12] + add eax, 256 + mov dword ptr [rsp + 12], eax + jmp LBB63_9 +LBB63_16: + vmovaps xmm6, xmmword ptr [rsp + 32] + vmovaps xmm7, xmmword ptr [rsp + 48] + vmovaps xmm8, xmmword ptr [rsp + 64] + vmovaps xmm9, xmmword ptr [rsp + 80] + vmovaps xmm10, xmmword ptr [rsp + 96] + vmovaps xmm11, xmmword ptr [rsp + 112] + vmovaps xmm12, xmmword ptr [rsp + 128] + vmovaps xmm13, xmmword ptr [rsp + 144] + vmovaps xmm14, xmmword ptr [rsp + 160] + vmovaps xmm15, xmmword ptr [rsp + 176] + add rsp, 200 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_8 ENDP + +rabitq_fht_avx_double_9 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_9 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_9 ENDP + +fht_helper_double_9 PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 200 + .allocstack 200 + vmovaps xmmword ptr [rsp + 176], xmm15 + .savexmm128 xmm15, 176 + vmovaps xmmword ptr [rsp + 160], xmm14 + .savexmm128 xmm14, 160 + vmovaps xmmword ptr [rsp + 144], xmm13 + .savexmm128 xmm13, 144 + vmovaps xmmword ptr [rsp + 128], xmm12 + .savexmm128 xmm12, 128 + vmovaps xmmword ptr [rsp + 112], xmm11 + .savexmm128 xmm11, 112 + vmovaps xmmword ptr [rsp + 96], xmm10 + .savexmm128 xmm10, 96 + vmovaps xmmword ptr [rsp + 80], xmm9 + .savexmm128 xmm9, 80 + vmovaps xmmword ptr [rsp + 64], xmm8 + .savexmm128 xmm8, 64 + vmovaps xmmword ptr [rsp + 48], xmm7 + .savexmm128 xmm7, 48 + vmovaps xmmword ptr [rsp + 32], xmm6 + .savexmm128 xmm6, 32 + .endprolog + mov qword ptr [rsp + 24], rcx + mov dword ptr [rsp + 20], 0 +LBB65_1: + cmp dword ptr [rsp + 20], 512 + jge LBB65_8 + mov dword ptr [rsp + 16], 0 +LBB65_3: + cmp dword ptr [rsp + 16], 4 + jge LBB65_6 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 20] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 16] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 20] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 16] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 20] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 16] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 20] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 16] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 24] + movsxd r10, dword ptr [rsp + 20] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 16] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 24] + movsxd r11, dword ptr [rsp + 20] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 16] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 24] + movsxd rsi, dword ptr [rsp + 20] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 16] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 24] + movsxd rdi, dword ptr [rsp + 20] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 16] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 16] + add eax, 4 + mov dword ptr [rsp + 16], eax + jmp LBB65_3 +LBB65_6: + jmp LBB65_7 +LBB65_7: + mov eax, dword ptr [rsp + 20] + add eax, 32 + mov dword ptr [rsp + 20], eax + jmp LBB65_1 +LBB65_8: + mov dword ptr [rsp + 12], 0 +LBB65_9: + cmp dword ptr [rsp + 12], 512 + jge LBB65_16 + mov dword ptr [rsp + 8], 0 +LBB65_11: + cmp dword ptr [rsp + 8], 32 + jge LBB65_14 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 12] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 8] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 12] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 8] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 12] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 8] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 12] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 8] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 24] + movsxd r10, dword ptr [rsp + 12] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 8] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 24] + movsxd r11, dword ptr [rsp + 12] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 8] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 24] + movsxd rsi, dword ptr [rsp + 12] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 8] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 24] + movsxd rdi, dword ptr [rsp + 12] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 8] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 8] + add eax, 4 + mov dword ptr [rsp + 8], eax + jmp LBB65_11 +LBB65_14: + jmp LBB65_15 +LBB65_15: + mov eax, dword ptr [rsp + 12] + add eax, 256 + mov dword ptr [rsp + 12], eax + jmp LBB65_9 +LBB65_16: + mov dword ptr [rsp + 4], 0 +LBB65_17: + cmp dword ptr [rsp + 4], 512 + jge LBB65_24 + mov dword ptr [rsp], 0 +LBB65_19: + cmp dword ptr [rsp], 256 + jge LBB65_22 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 4] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 4] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp] + add eax, 4 + mov dword ptr [rsp], eax + jmp LBB65_19 +LBB65_22: + jmp LBB65_23 +LBB65_23: + mov eax, dword ptr [rsp + 4] + add eax, 512 + mov dword ptr [rsp + 4], eax + jmp LBB65_17 +LBB65_24: + vmovaps xmm6, xmmword ptr [rsp + 32] + vmovaps xmm7, xmmword ptr [rsp + 48] + vmovaps xmm8, xmmword ptr [rsp + 64] + vmovaps xmm9, xmmword ptr [rsp + 80] + vmovaps xmm10, xmmword ptr [rsp + 96] + vmovaps xmm11, xmmword ptr [rsp + 112] + vmovaps xmm12, xmmword ptr [rsp + 128] + vmovaps xmm13, xmmword ptr [rsp + 144] + vmovaps xmm14, xmmword ptr [rsp + 160] + vmovaps xmm15, xmmword ptr [rsp + 176] + add rsp, 200 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_9 ENDP + +rabitq_fht_avx_double_10 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_10 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_10 ENDP + +fht_helper_double_10 PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 200 + .allocstack 200 + vmovaps xmmword ptr [rsp + 176], xmm15 + .savexmm128 xmm15, 176 + vmovaps xmmword ptr [rsp + 160], xmm14 + .savexmm128 xmm14, 160 + vmovaps xmmword ptr [rsp + 144], xmm13 + .savexmm128 xmm13, 144 + vmovaps xmmword ptr [rsp + 128], xmm12 + .savexmm128 xmm12, 128 + vmovaps xmmword ptr [rsp + 112], xmm11 + .savexmm128 xmm11, 112 + vmovaps xmmword ptr [rsp + 96], xmm10 + .savexmm128 xmm10, 96 + vmovaps xmmword ptr [rsp + 80], xmm9 + .savexmm128 xmm9, 80 + vmovaps xmmword ptr [rsp + 64], xmm8 + .savexmm128 xmm8, 64 + vmovaps xmmword ptr [rsp + 48], xmm7 + .savexmm128 xmm7, 48 + vmovaps xmmword ptr [rsp + 32], xmm6 + .savexmm128 xmm6, 32 + .endprolog + mov qword ptr [rsp + 24], rcx + mov dword ptr [rsp + 20], 0 +LBB67_1: + cmp dword ptr [rsp + 20], 1024 + jge LBB67_8 + mov dword ptr [rsp + 16], 0 +LBB67_3: + cmp dword ptr [rsp + 16], 4 + jge LBB67_6 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 20] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 16] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 20] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 16] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 20] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 16] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 20] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 16] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 24] + movsxd r10, dword ptr [rsp + 20] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 16] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 24] + movsxd r11, dword ptr [rsp + 20] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 16] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 24] + movsxd rsi, dword ptr [rsp + 20] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 16] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 24] + movsxd rdi, dword ptr [rsp + 20] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 16] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 16] + add eax, 4 + mov dword ptr [rsp + 16], eax + jmp LBB67_3 +LBB67_6: + jmp LBB67_7 +LBB67_7: + mov eax, dword ptr [rsp + 20] + add eax, 32 + mov dword ptr [rsp + 20], eax + jmp LBB67_1 +LBB67_8: + mov dword ptr [rsp + 12], 0 +LBB67_9: + cmp dword ptr [rsp + 12], 1024 + jge LBB67_16 + mov dword ptr [rsp + 8], 0 +LBB67_11: + cmp dword ptr [rsp + 8], 32 + jge LBB67_14 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 12] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 8] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 12] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 8] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 12] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 8] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 12] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 8] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 24] + movsxd r10, dword ptr [rsp + 12] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 8] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 24] + movsxd r11, dword ptr [rsp + 12] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 8] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 24] + movsxd rsi, dword ptr [rsp + 12] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 8] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 24] + movsxd rdi, dword ptr [rsp + 12] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 8] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 8] + add eax, 4 + mov dword ptr [rsp + 8], eax + jmp LBB67_11 +LBB67_14: + jmp LBB67_15 +LBB67_15: + mov eax, dword ptr [rsp + 12] + add eax, 256 + mov dword ptr [rsp + 12], eax + jmp LBB67_9 +LBB67_16: + mov dword ptr [rsp + 4], 0 +LBB67_17: + cmp dword ptr [rsp + 4], 1024 + jge LBB67_24 + mov dword ptr [rsp], 0 +LBB67_19: + cmp dword ptr [rsp], 256 + jge LBB67_22 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 4] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 4] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 4] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 4] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp] + shl r9, 3 + add r8, r9 + add r8, 6144 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp] + add eax, 4 + mov dword ptr [rsp], eax + jmp LBB67_19 +LBB67_22: + jmp LBB67_23 +LBB67_23: + mov eax, dword ptr [rsp + 4] + add eax, 1024 + mov dword ptr [rsp + 4], eax + jmp LBB67_17 +LBB67_24: + vmovaps xmm6, xmmword ptr [rsp + 32] + vmovaps xmm7, xmmword ptr [rsp + 48] + vmovaps xmm8, xmmword ptr [rsp + 64] + vmovaps xmm9, xmmword ptr [rsp + 80] + vmovaps xmm10, xmmword ptr [rsp + 96] + vmovaps xmm11, xmmword ptr [rsp + 112] + vmovaps xmm12, xmmword ptr [rsp + 128] + vmovaps xmm13, xmmword ptr [rsp + 144] + vmovaps xmm14, xmmword ptr [rsp + 160] + vmovaps xmm15, xmmword ptr [rsp + 176] + add rsp, 200 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_10 ENDP + +rabitq_fht_avx_double_11 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_11 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_11 ENDP + +fht_helper_double_11 PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 200 + .allocstack 200 + vmovaps xmmword ptr [rsp + 176], xmm15 + .savexmm128 xmm15, 176 + vmovaps xmmword ptr [rsp + 160], xmm14 + .savexmm128 xmm14, 160 + vmovaps xmmword ptr [rsp + 144], xmm13 + .savexmm128 xmm13, 144 + vmovaps xmmword ptr [rsp + 128], xmm12 + .savexmm128 xmm12, 128 + vmovaps xmmword ptr [rsp + 112], xmm11 + .savexmm128 xmm11, 112 + vmovaps xmmword ptr [rsp + 96], xmm10 + .savexmm128 xmm10, 96 + vmovaps xmmword ptr [rsp + 80], xmm9 + .savexmm128 xmm9, 80 + vmovaps xmmword ptr [rsp + 64], xmm8 + .savexmm128 xmm8, 64 + vmovaps xmmword ptr [rsp + 48], xmm7 + .savexmm128 xmm7, 48 + vmovaps xmmword ptr [rsp + 32], xmm6 + .savexmm128 xmm6, 32 + .endprolog + mov qword ptr [rsp + 24], rcx + mov dword ptr [rsp + 20], 0 +LBB69_1: + cmp dword ptr [rsp + 20], 2048 + jge LBB69_8 + mov dword ptr [rsp + 16], 0 +LBB69_3: + cmp dword ptr [rsp + 16], 4 + jge LBB69_6 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 20] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 16] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 20] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 16] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 20] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 16] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 20] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 16] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 24] + movsxd r10, dword ptr [rsp + 20] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 16] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 24] + movsxd r11, dword ptr [rsp + 20] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 16] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 24] + movsxd rsi, dword ptr [rsp + 20] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 16] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 24] + movsxd rdi, dword ptr [rsp + 20] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 16] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 16] + add eax, 4 + mov dword ptr [rsp + 16], eax + jmp LBB69_3 +LBB69_6: + jmp LBB69_7 +LBB69_7: + mov eax, dword ptr [rsp + 20] + add eax, 32 + mov dword ptr [rsp + 20], eax + jmp LBB69_1 +LBB69_8: + mov dword ptr [rsp + 12], 0 +LBB69_9: + cmp dword ptr [rsp + 12], 2048 + jge LBB69_16 + mov dword ptr [rsp + 8], 0 +LBB69_11: + cmp dword ptr [rsp + 8], 32 + jge LBB69_14 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 12] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 8] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 12] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 8] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 12] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 8] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 12] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 8] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 24] + movsxd r10, dword ptr [rsp + 12] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 8] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 24] + movsxd r11, dword ptr [rsp + 12] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 8] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 24] + movsxd rsi, dword ptr [rsp + 12] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 8] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 24] + movsxd rdi, dword ptr [rsp + 12] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 8] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 8] + add eax, 4 + mov dword ptr [rsp + 8], eax + jmp LBB69_11 +LBB69_14: + jmp LBB69_15 +LBB69_15: + mov eax, dword ptr [rsp + 12] + add eax, 256 + mov dword ptr [rsp + 12], eax + jmp LBB69_9 +LBB69_16: + mov dword ptr [rsp + 4], 0 +LBB69_17: + cmp dword ptr [rsp + 4], 2048 + jge LBB69_24 + mov dword ptr [rsp], 0 +LBB69_19: + cmp dword ptr [rsp], 256 + jge LBB69_22 + mov rax, qword ptr [rsp + 24] + movsxd rcx, dword ptr [rsp + 4] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 24] + movsxd rdx, dword ptr [rsp + 4] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 24] + movsxd r8, dword ptr [rsp + 4] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 24] + movsxd r9, dword ptr [rsp + 4] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 24] + movsxd r10, dword ptr [rsp + 4] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 24] + movsxd r11, dword ptr [rsp + 4] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 24] + movsxd rsi, dword ptr [rsp + 4] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 24] + movsxd rdi, dword ptr [rsp + 4] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp] + add eax, 4 + mov dword ptr [rsp], eax + jmp LBB69_19 +LBB69_22: + jmp LBB69_23 +LBB69_23: + mov eax, dword ptr [rsp + 4] + add eax, 2048 + mov dword ptr [rsp + 4], eax + jmp LBB69_17 +LBB69_24: + vmovaps xmm6, xmmword ptr [rsp + 32] + vmovaps xmm7, xmmword ptr [rsp + 48] + vmovaps xmm8, xmmword ptr [rsp + 64] + vmovaps xmm9, xmmword ptr [rsp + 80] + vmovaps xmm10, xmmword ptr [rsp + 96] + vmovaps xmm11, xmmword ptr [rsp + 112] + vmovaps xmm12, xmmword ptr [rsp + 128] + vmovaps xmm13, xmmword ptr [rsp + 144] + vmovaps xmm14, xmmword ptr [rsp + 160] + vmovaps xmm15, xmmword ptr [rsp + 176] + add rsp, 200 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_11 ENDP + +rabitq_fht_avx_double_12 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_12 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_12 ENDP + +fht_helper_double_12 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 12 + call fht_helper_double_12_recursive + nop + add rsp, 40 + ret +fht_helper_double_12 ENDP + +rabitq_fht_avx_double_13 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_13 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_13 ENDP + +fht_helper_double_13 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 13 + call fht_helper_double_13_recursive + nop + add rsp, 40 + ret +fht_helper_double_13 ENDP + +rabitq_fht_avx_double_14 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_14 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_14 ENDP + +fht_helper_double_14 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 14 + call fht_helper_double_14_recursive + nop + add rsp, 40 + ret +fht_helper_double_14 ENDP + +rabitq_fht_avx_double_15 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_15 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_15 ENDP + +fht_helper_double_15 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 15 + call fht_helper_double_15_recursive + nop + add rsp, 40 + ret +fht_helper_double_15 ENDP + +rabitq_fht_avx_double_16 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_16 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_16 ENDP + +fht_helper_double_16 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 16 + call fht_helper_double_16_recursive + nop + add rsp, 40 + ret +fht_helper_double_16 ENDP + +rabitq_fht_avx_double_17 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_17 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_17 ENDP + +fht_helper_double_17 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 17 + call fht_helper_double_17_recursive + nop + add rsp, 40 + ret +fht_helper_double_17 ENDP + +rabitq_fht_avx_double_18 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_18 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_18 ENDP + +fht_helper_double_18 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 18 + call fht_helper_double_18_recursive + nop + add rsp, 40 + ret +fht_helper_double_18 ENDP + +rabitq_fht_avx_double_19 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_19 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_19 ENDP + +fht_helper_double_19 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 19 + call fht_helper_double_19_recursive + nop + add rsp, 40 + ret +fht_helper_double_19 ENDP + +rabitq_fht_avx_double_20 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_20 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_20 ENDP + +fht_helper_double_20 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 20 + call fht_helper_double_20_recursive + nop + add rsp, 40 + ret +fht_helper_double_20 ENDP + +rabitq_fht_avx_double_21 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_21 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_21 ENDP + +fht_helper_double_21 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 21 + call fht_helper_double_21_recursive + nop + add rsp, 40 + ret +fht_helper_double_21 ENDP + +rabitq_fht_avx_double_22 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_22 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_22 ENDP + +fht_helper_double_22 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 22 + call fht_helper_double_22_recursive + nop + add rsp, 40 + ret +fht_helper_double_22 ENDP + +rabitq_fht_avx_double_23 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_23 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_23 ENDP + +fht_helper_double_23 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 23 + call fht_helper_double_23_recursive + nop + add rsp, 40 + ret +fht_helper_double_23 ENDP + +rabitq_fht_avx_double_24 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_24 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_24 ENDP + +fht_helper_double_24 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 24 + call fht_helper_double_24_recursive + nop + add rsp, 40 + ret +fht_helper_double_24 ENDP + +rabitq_fht_avx_double_25 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_25 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_25 ENDP + +fht_helper_double_25 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 25 + call fht_helper_double_25_recursive + nop + add rsp, 40 + ret +fht_helper_double_25 ENDP + +rabitq_fht_avx_double_26 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_26 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_26 ENDP + +fht_helper_double_26 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 26 + call fht_helper_double_26_recursive + nop + add rsp, 40 + ret +fht_helper_double_26 ENDP + +rabitq_fht_avx_double_27 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_27 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_27 ENDP + +fht_helper_double_27 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 27 + call fht_helper_double_27_recursive + nop + add rsp, 40 + ret +fht_helper_double_27 ENDP + +rabitq_fht_avx_double_28 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_28 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_28 ENDP + +fht_helper_double_28 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 28 + call fht_helper_double_28_recursive + nop + add rsp, 40 + ret +fht_helper_double_28 ENDP + +rabitq_fht_avx_double_29 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_29 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_29 ENDP + +fht_helper_double_29 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 29 + call fht_helper_double_29_recursive + nop + add rsp, 40 + ret +fht_helper_double_29 ENDP + +rabitq_fht_avx_double_30 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + call fht_helper_double_30 + nop + add rsp, 40 + ret +rabitq_fht_avx_double_30 ENDP + +fht_helper_double_30 PROC FRAME + sub rsp, 40 + .allocstack 40 + .endprolog + mov qword ptr [rsp + 32], rcx + mov rcx, qword ptr [rsp + 32] + mov edx, 30 + call fht_helper_double_30_recursive + nop + add rsp, 40 + ret +fht_helper_double_30 ENDP + +fht_helper_float_13_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 248 + .allocstack 248 + vmovaps xmmword ptr [rsp + 224], xmm15 + .savexmm128 xmm15, 224 + vmovaps xmmword ptr [rsp + 208], xmm14 + .savexmm128 xmm14, 208 + vmovaps xmmword ptr [rsp + 192], xmm13 + .savexmm128 xmm13, 192 + vmovaps xmmword ptr [rsp + 176], xmm12 + .savexmm128 xmm12, 176 + vmovaps xmmword ptr [rsp + 160], xmm11 + .savexmm128 xmm11, 160 + vmovaps xmmword ptr [rsp + 144], xmm10 + .savexmm128 xmm10, 144 + vmovaps xmmword ptr [rsp + 128], xmm9 + .savexmm128 xmm9, 128 + vmovaps xmmword ptr [rsp + 112], xmm8 + .savexmm128 xmm8, 112 + vmovaps xmmword ptr [rsp + 96], xmm7 + .savexmm128 xmm7, 96 + vmovaps xmmword ptr [rsp + 80], xmm6 + .savexmm128 xmm6, 80 + .endprolog + mov dword ptr [rsp + 76], edx + mov qword ptr [rsp + 64], rcx + cmp dword ptr [rsp + 76], 11 + jne LBB108_26 + mov dword ptr [rsp + 60], 0 +LBB108_2: + cmp dword ptr [rsp + 60], 2048 + jge LBB108_9 + mov dword ptr [rsp + 56], 0 +LBB108_4: + cmp dword ptr [rsp + 56], 8 + jge LBB108_7 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 64] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 64] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 64] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 64] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB108_4 +LBB108_7: + jmp LBB108_8 +LBB108_8: + mov eax, dword ptr [rsp + 60] + add eax, 64 + mov dword ptr [rsp + 60], eax + jmp LBB108_2 +LBB108_9: + mov dword ptr [rsp + 52], 0 +LBB108_10: + cmp dword ptr [rsp + 52], 2048 + jge LBB108_17 + mov dword ptr [rsp + 48], 0 +LBB108_12: + cmp dword ptr [rsp + 48], 64 + jge LBB108_15 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 64] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 64] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 64] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 64] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB108_12 +LBB108_15: + jmp LBB108_16 +LBB108_16: + mov eax, dword ptr [rsp + 52] + add eax, 512 + mov dword ptr [rsp + 52], eax + jmp LBB108_10 +LBB108_17: + mov dword ptr [rsp + 44], 0 +LBB108_18: + cmp dword ptr [rsp + 44], 2048 + jge LBB108_25 + mov dword ptr [rsp + 40], 0 +LBB108_20: + cmp dword ptr [rsp + 40], 512 + jge LBB108_23 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 6144 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rcx], ymm1 + vmovups ymmword ptr [rdx], ymm2 + vmovups ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB108_20 +LBB108_23: + jmp LBB108_24 +LBB108_24: + mov eax, dword ptr [rsp + 44] + add eax, 2048 + mov dword ptr [rsp + 44], eax + jmp LBB108_18 +LBB108_25: + jmp LBB108_36 +LBB108_26: + cmp dword ptr [rsp + 76], 13 + jne LBB108_36 + mov rcx, qword ptr [rsp + 64] + mov edx, 11 + call fht_helper_float_13_recursive + mov rcx, qword ptr [rsp + 64] + add rcx, 8192 + mov edx, 11 + call fht_helper_float_13_recursive + mov rcx, qword ptr [rsp + 64] + add rcx, 16384 + mov edx, 11 + call fht_helper_float_13_recursive + mov rcx, qword ptr [rsp + 64] + add rcx, 24576 + mov edx, 11 + call fht_helper_float_13_recursive + mov dword ptr [rsp + 36], 0 +LBB108_28: + cmp dword ptr [rsp + 36], 8192 + jge LBB108_35 + mov dword ptr [rsp + 32], 0 +LBB108_30: + cmp dword ptr [rsp + 32], 2048 + jge LBB108_33 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 2 + add rcx, rdx + add rcx, 8192 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 36] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 2 + add rdx, r8 + add rdx, 16384 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 36] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 2 + add r8, r9 + add r8, 24576 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rcx], ymm1 + vmovups ymmword ptr [rdx], ymm2 + vmovups ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 32] + add eax, 8 + mov dword ptr [rsp + 32], eax + jmp LBB108_30 +LBB108_33: + jmp LBB108_34 +LBB108_34: + mov eax, dword ptr [rsp + 36] + add eax, 8192 + mov dword ptr [rsp + 36], eax + jmp LBB108_28 +LBB108_35: + jmp LBB108_36 +LBB108_36: + vmovaps xmm6, xmmword ptr [rsp + 80] + vmovaps xmm7, xmmword ptr [rsp + 96] + vmovaps xmm8, xmmword ptr [rsp + 112] + vmovaps xmm9, xmmword ptr [rsp + 128] + vmovaps xmm10, xmmword ptr [rsp + 144] + vmovaps xmm11, xmmword ptr [rsp + 160] + vmovaps xmm12, xmmword ptr [rsp + 176] + vmovaps xmm13, xmmword ptr [rsp + 192] + vmovaps xmm14, xmmword ptr [rsp + 208] + vmovaps xmm15, xmmword ptr [rsp + 224] + add rsp, 248 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_13_recursive ENDP + +fht_helper_float_14_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 248 + .allocstack 248 + vmovaps xmmword ptr [rsp + 224], xmm15 + .savexmm128 xmm15, 224 + vmovaps xmmword ptr [rsp + 208], xmm14 + .savexmm128 xmm14, 208 + vmovaps xmmword ptr [rsp + 192], xmm13 + .savexmm128 xmm13, 192 + vmovaps xmmword ptr [rsp + 176], xmm12 + .savexmm128 xmm12, 176 + vmovaps xmmword ptr [rsp + 160], xmm11 + .savexmm128 xmm11, 160 + vmovaps xmmword ptr [rsp + 144], xmm10 + .savexmm128 xmm10, 144 + vmovaps xmmword ptr [rsp + 128], xmm9 + .savexmm128 xmm9, 128 + vmovaps xmmword ptr [rsp + 112], xmm8 + .savexmm128 xmm8, 112 + vmovaps xmmword ptr [rsp + 96], xmm7 + .savexmm128 xmm7, 96 + vmovaps xmmword ptr [rsp + 80], xmm6 + .savexmm128 xmm6, 80 + .endprolog + mov dword ptr [rsp + 76], edx + mov qword ptr [rsp + 64], rcx + cmp dword ptr [rsp + 76], 12 + jne LBB109_26 + mov dword ptr [rsp + 60], 0 +LBB109_2: + cmp dword ptr [rsp + 60], 4096 + jge LBB109_9 + mov dword ptr [rsp + 56], 0 +LBB109_4: + cmp dword ptr [rsp + 56], 8 + jge LBB109_7 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 64] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 64] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 64] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 64] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB109_4 +LBB109_7: + jmp LBB109_8 +LBB109_8: + mov eax, dword ptr [rsp + 60] + add eax, 64 + mov dword ptr [rsp + 60], eax + jmp LBB109_2 +LBB109_9: + mov dword ptr [rsp + 52], 0 +LBB109_10: + cmp dword ptr [rsp + 52], 4096 + jge LBB109_17 + mov dword ptr [rsp + 48], 0 +LBB109_12: + cmp dword ptr [rsp + 48], 64 + jge LBB109_15 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 64] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 64] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 64] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 64] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB109_12 +LBB109_15: + jmp LBB109_16 +LBB109_16: + mov eax, dword ptr [rsp + 52] + add eax, 512 + mov dword ptr [rsp + 52], eax + jmp LBB109_10 +LBB109_17: + mov dword ptr [rsp + 44], 0 +LBB109_18: + cmp dword ptr [rsp + 44], 4096 + jge LBB109_25 + mov dword ptr [rsp + 40], 0 +LBB109_20: + cmp dword ptr [rsp + 40], 512 + jge LBB109_23 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 64] + movsxd r10, dword ptr [rsp + 44] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 64] + movsxd r11, dword ptr [rsp + 44] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 64] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 64] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB109_20 +LBB109_23: + jmp LBB109_24 +LBB109_24: + mov eax, dword ptr [rsp + 44] + add eax, 4096 + mov dword ptr [rsp + 44], eax + jmp LBB109_18 +LBB109_25: + jmp LBB109_36 +LBB109_26: + cmp dword ptr [rsp + 76], 14 + jne LBB109_36 + mov rcx, qword ptr [rsp + 64] + mov edx, 12 + call fht_helper_float_14_recursive + mov rcx, qword ptr [rsp + 64] + add rcx, 16384 + mov edx, 12 + call fht_helper_float_14_recursive + mov rcx, qword ptr [rsp + 64] + add rcx, 32768 + mov edx, 12 + call fht_helper_float_14_recursive + mov rcx, qword ptr [rsp + 64] + add rcx, 49152 + mov edx, 12 + call fht_helper_float_14_recursive + mov dword ptr [rsp + 36], 0 +LBB109_28: + cmp dword ptr [rsp + 36], 16384 + jge LBB109_35 + mov dword ptr [rsp + 32], 0 +LBB109_30: + cmp dword ptr [rsp + 32], 4096 + jge LBB109_33 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 2 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 36] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 2 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 36] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 2 + add r8, r9 + add r8, 49152 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rcx], ymm1 + vmovups ymmword ptr [rdx], ymm2 + vmovups ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 32] + add eax, 8 + mov dword ptr [rsp + 32], eax + jmp LBB109_30 +LBB109_33: + jmp LBB109_34 +LBB109_34: + mov eax, dword ptr [rsp + 36] + add eax, 16384 + mov dword ptr [rsp + 36], eax + jmp LBB109_28 +LBB109_35: + jmp LBB109_36 +LBB109_36: + vmovaps xmm6, xmmword ptr [rsp + 80] + vmovaps xmm7, xmmword ptr [rsp + 96] + vmovaps xmm8, xmmword ptr [rsp + 112] + vmovaps xmm9, xmmword ptr [rsp + 128] + vmovaps xmm10, xmmword ptr [rsp + 144] + vmovaps xmm11, xmmword ptr [rsp + 160] + vmovaps xmm12, xmmword ptr [rsp + 176] + vmovaps xmm13, xmmword ptr [rsp + 192] + vmovaps xmm14, xmmword ptr [rsp + 208] + vmovaps xmm15, xmmword ptr [rsp + 224] + add rsp, 248 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_14_recursive ENDP + +fht_helper_float_15_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 264 + .allocstack 264 + vmovaps xmmword ptr [rsp + 240], xmm15 + .savexmm128 xmm15, 240 + vmovaps xmmword ptr [rsp + 224], xmm14 + .savexmm128 xmm14, 224 + vmovaps xmmword ptr [rsp + 208], xmm13 + .savexmm128 xmm13, 208 + vmovaps xmmword ptr [rsp + 192], xmm12 + .savexmm128 xmm12, 192 + vmovaps xmmword ptr [rsp + 176], xmm11 + .savexmm128 xmm11, 176 + vmovaps xmmword ptr [rsp + 160], xmm10 + .savexmm128 xmm10, 160 + vmovaps xmmword ptr [rsp + 144], xmm9 + .savexmm128 xmm9, 144 + vmovaps xmmword ptr [rsp + 128], xmm8 + .savexmm128 xmm8, 128 + vmovaps xmmword ptr [rsp + 112], xmm7 + .savexmm128 xmm7, 112 + vmovaps xmmword ptr [rsp + 96], xmm6 + .savexmm128 xmm6, 96 + .endprolog + mov dword ptr [rsp + 92], edx + mov qword ptr [rsp + 80], rcx + cmp dword ptr [rsp + 92], 13 + jne LBB110_34 + mov dword ptr [rsp + 76], 0 +LBB110_2: + cmp dword ptr [rsp + 76], 8192 + jge LBB110_9 + mov dword ptr [rsp + 72], 0 +LBB110_4: + cmp dword ptr [rsp + 72], 8 + jge LBB110_7 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB110_4 +LBB110_7: + jmp LBB110_8 +LBB110_8: + mov eax, dword ptr [rsp + 76] + add eax, 64 + mov dword ptr [rsp + 76], eax + jmp LBB110_2 +LBB110_9: + mov dword ptr [rsp + 68], 0 +LBB110_10: + cmp dword ptr [rsp + 68], 8192 + jge LBB110_17 + mov dword ptr [rsp + 64], 0 +LBB110_12: + cmp dword ptr [rsp + 64], 64 + jge LBB110_15 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB110_12 +LBB110_15: + jmp LBB110_16 +LBB110_16: + mov eax, dword ptr [rsp + 68] + add eax, 512 + mov dword ptr [rsp + 68], eax + jmp LBB110_10 +LBB110_17: + mov dword ptr [rsp + 60], 0 +LBB110_18: + cmp dword ptr [rsp + 60], 8192 + jge LBB110_25 + mov dword ptr [rsp + 56], 0 +LBB110_20: + cmp dword ptr [rsp + 56], 512 + jge LBB110_23 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB110_20 +LBB110_23: + jmp LBB110_24 +LBB110_24: + mov eax, dword ptr [rsp + 60] + add eax, 4096 + mov dword ptr [rsp + 60], eax + jmp LBB110_18 +LBB110_25: + mov dword ptr [rsp + 52], 0 +LBB110_26: + cmp dword ptr [rsp + 52], 8192 + jge LBB110_33 + mov dword ptr [rsp + 48], 0 +LBB110_28: + cmp dword ptr [rsp + 48], 4096 + jge LBB110_31 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 16384 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB110_28 +LBB110_31: + jmp LBB110_32 +LBB110_32: + mov eax, dword ptr [rsp + 52] + add eax, 8192 + mov dword ptr [rsp + 52], eax + jmp LBB110_26 +LBB110_33: + jmp LBB110_44 +LBB110_34: + cmp dword ptr [rsp + 92], 15 + jne LBB110_44 + mov rcx, qword ptr [rsp + 80] + mov edx, 13 + call fht_helper_float_15_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 32768 + mov edx, 13 + call fht_helper_float_15_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 65536 + mov edx, 13 + call fht_helper_float_15_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 98304 + mov edx, 13 + call fht_helper_float_15_recursive + mov dword ptr [rsp + 44], 0 +LBB110_36: + cmp dword ptr [rsp + 44], 32768 + jge LBB110_43 + mov dword ptr [rsp + 40], 0 +LBB110_38: + cmp dword ptr [rsp + 40], 8192 + jge LBB110_41 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 32768 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 65536 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 98304 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rcx], ymm1 + vmovups ymmword ptr [rdx], ymm2 + vmovups ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB110_38 +LBB110_41: + jmp LBB110_42 +LBB110_42: + mov eax, dword ptr [rsp + 44] + add eax, 32768 + mov dword ptr [rsp + 44], eax + jmp LBB110_36 +LBB110_43: + jmp LBB110_44 +LBB110_44: + vmovaps xmm6, xmmword ptr [rsp + 96] + vmovaps xmm7, xmmword ptr [rsp + 112] + vmovaps xmm8, xmmword ptr [rsp + 128] + vmovaps xmm9, xmmword ptr [rsp + 144] + vmovaps xmm10, xmmword ptr [rsp + 160] + vmovaps xmm11, xmmword ptr [rsp + 176] + vmovaps xmm12, xmmword ptr [rsp + 192] + vmovaps xmm13, xmmword ptr [rsp + 208] + vmovaps xmm14, xmmword ptr [rsp + 224] + vmovaps xmm15, xmmword ptr [rsp + 240] + add rsp, 264 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_15_recursive ENDP + +fht_helper_float_16_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 264 + .allocstack 264 + vmovaps xmmword ptr [rsp + 240], xmm15 + .savexmm128 xmm15, 240 + vmovaps xmmword ptr [rsp + 224], xmm14 + .savexmm128 xmm14, 224 + vmovaps xmmword ptr [rsp + 208], xmm13 + .savexmm128 xmm13, 208 + vmovaps xmmword ptr [rsp + 192], xmm12 + .savexmm128 xmm12, 192 + vmovaps xmmword ptr [rsp + 176], xmm11 + .savexmm128 xmm11, 176 + vmovaps xmmword ptr [rsp + 160], xmm10 + .savexmm128 xmm10, 160 + vmovaps xmmword ptr [rsp + 144], xmm9 + .savexmm128 xmm9, 144 + vmovaps xmmword ptr [rsp + 128], xmm8 + .savexmm128 xmm8, 128 + vmovaps xmmword ptr [rsp + 112], xmm7 + .savexmm128 xmm7, 112 + vmovaps xmmword ptr [rsp + 96], xmm6 + .savexmm128 xmm6, 96 + .endprolog + mov dword ptr [rsp + 92], edx + mov qword ptr [rsp + 80], rcx + cmp dword ptr [rsp + 92], 13 + jne LBB111_34 + mov dword ptr [rsp + 76], 0 +LBB111_2: + cmp dword ptr [rsp + 76], 8192 + jge LBB111_9 + mov dword ptr [rsp + 72], 0 +LBB111_4: + cmp dword ptr [rsp + 72], 8 + jge LBB111_7 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB111_4 +LBB111_7: + jmp LBB111_8 +LBB111_8: + mov eax, dword ptr [rsp + 76] + add eax, 64 + mov dword ptr [rsp + 76], eax + jmp LBB111_2 +LBB111_9: + mov dword ptr [rsp + 68], 0 +LBB111_10: + cmp dword ptr [rsp + 68], 8192 + jge LBB111_17 + mov dword ptr [rsp + 64], 0 +LBB111_12: + cmp dword ptr [rsp + 64], 64 + jge LBB111_15 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB111_12 +LBB111_15: + jmp LBB111_16 +LBB111_16: + mov eax, dword ptr [rsp + 68] + add eax, 512 + mov dword ptr [rsp + 68], eax + jmp LBB111_10 +LBB111_17: + mov dword ptr [rsp + 60], 0 +LBB111_18: + cmp dword ptr [rsp + 60], 8192 + jge LBB111_25 + mov dword ptr [rsp + 56], 0 +LBB111_20: + cmp dword ptr [rsp + 56], 512 + jge LBB111_23 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB111_20 +LBB111_23: + jmp LBB111_24 +LBB111_24: + mov eax, dword ptr [rsp + 60] + add eax, 4096 + mov dword ptr [rsp + 60], eax + jmp LBB111_18 +LBB111_25: + mov dword ptr [rsp + 52], 0 +LBB111_26: + cmp dword ptr [rsp + 52], 8192 + jge LBB111_33 + mov dword ptr [rsp + 48], 0 +LBB111_28: + cmp dword ptr [rsp + 48], 4096 + jge LBB111_31 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 16384 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB111_28 +LBB111_31: + jmp LBB111_32 +LBB111_32: + mov eax, dword ptr [rsp + 52] + add eax, 8192 + mov dword ptr [rsp + 52], eax + jmp LBB111_26 +LBB111_33: + jmp LBB111_44 +LBB111_34: + cmp dword ptr [rsp + 92], 16 + jne LBB111_44 + mov rcx, qword ptr [rsp + 80] + mov edx, 13 + call fht_helper_float_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 32768 + mov edx, 13 + call fht_helper_float_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 65536 + mov edx, 13 + call fht_helper_float_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 98304 + mov edx, 13 + call fht_helper_float_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 131072 + mov edx, 13 + call fht_helper_float_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 163840 + mov edx, 13 + call fht_helper_float_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 196608 + mov edx, 13 + call fht_helper_float_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 229376 + mov edx, 13 + call fht_helper_float_16_recursive + mov dword ptr [rsp + 44], 0 +LBB111_36: + cmp dword ptr [rsp + 44], 65536 + jge LBB111_43 + mov dword ptr [rsp + 40], 0 +LBB111_38: + cmp dword ptr [rsp + 40], 8192 + jge LBB111_41 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 32768 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 65536 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 98304 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 44] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 2 + add r9, r10 + add r9, 131072 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 44] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 2 + add r10, r11 + add r10, 163840 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 2 + add r11, rsi + add r11, 196608 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 2 + add rsi, rdi + add rsi, 229376 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB111_38 +LBB111_41: + jmp LBB111_42 +LBB111_42: + mov eax, dword ptr [rsp + 44] + add eax, 65536 + mov dword ptr [rsp + 44], eax + jmp LBB111_36 +LBB111_43: + jmp LBB111_44 +LBB111_44: + vmovaps xmm6, xmmword ptr [rsp + 96] + vmovaps xmm7, xmmword ptr [rsp + 112] + vmovaps xmm8, xmmword ptr [rsp + 128] + vmovaps xmm9, xmmword ptr [rsp + 144] + vmovaps xmm10, xmmword ptr [rsp + 160] + vmovaps xmm11, xmmword ptr [rsp + 176] + vmovaps xmm12, xmmword ptr [rsp + 192] + vmovaps xmm13, xmmword ptr [rsp + 208] + vmovaps xmm14, xmmword ptr [rsp + 224] + vmovaps xmm15, xmmword ptr [rsp + 240] + add rsp, 264 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_16_recursive ENDP + +fht_helper_float_17_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 264 + .allocstack 264 + vmovaps xmmword ptr [rsp + 240], xmm15 + .savexmm128 xmm15, 240 + vmovaps xmmword ptr [rsp + 224], xmm14 + .savexmm128 xmm14, 224 + vmovaps xmmword ptr [rsp + 208], xmm13 + .savexmm128 xmm13, 208 + vmovaps xmmword ptr [rsp + 192], xmm12 + .savexmm128 xmm12, 192 + vmovaps xmmword ptr [rsp + 176], xmm11 + .savexmm128 xmm11, 176 + vmovaps xmmword ptr [rsp + 160], xmm10 + .savexmm128 xmm10, 160 + vmovaps xmmword ptr [rsp + 144], xmm9 + .savexmm128 xmm9, 144 + vmovaps xmmword ptr [rsp + 128], xmm8 + .savexmm128 xmm8, 128 + vmovaps xmmword ptr [rsp + 112], xmm7 + .savexmm128 xmm7, 112 + vmovaps xmmword ptr [rsp + 96], xmm6 + .savexmm128 xmm6, 96 + .endprolog + mov dword ptr [rsp + 92], edx + mov qword ptr [rsp + 80], rcx + cmp dword ptr [rsp + 92], 12 + jne LBB112_26 + mov dword ptr [rsp + 76], 0 +LBB112_2: + cmp dword ptr [rsp + 76], 4096 + jge LBB112_9 + mov dword ptr [rsp + 72], 0 +LBB112_4: + cmp dword ptr [rsp + 72], 8 + jge LBB112_7 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB112_4 +LBB112_7: + jmp LBB112_8 +LBB112_8: + mov eax, dword ptr [rsp + 76] + add eax, 64 + mov dword ptr [rsp + 76], eax + jmp LBB112_2 +LBB112_9: + mov dword ptr [rsp + 68], 0 +LBB112_10: + cmp dword ptr [rsp + 68], 4096 + jge LBB112_17 + mov dword ptr [rsp + 64], 0 +LBB112_12: + cmp dword ptr [rsp + 64], 64 + jge LBB112_15 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB112_12 +LBB112_15: + jmp LBB112_16 +LBB112_16: + mov eax, dword ptr [rsp + 68] + add eax, 512 + mov dword ptr [rsp + 68], eax + jmp LBB112_10 +LBB112_17: + mov dword ptr [rsp + 60], 0 +LBB112_18: + cmp dword ptr [rsp + 60], 4096 + jge LBB112_25 + mov dword ptr [rsp + 56], 0 +LBB112_20: + cmp dword ptr [rsp + 56], 512 + jge LBB112_23 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB112_20 +LBB112_23: + jmp LBB112_24 +LBB112_24: + mov eax, dword ptr [rsp + 60] + add eax, 4096 + mov dword ptr [rsp + 60], eax + jmp LBB112_18 +LBB112_25: + jmp LBB112_46 +LBB112_26: + cmp dword ptr [rsp + 92], 15 + jne LBB112_36 + mov rcx, qword ptr [rsp + 80] + mov edx, 12 + call fht_helper_float_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 16384 + mov edx, 12 + call fht_helper_float_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 32768 + mov edx, 12 + call fht_helper_float_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 49152 + mov edx, 12 + call fht_helper_float_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 65536 + mov edx, 12 + call fht_helper_float_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 81920 + mov edx, 12 + call fht_helper_float_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 98304 + mov edx, 12 + call fht_helper_float_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 114688 + mov edx, 12 + call fht_helper_float_17_recursive + mov dword ptr [rsp + 52], 0 +LBB112_28: + cmp dword ptr [rsp + 52], 32768 + jge LBB112_35 + mov dword ptr [rsp + 48], 0 +LBB112_30: + cmp dword ptr [rsp + 48], 4096 + jge LBB112_33 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 114688 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB112_30 +LBB112_33: + jmp LBB112_34 +LBB112_34: + mov eax, dword ptr [rsp + 52] + add eax, 32768 + mov dword ptr [rsp + 52], eax + jmp LBB112_28 +LBB112_35: + jmp LBB112_46 +LBB112_36: + cmp dword ptr [rsp + 92], 17 + jne LBB112_46 + mov rcx, qword ptr [rsp + 80] + mov edx, 15 + call fht_helper_float_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 131072 + mov edx, 15 + call fht_helper_float_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 262144 + mov edx, 15 + call fht_helper_float_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 393216 + mov edx, 15 + call fht_helper_float_17_recursive + mov dword ptr [rsp + 44], 0 +LBB112_38: + cmp dword ptr [rsp + 44], 131072 + jge LBB112_45 + mov dword ptr [rsp + 40], 0 +LBB112_40: + cmp dword ptr [rsp + 40], 32768 + jge LBB112_43 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 393216 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rcx], ymm1 + vmovups ymmword ptr [rdx], ymm2 + vmovups ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB112_40 +LBB112_43: + jmp LBB112_44 +LBB112_44: + mov eax, dword ptr [rsp + 44] + add eax, 131072 + mov dword ptr [rsp + 44], eax + jmp LBB112_38 +LBB112_45: + jmp LBB112_46 +LBB112_46: + vmovaps xmm6, xmmword ptr [rsp + 96] + vmovaps xmm7, xmmword ptr [rsp + 112] + vmovaps xmm8, xmmword ptr [rsp + 128] + vmovaps xmm9, xmmword ptr [rsp + 144] + vmovaps xmm10, xmmword ptr [rsp + 160] + vmovaps xmm11, xmmword ptr [rsp + 176] + vmovaps xmm12, xmmword ptr [rsp + 192] + vmovaps xmm13, xmmword ptr [rsp + 208] + vmovaps xmm14, xmmword ptr [rsp + 224] + vmovaps xmm15, xmmword ptr [rsp + 240] + add rsp, 264 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_17_recursive ENDP + +fht_helper_float_18_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 264 + .allocstack 264 + vmovaps xmmword ptr [rsp + 240], xmm15 + .savexmm128 xmm15, 240 + vmovaps xmmword ptr [rsp + 224], xmm14 + .savexmm128 xmm14, 224 + vmovaps xmmword ptr [rsp + 208], xmm13 + .savexmm128 xmm13, 208 + vmovaps xmmword ptr [rsp + 192], xmm12 + .savexmm128 xmm12, 192 + vmovaps xmmword ptr [rsp + 176], xmm11 + .savexmm128 xmm11, 176 + vmovaps xmmword ptr [rsp + 160], xmm10 + .savexmm128 xmm10, 160 + vmovaps xmmword ptr [rsp + 144], xmm9 + .savexmm128 xmm9, 144 + vmovaps xmmword ptr [rsp + 128], xmm8 + .savexmm128 xmm8, 128 + vmovaps xmmword ptr [rsp + 112], xmm7 + .savexmm128 xmm7, 112 + vmovaps xmmword ptr [rsp + 96], xmm6 + .savexmm128 xmm6, 96 + .endprolog + mov dword ptr [rsp + 92], edx + mov qword ptr [rsp + 80], rcx + cmp dword ptr [rsp + 92], 12 + jne LBB113_26 + mov dword ptr [rsp + 76], 0 +LBB113_2: + cmp dword ptr [rsp + 76], 4096 + jge LBB113_9 + mov dword ptr [rsp + 72], 0 +LBB113_4: + cmp dword ptr [rsp + 72], 8 + jge LBB113_7 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB113_4 +LBB113_7: + jmp LBB113_8 +LBB113_8: + mov eax, dword ptr [rsp + 76] + add eax, 64 + mov dword ptr [rsp + 76], eax + jmp LBB113_2 +LBB113_9: + mov dword ptr [rsp + 68], 0 +LBB113_10: + cmp dword ptr [rsp + 68], 4096 + jge LBB113_17 + mov dword ptr [rsp + 64], 0 +LBB113_12: + cmp dword ptr [rsp + 64], 64 + jge LBB113_15 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB113_12 +LBB113_15: + jmp LBB113_16 +LBB113_16: + mov eax, dword ptr [rsp + 68] + add eax, 512 + mov dword ptr [rsp + 68], eax + jmp LBB113_10 +LBB113_17: + mov dword ptr [rsp + 60], 0 +LBB113_18: + cmp dword ptr [rsp + 60], 4096 + jge LBB113_25 + mov dword ptr [rsp + 56], 0 +LBB113_20: + cmp dword ptr [rsp + 56], 512 + jge LBB113_23 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB113_20 +LBB113_23: + jmp LBB113_24 +LBB113_24: + mov eax, dword ptr [rsp + 60] + add eax, 4096 + mov dword ptr [rsp + 60], eax + jmp LBB113_18 +LBB113_25: + jmp LBB113_46 +LBB113_26: + cmp dword ptr [rsp + 92], 15 + jne LBB113_36 + mov rcx, qword ptr [rsp + 80] + mov edx, 12 + call fht_helper_float_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 16384 + mov edx, 12 + call fht_helper_float_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 32768 + mov edx, 12 + call fht_helper_float_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 49152 + mov edx, 12 + call fht_helper_float_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 65536 + mov edx, 12 + call fht_helper_float_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 81920 + mov edx, 12 + call fht_helper_float_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 98304 + mov edx, 12 + call fht_helper_float_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 114688 + mov edx, 12 + call fht_helper_float_18_recursive + mov dword ptr [rsp + 52], 0 +LBB113_28: + cmp dword ptr [rsp + 52], 32768 + jge LBB113_35 + mov dword ptr [rsp + 48], 0 +LBB113_30: + cmp dword ptr [rsp + 48], 4096 + jge LBB113_33 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 114688 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB113_30 +LBB113_33: + jmp LBB113_34 +LBB113_34: + mov eax, dword ptr [rsp + 52] + add eax, 32768 + mov dword ptr [rsp + 52], eax + jmp LBB113_28 +LBB113_35: + jmp LBB113_46 +LBB113_36: + cmp dword ptr [rsp + 92], 18 + jne LBB113_46 + mov rcx, qword ptr [rsp + 80] + mov edx, 15 + call fht_helper_float_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 131072 + mov edx, 15 + call fht_helper_float_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 262144 + mov edx, 15 + call fht_helper_float_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 393216 + mov edx, 15 + call fht_helper_float_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 524288 + mov edx, 15 + call fht_helper_float_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 655360 + mov edx, 15 + call fht_helper_float_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 786432 + mov edx, 15 + call fht_helper_float_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 917504 + mov edx, 15 + call fht_helper_float_18_recursive + mov dword ptr [rsp + 44], 0 +LBB113_38: + cmp dword ptr [rsp + 44], 262144 + jge LBB113_45 + mov dword ptr [rsp + 40], 0 +LBB113_40: + cmp dword ptr [rsp + 40], 32768 + jge LBB113_43 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 44] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 2 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 44] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 2 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 2 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 2 + add rsi, rdi + add rsi, 917504 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB113_40 +LBB113_43: + jmp LBB113_44 +LBB113_44: + mov eax, dword ptr [rsp + 44] + add eax, 262144 + mov dword ptr [rsp + 44], eax + jmp LBB113_38 +LBB113_45: + jmp LBB113_46 +LBB113_46: + vmovaps xmm6, xmmword ptr [rsp + 96] + vmovaps xmm7, xmmword ptr [rsp + 112] + vmovaps xmm8, xmmword ptr [rsp + 128] + vmovaps xmm9, xmmword ptr [rsp + 144] + vmovaps xmm10, xmmword ptr [rsp + 160] + vmovaps xmm11, xmmword ptr [rsp + 176] + vmovaps xmm12, xmmword ptr [rsp + 192] + vmovaps xmm13, xmmword ptr [rsp + 208] + vmovaps xmm14, xmmword ptr [rsp + 224] + vmovaps xmm15, xmmword ptr [rsp + 240] + add rsp, 264 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_18_recursive ENDP + +fht_helper_float_19_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 264 + .allocstack 264 + vmovaps xmmword ptr [rsp + 240], xmm15 + .savexmm128 xmm15, 240 + vmovaps xmmword ptr [rsp + 224], xmm14 + .savexmm128 xmm14, 224 + vmovaps xmmword ptr [rsp + 208], xmm13 + .savexmm128 xmm13, 208 + vmovaps xmmword ptr [rsp + 192], xmm12 + .savexmm128 xmm12, 192 + vmovaps xmmword ptr [rsp + 176], xmm11 + .savexmm128 xmm11, 176 + vmovaps xmmword ptr [rsp + 160], xmm10 + .savexmm128 xmm10, 160 + vmovaps xmmword ptr [rsp + 144], xmm9 + .savexmm128 xmm9, 144 + vmovaps xmmword ptr [rsp + 128], xmm8 + .savexmm128 xmm8, 128 + vmovaps xmmword ptr [rsp + 112], xmm7 + .savexmm128 xmm7, 112 + vmovaps xmmword ptr [rsp + 96], xmm6 + .savexmm128 xmm6, 96 + .endprolog + mov dword ptr [rsp + 92], edx + mov qword ptr [rsp + 80], rcx + cmp dword ptr [rsp + 92], 13 + jne LBB114_34 + mov dword ptr [rsp + 76], 0 +LBB114_2: + cmp dword ptr [rsp + 76], 8192 + jge LBB114_9 + mov dword ptr [rsp + 72], 0 +LBB114_4: + cmp dword ptr [rsp + 72], 8 + jge LBB114_7 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB114_4 +LBB114_7: + jmp LBB114_8 +LBB114_8: + mov eax, dword ptr [rsp + 76] + add eax, 64 + mov dword ptr [rsp + 76], eax + jmp LBB114_2 +LBB114_9: + mov dword ptr [rsp + 68], 0 +LBB114_10: + cmp dword ptr [rsp + 68], 8192 + jge LBB114_17 + mov dword ptr [rsp + 64], 0 +LBB114_12: + cmp dword ptr [rsp + 64], 64 + jge LBB114_15 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB114_12 +LBB114_15: + jmp LBB114_16 +LBB114_16: + mov eax, dword ptr [rsp + 68] + add eax, 512 + mov dword ptr [rsp + 68], eax + jmp LBB114_10 +LBB114_17: + mov dword ptr [rsp + 60], 0 +LBB114_18: + cmp dword ptr [rsp + 60], 8192 + jge LBB114_25 + mov dword ptr [rsp + 56], 0 +LBB114_20: + cmp dword ptr [rsp + 56], 512 + jge LBB114_23 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB114_20 +LBB114_23: + jmp LBB114_24 +LBB114_24: + mov eax, dword ptr [rsp + 60] + add eax, 4096 + mov dword ptr [rsp + 60], eax + jmp LBB114_18 +LBB114_25: + mov dword ptr [rsp + 52], 0 +LBB114_26: + cmp dword ptr [rsp + 52], 8192 + jge LBB114_33 + mov dword ptr [rsp + 48], 0 +LBB114_28: + cmp dword ptr [rsp + 48], 4096 + jge LBB114_31 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 16384 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB114_28 +LBB114_31: + jmp LBB114_32 +LBB114_32: + mov eax, dword ptr [rsp + 52] + add eax, 8192 + mov dword ptr [rsp + 52], eax + jmp LBB114_26 +LBB114_33: + jmp LBB114_54 +LBB114_34: + cmp dword ptr [rsp + 92], 16 + jne LBB114_44 + mov rcx, qword ptr [rsp + 80] + mov edx, 13 + call fht_helper_float_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 32768 + mov edx, 13 + call fht_helper_float_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 65536 + mov edx, 13 + call fht_helper_float_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 98304 + mov edx, 13 + call fht_helper_float_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 131072 + mov edx, 13 + call fht_helper_float_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 163840 + mov edx, 13 + call fht_helper_float_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 196608 + mov edx, 13 + call fht_helper_float_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 229376 + mov edx, 13 + call fht_helper_float_19_recursive + mov dword ptr [rsp + 44], 0 +LBB114_36: + cmp dword ptr [rsp + 44], 65536 + jge LBB114_43 + mov dword ptr [rsp + 40], 0 +LBB114_38: + cmp dword ptr [rsp + 40], 8192 + jge LBB114_41 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 32768 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 65536 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 98304 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 44] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 2 + add r9, r10 + add r9, 131072 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 44] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 2 + add r10, r11 + add r10, 163840 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 2 + add r11, rsi + add r11, 196608 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 2 + add rsi, rdi + add rsi, 229376 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB114_38 +LBB114_41: + jmp LBB114_42 +LBB114_42: + mov eax, dword ptr [rsp + 44] + add eax, 65536 + mov dword ptr [rsp + 44], eax + jmp LBB114_36 +LBB114_43: + jmp LBB114_54 +LBB114_44: + cmp dword ptr [rsp + 92], 19 + jne LBB114_54 + mov rcx, qword ptr [rsp + 80] + mov edx, 16 + call fht_helper_float_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 262144 + mov edx, 16 + call fht_helper_float_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 524288 + mov edx, 16 + call fht_helper_float_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 786432 + mov edx, 16 + call fht_helper_float_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 1048576 + mov edx, 16 + call fht_helper_float_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 1310720 + mov edx, 16 + call fht_helper_float_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 1572864 + mov edx, 16 + call fht_helper_float_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 1835008 + mov edx, 16 + call fht_helper_float_19_recursive + mov dword ptr [rsp + 36], 0 +LBB114_46: + cmp dword ptr [rsp + 36], 524288 + jge LBB114_53 + mov dword ptr [rsp + 32], 0 +LBB114_48: + cmp dword ptr [rsp + 32], 65536 + jge LBB114_51 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 2 + add rcx, rdx + add rcx, 262144 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 36] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 2 + add rdx, r8 + add rdx, 524288 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 36] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 2 + add r8, r9 + add r8, 786432 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 36] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 32] + shl r10, 2 + add r9, r10 + add r9, 1048576 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 36] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 32] + shl r11, 2 + add r10, r11 + add r10, 1310720 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 36] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 32] + shl rsi, 2 + add r11, rsi + add r11, 1572864 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 36] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 32] + shl rdi, 2 + add rsi, rdi + add rsi, 1835008 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 32] + add eax, 8 + mov dword ptr [rsp + 32], eax + jmp LBB114_48 +LBB114_51: + jmp LBB114_52 +LBB114_52: + mov eax, dword ptr [rsp + 36] + add eax, 524288 + mov dword ptr [rsp + 36], eax + jmp LBB114_46 +LBB114_53: + jmp LBB114_54 +LBB114_54: + vmovaps xmm6, xmmword ptr [rsp + 96] + vmovaps xmm7, xmmword ptr [rsp + 112] + vmovaps xmm8, xmmword ptr [rsp + 128] + vmovaps xmm9, xmmword ptr [rsp + 144] + vmovaps xmm10, xmmword ptr [rsp + 160] + vmovaps xmm11, xmmword ptr [rsp + 176] + vmovaps xmm12, xmmword ptr [rsp + 192] + vmovaps xmm13, xmmword ptr [rsp + 208] + vmovaps xmm14, xmmword ptr [rsp + 224] + vmovaps xmm15, xmmword ptr [rsp + 240] + add rsp, 264 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_19_recursive ENDP + +fht_helper_float_20_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 264 + .allocstack 264 + vmovaps xmmword ptr [rsp + 240], xmm15 + .savexmm128 xmm15, 240 + vmovaps xmmword ptr [rsp + 224], xmm14 + .savexmm128 xmm14, 224 + vmovaps xmmword ptr [rsp + 208], xmm13 + .savexmm128 xmm13, 208 + vmovaps xmmword ptr [rsp + 192], xmm12 + .savexmm128 xmm12, 192 + vmovaps xmmword ptr [rsp + 176], xmm11 + .savexmm128 xmm11, 176 + vmovaps xmmword ptr [rsp + 160], xmm10 + .savexmm128 xmm10, 160 + vmovaps xmmword ptr [rsp + 144], xmm9 + .savexmm128 xmm9, 144 + vmovaps xmmword ptr [rsp + 128], xmm8 + .savexmm128 xmm8, 128 + vmovaps xmmword ptr [rsp + 112], xmm7 + .savexmm128 xmm7, 112 + vmovaps xmmword ptr [rsp + 96], xmm6 + .savexmm128 xmm6, 96 + .endprolog + mov dword ptr [rsp + 92], edx + mov qword ptr [rsp + 80], rcx + cmp dword ptr [rsp + 92], 12 + jne LBB115_26 + mov dword ptr [rsp + 76], 0 +LBB115_2: + cmp dword ptr [rsp + 76], 4096 + jge LBB115_9 + mov dword ptr [rsp + 72], 0 +LBB115_4: + cmp dword ptr [rsp + 72], 8 + jge LBB115_7 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB115_4 +LBB115_7: + jmp LBB115_8 +LBB115_8: + mov eax, dword ptr [rsp + 76] + add eax, 64 + mov dword ptr [rsp + 76], eax + jmp LBB115_2 +LBB115_9: + mov dword ptr [rsp + 68], 0 +LBB115_10: + cmp dword ptr [rsp + 68], 4096 + jge LBB115_17 + mov dword ptr [rsp + 64], 0 +LBB115_12: + cmp dword ptr [rsp + 64], 64 + jge LBB115_15 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB115_12 +LBB115_15: + jmp LBB115_16 +LBB115_16: + mov eax, dword ptr [rsp + 68] + add eax, 512 + mov dword ptr [rsp + 68], eax + jmp LBB115_10 +LBB115_17: + mov dword ptr [rsp + 60], 0 +LBB115_18: + cmp dword ptr [rsp + 60], 4096 + jge LBB115_25 + mov dword ptr [rsp + 56], 0 +LBB115_20: + cmp dword ptr [rsp + 56], 512 + jge LBB115_23 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB115_20 +LBB115_23: + jmp LBB115_24 +LBB115_24: + mov eax, dword ptr [rsp + 60] + add eax, 4096 + mov dword ptr [rsp + 60], eax + jmp LBB115_18 +LBB115_25: + jmp LBB115_56 +LBB115_26: + cmp dword ptr [rsp + 92], 15 + jne LBB115_36 + mov rcx, qword ptr [rsp + 80] + mov edx, 12 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 16384 + mov edx, 12 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 32768 + mov edx, 12 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 49152 + mov edx, 12 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 65536 + mov edx, 12 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 81920 + mov edx, 12 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 98304 + mov edx, 12 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 114688 + mov edx, 12 + call fht_helper_float_20_recursive + mov dword ptr [rsp + 52], 0 +LBB115_28: + cmp dword ptr [rsp + 52], 32768 + jge LBB115_35 + mov dword ptr [rsp + 48], 0 +LBB115_30: + cmp dword ptr [rsp + 48], 4096 + jge LBB115_33 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 114688 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB115_30 +LBB115_33: + jmp LBB115_34 +LBB115_34: + mov eax, dword ptr [rsp + 52] + add eax, 32768 + mov dword ptr [rsp + 52], eax + jmp LBB115_28 +LBB115_35: + jmp LBB115_56 +LBB115_36: + cmp dword ptr [rsp + 92], 18 + jne LBB115_46 + mov rcx, qword ptr [rsp + 80] + mov edx, 15 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 131072 + mov edx, 15 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 262144 + mov edx, 15 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 393216 + mov edx, 15 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 524288 + mov edx, 15 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 655360 + mov edx, 15 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 786432 + mov edx, 15 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 917504 + mov edx, 15 + call fht_helper_float_20_recursive + mov dword ptr [rsp + 44], 0 +LBB115_38: + cmp dword ptr [rsp + 44], 262144 + jge LBB115_45 + mov dword ptr [rsp + 40], 0 +LBB115_40: + cmp dword ptr [rsp + 40], 32768 + jge LBB115_43 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 44] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 2 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 44] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 2 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 2 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 2 + add rsi, rdi + add rsi, 917504 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB115_40 +LBB115_43: + jmp LBB115_44 +LBB115_44: + mov eax, dword ptr [rsp + 44] + add eax, 262144 + mov dword ptr [rsp + 44], eax + jmp LBB115_38 +LBB115_45: + jmp LBB115_56 +LBB115_46: + cmp dword ptr [rsp + 92], 20 + jne LBB115_56 + mov rcx, qword ptr [rsp + 80] + mov edx, 18 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 1048576 + mov edx, 18 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 2097152 + mov edx, 18 + call fht_helper_float_20_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 3145728 + mov edx, 18 + call fht_helper_float_20_recursive + mov dword ptr [rsp + 36], 0 +LBB115_48: + cmp dword ptr [rsp + 36], 1048576 + jge LBB115_55 + mov dword ptr [rsp + 32], 0 +LBB115_50: + cmp dword ptr [rsp + 32], 262144 + jge LBB115_53 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 2 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 36] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 2 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 36] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 2 + add r8, r9 + add r8, 3145728 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rcx], ymm1 + vmovups ymmword ptr [rdx], ymm2 + vmovups ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 32] + add eax, 8 + mov dword ptr [rsp + 32], eax + jmp LBB115_50 +LBB115_53: + jmp LBB115_54 +LBB115_54: + mov eax, dword ptr [rsp + 36] + add eax, 1048576 + mov dword ptr [rsp + 36], eax + jmp LBB115_48 +LBB115_55: + jmp LBB115_56 +LBB115_56: + vmovaps xmm6, xmmword ptr [rsp + 96] + vmovaps xmm7, xmmword ptr [rsp + 112] + vmovaps xmm8, xmmword ptr [rsp + 128] + vmovaps xmm9, xmmword ptr [rsp + 144] + vmovaps xmm10, xmmword ptr [rsp + 160] + vmovaps xmm11, xmmword ptr [rsp + 176] + vmovaps xmm12, xmmword ptr [rsp + 192] + vmovaps xmm13, xmmword ptr [rsp + 208] + vmovaps xmm14, xmmword ptr [rsp + 224] + vmovaps xmm15, xmmword ptr [rsp + 240] + add rsp, 264 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_20_recursive ENDP + +fht_helper_float_21_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 264 + .allocstack 264 + vmovaps xmmword ptr [rsp + 240], xmm15 + .savexmm128 xmm15, 240 + vmovaps xmmword ptr [rsp + 224], xmm14 + .savexmm128 xmm14, 224 + vmovaps xmmword ptr [rsp + 208], xmm13 + .savexmm128 xmm13, 208 + vmovaps xmmword ptr [rsp + 192], xmm12 + .savexmm128 xmm12, 192 + vmovaps xmmword ptr [rsp + 176], xmm11 + .savexmm128 xmm11, 176 + vmovaps xmmword ptr [rsp + 160], xmm10 + .savexmm128 xmm10, 160 + vmovaps xmmword ptr [rsp + 144], xmm9 + .savexmm128 xmm9, 144 + vmovaps xmmword ptr [rsp + 128], xmm8 + .savexmm128 xmm8, 128 + vmovaps xmmword ptr [rsp + 112], xmm7 + .savexmm128 xmm7, 112 + vmovaps xmmword ptr [rsp + 96], xmm6 + .savexmm128 xmm6, 96 + .endprolog + mov dword ptr [rsp + 92], edx + mov qword ptr [rsp + 80], rcx + cmp dword ptr [rsp + 92], 9 + jne LBB116_18 + mov dword ptr [rsp + 76], 0 +LBB116_2: + cmp dword ptr [rsp + 76], 512 + jge LBB116_9 + mov dword ptr [rsp + 72], 0 +LBB116_4: + cmp dword ptr [rsp + 72], 8 + jge LBB116_7 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB116_4 +LBB116_7: + jmp LBB116_8 +LBB116_8: + mov eax, dword ptr [rsp + 76] + add eax, 64 + mov dword ptr [rsp + 76], eax + jmp LBB116_2 +LBB116_9: + mov dword ptr [rsp + 68], 0 +LBB116_10: + cmp dword ptr [rsp + 68], 512 + jge LBB116_17 + mov dword ptr [rsp + 64], 0 +LBB116_12: + cmp dword ptr [rsp + 64], 64 + jge LBB116_15 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB116_12 +LBB116_15: + jmp LBB116_16 +LBB116_16: + mov eax, dword ptr [rsp + 68] + add eax, 512 + mov dword ptr [rsp + 68], eax + jmp LBB116_10 +LBB116_17: + jmp LBB116_58 +LBB116_18: + cmp dword ptr [rsp + 92], 12 + jne LBB116_28 + mov rcx, qword ptr [rsp + 80] + mov edx, 9 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 2048 + mov edx, 9 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 4096 + mov edx, 9 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 6144 + mov edx, 9 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 8192 + mov edx, 9 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 10240 + mov edx, 9 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 12288 + mov edx, 9 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 14336 + mov edx, 9 + call fht_helper_float_21_recursive + mov dword ptr [rsp + 60], 0 +LBB116_20: + cmp dword ptr [rsp + 60], 4096 + jge LBB116_27 + mov dword ptr [rsp + 56], 0 +LBB116_22: + cmp dword ptr [rsp + 56], 512 + jge LBB116_25 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB116_22 +LBB116_25: + jmp LBB116_26 +LBB116_26: + mov eax, dword ptr [rsp + 60] + add eax, 4096 + mov dword ptr [rsp + 60], eax + jmp LBB116_20 +LBB116_27: + jmp LBB116_58 +LBB116_28: + cmp dword ptr [rsp + 92], 15 + jne LBB116_38 + mov rcx, qword ptr [rsp + 80] + mov edx, 12 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 16384 + mov edx, 12 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 32768 + mov edx, 12 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 49152 + mov edx, 12 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 65536 + mov edx, 12 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 81920 + mov edx, 12 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 98304 + mov edx, 12 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 114688 + mov edx, 12 + call fht_helper_float_21_recursive + mov dword ptr [rsp + 52], 0 +LBB116_30: + cmp dword ptr [rsp + 52], 32768 + jge LBB116_37 + mov dword ptr [rsp + 48], 0 +LBB116_32: + cmp dword ptr [rsp + 48], 4096 + jge LBB116_35 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 114688 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB116_32 +LBB116_35: + jmp LBB116_36 +LBB116_36: + mov eax, dword ptr [rsp + 52] + add eax, 32768 + mov dword ptr [rsp + 52], eax + jmp LBB116_30 +LBB116_37: + jmp LBB116_58 +LBB116_38: + cmp dword ptr [rsp + 92], 18 + jne LBB116_48 + mov rcx, qword ptr [rsp + 80] + mov edx, 15 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 131072 + mov edx, 15 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 262144 + mov edx, 15 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 393216 + mov edx, 15 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 524288 + mov edx, 15 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 655360 + mov edx, 15 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 786432 + mov edx, 15 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 917504 + mov edx, 15 + call fht_helper_float_21_recursive + mov dword ptr [rsp + 44], 0 +LBB116_40: + cmp dword ptr [rsp + 44], 262144 + jge LBB116_47 + mov dword ptr [rsp + 40], 0 +LBB116_42: + cmp dword ptr [rsp + 40], 32768 + jge LBB116_45 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 44] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 2 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 44] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 2 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 2 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 2 + add rsi, rdi + add rsi, 917504 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB116_42 +LBB116_45: + jmp LBB116_46 +LBB116_46: + mov eax, dword ptr [rsp + 44] + add eax, 262144 + mov dword ptr [rsp + 44], eax + jmp LBB116_40 +LBB116_47: + jmp LBB116_58 +LBB116_48: + cmp dword ptr [rsp + 92], 21 + jne LBB116_58 + mov rcx, qword ptr [rsp + 80] + mov edx, 18 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 1048576 + mov edx, 18 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 2097152 + mov edx, 18 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 3145728 + mov edx, 18 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 4194304 + mov edx, 18 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 5242880 + mov edx, 18 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 6291456 + mov edx, 18 + call fht_helper_float_21_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 7340032 + mov edx, 18 + call fht_helper_float_21_recursive + mov dword ptr [rsp + 36], 0 +LBB116_50: + cmp dword ptr [rsp + 36], 2097152 + jge LBB116_57 + mov dword ptr [rsp + 32], 0 +LBB116_52: + cmp dword ptr [rsp + 32], 262144 + jge LBB116_55 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 2 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 36] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 2 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 36] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 2 + add r8, r9 + add r8, 3145728 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 36] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 32] + shl r10, 2 + add r9, r10 + add r9, 4194304 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 36] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 32] + shl r11, 2 + add r10, r11 + add r10, 5242880 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 36] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 32] + shl rsi, 2 + add r11, rsi + add r11, 6291456 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 36] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 32] + shl rdi, 2 + add rsi, rdi + add rsi, 7340032 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 32] + add eax, 8 + mov dword ptr [rsp + 32], eax + jmp LBB116_52 +LBB116_55: + jmp LBB116_56 +LBB116_56: + mov eax, dword ptr [rsp + 36] + add eax, 2097152 + mov dword ptr [rsp + 36], eax + jmp LBB116_50 +LBB116_57: + jmp LBB116_58 +LBB116_58: + vmovaps xmm6, xmmword ptr [rsp + 96] + vmovaps xmm7, xmmword ptr [rsp + 112] + vmovaps xmm8, xmmword ptr [rsp + 128] + vmovaps xmm9, xmmword ptr [rsp + 144] + vmovaps xmm10, xmmword ptr [rsp + 160] + vmovaps xmm11, xmmword ptr [rsp + 176] + vmovaps xmm12, xmmword ptr [rsp + 192] + vmovaps xmm13, xmmword ptr [rsp + 208] + vmovaps xmm14, xmmword ptr [rsp + 224] + vmovaps xmm15, xmmword ptr [rsp + 240] + add rsp, 264 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_21_recursive ENDP + +fht_helper_float_22_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 280 + .allocstack 280 + vmovaps xmmword ptr [rsp + 256], xmm15 + .savexmm128 xmm15, 256 + vmovaps xmmword ptr [rsp + 240], xmm14 + .savexmm128 xmm14, 240 + vmovaps xmmword ptr [rsp + 224], xmm13 + .savexmm128 xmm13, 224 + vmovaps xmmword ptr [rsp + 208], xmm12 + .savexmm128 xmm12, 208 + vmovaps xmmword ptr [rsp + 192], xmm11 + .savexmm128 xmm11, 192 + vmovaps xmmword ptr [rsp + 176], xmm10 + .savexmm128 xmm10, 176 + vmovaps xmmword ptr [rsp + 160], xmm9 + .savexmm128 xmm9, 160 + vmovaps xmmword ptr [rsp + 144], xmm8 + .savexmm128 xmm8, 144 + vmovaps xmmword ptr [rsp + 128], xmm7 + .savexmm128 xmm7, 128 + vmovaps xmmword ptr [rsp + 112], xmm6 + .savexmm128 xmm6, 112 + .endprolog + mov dword ptr [rsp + 108], edx + mov qword ptr [rsp + 96], rcx + cmp dword ptr [rsp + 108], 11 + jne LBB117_26 + mov dword ptr [rsp + 92], 0 +LBB117_2: + cmp dword ptr [rsp + 92], 2048 + jge LBB117_9 + mov dword ptr [rsp + 88], 0 +LBB117_4: + cmp dword ptr [rsp + 88], 8 + jge LBB117_7 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 92] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 92] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 92] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 92] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 8 + mov dword ptr [rsp + 88], eax + jmp LBB117_4 +LBB117_7: + jmp LBB117_8 +LBB117_8: + mov eax, dword ptr [rsp + 92] + add eax, 64 + mov dword ptr [rsp + 92], eax + jmp LBB117_2 +LBB117_9: + mov dword ptr [rsp + 84], 0 +LBB117_10: + cmp dword ptr [rsp + 84], 2048 + jge LBB117_17 + mov dword ptr [rsp + 80], 0 +LBB117_12: + cmp dword ptr [rsp + 80], 64 + jge LBB117_15 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 84] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 84] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 84] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 84] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 8 + mov dword ptr [rsp + 80], eax + jmp LBB117_12 +LBB117_15: + jmp LBB117_16 +LBB117_16: + mov eax, dword ptr [rsp + 84] + add eax, 512 + mov dword ptr [rsp + 84], eax + jmp LBB117_10 +LBB117_17: + mov dword ptr [rsp + 76], 0 +LBB117_18: + cmp dword ptr [rsp + 76], 2048 + jge LBB117_25 + mov dword ptr [rsp + 72], 0 +LBB117_20: + cmp dword ptr [rsp + 72], 512 + jge LBB117_23 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 6144 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rcx], ymm1 + vmovups ymmword ptr [rdx], ymm2 + vmovups ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB117_20 +LBB117_23: + jmp LBB117_24 +LBB117_24: + mov eax, dword ptr [rsp + 76] + add eax, 2048 + mov dword ptr [rsp + 76], eax + jmp LBB117_18 +LBB117_25: + jmp LBB117_66 +LBB117_26: + cmp dword ptr [rsp + 108], 14 + jne LBB117_36 + mov rcx, qword ptr [rsp + 96] + mov edx, 11 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8192 + mov edx, 11 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16384 + mov edx, 11 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 24576 + mov edx, 11 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 32768 + mov edx, 11 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 40960 + mov edx, 11 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 49152 + mov edx, 11 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 57344 + mov edx, 11 + call fht_helper_float_22_recursive + mov dword ptr [rsp + 68], 0 +LBB117_28: + cmp dword ptr [rsp + 68], 16384 + jge LBB117_35 + mov dword ptr [rsp + 64], 0 +LBB117_30: + cmp dword ptr [rsp + 64], 2048 + jge LBB117_33 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 8192 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 16384 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 24576 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 32768 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 40960 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 49152 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 57344 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB117_30 +LBB117_33: + jmp LBB117_34 +LBB117_34: + mov eax, dword ptr [rsp + 68] + add eax, 16384 + mov dword ptr [rsp + 68], eax + jmp LBB117_28 +LBB117_35: + jmp LBB117_66 +LBB117_36: + cmp dword ptr [rsp + 108], 17 + jne LBB117_46 + mov rcx, qword ptr [rsp + 96] + mov edx, 14 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 65536 + mov edx, 14 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 131072 + mov edx, 14 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 196608 + mov edx, 14 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 262144 + mov edx, 14 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 327680 + mov edx, 14 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 393216 + mov edx, 14 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 458752 + mov edx, 14 + call fht_helper_float_22_recursive + mov dword ptr [rsp + 60], 0 +LBB117_38: + cmp dword ptr [rsp + 60], 131072 + jge LBB117_45 + mov dword ptr [rsp + 56], 0 +LBB117_40: + cmp dword ptr [rsp + 56], 16384 + jge LBB117_43 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 65536 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 131072 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 196608 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 262144 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 327680 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 393216 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 458752 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB117_40 +LBB117_43: + jmp LBB117_44 +LBB117_44: + mov eax, dword ptr [rsp + 60] + add eax, 131072 + mov dword ptr [rsp + 60], eax + jmp LBB117_38 +LBB117_45: + jmp LBB117_66 +LBB117_46: + cmp dword ptr [rsp + 108], 20 + jne LBB117_56 + mov rcx, qword ptr [rsp + 96] + mov edx, 17 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 524288 + mov edx, 17 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1048576 + mov edx, 17 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1572864 + mov edx, 17 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2097152 + mov edx, 17 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2621440 + mov edx, 17 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3145728 + mov edx, 17 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3670016 + mov edx, 17 + call fht_helper_float_22_recursive + mov dword ptr [rsp + 52], 0 +LBB117_48: + cmp dword ptr [rsp + 52], 1048576 + jge LBB117_55 + mov dword ptr [rsp + 48], 0 +LBB117_50: + cmp dword ptr [rsp + 48], 131072 + jge LBB117_53 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 524288 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 1048576 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 1572864 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 2097152 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 2621440 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 3145728 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 3670016 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB117_50 +LBB117_53: + jmp LBB117_54 +LBB117_54: + mov eax, dword ptr [rsp + 52] + add eax, 1048576 + mov dword ptr [rsp + 52], eax + jmp LBB117_48 +LBB117_55: + jmp LBB117_66 +LBB117_56: + cmp dword ptr [rsp + 108], 22 + jne LBB117_66 + mov rcx, qword ptr [rsp + 96] + mov edx, 20 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4194304 + mov edx, 20 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8388608 + mov edx, 20 + call fht_helper_float_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 12582912 + mov edx, 20 + call fht_helper_float_22_recursive + mov dword ptr [rsp + 44], 0 +LBB117_58: + cmp dword ptr [rsp + 44], 4194304 + jge LBB117_65 + mov dword ptr [rsp + 40], 0 +LBB117_60: + cmp dword ptr [rsp + 40], 1048576 + jge LBB117_63 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 4194304 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 8388608 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 12582912 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rcx], ymm1 + vmovups ymmword ptr [rdx], ymm2 + vmovups ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB117_60 +LBB117_63: + jmp LBB117_64 +LBB117_64: + mov eax, dword ptr [rsp + 44] + add eax, 4194304 + mov dword ptr [rsp + 44], eax + jmp LBB117_58 +LBB117_65: + jmp LBB117_66 +LBB117_66: + vmovaps xmm6, xmmword ptr [rsp + 112] + vmovaps xmm7, xmmword ptr [rsp + 128] + vmovaps xmm8, xmmword ptr [rsp + 144] + vmovaps xmm9, xmmword ptr [rsp + 160] + vmovaps xmm10, xmmword ptr [rsp + 176] + vmovaps xmm11, xmmword ptr [rsp + 192] + vmovaps xmm12, xmmword ptr [rsp + 208] + vmovaps xmm13, xmmword ptr [rsp + 224] + vmovaps xmm14, xmmword ptr [rsp + 240] + vmovaps xmm15, xmmword ptr [rsp + 256] + add rsp, 280 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_22_recursive ENDP + +fht_helper_float_23_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 280 + .allocstack 280 + vmovaps xmmword ptr [rsp + 256], xmm15 + .savexmm128 xmm15, 256 + vmovaps xmmword ptr [rsp + 240], xmm14 + .savexmm128 xmm14, 240 + vmovaps xmmword ptr [rsp + 224], xmm13 + .savexmm128 xmm13, 224 + vmovaps xmmword ptr [rsp + 208], xmm12 + .savexmm128 xmm12, 208 + vmovaps xmmword ptr [rsp + 192], xmm11 + .savexmm128 xmm11, 192 + vmovaps xmmword ptr [rsp + 176], xmm10 + .savexmm128 xmm10, 176 + vmovaps xmmword ptr [rsp + 160], xmm9 + .savexmm128 xmm9, 160 + vmovaps xmmword ptr [rsp + 144], xmm8 + .savexmm128 xmm8, 144 + vmovaps xmmword ptr [rsp + 128], xmm7 + .savexmm128 xmm7, 128 + vmovaps xmmword ptr [rsp + 112], xmm6 + .savexmm128 xmm6, 112 + .endprolog + mov dword ptr [rsp + 108], edx + mov qword ptr [rsp + 96], rcx + cmp dword ptr [rsp + 108], 9 + jne LBB118_18 + mov dword ptr [rsp + 92], 0 +LBB118_2: + cmp dword ptr [rsp + 92], 512 + jge LBB118_9 + mov dword ptr [rsp + 88], 0 +LBB118_4: + cmp dword ptr [rsp + 88], 8 + jge LBB118_7 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 92] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 92] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 92] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 92] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 8 + mov dword ptr [rsp + 88], eax + jmp LBB118_4 +LBB118_7: + jmp LBB118_8 +LBB118_8: + mov eax, dword ptr [rsp + 92] + add eax, 64 + mov dword ptr [rsp + 92], eax + jmp LBB118_2 +LBB118_9: + mov dword ptr [rsp + 84], 0 +LBB118_10: + cmp dword ptr [rsp + 84], 512 + jge LBB118_17 + mov dword ptr [rsp + 80], 0 +LBB118_12: + cmp dword ptr [rsp + 80], 64 + jge LBB118_15 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 84] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 84] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 84] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 84] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 8 + mov dword ptr [rsp + 80], eax + jmp LBB118_12 +LBB118_15: + jmp LBB118_16 +LBB118_16: + mov eax, dword ptr [rsp + 84] + add eax, 512 + mov dword ptr [rsp + 84], eax + jmp LBB118_10 +LBB118_17: + jmp LBB118_68 +LBB118_18: + cmp dword ptr [rsp + 108], 12 + jne LBB118_28 + mov rcx, qword ptr [rsp + 96] + mov edx, 9 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2048 + mov edx, 9 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4096 + mov edx, 9 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 6144 + mov edx, 9 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8192 + mov edx, 9 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 10240 + mov edx, 9 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 12288 + mov edx, 9 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 14336 + mov edx, 9 + call fht_helper_float_23_recursive + mov dword ptr [rsp + 76], 0 +LBB118_20: + cmp dword ptr [rsp + 76], 4096 + jge LBB118_27 + mov dword ptr [rsp + 72], 0 +LBB118_22: + cmp dword ptr [rsp + 72], 512 + jge LBB118_25 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB118_22 +LBB118_25: + jmp LBB118_26 +LBB118_26: + mov eax, dword ptr [rsp + 76] + add eax, 4096 + mov dword ptr [rsp + 76], eax + jmp LBB118_20 +LBB118_27: + jmp LBB118_68 +LBB118_28: + cmp dword ptr [rsp + 108], 15 + jne LBB118_38 + mov rcx, qword ptr [rsp + 96] + mov edx, 12 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16384 + mov edx, 12 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 32768 + mov edx, 12 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 49152 + mov edx, 12 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 65536 + mov edx, 12 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 81920 + mov edx, 12 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 98304 + mov edx, 12 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 114688 + mov edx, 12 + call fht_helper_float_23_recursive + mov dword ptr [rsp + 68], 0 +LBB118_30: + cmp dword ptr [rsp + 68], 32768 + jge LBB118_37 + mov dword ptr [rsp + 64], 0 +LBB118_32: + cmp dword ptr [rsp + 64], 4096 + jge LBB118_35 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 114688 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB118_32 +LBB118_35: + jmp LBB118_36 +LBB118_36: + mov eax, dword ptr [rsp + 68] + add eax, 32768 + mov dword ptr [rsp + 68], eax + jmp LBB118_30 +LBB118_37: + jmp LBB118_68 +LBB118_38: + cmp dword ptr [rsp + 108], 18 + jne LBB118_48 + mov rcx, qword ptr [rsp + 96] + mov edx, 15 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 131072 + mov edx, 15 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 262144 + mov edx, 15 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 393216 + mov edx, 15 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 524288 + mov edx, 15 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 655360 + mov edx, 15 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 786432 + mov edx, 15 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 917504 + mov edx, 15 + call fht_helper_float_23_recursive + mov dword ptr [rsp + 60], 0 +LBB118_40: + cmp dword ptr [rsp + 60], 262144 + jge LBB118_47 + mov dword ptr [rsp + 56], 0 +LBB118_42: + cmp dword ptr [rsp + 56], 32768 + jge LBB118_45 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 917504 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB118_42 +LBB118_45: + jmp LBB118_46 +LBB118_46: + mov eax, dword ptr [rsp + 60] + add eax, 262144 + mov dword ptr [rsp + 60], eax + jmp LBB118_40 +LBB118_47: + jmp LBB118_68 +LBB118_48: + cmp dword ptr [rsp + 108], 21 + jne LBB118_58 + mov rcx, qword ptr [rsp + 96] + mov edx, 18 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1048576 + mov edx, 18 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2097152 + mov edx, 18 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3145728 + mov edx, 18 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4194304 + mov edx, 18 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 5242880 + mov edx, 18 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 6291456 + mov edx, 18 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 7340032 + mov edx, 18 + call fht_helper_float_23_recursive + mov dword ptr [rsp + 52], 0 +LBB118_50: + cmp dword ptr [rsp + 52], 2097152 + jge LBB118_57 + mov dword ptr [rsp + 48], 0 +LBB118_52: + cmp dword ptr [rsp + 48], 262144 + jge LBB118_55 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 3145728 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 4194304 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 5242880 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 6291456 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 7340032 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB118_52 +LBB118_55: + jmp LBB118_56 +LBB118_56: + mov eax, dword ptr [rsp + 52] + add eax, 2097152 + mov dword ptr [rsp + 52], eax + jmp LBB118_50 +LBB118_57: + jmp LBB118_68 +LBB118_58: + cmp dword ptr [rsp + 108], 23 + jne LBB118_68 + mov rcx, qword ptr [rsp + 96] + mov edx, 21 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8388608 + mov edx, 21 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16777216 + mov edx, 21 + call fht_helper_float_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 25165824 + mov edx, 21 + call fht_helper_float_23_recursive + mov dword ptr [rsp + 44], 0 +LBB118_60: + cmp dword ptr [rsp + 44], 8388608 + jge LBB118_67 + mov dword ptr [rsp + 40], 0 +LBB118_62: + cmp dword ptr [rsp + 40], 2097152 + jge LBB118_65 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 8388608 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 16777216 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 25165824 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rcx], ymm1 + vmovups ymmword ptr [rdx], ymm2 + vmovups ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB118_62 +LBB118_65: + jmp LBB118_66 +LBB118_66: + mov eax, dword ptr [rsp + 44] + add eax, 8388608 + mov dword ptr [rsp + 44], eax + jmp LBB118_60 +LBB118_67: + jmp LBB118_68 +LBB118_68: + vmovaps xmm6, xmmword ptr [rsp + 112] + vmovaps xmm7, xmmword ptr [rsp + 128] + vmovaps xmm8, xmmword ptr [rsp + 144] + vmovaps xmm9, xmmword ptr [rsp + 160] + vmovaps xmm10, xmmword ptr [rsp + 176] + vmovaps xmm11, xmmword ptr [rsp + 192] + vmovaps xmm12, xmmword ptr [rsp + 208] + vmovaps xmm13, xmmword ptr [rsp + 224] + vmovaps xmm14, xmmword ptr [rsp + 240] + vmovaps xmm15, xmmword ptr [rsp + 256] + add rsp, 280 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_23_recursive ENDP + +fht_helper_float_24_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 280 + .allocstack 280 + vmovaps xmmword ptr [rsp + 256], xmm15 + .savexmm128 xmm15, 256 + vmovaps xmmword ptr [rsp + 240], xmm14 + .savexmm128 xmm14, 240 + vmovaps xmmword ptr [rsp + 224], xmm13 + .savexmm128 xmm13, 224 + vmovaps xmmword ptr [rsp + 208], xmm12 + .savexmm128 xmm12, 208 + vmovaps xmmword ptr [rsp + 192], xmm11 + .savexmm128 xmm11, 192 + vmovaps xmmword ptr [rsp + 176], xmm10 + .savexmm128 xmm10, 176 + vmovaps xmmword ptr [rsp + 160], xmm9 + .savexmm128 xmm9, 160 + vmovaps xmmword ptr [rsp + 144], xmm8 + .savexmm128 xmm8, 144 + vmovaps xmmword ptr [rsp + 128], xmm7 + .savexmm128 xmm7, 128 + vmovaps xmmword ptr [rsp + 112], xmm6 + .savexmm128 xmm6, 112 + .endprolog + mov dword ptr [rsp + 108], edx + mov qword ptr [rsp + 96], rcx + cmp dword ptr [rsp + 108], 12 + jne LBB119_26 + mov dword ptr [rsp + 92], 0 +LBB119_2: + cmp dword ptr [rsp + 92], 4096 + jge LBB119_9 + mov dword ptr [rsp + 88], 0 +LBB119_4: + cmp dword ptr [rsp + 88], 8 + jge LBB119_7 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 92] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 92] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 92] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 92] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 8 + mov dword ptr [rsp + 88], eax + jmp LBB119_4 +LBB119_7: + jmp LBB119_8 +LBB119_8: + mov eax, dword ptr [rsp + 92] + add eax, 64 + mov dword ptr [rsp + 92], eax + jmp LBB119_2 +LBB119_9: + mov dword ptr [rsp + 84], 0 +LBB119_10: + cmp dword ptr [rsp + 84], 4096 + jge LBB119_17 + mov dword ptr [rsp + 80], 0 +LBB119_12: + cmp dword ptr [rsp + 80], 64 + jge LBB119_15 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 84] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 84] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 84] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 84] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 8 + mov dword ptr [rsp + 80], eax + jmp LBB119_12 +LBB119_15: + jmp LBB119_16 +LBB119_16: + mov eax, dword ptr [rsp + 84] + add eax, 512 + mov dword ptr [rsp + 84], eax + jmp LBB119_10 +LBB119_17: + mov dword ptr [rsp + 76], 0 +LBB119_18: + cmp dword ptr [rsp + 76], 4096 + jge LBB119_25 + mov dword ptr [rsp + 72], 0 +LBB119_20: + cmp dword ptr [rsp + 72], 512 + jge LBB119_23 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB119_20 +LBB119_23: + jmp LBB119_24 +LBB119_24: + mov eax, dword ptr [rsp + 76] + add eax, 4096 + mov dword ptr [rsp + 76], eax + jmp LBB119_18 +LBB119_25: + jmp LBB119_66 +LBB119_26: + cmp dword ptr [rsp + 108], 15 + jne LBB119_36 + mov rcx, qword ptr [rsp + 96] + mov edx, 12 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16384 + mov edx, 12 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 32768 + mov edx, 12 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 49152 + mov edx, 12 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 65536 + mov edx, 12 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 81920 + mov edx, 12 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 98304 + mov edx, 12 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 114688 + mov edx, 12 + call fht_helper_float_24_recursive + mov dword ptr [rsp + 68], 0 +LBB119_28: + cmp dword ptr [rsp + 68], 32768 + jge LBB119_35 + mov dword ptr [rsp + 64], 0 +LBB119_30: + cmp dword ptr [rsp + 64], 4096 + jge LBB119_33 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 114688 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB119_30 +LBB119_33: + jmp LBB119_34 +LBB119_34: + mov eax, dword ptr [rsp + 68] + add eax, 32768 + mov dword ptr [rsp + 68], eax + jmp LBB119_28 +LBB119_35: + jmp LBB119_66 +LBB119_36: + cmp dword ptr [rsp + 108], 18 + jne LBB119_46 + mov rcx, qword ptr [rsp + 96] + mov edx, 15 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 131072 + mov edx, 15 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 262144 + mov edx, 15 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 393216 + mov edx, 15 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 524288 + mov edx, 15 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 655360 + mov edx, 15 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 786432 + mov edx, 15 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 917504 + mov edx, 15 + call fht_helper_float_24_recursive + mov dword ptr [rsp + 60], 0 +LBB119_38: + cmp dword ptr [rsp + 60], 262144 + jge LBB119_45 + mov dword ptr [rsp + 56], 0 +LBB119_40: + cmp dword ptr [rsp + 56], 32768 + jge LBB119_43 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 917504 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB119_40 +LBB119_43: + jmp LBB119_44 +LBB119_44: + mov eax, dword ptr [rsp + 60] + add eax, 262144 + mov dword ptr [rsp + 60], eax + jmp LBB119_38 +LBB119_45: + jmp LBB119_66 +LBB119_46: + cmp dword ptr [rsp + 108], 21 + jne LBB119_56 + mov rcx, qword ptr [rsp + 96] + mov edx, 18 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1048576 + mov edx, 18 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2097152 + mov edx, 18 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3145728 + mov edx, 18 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4194304 + mov edx, 18 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 5242880 + mov edx, 18 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 6291456 + mov edx, 18 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 7340032 + mov edx, 18 + call fht_helper_float_24_recursive + mov dword ptr [rsp + 52], 0 +LBB119_48: + cmp dword ptr [rsp + 52], 2097152 + jge LBB119_55 + mov dword ptr [rsp + 48], 0 +LBB119_50: + cmp dword ptr [rsp + 48], 262144 + jge LBB119_53 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 3145728 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 4194304 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 5242880 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 6291456 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 7340032 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB119_50 +LBB119_53: + jmp LBB119_54 +LBB119_54: + mov eax, dword ptr [rsp + 52] + add eax, 2097152 + mov dword ptr [rsp + 52], eax + jmp LBB119_48 +LBB119_55: + jmp LBB119_66 +LBB119_56: + cmp dword ptr [rsp + 108], 24 + jne LBB119_66 + mov rcx, qword ptr [rsp + 96] + mov edx, 21 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8388608 + mov edx, 21 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16777216 + mov edx, 21 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 25165824 + mov edx, 21 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 33554432 + mov edx, 21 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 41943040 + mov edx, 21 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 50331648 + mov edx, 21 + call fht_helper_float_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 58720256 + mov edx, 21 + call fht_helper_float_24_recursive + mov dword ptr [rsp + 44], 0 +LBB119_58: + cmp dword ptr [rsp + 44], 16777216 + jge LBB119_65 + mov dword ptr [rsp + 40], 0 +LBB119_60: + cmp dword ptr [rsp + 40], 2097152 + jge LBB119_63 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 8388608 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 16777216 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 25165824 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 44] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 2 + add r9, r10 + add r9, 33554432 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 44] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 2 + add r10, r11 + add r10, 41943040 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 2 + add r11, rsi + add r11, 50331648 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 2 + add rsi, rdi + add rsi, 58720256 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB119_60 +LBB119_63: + jmp LBB119_64 +LBB119_64: + mov eax, dword ptr [rsp + 44] + add eax, 16777216 + mov dword ptr [rsp + 44], eax + jmp LBB119_58 +LBB119_65: + jmp LBB119_66 +LBB119_66: + vmovaps xmm6, xmmword ptr [rsp + 112] + vmovaps xmm7, xmmword ptr [rsp + 128] + vmovaps xmm8, xmmword ptr [rsp + 144] + vmovaps xmm9, xmmword ptr [rsp + 160] + vmovaps xmm10, xmmword ptr [rsp + 176] + vmovaps xmm11, xmmword ptr [rsp + 192] + vmovaps xmm12, xmmword ptr [rsp + 208] + vmovaps xmm13, xmmword ptr [rsp + 224] + vmovaps xmm14, xmmword ptr [rsp + 240] + vmovaps xmm15, xmmword ptr [rsp + 256] + add rsp, 280 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_24_recursive ENDP + +fht_helper_float_25_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 280 + .allocstack 280 + vmovaps xmmword ptr [rsp + 256], xmm15 + .savexmm128 xmm15, 256 + vmovaps xmmword ptr [rsp + 240], xmm14 + .savexmm128 xmm14, 240 + vmovaps xmmword ptr [rsp + 224], xmm13 + .savexmm128 xmm13, 224 + vmovaps xmmword ptr [rsp + 208], xmm12 + .savexmm128 xmm12, 208 + vmovaps xmmword ptr [rsp + 192], xmm11 + .savexmm128 xmm11, 192 + vmovaps xmmword ptr [rsp + 176], xmm10 + .savexmm128 xmm10, 176 + vmovaps xmmword ptr [rsp + 160], xmm9 + .savexmm128 xmm9, 160 + vmovaps xmmword ptr [rsp + 144], xmm8 + .savexmm128 xmm8, 144 + vmovaps xmmword ptr [rsp + 128], xmm7 + .savexmm128 xmm7, 128 + vmovaps xmmword ptr [rsp + 112], xmm6 + .savexmm128 xmm6, 112 + .endprolog + mov dword ptr [rsp + 108], edx + mov qword ptr [rsp + 96], rcx + cmp dword ptr [rsp + 108], 7 + jne LBB120_18 + mov dword ptr [rsp + 92], 0 +LBB120_2: + cmp dword ptr [rsp + 92], 128 + jge LBB120_9 + mov dword ptr [rsp + 88], 0 +LBB120_4: + cmp dword ptr [rsp + 88], 8 + jge LBB120_7 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 92] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 92] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 92] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 92] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 8 + mov dword ptr [rsp + 88], eax + jmp LBB120_4 +LBB120_7: + jmp LBB120_8 +LBB120_8: + mov eax, dword ptr [rsp + 92] + add eax, 64 + mov dword ptr [rsp + 92], eax + jmp LBB120_2 +LBB120_9: + mov dword ptr [rsp + 84], 0 +LBB120_10: + cmp dword ptr [rsp + 84], 128 + jge LBB120_17 + mov dword ptr [rsp + 80], 0 +LBB120_12: + cmp dword ptr [rsp + 80], 64 + jge LBB120_15 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp + 80] + add eax, 8 + mov dword ptr [rsp + 80], eax + jmp LBB120_12 +LBB120_15: + jmp LBB120_16 +LBB120_16: + mov eax, dword ptr [rsp + 84] + add eax, 128 + mov dword ptr [rsp + 84], eax + jmp LBB120_10 +LBB120_17: + jmp LBB120_78 +LBB120_18: + cmp dword ptr [rsp + 108], 10 + jne LBB120_28 + mov rcx, qword ptr [rsp + 96] + mov edx, 7 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 512 + mov edx, 7 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1024 + mov edx, 7 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1536 + mov edx, 7 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2048 + mov edx, 7 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2560 + mov edx, 7 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3072 + mov edx, 7 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3584 + mov edx, 7 + call fht_helper_float_25_recursive + mov dword ptr [rsp + 76], 0 +LBB120_20: + cmp dword ptr [rsp + 76], 1024 + jge LBB120_27 + mov dword ptr [rsp + 72], 0 +LBB120_22: + cmp dword ptr [rsp + 72], 128 + jge LBB120_25 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 512 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 1024 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 1536 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 2048 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 2560 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 3072 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 3584 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB120_22 +LBB120_25: + jmp LBB120_26 +LBB120_26: + mov eax, dword ptr [rsp + 76] + add eax, 1024 + mov dword ptr [rsp + 76], eax + jmp LBB120_20 +LBB120_27: + jmp LBB120_78 +LBB120_28: + cmp dword ptr [rsp + 108], 13 + jne LBB120_38 + mov rcx, qword ptr [rsp + 96] + mov edx, 10 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4096 + mov edx, 10 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8192 + mov edx, 10 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 12288 + mov edx, 10 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16384 + mov edx, 10 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 20480 + mov edx, 10 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 24576 + mov edx, 10 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 28672 + mov edx, 10 + call fht_helper_float_25_recursive + mov dword ptr [rsp + 68], 0 +LBB120_30: + cmp dword ptr [rsp + 68], 8192 + jge LBB120_37 + mov dword ptr [rsp + 64], 0 +LBB120_32: + cmp dword ptr [rsp + 64], 1024 + jge LBB120_35 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 4096 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 8192 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 12288 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 16384 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 20480 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 24576 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 28672 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB120_32 +LBB120_35: + jmp LBB120_36 +LBB120_36: + mov eax, dword ptr [rsp + 68] + add eax, 8192 + mov dword ptr [rsp + 68], eax + jmp LBB120_30 +LBB120_37: + jmp LBB120_78 +LBB120_38: + cmp dword ptr [rsp + 108], 16 + jne LBB120_48 + mov rcx, qword ptr [rsp + 96] + mov edx, 13 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 32768 + mov edx, 13 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 65536 + mov edx, 13 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 98304 + mov edx, 13 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 131072 + mov edx, 13 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 163840 + mov edx, 13 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 196608 + mov edx, 13 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 229376 + mov edx, 13 + call fht_helper_float_25_recursive + mov dword ptr [rsp + 60], 0 +LBB120_40: + cmp dword ptr [rsp + 60], 65536 + jge LBB120_47 + mov dword ptr [rsp + 56], 0 +LBB120_42: + cmp dword ptr [rsp + 56], 8192 + jge LBB120_45 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 32768 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 65536 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 98304 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 131072 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 163840 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 196608 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 229376 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB120_42 +LBB120_45: + jmp LBB120_46 +LBB120_46: + mov eax, dword ptr [rsp + 60] + add eax, 65536 + mov dword ptr [rsp + 60], eax + jmp LBB120_40 +LBB120_47: + jmp LBB120_78 +LBB120_48: + cmp dword ptr [rsp + 108], 19 + jne LBB120_58 + mov rcx, qword ptr [rsp + 96] + mov edx, 16 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 262144 + mov edx, 16 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 524288 + mov edx, 16 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 786432 + mov edx, 16 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1048576 + mov edx, 16 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1310720 + mov edx, 16 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1572864 + mov edx, 16 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1835008 + mov edx, 16 + call fht_helper_float_25_recursive + mov dword ptr [rsp + 52], 0 +LBB120_50: + cmp dword ptr [rsp + 52], 524288 + jge LBB120_57 + mov dword ptr [rsp + 48], 0 +LBB120_52: + cmp dword ptr [rsp + 48], 65536 + jge LBB120_55 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 262144 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 524288 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 786432 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 1048576 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 1310720 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 1572864 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 1835008 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB120_52 +LBB120_55: + jmp LBB120_56 +LBB120_56: + mov eax, dword ptr [rsp + 52] + add eax, 524288 + mov dword ptr [rsp + 52], eax + jmp LBB120_50 +LBB120_57: + jmp LBB120_78 +LBB120_58: + cmp dword ptr [rsp + 108], 22 + jne LBB120_68 + mov rcx, qword ptr [rsp + 96] + mov edx, 19 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2097152 + mov edx, 19 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4194304 + mov edx, 19 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 6291456 + mov edx, 19 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8388608 + mov edx, 19 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 10485760 + mov edx, 19 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 12582912 + mov edx, 19 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 14680064 + mov edx, 19 + call fht_helper_float_25_recursive + mov dword ptr [rsp + 44], 0 +LBB120_60: + cmp dword ptr [rsp + 44], 4194304 + jge LBB120_67 + mov dword ptr [rsp + 40], 0 +LBB120_62: + cmp dword ptr [rsp + 40], 524288 + jge LBB120_65 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 2097152 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 4194304 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 6291456 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 44] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 2 + add r9, r10 + add r9, 8388608 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 44] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 2 + add r10, r11 + add r10, 10485760 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 2 + add r11, rsi + add r11, 12582912 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 2 + add rsi, rdi + add rsi, 14680064 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB120_62 +LBB120_65: + jmp LBB120_66 +LBB120_66: + mov eax, dword ptr [rsp + 44] + add eax, 4194304 + mov dword ptr [rsp + 44], eax + jmp LBB120_60 +LBB120_67: + jmp LBB120_78 +LBB120_68: + cmp dword ptr [rsp + 108], 25 + jne LBB120_78 + mov rcx, qword ptr [rsp + 96] + mov edx, 22 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16777216 + mov edx, 22 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 33554432 + mov edx, 22 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 50331648 + mov edx, 22 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 67108864 + mov edx, 22 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 83886080 + mov edx, 22 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 100663296 + mov edx, 22 + call fht_helper_float_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 117440512 + mov edx, 22 + call fht_helper_float_25_recursive + mov dword ptr [rsp + 36], 0 +LBB120_70: + cmp dword ptr [rsp + 36], 33554432 + jge LBB120_77 + mov dword ptr [rsp + 32], 0 +LBB120_72: + cmp dword ptr [rsp + 32], 4194304 + jge LBB120_75 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 2 + add rcx, rdx + add rcx, 16777216 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 36] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 2 + add rdx, r8 + add rdx, 33554432 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 36] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 2 + add r8, r9 + add r8, 50331648 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 36] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 32] + shl r10, 2 + add r9, r10 + add r9, 67108864 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 36] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 32] + shl r11, 2 + add r10, r11 + add r10, 83886080 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 36] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 32] + shl rsi, 2 + add r11, rsi + add r11, 100663296 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 36] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 32] + shl rdi, 2 + add rsi, rdi + add rsi, 117440512 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 32] + add eax, 8 + mov dword ptr [rsp + 32], eax + jmp LBB120_72 +LBB120_75: + jmp LBB120_76 +LBB120_76: + mov eax, dword ptr [rsp + 36] + add eax, 33554432 + mov dword ptr [rsp + 36], eax + jmp LBB120_70 +LBB120_77: + jmp LBB120_78 +LBB120_78: + vmovaps xmm6, xmmword ptr [rsp + 112] + vmovaps xmm7, xmmword ptr [rsp + 128] + vmovaps xmm8, xmmword ptr [rsp + 144] + vmovaps xmm9, xmmword ptr [rsp + 160] + vmovaps xmm10, xmmword ptr [rsp + 176] + vmovaps xmm11, xmmword ptr [rsp + 192] + vmovaps xmm12, xmmword ptr [rsp + 208] + vmovaps xmm13, xmmword ptr [rsp + 224] + vmovaps xmm14, xmmword ptr [rsp + 240] + vmovaps xmm15, xmmword ptr [rsp + 256] + add rsp, 280 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_25_recursive ENDP + +fht_helper_float_26_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 280 + .allocstack 280 + vmovaps xmmword ptr [rsp + 256], xmm15 + .savexmm128 xmm15, 256 + vmovaps xmmword ptr [rsp + 240], xmm14 + .savexmm128 xmm14, 240 + vmovaps xmmword ptr [rsp + 224], xmm13 + .savexmm128 xmm13, 224 + vmovaps xmmword ptr [rsp + 208], xmm12 + .savexmm128 xmm12, 208 + vmovaps xmmword ptr [rsp + 192], xmm11 + .savexmm128 xmm11, 192 + vmovaps xmmword ptr [rsp + 176], xmm10 + .savexmm128 xmm10, 176 + vmovaps xmmword ptr [rsp + 160], xmm9 + .savexmm128 xmm9, 160 + vmovaps xmmword ptr [rsp + 144], xmm8 + .savexmm128 xmm8, 144 + vmovaps xmmword ptr [rsp + 128], xmm7 + .savexmm128 xmm7, 128 + vmovaps xmmword ptr [rsp + 112], xmm6 + .savexmm128 xmm6, 112 + .endprolog + mov dword ptr [rsp + 108], edx + mov qword ptr [rsp + 96], rcx + cmp dword ptr [rsp + 108], 12 + jne LBB121_26 + mov dword ptr [rsp + 92], 0 +LBB121_2: + cmp dword ptr [rsp + 92], 4096 + jge LBB121_9 + mov dword ptr [rsp + 88], 0 +LBB121_4: + cmp dword ptr [rsp + 88], 8 + jge LBB121_7 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 92] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 92] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 92] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 92] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 8 + mov dword ptr [rsp + 88], eax + jmp LBB121_4 +LBB121_7: + jmp LBB121_8 +LBB121_8: + mov eax, dword ptr [rsp + 92] + add eax, 64 + mov dword ptr [rsp + 92], eax + jmp LBB121_2 +LBB121_9: + mov dword ptr [rsp + 84], 0 +LBB121_10: + cmp dword ptr [rsp + 84], 4096 + jge LBB121_17 + mov dword ptr [rsp + 80], 0 +LBB121_12: + cmp dword ptr [rsp + 80], 64 + jge LBB121_15 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 84] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 84] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 84] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 84] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 8 + mov dword ptr [rsp + 80], eax + jmp LBB121_12 +LBB121_15: + jmp LBB121_16 +LBB121_16: + mov eax, dword ptr [rsp + 84] + add eax, 512 + mov dword ptr [rsp + 84], eax + jmp LBB121_10 +LBB121_17: + mov dword ptr [rsp + 76], 0 +LBB121_18: + cmp dword ptr [rsp + 76], 4096 + jge LBB121_25 + mov dword ptr [rsp + 72], 0 +LBB121_20: + cmp dword ptr [rsp + 72], 512 + jge LBB121_23 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB121_20 +LBB121_23: + jmp LBB121_24 +LBB121_24: + mov eax, dword ptr [rsp + 76] + add eax, 4096 + mov dword ptr [rsp + 76], eax + jmp LBB121_18 +LBB121_25: + jmp LBB121_76 +LBB121_26: + cmp dword ptr [rsp + 108], 15 + jne LBB121_36 + mov rcx, qword ptr [rsp + 96] + mov edx, 12 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16384 + mov edx, 12 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 32768 + mov edx, 12 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 49152 + mov edx, 12 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 65536 + mov edx, 12 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 81920 + mov edx, 12 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 98304 + mov edx, 12 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 114688 + mov edx, 12 + call fht_helper_float_26_recursive + mov dword ptr [rsp + 68], 0 +LBB121_28: + cmp dword ptr [rsp + 68], 32768 + jge LBB121_35 + mov dword ptr [rsp + 64], 0 +LBB121_30: + cmp dword ptr [rsp + 64], 4096 + jge LBB121_33 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 114688 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB121_30 +LBB121_33: + jmp LBB121_34 +LBB121_34: + mov eax, dword ptr [rsp + 68] + add eax, 32768 + mov dword ptr [rsp + 68], eax + jmp LBB121_28 +LBB121_35: + jmp LBB121_76 +LBB121_36: + cmp dword ptr [rsp + 108], 18 + jne LBB121_46 + mov rcx, qword ptr [rsp + 96] + mov edx, 15 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 131072 + mov edx, 15 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 262144 + mov edx, 15 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 393216 + mov edx, 15 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 524288 + mov edx, 15 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 655360 + mov edx, 15 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 786432 + mov edx, 15 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 917504 + mov edx, 15 + call fht_helper_float_26_recursive + mov dword ptr [rsp + 60], 0 +LBB121_38: + cmp dword ptr [rsp + 60], 262144 + jge LBB121_45 + mov dword ptr [rsp + 56], 0 +LBB121_40: + cmp dword ptr [rsp + 56], 32768 + jge LBB121_43 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 917504 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB121_40 +LBB121_43: + jmp LBB121_44 +LBB121_44: + mov eax, dword ptr [rsp + 60] + add eax, 262144 + mov dword ptr [rsp + 60], eax + jmp LBB121_38 +LBB121_45: + jmp LBB121_76 +LBB121_46: + cmp dword ptr [rsp + 108], 21 + jne LBB121_56 + mov rcx, qword ptr [rsp + 96] + mov edx, 18 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1048576 + mov edx, 18 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2097152 + mov edx, 18 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3145728 + mov edx, 18 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4194304 + mov edx, 18 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 5242880 + mov edx, 18 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 6291456 + mov edx, 18 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 7340032 + mov edx, 18 + call fht_helper_float_26_recursive + mov dword ptr [rsp + 52], 0 +LBB121_48: + cmp dword ptr [rsp + 52], 2097152 + jge LBB121_55 + mov dword ptr [rsp + 48], 0 +LBB121_50: + cmp dword ptr [rsp + 48], 262144 + jge LBB121_53 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 3145728 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 4194304 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 5242880 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 6291456 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 7340032 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB121_50 +LBB121_53: + jmp LBB121_54 +LBB121_54: + mov eax, dword ptr [rsp + 52] + add eax, 2097152 + mov dword ptr [rsp + 52], eax + jmp LBB121_48 +LBB121_55: + jmp LBB121_76 +LBB121_56: + cmp dword ptr [rsp + 108], 24 + jne LBB121_66 + mov rcx, qword ptr [rsp + 96] + mov edx, 21 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8388608 + mov edx, 21 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16777216 + mov edx, 21 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 25165824 + mov edx, 21 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 33554432 + mov edx, 21 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 41943040 + mov edx, 21 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 50331648 + mov edx, 21 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 58720256 + mov edx, 21 + call fht_helper_float_26_recursive + mov dword ptr [rsp + 44], 0 +LBB121_58: + cmp dword ptr [rsp + 44], 16777216 + jge LBB121_65 + mov dword ptr [rsp + 40], 0 +LBB121_60: + cmp dword ptr [rsp + 40], 2097152 + jge LBB121_63 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 8388608 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 16777216 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 25165824 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 44] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 2 + add r9, r10 + add r9, 33554432 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 44] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 2 + add r10, r11 + add r10, 41943040 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 2 + add r11, rsi + add r11, 50331648 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 2 + add rsi, rdi + add rsi, 58720256 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB121_60 +LBB121_63: + jmp LBB121_64 +LBB121_64: + mov eax, dword ptr [rsp + 44] + add eax, 16777216 + mov dword ptr [rsp + 44], eax + jmp LBB121_58 +LBB121_65: + jmp LBB121_76 +LBB121_66: + cmp dword ptr [rsp + 108], 26 + jne LBB121_76 + mov rcx, qword ptr [rsp + 96] + mov edx, 24 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 67108864 + mov edx, 24 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 134217728 + mov edx, 24 + call fht_helper_float_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 201326592 + mov edx, 24 + call fht_helper_float_26_recursive + mov dword ptr [rsp + 36], 0 +LBB121_68: + cmp dword ptr [rsp + 36], 67108864 + jge LBB121_75 + mov dword ptr [rsp + 32], 0 +LBB121_70: + cmp dword ptr [rsp + 32], 16777216 + jge LBB121_73 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 2 + add rcx, rdx + add rcx, 67108864 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 36] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 2 + add rdx, r8 + add rdx, 134217728 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 36] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 2 + add r8, r9 + add r8, 201326592 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rcx], ymm1 + vmovups ymmword ptr [rdx], ymm2 + vmovups ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 32] + add eax, 8 + mov dword ptr [rsp + 32], eax + jmp LBB121_70 +LBB121_73: + jmp LBB121_74 +LBB121_74: + mov eax, dword ptr [rsp + 36] + add eax, 67108864 + mov dword ptr [rsp + 36], eax + jmp LBB121_68 +LBB121_75: + jmp LBB121_76 +LBB121_76: + vmovaps xmm6, xmmword ptr [rsp + 112] + vmovaps xmm7, xmmword ptr [rsp + 128] + vmovaps xmm8, xmmword ptr [rsp + 144] + vmovaps xmm9, xmmword ptr [rsp + 160] + vmovaps xmm10, xmmword ptr [rsp + 176] + vmovaps xmm11, xmmword ptr [rsp + 192] + vmovaps xmm12, xmmword ptr [rsp + 208] + vmovaps xmm13, xmmword ptr [rsp + 224] + vmovaps xmm14, xmmword ptr [rsp + 240] + vmovaps xmm15, xmmword ptr [rsp + 256] + add rsp, 280 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_26_recursive ENDP + +fht_helper_float_27_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 280 + .allocstack 280 + vmovaps xmmword ptr [rsp + 256], xmm15 + .savexmm128 xmm15, 256 + vmovaps xmmword ptr [rsp + 240], xmm14 + .savexmm128 xmm14, 240 + vmovaps xmmword ptr [rsp + 224], xmm13 + .savexmm128 xmm13, 224 + vmovaps xmmword ptr [rsp + 208], xmm12 + .savexmm128 xmm12, 208 + vmovaps xmmword ptr [rsp + 192], xmm11 + .savexmm128 xmm11, 192 + vmovaps xmmword ptr [rsp + 176], xmm10 + .savexmm128 xmm10, 176 + vmovaps xmmword ptr [rsp + 160], xmm9 + .savexmm128 xmm9, 160 + vmovaps xmmword ptr [rsp + 144], xmm8 + .savexmm128 xmm8, 144 + vmovaps xmmword ptr [rsp + 128], xmm7 + .savexmm128 xmm7, 128 + vmovaps xmmword ptr [rsp + 112], xmm6 + .savexmm128 xmm6, 112 + .endprolog + mov dword ptr [rsp + 108], edx + mov qword ptr [rsp + 96], rcx + cmp dword ptr [rsp + 108], 12 + jne LBB122_26 + mov dword ptr [rsp + 92], 0 +LBB122_2: + cmp dword ptr [rsp + 92], 4096 + jge LBB122_9 + mov dword ptr [rsp + 88], 0 +LBB122_4: + cmp dword ptr [rsp + 88], 8 + jge LBB122_7 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 92] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 92] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 92] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 92] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 8 + mov dword ptr [rsp + 88], eax + jmp LBB122_4 +LBB122_7: + jmp LBB122_8 +LBB122_8: + mov eax, dword ptr [rsp + 92] + add eax, 64 + mov dword ptr [rsp + 92], eax + jmp LBB122_2 +LBB122_9: + mov dword ptr [rsp + 84], 0 +LBB122_10: + cmp dword ptr [rsp + 84], 4096 + jge LBB122_17 + mov dword ptr [rsp + 80], 0 +LBB122_12: + cmp dword ptr [rsp + 80], 64 + jge LBB122_15 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 84] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 84] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 84] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 84] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 8 + mov dword ptr [rsp + 80], eax + jmp LBB122_12 +LBB122_15: + jmp LBB122_16 +LBB122_16: + mov eax, dword ptr [rsp + 84] + add eax, 512 + mov dword ptr [rsp + 84], eax + jmp LBB122_10 +LBB122_17: + mov dword ptr [rsp + 76], 0 +LBB122_18: + cmp dword ptr [rsp + 76], 4096 + jge LBB122_25 + mov dword ptr [rsp + 72], 0 +LBB122_20: + cmp dword ptr [rsp + 72], 512 + jge LBB122_23 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB122_20 +LBB122_23: + jmp LBB122_24 +LBB122_24: + mov eax, dword ptr [rsp + 76] + add eax, 4096 + mov dword ptr [rsp + 76], eax + jmp LBB122_18 +LBB122_25: + jmp LBB122_76 +LBB122_26: + cmp dword ptr [rsp + 108], 15 + jne LBB122_36 + mov rcx, qword ptr [rsp + 96] + mov edx, 12 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16384 + mov edx, 12 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 32768 + mov edx, 12 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 49152 + mov edx, 12 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 65536 + mov edx, 12 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 81920 + mov edx, 12 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 98304 + mov edx, 12 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 114688 + mov edx, 12 + call fht_helper_float_27_recursive + mov dword ptr [rsp + 68], 0 +LBB122_28: + cmp dword ptr [rsp + 68], 32768 + jge LBB122_35 + mov dword ptr [rsp + 64], 0 +LBB122_30: + cmp dword ptr [rsp + 64], 4096 + jge LBB122_33 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 114688 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB122_30 +LBB122_33: + jmp LBB122_34 +LBB122_34: + mov eax, dword ptr [rsp + 68] + add eax, 32768 + mov dword ptr [rsp + 68], eax + jmp LBB122_28 +LBB122_35: + jmp LBB122_76 +LBB122_36: + cmp dword ptr [rsp + 108], 18 + jne LBB122_46 + mov rcx, qword ptr [rsp + 96] + mov edx, 15 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 131072 + mov edx, 15 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 262144 + mov edx, 15 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 393216 + mov edx, 15 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 524288 + mov edx, 15 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 655360 + mov edx, 15 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 786432 + mov edx, 15 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 917504 + mov edx, 15 + call fht_helper_float_27_recursive + mov dword ptr [rsp + 60], 0 +LBB122_38: + cmp dword ptr [rsp + 60], 262144 + jge LBB122_45 + mov dword ptr [rsp + 56], 0 +LBB122_40: + cmp dword ptr [rsp + 56], 32768 + jge LBB122_43 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 917504 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB122_40 +LBB122_43: + jmp LBB122_44 +LBB122_44: + mov eax, dword ptr [rsp + 60] + add eax, 262144 + mov dword ptr [rsp + 60], eax + jmp LBB122_38 +LBB122_45: + jmp LBB122_76 +LBB122_46: + cmp dword ptr [rsp + 108], 21 + jne LBB122_56 + mov rcx, qword ptr [rsp + 96] + mov edx, 18 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1048576 + mov edx, 18 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2097152 + mov edx, 18 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3145728 + mov edx, 18 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4194304 + mov edx, 18 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 5242880 + mov edx, 18 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 6291456 + mov edx, 18 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 7340032 + mov edx, 18 + call fht_helper_float_27_recursive + mov dword ptr [rsp + 52], 0 +LBB122_48: + cmp dword ptr [rsp + 52], 2097152 + jge LBB122_55 + mov dword ptr [rsp + 48], 0 +LBB122_50: + cmp dword ptr [rsp + 48], 262144 + jge LBB122_53 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 3145728 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 4194304 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 5242880 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 6291456 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 7340032 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB122_50 +LBB122_53: + jmp LBB122_54 +LBB122_54: + mov eax, dword ptr [rsp + 52] + add eax, 2097152 + mov dword ptr [rsp + 52], eax + jmp LBB122_48 +LBB122_55: + jmp LBB122_76 +LBB122_56: + cmp dword ptr [rsp + 108], 24 + jne LBB122_66 + mov rcx, qword ptr [rsp + 96] + mov edx, 21 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8388608 + mov edx, 21 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16777216 + mov edx, 21 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 25165824 + mov edx, 21 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 33554432 + mov edx, 21 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 41943040 + mov edx, 21 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 50331648 + mov edx, 21 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 58720256 + mov edx, 21 + call fht_helper_float_27_recursive + mov dword ptr [rsp + 44], 0 +LBB122_58: + cmp dword ptr [rsp + 44], 16777216 + jge LBB122_65 + mov dword ptr [rsp + 40], 0 +LBB122_60: + cmp dword ptr [rsp + 40], 2097152 + jge LBB122_63 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 8388608 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 16777216 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 25165824 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 44] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 2 + add r9, r10 + add r9, 33554432 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 44] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 2 + add r10, r11 + add r10, 41943040 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 2 + add r11, rsi + add r11, 50331648 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 2 + add rsi, rdi + add rsi, 58720256 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB122_60 +LBB122_63: + jmp LBB122_64 +LBB122_64: + mov eax, dword ptr [rsp + 44] + add eax, 16777216 + mov dword ptr [rsp + 44], eax + jmp LBB122_58 +LBB122_65: + jmp LBB122_76 +LBB122_66: + cmp dword ptr [rsp + 108], 27 + jne LBB122_76 + mov rcx, qword ptr [rsp + 96] + mov edx, 24 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 67108864 + mov edx, 24 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 134217728 + mov edx, 24 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 201326592 + mov edx, 24 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 268435456 + mov edx, 24 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 335544320 + mov edx, 24 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 402653184 + mov edx, 24 + call fht_helper_float_27_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 469762048 + mov edx, 24 + call fht_helper_float_27_recursive + mov dword ptr [rsp + 36], 0 +LBB122_68: + cmp dword ptr [rsp + 36], 134217728 + jge LBB122_75 + mov dword ptr [rsp + 32], 0 +LBB122_70: + cmp dword ptr [rsp + 32], 16777216 + jge LBB122_73 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 2 + add rcx, rdx + add rcx, 67108864 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 36] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 2 + add rdx, r8 + add rdx, 134217728 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 36] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 2 + add r8, r9 + add r8, 201326592 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 36] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 32] + shl r10, 2 + add r9, r10 + add r9, 268435456 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 36] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 32] + shl r11, 2 + add r10, r11 + add r10, 335544320 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 36] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 32] + shl rsi, 2 + add r11, rsi + add r11, 402653184 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 36] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 32] + shl rdi, 2 + add rsi, rdi + add rsi, 469762048 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 32] + add eax, 8 + mov dword ptr [rsp + 32], eax + jmp LBB122_70 +LBB122_73: + jmp LBB122_74 +LBB122_74: + mov eax, dword ptr [rsp + 36] + add eax, 134217728 + mov dword ptr [rsp + 36], eax + jmp LBB122_68 +LBB122_75: + jmp LBB122_76 +LBB122_76: + vmovaps xmm6, xmmword ptr [rsp + 112] + vmovaps xmm7, xmmword ptr [rsp + 128] + vmovaps xmm8, xmmword ptr [rsp + 144] + vmovaps xmm9, xmmword ptr [rsp + 160] + vmovaps xmm10, xmmword ptr [rsp + 176] + vmovaps xmm11, xmmword ptr [rsp + 192] + vmovaps xmm12, xmmword ptr [rsp + 208] + vmovaps xmm13, xmmword ptr [rsp + 224] + vmovaps xmm14, xmmword ptr [rsp + 240] + vmovaps xmm15, xmmword ptr [rsp + 256] + add rsp, 280 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_27_recursive ENDP + +fht_helper_float_28_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 296 + .allocstack 296 + vmovaps xmmword ptr [rsp + 272], xmm15 + .savexmm128 xmm15, 272 + vmovaps xmmword ptr [rsp + 256], xmm14 + .savexmm128 xmm14, 256 + vmovaps xmmword ptr [rsp + 240], xmm13 + .savexmm128 xmm13, 240 + vmovaps xmmword ptr [rsp + 224], xmm12 + .savexmm128 xmm12, 224 + vmovaps xmmword ptr [rsp + 208], xmm11 + .savexmm128 xmm11, 208 + vmovaps xmmword ptr [rsp + 192], xmm10 + .savexmm128 xmm10, 192 + vmovaps xmmword ptr [rsp + 176], xmm9 + .savexmm128 xmm9, 176 + vmovaps xmmword ptr [rsp + 160], xmm8 + .savexmm128 xmm8, 160 + vmovaps xmmword ptr [rsp + 144], xmm7 + .savexmm128 xmm7, 144 + vmovaps xmmword ptr [rsp + 128], xmm6 + .savexmm128 xmm6, 128 + .endprolog + mov dword ptr [rsp + 124], edx + mov qword ptr [rsp + 112], rcx + cmp dword ptr [rsp + 124], 7 + jne LBB123_18 + mov dword ptr [rsp + 108], 0 +LBB123_2: + cmp dword ptr [rsp + 108], 128 + jge LBB123_9 + mov dword ptr [rsp + 104], 0 +LBB123_4: + cmp dword ptr [rsp + 104], 8 + jge LBB123_7 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 108] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 104] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 108] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 104] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 108] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 104] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 108] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 104] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 108] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 104] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 108] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 104] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 108] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 104] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 108] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 104] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 104] + add eax, 8 + mov dword ptr [rsp + 104], eax + jmp LBB123_4 +LBB123_7: + jmp LBB123_8 +LBB123_8: + mov eax, dword ptr [rsp + 108] + add eax, 64 + mov dword ptr [rsp + 108], eax + jmp LBB123_2 +LBB123_9: + mov dword ptr [rsp + 100], 0 +LBB123_10: + cmp dword ptr [rsp + 100], 128 + jge LBB123_17 + mov dword ptr [rsp + 96], 0 +LBB123_12: + cmp dword ptr [rsp + 96], 64 + jge LBB123_15 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 100] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 96] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 100] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 96] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp + 96] + add eax, 8 + mov dword ptr [rsp + 96], eax + jmp LBB123_12 +LBB123_15: + jmp LBB123_16 +LBB123_16: + mov eax, dword ptr [rsp + 100] + add eax, 128 + mov dword ptr [rsp + 100], eax + jmp LBB123_10 +LBB123_17: + jmp LBB123_88 +LBB123_18: + cmp dword ptr [rsp + 124], 10 + jne LBB123_28 + mov rcx, qword ptr [rsp + 112] + mov edx, 7 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 512 + mov edx, 7 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1024 + mov edx, 7 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1536 + mov edx, 7 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 2048 + mov edx, 7 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 2560 + mov edx, 7 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 3072 + mov edx, 7 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 3584 + mov edx, 7 + call fht_helper_float_28_recursive + mov dword ptr [rsp + 92], 0 +LBB123_20: + cmp dword ptr [rsp + 92], 1024 + jge LBB123_27 + mov dword ptr [rsp + 88], 0 +LBB123_22: + cmp dword ptr [rsp + 88], 128 + jge LBB123_25 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 2 + add rcx, rdx + add rcx, 512 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 92] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 2 + add rdx, r8 + add rdx, 1024 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 92] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 2 + add r8, r9 + add r8, 1536 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 92] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 2 + add r9, r10 + add r9, 2048 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 92] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 2 + add r10, r11 + add r10, 2560 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 2 + add r11, rsi + add r11, 3072 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 2 + add rsi, rdi + add rsi, 3584 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 8 + mov dword ptr [rsp + 88], eax + jmp LBB123_22 +LBB123_25: + jmp LBB123_26 +LBB123_26: + mov eax, dword ptr [rsp + 92] + add eax, 1024 + mov dword ptr [rsp + 92], eax + jmp LBB123_20 +LBB123_27: + jmp LBB123_88 +LBB123_28: + cmp dword ptr [rsp + 124], 13 + jne LBB123_38 + mov rcx, qword ptr [rsp + 112] + mov edx, 10 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 4096 + mov edx, 10 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 8192 + mov edx, 10 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 12288 + mov edx, 10 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 16384 + mov edx, 10 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 20480 + mov edx, 10 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 24576 + mov edx, 10 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 28672 + mov edx, 10 + call fht_helper_float_28_recursive + mov dword ptr [rsp + 84], 0 +LBB123_30: + cmp dword ptr [rsp + 84], 8192 + jge LBB123_37 + mov dword ptr [rsp + 80], 0 +LBB123_32: + cmp dword ptr [rsp + 80], 1024 + jge LBB123_35 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 2 + add rcx, rdx + add rcx, 4096 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 84] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 2 + add rdx, r8 + add rdx, 8192 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 84] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 2 + add r8, r9 + add r8, 12288 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 84] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 2 + add r9, r10 + add r9, 16384 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 84] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 2 + add r10, r11 + add r10, 20480 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 2 + add r11, rsi + add r11, 24576 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 2 + add rsi, rdi + add rsi, 28672 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 8 + mov dword ptr [rsp + 80], eax + jmp LBB123_32 +LBB123_35: + jmp LBB123_36 +LBB123_36: + mov eax, dword ptr [rsp + 84] + add eax, 8192 + mov dword ptr [rsp + 84], eax + jmp LBB123_30 +LBB123_37: + jmp LBB123_88 +LBB123_38: + cmp dword ptr [rsp + 124], 16 + jne LBB123_48 + mov rcx, qword ptr [rsp + 112] + mov edx, 13 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 32768 + mov edx, 13 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 65536 + mov edx, 13 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 98304 + mov edx, 13 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 131072 + mov edx, 13 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 163840 + mov edx, 13 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 196608 + mov edx, 13 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 229376 + mov edx, 13 + call fht_helper_float_28_recursive + mov dword ptr [rsp + 76], 0 +LBB123_40: + cmp dword ptr [rsp + 76], 65536 + jge LBB123_47 + mov dword ptr [rsp + 72], 0 +LBB123_42: + cmp dword ptr [rsp + 72], 8192 + jge LBB123_45 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 32768 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 65536 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 98304 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 131072 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 163840 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 196608 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 229376 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB123_42 +LBB123_45: + jmp LBB123_46 +LBB123_46: + mov eax, dword ptr [rsp + 76] + add eax, 65536 + mov dword ptr [rsp + 76], eax + jmp LBB123_40 +LBB123_47: + jmp LBB123_88 +LBB123_48: + cmp dword ptr [rsp + 124], 19 + jne LBB123_58 + mov rcx, qword ptr [rsp + 112] + mov edx, 16 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 262144 + mov edx, 16 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 524288 + mov edx, 16 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 786432 + mov edx, 16 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1048576 + mov edx, 16 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1310720 + mov edx, 16 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1572864 + mov edx, 16 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1835008 + mov edx, 16 + call fht_helper_float_28_recursive + mov dword ptr [rsp + 68], 0 +LBB123_50: + cmp dword ptr [rsp + 68], 524288 + jge LBB123_57 + mov dword ptr [rsp + 64], 0 +LBB123_52: + cmp dword ptr [rsp + 64], 65536 + jge LBB123_55 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 262144 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 524288 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 786432 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 1048576 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 1310720 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 1572864 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 1835008 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB123_52 +LBB123_55: + jmp LBB123_56 +LBB123_56: + mov eax, dword ptr [rsp + 68] + add eax, 524288 + mov dword ptr [rsp + 68], eax + jmp LBB123_50 +LBB123_57: + jmp LBB123_88 +LBB123_58: + cmp dword ptr [rsp + 124], 22 + jne LBB123_68 + mov rcx, qword ptr [rsp + 112] + mov edx, 19 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 2097152 + mov edx, 19 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 4194304 + mov edx, 19 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 6291456 + mov edx, 19 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 8388608 + mov edx, 19 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 10485760 + mov edx, 19 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 12582912 + mov edx, 19 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 14680064 + mov edx, 19 + call fht_helper_float_28_recursive + mov dword ptr [rsp + 60], 0 +LBB123_60: + cmp dword ptr [rsp + 60], 4194304 + jge LBB123_67 + mov dword ptr [rsp + 56], 0 +LBB123_62: + cmp dword ptr [rsp + 56], 524288 + jge LBB123_65 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 2097152 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 4194304 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 6291456 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 8388608 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 10485760 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 12582912 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 14680064 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB123_62 +LBB123_65: + jmp LBB123_66 +LBB123_66: + mov eax, dword ptr [rsp + 60] + add eax, 4194304 + mov dword ptr [rsp + 60], eax + jmp LBB123_60 +LBB123_67: + jmp LBB123_88 +LBB123_68: + cmp dword ptr [rsp + 124], 25 + jne LBB123_78 + mov rcx, qword ptr [rsp + 112] + mov edx, 22 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 16777216 + mov edx, 22 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 33554432 + mov edx, 22 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 50331648 + mov edx, 22 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 67108864 + mov edx, 22 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 83886080 + mov edx, 22 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 100663296 + mov edx, 22 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 117440512 + mov edx, 22 + call fht_helper_float_28_recursive + mov dword ptr [rsp + 52], 0 +LBB123_70: + cmp dword ptr [rsp + 52], 33554432 + jge LBB123_77 + mov dword ptr [rsp + 48], 0 +LBB123_72: + cmp dword ptr [rsp + 48], 4194304 + jge LBB123_75 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 16777216 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 33554432 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 50331648 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 67108864 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 83886080 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 100663296 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 117440512 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB123_72 +LBB123_75: + jmp LBB123_76 +LBB123_76: + mov eax, dword ptr [rsp + 52] + add eax, 33554432 + mov dword ptr [rsp + 52], eax + jmp LBB123_70 +LBB123_77: + jmp LBB123_88 +LBB123_78: + cmp dword ptr [rsp + 124], 28 + jne LBB123_88 + mov rcx, qword ptr [rsp + 112] + mov edx, 25 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 134217728 + mov edx, 25 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 268435456 + mov edx, 25 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 402653184 + mov edx, 25 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 536870912 + mov edx, 25 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 671088640 + mov edx, 25 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 805306368 + mov edx, 25 + call fht_helper_float_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 939524096 + mov edx, 25 + call fht_helper_float_28_recursive + mov dword ptr [rsp + 44], 0 +LBB123_80: + cmp dword ptr [rsp + 44], 268435456 + jge LBB123_87 + mov dword ptr [rsp + 40], 0 +LBB123_82: + cmp dword ptr [rsp + 40], 33554432 + jge LBB123_85 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 134217728 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 268435456 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 402653184 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 44] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 2 + add r9, r10 + add r9, 536870912 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 44] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 2 + add r10, r11 + add r10, 671088640 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 2 + add r11, rsi + add r11, 805306368 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 2 + add rsi, rdi + add rsi, 939524096 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB123_82 +LBB123_85: + jmp LBB123_86 +LBB123_86: + mov eax, dword ptr [rsp + 44] + add eax, 268435456 + mov dword ptr [rsp + 44], eax + jmp LBB123_80 +LBB123_87: + jmp LBB123_88 +LBB123_88: + vmovaps xmm6, xmmword ptr [rsp + 128] + vmovaps xmm7, xmmword ptr [rsp + 144] + vmovaps xmm8, xmmword ptr [rsp + 160] + vmovaps xmm9, xmmword ptr [rsp + 176] + vmovaps xmm10, xmmword ptr [rsp + 192] + vmovaps xmm11, xmmword ptr [rsp + 208] + vmovaps xmm12, xmmword ptr [rsp + 224] + vmovaps xmm13, xmmword ptr [rsp + 240] + vmovaps xmm14, xmmword ptr [rsp + 256] + vmovaps xmm15, xmmword ptr [rsp + 272] + add rsp, 296 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_28_recursive ENDP + +fht_helper_float_29_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 296 + .allocstack 296 + vmovaps xmmword ptr [rsp + 272], xmm15 + .savexmm128 xmm15, 272 + vmovaps xmmword ptr [rsp + 256], xmm14 + .savexmm128 xmm14, 256 + vmovaps xmmword ptr [rsp + 240], xmm13 + .savexmm128 xmm13, 240 + vmovaps xmmword ptr [rsp + 224], xmm12 + .savexmm128 xmm12, 224 + vmovaps xmmword ptr [rsp + 208], xmm11 + .savexmm128 xmm11, 208 + vmovaps xmmword ptr [rsp + 192], xmm10 + .savexmm128 xmm10, 192 + vmovaps xmmword ptr [rsp + 176], xmm9 + .savexmm128 xmm9, 176 + vmovaps xmmword ptr [rsp + 160], xmm8 + .savexmm128 xmm8, 160 + vmovaps xmmword ptr [rsp + 144], xmm7 + .savexmm128 xmm7, 144 + vmovaps xmmword ptr [rsp + 128], xmm6 + .savexmm128 xmm6, 128 + .endprolog + mov dword ptr [rsp + 124], edx + mov qword ptr [rsp + 112], rcx + cmp dword ptr [rsp + 124], 12 + jne LBB124_26 + mov dword ptr [rsp + 108], 0 +LBB124_2: + cmp dword ptr [rsp + 108], 4096 + jge LBB124_9 + mov dword ptr [rsp + 104], 0 +LBB124_4: + cmp dword ptr [rsp + 104], 8 + jge LBB124_7 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 108] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 104] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 108] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 104] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 108] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 104] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 108] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 104] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 108] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 104] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 108] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 104] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 108] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 104] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 108] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 104] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 104] + add eax, 8 + mov dword ptr [rsp + 104], eax + jmp LBB124_4 +LBB124_7: + jmp LBB124_8 +LBB124_8: + mov eax, dword ptr [rsp + 108] + add eax, 64 + mov dword ptr [rsp + 108], eax + jmp LBB124_2 +LBB124_9: + mov dword ptr [rsp + 100], 0 +LBB124_10: + cmp dword ptr [rsp + 100], 4096 + jge LBB124_17 + mov dword ptr [rsp + 96], 0 +LBB124_12: + cmp dword ptr [rsp + 96], 64 + jge LBB124_15 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 100] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 96] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 100] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 96] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 100] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 96] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 100] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 96] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 100] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 96] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 100] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 96] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 100] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 96] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 100] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 96] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 96] + add eax, 8 + mov dword ptr [rsp + 96], eax + jmp LBB124_12 +LBB124_15: + jmp LBB124_16 +LBB124_16: + mov eax, dword ptr [rsp + 100] + add eax, 512 + mov dword ptr [rsp + 100], eax + jmp LBB124_10 +LBB124_17: + mov dword ptr [rsp + 92], 0 +LBB124_18: + cmp dword ptr [rsp + 92], 4096 + jge LBB124_25 + mov dword ptr [rsp + 88], 0 +LBB124_20: + cmp dword ptr [rsp + 88], 512 + jge LBB124_23 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 92] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 92] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 92] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 92] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 8 + mov dword ptr [rsp + 88], eax + jmp LBB124_20 +LBB124_23: + jmp LBB124_24 +LBB124_24: + mov eax, dword ptr [rsp + 92] + add eax, 4096 + mov dword ptr [rsp + 92], eax + jmp LBB124_18 +LBB124_25: + jmp LBB124_86 +LBB124_26: + cmp dword ptr [rsp + 124], 15 + jne LBB124_36 + mov rcx, qword ptr [rsp + 112] + mov edx, 12 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 16384 + mov edx, 12 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 32768 + mov edx, 12 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 49152 + mov edx, 12 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 65536 + mov edx, 12 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 81920 + mov edx, 12 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 98304 + mov edx, 12 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 114688 + mov edx, 12 + call fht_helper_float_29_recursive + mov dword ptr [rsp + 84], 0 +LBB124_28: + cmp dword ptr [rsp + 84], 32768 + jge LBB124_35 + mov dword ptr [rsp + 80], 0 +LBB124_30: + cmp dword ptr [rsp + 80], 4096 + jge LBB124_33 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 2 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 84] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 2 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 84] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 2 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 84] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 2 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 84] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 2 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 2 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 2 + add rsi, rdi + add rsi, 114688 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 8 + mov dword ptr [rsp + 80], eax + jmp LBB124_30 +LBB124_33: + jmp LBB124_34 +LBB124_34: + mov eax, dword ptr [rsp + 84] + add eax, 32768 + mov dword ptr [rsp + 84], eax + jmp LBB124_28 +LBB124_35: + jmp LBB124_86 +LBB124_36: + cmp dword ptr [rsp + 124], 18 + jne LBB124_46 + mov rcx, qword ptr [rsp + 112] + mov edx, 15 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 131072 + mov edx, 15 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 262144 + mov edx, 15 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 393216 + mov edx, 15 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 524288 + mov edx, 15 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 655360 + mov edx, 15 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 786432 + mov edx, 15 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 917504 + mov edx, 15 + call fht_helper_float_29_recursive + mov dword ptr [rsp + 76], 0 +LBB124_38: + cmp dword ptr [rsp + 76], 262144 + jge LBB124_45 + mov dword ptr [rsp + 72], 0 +LBB124_40: + cmp dword ptr [rsp + 72], 32768 + jge LBB124_43 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 917504 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB124_40 +LBB124_43: + jmp LBB124_44 +LBB124_44: + mov eax, dword ptr [rsp + 76] + add eax, 262144 + mov dword ptr [rsp + 76], eax + jmp LBB124_38 +LBB124_45: + jmp LBB124_86 +LBB124_46: + cmp dword ptr [rsp + 124], 21 + jne LBB124_56 + mov rcx, qword ptr [rsp + 112] + mov edx, 18 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1048576 + mov edx, 18 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 2097152 + mov edx, 18 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 3145728 + mov edx, 18 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 4194304 + mov edx, 18 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 5242880 + mov edx, 18 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 6291456 + mov edx, 18 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 7340032 + mov edx, 18 + call fht_helper_float_29_recursive + mov dword ptr [rsp + 68], 0 +LBB124_48: + cmp dword ptr [rsp + 68], 2097152 + jge LBB124_55 + mov dword ptr [rsp + 64], 0 +LBB124_50: + cmp dword ptr [rsp + 64], 262144 + jge LBB124_53 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 3145728 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 4194304 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 5242880 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 6291456 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 7340032 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB124_50 +LBB124_53: + jmp LBB124_54 +LBB124_54: + mov eax, dword ptr [rsp + 68] + add eax, 2097152 + mov dword ptr [rsp + 68], eax + jmp LBB124_48 +LBB124_55: + jmp LBB124_86 +LBB124_56: + cmp dword ptr [rsp + 124], 24 + jne LBB124_66 + mov rcx, qword ptr [rsp + 112] + mov edx, 21 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 8388608 + mov edx, 21 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 16777216 + mov edx, 21 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 25165824 + mov edx, 21 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 33554432 + mov edx, 21 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 41943040 + mov edx, 21 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 50331648 + mov edx, 21 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 58720256 + mov edx, 21 + call fht_helper_float_29_recursive + mov dword ptr [rsp + 60], 0 +LBB124_58: + cmp dword ptr [rsp + 60], 16777216 + jge LBB124_65 + mov dword ptr [rsp + 56], 0 +LBB124_60: + cmp dword ptr [rsp + 56], 2097152 + jge LBB124_63 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 8388608 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 16777216 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 25165824 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 33554432 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 41943040 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 50331648 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 58720256 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB124_60 +LBB124_63: + jmp LBB124_64 +LBB124_64: + mov eax, dword ptr [rsp + 60] + add eax, 16777216 + mov dword ptr [rsp + 60], eax + jmp LBB124_58 +LBB124_65: + jmp LBB124_86 +LBB124_66: + cmp dword ptr [rsp + 124], 27 + jne LBB124_76 + mov rcx, qword ptr [rsp + 112] + mov edx, 24 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 67108864 + mov edx, 24 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 134217728 + mov edx, 24 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 201326592 + mov edx, 24 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 268435456 + mov edx, 24 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 335544320 + mov edx, 24 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 402653184 + mov edx, 24 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 469762048 + mov edx, 24 + call fht_helper_float_29_recursive + mov dword ptr [rsp + 52], 0 +LBB124_68: + cmp dword ptr [rsp + 52], 134217728 + jge LBB124_75 + mov dword ptr [rsp + 48], 0 +LBB124_70: + cmp dword ptr [rsp + 48], 16777216 + jge LBB124_73 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 67108864 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 134217728 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 201326592 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 268435456 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 335544320 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 402653184 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 469762048 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB124_70 +LBB124_73: + jmp LBB124_74 +LBB124_74: + mov eax, dword ptr [rsp + 52] + add eax, 134217728 + mov dword ptr [rsp + 52], eax + jmp LBB124_68 +LBB124_75: + jmp LBB124_86 +LBB124_76: + cmp dword ptr [rsp + 124], 29 + jne LBB124_86 + mov rcx, qword ptr [rsp + 112] + mov edx, 27 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 536870912 + mov edx, 27 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1073741824 + mov edx, 27 + call fht_helper_float_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1610612736 + mov edx, 27 + call fht_helper_float_29_recursive + mov dword ptr [rsp + 44], 0 +LBB124_78: + cmp dword ptr [rsp + 44], 536870912 + jge LBB124_85 + mov dword ptr [rsp + 40], 0 +LBB124_80: + cmp dword ptr [rsp + 40], 134217728 + jge LBB124_83 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 536870912 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 1073741824 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 1610612736 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vmovups ymmword ptr [rax], ymm0 + vmovups ymmword ptr [rcx], ymm1 + vmovups ymmword ptr [rdx], ymm2 + vmovups ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB124_80 +LBB124_83: + jmp LBB124_84 +LBB124_84: + mov eax, dword ptr [rsp + 44] + add eax, 536870912 + mov dword ptr [rsp + 44], eax + jmp LBB124_78 +LBB124_85: + jmp LBB124_86 +LBB124_86: + vmovaps xmm6, xmmword ptr [rsp + 128] + vmovaps xmm7, xmmword ptr [rsp + 144] + vmovaps xmm8, xmmword ptr [rsp + 160] + vmovaps xmm9, xmmword ptr [rsp + 176] + vmovaps xmm10, xmmword ptr [rsp + 192] + vmovaps xmm11, xmmword ptr [rsp + 208] + vmovaps xmm12, xmmword ptr [rsp + 224] + vmovaps xmm13, xmmword ptr [rsp + 240] + vmovaps xmm14, xmmword ptr [rsp + 256] + vmovaps xmm15, xmmword ptr [rsp + 272] + add rsp, 296 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_29_recursive ENDP + +fht_helper_float_30_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 296 + .allocstack 296 + vmovaps xmmword ptr [rsp + 272], xmm15 + .savexmm128 xmm15, 272 + vmovaps xmmword ptr [rsp + 256], xmm14 + .savexmm128 xmm14, 256 + vmovaps xmmword ptr [rsp + 240], xmm13 + .savexmm128 xmm13, 240 + vmovaps xmmword ptr [rsp + 224], xmm12 + .savexmm128 xmm12, 224 + vmovaps xmmword ptr [rsp + 208], xmm11 + .savexmm128 xmm11, 208 + vmovaps xmmword ptr [rsp + 192], xmm10 + .savexmm128 xmm10, 192 + vmovaps xmmword ptr [rsp + 176], xmm9 + .savexmm128 xmm9, 176 + vmovaps xmmword ptr [rsp + 160], xmm8 + .savexmm128 xmm8, 160 + vmovaps xmmword ptr [rsp + 144], xmm7 + .savexmm128 xmm7, 144 + vmovaps xmmword ptr [rsp + 128], xmm6 + .savexmm128 xmm6, 128 + .endprolog + mov dword ptr [rsp + 124], edx + mov qword ptr [rsp + 112], rcx + cmp dword ptr [rsp + 124], 6 + jne LBB125_10 + mov dword ptr [rsp + 108], 0 +LBB125_2: + cmp dword ptr [rsp + 108], 64 + jge LBB125_9 + mov dword ptr [rsp + 104], 0 +LBB125_4: + cmp dword ptr [rsp + 104], 8 + jge LBB125_7 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 108] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 104] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 108] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 104] + shl rdx, 2 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 108] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 104] + shl r8, 2 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 108] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 104] + shl r9, 2 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 108] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 104] + shl r10, 2 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 108] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 104] + shl r11, 2 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 108] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 104] + shl rsi, 2 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 108] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 104] + shl rdi, 2 + add rsi, rdi + add rsi, 224 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vpermilps ymm8, ymm0, 160 + vpermilps ymm9, ymm0, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm0, ymm8, ymm11 + vpermilps ymm8, ymm1, 160 + vpermilps ymm9, ymm1, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm1, ymm8, ymm11 + vpermilps ymm8, ymm2, 160 + vpermilps ymm9, ymm2, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm2, ymm8, ymm11 + vpermilps ymm8, ymm3, 160 + vpermilps ymm9, ymm3, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm3, ymm8, ymm11 + vpermilps ymm8, ymm4, 160 + vpermilps ymm9, ymm4, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm4, ymm8, ymm11 + vpermilps ymm8, ymm5, 160 + vpermilps ymm9, ymm5, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm5, ymm8, ymm11 + vpermilps ymm8, ymm6, 160 + vpermilps ymm9, ymm6, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm6, ymm8, ymm11 + vpermilps ymm8, ymm7, 160 + vpermilps ymm9, ymm7, 245 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vaddsubps ymm7, ymm8, ymm11 + vpermilps ymm8, ymm0, 68 + vpermilps ymm9, ymm0, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm0, ymm12, ymm8 + vpermilps ymm8, ymm1, 68 + vpermilps ymm9, ymm1, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm1, ymm12, ymm8 + vpermilps ymm8, ymm2, 68 + vpermilps ymm9, ymm2, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm2, ymm12, ymm8 + vpermilps ymm8, ymm3, 68 + vpermilps ymm9, ymm3, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm3, ymm12, ymm8 + vpermilps ymm8, ymm4, 68 + vpermilps ymm9, ymm4, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm4, ymm12, ymm8 + vpermilps ymm8, ymm5, 68 + vpermilps ymm9, ymm5, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm5, ymm12, ymm8 + vpermilps ymm8, ymm6, 68 + vpermilps ymm9, ymm6, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm6, ymm12, ymm8 + vpermilps ymm8, ymm7, 68 + vpermilps ymm9, ymm7, 238 + vxorps ymm10, ymm10, ymm10 + vsubps ymm11, ymm10, ymm9 + vblendps ymm12, ymm9, ymm11, 204 + vaddps ymm7, ymm12, ymm8 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm0 + vperm2f128 ymm10, ymm0, ymm0, 0 + vperm2f128 ymm11, ymm0, ymm9, 49 + vaddps ymm0, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm1 + vperm2f128 ymm10, ymm1, ymm1, 0 + vperm2f128 ymm11, ymm1, ymm9, 49 + vaddps ymm1, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm2 + vperm2f128 ymm10, ymm2, ymm2, 0 + vperm2f128 ymm11, ymm2, ymm9, 49 + vaddps ymm2, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm3 + vperm2f128 ymm10, ymm3, ymm3, 0 + vperm2f128 ymm11, ymm3, ymm9, 49 + vaddps ymm3, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm4 + vperm2f128 ymm10, ymm4, ymm4, 0 + vperm2f128 ymm11, ymm4, ymm9, 49 + vaddps ymm4, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm5 + vperm2f128 ymm10, ymm5, ymm5, 0 + vperm2f128 ymm11, ymm5, ymm9, 49 + vaddps ymm5, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm6 + vperm2f128 ymm10, ymm6, ymm6, 0 + vperm2f128 ymm11, ymm6, ymm9, 49 + vaddps ymm6, ymm11, ymm10 + vxorps ymm8, ymm8, ymm8 + vsubps ymm9, ymm8, ymm7 + vperm2f128 ymm10, ymm7, ymm7, 0 + vperm2f128 ymm11, ymm7, ymm9, 49 + vaddps ymm7, ymm11, ymm10 + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 104] + add eax, 8 + mov dword ptr [rsp + 104], eax + jmp LBB125_4 +LBB125_7: + jmp LBB125_8 +LBB125_8: + mov eax, dword ptr [rsp + 108] + add eax, 64 + mov dword ptr [rsp + 108], eax + jmp LBB125_2 +LBB125_9: + jmp LBB125_90 +LBB125_10: + cmp dword ptr [rsp + 124], 9 + jne LBB125_20 + mov rcx, qword ptr [rsp + 112] + mov edx, 6 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 256 + mov edx, 6 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 512 + mov edx, 6 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 768 + mov edx, 6 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1024 + mov edx, 6 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1280 + mov edx, 6 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1536 + mov edx, 6 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1792 + mov edx, 6 + call fht_helper_float_30_recursive + mov dword ptr [rsp + 100], 0 +LBB125_12: + cmp dword ptr [rsp + 100], 512 + jge LBB125_19 + mov dword ptr [rsp + 96], 0 +LBB125_14: + cmp dword ptr [rsp + 96], 64 + jge LBB125_17 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 100] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 96] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 100] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 96] + shl rdx, 2 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 100] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 96] + shl r8, 2 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 100] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 96] + shl r9, 2 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 100] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 96] + shl r10, 2 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 100] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 96] + shl r11, 2 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 100] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 96] + shl rsi, 2 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 100] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 96] + shl rdi, 2 + add rsi, rdi + add rsi, 1792 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 96] + add eax, 8 + mov dword ptr [rsp + 96], eax + jmp LBB125_14 +LBB125_17: + jmp LBB125_18 +LBB125_18: + mov eax, dword ptr [rsp + 100] + add eax, 512 + mov dword ptr [rsp + 100], eax + jmp LBB125_12 +LBB125_19: + jmp LBB125_90 +LBB125_20: + cmp dword ptr [rsp + 124], 12 + jne LBB125_30 + mov rcx, qword ptr [rsp + 112] + mov edx, 9 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 2048 + mov edx, 9 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 4096 + mov edx, 9 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 6144 + mov edx, 9 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 8192 + mov edx, 9 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 10240 + mov edx, 9 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 12288 + mov edx, 9 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 14336 + mov edx, 9 + call fht_helper_float_30_recursive + mov dword ptr [rsp + 92], 0 +LBB125_22: + cmp dword ptr [rsp + 92], 4096 + jge LBB125_29 + mov dword ptr [rsp + 88], 0 +LBB125_24: + cmp dword ptr [rsp + 88], 512 + jge LBB125_27 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 2 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 92] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 2 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 92] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 2 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 92] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 2 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 92] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 2 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 2 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 2 + add rsi, rdi + add rsi, 14336 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 8 + mov dword ptr [rsp + 88], eax + jmp LBB125_24 +LBB125_27: + jmp LBB125_28 +LBB125_28: + mov eax, dword ptr [rsp + 92] + add eax, 4096 + mov dword ptr [rsp + 92], eax + jmp LBB125_22 +LBB125_29: + jmp LBB125_90 +LBB125_30: + cmp dword ptr [rsp + 124], 15 + jne LBB125_40 + mov rcx, qword ptr [rsp + 112] + mov edx, 12 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 16384 + mov edx, 12 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 32768 + mov edx, 12 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 49152 + mov edx, 12 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 65536 + mov edx, 12 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 81920 + mov edx, 12 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 98304 + mov edx, 12 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 114688 + mov edx, 12 + call fht_helper_float_30_recursive + mov dword ptr [rsp + 84], 0 +LBB125_32: + cmp dword ptr [rsp + 84], 32768 + jge LBB125_39 + mov dword ptr [rsp + 80], 0 +LBB125_34: + cmp dword ptr [rsp + 80], 4096 + jge LBB125_37 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 2 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 84] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 2 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 84] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 2 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 84] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 2 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 84] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 2 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 2 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 2 + add rsi, rdi + add rsi, 114688 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 8 + mov dword ptr [rsp + 80], eax + jmp LBB125_34 +LBB125_37: + jmp LBB125_38 +LBB125_38: + mov eax, dword ptr [rsp + 84] + add eax, 32768 + mov dword ptr [rsp + 84], eax + jmp LBB125_32 +LBB125_39: + jmp LBB125_90 +LBB125_40: + cmp dword ptr [rsp + 124], 18 + jne LBB125_50 + mov rcx, qword ptr [rsp + 112] + mov edx, 15 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 131072 + mov edx, 15 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 262144 + mov edx, 15 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 393216 + mov edx, 15 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 524288 + mov edx, 15 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 655360 + mov edx, 15 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 786432 + mov edx, 15 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 917504 + mov edx, 15 + call fht_helper_float_30_recursive + mov dword ptr [rsp + 76], 0 +LBB125_42: + cmp dword ptr [rsp + 76], 262144 + jge LBB125_49 + mov dword ptr [rsp + 72], 0 +LBB125_44: + cmp dword ptr [rsp + 72], 32768 + jge LBB125_47 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 2 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 76] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 2 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 76] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 2 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 76] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 2 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 76] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 2 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 2 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 2 + add rsi, rdi + add rsi, 917504 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 8 + mov dword ptr [rsp + 72], eax + jmp LBB125_44 +LBB125_47: + jmp LBB125_48 +LBB125_48: + mov eax, dword ptr [rsp + 76] + add eax, 262144 + mov dword ptr [rsp + 76], eax + jmp LBB125_42 +LBB125_49: + jmp LBB125_90 +LBB125_50: + cmp dword ptr [rsp + 124], 21 + jne LBB125_60 + mov rcx, qword ptr [rsp + 112] + mov edx, 18 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1048576 + mov edx, 18 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 2097152 + mov edx, 18 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 3145728 + mov edx, 18 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 4194304 + mov edx, 18 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 5242880 + mov edx, 18 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 6291456 + mov edx, 18 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 7340032 + mov edx, 18 + call fht_helper_float_30_recursive + mov dword ptr [rsp + 68], 0 +LBB125_52: + cmp dword ptr [rsp + 68], 2097152 + jge LBB125_59 + mov dword ptr [rsp + 64], 0 +LBB125_54: + cmp dword ptr [rsp + 64], 262144 + jge LBB125_57 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 2 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 68] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 2 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 68] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 2 + add r8, r9 + add r8, 3145728 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 68] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 2 + add r9, r10 + add r9, 4194304 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 68] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 2 + add r10, r11 + add r10, 5242880 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 2 + add r11, rsi + add r11, 6291456 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 2 + add rsi, rdi + add rsi, 7340032 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 8 + mov dword ptr [rsp + 64], eax + jmp LBB125_54 +LBB125_57: + jmp LBB125_58 +LBB125_58: + mov eax, dword ptr [rsp + 68] + add eax, 2097152 + mov dword ptr [rsp + 68], eax + jmp LBB125_52 +LBB125_59: + jmp LBB125_90 +LBB125_60: + cmp dword ptr [rsp + 124], 24 + jne LBB125_70 + mov rcx, qword ptr [rsp + 112] + mov edx, 21 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 8388608 + mov edx, 21 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 16777216 + mov edx, 21 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 25165824 + mov edx, 21 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 33554432 + mov edx, 21 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 41943040 + mov edx, 21 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 50331648 + mov edx, 21 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 58720256 + mov edx, 21 + call fht_helper_float_30_recursive + mov dword ptr [rsp + 60], 0 +LBB125_62: + cmp dword ptr [rsp + 60], 16777216 + jge LBB125_69 + mov dword ptr [rsp + 56], 0 +LBB125_64: + cmp dword ptr [rsp + 56], 2097152 + jge LBB125_67 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 2 + add rcx, rdx + add rcx, 8388608 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 60] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 2 + add rdx, r8 + add rdx, 16777216 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 60] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 2 + add r8, r9 + add r8, 25165824 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 60] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 2 + add r9, r10 + add r9, 33554432 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 60] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 2 + add r10, r11 + add r10, 41943040 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 2 + add r11, rsi + add r11, 50331648 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 2 + add rsi, rdi + add rsi, 58720256 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 8 + mov dword ptr [rsp + 56], eax + jmp LBB125_64 +LBB125_67: + jmp LBB125_68 +LBB125_68: + mov eax, dword ptr [rsp + 60] + add eax, 16777216 + mov dword ptr [rsp + 60], eax + jmp LBB125_62 +LBB125_69: + jmp LBB125_90 +LBB125_70: + cmp dword ptr [rsp + 124], 27 + jne LBB125_80 + mov rcx, qword ptr [rsp + 112] + mov edx, 24 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 67108864 + mov edx, 24 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 134217728 + mov edx, 24 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 201326592 + mov edx, 24 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 268435456 + mov edx, 24 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 335544320 + mov edx, 24 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 402653184 + mov edx, 24 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 469762048 + mov edx, 24 + call fht_helper_float_30_recursive + mov dword ptr [rsp + 52], 0 +LBB125_72: + cmp dword ptr [rsp + 52], 134217728 + jge LBB125_79 + mov dword ptr [rsp + 48], 0 +LBB125_74: + cmp dword ptr [rsp + 48], 16777216 + jge LBB125_77 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 2 + add rcx, rdx + add rcx, 67108864 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 52] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 2 + add rdx, r8 + add rdx, 134217728 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 52] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 2 + add r8, r9 + add r8, 201326592 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 52] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 2 + add r9, r10 + add r9, 268435456 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 52] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 2 + add r10, r11 + add r10, 335544320 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 2 + add r11, rsi + add r11, 402653184 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 2 + add rsi, rdi + add rsi, 469762048 + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 8 + mov dword ptr [rsp + 48], eax + jmp LBB125_74 +LBB125_77: + jmp LBB125_78 +LBB125_78: + mov eax, dword ptr [rsp + 52] + add eax, 134217728 + mov dword ptr [rsp + 52], eax + jmp LBB125_72 +LBB125_79: + jmp LBB125_90 +LBB125_80: + cmp dword ptr [rsp + 124], 30 + jne LBB125_90 + mov rcx, qword ptr [rsp + 112] + mov edx, 27 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 536870912 + mov edx, 27 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1073741824 + mov edx, 27 + call fht_helper_float_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1610612736 + mov edx, 27 + call fht_helper_float_30_recursive + mov rcx, 2147483648 + add rcx, qword ptr [rsp + 112] + mov edx, 27 + call fht_helper_float_30_recursive + mov rcx, 2684354560 + add rcx, qword ptr [rsp + 112] + mov edx, 27 + call fht_helper_float_30_recursive + mov rcx, 3221225472 + add rcx, qword ptr [rsp + 112] + mov edx, 27 + call fht_helper_float_30_recursive + mov rcx, 3758096384 + add rcx, qword ptr [rsp + 112] + mov edx, 27 + call fht_helper_float_30_recursive + mov dword ptr [rsp + 44], 0 +LBB125_82: + cmp dword ptr [rsp + 44], 1073741824 + jge LBB125_89 + mov dword ptr [rsp + 40], 0 +LBB125_84: + cmp dword ptr [rsp + 40], 134217728 + jge LBB125_87 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 2 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 2 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 2 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 2 + add rcx, rdx + add rcx, 536870912 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 44] + shl r8, 2 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 2 + add rdx, r8 + add rdx, 1073741824 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 44] + shl r9, 2 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 2 + add r8, r9 + add r8, 1610612736 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 44] + shl r10, 2 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 2 + add r9, r10 + mov r10, 2147483648 + add r9, r10 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 44] + shl r11, 2 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 2 + add r10, r11 + mov r11, 2684354560 + add r10, r11 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 2 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 2 + add r11, rsi + mov rsi, 3221225472 + add r11, rsi + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 2 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 2 + add rsi, rdi + mov rdi, 3758096384 + add rsi, rdi + vmovups ymm0, ymmword ptr [rax] + vmovups ymm1, ymmword ptr [rcx] + vmovups ymm2, ymmword ptr [rdx] + vmovups ymm3, ymmword ptr [r8] + vmovups ymm4, ymmword ptr [r9] + vmovups ymm5, ymmword ptr [r10] + vmovups ymm6, ymmword ptr [r11] + vmovups ymm7, ymmword ptr [rsi] + vaddps ymm8, ymm0, ymm1 + vsubps ymm9, ymm0, ymm1 + vaddps ymm10, ymm2, ymm3 + vsubps ymm11, ymm2, ymm3 + vaddps ymm12, ymm4, ymm5 + vsubps ymm13, ymm4, ymm5 + vaddps ymm14, ymm6, ymm7 + vsubps ymm15, ymm6, ymm7 + vaddps ymm0, ymm8, ymm10 + vsubps ymm2, ymm8, ymm10 + vaddps ymm1, ymm9, ymm11 + vsubps ymm3, ymm9, ymm11 + vaddps ymm4, ymm12, ymm14 + vsubps ymm6, ymm12, ymm14 + vaddps ymm5, ymm13, ymm15 + vsubps ymm7, ymm13, ymm15 + vaddps ymm8, ymm0, ymm4 + vsubps ymm12, ymm0, ymm4 + vaddps ymm9, ymm1, ymm5 + vsubps ymm13, ymm1, ymm5 + vaddps ymm10, ymm2, ymm6 + vsubps ymm14, ymm2, ymm6 + vaddps ymm11, ymm3, ymm7 + vsubps ymm15, ymm3, ymm7 + vmovups ymmword ptr [rax], ymm8 + vmovups ymmword ptr [rcx], ymm9 + vmovups ymmword ptr [rdx], ymm10 + vmovups ymmword ptr [r8], ymm11 + vmovups ymmword ptr [r9], ymm12 + vmovups ymmword ptr [r10], ymm13 + vmovups ymmword ptr [r11], ymm14 + vmovups ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 8 + mov dword ptr [rsp + 40], eax + jmp LBB125_84 +LBB125_87: + jmp LBB125_88 +LBB125_88: + mov eax, dword ptr [rsp + 44] + add eax, 1073741824 + mov dword ptr [rsp + 44], eax + jmp LBB125_82 +LBB125_89: + jmp LBB125_90 +LBB125_90: + vmovaps xmm6, xmmword ptr [rsp + 128] + vmovaps xmm7, xmmword ptr [rsp + 144] + vmovaps xmm8, xmmword ptr [rsp + 160] + vmovaps xmm9, xmmword ptr [rsp + 176] + vmovaps xmm10, xmmword ptr [rsp + 192] + vmovaps xmm11, xmmword ptr [rsp + 208] + vmovaps xmm12, xmmword ptr [rsp + 224] + vmovaps xmm13, xmmword ptr [rsp + 240] + vmovaps xmm14, xmmword ptr [rsp + 256] + vmovaps xmm15, xmmword ptr [rsp + 272] + add rsp, 296 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_float_30_recursive ENDP + +fht_helper_double_4_recursive PROC FRAME + sub rsp, 200 + .allocstack 200 + vmovaps xmmword ptr [rsp + 176], xmm15 + .savexmm128 xmm15, 176 + vmovaps xmmword ptr [rsp + 160], xmm14 + .savexmm128 xmm14, 160 + vmovaps xmmword ptr [rsp + 144], xmm13 + .savexmm128 xmm13, 144 + vmovaps xmmword ptr [rsp + 128], xmm12 + .savexmm128 xmm12, 128 + vmovaps xmmword ptr [rsp + 112], xmm11 + .savexmm128 xmm11, 112 + vmovaps xmmword ptr [rsp + 96], xmm10 + .savexmm128 xmm10, 96 + vmovaps xmmword ptr [rsp + 80], xmm9 + .savexmm128 xmm9, 80 + vmovaps xmmword ptr [rsp + 64], xmm8 + .savexmm128 xmm8, 64 + vmovaps xmmword ptr [rsp + 48], xmm7 + .savexmm128 xmm7, 48 + vmovaps xmmword ptr [rsp + 32], xmm6 + .savexmm128 xmm6, 32 + .endprolog + mov dword ptr [rsp + 28], edx + mov qword ptr [rsp + 16], rcx + cmp dword ptr [rsp + 28], 4 + jne LBB126_10 + mov dword ptr [rsp + 12], 0 +LBB126_2: + cmp dword ptr [rsp + 12], 16 + jge LBB126_9 + mov dword ptr [rsp + 8], 0 +LBB126_4: + cmp dword ptr [rsp + 8], 4 + jge LBB126_7 + mov rax, qword ptr [rsp + 16] + movsxd rcx, dword ptr [rsp + 12] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 8] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 16] + movsxd rdx, dword ptr [rsp + 12] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 8] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 16] + movsxd r8, dword ptr [rsp + 12] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 8] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 16] + movsxd r9, dword ptr [rsp + 12] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 8] + shl r9, 3 + add r8, r9 + add r8, 96 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 8] + add eax, 4 + mov dword ptr [rsp + 8], eax + jmp LBB126_4 +LBB126_7: + jmp LBB126_8 +LBB126_8: + mov eax, dword ptr [rsp + 12] + add eax, 16 + mov dword ptr [rsp + 12], eax + jmp LBB126_2 +LBB126_9: + jmp LBB126_10 +LBB126_10: + vmovaps xmm6, xmmword ptr [rsp + 32] + vmovaps xmm7, xmmword ptr [rsp + 48] + vmovaps xmm8, xmmword ptr [rsp + 64] + vmovaps xmm9, xmmword ptr [rsp + 80] + vmovaps xmm10, xmmword ptr [rsp + 96] + vmovaps xmm11, xmmword ptr [rsp + 112] + vmovaps xmm12, xmmword ptr [rsp + 128] + vmovaps xmm13, xmmword ptr [rsp + 144] + vmovaps xmm14, xmmword ptr [rsp + 160] + vmovaps xmm15, xmmword ptr [rsp + 176] + add rsp, 200 + vzeroupper + ret +fht_helper_double_4_recursive ENDP + +fht_helper_double_12_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 248 + .allocstack 248 + vmovaps xmmword ptr [rsp + 224], xmm15 + .savexmm128 xmm15, 224 + vmovaps xmmword ptr [rsp + 208], xmm14 + .savexmm128 xmm14, 208 + vmovaps xmmword ptr [rsp + 192], xmm13 + .savexmm128 xmm13, 192 + vmovaps xmmword ptr [rsp + 176], xmm12 + .savexmm128 xmm12, 176 + vmovaps xmmword ptr [rsp + 160], xmm11 + .savexmm128 xmm11, 160 + vmovaps xmmword ptr [rsp + 144], xmm10 + .savexmm128 xmm10, 144 + vmovaps xmmword ptr [rsp + 128], xmm9 + .savexmm128 xmm9, 128 + vmovaps xmmword ptr [rsp + 112], xmm8 + .savexmm128 xmm8, 112 + vmovaps xmmword ptr [rsp + 96], xmm7 + .savexmm128 xmm7, 96 + vmovaps xmmword ptr [rsp + 80], xmm6 + .savexmm128 xmm6, 80 + .endprolog + mov dword ptr [rsp + 76], edx + mov qword ptr [rsp + 64], rcx + cmp dword ptr [rsp + 76], 11 + jne LBB127_26 + mov dword ptr [rsp + 60], 0 +LBB127_2: + cmp dword ptr [rsp + 60], 2048 + jge LBB127_9 + mov dword ptr [rsp + 56], 0 +LBB127_4: + cmp dword ptr [rsp + 56], 4 + jge LBB127_7 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 64] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 64] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 64] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 64] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB127_4 +LBB127_7: + jmp LBB127_8 +LBB127_8: + mov eax, dword ptr [rsp + 60] + add eax, 32 + mov dword ptr [rsp + 60], eax + jmp LBB127_2 +LBB127_9: + mov dword ptr [rsp + 52], 0 +LBB127_10: + cmp dword ptr [rsp + 52], 2048 + jge LBB127_17 + mov dword ptr [rsp + 48], 0 +LBB127_12: + cmp dword ptr [rsp + 48], 32 + jge LBB127_15 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 64] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 64] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 64] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 64] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB127_12 +LBB127_15: + jmp LBB127_16 +LBB127_16: + mov eax, dword ptr [rsp + 52] + add eax, 256 + mov dword ptr [rsp + 52], eax + jmp LBB127_10 +LBB127_17: + mov dword ptr [rsp + 44], 0 +LBB127_18: + cmp dword ptr [rsp + 44], 2048 + jge LBB127_25 + mov dword ptr [rsp + 40], 0 +LBB127_20: + cmp dword ptr [rsp + 40], 256 + jge LBB127_23 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 64] + movsxd r10, dword ptr [rsp + 44] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 64] + movsxd r11, dword ptr [rsp + 44] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 64] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 64] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB127_20 +LBB127_23: + jmp LBB127_24 +LBB127_24: + mov eax, dword ptr [rsp + 44] + add eax, 2048 + mov dword ptr [rsp + 44], eax + jmp LBB127_18 +LBB127_25: + jmp LBB127_36 +LBB127_26: + cmp dword ptr [rsp + 76], 12 + jne LBB127_36 + mov rcx, qword ptr [rsp + 64] + mov edx, 11 + call fht_helper_double_12_recursive + mov rcx, qword ptr [rsp + 64] + add rcx, 16384 + mov edx, 11 + call fht_helper_double_12_recursive + mov dword ptr [rsp + 36], 0 +LBB127_28: + cmp dword ptr [rsp + 36], 4096 + jge LBB127_35 + mov dword ptr [rsp + 32], 0 +LBB127_30: + cmp dword ptr [rsp + 32], 2048 + jge LBB127_33 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 3 + add rcx, rdx + add rcx, 16384 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp + 32] + add eax, 4 + mov dword ptr [rsp + 32], eax + jmp LBB127_30 +LBB127_33: + jmp LBB127_34 +LBB127_34: + mov eax, dword ptr [rsp + 36] + add eax, 4096 + mov dword ptr [rsp + 36], eax + jmp LBB127_28 +LBB127_35: + jmp LBB127_36 +LBB127_36: + vmovaps xmm6, xmmword ptr [rsp + 80] + vmovaps xmm7, xmmword ptr [rsp + 96] + vmovaps xmm8, xmmword ptr [rsp + 112] + vmovaps xmm9, xmmword ptr [rsp + 128] + vmovaps xmm10, xmmword ptr [rsp + 144] + vmovaps xmm11, xmmword ptr [rsp + 160] + vmovaps xmm12, xmmword ptr [rsp + 176] + vmovaps xmm13, xmmword ptr [rsp + 192] + vmovaps xmm14, xmmword ptr [rsp + 208] + vmovaps xmm15, xmmword ptr [rsp + 224] + add rsp, 248 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_12_recursive ENDP + +fht_helper_double_13_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 248 + .allocstack 248 + vmovaps xmmword ptr [rsp + 224], xmm15 + .savexmm128 xmm15, 224 + vmovaps xmmword ptr [rsp + 208], xmm14 + .savexmm128 xmm14, 208 + vmovaps xmmword ptr [rsp + 192], xmm13 + .savexmm128 xmm13, 192 + vmovaps xmmword ptr [rsp + 176], xmm12 + .savexmm128 xmm12, 176 + vmovaps xmmword ptr [rsp + 160], xmm11 + .savexmm128 xmm11, 160 + vmovaps xmmword ptr [rsp + 144], xmm10 + .savexmm128 xmm10, 144 + vmovaps xmmword ptr [rsp + 128], xmm9 + .savexmm128 xmm9, 128 + vmovaps xmmword ptr [rsp + 112], xmm8 + .savexmm128 xmm8, 112 + vmovaps xmmword ptr [rsp + 96], xmm7 + .savexmm128 xmm7, 96 + vmovaps xmmword ptr [rsp + 80], xmm6 + .savexmm128 xmm6, 80 + .endprolog + mov dword ptr [rsp + 76], edx + mov qword ptr [rsp + 64], rcx + cmp dword ptr [rsp + 76], 11 + jne LBB128_26 + mov dword ptr [rsp + 60], 0 +LBB128_2: + cmp dword ptr [rsp + 60], 2048 + jge LBB128_9 + mov dword ptr [rsp + 56], 0 +LBB128_4: + cmp dword ptr [rsp + 56], 4 + jge LBB128_7 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 64] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 64] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 64] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 64] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB128_4 +LBB128_7: + jmp LBB128_8 +LBB128_8: + mov eax, dword ptr [rsp + 60] + add eax, 32 + mov dword ptr [rsp + 60], eax + jmp LBB128_2 +LBB128_9: + mov dword ptr [rsp + 52], 0 +LBB128_10: + cmp dword ptr [rsp + 52], 2048 + jge LBB128_17 + mov dword ptr [rsp + 48], 0 +LBB128_12: + cmp dword ptr [rsp + 48], 32 + jge LBB128_15 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 64] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 64] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 64] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 64] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB128_12 +LBB128_15: + jmp LBB128_16 +LBB128_16: + mov eax, dword ptr [rsp + 52] + add eax, 256 + mov dword ptr [rsp + 52], eax + jmp LBB128_10 +LBB128_17: + mov dword ptr [rsp + 44], 0 +LBB128_18: + cmp dword ptr [rsp + 44], 2048 + jge LBB128_25 + mov dword ptr [rsp + 40], 0 +LBB128_20: + cmp dword ptr [rsp + 40], 256 + jge LBB128_23 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 64] + movsxd r10, dword ptr [rsp + 44] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 64] + movsxd r11, dword ptr [rsp + 44] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 64] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 64] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB128_20 +LBB128_23: + jmp LBB128_24 +LBB128_24: + mov eax, dword ptr [rsp + 44] + add eax, 2048 + mov dword ptr [rsp + 44], eax + jmp LBB128_18 +LBB128_25: + jmp LBB128_36 +LBB128_26: + cmp dword ptr [rsp + 76], 13 + jne LBB128_36 + mov rcx, qword ptr [rsp + 64] + mov edx, 11 + call fht_helper_double_13_recursive + mov rcx, qword ptr [rsp + 64] + add rcx, 16384 + mov edx, 11 + call fht_helper_double_13_recursive + mov rcx, qword ptr [rsp + 64] + add rcx, 32768 + mov edx, 11 + call fht_helper_double_13_recursive + mov rcx, qword ptr [rsp + 64] + add rcx, 49152 + mov edx, 11 + call fht_helper_double_13_recursive + mov dword ptr [rsp + 36], 0 +LBB128_28: + cmp dword ptr [rsp + 36], 8192 + jge LBB128_35 + mov dword ptr [rsp + 32], 0 +LBB128_30: + cmp dword ptr [rsp + 32], 2048 + jge LBB128_33 + mov rax, qword ptr [rsp + 64] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 64] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 3 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 64] + movsxd r8, dword ptr [rsp + 36] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 3 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 64] + movsxd r9, dword ptr [rsp + 36] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 3 + add r8, r9 + add r8, 49152 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 32] + add eax, 4 + mov dword ptr [rsp + 32], eax + jmp LBB128_30 +LBB128_33: + jmp LBB128_34 +LBB128_34: + mov eax, dword ptr [rsp + 36] + add eax, 8192 + mov dword ptr [rsp + 36], eax + jmp LBB128_28 +LBB128_35: + jmp LBB128_36 +LBB128_36: + vmovaps xmm6, xmmword ptr [rsp + 80] + vmovaps xmm7, xmmword ptr [rsp + 96] + vmovaps xmm8, xmmword ptr [rsp + 112] + vmovaps xmm9, xmmword ptr [rsp + 128] + vmovaps xmm10, xmmword ptr [rsp + 144] + vmovaps xmm11, xmmword ptr [rsp + 160] + vmovaps xmm12, xmmword ptr [rsp + 176] + vmovaps xmm13, xmmword ptr [rsp + 192] + vmovaps xmm14, xmmword ptr [rsp + 208] + vmovaps xmm15, xmmword ptr [rsp + 224] + add rsp, 248 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_13_recursive ENDP + +fht_helper_double_14_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 264 + .allocstack 264 + vmovaps xmmword ptr [rsp + 240], xmm15 + .savexmm128 xmm15, 240 + vmovaps xmmword ptr [rsp + 224], xmm14 + .savexmm128 xmm14, 224 + vmovaps xmmword ptr [rsp + 208], xmm13 + .savexmm128 xmm13, 208 + vmovaps xmmword ptr [rsp + 192], xmm12 + .savexmm128 xmm12, 192 + vmovaps xmmword ptr [rsp + 176], xmm11 + .savexmm128 xmm11, 176 + vmovaps xmmword ptr [rsp + 160], xmm10 + .savexmm128 xmm10, 160 + vmovaps xmmword ptr [rsp + 144], xmm9 + .savexmm128 xmm9, 144 + vmovaps xmmword ptr [rsp + 128], xmm8 + .savexmm128 xmm8, 128 + vmovaps xmmword ptr [rsp + 112], xmm7 + .savexmm128 xmm7, 112 + vmovaps xmmword ptr [rsp + 96], xmm6 + .savexmm128 xmm6, 96 + .endprolog + mov dword ptr [rsp + 92], edx + mov qword ptr [rsp + 80], rcx + cmp dword ptr [rsp + 92], 12 + jne LBB129_34 + mov dword ptr [rsp + 76], 0 +LBB129_2: + cmp dword ptr [rsp + 76], 4096 + jge LBB129_9 + mov dword ptr [rsp + 72], 0 +LBB129_4: + cmp dword ptr [rsp + 72], 4 + jge LBB129_7 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB129_4 +LBB129_7: + jmp LBB129_8 +LBB129_8: + mov eax, dword ptr [rsp + 76] + add eax, 32 + mov dword ptr [rsp + 76], eax + jmp LBB129_2 +LBB129_9: + mov dword ptr [rsp + 68], 0 +LBB129_10: + cmp dword ptr [rsp + 68], 4096 + jge LBB129_17 + mov dword ptr [rsp + 64], 0 +LBB129_12: + cmp dword ptr [rsp + 64], 32 + jge LBB129_15 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB129_12 +LBB129_15: + jmp LBB129_16 +LBB129_16: + mov eax, dword ptr [rsp + 68] + add eax, 256 + mov dword ptr [rsp + 68], eax + jmp LBB129_10 +LBB129_17: + mov dword ptr [rsp + 60], 0 +LBB129_18: + cmp dword ptr [rsp + 60], 4096 + jge LBB129_25 + mov dword ptr [rsp + 56], 0 +LBB129_20: + cmp dword ptr [rsp + 56], 256 + jge LBB129_23 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB129_20 +LBB129_23: + jmp LBB129_24 +LBB129_24: + mov eax, dword ptr [rsp + 60] + add eax, 2048 + mov dword ptr [rsp + 60], eax + jmp LBB129_18 +LBB129_25: + mov dword ptr [rsp + 52], 0 +LBB129_26: + cmp dword ptr [rsp + 52], 4096 + jge LBB129_33 + mov dword ptr [rsp + 48], 0 +LBB129_28: + cmp dword ptr [rsp + 48], 2048 + jge LBB129_31 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 16384 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB129_28 +LBB129_31: + jmp LBB129_32 +LBB129_32: + mov eax, dword ptr [rsp + 52] + add eax, 4096 + mov dword ptr [rsp + 52], eax + jmp LBB129_26 +LBB129_33: + jmp LBB129_44 +LBB129_34: + cmp dword ptr [rsp + 92], 14 + jne LBB129_44 + mov rcx, qword ptr [rsp + 80] + mov edx, 12 + call fht_helper_double_14_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 32768 + mov edx, 12 + call fht_helper_double_14_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 65536 + mov edx, 12 + call fht_helper_double_14_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 98304 + mov edx, 12 + call fht_helper_double_14_recursive + mov dword ptr [rsp + 44], 0 +LBB129_36: + cmp dword ptr [rsp + 44], 16384 + jge LBB129_43 + mov dword ptr [rsp + 40], 0 +LBB129_38: + cmp dword ptr [rsp + 40], 4096 + jge LBB129_41 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 32768 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 65536 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 98304 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB129_38 +LBB129_41: + jmp LBB129_42 +LBB129_42: + mov eax, dword ptr [rsp + 44] + add eax, 16384 + mov dword ptr [rsp + 44], eax + jmp LBB129_36 +LBB129_43: + jmp LBB129_44 +LBB129_44: + vmovaps xmm6, xmmword ptr [rsp + 96] + vmovaps xmm7, xmmword ptr [rsp + 112] + vmovaps xmm8, xmmword ptr [rsp + 128] + vmovaps xmm9, xmmword ptr [rsp + 144] + vmovaps xmm10, xmmword ptr [rsp + 160] + vmovaps xmm11, xmmword ptr [rsp + 176] + vmovaps xmm12, xmmword ptr [rsp + 192] + vmovaps xmm13, xmmword ptr [rsp + 208] + vmovaps xmm14, xmmword ptr [rsp + 224] + vmovaps xmm15, xmmword ptr [rsp + 240] + add rsp, 264 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_14_recursive ENDP + +fht_helper_double_15_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 264 + .allocstack 264 + vmovaps xmmword ptr [rsp + 240], xmm15 + .savexmm128 xmm15, 240 + vmovaps xmmword ptr [rsp + 224], xmm14 + .savexmm128 xmm14, 224 + vmovaps xmmword ptr [rsp + 208], xmm13 + .savexmm128 xmm13, 208 + vmovaps xmmword ptr [rsp + 192], xmm12 + .savexmm128 xmm12, 192 + vmovaps xmmword ptr [rsp + 176], xmm11 + .savexmm128 xmm11, 176 + vmovaps xmmword ptr [rsp + 160], xmm10 + .savexmm128 xmm10, 160 + vmovaps xmmword ptr [rsp + 144], xmm9 + .savexmm128 xmm9, 144 + vmovaps xmmword ptr [rsp + 128], xmm8 + .savexmm128 xmm8, 128 + vmovaps xmmword ptr [rsp + 112], xmm7 + .savexmm128 xmm7, 112 + vmovaps xmmword ptr [rsp + 96], xmm6 + .savexmm128 xmm6, 96 + .endprolog + mov dword ptr [rsp + 92], edx + mov qword ptr [rsp + 80], rcx + cmp dword ptr [rsp + 92], 12 + jne LBB130_34 + mov dword ptr [rsp + 76], 0 +LBB130_2: + cmp dword ptr [rsp + 76], 4096 + jge LBB130_9 + mov dword ptr [rsp + 72], 0 +LBB130_4: + cmp dword ptr [rsp + 72], 4 + jge LBB130_7 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB130_4 +LBB130_7: + jmp LBB130_8 +LBB130_8: + mov eax, dword ptr [rsp + 76] + add eax, 32 + mov dword ptr [rsp + 76], eax + jmp LBB130_2 +LBB130_9: + mov dword ptr [rsp + 68], 0 +LBB130_10: + cmp dword ptr [rsp + 68], 4096 + jge LBB130_17 + mov dword ptr [rsp + 64], 0 +LBB130_12: + cmp dword ptr [rsp + 64], 32 + jge LBB130_15 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB130_12 +LBB130_15: + jmp LBB130_16 +LBB130_16: + mov eax, dword ptr [rsp + 68] + add eax, 256 + mov dword ptr [rsp + 68], eax + jmp LBB130_10 +LBB130_17: + mov dword ptr [rsp + 60], 0 +LBB130_18: + cmp dword ptr [rsp + 60], 4096 + jge LBB130_25 + mov dword ptr [rsp + 56], 0 +LBB130_20: + cmp dword ptr [rsp + 56], 256 + jge LBB130_23 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB130_20 +LBB130_23: + jmp LBB130_24 +LBB130_24: + mov eax, dword ptr [rsp + 60] + add eax, 2048 + mov dword ptr [rsp + 60], eax + jmp LBB130_18 +LBB130_25: + mov dword ptr [rsp + 52], 0 +LBB130_26: + cmp dword ptr [rsp + 52], 4096 + jge LBB130_33 + mov dword ptr [rsp + 48], 0 +LBB130_28: + cmp dword ptr [rsp + 48], 2048 + jge LBB130_31 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 16384 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB130_28 +LBB130_31: + jmp LBB130_32 +LBB130_32: + mov eax, dword ptr [rsp + 52] + add eax, 4096 + mov dword ptr [rsp + 52], eax + jmp LBB130_26 +LBB130_33: + jmp LBB130_44 +LBB130_34: + cmp dword ptr [rsp + 92], 15 + jne LBB130_44 + mov rcx, qword ptr [rsp + 80] + mov edx, 12 + call fht_helper_double_15_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 32768 + mov edx, 12 + call fht_helper_double_15_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 65536 + mov edx, 12 + call fht_helper_double_15_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 98304 + mov edx, 12 + call fht_helper_double_15_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 131072 + mov edx, 12 + call fht_helper_double_15_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 163840 + mov edx, 12 + call fht_helper_double_15_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 196608 + mov edx, 12 + call fht_helper_double_15_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 229376 + mov edx, 12 + call fht_helper_double_15_recursive + mov dword ptr [rsp + 44], 0 +LBB130_36: + cmp dword ptr [rsp + 44], 32768 + jge LBB130_43 + mov dword ptr [rsp + 40], 0 +LBB130_38: + cmp dword ptr [rsp + 40], 4096 + jge LBB130_41 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 32768 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 65536 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 98304 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 44] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 3 + add r9, r10 + add r9, 131072 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 44] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 3 + add r10, r11 + add r10, 163840 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 3 + add r11, rsi + add r11, 196608 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 3 + add rsi, rdi + add rsi, 229376 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB130_38 +LBB130_41: + jmp LBB130_42 +LBB130_42: + mov eax, dword ptr [rsp + 44] + add eax, 32768 + mov dword ptr [rsp + 44], eax + jmp LBB130_36 +LBB130_43: + jmp LBB130_44 +LBB130_44: + vmovaps xmm6, xmmword ptr [rsp + 96] + vmovaps xmm7, xmmword ptr [rsp + 112] + vmovaps xmm8, xmmword ptr [rsp + 128] + vmovaps xmm9, xmmword ptr [rsp + 144] + vmovaps xmm10, xmmword ptr [rsp + 160] + vmovaps xmm11, xmmword ptr [rsp + 176] + vmovaps xmm12, xmmword ptr [rsp + 192] + vmovaps xmm13, xmmword ptr [rsp + 208] + vmovaps xmm14, xmmword ptr [rsp + 224] + vmovaps xmm15, xmmword ptr [rsp + 240] + add rsp, 264 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_15_recursive ENDP + +fht_helper_double_16_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 264 + .allocstack 264 + vmovaps xmmword ptr [rsp + 240], xmm15 + .savexmm128 xmm15, 240 + vmovaps xmmword ptr [rsp + 224], xmm14 + .savexmm128 xmm14, 224 + vmovaps xmmword ptr [rsp + 208], xmm13 + .savexmm128 xmm13, 208 + vmovaps xmmword ptr [rsp + 192], xmm12 + .savexmm128 xmm12, 192 + vmovaps xmmword ptr [rsp + 176], xmm11 + .savexmm128 xmm11, 176 + vmovaps xmmword ptr [rsp + 160], xmm10 + .savexmm128 xmm10, 160 + vmovaps xmmword ptr [rsp + 144], xmm9 + .savexmm128 xmm9, 144 + vmovaps xmmword ptr [rsp + 128], xmm8 + .savexmm128 xmm8, 128 + vmovaps xmmword ptr [rsp + 112], xmm7 + .savexmm128 xmm7, 112 + vmovaps xmmword ptr [rsp + 96], xmm6 + .savexmm128 xmm6, 96 + .endprolog + mov dword ptr [rsp + 92], edx + mov qword ptr [rsp + 80], rcx + cmp dword ptr [rsp + 92], 11 + jne LBB131_26 + mov dword ptr [rsp + 76], 0 +LBB131_2: + cmp dword ptr [rsp + 76], 2048 + jge LBB131_9 + mov dword ptr [rsp + 72], 0 +LBB131_4: + cmp dword ptr [rsp + 72], 4 + jge LBB131_7 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB131_4 +LBB131_7: + jmp LBB131_8 +LBB131_8: + mov eax, dword ptr [rsp + 76] + add eax, 32 + mov dword ptr [rsp + 76], eax + jmp LBB131_2 +LBB131_9: + mov dword ptr [rsp + 68], 0 +LBB131_10: + cmp dword ptr [rsp + 68], 2048 + jge LBB131_17 + mov dword ptr [rsp + 64], 0 +LBB131_12: + cmp dword ptr [rsp + 64], 32 + jge LBB131_15 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB131_12 +LBB131_15: + jmp LBB131_16 +LBB131_16: + mov eax, dword ptr [rsp + 68] + add eax, 256 + mov dword ptr [rsp + 68], eax + jmp LBB131_10 +LBB131_17: + mov dword ptr [rsp + 60], 0 +LBB131_18: + cmp dword ptr [rsp + 60], 2048 + jge LBB131_25 + mov dword ptr [rsp + 56], 0 +LBB131_20: + cmp dword ptr [rsp + 56], 256 + jge LBB131_23 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB131_20 +LBB131_23: + jmp LBB131_24 +LBB131_24: + mov eax, dword ptr [rsp + 60] + add eax, 2048 + mov dword ptr [rsp + 60], eax + jmp LBB131_18 +LBB131_25: + jmp LBB131_46 +LBB131_26: + cmp dword ptr [rsp + 92], 14 + jne LBB131_36 + mov rcx, qword ptr [rsp + 80] + mov edx, 11 + call fht_helper_double_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 16384 + mov edx, 11 + call fht_helper_double_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 32768 + mov edx, 11 + call fht_helper_double_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 49152 + mov edx, 11 + call fht_helper_double_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 65536 + mov edx, 11 + call fht_helper_double_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 81920 + mov edx, 11 + call fht_helper_double_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 98304 + mov edx, 11 + call fht_helper_double_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 114688 + mov edx, 11 + call fht_helper_double_16_recursive + mov dword ptr [rsp + 52], 0 +LBB131_28: + cmp dword ptr [rsp + 52], 16384 + jge LBB131_35 + mov dword ptr [rsp + 48], 0 +LBB131_30: + cmp dword ptr [rsp + 48], 2048 + jge LBB131_33 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 114688 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB131_30 +LBB131_33: + jmp LBB131_34 +LBB131_34: + mov eax, dword ptr [rsp + 52] + add eax, 16384 + mov dword ptr [rsp + 52], eax + jmp LBB131_28 +LBB131_35: + jmp LBB131_46 +LBB131_36: + cmp dword ptr [rsp + 92], 16 + jne LBB131_46 + mov rcx, qword ptr [rsp + 80] + mov edx, 14 + call fht_helper_double_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 131072 + mov edx, 14 + call fht_helper_double_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 262144 + mov edx, 14 + call fht_helper_double_16_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 393216 + mov edx, 14 + call fht_helper_double_16_recursive + mov dword ptr [rsp + 44], 0 +LBB131_38: + cmp dword ptr [rsp + 44], 65536 + jge LBB131_45 + mov dword ptr [rsp + 40], 0 +LBB131_40: + cmp dword ptr [rsp + 40], 16384 + jge LBB131_43 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 393216 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB131_40 +LBB131_43: + jmp LBB131_44 +LBB131_44: + mov eax, dword ptr [rsp + 44] + add eax, 65536 + mov dword ptr [rsp + 44], eax + jmp LBB131_38 +LBB131_45: + jmp LBB131_46 +LBB131_46: + vmovaps xmm6, xmmword ptr [rsp + 96] + vmovaps xmm7, xmmword ptr [rsp + 112] + vmovaps xmm8, xmmword ptr [rsp + 128] + vmovaps xmm9, xmmword ptr [rsp + 144] + vmovaps xmm10, xmmword ptr [rsp + 160] + vmovaps xmm11, xmmword ptr [rsp + 176] + vmovaps xmm12, xmmword ptr [rsp + 192] + vmovaps xmm13, xmmword ptr [rsp + 208] + vmovaps xmm14, xmmword ptr [rsp + 224] + vmovaps xmm15, xmmword ptr [rsp + 240] + add rsp, 264 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_16_recursive ENDP + +fht_helper_double_17_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 264 + .allocstack 264 + vmovaps xmmword ptr [rsp + 240], xmm15 + .savexmm128 xmm15, 240 + vmovaps xmmword ptr [rsp + 224], xmm14 + .savexmm128 xmm14, 224 + vmovaps xmmword ptr [rsp + 208], xmm13 + .savexmm128 xmm13, 208 + vmovaps xmmword ptr [rsp + 192], xmm12 + .savexmm128 xmm12, 192 + vmovaps xmmword ptr [rsp + 176], xmm11 + .savexmm128 xmm11, 176 + vmovaps xmmword ptr [rsp + 160], xmm10 + .savexmm128 xmm10, 160 + vmovaps xmmword ptr [rsp + 144], xmm9 + .savexmm128 xmm9, 144 + vmovaps xmmword ptr [rsp + 128], xmm8 + .savexmm128 xmm8, 128 + vmovaps xmmword ptr [rsp + 112], xmm7 + .savexmm128 xmm7, 112 + vmovaps xmmword ptr [rsp + 96], xmm6 + .savexmm128 xmm6, 96 + .endprolog + mov dword ptr [rsp + 92], edx + mov qword ptr [rsp + 80], rcx + cmp dword ptr [rsp + 92], 11 + jne LBB132_26 + mov dword ptr [rsp + 76], 0 +LBB132_2: + cmp dword ptr [rsp + 76], 2048 + jge LBB132_9 + mov dword ptr [rsp + 72], 0 +LBB132_4: + cmp dword ptr [rsp + 72], 4 + jge LBB132_7 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB132_4 +LBB132_7: + jmp LBB132_8 +LBB132_8: + mov eax, dword ptr [rsp + 76] + add eax, 32 + mov dword ptr [rsp + 76], eax + jmp LBB132_2 +LBB132_9: + mov dword ptr [rsp + 68], 0 +LBB132_10: + cmp dword ptr [rsp + 68], 2048 + jge LBB132_17 + mov dword ptr [rsp + 64], 0 +LBB132_12: + cmp dword ptr [rsp + 64], 32 + jge LBB132_15 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB132_12 +LBB132_15: + jmp LBB132_16 +LBB132_16: + mov eax, dword ptr [rsp + 68] + add eax, 256 + mov dword ptr [rsp + 68], eax + jmp LBB132_10 +LBB132_17: + mov dword ptr [rsp + 60], 0 +LBB132_18: + cmp dword ptr [rsp + 60], 2048 + jge LBB132_25 + mov dword ptr [rsp + 56], 0 +LBB132_20: + cmp dword ptr [rsp + 56], 256 + jge LBB132_23 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB132_20 +LBB132_23: + jmp LBB132_24 +LBB132_24: + mov eax, dword ptr [rsp + 60] + add eax, 2048 + mov dword ptr [rsp + 60], eax + jmp LBB132_18 +LBB132_25: + jmp LBB132_46 +LBB132_26: + cmp dword ptr [rsp + 92], 14 + jne LBB132_36 + mov rcx, qword ptr [rsp + 80] + mov edx, 11 + call fht_helper_double_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 16384 + mov edx, 11 + call fht_helper_double_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 32768 + mov edx, 11 + call fht_helper_double_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 49152 + mov edx, 11 + call fht_helper_double_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 65536 + mov edx, 11 + call fht_helper_double_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 81920 + mov edx, 11 + call fht_helper_double_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 98304 + mov edx, 11 + call fht_helper_double_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 114688 + mov edx, 11 + call fht_helper_double_17_recursive + mov dword ptr [rsp + 52], 0 +LBB132_28: + cmp dword ptr [rsp + 52], 16384 + jge LBB132_35 + mov dword ptr [rsp + 48], 0 +LBB132_30: + cmp dword ptr [rsp + 48], 2048 + jge LBB132_33 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 114688 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB132_30 +LBB132_33: + jmp LBB132_34 +LBB132_34: + mov eax, dword ptr [rsp + 52] + add eax, 16384 + mov dword ptr [rsp + 52], eax + jmp LBB132_28 +LBB132_35: + jmp LBB132_46 +LBB132_36: + cmp dword ptr [rsp + 92], 17 + jne LBB132_46 + mov rcx, qword ptr [rsp + 80] + mov edx, 14 + call fht_helper_double_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 131072 + mov edx, 14 + call fht_helper_double_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 262144 + mov edx, 14 + call fht_helper_double_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 393216 + mov edx, 14 + call fht_helper_double_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 524288 + mov edx, 14 + call fht_helper_double_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 655360 + mov edx, 14 + call fht_helper_double_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 786432 + mov edx, 14 + call fht_helper_double_17_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 917504 + mov edx, 14 + call fht_helper_double_17_recursive + mov dword ptr [rsp + 44], 0 +LBB132_38: + cmp dword ptr [rsp + 44], 131072 + jge LBB132_45 + mov dword ptr [rsp + 40], 0 +LBB132_40: + cmp dword ptr [rsp + 40], 16384 + jge LBB132_43 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 44] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 3 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 44] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 3 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 3 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 3 + add rsi, rdi + add rsi, 917504 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB132_40 +LBB132_43: + jmp LBB132_44 +LBB132_44: + mov eax, dword ptr [rsp + 44] + add eax, 131072 + mov dword ptr [rsp + 44], eax + jmp LBB132_38 +LBB132_45: + jmp LBB132_46 +LBB132_46: + vmovaps xmm6, xmmword ptr [rsp + 96] + vmovaps xmm7, xmmword ptr [rsp + 112] + vmovaps xmm8, xmmword ptr [rsp + 128] + vmovaps xmm9, xmmword ptr [rsp + 144] + vmovaps xmm10, xmmword ptr [rsp + 160] + vmovaps xmm11, xmmword ptr [rsp + 176] + vmovaps xmm12, xmmword ptr [rsp + 192] + vmovaps xmm13, xmmword ptr [rsp + 208] + vmovaps xmm14, xmmword ptr [rsp + 224] + vmovaps xmm15, xmmword ptr [rsp + 240] + add rsp, 264 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_17_recursive ENDP + +fht_helper_double_18_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 264 + .allocstack 264 + vmovaps xmmword ptr [rsp + 240], xmm15 + .savexmm128 xmm15, 240 + vmovaps xmmword ptr [rsp + 224], xmm14 + .savexmm128 xmm14, 224 + vmovaps xmmword ptr [rsp + 208], xmm13 + .savexmm128 xmm13, 208 + vmovaps xmmword ptr [rsp + 192], xmm12 + .savexmm128 xmm12, 192 + vmovaps xmmword ptr [rsp + 176], xmm11 + .savexmm128 xmm11, 176 + vmovaps xmmword ptr [rsp + 160], xmm10 + .savexmm128 xmm10, 160 + vmovaps xmmword ptr [rsp + 144], xmm9 + .savexmm128 xmm9, 144 + vmovaps xmmword ptr [rsp + 128], xmm8 + .savexmm128 xmm8, 128 + vmovaps xmmword ptr [rsp + 112], xmm7 + .savexmm128 xmm7, 112 + vmovaps xmmword ptr [rsp + 96], xmm6 + .savexmm128 xmm6, 96 + .endprolog + mov dword ptr [rsp + 92], edx + mov qword ptr [rsp + 80], rcx + cmp dword ptr [rsp + 92], 12 + jne LBB133_34 + mov dword ptr [rsp + 76], 0 +LBB133_2: + cmp dword ptr [rsp + 76], 4096 + jge LBB133_9 + mov dword ptr [rsp + 72], 0 +LBB133_4: + cmp dword ptr [rsp + 72], 4 + jge LBB133_7 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB133_4 +LBB133_7: + jmp LBB133_8 +LBB133_8: + mov eax, dword ptr [rsp + 76] + add eax, 32 + mov dword ptr [rsp + 76], eax + jmp LBB133_2 +LBB133_9: + mov dword ptr [rsp + 68], 0 +LBB133_10: + cmp dword ptr [rsp + 68], 4096 + jge LBB133_17 + mov dword ptr [rsp + 64], 0 +LBB133_12: + cmp dword ptr [rsp + 64], 32 + jge LBB133_15 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB133_12 +LBB133_15: + jmp LBB133_16 +LBB133_16: + mov eax, dword ptr [rsp + 68] + add eax, 256 + mov dword ptr [rsp + 68], eax + jmp LBB133_10 +LBB133_17: + mov dword ptr [rsp + 60], 0 +LBB133_18: + cmp dword ptr [rsp + 60], 4096 + jge LBB133_25 + mov dword ptr [rsp + 56], 0 +LBB133_20: + cmp dword ptr [rsp + 56], 256 + jge LBB133_23 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB133_20 +LBB133_23: + jmp LBB133_24 +LBB133_24: + mov eax, dword ptr [rsp + 60] + add eax, 2048 + mov dword ptr [rsp + 60], eax + jmp LBB133_18 +LBB133_25: + mov dword ptr [rsp + 52], 0 +LBB133_26: + cmp dword ptr [rsp + 52], 4096 + jge LBB133_33 + mov dword ptr [rsp + 48], 0 +LBB133_28: + cmp dword ptr [rsp + 48], 2048 + jge LBB133_31 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 16384 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB133_28 +LBB133_31: + jmp LBB133_32 +LBB133_32: + mov eax, dword ptr [rsp + 52] + add eax, 4096 + mov dword ptr [rsp + 52], eax + jmp LBB133_26 +LBB133_33: + jmp LBB133_54 +LBB133_34: + cmp dword ptr [rsp + 92], 15 + jne LBB133_44 + mov rcx, qword ptr [rsp + 80] + mov edx, 12 + call fht_helper_double_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 32768 + mov edx, 12 + call fht_helper_double_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 65536 + mov edx, 12 + call fht_helper_double_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 98304 + mov edx, 12 + call fht_helper_double_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 131072 + mov edx, 12 + call fht_helper_double_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 163840 + mov edx, 12 + call fht_helper_double_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 196608 + mov edx, 12 + call fht_helper_double_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 229376 + mov edx, 12 + call fht_helper_double_18_recursive + mov dword ptr [rsp + 44], 0 +LBB133_36: + cmp dword ptr [rsp + 44], 32768 + jge LBB133_43 + mov dword ptr [rsp + 40], 0 +LBB133_38: + cmp dword ptr [rsp + 40], 4096 + jge LBB133_41 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 32768 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 65536 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 98304 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 44] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 3 + add r9, r10 + add r9, 131072 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 44] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 3 + add r10, r11 + add r10, 163840 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 3 + add r11, rsi + add r11, 196608 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 3 + add rsi, rdi + add rsi, 229376 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB133_38 +LBB133_41: + jmp LBB133_42 +LBB133_42: + mov eax, dword ptr [rsp + 44] + add eax, 32768 + mov dword ptr [rsp + 44], eax + jmp LBB133_36 +LBB133_43: + jmp LBB133_54 +LBB133_44: + cmp dword ptr [rsp + 92], 18 + jne LBB133_54 + mov rcx, qword ptr [rsp + 80] + mov edx, 15 + call fht_helper_double_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 262144 + mov edx, 15 + call fht_helper_double_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 524288 + mov edx, 15 + call fht_helper_double_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 786432 + mov edx, 15 + call fht_helper_double_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 1048576 + mov edx, 15 + call fht_helper_double_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 1310720 + mov edx, 15 + call fht_helper_double_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 1572864 + mov edx, 15 + call fht_helper_double_18_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 1835008 + mov edx, 15 + call fht_helper_double_18_recursive + mov dword ptr [rsp + 36], 0 +LBB133_46: + cmp dword ptr [rsp + 36], 262144 + jge LBB133_53 + mov dword ptr [rsp + 32], 0 +LBB133_48: + cmp dword ptr [rsp + 32], 32768 + jge LBB133_51 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 3 + add rcx, rdx + add rcx, 262144 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 36] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 3 + add rdx, r8 + add rdx, 524288 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 36] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 3 + add r8, r9 + add r8, 786432 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 36] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 32] + shl r10, 3 + add r9, r10 + add r9, 1048576 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 36] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 32] + shl r11, 3 + add r10, r11 + add r10, 1310720 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 36] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 32] + shl rsi, 3 + add r11, rsi + add r11, 1572864 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 36] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 32] + shl rdi, 3 + add rsi, rdi + add rsi, 1835008 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 32] + add eax, 4 + mov dword ptr [rsp + 32], eax + jmp LBB133_48 +LBB133_51: + jmp LBB133_52 +LBB133_52: + mov eax, dword ptr [rsp + 36] + add eax, 262144 + mov dword ptr [rsp + 36], eax + jmp LBB133_46 +LBB133_53: + jmp LBB133_54 +LBB133_54: + vmovaps xmm6, xmmword ptr [rsp + 96] + vmovaps xmm7, xmmword ptr [rsp + 112] + vmovaps xmm8, xmmword ptr [rsp + 128] + vmovaps xmm9, xmmword ptr [rsp + 144] + vmovaps xmm10, xmmword ptr [rsp + 160] + vmovaps xmm11, xmmword ptr [rsp + 176] + vmovaps xmm12, xmmword ptr [rsp + 192] + vmovaps xmm13, xmmword ptr [rsp + 208] + vmovaps xmm14, xmmword ptr [rsp + 224] + vmovaps xmm15, xmmword ptr [rsp + 240] + add rsp, 264 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_18_recursive ENDP + +fht_helper_double_19_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 264 + .allocstack 264 + vmovaps xmmword ptr [rsp + 240], xmm15 + .savexmm128 xmm15, 240 + vmovaps xmmword ptr [rsp + 224], xmm14 + .savexmm128 xmm14, 224 + vmovaps xmmword ptr [rsp + 208], xmm13 + .savexmm128 xmm13, 208 + vmovaps xmmword ptr [rsp + 192], xmm12 + .savexmm128 xmm12, 192 + vmovaps xmmword ptr [rsp + 176], xmm11 + .savexmm128 xmm11, 176 + vmovaps xmmword ptr [rsp + 160], xmm10 + .savexmm128 xmm10, 160 + vmovaps xmmword ptr [rsp + 144], xmm9 + .savexmm128 xmm9, 144 + vmovaps xmmword ptr [rsp + 128], xmm8 + .savexmm128 xmm8, 128 + vmovaps xmmword ptr [rsp + 112], xmm7 + .savexmm128 xmm7, 112 + vmovaps xmmword ptr [rsp + 96], xmm6 + .savexmm128 xmm6, 96 + .endprolog + mov dword ptr [rsp + 92], edx + mov qword ptr [rsp + 80], rcx + cmp dword ptr [rsp + 92], 11 + jne LBB134_26 + mov dword ptr [rsp + 76], 0 +LBB134_2: + cmp dword ptr [rsp + 76], 2048 + jge LBB134_9 + mov dword ptr [rsp + 72], 0 +LBB134_4: + cmp dword ptr [rsp + 72], 4 + jge LBB134_7 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB134_4 +LBB134_7: + jmp LBB134_8 +LBB134_8: + mov eax, dword ptr [rsp + 76] + add eax, 32 + mov dword ptr [rsp + 76], eax + jmp LBB134_2 +LBB134_9: + mov dword ptr [rsp + 68], 0 +LBB134_10: + cmp dword ptr [rsp + 68], 2048 + jge LBB134_17 + mov dword ptr [rsp + 64], 0 +LBB134_12: + cmp dword ptr [rsp + 64], 32 + jge LBB134_15 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB134_12 +LBB134_15: + jmp LBB134_16 +LBB134_16: + mov eax, dword ptr [rsp + 68] + add eax, 256 + mov dword ptr [rsp + 68], eax + jmp LBB134_10 +LBB134_17: + mov dword ptr [rsp + 60], 0 +LBB134_18: + cmp dword ptr [rsp + 60], 2048 + jge LBB134_25 + mov dword ptr [rsp + 56], 0 +LBB134_20: + cmp dword ptr [rsp + 56], 256 + jge LBB134_23 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB134_20 +LBB134_23: + jmp LBB134_24 +LBB134_24: + mov eax, dword ptr [rsp + 60] + add eax, 2048 + mov dword ptr [rsp + 60], eax + jmp LBB134_18 +LBB134_25: + jmp LBB134_56 +LBB134_26: + cmp dword ptr [rsp + 92], 14 + jne LBB134_36 + mov rcx, qword ptr [rsp + 80] + mov edx, 11 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 16384 + mov edx, 11 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 32768 + mov edx, 11 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 49152 + mov edx, 11 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 65536 + mov edx, 11 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 81920 + mov edx, 11 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 98304 + mov edx, 11 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 114688 + mov edx, 11 + call fht_helper_double_19_recursive + mov dword ptr [rsp + 52], 0 +LBB134_28: + cmp dword ptr [rsp + 52], 16384 + jge LBB134_35 + mov dword ptr [rsp + 48], 0 +LBB134_30: + cmp dword ptr [rsp + 48], 2048 + jge LBB134_33 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 114688 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB134_30 +LBB134_33: + jmp LBB134_34 +LBB134_34: + mov eax, dword ptr [rsp + 52] + add eax, 16384 + mov dword ptr [rsp + 52], eax + jmp LBB134_28 +LBB134_35: + jmp LBB134_56 +LBB134_36: + cmp dword ptr [rsp + 92], 17 + jne LBB134_46 + mov rcx, qword ptr [rsp + 80] + mov edx, 14 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 131072 + mov edx, 14 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 262144 + mov edx, 14 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 393216 + mov edx, 14 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 524288 + mov edx, 14 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 655360 + mov edx, 14 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 786432 + mov edx, 14 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 917504 + mov edx, 14 + call fht_helper_double_19_recursive + mov dword ptr [rsp + 44], 0 +LBB134_38: + cmp dword ptr [rsp + 44], 131072 + jge LBB134_45 + mov dword ptr [rsp + 40], 0 +LBB134_40: + cmp dword ptr [rsp + 40], 16384 + jge LBB134_43 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 80] + movsxd r10, dword ptr [rsp + 44] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 3 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 80] + movsxd r11, dword ptr [rsp + 44] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 3 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 80] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 3 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 80] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 3 + add rsi, rdi + add rsi, 917504 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB134_40 +LBB134_43: + jmp LBB134_44 +LBB134_44: + mov eax, dword ptr [rsp + 44] + add eax, 131072 + mov dword ptr [rsp + 44], eax + jmp LBB134_38 +LBB134_45: + jmp LBB134_56 +LBB134_46: + cmp dword ptr [rsp + 92], 19 + jne LBB134_56 + mov rcx, qword ptr [rsp + 80] + mov edx, 17 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 1048576 + mov edx, 17 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 2097152 + mov edx, 17 + call fht_helper_double_19_recursive + mov rcx, qword ptr [rsp + 80] + add rcx, 3145728 + mov edx, 17 + call fht_helper_double_19_recursive + mov dword ptr [rsp + 36], 0 +LBB134_48: + cmp dword ptr [rsp + 36], 524288 + jge LBB134_55 + mov dword ptr [rsp + 32], 0 +LBB134_50: + cmp dword ptr [rsp + 32], 131072 + jge LBB134_53 + mov rax, qword ptr [rsp + 80] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 80] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 3 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 80] + movsxd r8, dword ptr [rsp + 36] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 3 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 80] + movsxd r9, dword ptr [rsp + 36] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 3 + add r8, r9 + add r8, 3145728 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 32] + add eax, 4 + mov dword ptr [rsp + 32], eax + jmp LBB134_50 +LBB134_53: + jmp LBB134_54 +LBB134_54: + mov eax, dword ptr [rsp + 36] + add eax, 524288 + mov dword ptr [rsp + 36], eax + jmp LBB134_48 +LBB134_55: + jmp LBB134_56 +LBB134_56: + vmovaps xmm6, xmmword ptr [rsp + 96] + vmovaps xmm7, xmmword ptr [rsp + 112] + vmovaps xmm8, xmmword ptr [rsp + 128] + vmovaps xmm9, xmmword ptr [rsp + 144] + vmovaps xmm10, xmmword ptr [rsp + 160] + vmovaps xmm11, xmmword ptr [rsp + 176] + vmovaps xmm12, xmmword ptr [rsp + 192] + vmovaps xmm13, xmmword ptr [rsp + 208] + vmovaps xmm14, xmmword ptr [rsp + 224] + vmovaps xmm15, xmmword ptr [rsp + 240] + add rsp, 264 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_19_recursive ENDP + +fht_helper_double_20_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 280 + .allocstack 280 + vmovaps xmmword ptr [rsp + 256], xmm15 + .savexmm128 xmm15, 256 + vmovaps xmmword ptr [rsp + 240], xmm14 + .savexmm128 xmm14, 240 + vmovaps xmmword ptr [rsp + 224], xmm13 + .savexmm128 xmm13, 224 + vmovaps xmmword ptr [rsp + 208], xmm12 + .savexmm128 xmm12, 208 + vmovaps xmmword ptr [rsp + 192], xmm11 + .savexmm128 xmm11, 192 + vmovaps xmmword ptr [rsp + 176], xmm10 + .savexmm128 xmm10, 176 + vmovaps xmmword ptr [rsp + 160], xmm9 + .savexmm128 xmm9, 160 + vmovaps xmmword ptr [rsp + 144], xmm8 + .savexmm128 xmm8, 144 + vmovaps xmmword ptr [rsp + 128], xmm7 + .savexmm128 xmm7, 128 + vmovaps xmmword ptr [rsp + 112], xmm6 + .savexmm128 xmm6, 112 + .endprolog + mov dword ptr [rsp + 108], edx + mov qword ptr [rsp + 96], rcx + cmp dword ptr [rsp + 108], 9 + jne LBB135_26 + mov dword ptr [rsp + 92], 0 +LBB135_2: + cmp dword ptr [rsp + 92], 512 + jge LBB135_9 + mov dword ptr [rsp + 88], 0 +LBB135_4: + cmp dword ptr [rsp + 88], 4 + jge LBB135_7 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 92] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 92] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 92] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 92] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 4 + mov dword ptr [rsp + 88], eax + jmp LBB135_4 +LBB135_7: + jmp LBB135_8 +LBB135_8: + mov eax, dword ptr [rsp + 92] + add eax, 32 + mov dword ptr [rsp + 92], eax + jmp LBB135_2 +LBB135_9: + mov dword ptr [rsp + 84], 0 +LBB135_10: + cmp dword ptr [rsp + 84], 512 + jge LBB135_17 + mov dword ptr [rsp + 80], 0 +LBB135_12: + cmp dword ptr [rsp + 80], 32 + jge LBB135_15 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 84] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 84] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 84] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 84] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 4 + mov dword ptr [rsp + 80], eax + jmp LBB135_12 +LBB135_15: + jmp LBB135_16 +LBB135_16: + mov eax, dword ptr [rsp + 84] + add eax, 256 + mov dword ptr [rsp + 84], eax + jmp LBB135_10 +LBB135_17: + mov dword ptr [rsp + 76], 0 +LBB135_18: + cmp dword ptr [rsp + 76], 512 + jge LBB135_25 + mov dword ptr [rsp + 72], 0 +LBB135_20: + cmp dword ptr [rsp + 72], 256 + jge LBB135_23 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB135_20 +LBB135_23: + jmp LBB135_24 +LBB135_24: + mov eax, dword ptr [rsp + 76] + add eax, 512 + mov dword ptr [rsp + 76], eax + jmp LBB135_18 +LBB135_25: + jmp LBB135_66 +LBB135_26: + cmp dword ptr [rsp + 108], 12 + jne LBB135_36 + mov rcx, qword ptr [rsp + 96] + mov edx, 9 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4096 + mov edx, 9 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8192 + mov edx, 9 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 12288 + mov edx, 9 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16384 + mov edx, 9 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 20480 + mov edx, 9 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 24576 + mov edx, 9 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 28672 + mov edx, 9 + call fht_helper_double_20_recursive + mov dword ptr [rsp + 68], 0 +LBB135_28: + cmp dword ptr [rsp + 68], 4096 + jge LBB135_35 + mov dword ptr [rsp + 64], 0 +LBB135_30: + cmp dword ptr [rsp + 64], 512 + jge LBB135_33 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 4096 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 8192 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 12288 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 16384 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 20480 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 24576 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 28672 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB135_30 +LBB135_33: + jmp LBB135_34 +LBB135_34: + mov eax, dword ptr [rsp + 68] + add eax, 4096 + mov dword ptr [rsp + 68], eax + jmp LBB135_28 +LBB135_35: + jmp LBB135_66 +LBB135_36: + cmp dword ptr [rsp + 108], 15 + jne LBB135_46 + mov rcx, qword ptr [rsp + 96] + mov edx, 12 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 32768 + mov edx, 12 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 65536 + mov edx, 12 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 98304 + mov edx, 12 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 131072 + mov edx, 12 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 163840 + mov edx, 12 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 196608 + mov edx, 12 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 229376 + mov edx, 12 + call fht_helper_double_20_recursive + mov dword ptr [rsp + 60], 0 +LBB135_38: + cmp dword ptr [rsp + 60], 32768 + jge LBB135_45 + mov dword ptr [rsp + 56], 0 +LBB135_40: + cmp dword ptr [rsp + 56], 4096 + jge LBB135_43 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 32768 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 65536 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 98304 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 131072 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 163840 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 196608 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 229376 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB135_40 +LBB135_43: + jmp LBB135_44 +LBB135_44: + mov eax, dword ptr [rsp + 60] + add eax, 32768 + mov dword ptr [rsp + 60], eax + jmp LBB135_38 +LBB135_45: + jmp LBB135_66 +LBB135_46: + cmp dword ptr [rsp + 108], 18 + jne LBB135_56 + mov rcx, qword ptr [rsp + 96] + mov edx, 15 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 262144 + mov edx, 15 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 524288 + mov edx, 15 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 786432 + mov edx, 15 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1048576 + mov edx, 15 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1310720 + mov edx, 15 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1572864 + mov edx, 15 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1835008 + mov edx, 15 + call fht_helper_double_20_recursive + mov dword ptr [rsp + 52], 0 +LBB135_48: + cmp dword ptr [rsp + 52], 262144 + jge LBB135_55 + mov dword ptr [rsp + 48], 0 +LBB135_50: + cmp dword ptr [rsp + 48], 32768 + jge LBB135_53 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 262144 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 524288 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 786432 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 1048576 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 1310720 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 1572864 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 1835008 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB135_50 +LBB135_53: + jmp LBB135_54 +LBB135_54: + mov eax, dword ptr [rsp + 52] + add eax, 262144 + mov dword ptr [rsp + 52], eax + jmp LBB135_48 +LBB135_55: + jmp LBB135_66 +LBB135_56: + cmp dword ptr [rsp + 108], 20 + jne LBB135_66 + mov rcx, qword ptr [rsp + 96] + mov edx, 18 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2097152 + mov edx, 18 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4194304 + mov edx, 18 + call fht_helper_double_20_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 6291456 + mov edx, 18 + call fht_helper_double_20_recursive + mov dword ptr [rsp + 44], 0 +LBB135_58: + cmp dword ptr [rsp + 44], 1048576 + jge LBB135_65 + mov dword ptr [rsp + 40], 0 +LBB135_60: + cmp dword ptr [rsp + 40], 262144 + jge LBB135_63 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 2097152 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 4194304 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 6291456 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB135_60 +LBB135_63: + jmp LBB135_64 +LBB135_64: + mov eax, dword ptr [rsp + 44] + add eax, 1048576 + mov dword ptr [rsp + 44], eax + jmp LBB135_58 +LBB135_65: + jmp LBB135_66 +LBB135_66: + vmovaps xmm6, xmmword ptr [rsp + 112] + vmovaps xmm7, xmmword ptr [rsp + 128] + vmovaps xmm8, xmmword ptr [rsp + 144] + vmovaps xmm9, xmmword ptr [rsp + 160] + vmovaps xmm10, xmmword ptr [rsp + 176] + vmovaps xmm11, xmmword ptr [rsp + 192] + vmovaps xmm12, xmmword ptr [rsp + 208] + vmovaps xmm13, xmmword ptr [rsp + 224] + vmovaps xmm14, xmmword ptr [rsp + 240] + vmovaps xmm15, xmmword ptr [rsp + 256] + add rsp, 280 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_20_recursive ENDP + +fht_helper_double_21_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 280 + .allocstack 280 + vmovaps xmmword ptr [rsp + 256], xmm15 + .savexmm128 xmm15, 256 + vmovaps xmmword ptr [rsp + 240], xmm14 + .savexmm128 xmm14, 240 + vmovaps xmmword ptr [rsp + 224], xmm13 + .savexmm128 xmm13, 224 + vmovaps xmmword ptr [rsp + 208], xmm12 + .savexmm128 xmm12, 208 + vmovaps xmmword ptr [rsp + 192], xmm11 + .savexmm128 xmm11, 192 + vmovaps xmmword ptr [rsp + 176], xmm10 + .savexmm128 xmm10, 176 + vmovaps xmmword ptr [rsp + 160], xmm9 + .savexmm128 xmm9, 160 + vmovaps xmmword ptr [rsp + 144], xmm8 + .savexmm128 xmm8, 144 + vmovaps xmmword ptr [rsp + 128], xmm7 + .savexmm128 xmm7, 128 + vmovaps xmmword ptr [rsp + 112], xmm6 + .savexmm128 xmm6, 112 + .endprolog + mov dword ptr [rsp + 108], edx + mov qword ptr [rsp + 96], rcx + cmp dword ptr [rsp + 108], 7 + jne LBB136_18 + mov dword ptr [rsp + 92], 0 +LBB136_2: + cmp dword ptr [rsp + 92], 128 + jge LBB136_9 + mov dword ptr [rsp + 88], 0 +LBB136_4: + cmp dword ptr [rsp + 88], 4 + jge LBB136_7 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 92] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 92] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 92] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 92] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 4 + mov dword ptr [rsp + 88], eax + jmp LBB136_4 +LBB136_7: + jmp LBB136_8 +LBB136_8: + mov eax, dword ptr [rsp + 92] + add eax, 32 + mov dword ptr [rsp + 92], eax + jmp LBB136_2 +LBB136_9: + mov dword ptr [rsp + 84], 0 +LBB136_10: + cmp dword ptr [rsp + 84], 128 + jge LBB136_17 + mov dword ptr [rsp + 80], 0 +LBB136_12: + cmp dword ptr [rsp + 80], 32 + jge LBB136_15 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 84] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 84] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 3 + add r8, r9 + add r8, 768 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 80] + add eax, 4 + mov dword ptr [rsp + 80], eax + jmp LBB136_12 +LBB136_15: + jmp LBB136_16 +LBB136_16: + mov eax, dword ptr [rsp + 84] + add eax, 128 + mov dword ptr [rsp + 84], eax + jmp LBB136_10 +LBB136_17: + jmp LBB136_68 +LBB136_18: + cmp dword ptr [rsp + 108], 10 + jne LBB136_28 + mov rcx, qword ptr [rsp + 96] + mov edx, 7 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1024 + mov edx, 7 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2048 + mov edx, 7 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3072 + mov edx, 7 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4096 + mov edx, 7 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 5120 + mov edx, 7 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 6144 + mov edx, 7 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 7168 + mov edx, 7 + call fht_helper_double_21_recursive + mov dword ptr [rsp + 76], 0 +LBB136_20: + cmp dword ptr [rsp + 76], 1024 + jge LBB136_27 + mov dword ptr [rsp + 72], 0 +LBB136_22: + cmp dword ptr [rsp + 72], 128 + jge LBB136_25 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 1024 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 2048 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 3072 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 4096 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 5120 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 6144 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 7168 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB136_22 +LBB136_25: + jmp LBB136_26 +LBB136_26: + mov eax, dword ptr [rsp + 76] + add eax, 1024 + mov dword ptr [rsp + 76], eax + jmp LBB136_20 +LBB136_27: + jmp LBB136_68 +LBB136_28: + cmp dword ptr [rsp + 108], 13 + jne LBB136_38 + mov rcx, qword ptr [rsp + 96] + mov edx, 10 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8192 + mov edx, 10 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16384 + mov edx, 10 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 24576 + mov edx, 10 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 32768 + mov edx, 10 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 40960 + mov edx, 10 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 49152 + mov edx, 10 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 57344 + mov edx, 10 + call fht_helper_double_21_recursive + mov dword ptr [rsp + 68], 0 +LBB136_30: + cmp dword ptr [rsp + 68], 8192 + jge LBB136_37 + mov dword ptr [rsp + 64], 0 +LBB136_32: + cmp dword ptr [rsp + 64], 1024 + jge LBB136_35 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 8192 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 16384 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 24576 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 32768 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 40960 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 49152 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 57344 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB136_32 +LBB136_35: + jmp LBB136_36 +LBB136_36: + mov eax, dword ptr [rsp + 68] + add eax, 8192 + mov dword ptr [rsp + 68], eax + jmp LBB136_30 +LBB136_37: + jmp LBB136_68 +LBB136_38: + cmp dword ptr [rsp + 108], 16 + jne LBB136_48 + mov rcx, qword ptr [rsp + 96] + mov edx, 13 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 65536 + mov edx, 13 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 131072 + mov edx, 13 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 196608 + mov edx, 13 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 262144 + mov edx, 13 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 327680 + mov edx, 13 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 393216 + mov edx, 13 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 458752 + mov edx, 13 + call fht_helper_double_21_recursive + mov dword ptr [rsp + 60], 0 +LBB136_40: + cmp dword ptr [rsp + 60], 65536 + jge LBB136_47 + mov dword ptr [rsp + 56], 0 +LBB136_42: + cmp dword ptr [rsp + 56], 8192 + jge LBB136_45 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 65536 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 131072 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 196608 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 262144 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 327680 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 393216 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 458752 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB136_42 +LBB136_45: + jmp LBB136_46 +LBB136_46: + mov eax, dword ptr [rsp + 60] + add eax, 65536 + mov dword ptr [rsp + 60], eax + jmp LBB136_40 +LBB136_47: + jmp LBB136_68 +LBB136_48: + cmp dword ptr [rsp + 108], 19 + jne LBB136_58 + mov rcx, qword ptr [rsp + 96] + mov edx, 16 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 524288 + mov edx, 16 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1048576 + mov edx, 16 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1572864 + mov edx, 16 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2097152 + mov edx, 16 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2621440 + mov edx, 16 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3145728 + mov edx, 16 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3670016 + mov edx, 16 + call fht_helper_double_21_recursive + mov dword ptr [rsp + 52], 0 +LBB136_50: + cmp dword ptr [rsp + 52], 524288 + jge LBB136_57 + mov dword ptr [rsp + 48], 0 +LBB136_52: + cmp dword ptr [rsp + 48], 65536 + jge LBB136_55 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 524288 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 1048576 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 1572864 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 2097152 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 2621440 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 3145728 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 3670016 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB136_52 +LBB136_55: + jmp LBB136_56 +LBB136_56: + mov eax, dword ptr [rsp + 52] + add eax, 524288 + mov dword ptr [rsp + 52], eax + jmp LBB136_50 +LBB136_57: + jmp LBB136_68 +LBB136_58: + cmp dword ptr [rsp + 108], 21 + jne LBB136_68 + mov rcx, qword ptr [rsp + 96] + mov edx, 19 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4194304 + mov edx, 19 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8388608 + mov edx, 19 + call fht_helper_double_21_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 12582912 + mov edx, 19 + call fht_helper_double_21_recursive + mov dword ptr [rsp + 44], 0 +LBB136_60: + cmp dword ptr [rsp + 44], 2097152 + jge LBB136_67 + mov dword ptr [rsp + 40], 0 +LBB136_62: + cmp dword ptr [rsp + 40], 524288 + jge LBB136_65 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 4194304 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 8388608 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 12582912 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB136_62 +LBB136_65: + jmp LBB136_66 +LBB136_66: + mov eax, dword ptr [rsp + 44] + add eax, 2097152 + mov dword ptr [rsp + 44], eax + jmp LBB136_60 +LBB136_67: + jmp LBB136_68 +LBB136_68: + vmovaps xmm6, xmmword ptr [rsp + 112] + vmovaps xmm7, xmmword ptr [rsp + 128] + vmovaps xmm8, xmmword ptr [rsp + 144] + vmovaps xmm9, xmmword ptr [rsp + 160] + vmovaps xmm10, xmmword ptr [rsp + 176] + vmovaps xmm11, xmmword ptr [rsp + 192] + vmovaps xmm12, xmmword ptr [rsp + 208] + vmovaps xmm13, xmmword ptr [rsp + 224] + vmovaps xmm14, xmmword ptr [rsp + 240] + vmovaps xmm15, xmmword ptr [rsp + 256] + add rsp, 280 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_21_recursive ENDP + +fht_helper_double_22_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 280 + .allocstack 280 + vmovaps xmmword ptr [rsp + 256], xmm15 + .savexmm128 xmm15, 256 + vmovaps xmmword ptr [rsp + 240], xmm14 + .savexmm128 xmm14, 240 + vmovaps xmmword ptr [rsp + 224], xmm13 + .savexmm128 xmm13, 224 + vmovaps xmmword ptr [rsp + 208], xmm12 + .savexmm128 xmm12, 208 + vmovaps xmmword ptr [rsp + 192], xmm11 + .savexmm128 xmm11, 192 + vmovaps xmmword ptr [rsp + 176], xmm10 + .savexmm128 xmm10, 176 + vmovaps xmmword ptr [rsp + 160], xmm9 + .savexmm128 xmm9, 160 + vmovaps xmmword ptr [rsp + 144], xmm8 + .savexmm128 xmm8, 144 + vmovaps xmmword ptr [rsp + 128], xmm7 + .savexmm128 xmm7, 128 + vmovaps xmmword ptr [rsp + 112], xmm6 + .savexmm128 xmm6, 112 + .endprolog + mov dword ptr [rsp + 108], edx + mov qword ptr [rsp + 96], rcx + cmp dword ptr [rsp + 108], 11 + jne LBB137_26 + mov dword ptr [rsp + 92], 0 +LBB137_2: + cmp dword ptr [rsp + 92], 2048 + jge LBB137_9 + mov dword ptr [rsp + 88], 0 +LBB137_4: + cmp dword ptr [rsp + 88], 4 + jge LBB137_7 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 92] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 92] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 92] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 92] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 4 + mov dword ptr [rsp + 88], eax + jmp LBB137_4 +LBB137_7: + jmp LBB137_8 +LBB137_8: + mov eax, dword ptr [rsp + 92] + add eax, 32 + mov dword ptr [rsp + 92], eax + jmp LBB137_2 +LBB137_9: + mov dword ptr [rsp + 84], 0 +LBB137_10: + cmp dword ptr [rsp + 84], 2048 + jge LBB137_17 + mov dword ptr [rsp + 80], 0 +LBB137_12: + cmp dword ptr [rsp + 80], 32 + jge LBB137_15 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 84] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 84] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 84] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 84] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 4 + mov dword ptr [rsp + 80], eax + jmp LBB137_12 +LBB137_15: + jmp LBB137_16 +LBB137_16: + mov eax, dword ptr [rsp + 84] + add eax, 256 + mov dword ptr [rsp + 84], eax + jmp LBB137_10 +LBB137_17: + mov dword ptr [rsp + 76], 0 +LBB137_18: + cmp dword ptr [rsp + 76], 2048 + jge LBB137_25 + mov dword ptr [rsp + 72], 0 +LBB137_20: + cmp dword ptr [rsp + 72], 256 + jge LBB137_23 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB137_20 +LBB137_23: + jmp LBB137_24 +LBB137_24: + mov eax, dword ptr [rsp + 76] + add eax, 2048 + mov dword ptr [rsp + 76], eax + jmp LBB137_18 +LBB137_25: + jmp LBB137_66 +LBB137_26: + cmp dword ptr [rsp + 108], 14 + jne LBB137_36 + mov rcx, qword ptr [rsp + 96] + mov edx, 11 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16384 + mov edx, 11 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 32768 + mov edx, 11 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 49152 + mov edx, 11 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 65536 + mov edx, 11 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 81920 + mov edx, 11 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 98304 + mov edx, 11 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 114688 + mov edx, 11 + call fht_helper_double_22_recursive + mov dword ptr [rsp + 68], 0 +LBB137_28: + cmp dword ptr [rsp + 68], 16384 + jge LBB137_35 + mov dword ptr [rsp + 64], 0 +LBB137_30: + cmp dword ptr [rsp + 64], 2048 + jge LBB137_33 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 114688 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB137_30 +LBB137_33: + jmp LBB137_34 +LBB137_34: + mov eax, dword ptr [rsp + 68] + add eax, 16384 + mov dword ptr [rsp + 68], eax + jmp LBB137_28 +LBB137_35: + jmp LBB137_66 +LBB137_36: + cmp dword ptr [rsp + 108], 17 + jne LBB137_46 + mov rcx, qword ptr [rsp + 96] + mov edx, 14 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 131072 + mov edx, 14 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 262144 + mov edx, 14 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 393216 + mov edx, 14 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 524288 + mov edx, 14 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 655360 + mov edx, 14 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 786432 + mov edx, 14 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 917504 + mov edx, 14 + call fht_helper_double_22_recursive + mov dword ptr [rsp + 60], 0 +LBB137_38: + cmp dword ptr [rsp + 60], 131072 + jge LBB137_45 + mov dword ptr [rsp + 56], 0 +LBB137_40: + cmp dword ptr [rsp + 56], 16384 + jge LBB137_43 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 917504 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB137_40 +LBB137_43: + jmp LBB137_44 +LBB137_44: + mov eax, dword ptr [rsp + 60] + add eax, 131072 + mov dword ptr [rsp + 60], eax + jmp LBB137_38 +LBB137_45: + jmp LBB137_66 +LBB137_46: + cmp dword ptr [rsp + 108], 20 + jne LBB137_56 + mov rcx, qword ptr [rsp + 96] + mov edx, 17 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1048576 + mov edx, 17 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2097152 + mov edx, 17 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3145728 + mov edx, 17 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4194304 + mov edx, 17 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 5242880 + mov edx, 17 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 6291456 + mov edx, 17 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 7340032 + mov edx, 17 + call fht_helper_double_22_recursive + mov dword ptr [rsp + 52], 0 +LBB137_48: + cmp dword ptr [rsp + 52], 1048576 + jge LBB137_55 + mov dword ptr [rsp + 48], 0 +LBB137_50: + cmp dword ptr [rsp + 48], 131072 + jge LBB137_53 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 3145728 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 4194304 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 5242880 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 6291456 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 7340032 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB137_50 +LBB137_53: + jmp LBB137_54 +LBB137_54: + mov eax, dword ptr [rsp + 52] + add eax, 1048576 + mov dword ptr [rsp + 52], eax + jmp LBB137_48 +LBB137_55: + jmp LBB137_66 +LBB137_56: + cmp dword ptr [rsp + 108], 22 + jne LBB137_66 + mov rcx, qword ptr [rsp + 96] + mov edx, 20 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8388608 + mov edx, 20 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16777216 + mov edx, 20 + call fht_helper_double_22_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 25165824 + mov edx, 20 + call fht_helper_double_22_recursive + mov dword ptr [rsp + 44], 0 +LBB137_58: + cmp dword ptr [rsp + 44], 4194304 + jge LBB137_65 + mov dword ptr [rsp + 40], 0 +LBB137_60: + cmp dword ptr [rsp + 40], 1048576 + jge LBB137_63 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 8388608 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 16777216 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 25165824 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB137_60 +LBB137_63: + jmp LBB137_64 +LBB137_64: + mov eax, dword ptr [rsp + 44] + add eax, 4194304 + mov dword ptr [rsp + 44], eax + jmp LBB137_58 +LBB137_65: + jmp LBB137_66 +LBB137_66: + vmovaps xmm6, xmmword ptr [rsp + 112] + vmovaps xmm7, xmmword ptr [rsp + 128] + vmovaps xmm8, xmmword ptr [rsp + 144] + vmovaps xmm9, xmmword ptr [rsp + 160] + vmovaps xmm10, xmmword ptr [rsp + 176] + vmovaps xmm11, xmmword ptr [rsp + 192] + vmovaps xmm12, xmmword ptr [rsp + 208] + vmovaps xmm13, xmmword ptr [rsp + 224] + vmovaps xmm14, xmmword ptr [rsp + 240] + vmovaps xmm15, xmmword ptr [rsp + 256] + add rsp, 280 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_22_recursive ENDP + +fht_helper_double_23_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 280 + .allocstack 280 + vmovaps xmmword ptr [rsp + 256], xmm15 + .savexmm128 xmm15, 256 + vmovaps xmmword ptr [rsp + 240], xmm14 + .savexmm128 xmm14, 240 + vmovaps xmmword ptr [rsp + 224], xmm13 + .savexmm128 xmm13, 224 + vmovaps xmmword ptr [rsp + 208], xmm12 + .savexmm128 xmm12, 208 + vmovaps xmmword ptr [rsp + 192], xmm11 + .savexmm128 xmm11, 192 + vmovaps xmmword ptr [rsp + 176], xmm10 + .savexmm128 xmm10, 176 + vmovaps xmmword ptr [rsp + 160], xmm9 + .savexmm128 xmm9, 160 + vmovaps xmmword ptr [rsp + 144], xmm8 + .savexmm128 xmm8, 144 + vmovaps xmmword ptr [rsp + 128], xmm7 + .savexmm128 xmm7, 128 + vmovaps xmmword ptr [rsp + 112], xmm6 + .savexmm128 xmm6, 112 + .endprolog + mov dword ptr [rsp + 108], edx + mov qword ptr [rsp + 96], rcx + cmp dword ptr [rsp + 108], 11 + jne LBB138_26 + mov dword ptr [rsp + 92], 0 +LBB138_2: + cmp dword ptr [rsp + 92], 2048 + jge LBB138_9 + mov dword ptr [rsp + 88], 0 +LBB138_4: + cmp dword ptr [rsp + 88], 4 + jge LBB138_7 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 92] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 92] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 92] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 92] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 4 + mov dword ptr [rsp + 88], eax + jmp LBB138_4 +LBB138_7: + jmp LBB138_8 +LBB138_8: + mov eax, dword ptr [rsp + 92] + add eax, 32 + mov dword ptr [rsp + 92], eax + jmp LBB138_2 +LBB138_9: + mov dword ptr [rsp + 84], 0 +LBB138_10: + cmp dword ptr [rsp + 84], 2048 + jge LBB138_17 + mov dword ptr [rsp + 80], 0 +LBB138_12: + cmp dword ptr [rsp + 80], 32 + jge LBB138_15 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 84] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 84] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 84] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 84] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 4 + mov dword ptr [rsp + 80], eax + jmp LBB138_12 +LBB138_15: + jmp LBB138_16 +LBB138_16: + mov eax, dword ptr [rsp + 84] + add eax, 256 + mov dword ptr [rsp + 84], eax + jmp LBB138_10 +LBB138_17: + mov dword ptr [rsp + 76], 0 +LBB138_18: + cmp dword ptr [rsp + 76], 2048 + jge LBB138_25 + mov dword ptr [rsp + 72], 0 +LBB138_20: + cmp dword ptr [rsp + 72], 256 + jge LBB138_23 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB138_20 +LBB138_23: + jmp LBB138_24 +LBB138_24: + mov eax, dword ptr [rsp + 76] + add eax, 2048 + mov dword ptr [rsp + 76], eax + jmp LBB138_18 +LBB138_25: + jmp LBB138_66 +LBB138_26: + cmp dword ptr [rsp + 108], 14 + jne LBB138_36 + mov rcx, qword ptr [rsp + 96] + mov edx, 11 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16384 + mov edx, 11 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 32768 + mov edx, 11 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 49152 + mov edx, 11 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 65536 + mov edx, 11 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 81920 + mov edx, 11 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 98304 + mov edx, 11 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 114688 + mov edx, 11 + call fht_helper_double_23_recursive + mov dword ptr [rsp + 68], 0 +LBB138_28: + cmp dword ptr [rsp + 68], 16384 + jge LBB138_35 + mov dword ptr [rsp + 64], 0 +LBB138_30: + cmp dword ptr [rsp + 64], 2048 + jge LBB138_33 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 114688 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB138_30 +LBB138_33: + jmp LBB138_34 +LBB138_34: + mov eax, dword ptr [rsp + 68] + add eax, 16384 + mov dword ptr [rsp + 68], eax + jmp LBB138_28 +LBB138_35: + jmp LBB138_66 +LBB138_36: + cmp dword ptr [rsp + 108], 17 + jne LBB138_46 + mov rcx, qword ptr [rsp + 96] + mov edx, 14 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 131072 + mov edx, 14 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 262144 + mov edx, 14 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 393216 + mov edx, 14 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 524288 + mov edx, 14 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 655360 + mov edx, 14 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 786432 + mov edx, 14 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 917504 + mov edx, 14 + call fht_helper_double_23_recursive + mov dword ptr [rsp + 60], 0 +LBB138_38: + cmp dword ptr [rsp + 60], 131072 + jge LBB138_45 + mov dword ptr [rsp + 56], 0 +LBB138_40: + cmp dword ptr [rsp + 56], 16384 + jge LBB138_43 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 917504 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB138_40 +LBB138_43: + jmp LBB138_44 +LBB138_44: + mov eax, dword ptr [rsp + 60] + add eax, 131072 + mov dword ptr [rsp + 60], eax + jmp LBB138_38 +LBB138_45: + jmp LBB138_66 +LBB138_46: + cmp dword ptr [rsp + 108], 20 + jne LBB138_56 + mov rcx, qword ptr [rsp + 96] + mov edx, 17 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1048576 + mov edx, 17 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2097152 + mov edx, 17 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3145728 + mov edx, 17 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4194304 + mov edx, 17 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 5242880 + mov edx, 17 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 6291456 + mov edx, 17 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 7340032 + mov edx, 17 + call fht_helper_double_23_recursive + mov dword ptr [rsp + 52], 0 +LBB138_48: + cmp dword ptr [rsp + 52], 1048576 + jge LBB138_55 + mov dword ptr [rsp + 48], 0 +LBB138_50: + cmp dword ptr [rsp + 48], 131072 + jge LBB138_53 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 3145728 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 4194304 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 5242880 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 6291456 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 7340032 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB138_50 +LBB138_53: + jmp LBB138_54 +LBB138_54: + mov eax, dword ptr [rsp + 52] + add eax, 1048576 + mov dword ptr [rsp + 52], eax + jmp LBB138_48 +LBB138_55: + jmp LBB138_66 +LBB138_56: + cmp dword ptr [rsp + 108], 23 + jne LBB138_66 + mov rcx, qword ptr [rsp + 96] + mov edx, 20 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8388608 + mov edx, 20 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16777216 + mov edx, 20 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 25165824 + mov edx, 20 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 33554432 + mov edx, 20 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 41943040 + mov edx, 20 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 50331648 + mov edx, 20 + call fht_helper_double_23_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 58720256 + mov edx, 20 + call fht_helper_double_23_recursive + mov dword ptr [rsp + 44], 0 +LBB138_58: + cmp dword ptr [rsp + 44], 8388608 + jge LBB138_65 + mov dword ptr [rsp + 40], 0 +LBB138_60: + cmp dword ptr [rsp + 40], 1048576 + jge LBB138_63 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 8388608 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 16777216 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 25165824 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 44] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 3 + add r9, r10 + add r9, 33554432 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 44] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 3 + add r10, r11 + add r10, 41943040 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 3 + add r11, rsi + add r11, 50331648 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 3 + add rsi, rdi + add rsi, 58720256 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB138_60 +LBB138_63: + jmp LBB138_64 +LBB138_64: + mov eax, dword ptr [rsp + 44] + add eax, 8388608 + mov dword ptr [rsp + 44], eax + jmp LBB138_58 +LBB138_65: + jmp LBB138_66 +LBB138_66: + vmovaps xmm6, xmmword ptr [rsp + 112] + vmovaps xmm7, xmmword ptr [rsp + 128] + vmovaps xmm8, xmmword ptr [rsp + 144] + vmovaps xmm9, xmmword ptr [rsp + 160] + vmovaps xmm10, xmmword ptr [rsp + 176] + vmovaps xmm11, xmmword ptr [rsp + 192] + vmovaps xmm12, xmmword ptr [rsp + 208] + vmovaps xmm13, xmmword ptr [rsp + 224] + vmovaps xmm14, xmmword ptr [rsp + 240] + vmovaps xmm15, xmmword ptr [rsp + 256] + add rsp, 280 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_23_recursive ENDP + +fht_helper_double_24_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 280 + .allocstack 280 + vmovaps xmmword ptr [rsp + 256], xmm15 + .savexmm128 xmm15, 256 + vmovaps xmmword ptr [rsp + 240], xmm14 + .savexmm128 xmm14, 240 + vmovaps xmmword ptr [rsp + 224], xmm13 + .savexmm128 xmm13, 224 + vmovaps xmmword ptr [rsp + 208], xmm12 + .savexmm128 xmm12, 208 + vmovaps xmmword ptr [rsp + 192], xmm11 + .savexmm128 xmm11, 192 + vmovaps xmmword ptr [rsp + 176], xmm10 + .savexmm128 xmm10, 176 + vmovaps xmmword ptr [rsp + 160], xmm9 + .savexmm128 xmm9, 160 + vmovaps xmmword ptr [rsp + 144], xmm8 + .savexmm128 xmm8, 144 + vmovaps xmmword ptr [rsp + 128], xmm7 + .savexmm128 xmm7, 128 + vmovaps xmmword ptr [rsp + 112], xmm6 + .savexmm128 xmm6, 112 + .endprolog + mov dword ptr [rsp + 108], edx + mov qword ptr [rsp + 96], rcx + cmp dword ptr [rsp + 108], 10 + jne LBB139_26 + mov dword ptr [rsp + 92], 0 +LBB139_2: + cmp dword ptr [rsp + 92], 1024 + jge LBB139_9 + mov dword ptr [rsp + 88], 0 +LBB139_4: + cmp dword ptr [rsp + 88], 4 + jge LBB139_7 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 92] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 92] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 92] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 92] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 4 + mov dword ptr [rsp + 88], eax + jmp LBB139_4 +LBB139_7: + jmp LBB139_8 +LBB139_8: + mov eax, dword ptr [rsp + 92] + add eax, 32 + mov dword ptr [rsp + 92], eax + jmp LBB139_2 +LBB139_9: + mov dword ptr [rsp + 84], 0 +LBB139_10: + cmp dword ptr [rsp + 84], 1024 + jge LBB139_17 + mov dword ptr [rsp + 80], 0 +LBB139_12: + cmp dword ptr [rsp + 80], 32 + jge LBB139_15 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 84] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 84] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 84] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 84] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 4 + mov dword ptr [rsp + 80], eax + jmp LBB139_12 +LBB139_15: + jmp LBB139_16 +LBB139_16: + mov eax, dword ptr [rsp + 84] + add eax, 256 + mov dword ptr [rsp + 84], eax + jmp LBB139_10 +LBB139_17: + mov dword ptr [rsp + 76], 0 +LBB139_18: + cmp dword ptr [rsp + 76], 1024 + jge LBB139_25 + mov dword ptr [rsp + 72], 0 +LBB139_20: + cmp dword ptr [rsp + 72], 256 + jge LBB139_23 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 6144 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB139_20 +LBB139_23: + jmp LBB139_24 +LBB139_24: + mov eax, dword ptr [rsp + 76] + add eax, 1024 + mov dword ptr [rsp + 76], eax + jmp LBB139_18 +LBB139_25: + jmp LBB139_76 +LBB139_26: + cmp dword ptr [rsp + 108], 13 + jne LBB139_36 + mov rcx, qword ptr [rsp + 96] + mov edx, 10 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8192 + mov edx, 10 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16384 + mov edx, 10 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 24576 + mov edx, 10 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 32768 + mov edx, 10 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 40960 + mov edx, 10 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 49152 + mov edx, 10 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 57344 + mov edx, 10 + call fht_helper_double_24_recursive + mov dword ptr [rsp + 68], 0 +LBB139_28: + cmp dword ptr [rsp + 68], 8192 + jge LBB139_35 + mov dword ptr [rsp + 64], 0 +LBB139_30: + cmp dword ptr [rsp + 64], 1024 + jge LBB139_33 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 8192 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 16384 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 24576 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 32768 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 40960 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 49152 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 57344 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB139_30 +LBB139_33: + jmp LBB139_34 +LBB139_34: + mov eax, dword ptr [rsp + 68] + add eax, 8192 + mov dword ptr [rsp + 68], eax + jmp LBB139_28 +LBB139_35: + jmp LBB139_76 +LBB139_36: + cmp dword ptr [rsp + 108], 16 + jne LBB139_46 + mov rcx, qword ptr [rsp + 96] + mov edx, 13 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 65536 + mov edx, 13 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 131072 + mov edx, 13 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 196608 + mov edx, 13 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 262144 + mov edx, 13 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 327680 + mov edx, 13 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 393216 + mov edx, 13 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 458752 + mov edx, 13 + call fht_helper_double_24_recursive + mov dword ptr [rsp + 60], 0 +LBB139_38: + cmp dword ptr [rsp + 60], 65536 + jge LBB139_45 + mov dword ptr [rsp + 56], 0 +LBB139_40: + cmp dword ptr [rsp + 56], 8192 + jge LBB139_43 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 65536 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 131072 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 196608 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 262144 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 327680 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 393216 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 458752 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB139_40 +LBB139_43: + jmp LBB139_44 +LBB139_44: + mov eax, dword ptr [rsp + 60] + add eax, 65536 + mov dword ptr [rsp + 60], eax + jmp LBB139_38 +LBB139_45: + jmp LBB139_76 +LBB139_46: + cmp dword ptr [rsp + 108], 19 + jne LBB139_56 + mov rcx, qword ptr [rsp + 96] + mov edx, 16 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 524288 + mov edx, 16 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1048576 + mov edx, 16 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1572864 + mov edx, 16 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2097152 + mov edx, 16 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2621440 + mov edx, 16 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3145728 + mov edx, 16 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3670016 + mov edx, 16 + call fht_helper_double_24_recursive + mov dword ptr [rsp + 52], 0 +LBB139_48: + cmp dword ptr [rsp + 52], 524288 + jge LBB139_55 + mov dword ptr [rsp + 48], 0 +LBB139_50: + cmp dword ptr [rsp + 48], 65536 + jge LBB139_53 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 524288 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 1048576 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 1572864 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 2097152 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 2621440 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 3145728 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 3670016 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB139_50 +LBB139_53: + jmp LBB139_54 +LBB139_54: + mov eax, dword ptr [rsp + 52] + add eax, 524288 + mov dword ptr [rsp + 52], eax + jmp LBB139_48 +LBB139_55: + jmp LBB139_76 +LBB139_56: + cmp dword ptr [rsp + 108], 22 + jne LBB139_66 + mov rcx, qword ptr [rsp + 96] + mov edx, 19 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4194304 + mov edx, 19 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8388608 + mov edx, 19 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 12582912 + mov edx, 19 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16777216 + mov edx, 19 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 20971520 + mov edx, 19 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 25165824 + mov edx, 19 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 29360128 + mov edx, 19 + call fht_helper_double_24_recursive + mov dword ptr [rsp + 44], 0 +LBB139_58: + cmp dword ptr [rsp + 44], 4194304 + jge LBB139_65 + mov dword ptr [rsp + 40], 0 +LBB139_60: + cmp dword ptr [rsp + 40], 524288 + jge LBB139_63 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 4194304 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 8388608 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 12582912 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 44] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 3 + add r9, r10 + add r9, 16777216 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 44] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 3 + add r10, r11 + add r10, 20971520 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 3 + add r11, rsi + add r11, 25165824 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 3 + add rsi, rdi + add rsi, 29360128 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB139_60 +LBB139_63: + jmp LBB139_64 +LBB139_64: + mov eax, dword ptr [rsp + 44] + add eax, 4194304 + mov dword ptr [rsp + 44], eax + jmp LBB139_58 +LBB139_65: + jmp LBB139_76 +LBB139_66: + cmp dword ptr [rsp + 108], 24 + jne LBB139_76 + mov rcx, qword ptr [rsp + 96] + mov edx, 22 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 33554432 + mov edx, 22 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 67108864 + mov edx, 22 + call fht_helper_double_24_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 100663296 + mov edx, 22 + call fht_helper_double_24_recursive + mov dword ptr [rsp + 36], 0 +LBB139_68: + cmp dword ptr [rsp + 36], 16777216 + jge LBB139_75 + mov dword ptr [rsp + 32], 0 +LBB139_70: + cmp dword ptr [rsp + 32], 4194304 + jge LBB139_73 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 3 + add rcx, rdx + add rcx, 33554432 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 36] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 3 + add rdx, r8 + add rdx, 67108864 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 36] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 3 + add r8, r9 + add r8, 100663296 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 32] + add eax, 4 + mov dword ptr [rsp + 32], eax + jmp LBB139_70 +LBB139_73: + jmp LBB139_74 +LBB139_74: + mov eax, dword ptr [rsp + 36] + add eax, 16777216 + mov dword ptr [rsp + 36], eax + jmp LBB139_68 +LBB139_75: + jmp LBB139_76 +LBB139_76: + vmovaps xmm6, xmmword ptr [rsp + 112] + vmovaps xmm7, xmmword ptr [rsp + 128] + vmovaps xmm8, xmmword ptr [rsp + 144] + vmovaps xmm9, xmmword ptr [rsp + 160] + vmovaps xmm10, xmmword ptr [rsp + 176] + vmovaps xmm11, xmmword ptr [rsp + 192] + vmovaps xmm12, xmmword ptr [rsp + 208] + vmovaps xmm13, xmmword ptr [rsp + 224] + vmovaps xmm14, xmmword ptr [rsp + 240] + vmovaps xmm15, xmmword ptr [rsp + 256] + add rsp, 280 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_24_recursive ENDP + +fht_helper_double_25_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 280 + .allocstack 280 + vmovaps xmmword ptr [rsp + 256], xmm15 + .savexmm128 xmm15, 256 + vmovaps xmmword ptr [rsp + 240], xmm14 + .savexmm128 xmm14, 240 + vmovaps xmmword ptr [rsp + 224], xmm13 + .savexmm128 xmm13, 224 + vmovaps xmmword ptr [rsp + 208], xmm12 + .savexmm128 xmm12, 208 + vmovaps xmmword ptr [rsp + 192], xmm11 + .savexmm128 xmm11, 192 + vmovaps xmmword ptr [rsp + 176], xmm10 + .savexmm128 xmm10, 176 + vmovaps xmmword ptr [rsp + 160], xmm9 + .savexmm128 xmm9, 160 + vmovaps xmmword ptr [rsp + 144], xmm8 + .savexmm128 xmm8, 144 + vmovaps xmmword ptr [rsp + 128], xmm7 + .savexmm128 xmm7, 128 + vmovaps xmmword ptr [rsp + 112], xmm6 + .savexmm128 xmm6, 112 + .endprolog + mov dword ptr [rsp + 108], edx + mov qword ptr [rsp + 96], rcx + cmp dword ptr [rsp + 108], 8 + jne LBB140_18 + mov dword ptr [rsp + 92], 0 +LBB140_2: + cmp dword ptr [rsp + 92], 256 + jge LBB140_9 + mov dword ptr [rsp + 88], 0 +LBB140_4: + cmp dword ptr [rsp + 88], 4 + jge LBB140_7 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 92] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 92] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 92] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 92] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 4 + mov dword ptr [rsp + 88], eax + jmp LBB140_4 +LBB140_7: + jmp LBB140_8 +LBB140_8: + mov eax, dword ptr [rsp + 92] + add eax, 32 + mov dword ptr [rsp + 92], eax + jmp LBB140_2 +LBB140_9: + mov dword ptr [rsp + 84], 0 +LBB140_10: + cmp dword ptr [rsp + 84], 256 + jge LBB140_17 + mov dword ptr [rsp + 80], 0 +LBB140_12: + cmp dword ptr [rsp + 80], 32 + jge LBB140_15 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 84] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 84] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 84] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 84] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 4 + mov dword ptr [rsp + 80], eax + jmp LBB140_12 +LBB140_15: + jmp LBB140_16 +LBB140_16: + mov eax, dword ptr [rsp + 84] + add eax, 256 + mov dword ptr [rsp + 84], eax + jmp LBB140_10 +LBB140_17: + jmp LBB140_78 +LBB140_18: + cmp dword ptr [rsp + 108], 11 + jne LBB140_28 + mov rcx, qword ptr [rsp + 96] + mov edx, 8 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2048 + mov edx, 8 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4096 + mov edx, 8 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 6144 + mov edx, 8 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8192 + mov edx, 8 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 10240 + mov edx, 8 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 12288 + mov edx, 8 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 14336 + mov edx, 8 + call fht_helper_double_25_recursive + mov dword ptr [rsp + 76], 0 +LBB140_20: + cmp dword ptr [rsp + 76], 2048 + jge LBB140_27 + mov dword ptr [rsp + 72], 0 +LBB140_22: + cmp dword ptr [rsp + 72], 256 + jge LBB140_25 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB140_22 +LBB140_25: + jmp LBB140_26 +LBB140_26: + mov eax, dword ptr [rsp + 76] + add eax, 2048 + mov dword ptr [rsp + 76], eax + jmp LBB140_20 +LBB140_27: + jmp LBB140_78 +LBB140_28: + cmp dword ptr [rsp + 108], 14 + jne LBB140_38 + mov rcx, qword ptr [rsp + 96] + mov edx, 11 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16384 + mov edx, 11 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 32768 + mov edx, 11 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 49152 + mov edx, 11 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 65536 + mov edx, 11 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 81920 + mov edx, 11 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 98304 + mov edx, 11 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 114688 + mov edx, 11 + call fht_helper_double_25_recursive + mov dword ptr [rsp + 68], 0 +LBB140_30: + cmp dword ptr [rsp + 68], 16384 + jge LBB140_37 + mov dword ptr [rsp + 64], 0 +LBB140_32: + cmp dword ptr [rsp + 64], 2048 + jge LBB140_35 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 114688 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB140_32 +LBB140_35: + jmp LBB140_36 +LBB140_36: + mov eax, dword ptr [rsp + 68] + add eax, 16384 + mov dword ptr [rsp + 68], eax + jmp LBB140_30 +LBB140_37: + jmp LBB140_78 +LBB140_38: + cmp dword ptr [rsp + 108], 17 + jne LBB140_48 + mov rcx, qword ptr [rsp + 96] + mov edx, 14 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 131072 + mov edx, 14 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 262144 + mov edx, 14 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 393216 + mov edx, 14 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 524288 + mov edx, 14 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 655360 + mov edx, 14 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 786432 + mov edx, 14 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 917504 + mov edx, 14 + call fht_helper_double_25_recursive + mov dword ptr [rsp + 60], 0 +LBB140_40: + cmp dword ptr [rsp + 60], 131072 + jge LBB140_47 + mov dword ptr [rsp + 56], 0 +LBB140_42: + cmp dword ptr [rsp + 56], 16384 + jge LBB140_45 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 917504 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB140_42 +LBB140_45: + jmp LBB140_46 +LBB140_46: + mov eax, dword ptr [rsp + 60] + add eax, 131072 + mov dword ptr [rsp + 60], eax + jmp LBB140_40 +LBB140_47: + jmp LBB140_78 +LBB140_48: + cmp dword ptr [rsp + 108], 20 + jne LBB140_58 + mov rcx, qword ptr [rsp + 96] + mov edx, 17 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1048576 + mov edx, 17 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2097152 + mov edx, 17 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3145728 + mov edx, 17 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4194304 + mov edx, 17 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 5242880 + mov edx, 17 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 6291456 + mov edx, 17 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 7340032 + mov edx, 17 + call fht_helper_double_25_recursive + mov dword ptr [rsp + 52], 0 +LBB140_50: + cmp dword ptr [rsp + 52], 1048576 + jge LBB140_57 + mov dword ptr [rsp + 48], 0 +LBB140_52: + cmp dword ptr [rsp + 48], 131072 + jge LBB140_55 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 3145728 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 4194304 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 5242880 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 6291456 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 7340032 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB140_52 +LBB140_55: + jmp LBB140_56 +LBB140_56: + mov eax, dword ptr [rsp + 52] + add eax, 1048576 + mov dword ptr [rsp + 52], eax + jmp LBB140_50 +LBB140_57: + jmp LBB140_78 +LBB140_58: + cmp dword ptr [rsp + 108], 23 + jne LBB140_68 + mov rcx, qword ptr [rsp + 96] + mov edx, 20 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8388608 + mov edx, 20 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16777216 + mov edx, 20 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 25165824 + mov edx, 20 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 33554432 + mov edx, 20 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 41943040 + mov edx, 20 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 50331648 + mov edx, 20 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 58720256 + mov edx, 20 + call fht_helper_double_25_recursive + mov dword ptr [rsp + 44], 0 +LBB140_60: + cmp dword ptr [rsp + 44], 8388608 + jge LBB140_67 + mov dword ptr [rsp + 40], 0 +LBB140_62: + cmp dword ptr [rsp + 40], 1048576 + jge LBB140_65 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 8388608 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 16777216 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 25165824 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 44] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 3 + add r9, r10 + add r9, 33554432 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 44] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 3 + add r10, r11 + add r10, 41943040 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 3 + add r11, rsi + add r11, 50331648 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 3 + add rsi, rdi + add rsi, 58720256 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB140_62 +LBB140_65: + jmp LBB140_66 +LBB140_66: + mov eax, dword ptr [rsp + 44] + add eax, 8388608 + mov dword ptr [rsp + 44], eax + jmp LBB140_60 +LBB140_67: + jmp LBB140_78 +LBB140_68: + cmp dword ptr [rsp + 108], 25 + jne LBB140_78 + mov rcx, qword ptr [rsp + 96] + mov edx, 23 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 67108864 + mov edx, 23 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 134217728 + mov edx, 23 + call fht_helper_double_25_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 201326592 + mov edx, 23 + call fht_helper_double_25_recursive + mov dword ptr [rsp + 36], 0 +LBB140_70: + cmp dword ptr [rsp + 36], 33554432 + jge LBB140_77 + mov dword ptr [rsp + 32], 0 +LBB140_72: + cmp dword ptr [rsp + 32], 8388608 + jge LBB140_75 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 3 + add rcx, rdx + add rcx, 67108864 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 36] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 3 + add rdx, r8 + add rdx, 134217728 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 36] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 3 + add r8, r9 + add r8, 201326592 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 32] + add eax, 4 + mov dword ptr [rsp + 32], eax + jmp LBB140_72 +LBB140_75: + jmp LBB140_76 +LBB140_76: + mov eax, dword ptr [rsp + 36] + add eax, 33554432 + mov dword ptr [rsp + 36], eax + jmp LBB140_70 +LBB140_77: + jmp LBB140_78 +LBB140_78: + vmovaps xmm6, xmmword ptr [rsp + 112] + vmovaps xmm7, xmmword ptr [rsp + 128] + vmovaps xmm8, xmmword ptr [rsp + 144] + vmovaps xmm9, xmmword ptr [rsp + 160] + vmovaps xmm10, xmmword ptr [rsp + 176] + vmovaps xmm11, xmmword ptr [rsp + 192] + vmovaps xmm12, xmmword ptr [rsp + 208] + vmovaps xmm13, xmmword ptr [rsp + 224] + vmovaps xmm14, xmmword ptr [rsp + 240] + vmovaps xmm15, xmmword ptr [rsp + 256] + add rsp, 280 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_25_recursive ENDP + +fht_helper_double_26_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 280 + .allocstack 280 + vmovaps xmmword ptr [rsp + 256], xmm15 + .savexmm128 xmm15, 256 + vmovaps xmmword ptr [rsp + 240], xmm14 + .savexmm128 xmm14, 240 + vmovaps xmmword ptr [rsp + 224], xmm13 + .savexmm128 xmm13, 224 + vmovaps xmmword ptr [rsp + 208], xmm12 + .savexmm128 xmm12, 208 + vmovaps xmmword ptr [rsp + 192], xmm11 + .savexmm128 xmm11, 192 + vmovaps xmmword ptr [rsp + 176], xmm10 + .savexmm128 xmm10, 176 + vmovaps xmmword ptr [rsp + 160], xmm9 + .savexmm128 xmm9, 160 + vmovaps xmmword ptr [rsp + 144], xmm8 + .savexmm128 xmm8, 144 + vmovaps xmmword ptr [rsp + 128], xmm7 + .savexmm128 xmm7, 128 + vmovaps xmmword ptr [rsp + 112], xmm6 + .savexmm128 xmm6, 112 + .endprolog + mov dword ptr [rsp + 108], edx + mov qword ptr [rsp + 96], rcx + cmp dword ptr [rsp + 108], 11 + jne LBB141_26 + mov dword ptr [rsp + 92], 0 +LBB141_2: + cmp dword ptr [rsp + 92], 2048 + jge LBB141_9 + mov dword ptr [rsp + 88], 0 +LBB141_4: + cmp dword ptr [rsp + 88], 4 + jge LBB141_7 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 92] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 92] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 92] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 92] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 4 + mov dword ptr [rsp + 88], eax + jmp LBB141_4 +LBB141_7: + jmp LBB141_8 +LBB141_8: + mov eax, dword ptr [rsp + 92] + add eax, 32 + mov dword ptr [rsp + 92], eax + jmp LBB141_2 +LBB141_9: + mov dword ptr [rsp + 84], 0 +LBB141_10: + cmp dword ptr [rsp + 84], 2048 + jge LBB141_17 + mov dword ptr [rsp + 80], 0 +LBB141_12: + cmp dword ptr [rsp + 80], 32 + jge LBB141_15 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 84] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 84] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 84] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 84] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 4 + mov dword ptr [rsp + 80], eax + jmp LBB141_12 +LBB141_15: + jmp LBB141_16 +LBB141_16: + mov eax, dword ptr [rsp + 84] + add eax, 256 + mov dword ptr [rsp + 84], eax + jmp LBB141_10 +LBB141_17: + mov dword ptr [rsp + 76], 0 +LBB141_18: + cmp dword ptr [rsp + 76], 2048 + jge LBB141_25 + mov dword ptr [rsp + 72], 0 +LBB141_20: + cmp dword ptr [rsp + 72], 256 + jge LBB141_23 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB141_20 +LBB141_23: + jmp LBB141_24 +LBB141_24: + mov eax, dword ptr [rsp + 76] + add eax, 2048 + mov dword ptr [rsp + 76], eax + jmp LBB141_18 +LBB141_25: + jmp LBB141_76 +LBB141_26: + cmp dword ptr [rsp + 108], 14 + jne LBB141_36 + mov rcx, qword ptr [rsp + 96] + mov edx, 11 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16384 + mov edx, 11 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 32768 + mov edx, 11 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 49152 + mov edx, 11 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 65536 + mov edx, 11 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 81920 + mov edx, 11 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 98304 + mov edx, 11 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 114688 + mov edx, 11 + call fht_helper_double_26_recursive + mov dword ptr [rsp + 68], 0 +LBB141_28: + cmp dword ptr [rsp + 68], 16384 + jge LBB141_35 + mov dword ptr [rsp + 64], 0 +LBB141_30: + cmp dword ptr [rsp + 64], 2048 + jge LBB141_33 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 114688 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB141_30 +LBB141_33: + jmp LBB141_34 +LBB141_34: + mov eax, dword ptr [rsp + 68] + add eax, 16384 + mov dword ptr [rsp + 68], eax + jmp LBB141_28 +LBB141_35: + jmp LBB141_76 +LBB141_36: + cmp dword ptr [rsp + 108], 17 + jne LBB141_46 + mov rcx, qword ptr [rsp + 96] + mov edx, 14 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 131072 + mov edx, 14 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 262144 + mov edx, 14 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 393216 + mov edx, 14 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 524288 + mov edx, 14 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 655360 + mov edx, 14 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 786432 + mov edx, 14 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 917504 + mov edx, 14 + call fht_helper_double_26_recursive + mov dword ptr [rsp + 60], 0 +LBB141_38: + cmp dword ptr [rsp + 60], 131072 + jge LBB141_45 + mov dword ptr [rsp + 56], 0 +LBB141_40: + cmp dword ptr [rsp + 56], 16384 + jge LBB141_43 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 917504 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB141_40 +LBB141_43: + jmp LBB141_44 +LBB141_44: + mov eax, dword ptr [rsp + 60] + add eax, 131072 + mov dword ptr [rsp + 60], eax + jmp LBB141_38 +LBB141_45: + jmp LBB141_76 +LBB141_46: + cmp dword ptr [rsp + 108], 20 + jne LBB141_56 + mov rcx, qword ptr [rsp + 96] + mov edx, 17 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 1048576 + mov edx, 17 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 2097152 + mov edx, 17 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 3145728 + mov edx, 17 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 4194304 + mov edx, 17 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 5242880 + mov edx, 17 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 6291456 + mov edx, 17 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 7340032 + mov edx, 17 + call fht_helper_double_26_recursive + mov dword ptr [rsp + 52], 0 +LBB141_48: + cmp dword ptr [rsp + 52], 1048576 + jge LBB141_55 + mov dword ptr [rsp + 48], 0 +LBB141_50: + cmp dword ptr [rsp + 48], 131072 + jge LBB141_53 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 3145728 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 4194304 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 5242880 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 6291456 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 7340032 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB141_50 +LBB141_53: + jmp LBB141_54 +LBB141_54: + mov eax, dword ptr [rsp + 52] + add eax, 1048576 + mov dword ptr [rsp + 52], eax + jmp LBB141_48 +LBB141_55: + jmp LBB141_76 +LBB141_56: + cmp dword ptr [rsp + 108], 23 + jne LBB141_66 + mov rcx, qword ptr [rsp + 96] + mov edx, 20 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 8388608 + mov edx, 20 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 16777216 + mov edx, 20 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 25165824 + mov edx, 20 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 33554432 + mov edx, 20 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 41943040 + mov edx, 20 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 50331648 + mov edx, 20 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 58720256 + mov edx, 20 + call fht_helper_double_26_recursive + mov dword ptr [rsp + 44], 0 +LBB141_58: + cmp dword ptr [rsp + 44], 8388608 + jge LBB141_65 + mov dword ptr [rsp + 40], 0 +LBB141_60: + cmp dword ptr [rsp + 40], 1048576 + jge LBB141_63 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 8388608 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 16777216 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 25165824 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 44] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 3 + add r9, r10 + add r9, 33554432 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 44] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 3 + add r10, r11 + add r10, 41943040 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 3 + add r11, rsi + add r11, 50331648 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 3 + add rsi, rdi + add rsi, 58720256 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB141_60 +LBB141_63: + jmp LBB141_64 +LBB141_64: + mov eax, dword ptr [rsp + 44] + add eax, 8388608 + mov dword ptr [rsp + 44], eax + jmp LBB141_58 +LBB141_65: + jmp LBB141_76 +LBB141_66: + cmp dword ptr [rsp + 108], 26 + jne LBB141_76 + mov rcx, qword ptr [rsp + 96] + mov edx, 23 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 67108864 + mov edx, 23 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 134217728 + mov edx, 23 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 201326592 + mov edx, 23 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 268435456 + mov edx, 23 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 335544320 + mov edx, 23 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 402653184 + mov edx, 23 + call fht_helper_double_26_recursive + mov rcx, qword ptr [rsp + 96] + add rcx, 469762048 + mov edx, 23 + call fht_helper_double_26_recursive + mov dword ptr [rsp + 36], 0 +LBB141_68: + cmp dword ptr [rsp + 36], 67108864 + jge LBB141_75 + mov dword ptr [rsp + 32], 0 +LBB141_70: + cmp dword ptr [rsp + 32], 8388608 + jge LBB141_73 + mov rax, qword ptr [rsp + 96] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 96] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 3 + add rcx, rdx + add rcx, 67108864 + mov rdx, qword ptr [rsp + 96] + movsxd r8, dword ptr [rsp + 36] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 3 + add rdx, r8 + add rdx, 134217728 + mov r8, qword ptr [rsp + 96] + movsxd r9, dword ptr [rsp + 36] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 3 + add r8, r9 + add r8, 201326592 + mov r9, qword ptr [rsp + 96] + movsxd r10, dword ptr [rsp + 36] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 32] + shl r10, 3 + add r9, r10 + add r9, 268435456 + mov r10, qword ptr [rsp + 96] + movsxd r11, dword ptr [rsp + 36] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 32] + shl r11, 3 + add r10, r11 + add r10, 335544320 + mov r11, qword ptr [rsp + 96] + movsxd rsi, dword ptr [rsp + 36] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 32] + shl rsi, 3 + add r11, rsi + add r11, 402653184 + mov rsi, qword ptr [rsp + 96] + movsxd rdi, dword ptr [rsp + 36] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 32] + shl rdi, 3 + add rsi, rdi + add rsi, 469762048 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 32] + add eax, 4 + mov dword ptr [rsp + 32], eax + jmp LBB141_70 +LBB141_73: + jmp LBB141_74 +LBB141_74: + mov eax, dword ptr [rsp + 36] + add eax, 67108864 + mov dword ptr [rsp + 36], eax + jmp LBB141_68 +LBB141_75: + jmp LBB141_76 +LBB141_76: + vmovaps xmm6, xmmword ptr [rsp + 112] + vmovaps xmm7, xmmword ptr [rsp + 128] + vmovaps xmm8, xmmword ptr [rsp + 144] + vmovaps xmm9, xmmword ptr [rsp + 160] + vmovaps xmm10, xmmword ptr [rsp + 176] + vmovaps xmm11, xmmword ptr [rsp + 192] + vmovaps xmm12, xmmword ptr [rsp + 208] + vmovaps xmm13, xmmword ptr [rsp + 224] + vmovaps xmm14, xmmword ptr [rsp + 240] + vmovaps xmm15, xmmword ptr [rsp + 256] + add rsp, 280 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_26_recursive ENDP + +fht_helper_double_27_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 296 + .allocstack 296 + vmovaps xmmword ptr [rsp + 272], xmm15 + .savexmm128 xmm15, 272 + vmovaps xmmword ptr [rsp + 256], xmm14 + .savexmm128 xmm14, 256 + vmovaps xmmword ptr [rsp + 240], xmm13 + .savexmm128 xmm13, 240 + vmovaps xmmword ptr [rsp + 224], xmm12 + .savexmm128 xmm12, 224 + vmovaps xmmword ptr [rsp + 208], xmm11 + .savexmm128 xmm11, 208 + vmovaps xmmword ptr [rsp + 192], xmm10 + .savexmm128 xmm10, 192 + vmovaps xmmword ptr [rsp + 176], xmm9 + .savexmm128 xmm9, 176 + vmovaps xmmword ptr [rsp + 160], xmm8 + .savexmm128 xmm8, 160 + vmovaps xmmword ptr [rsp + 144], xmm7 + .savexmm128 xmm7, 144 + vmovaps xmmword ptr [rsp + 128], xmm6 + .savexmm128 xmm6, 128 + .endprolog + mov dword ptr [rsp + 124], edx + mov qword ptr [rsp + 112], rcx + cmp dword ptr [rsp + 124], 9 + jne LBB142_26 + mov dword ptr [rsp + 108], 0 +LBB142_2: + cmp dword ptr [rsp + 108], 512 + jge LBB142_9 + mov dword ptr [rsp + 104], 0 +LBB142_4: + cmp dword ptr [rsp + 104], 4 + jge LBB142_7 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 108] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 104] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 108] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 104] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 108] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 104] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 108] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 104] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 108] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 104] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 108] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 104] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 108] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 104] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 108] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 104] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 104] + add eax, 4 + mov dword ptr [rsp + 104], eax + jmp LBB142_4 +LBB142_7: + jmp LBB142_8 +LBB142_8: + mov eax, dword ptr [rsp + 108] + add eax, 32 + mov dword ptr [rsp + 108], eax + jmp LBB142_2 +LBB142_9: + mov dword ptr [rsp + 100], 0 +LBB142_10: + cmp dword ptr [rsp + 100], 512 + jge LBB142_17 + mov dword ptr [rsp + 96], 0 +LBB142_12: + cmp dword ptr [rsp + 96], 32 + jge LBB142_15 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 100] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 96] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 100] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 96] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 100] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 96] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 100] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 96] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 100] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 96] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 100] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 96] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 100] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 96] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 100] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 96] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 96] + add eax, 4 + mov dword ptr [rsp + 96], eax + jmp LBB142_12 +LBB142_15: + jmp LBB142_16 +LBB142_16: + mov eax, dword ptr [rsp + 100] + add eax, 256 + mov dword ptr [rsp + 100], eax + jmp LBB142_10 +LBB142_17: + mov dword ptr [rsp + 92], 0 +LBB142_18: + cmp dword ptr [rsp + 92], 512 + jge LBB142_25 + mov dword ptr [rsp + 88], 0 +LBB142_20: + cmp dword ptr [rsp + 88], 256 + jge LBB142_23 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp + 88] + add eax, 4 + mov dword ptr [rsp + 88], eax + jmp LBB142_20 +LBB142_23: + jmp LBB142_24 +LBB142_24: + mov eax, dword ptr [rsp + 92] + add eax, 512 + mov dword ptr [rsp + 92], eax + jmp LBB142_18 +LBB142_25: + jmp LBB142_86 +LBB142_26: + cmp dword ptr [rsp + 124], 12 + jne LBB142_36 + mov rcx, qword ptr [rsp + 112] + mov edx, 9 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 4096 + mov edx, 9 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 8192 + mov edx, 9 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 12288 + mov edx, 9 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 16384 + mov edx, 9 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 20480 + mov edx, 9 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 24576 + mov edx, 9 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 28672 + mov edx, 9 + call fht_helper_double_27_recursive + mov dword ptr [rsp + 84], 0 +LBB142_28: + cmp dword ptr [rsp + 84], 4096 + jge LBB142_35 + mov dword ptr [rsp + 80], 0 +LBB142_30: + cmp dword ptr [rsp + 80], 512 + jge LBB142_33 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 3 + add rcx, rdx + add rcx, 4096 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 84] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 3 + add rdx, r8 + add rdx, 8192 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 84] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 3 + add r8, r9 + add r8, 12288 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 84] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 3 + add r9, r10 + add r9, 16384 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 84] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 3 + add r10, r11 + add r10, 20480 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 3 + add r11, rsi + add r11, 24576 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 3 + add rsi, rdi + add rsi, 28672 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 4 + mov dword ptr [rsp + 80], eax + jmp LBB142_30 +LBB142_33: + jmp LBB142_34 +LBB142_34: + mov eax, dword ptr [rsp + 84] + add eax, 4096 + mov dword ptr [rsp + 84], eax + jmp LBB142_28 +LBB142_35: + jmp LBB142_86 +LBB142_36: + cmp dword ptr [rsp + 124], 15 + jne LBB142_46 + mov rcx, qword ptr [rsp + 112] + mov edx, 12 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 32768 + mov edx, 12 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 65536 + mov edx, 12 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 98304 + mov edx, 12 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 131072 + mov edx, 12 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 163840 + mov edx, 12 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 196608 + mov edx, 12 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 229376 + mov edx, 12 + call fht_helper_double_27_recursive + mov dword ptr [rsp + 76], 0 +LBB142_38: + cmp dword ptr [rsp + 76], 32768 + jge LBB142_45 + mov dword ptr [rsp + 72], 0 +LBB142_40: + cmp dword ptr [rsp + 72], 4096 + jge LBB142_43 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 32768 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 65536 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 98304 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 131072 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 163840 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 196608 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 229376 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB142_40 +LBB142_43: + jmp LBB142_44 +LBB142_44: + mov eax, dword ptr [rsp + 76] + add eax, 32768 + mov dword ptr [rsp + 76], eax + jmp LBB142_38 +LBB142_45: + jmp LBB142_86 +LBB142_46: + cmp dword ptr [rsp + 124], 18 + jne LBB142_56 + mov rcx, qword ptr [rsp + 112] + mov edx, 15 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 262144 + mov edx, 15 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 524288 + mov edx, 15 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 786432 + mov edx, 15 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1048576 + mov edx, 15 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1310720 + mov edx, 15 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1572864 + mov edx, 15 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1835008 + mov edx, 15 + call fht_helper_double_27_recursive + mov dword ptr [rsp + 68], 0 +LBB142_48: + cmp dword ptr [rsp + 68], 262144 + jge LBB142_55 + mov dword ptr [rsp + 64], 0 +LBB142_50: + cmp dword ptr [rsp + 64], 32768 + jge LBB142_53 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 262144 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 524288 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 786432 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 1048576 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 1310720 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 1572864 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 1835008 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB142_50 +LBB142_53: + jmp LBB142_54 +LBB142_54: + mov eax, dword ptr [rsp + 68] + add eax, 262144 + mov dword ptr [rsp + 68], eax + jmp LBB142_48 +LBB142_55: + jmp LBB142_86 +LBB142_56: + cmp dword ptr [rsp + 124], 21 + jne LBB142_66 + mov rcx, qword ptr [rsp + 112] + mov edx, 18 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 2097152 + mov edx, 18 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 4194304 + mov edx, 18 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 6291456 + mov edx, 18 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 8388608 + mov edx, 18 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 10485760 + mov edx, 18 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 12582912 + mov edx, 18 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 14680064 + mov edx, 18 + call fht_helper_double_27_recursive + mov dword ptr [rsp + 60], 0 +LBB142_58: + cmp dword ptr [rsp + 60], 2097152 + jge LBB142_65 + mov dword ptr [rsp + 56], 0 +LBB142_60: + cmp dword ptr [rsp + 56], 262144 + jge LBB142_63 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 2097152 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 4194304 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 6291456 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 8388608 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 10485760 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 12582912 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 14680064 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB142_60 +LBB142_63: + jmp LBB142_64 +LBB142_64: + mov eax, dword ptr [rsp + 60] + add eax, 2097152 + mov dword ptr [rsp + 60], eax + jmp LBB142_58 +LBB142_65: + jmp LBB142_86 +LBB142_66: + cmp dword ptr [rsp + 124], 24 + jne LBB142_76 + mov rcx, qword ptr [rsp + 112] + mov edx, 21 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 16777216 + mov edx, 21 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 33554432 + mov edx, 21 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 50331648 + mov edx, 21 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 67108864 + mov edx, 21 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 83886080 + mov edx, 21 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 100663296 + mov edx, 21 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 117440512 + mov edx, 21 + call fht_helper_double_27_recursive + mov dword ptr [rsp + 52], 0 +LBB142_68: + cmp dword ptr [rsp + 52], 16777216 + jge LBB142_75 + mov dword ptr [rsp + 48], 0 +LBB142_70: + cmp dword ptr [rsp + 48], 2097152 + jge LBB142_73 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 16777216 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 33554432 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 50331648 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 67108864 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 83886080 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 100663296 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 117440512 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB142_70 +LBB142_73: + jmp LBB142_74 +LBB142_74: + mov eax, dword ptr [rsp + 52] + add eax, 16777216 + mov dword ptr [rsp + 52], eax + jmp LBB142_68 +LBB142_75: + jmp LBB142_86 +LBB142_76: + cmp dword ptr [rsp + 124], 27 + jne LBB142_86 + mov rcx, qword ptr [rsp + 112] + mov edx, 24 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 134217728 + mov edx, 24 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 268435456 + mov edx, 24 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 402653184 + mov edx, 24 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 536870912 + mov edx, 24 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 671088640 + mov edx, 24 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 805306368 + mov edx, 24 + call fht_helper_double_27_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 939524096 + mov edx, 24 + call fht_helper_double_27_recursive + mov dword ptr [rsp + 44], 0 +LBB142_78: + cmp dword ptr [rsp + 44], 134217728 + jge LBB142_85 + mov dword ptr [rsp + 40], 0 +LBB142_80: + cmp dword ptr [rsp + 40], 16777216 + jge LBB142_83 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 134217728 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 268435456 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 402653184 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 44] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 3 + add r9, r10 + add r9, 536870912 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 44] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 3 + add r10, r11 + add r10, 671088640 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 3 + add r11, rsi + add r11, 805306368 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 3 + add rsi, rdi + add rsi, 939524096 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB142_80 +LBB142_83: + jmp LBB142_84 +LBB142_84: + mov eax, dword ptr [rsp + 44] + add eax, 134217728 + mov dword ptr [rsp + 44], eax + jmp LBB142_78 +LBB142_85: + jmp LBB142_86 +LBB142_86: + vmovaps xmm6, xmmword ptr [rsp + 128] + vmovaps xmm7, xmmword ptr [rsp + 144] + vmovaps xmm8, xmmword ptr [rsp + 160] + vmovaps xmm9, xmmword ptr [rsp + 176] + vmovaps xmm10, xmmword ptr [rsp + 192] + vmovaps xmm11, xmmword ptr [rsp + 208] + vmovaps xmm12, xmmword ptr [rsp + 224] + vmovaps xmm13, xmmword ptr [rsp + 240] + vmovaps xmm14, xmmword ptr [rsp + 256] + vmovaps xmm15, xmmword ptr [rsp + 272] + add rsp, 296 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_27_recursive ENDP + +fht_helper_double_28_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 296 + .allocstack 296 + vmovaps xmmword ptr [rsp + 272], xmm15 + .savexmm128 xmm15, 272 + vmovaps xmmword ptr [rsp + 256], xmm14 + .savexmm128 xmm14, 256 + vmovaps xmmword ptr [rsp + 240], xmm13 + .savexmm128 xmm13, 240 + vmovaps xmmword ptr [rsp + 224], xmm12 + .savexmm128 xmm12, 224 + vmovaps xmmword ptr [rsp + 208], xmm11 + .savexmm128 xmm11, 208 + vmovaps xmmword ptr [rsp + 192], xmm10 + .savexmm128 xmm10, 192 + vmovaps xmmword ptr [rsp + 176], xmm9 + .savexmm128 xmm9, 176 + vmovaps xmmword ptr [rsp + 160], xmm8 + .savexmm128 xmm8, 160 + vmovaps xmmword ptr [rsp + 144], xmm7 + .savexmm128 xmm7, 144 + vmovaps xmmword ptr [rsp + 128], xmm6 + .savexmm128 xmm6, 128 + .endprolog + mov dword ptr [rsp + 124], edx + mov qword ptr [rsp + 112], rcx + cmp dword ptr [rsp + 124], 11 + jne LBB143_26 + mov dword ptr [rsp + 108], 0 +LBB143_2: + cmp dword ptr [rsp + 108], 2048 + jge LBB143_9 + mov dword ptr [rsp + 104], 0 +LBB143_4: + cmp dword ptr [rsp + 104], 4 + jge LBB143_7 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 108] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 104] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 108] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 104] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 108] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 104] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 108] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 104] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 108] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 104] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 108] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 104] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 108] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 104] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 108] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 104] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 104] + add eax, 4 + mov dword ptr [rsp + 104], eax + jmp LBB143_4 +LBB143_7: + jmp LBB143_8 +LBB143_8: + mov eax, dword ptr [rsp + 108] + add eax, 32 + mov dword ptr [rsp + 108], eax + jmp LBB143_2 +LBB143_9: + mov dword ptr [rsp + 100], 0 +LBB143_10: + cmp dword ptr [rsp + 100], 2048 + jge LBB143_17 + mov dword ptr [rsp + 96], 0 +LBB143_12: + cmp dword ptr [rsp + 96], 32 + jge LBB143_15 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 100] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 96] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 100] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 96] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 100] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 96] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 100] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 96] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 100] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 96] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 100] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 96] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 100] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 96] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 100] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 96] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 96] + add eax, 4 + mov dword ptr [rsp + 96], eax + jmp LBB143_12 +LBB143_15: + jmp LBB143_16 +LBB143_16: + mov eax, dword ptr [rsp + 100] + add eax, 256 + mov dword ptr [rsp + 100], eax + jmp LBB143_10 +LBB143_17: + mov dword ptr [rsp + 92], 0 +LBB143_18: + cmp dword ptr [rsp + 92], 2048 + jge LBB143_25 + mov dword ptr [rsp + 88], 0 +LBB143_20: + cmp dword ptr [rsp + 88], 256 + jge LBB143_23 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 92] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 92] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 92] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 92] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 4 + mov dword ptr [rsp + 88], eax + jmp LBB143_20 +LBB143_23: + jmp LBB143_24 +LBB143_24: + mov eax, dword ptr [rsp + 92] + add eax, 2048 + mov dword ptr [rsp + 92], eax + jmp LBB143_18 +LBB143_25: + jmp LBB143_86 +LBB143_26: + cmp dword ptr [rsp + 124], 14 + jne LBB143_36 + mov rcx, qword ptr [rsp + 112] + mov edx, 11 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 16384 + mov edx, 11 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 32768 + mov edx, 11 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 49152 + mov edx, 11 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 65536 + mov edx, 11 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 81920 + mov edx, 11 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 98304 + mov edx, 11 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 114688 + mov edx, 11 + call fht_helper_double_28_recursive + mov dword ptr [rsp + 84], 0 +LBB143_28: + cmp dword ptr [rsp + 84], 16384 + jge LBB143_35 + mov dword ptr [rsp + 80], 0 +LBB143_30: + cmp dword ptr [rsp + 80], 2048 + jge LBB143_33 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 3 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 84] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 3 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 84] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 3 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 84] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 3 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 84] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 3 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 3 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 3 + add rsi, rdi + add rsi, 114688 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 4 + mov dword ptr [rsp + 80], eax + jmp LBB143_30 +LBB143_33: + jmp LBB143_34 +LBB143_34: + mov eax, dword ptr [rsp + 84] + add eax, 16384 + mov dword ptr [rsp + 84], eax + jmp LBB143_28 +LBB143_35: + jmp LBB143_86 +LBB143_36: + cmp dword ptr [rsp + 124], 17 + jne LBB143_46 + mov rcx, qword ptr [rsp + 112] + mov edx, 14 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 131072 + mov edx, 14 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 262144 + mov edx, 14 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 393216 + mov edx, 14 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 524288 + mov edx, 14 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 655360 + mov edx, 14 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 786432 + mov edx, 14 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 917504 + mov edx, 14 + call fht_helper_double_28_recursive + mov dword ptr [rsp + 76], 0 +LBB143_38: + cmp dword ptr [rsp + 76], 131072 + jge LBB143_45 + mov dword ptr [rsp + 72], 0 +LBB143_40: + cmp dword ptr [rsp + 72], 16384 + jge LBB143_43 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 917504 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB143_40 +LBB143_43: + jmp LBB143_44 +LBB143_44: + mov eax, dword ptr [rsp + 76] + add eax, 131072 + mov dword ptr [rsp + 76], eax + jmp LBB143_38 +LBB143_45: + jmp LBB143_86 +LBB143_46: + cmp dword ptr [rsp + 124], 20 + jne LBB143_56 + mov rcx, qword ptr [rsp + 112] + mov edx, 17 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1048576 + mov edx, 17 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 2097152 + mov edx, 17 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 3145728 + mov edx, 17 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 4194304 + mov edx, 17 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 5242880 + mov edx, 17 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 6291456 + mov edx, 17 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 7340032 + mov edx, 17 + call fht_helper_double_28_recursive + mov dword ptr [rsp + 68], 0 +LBB143_48: + cmp dword ptr [rsp + 68], 1048576 + jge LBB143_55 + mov dword ptr [rsp + 64], 0 +LBB143_50: + cmp dword ptr [rsp + 64], 131072 + jge LBB143_53 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 3145728 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 4194304 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 5242880 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 6291456 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 7340032 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB143_50 +LBB143_53: + jmp LBB143_54 +LBB143_54: + mov eax, dword ptr [rsp + 68] + add eax, 1048576 + mov dword ptr [rsp + 68], eax + jmp LBB143_48 +LBB143_55: + jmp LBB143_86 +LBB143_56: + cmp dword ptr [rsp + 124], 23 + jne LBB143_66 + mov rcx, qword ptr [rsp + 112] + mov edx, 20 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 8388608 + mov edx, 20 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 16777216 + mov edx, 20 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 25165824 + mov edx, 20 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 33554432 + mov edx, 20 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 41943040 + mov edx, 20 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 50331648 + mov edx, 20 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 58720256 + mov edx, 20 + call fht_helper_double_28_recursive + mov dword ptr [rsp + 60], 0 +LBB143_58: + cmp dword ptr [rsp + 60], 8388608 + jge LBB143_65 + mov dword ptr [rsp + 56], 0 +LBB143_60: + cmp dword ptr [rsp + 56], 1048576 + jge LBB143_63 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 8388608 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 16777216 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 25165824 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 33554432 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 41943040 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 50331648 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 58720256 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB143_60 +LBB143_63: + jmp LBB143_64 +LBB143_64: + mov eax, dword ptr [rsp + 60] + add eax, 8388608 + mov dword ptr [rsp + 60], eax + jmp LBB143_58 +LBB143_65: + jmp LBB143_86 +LBB143_66: + cmp dword ptr [rsp + 124], 26 + jne LBB143_76 + mov rcx, qword ptr [rsp + 112] + mov edx, 23 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 67108864 + mov edx, 23 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 134217728 + mov edx, 23 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 201326592 + mov edx, 23 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 268435456 + mov edx, 23 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 335544320 + mov edx, 23 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 402653184 + mov edx, 23 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 469762048 + mov edx, 23 + call fht_helper_double_28_recursive + mov dword ptr [rsp + 52], 0 +LBB143_68: + cmp dword ptr [rsp + 52], 67108864 + jge LBB143_75 + mov dword ptr [rsp + 48], 0 +LBB143_70: + cmp dword ptr [rsp + 48], 8388608 + jge LBB143_73 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 67108864 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 134217728 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 201326592 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 268435456 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 335544320 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 402653184 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 469762048 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB143_70 +LBB143_73: + jmp LBB143_74 +LBB143_74: + mov eax, dword ptr [rsp + 52] + add eax, 67108864 + mov dword ptr [rsp + 52], eax + jmp LBB143_68 +LBB143_75: + jmp LBB143_86 +LBB143_76: + cmp dword ptr [rsp + 124], 28 + jne LBB143_86 + mov rcx, qword ptr [rsp + 112] + mov edx, 26 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 536870912 + mov edx, 26 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1073741824 + mov edx, 26 + call fht_helper_double_28_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1610612736 + mov edx, 26 + call fht_helper_double_28_recursive + mov dword ptr [rsp + 44], 0 +LBB143_78: + cmp dword ptr [rsp + 44], 268435456 + jge LBB143_85 + mov dword ptr [rsp + 40], 0 +LBB143_80: + cmp dword ptr [rsp + 40], 67108864 + jge LBB143_83 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 536870912 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 1073741824 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 1610612736 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vmovupd ymmword ptr [rax], ymm0 + vmovupd ymmword ptr [rcx], ymm1 + vmovupd ymmword ptr [rdx], ymm2 + vmovupd ymmword ptr [r8], ymm3 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB143_80 +LBB143_83: + jmp LBB143_84 +LBB143_84: + mov eax, dword ptr [rsp + 44] + add eax, 268435456 + mov dword ptr [rsp + 44], eax + jmp LBB143_78 +LBB143_85: + jmp LBB143_86 +LBB143_86: + vmovaps xmm6, xmmword ptr [rsp + 128] + vmovaps xmm7, xmmword ptr [rsp + 144] + vmovaps xmm8, xmmword ptr [rsp + 160] + vmovaps xmm9, xmmword ptr [rsp + 176] + vmovaps xmm10, xmmword ptr [rsp + 192] + vmovaps xmm11, xmmword ptr [rsp + 208] + vmovaps xmm12, xmmword ptr [rsp + 224] + vmovaps xmm13, xmmword ptr [rsp + 240] + vmovaps xmm14, xmmword ptr [rsp + 256] + vmovaps xmm15, xmmword ptr [rsp + 272] + add rsp, 296 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_28_recursive ENDP + +fht_helper_double_29_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 296 + .allocstack 296 + vmovaps xmmword ptr [rsp + 272], xmm15 + .savexmm128 xmm15, 272 + vmovaps xmmword ptr [rsp + 256], xmm14 + .savexmm128 xmm14, 256 + vmovaps xmmword ptr [rsp + 240], xmm13 + .savexmm128 xmm13, 240 + vmovaps xmmword ptr [rsp + 224], xmm12 + .savexmm128 xmm12, 224 + vmovaps xmmword ptr [rsp + 208], xmm11 + .savexmm128 xmm11, 208 + vmovaps xmmword ptr [rsp + 192], xmm10 + .savexmm128 xmm10, 192 + vmovaps xmmword ptr [rsp + 176], xmm9 + .savexmm128 xmm9, 176 + vmovaps xmmword ptr [rsp + 160], xmm8 + .savexmm128 xmm8, 160 + vmovaps xmmword ptr [rsp + 144], xmm7 + .savexmm128 xmm7, 144 + vmovaps xmmword ptr [rsp + 128], xmm6 + .savexmm128 xmm6, 128 + .endprolog + mov dword ptr [rsp + 124], edx + mov qword ptr [rsp + 112], rcx + cmp dword ptr [rsp + 124], 11 + jne LBB144_26 + mov dword ptr [rsp + 108], 0 +LBB144_2: + cmp dword ptr [rsp + 108], 2048 + jge LBB144_9 + mov dword ptr [rsp + 104], 0 +LBB144_4: + cmp dword ptr [rsp + 104], 4 + jge LBB144_7 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 108] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 104] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 108] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 104] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 108] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 104] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 108] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 104] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 108] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 104] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 108] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 104] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 108] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 104] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 108] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 104] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 104] + add eax, 4 + mov dword ptr [rsp + 104], eax + jmp LBB144_4 +LBB144_7: + jmp LBB144_8 +LBB144_8: + mov eax, dword ptr [rsp + 108] + add eax, 32 + mov dword ptr [rsp + 108], eax + jmp LBB144_2 +LBB144_9: + mov dword ptr [rsp + 100], 0 +LBB144_10: + cmp dword ptr [rsp + 100], 2048 + jge LBB144_17 + mov dword ptr [rsp + 96], 0 +LBB144_12: + cmp dword ptr [rsp + 96], 32 + jge LBB144_15 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 100] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 96] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 100] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 96] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 100] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 96] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 100] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 96] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 100] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 96] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 100] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 96] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 100] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 96] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 100] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 96] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 96] + add eax, 4 + mov dword ptr [rsp + 96], eax + jmp LBB144_12 +LBB144_15: + jmp LBB144_16 +LBB144_16: + mov eax, dword ptr [rsp + 100] + add eax, 256 + mov dword ptr [rsp + 100], eax + jmp LBB144_10 +LBB144_17: + mov dword ptr [rsp + 92], 0 +LBB144_18: + cmp dword ptr [rsp + 92], 2048 + jge LBB144_25 + mov dword ptr [rsp + 88], 0 +LBB144_20: + cmp dword ptr [rsp + 88], 256 + jge LBB144_23 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 92] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 88] + shl r8, 3 + add rdx, r8 + add rdx, 4096 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 92] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 88] + shl r9, 3 + add r8, r9 + add r8, 6144 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 92] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 88] + shl r10, 3 + add r9, r10 + add r9, 8192 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 92] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 88] + shl r11, 3 + add r10, r11 + add r10, 10240 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 92] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 88] + shl rsi, 3 + add r11, rsi + add r11, 12288 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 92] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 88] + shl rdi, 3 + add rsi, rdi + add rsi, 14336 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 88] + add eax, 4 + mov dword ptr [rsp + 88], eax + jmp LBB144_20 +LBB144_23: + jmp LBB144_24 +LBB144_24: + mov eax, dword ptr [rsp + 92] + add eax, 2048 + mov dword ptr [rsp + 92], eax + jmp LBB144_18 +LBB144_25: + jmp LBB144_86 +LBB144_26: + cmp dword ptr [rsp + 124], 14 + jne LBB144_36 + mov rcx, qword ptr [rsp + 112] + mov edx, 11 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 16384 + mov edx, 11 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 32768 + mov edx, 11 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 49152 + mov edx, 11 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 65536 + mov edx, 11 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 81920 + mov edx, 11 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 98304 + mov edx, 11 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 114688 + mov edx, 11 + call fht_helper_double_29_recursive + mov dword ptr [rsp + 84], 0 +LBB144_28: + cmp dword ptr [rsp + 84], 16384 + jge LBB144_35 + mov dword ptr [rsp + 80], 0 +LBB144_30: + cmp dword ptr [rsp + 80], 2048 + jge LBB144_33 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 3 + add rcx, rdx + add rcx, 16384 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 84] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 3 + add rdx, r8 + add rdx, 32768 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 84] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 3 + add r8, r9 + add r8, 49152 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 84] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 3 + add r9, r10 + add r9, 65536 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 84] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 3 + add r10, r11 + add r10, 81920 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 3 + add r11, rsi + add r11, 98304 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 3 + add rsi, rdi + add rsi, 114688 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 4 + mov dword ptr [rsp + 80], eax + jmp LBB144_30 +LBB144_33: + jmp LBB144_34 +LBB144_34: + mov eax, dword ptr [rsp + 84] + add eax, 16384 + mov dword ptr [rsp + 84], eax + jmp LBB144_28 +LBB144_35: + jmp LBB144_86 +LBB144_36: + cmp dword ptr [rsp + 124], 17 + jne LBB144_46 + mov rcx, qword ptr [rsp + 112] + mov edx, 14 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 131072 + mov edx, 14 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 262144 + mov edx, 14 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 393216 + mov edx, 14 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 524288 + mov edx, 14 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 655360 + mov edx, 14 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 786432 + mov edx, 14 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 917504 + mov edx, 14 + call fht_helper_double_29_recursive + mov dword ptr [rsp + 76], 0 +LBB144_38: + cmp dword ptr [rsp + 76], 131072 + jge LBB144_45 + mov dword ptr [rsp + 72], 0 +LBB144_40: + cmp dword ptr [rsp + 72], 16384 + jge LBB144_43 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 131072 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 262144 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 393216 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 524288 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 655360 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 786432 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 917504 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB144_40 +LBB144_43: + jmp LBB144_44 +LBB144_44: + mov eax, dword ptr [rsp + 76] + add eax, 131072 + mov dword ptr [rsp + 76], eax + jmp LBB144_38 +LBB144_45: + jmp LBB144_86 +LBB144_46: + cmp dword ptr [rsp + 124], 20 + jne LBB144_56 + mov rcx, qword ptr [rsp + 112] + mov edx, 17 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1048576 + mov edx, 17 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 2097152 + mov edx, 17 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 3145728 + mov edx, 17 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 4194304 + mov edx, 17 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 5242880 + mov edx, 17 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 6291456 + mov edx, 17 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 7340032 + mov edx, 17 + call fht_helper_double_29_recursive + mov dword ptr [rsp + 68], 0 +LBB144_48: + cmp dword ptr [rsp + 68], 1048576 + jge LBB144_55 + mov dword ptr [rsp + 64], 0 +LBB144_50: + cmp dword ptr [rsp + 64], 131072 + jge LBB144_53 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 1048576 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 2097152 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 3145728 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 4194304 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 5242880 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 6291456 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 7340032 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB144_50 +LBB144_53: + jmp LBB144_54 +LBB144_54: + mov eax, dword ptr [rsp + 68] + add eax, 1048576 + mov dword ptr [rsp + 68], eax + jmp LBB144_48 +LBB144_55: + jmp LBB144_86 +LBB144_56: + cmp dword ptr [rsp + 124], 23 + jne LBB144_66 + mov rcx, qword ptr [rsp + 112] + mov edx, 20 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 8388608 + mov edx, 20 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 16777216 + mov edx, 20 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 25165824 + mov edx, 20 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 33554432 + mov edx, 20 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 41943040 + mov edx, 20 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 50331648 + mov edx, 20 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 58720256 + mov edx, 20 + call fht_helper_double_29_recursive + mov dword ptr [rsp + 60], 0 +LBB144_58: + cmp dword ptr [rsp + 60], 8388608 + jge LBB144_65 + mov dword ptr [rsp + 56], 0 +LBB144_60: + cmp dword ptr [rsp + 56], 1048576 + jge LBB144_63 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 8388608 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 16777216 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 25165824 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 33554432 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 41943040 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 50331648 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 58720256 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB144_60 +LBB144_63: + jmp LBB144_64 +LBB144_64: + mov eax, dword ptr [rsp + 60] + add eax, 8388608 + mov dword ptr [rsp + 60], eax + jmp LBB144_58 +LBB144_65: + jmp LBB144_86 +LBB144_66: + cmp dword ptr [rsp + 124], 26 + jne LBB144_76 + mov rcx, qword ptr [rsp + 112] + mov edx, 23 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 67108864 + mov edx, 23 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 134217728 + mov edx, 23 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 201326592 + mov edx, 23 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 268435456 + mov edx, 23 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 335544320 + mov edx, 23 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 402653184 + mov edx, 23 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 469762048 + mov edx, 23 + call fht_helper_double_29_recursive + mov dword ptr [rsp + 52], 0 +LBB144_68: + cmp dword ptr [rsp + 52], 67108864 + jge LBB144_75 + mov dword ptr [rsp + 48], 0 +LBB144_70: + cmp dword ptr [rsp + 48], 8388608 + jge LBB144_73 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 67108864 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 134217728 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 201326592 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 268435456 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 335544320 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 402653184 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 469762048 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB144_70 +LBB144_73: + jmp LBB144_74 +LBB144_74: + mov eax, dword ptr [rsp + 52] + add eax, 67108864 + mov dword ptr [rsp + 52], eax + jmp LBB144_68 +LBB144_75: + jmp LBB144_86 +LBB144_76: + cmp dword ptr [rsp + 124], 29 + jne LBB144_86 + mov rcx, qword ptr [rsp + 112] + mov edx, 26 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 536870912 + mov edx, 26 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1073741824 + mov edx, 26 + call fht_helper_double_29_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1610612736 + mov edx, 26 + call fht_helper_double_29_recursive + mov rcx, 2147483648 + add rcx, qword ptr [rsp + 112] + mov edx, 26 + call fht_helper_double_29_recursive + mov rcx, 2684354560 + add rcx, qword ptr [rsp + 112] + mov edx, 26 + call fht_helper_double_29_recursive + mov rcx, 3221225472 + add rcx, qword ptr [rsp + 112] + mov edx, 26 + call fht_helper_double_29_recursive + mov rcx, 3758096384 + add rcx, qword ptr [rsp + 112] + mov edx, 26 + call fht_helper_double_29_recursive + mov dword ptr [rsp + 44], 0 +LBB144_78: + cmp dword ptr [rsp + 44], 536870912 + jge LBB144_85 + mov dword ptr [rsp + 40], 0 +LBB144_80: + cmp dword ptr [rsp + 40], 67108864 + jge LBB144_83 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 536870912 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 1073741824 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 1610612736 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 44] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 3 + add r9, r10 + mov r10, 2147483648 + add r9, r10 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 44] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 3 + add r10, r11 + mov r11, 2684354560 + add r10, r11 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 3 + add r11, rsi + mov rsi, 3221225472 + add r11, rsi + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 3 + add rsi, rdi + mov rdi, 3758096384 + add rsi, rdi + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB144_80 +LBB144_83: + jmp LBB144_84 +LBB144_84: + mov eax, dword ptr [rsp + 44] + add eax, 536870912 + mov dword ptr [rsp + 44], eax + jmp LBB144_78 +LBB144_85: + jmp LBB144_86 +LBB144_86: + vmovaps xmm6, xmmword ptr [rsp + 128] + vmovaps xmm7, xmmword ptr [rsp + 144] + vmovaps xmm8, xmmword ptr [rsp + 160] + vmovaps xmm9, xmmword ptr [rsp + 176] + vmovaps xmm10, xmmword ptr [rsp + 192] + vmovaps xmm11, xmmword ptr [rsp + 208] + vmovaps xmm12, xmmword ptr [rsp + 224] + vmovaps xmm13, xmmword ptr [rsp + 240] + vmovaps xmm14, xmmword ptr [rsp + 256] + vmovaps xmm15, xmmword ptr [rsp + 272] + add rsp, 296 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_29_recursive ENDP + +fht_helper_double_30_recursive PROC FRAME + push rsi + .pushreg rsi + push rdi + .pushreg rdi + sub rsp, 296 + .allocstack 296 + vmovaps xmmword ptr [rsp + 272], xmm15 + .savexmm128 xmm15, 272 + vmovaps xmmword ptr [rsp + 256], xmm14 + .savexmm128 xmm14, 256 + vmovaps xmmword ptr [rsp + 240], xmm13 + .savexmm128 xmm13, 240 + vmovaps xmmword ptr [rsp + 224], xmm12 + .savexmm128 xmm12, 224 + vmovaps xmmword ptr [rsp + 208], xmm11 + .savexmm128 xmm11, 208 + vmovaps xmmword ptr [rsp + 192], xmm10 + .savexmm128 xmm10, 192 + vmovaps xmmword ptr [rsp + 176], xmm9 + .savexmm128 xmm9, 176 + vmovaps xmmword ptr [rsp + 160], xmm8 + .savexmm128 xmm8, 160 + vmovaps xmmword ptr [rsp + 144], xmm7 + .savexmm128 xmm7, 144 + vmovaps xmmword ptr [rsp + 128], xmm6 + .savexmm128 xmm6, 128 + .endprolog + mov dword ptr [rsp + 124], edx + mov qword ptr [rsp + 112], rcx + cmp dword ptr [rsp + 124], 9 + jne LBB145_26 + mov dword ptr [rsp + 108], 0 +LBB145_2: + cmp dword ptr [rsp + 108], 512 + jge LBB145_9 + mov dword ptr [rsp + 104], 0 +LBB145_4: + cmp dword ptr [rsp + 104], 4 + jge LBB145_7 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 108] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 104] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 108] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 104] + shl rdx, 3 + add rcx, rdx + add rcx, 32 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 108] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 104] + shl r8, 3 + add rdx, r8 + add rdx, 64 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 108] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 104] + shl r9, 3 + add r8, r9 + add r8, 96 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 108] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 104] + shl r10, 3 + add r9, r10 + add r9, 128 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 108] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 104] + shl r11, 3 + add r10, r11 + add r10, 160 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 108] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 104] + shl rsi, 3 + add r11, rsi + add r11, 192 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 108] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 104] + shl rdi, 3 + add rsi, rdi + add rsi, 224 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vpermilpd ymm8, ymm0, 0 + vpermilpd ymm9, ymm0, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm0, ymm8, ymm11 + vpermilpd ymm8, ymm1, 0 + vpermilpd ymm9, ymm1, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm1, ymm8, ymm11 + vpermilpd ymm8, ymm2, 0 + vpermilpd ymm9, ymm2, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm2, ymm8, ymm11 + vpermilpd ymm8, ymm3, 0 + vpermilpd ymm9, ymm3, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm3, ymm8, ymm11 + vpermilpd ymm8, ymm4, 0 + vpermilpd ymm9, ymm4, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm4, ymm8, ymm11 + vpermilpd ymm8, ymm5, 0 + vpermilpd ymm9, ymm5, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm5, ymm8, ymm11 + vpermilpd ymm8, ymm6, 0 + vpermilpd ymm9, ymm6, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm6, ymm8, ymm11 + vpermilpd ymm8, ymm7, 0 + vpermilpd ymm9, ymm7, 15 + vxorpd ymm10, ymm10, ymm10 + vsubpd ymm11, ymm10, ymm9 + vaddsubpd ymm7, ymm8, ymm11 + vperm2f128 ymm8, ymm0, ymm0, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm0 + vperm2f128 ymm11, ymm0, ymm10, 49 + vaddpd ymm0, ymm8, ymm11 + vperm2f128 ymm8, ymm1, ymm1, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm1 + vperm2f128 ymm11, ymm1, ymm10, 49 + vaddpd ymm1, ymm8, ymm11 + vperm2f128 ymm8, ymm2, ymm2, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm2 + vperm2f128 ymm11, ymm2, ymm10, 49 + vaddpd ymm2, ymm8, ymm11 + vperm2f128 ymm8, ymm3, ymm3, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm3 + vperm2f128 ymm11, ymm3, ymm10, 49 + vaddpd ymm3, ymm8, ymm11 + vperm2f128 ymm8, ymm4, ymm4, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm4 + vperm2f128 ymm11, ymm4, ymm10, 49 + vaddpd ymm4, ymm8, ymm11 + vperm2f128 ymm8, ymm5, ymm5, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm5 + vperm2f128 ymm11, ymm5, ymm10, 49 + vaddpd ymm5, ymm8, ymm11 + vperm2f128 ymm8, ymm6, ymm6, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm6 + vperm2f128 ymm11, ymm6, ymm10, 49 + vaddpd ymm6, ymm8, ymm11 + vperm2f128 ymm8, ymm7, ymm7, 0 + vxorpd ymm9, ymm9, ymm9 + vsubpd ymm10, ymm9, ymm7 + vperm2f128 ymm11, ymm7, ymm10, 49 + vaddpd ymm7, ymm8, ymm11 + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 104] + add eax, 4 + mov dword ptr [rsp + 104], eax + jmp LBB145_4 +LBB145_7: + jmp LBB145_8 +LBB145_8: + mov eax, dword ptr [rsp + 108] + add eax, 32 + mov dword ptr [rsp + 108], eax + jmp LBB145_2 +LBB145_9: + mov dword ptr [rsp + 100], 0 +LBB145_10: + cmp dword ptr [rsp + 100], 512 + jge LBB145_17 + mov dword ptr [rsp + 96], 0 +LBB145_12: + cmp dword ptr [rsp + 96], 32 + jge LBB145_15 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 100] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 96] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 100] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 96] + shl rdx, 3 + add rcx, rdx + add rcx, 256 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 100] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 96] + shl r8, 3 + add rdx, r8 + add rdx, 512 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 100] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 96] + shl r9, 3 + add r8, r9 + add r8, 768 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 100] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 96] + shl r10, 3 + add r9, r10 + add r9, 1024 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 100] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 96] + shl r11, 3 + add r10, r11 + add r10, 1280 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 100] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 96] + shl rsi, 3 + add r11, rsi + add r11, 1536 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 100] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 96] + shl rdi, 3 + add rsi, rdi + add rsi, 1792 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 96] + add eax, 4 + mov dword ptr [rsp + 96], eax + jmp LBB145_12 +LBB145_15: + jmp LBB145_16 +LBB145_16: + mov eax, dword ptr [rsp + 100] + add eax, 256 + mov dword ptr [rsp + 100], eax + jmp LBB145_10 +LBB145_17: + mov dword ptr [rsp + 92], 0 +LBB145_18: + cmp dword ptr [rsp + 92], 512 + jge LBB145_25 + mov dword ptr [rsp + 88], 0 +LBB145_20: + cmp dword ptr [rsp + 88], 256 + jge LBB145_23 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 92] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 88] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 92] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 88] + shl rdx, 3 + add rcx, rdx + add rcx, 2048 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + mov eax, dword ptr [rsp + 88] + add eax, 4 + mov dword ptr [rsp + 88], eax + jmp LBB145_20 +LBB145_23: + jmp LBB145_24 +LBB145_24: + mov eax, dword ptr [rsp + 92] + add eax, 512 + mov dword ptr [rsp + 92], eax + jmp LBB145_18 +LBB145_25: + jmp LBB145_96 +LBB145_26: + cmp dword ptr [rsp + 124], 12 + jne LBB145_36 + mov rcx, qword ptr [rsp + 112] + mov edx, 9 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 4096 + mov edx, 9 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 8192 + mov edx, 9 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 12288 + mov edx, 9 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 16384 + mov edx, 9 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 20480 + mov edx, 9 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 24576 + mov edx, 9 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 28672 + mov edx, 9 + call fht_helper_double_30_recursive + mov dword ptr [rsp + 84], 0 +LBB145_28: + cmp dword ptr [rsp + 84], 4096 + jge LBB145_35 + mov dword ptr [rsp + 80], 0 +LBB145_30: + cmp dword ptr [rsp + 80], 512 + jge LBB145_33 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 84] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 80] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 84] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 80] + shl rdx, 3 + add rcx, rdx + add rcx, 4096 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 84] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 80] + shl r8, 3 + add rdx, r8 + add rdx, 8192 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 84] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 80] + shl r9, 3 + add r8, r9 + add r8, 12288 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 84] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 80] + shl r10, 3 + add r9, r10 + add r9, 16384 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 84] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 80] + shl r11, 3 + add r10, r11 + add r10, 20480 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 84] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 80] + shl rsi, 3 + add r11, rsi + add r11, 24576 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 84] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 80] + shl rdi, 3 + add rsi, rdi + add rsi, 28672 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 80] + add eax, 4 + mov dword ptr [rsp + 80], eax + jmp LBB145_30 +LBB145_33: + jmp LBB145_34 +LBB145_34: + mov eax, dword ptr [rsp + 84] + add eax, 4096 + mov dword ptr [rsp + 84], eax + jmp LBB145_28 +LBB145_35: + jmp LBB145_96 +LBB145_36: + cmp dword ptr [rsp + 124], 15 + jne LBB145_46 + mov rcx, qword ptr [rsp + 112] + mov edx, 12 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 32768 + mov edx, 12 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 65536 + mov edx, 12 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 98304 + mov edx, 12 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 131072 + mov edx, 12 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 163840 + mov edx, 12 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 196608 + mov edx, 12 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 229376 + mov edx, 12 + call fht_helper_double_30_recursive + mov dword ptr [rsp + 76], 0 +LBB145_38: + cmp dword ptr [rsp + 76], 32768 + jge LBB145_45 + mov dword ptr [rsp + 72], 0 +LBB145_40: + cmp dword ptr [rsp + 72], 4096 + jge LBB145_43 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 76] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 72] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 76] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 72] + shl rdx, 3 + add rcx, rdx + add rcx, 32768 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 76] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 72] + shl r8, 3 + add rdx, r8 + add rdx, 65536 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 76] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 72] + shl r9, 3 + add r8, r9 + add r8, 98304 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 76] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 72] + shl r10, 3 + add r9, r10 + add r9, 131072 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 76] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 72] + shl r11, 3 + add r10, r11 + add r10, 163840 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 76] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 72] + shl rsi, 3 + add r11, rsi + add r11, 196608 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 76] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 72] + shl rdi, 3 + add rsi, rdi + add rsi, 229376 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 72] + add eax, 4 + mov dword ptr [rsp + 72], eax + jmp LBB145_40 +LBB145_43: + jmp LBB145_44 +LBB145_44: + mov eax, dword ptr [rsp + 76] + add eax, 32768 + mov dword ptr [rsp + 76], eax + jmp LBB145_38 +LBB145_45: + jmp LBB145_96 +LBB145_46: + cmp dword ptr [rsp + 124], 18 + jne LBB145_56 + mov rcx, qword ptr [rsp + 112] + mov edx, 15 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 262144 + mov edx, 15 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 524288 + mov edx, 15 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 786432 + mov edx, 15 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1048576 + mov edx, 15 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1310720 + mov edx, 15 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1572864 + mov edx, 15 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1835008 + mov edx, 15 + call fht_helper_double_30_recursive + mov dword ptr [rsp + 68], 0 +LBB145_48: + cmp dword ptr [rsp + 68], 262144 + jge LBB145_55 + mov dword ptr [rsp + 64], 0 +LBB145_50: + cmp dword ptr [rsp + 64], 32768 + jge LBB145_53 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 68] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 64] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 68] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 64] + shl rdx, 3 + add rcx, rdx + add rcx, 262144 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 68] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 64] + shl r8, 3 + add rdx, r8 + add rdx, 524288 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 68] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 64] + shl r9, 3 + add r8, r9 + add r8, 786432 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 68] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 64] + shl r10, 3 + add r9, r10 + add r9, 1048576 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 68] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 64] + shl r11, 3 + add r10, r11 + add r10, 1310720 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 68] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 64] + shl rsi, 3 + add r11, rsi + add r11, 1572864 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 68] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 64] + shl rdi, 3 + add rsi, rdi + add rsi, 1835008 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 64] + add eax, 4 + mov dword ptr [rsp + 64], eax + jmp LBB145_50 +LBB145_53: + jmp LBB145_54 +LBB145_54: + mov eax, dword ptr [rsp + 68] + add eax, 262144 + mov dword ptr [rsp + 68], eax + jmp LBB145_48 +LBB145_55: + jmp LBB145_96 +LBB145_56: + cmp dword ptr [rsp + 124], 21 + jne LBB145_66 + mov rcx, qword ptr [rsp + 112] + mov edx, 18 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 2097152 + mov edx, 18 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 4194304 + mov edx, 18 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 6291456 + mov edx, 18 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 8388608 + mov edx, 18 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 10485760 + mov edx, 18 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 12582912 + mov edx, 18 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 14680064 + mov edx, 18 + call fht_helper_double_30_recursive + mov dword ptr [rsp + 60], 0 +LBB145_58: + cmp dword ptr [rsp + 60], 2097152 + jge LBB145_65 + mov dword ptr [rsp + 56], 0 +LBB145_60: + cmp dword ptr [rsp + 56], 262144 + jge LBB145_63 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 60] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 56] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 60] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 56] + shl rdx, 3 + add rcx, rdx + add rcx, 2097152 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 60] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 56] + shl r8, 3 + add rdx, r8 + add rdx, 4194304 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 60] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 56] + shl r9, 3 + add r8, r9 + add r8, 6291456 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 60] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 56] + shl r10, 3 + add r9, r10 + add r9, 8388608 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 60] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 56] + shl r11, 3 + add r10, r11 + add r10, 10485760 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 60] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 56] + shl rsi, 3 + add r11, rsi + add r11, 12582912 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 60] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 56] + shl rdi, 3 + add rsi, rdi + add rsi, 14680064 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 56] + add eax, 4 + mov dword ptr [rsp + 56], eax + jmp LBB145_60 +LBB145_63: + jmp LBB145_64 +LBB145_64: + mov eax, dword ptr [rsp + 60] + add eax, 2097152 + mov dword ptr [rsp + 60], eax + jmp LBB145_58 +LBB145_65: + jmp LBB145_96 +LBB145_66: + cmp dword ptr [rsp + 124], 24 + jne LBB145_76 + mov rcx, qword ptr [rsp + 112] + mov edx, 21 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 16777216 + mov edx, 21 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 33554432 + mov edx, 21 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 50331648 + mov edx, 21 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 67108864 + mov edx, 21 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 83886080 + mov edx, 21 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 100663296 + mov edx, 21 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 117440512 + mov edx, 21 + call fht_helper_double_30_recursive + mov dword ptr [rsp + 52], 0 +LBB145_68: + cmp dword ptr [rsp + 52], 16777216 + jge LBB145_75 + mov dword ptr [rsp + 48], 0 +LBB145_70: + cmp dword ptr [rsp + 48], 2097152 + jge LBB145_73 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 52] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 48] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 52] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 48] + shl rdx, 3 + add rcx, rdx + add rcx, 16777216 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 52] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 48] + shl r8, 3 + add rdx, r8 + add rdx, 33554432 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 52] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 48] + shl r9, 3 + add r8, r9 + add r8, 50331648 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 52] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 48] + shl r10, 3 + add r9, r10 + add r9, 67108864 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 52] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 48] + shl r11, 3 + add r10, r11 + add r10, 83886080 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 52] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 48] + shl rsi, 3 + add r11, rsi + add r11, 100663296 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 52] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 48] + shl rdi, 3 + add rsi, rdi + add rsi, 117440512 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 48] + add eax, 4 + mov dword ptr [rsp + 48], eax + jmp LBB145_70 +LBB145_73: + jmp LBB145_74 +LBB145_74: + mov eax, dword ptr [rsp + 52] + add eax, 16777216 + mov dword ptr [rsp + 52], eax + jmp LBB145_68 +LBB145_75: + jmp LBB145_96 +LBB145_76: + cmp dword ptr [rsp + 124], 27 + jne LBB145_86 + mov rcx, qword ptr [rsp + 112] + mov edx, 24 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 134217728 + mov edx, 24 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 268435456 + mov edx, 24 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 402653184 + mov edx, 24 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 536870912 + mov edx, 24 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 671088640 + mov edx, 24 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 805306368 + mov edx, 24 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 939524096 + mov edx, 24 + call fht_helper_double_30_recursive + mov dword ptr [rsp + 44], 0 +LBB145_78: + cmp dword ptr [rsp + 44], 134217728 + jge LBB145_85 + mov dword ptr [rsp + 40], 0 +LBB145_80: + cmp dword ptr [rsp + 40], 16777216 + jge LBB145_83 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 44] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 40] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 44] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 40] + shl rdx, 3 + add rcx, rdx + add rcx, 134217728 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 44] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 40] + shl r8, 3 + add rdx, r8 + add rdx, 268435456 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 44] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 40] + shl r9, 3 + add r8, r9 + add r8, 402653184 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 44] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 40] + shl r10, 3 + add r9, r10 + add r9, 536870912 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 44] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 40] + shl r11, 3 + add r10, r11 + add r10, 671088640 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 44] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 40] + shl rsi, 3 + add r11, rsi + add r11, 805306368 + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 44] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 40] + shl rdi, 3 + add rsi, rdi + add rsi, 939524096 + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 40] + add eax, 4 + mov dword ptr [rsp + 40], eax + jmp LBB145_80 +LBB145_83: + jmp LBB145_84 +LBB145_84: + mov eax, dword ptr [rsp + 44] + add eax, 134217728 + mov dword ptr [rsp + 44], eax + jmp LBB145_78 +LBB145_85: + jmp LBB145_96 +LBB145_86: + cmp dword ptr [rsp + 124], 30 + jne LBB145_96 + mov rcx, qword ptr [rsp + 112] + mov edx, 27 + call fht_helper_double_30_recursive + mov rcx, qword ptr [rsp + 112] + add rcx, 1073741824 + mov edx, 27 + call fht_helper_double_30_recursive + mov rcx, 2147483648 + add rcx, qword ptr [rsp + 112] + mov edx, 27 + call fht_helper_double_30_recursive + mov rcx, 3221225472 + add rcx, qword ptr [rsp + 112] + mov edx, 27 + call fht_helper_double_30_recursive + mov rcx, 4294967296 + add rcx, qword ptr [rsp + 112] + mov edx, 27 + call fht_helper_double_30_recursive + mov rcx, 5368709120 + add rcx, qword ptr [rsp + 112] + mov edx, 27 + call fht_helper_double_30_recursive + mov rcx, 6442450944 + add rcx, qword ptr [rsp + 112] + mov edx, 27 + call fht_helper_double_30_recursive + mov rcx, 7516192768 + add rcx, qword ptr [rsp + 112] + mov edx, 27 + call fht_helper_double_30_recursive + mov dword ptr [rsp + 36], 0 +LBB145_88: + cmp dword ptr [rsp + 36], 1073741824 + jge LBB145_95 + mov dword ptr [rsp + 32], 0 +LBB145_90: + cmp dword ptr [rsp + 32], 134217728 + jge LBB145_93 + mov rax, qword ptr [rsp + 112] + movsxd rcx, dword ptr [rsp + 36] + shl rcx, 3 + add rax, rcx + movsxd rcx, dword ptr [rsp + 32] + shl rcx, 3 + add rax, rcx + mov rcx, qword ptr [rsp + 112] + movsxd rdx, dword ptr [rsp + 36] + shl rdx, 3 + add rcx, rdx + movsxd rdx, dword ptr [rsp + 32] + shl rdx, 3 + add rcx, rdx + add rcx, 1073741824 + mov rdx, qword ptr [rsp + 112] + movsxd r8, dword ptr [rsp + 36] + shl r8, 3 + add rdx, r8 + movsxd r8, dword ptr [rsp + 32] + shl r8, 3 + add rdx, r8 + mov r8, 2147483648 + add rdx, r8 + mov r8, qword ptr [rsp + 112] + movsxd r9, dword ptr [rsp + 36] + shl r9, 3 + add r8, r9 + movsxd r9, dword ptr [rsp + 32] + shl r9, 3 + add r8, r9 + mov r9, 3221225472 + add r8, r9 + mov r9, qword ptr [rsp + 112] + movsxd r10, dword ptr [rsp + 36] + shl r10, 3 + add r9, r10 + movsxd r10, dword ptr [rsp + 32] + shl r10, 3 + add r9, r10 + mov r10, 4294967296 + add r9, r10 + mov r10, qword ptr [rsp + 112] + movsxd r11, dword ptr [rsp + 36] + shl r11, 3 + add r10, r11 + movsxd r11, dword ptr [rsp + 32] + shl r11, 3 + add r10, r11 + mov r11, 5368709120 + add r10, r11 + mov r11, qword ptr [rsp + 112] + movsxd rsi, dword ptr [rsp + 36] + shl rsi, 3 + add r11, rsi + movsxd rsi, dword ptr [rsp + 32] + shl rsi, 3 + add r11, rsi + mov rsi, 6442450944 + add r11, rsi + mov rsi, qword ptr [rsp + 112] + movsxd rdi, dword ptr [rsp + 36] + shl rdi, 3 + add rsi, rdi + movsxd rdi, dword ptr [rsp + 32] + shl rdi, 3 + add rsi, rdi + mov rdi, 7516192768 + add rsi, rdi + vmovupd ymm0, ymmword ptr [rax] + vmovupd ymm1, ymmword ptr [rcx] + vmovupd ymm2, ymmword ptr [rdx] + vmovupd ymm3, ymmword ptr [r8] + vmovupd ymm4, ymmword ptr [r9] + vmovupd ymm5, ymmword ptr [r10] + vmovupd ymm6, ymmword ptr [r11] + vmovupd ymm7, ymmword ptr [rsi] + vaddpd ymm8, ymm0, ymm1 + vsubpd ymm9, ymm0, ymm1 + vaddpd ymm10, ymm2, ymm3 + vsubpd ymm11, ymm2, ymm3 + vaddpd ymm12, ymm4, ymm5 + vsubpd ymm13, ymm4, ymm5 + vaddpd ymm14, ymm6, ymm7 + vsubpd ymm15, ymm6, ymm7 + vaddpd ymm0, ymm8, ymm10 + vsubpd ymm2, ymm8, ymm10 + vaddpd ymm1, ymm9, ymm11 + vsubpd ymm3, ymm9, ymm11 + vaddpd ymm4, ymm12, ymm14 + vsubpd ymm6, ymm12, ymm14 + vaddpd ymm5, ymm13, ymm15 + vsubpd ymm7, ymm13, ymm15 + vaddpd ymm8, ymm0, ymm4 + vsubpd ymm12, ymm0, ymm4 + vaddpd ymm9, ymm1, ymm5 + vsubpd ymm13, ymm1, ymm5 + vaddpd ymm10, ymm2, ymm6 + vsubpd ymm14, ymm2, ymm6 + vaddpd ymm11, ymm3, ymm7 + vsubpd ymm15, ymm3, ymm7 + vmovupd ymmword ptr [rax], ymm8 + vmovupd ymmword ptr [rcx], ymm9 + vmovupd ymmword ptr [rdx], ymm10 + vmovupd ymmword ptr [r8], ymm11 + vmovupd ymmword ptr [r9], ymm12 + vmovupd ymmword ptr [r10], ymm13 + vmovupd ymmword ptr [r11], ymm14 + vmovupd ymmword ptr [rsi], ymm15 + mov eax, dword ptr [rsp + 32] + add eax, 4 + mov dword ptr [rsp + 32], eax + jmp LBB145_90 +LBB145_93: + jmp LBB145_94 +LBB145_94: + mov eax, dword ptr [rsp + 36] + add eax, 1073741824 + mov dword ptr [rsp + 36], eax + jmp LBB145_88 +LBB145_95: + jmp LBB145_96 +LBB145_96: + vmovaps xmm6, xmmword ptr [rsp + 128] + vmovaps xmm7, xmmword ptr [rsp + 144] + vmovaps xmm8, xmmword ptr [rsp + 160] + vmovaps xmm9, xmmword ptr [rsp + 176] + vmovaps xmm10, xmmword ptr [rsp + 192] + vmovaps xmm11, xmmword ptr [rsp + 208] + vmovaps xmm12, xmmword ptr [rsp + 224] + vmovaps xmm13, xmmword ptr [rsp + 240] + vmovaps xmm14, xmmword ptr [rsp + 256] + vmovaps xmm15, xmmword ptr [rsp + 272] + add rsp, 296 + pop rdi + pop rsi + vzeroupper + ret +fht_helper_double_30_recursive ENDP + +END diff --git a/src/simd/quantization_avx2.cpp b/src/simd/quantization_avx2.cpp index 70e2f2aa..3502cd1f 100644 --- a/src/simd/quantization_avx2.cpp +++ b/src/simd/quantization_avx2.cpp @@ -5,6 +5,7 @@ #include #include "rabitqlib/simd/quantization_dispatch.hpp" +#include "rabitqlib/utils/bitops.hpp" #include "rescale_search.hpp" namespace rabitqlib::simd::detail { @@ -62,7 +63,7 @@ static RescaleSearchState evaluate_scale_state_avx2( alignas(32) double corrected[4]; _mm256_store_pd(corrected, c); for (unsigned mask = boundary; mask; mask &= mask - 1) { - unsigned k = __builtin_ctz(mask); + unsigned k = bitops::countr_zero32(mask); corrected[k] = quantized_code_at_scale(magnitudes[i + k], scale, max_code); } c = _mm256_load_pd(corrected); diff --git a/src/simd/quantization_avx512.cpp b/src/simd/quantization_avx512.cpp index 8be32f00..ab729273 100644 --- a/src/simd/quantization_avx512.cpp +++ b/src/simd/quantization_avx512.cpp @@ -5,6 +5,7 @@ #include #include "rabitqlib/simd/quantization_dispatch.hpp" +#include "rabitqlib/utils/bitops.hpp" #include "rescale_search.hpp" namespace rabitqlib::simd::detail { @@ -57,7 +58,7 @@ static RescaleSearchState evaluate_scale_state_avx512( alignas(64) double corrected[8]; _mm512_store_pd(corrected, c); for (unsigned mask = boundary; mask; mask &= mask - 1) { - unsigned k = __builtin_ctz(mask); + unsigned k = bitops::countr_zero32(mask); corrected[k] = quantized_code_at_scale(magnitudes[i + k], scale, max_code); } c = _mm512_load_pd(corrected); @@ -101,10 +102,10 @@ static RescaleSearchState evaluate_scale_state_avx512( double f = _mm512_reduce_max_pd(vfirst), n = _mm512_reduce_min_pd(vnext); // At least one lane equals each reduced extremum. Select its first set bit; // tied boundary ratios describe the same event scale. - unsigned fk = __builtin_ctz(static_cast( + unsigned fk = bitops::countr_zero32(static_cast( _mm512_cmp_pd_mask(vfirst, _mm512_set1_pd(f), _CMP_EQ_OQ) )), - nk = __builtin_ctz(static_cast( + nk = bitops::countr_zero32(static_cast( _mm512_cmp_pd_mask(vnext, _mm512_set1_pd(n), _CMP_EQ_OQ) )); // Reciprocal products selected the coordinates; division now recovers the diff --git a/src/simd/rotator_kernels.hpp b/src/simd/rotator_kernels.hpp index fa5bd985..cd4f7875 100644 --- a/src/simd/rotator_kernels.hpp +++ b/src/simd/rotator_kernels.hpp @@ -5,18 +5,29 @@ #include #include +#if defined(_MSC_VER) +extern "C" void rabitq_fht_avx_float_6(float* values); +extern "C" void rabitq_fht_avx_float_7(float* values); +extern "C" void rabitq_fht_avx_float_8(float* values); +extern "C" void rabitq_fht_avx_float_9(float* values); +extern "C" void rabitq_fht_avx_float_10(float* values); +extern "C" void rabitq_fht_avx_float_11(float* values); +#endif + namespace rabitqlib::simd { namespace { +#if !defined(_MSC_VER) // The imported header has no includes. Keep its inline helpers private so the // linker cannot merge compiler-generated code from different ISA backends. #include "rabitqlib/utils/fht_avx.hpp" +#endif inline void rescale(float* data, size_t dim, float factor) { for (size_t i = 0; i < dim; ++i) { data[i] *= factor; } } -// FFHT retains its imported AVX butterflies in both ISA backends. Surrounding -// C++ is compiled at the selected ISA; no vendor implementation is rewritten. +// GCC and Clang use the imported AVX butterflies. MSVC uses matching MASM +// kernels because the imported implementation contains GNU inline assembly. template void fht_rotate_impl( const float* data, @@ -30,29 +41,53 @@ void fht_rotate_impl( void (*fht)(float*) = nullptr; switch (trunc_dim) { case 64: +#if defined(_MSC_VER) + fht = rabitq_fht_avx_float_6; +#else fht = helper_float_6; +#endif break; case 128: +#if defined(_MSC_VER) + fht = rabitq_fht_avx_float_7; +#else fht = helper_float_7; +#endif break; case 256: +#if defined(_MSC_VER) + fht = rabitq_fht_avx_float_8; +#else fht = helper_float_8; +#endif break; case 512: +#if defined(_MSC_VER) + fht = rabitq_fht_avx_float_9; +#else fht = helper_float_9; +#endif break; case 1024: +#if defined(_MSC_VER) + fht = rabitq_fht_avx_float_10; +#else fht = helper_float_10; +#endif break; case 2048: +#if defined(_MSC_VER) + fht = rabitq_fht_avx_float_11; +#else fht = helper_float_11; +#endif break; default: throw std::invalid_argument("Unsupported dimension for FhtKacRotator"); } std::memcpy(rotated_vec, data, sizeof(float) * dim); - std::fill(rotated_vec + dim, rotated_vec + padded_dim, 0); + std::fill(rotated_vec + dim, rotated_vec + padded_dim, 0.0F); if (trunc_dim == padded_dim) { flip_sign(flip, rotated_vec, padded_dim); diff --git a/src/simd/warmup_avx2.cpp b/src/simd/warmup_avx2.cpp index e187744e..031712dd 100644 --- a/src/simd/warmup_avx2.cpp +++ b/src/simd/warmup_avx2.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "rabitqlib/simd/warmup_dispatch.hpp" @@ -80,7 +81,11 @@ float warmup_ip_x0_q_512_avx2( // Step by 512 bits at a time (64 bytes = 16 elements of 32-bit integers) size_t dim_end_512 = (padded_dim / 512) * 512; - __m256i acc_bits[b_query]; + constexpr size_t kMaxQueryBits = 8; + if (b_query > kMaxQueryBits) { + throw std::invalid_argument("warmup_ip_x0_q_512 requires at most 8 query bits"); + } + __m256i acc_bits[kMaxQueryBits]; for (size_t j = 0; j < b_query; ++j) { acc_bits[j] = _mm256_setzero_si256(); } diff --git a/src/simd/warmup_avx512.cpp b/src/simd/warmup_avx512.cpp index 980cda58..ded79983 100644 --- a/src/simd/warmup_avx512.cpp +++ b/src/simd/warmup_avx512.cpp @@ -2,6 +2,7 @@ #include #include +#include #include "rabitqlib/simd/warmup_dispatch.hpp" @@ -24,7 +25,11 @@ float warmup_ip_x0_q_512_avx512( size_t i = 0; size_t dim_end_512 = (padded_dim / 512) * 512; - __m512i acc_bits[b_query]; + constexpr size_t kMaxQueryBits = 8; + if (b_query > kMaxQueryBits) { + throw std::invalid_argument("warmup_ip_x0_q_512 requires at most 8 query bits"); + } + __m512i acc_bits[kMaxQueryBits]; for (size_t j = 0; j < b_query; ++j) { acc_bits[j] = _mm512_setzero_si512(); } diff --git a/tests/README.md b/tests/README.md index 28c214c0..09a11c42 100644 --- a/tests/README.md +++ b/tests/README.md @@ -6,13 +6,19 @@ binding tests for RaBitQ Library. ## Prerequisites - CMake 3.20 or newer for the `ctest --test-dir` commands below -- A GCC- or Clang-compatible C++17 compiler with OpenMP support +- A C++17 compiler with OpenMP support (GCC, Clang, or Visual Studio 2022) - An x86-64 CPU supported by RaBitQ's AVX2 or AVX-512 runtime dispatch - Git and network access during the first configuration so CMake can download GoogleTest 1.14.0 -The current CMake configuration uses GCC/Clang command-line options and does -not provide a supported MSVC build path. +On Windows, install Visual Studio 2022 with the Desktop development with C++ +workload. Configure with its x64 generator: + +```powershell +cmake -S . -B build -G "Visual Studio 17 2022" -A x64 -DRABITQ_BUILD_TESTS=ON -DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF +cmake --build build --config Release +ctest --test-dir build -C Release --output-on-failure +``` On Ubuntu or Debian, install the required build tools with: diff --git a/tests/unit/rabitqlib/fastscan/fastscan_test.cpp b/tests/unit/rabitqlib/fastscan/fastscan_test.cpp index 1c80e632..6fbb71d7 100644 --- a/tests/unit/rabitqlib/fastscan/fastscan_test.cpp +++ b/tests/unit/rabitqlib/fastscan/fastscan_test.cpp @@ -120,8 +120,9 @@ TEST(FastScanPackingTest, MatchesBitReferenceIncludingTailsAndUnalignedBuffers) } } +constexpr size_t kMaxDim = 768; + TEST(FastScanPackingTest, AccumulatesReferenceLutValuesOnEverySupportedBackend) { - constexpr size_t kMaxDim = 768; for (size_t dim : {16U, 64U, 128U, 768U}) { for (size_t num : {1U, 17U, 31U, 32U}) { SCOPED_TRACE(::testing::Message() << "dim=" << dim << " num=" << num); diff --git a/tests/unit/rabitqlib/index/qg_test.cpp b/tests/unit/rabitqlib/index/qg_test.cpp index e86bc2e0..f52bd0ab 100644 --- a/tests/unit/rabitqlib/index/qg_test.cpp +++ b/tests/unit/rabitqlib/index/qg_test.cpp @@ -1021,7 +1021,10 @@ TEST(QGSearchTest, ParallelQueriesMatchSerialAcrossIndexesAndSettings) { std::array ids{}; std::array distances{}; #pragma omp parallel for num_threads(threads) schedule(dynamic) - for (size_t i = 0; i < kNumQueries; ++i) { + for (std::ptrdiff_t query_index = 0; + query_index < static_cast(kNumQueries); + ++query_index) { + const size_t i = static_cast(query_index); graph.search( queries.data() + (i * dim), kTopK, diff --git a/tests/unit/rabitqlib/quantization/rescale_search_test.cpp b/tests/unit/rabitqlib/quantization/rescale_search_test.cpp index f6d53d8d..072af909 100644 --- a/tests/unit/rabitqlib/quantization/rescale_search_test.cpp +++ b/tests/unit/rabitqlib/quantization/rescale_search_test.cpp @@ -211,8 +211,8 @@ TEST_P(RabitqRescaleBackendTest, ReusesScratchAcrossDimensionsAndThreads) { size_t mismatches = 0; #pragma omp parallel for num_threads(8) schedule(dynamic, 1) reduction(+ : mismatches) - for (size_t call = 0; call < 160; ++call) { - const size_t index = call % inputs.size(); + for (std::ptrdiff_t call = 0; call < 160; ++call) { + const size_t index = static_cast(call) % inputs.size(); const auto& magnitudes = inputs[index]; const auto [start, end] = intervals[index]; const double actual = diff --git a/tests/unit/rabitqlib/utils/bitops_test.cpp b/tests/unit/rabitqlib/utils/bitops_test.cpp new file mode 100644 index 00000000..b76f9a21 --- /dev/null +++ b/tests/unit/rabitqlib/utils/bitops_test.cpp @@ -0,0 +1,23 @@ +#include "rabitqlib/utils/bitops.hpp" + +#include + +#include + +namespace rabitqlib::bitops { +namespace { + +TEST(BitopsTest, CountsBitsAndTrailingZeros) { + EXPECT_EQ(popcount32(0), 0U); + EXPECT_EQ(popcount32(0xFFFFFFFFU), 32U); + EXPECT_EQ(popcount32(0x80000001U), 2U); + EXPECT_EQ(popcount64(0), 0U); + EXPECT_EQ(popcount64(0xFFFFFFFFFFFFFFFFULL), 64U); + EXPECT_EQ(popcount64(0x8000000000000001ULL), 2U); + for (unsigned bit = 0; bit < 32; ++bit) { + EXPECT_EQ(countr_zero32(uint32_t{1} << bit), bit); + } +} + +} // namespace +} // namespace rabitqlib::bitops diff --git a/tests/unit/rabitqlib/utils/memory_test.cpp b/tests/unit/rabitqlib/utils/memory_test.cpp index 4785c29a..d3266580 100644 --- a/tests/unit/rabitqlib/utils/memory_test.cpp +++ b/tests/unit/rabitqlib/utils/memory_test.cpp @@ -3,6 +3,7 @@ #include #include +#include #include #include #include @@ -27,6 +28,19 @@ TEST(AlignedAllocationTest, RejectsSizeThatOverflowsAlignmentRounding) { ); } +TEST(AlignedAllocationTest, UsesMatchingDeallocator) { + auto* ptr = align_allocate<64, char>(65); + ASSERT_NE(ptr, nullptr); + EXPECT_EQ(reinterpret_cast(ptr) % 64, 0U); + aligned_deallocate(ptr); + + AlignedAllocator allocator; + auto* values = allocator.allocate(3); + ASSERT_NE(values, nullptr); + EXPECT_EQ(reinterpret_cast(values) % 64, 0U); + allocator.deallocate(values, 3); +} + TEST(ArrayTest, RejectsDimensionProductOverflow) { EXPECT_THROW( (Array(std::vector{std::numeric_limits::max(), 2})), diff --git a/tests/unit/rabitqlib/utils/rotator_test.cpp b/tests/unit/rabitqlib/utils/rotator_test.cpp index f5c47c22..e5ed2fb9 100644 --- a/tests/unit/rabitqlib/utils/rotator_test.cpp +++ b/tests/unit/rabitqlib/utils/rotator_test.cpp @@ -2,6 +2,7 @@ #include +#include #include #include #include @@ -176,6 +177,84 @@ TEST(FhtDispatchTest, BackendsMatchScalarButterfliesAndPadding) { } } +#if defined(_MSC_VER) +#define RABITQ_DECLARE_WINDOWS_FHT(size) \ + extern "C" void rabitq_fht_avx_float_##size(float* values); \ + extern "C" void rabitq_fht_avx_double_##size(double* values); + +RABITQ_DECLARE_WINDOWS_FHT(1) +RABITQ_DECLARE_WINDOWS_FHT(2) +RABITQ_DECLARE_WINDOWS_FHT(3) +RABITQ_DECLARE_WINDOWS_FHT(4) +RABITQ_DECLARE_WINDOWS_FHT(5) +RABITQ_DECLARE_WINDOWS_FHT(6) +RABITQ_DECLARE_WINDOWS_FHT(7) +RABITQ_DECLARE_WINDOWS_FHT(8) +RABITQ_DECLARE_WINDOWS_FHT(9) +RABITQ_DECLARE_WINDOWS_FHT(10) +RABITQ_DECLARE_WINDOWS_FHT(11) +RABITQ_DECLARE_WINDOWS_FHT(12) + +#undef RABITQ_DECLARE_WINDOWS_FHT + +template +void CheckWindowsFhtHelpers(const std::array& helpers) { + for (size_t log_n = 1; log_n <= helpers.size(); ++log_n) { + SCOPED_TRACE(log_n); + const size_t dim = size_t{1} << log_n; + std::vector actual(dim), expected(dim); + for (size_t i = 0; i < dim; ++i) { + actual[i] = expected[i] = static_cast(static_cast(i * 37 % 101) - 50); + } + for (size_t width = 1; width < dim; width *= 2) { + for (size_t block = 0; block < dim; block += width * 2) { + for (size_t i = 0; i < width; ++i) { + const T a = expected[block + i], b = expected[block + width + i]; + expected[block + i] = a + b; + expected[block + width + i] = a - b; + } + } + } + helpers[log_n - 1](actual.data()); + EXPECT_EQ(actual, expected); + } +} + +TEST(FhtWindowsAssemblyTest, FloatAndDoubleHelpersMatchScalarButterflies) { + if (!cpu::has_avx2()) { + GTEST_SKIP() << "Windows FHT assembly requires AVX"; + } + CheckWindowsFhtHelpers({ + rabitq_fht_avx_float_1, + rabitq_fht_avx_float_2, + rabitq_fht_avx_float_3, + rabitq_fht_avx_float_4, + rabitq_fht_avx_float_5, + rabitq_fht_avx_float_6, + rabitq_fht_avx_float_7, + rabitq_fht_avx_float_8, + rabitq_fht_avx_float_9, + rabitq_fht_avx_float_10, + rabitq_fht_avx_float_11, + rabitq_fht_avx_float_12, + }); + CheckWindowsFhtHelpers({ + rabitq_fht_avx_double_1, + rabitq_fht_avx_double_2, + rabitq_fht_avx_double_3, + rabitq_fht_avx_double_4, + rabitq_fht_avx_double_5, + rabitq_fht_avx_double_6, + rabitq_fht_avx_double_7, + rabitq_fht_avx_double_8, + rabitq_fht_avx_double_9, + rabitq_fht_avx_double_10, + rabitq_fht_avx_double_11, + rabitq_fht_avx_double_12, + }); +} +#endif + TEST(MatrixRotatorTest, PreservesOverlappingInputAndOutput) { rotator_impl::MatrixRotator rotator(3, 3); const float matrix[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; diff --git a/tests/unit/rabitqlib/utils/space_test.cpp b/tests/unit/rabitqlib/utils/space_test.cpp index 7f390347..ac66889d 100644 --- a/tests/unit/rabitqlib/utils/space_test.cpp +++ b/tests/unit/rabitqlib/utils/space_test.cpp @@ -5,8 +5,8 @@ #include #include #include -#include #include +#include #include #include "rabitqlib/simd/pack_excode_dispatch.hpp" @@ -71,45 +71,91 @@ TEST(WarmupIpX0Q, SupportsUnalignedCodes) { for (size_t dim : {64UL, 128UL, 192UL, 448UL, 512UL, 576UL}) { SCOPED_TRACE(dim); std::vector data_bits(dim); - std::vector query_bits(dim); size_t data_popcount = 0; - size_t intersection_popcount = 0; for (size_t i = 0; i < dim; ++i) { data_bits[i] = (i % 3) == 0; - query_bits[i] = (i % 5) == 0; data_popcount += data_bits[i] != 0; - intersection_popcount += data_bits[i] != 0 && query_bits[i] != 0; } std::vector storage((dim / 8) + 1); auto* codes = storage.data() + 1; ASSERT_NE(reinterpret_cast(codes) % alignof(uint64_t), 0U); pack_binary_to_bytes(data_bits.data(), codes, dim); - std::vector query(dim / 64); - pack_binary(query_bits.data(), query.data(), dim); - const float expected = delta * static_cast(intersection_popcount) + - vl * static_cast(data_popcount); - if (cpu::has_avx2()) { - EXPECT_FLOAT_EQ( - simd::warmup_ip_x0_q_512_avx2(codes, query.data(), delta, vl, dim, 1), - expected - ); - } - if (cpu::has_avx512_popcnt()) { - EXPECT_FLOAT_EQ( - simd::warmup_ip_x0_q_512_avx512(codes, query.data(), delta, vl, dim, 1), - expected - ); - } - if (cpu::has_avx2()) { - EXPECT_FLOAT_EQ( - warmup_ip_x0_q_512(codes, query.data(), delta, vl, dim, 1), expected - ); + for (size_t b_query : {1UL, 4UL, 8UL}) { + SCOPED_TRACE(b_query); + std::vector query_values(dim); + size_t weighted_intersection = 0; + for (size_t i = 0; i < dim; ++i) { + query_values[i] = + static_cast((i * 37 + 11) & ((1U << b_query) - 1)); + if (data_bits[i] != 0) { + weighted_intersection += query_values[i]; + } + } + + std::vector query((dim / 64) * b_query, 0); + size_t query_offset = 0; + for (size_t block = 0; block < dim; block += 512) { + const size_t block_dim = (dim - block < 512) ? dim - block : 512; + const size_t chunks = block_dim / 64; + for (size_t bit = 0; bit < b_query; ++bit) { + for (size_t chunk = 0; chunk < chunks; ++chunk) { + uint64_t packed = 0; + for (size_t k = 0; k < 64; ++k) { + const size_t i = block + chunk * 64 + k; + packed |= static_cast((query_values[i] >> bit) & 1U) + << (63 - k); + } + query[query_offset + bit * chunks + chunk] = packed; + } + } + query_offset += chunks * b_query; + } + + const float expected = delta * static_cast(weighted_intersection) + + vl * static_cast(data_popcount); + if (cpu::has_avx2()) { + EXPECT_FLOAT_EQ( + simd::warmup_ip_x0_q_512_avx2( + codes, query.data(), delta, vl, dim, b_query + ), + expected + ); + EXPECT_FLOAT_EQ( + warmup_ip_x0_q_512(codes, query.data(), delta, vl, dim, b_query), + expected + ); + } + if (cpu::has_avx512_popcnt()) { + EXPECT_FLOAT_EQ( + simd::warmup_ip_x0_q_512_avx512( + codes, query.data(), delta, vl, dim, b_query + ), + expected + ); + } } } } +TEST(WarmupIpX0Q, RejectsQueryWidthsBeyondByte) { + const std::array data{}; + const std::array query{}; + if (cpu::has_avx2()) { + EXPECT_THROW( + simd::warmup_ip_x0_q_512_avx2(data.data(), query.data(), 1.0F, 0.0F, 64, 9), + std::invalid_argument + ); + } + if (cpu::has_avx512_popcnt()) { + EXPECT_THROW( + simd::warmup_ip_x0_q_512_avx512(data.data(), query.data(), 1.0F, 0.0F, 64, 9), + std::invalid_argument + ); + } +} + TEST(Select_IP_Func, returns_stable_function_pointer) { auto ip_func = select_excode_ipfunc(0); ASSERT_NE(ip_func, nullptr); @@ -209,8 +255,10 @@ TEST(ScalarQuantize, Uint16MatchesRoundedScalar) { ASSERT_EQ(result, expected); } +constexpr size_t kScalarQuantizeTestDim = 33; + TEST(ScalarQuantize, HalfValuesMatchScalarAcrossVectorBoundaries) { - constexpr size_t dim = 33; + constexpr size_t dim = kScalarQuantizeTestDim; const std::array values{ 0.5F, 1.5F, @@ -232,8 +280,8 @@ TEST(ScalarQuantize, HalfValuesMatchScalarAcrossVectorBoundaries) { } const auto check = [&](auto quantize8, auto quantize16) { - std::array actual8{}; - std::array actual16{}; + std::array actual8{}; + std::array actual16{}; quantize8(actual8.data(), input.data(), dim, 0.0F, 1.0F); quantize16(actual16.data(), input.data(), dim, 0.0F, 1.0F); EXPECT_EQ(actual8, expected8); @@ -250,40 +298,45 @@ TEST(ScalarQuantize, HalfValuesMatchScalarAcrossVectorBoundaries) { } TEST(ip16_fxu1_avx, ip_works) { - srand(42); constexpr size_t dim = 64; float query[dim]; uint8_t codes[dim / 8]; for (size_t i = 0; i < dim; ++i) { - query[i] = static_cast(rand()) / RAND_MAX * 1000.0f; + query[i] = static_cast((i * 37 + 11) % 101) * 0.25F; } for (size_t i = 0; i < dim / 8; ++i) { - codes[i] = static_cast(rand() % 256); + codes[i] = static_cast(i * 53 + 19); } - ASSERT_NEAR( - rabitqlib::excode_ipimpl::ip16_fxu1_avx(query, codes, dim), 15055.81f, 0.1f - ); + float expected = 0.0F; + for (size_t i = 0; i < dim; ++i) { + expected += query[i] * static_cast((codes[i / 8] >> (i % 8)) & 1U); + } + ASSERT_NEAR(rabitqlib::excode_ipimpl::ip16_fxu1_avx(query, codes, dim), expected, 0.1F); } TEST(ip64_fxu2_avx, ip_works) { - srand(42); constexpr size_t dim = 64 * 4; float query[dim]; uint8_t codes[dim / 4]; for (size_t i = 0; i < dim; ++i) { - query[i] = static_cast(rand()) / RAND_MAX * 1000.0f; + query[i] = static_cast((i * 37 + 11) % 101) * 0.25F; } for (size_t i = 0; i < dim / 4; ++i) { - codes[i] = static_cast(rand() % 256); + codes[i] = static_cast(i * 53 + 19); + } + + float expected = 0.0F; + for (size_t i = 0; i < dim; ++i) { + const uint8_t packed = codes[(i / 64) * 16 + (i % 16)]; + const auto code = static_cast((packed >> (2 * ((i % 64) / 16))) & 3U); + expected += query[i] * static_cast(code); } - ASSERT_NEAR( - rabitqlib::excode_ipimpl::ip64_fxu2_avx(query, codes, dim), 217584.15f, 0.1f - ); + ASSERT_NEAR(rabitqlib::excode_ipimpl::ip64_fxu2_avx(query, codes, dim), expected, 0.1F); } TEST(OddBitExcodeIp, MatchesScalarInnerProduct) { From fc0fe4c40c8edf1218abae587027a3b4cd2973ed Mon Sep 17 00:00:00 2001 From: gouyt13 Date: Tue, 22 Sep 2026 21:29:45 +0800 Subject: [PATCH 2/6] Fix Windows MSVC behavior and move CI to VS 2026 --- .github/workflows/python.yml | 4 ++-- .github/workflows/release.yml | 2 +- .github/workflows/test.yaml | 6 +++--- CMakeLists.txt | 3 +++ include/rabitqlib/fastscan/fastscan.hpp | 4 +++- src/simd/fastscan_avx2.cpp | 4 +++- src/simd/fastscan_avx512.cpp | 4 +++- src/simd/fastscan_generic.cpp | 4 +++- tests/README.md | 9 +++++---- 9 files changed, 26 insertions(+), 14 deletions(-) diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 961adcb1..8291abd2 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -70,8 +70,8 @@ jobs: python-windows: needs: changes if: ${{ !cancelled() && (needs.changes.result != 'success' || needs.changes.outputs.python_build == 'true') }} - name: Python Windows x86-64 - runs-on: windows-2022 + name: Python Windows x86-64 (VS 2026) + runs-on: windows-2025-vs2026 timeout-minutes: 45 steps: - uses: actions/checkout@v7 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 03262fd6..cb02e8b5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -102,7 +102,7 @@ jobs: !cancelled() && needs.prepare.result == 'success' && needs.prepare.outputs.build == 'true' && (needs.changes.result != 'success' || needs.changes.outputs.wheels == 'true') - runs-on: windows-2022 + runs-on: windows-2025-vs2026 timeout-minutes: 90 steps: - uses: actions/checkout@v7 diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index d0c3ce3a..3d54f39e 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -128,14 +128,14 @@ jobs: windows: needs: changes if: ${{ !cancelled() && (needs.changes.result != 'success' || needs.changes.outputs.cpp == 'true') }} - name: Windows x86-64 - runs-on: windows-2022 + name: Windows x86-64 (VS 2026) + runs-on: windows-2025-vs2026 timeout-minutes: 45 steps: - uses: actions/checkout@v7 - name: Configure run: >- - cmake -S . -B build-windows -G "Visual Studio 17 2022" -A x64 + cmake -S . -B build-windows -G "Visual Studio 18 2026" -A x64 -DRABITQ_BUILD_TESTS=ON -DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF - name: Build diff --git a/CMakeLists.txt b/CMakeLists.txt index ec03fa05..1ad4d107 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,9 @@ if(MSVC) # MSVC spells the GNU restrict extension differently. Public headers use # __restrict__, so consumers need the same definition as the library. target_compile_definitions(rabitq_compile_options INTERFACE __restrict__=__restrict) + # Eigen's inline code must have one ISA-independent definition across the + # generic, AVX2, and AVX-512 translation units on MSVC. + target_compile_definitions(rabitq_compile_options INTERFACE EIGEN_DONT_VECTORIZE) endif() if(RABITQ_ENABLE_SANITIZERS) target_compile_options(rabitq_compile_options INTERFACE diff --git a/include/rabitqlib/fastscan/fastscan.hpp b/include/rabitqlib/fastscan/fastscan.hpp index 9f74b379..7e531103 100644 --- a/include/rabitqlib/fastscan/fastscan.hpp +++ b/include/rabitqlib/fastscan/fastscan.hpp @@ -131,8 +131,10 @@ void accumulate( template inline void pack_lut(size_t dim, const T* __restrict__ query, T* __restrict__ lut) { size_t num_codebook = dim >> 2; + // Preserve +0 when the first selected coordinate is -0. + volatile T zero = 0; for (size_t i = 0; i < num_codebook; ++i) { - lut[0] = 0; + lut[0] = zero; for (size_t j = 1; j < 16; ++j) { lut[j] = lut[j - LOWBIT(j)] + query[kPos[j]]; } diff --git a/src/simd/fastscan_avx2.cpp b/src/simd/fastscan_avx2.cpp index 8f7e10fe..96d30a40 100644 --- a/src/simd/fastscan_avx2.cpp +++ b/src/simd/fastscan_avx2.cpp @@ -12,8 +12,10 @@ namespace rabitqlib::fastscan::simd { void pack_lut_avx2(size_t dim, const float* query, float* lut) { + // Keep the initial +0 addition observable for signed-zero inputs. + volatile float zero = 0; for (size_t group = 0; group < dim / 4; ++group) { - __m256 lo = _mm256_setzero_ps(); + __m256 lo = _mm256_set1_ps(zero); __m256 hi = _mm256_add_ps(lo, _mm256_set1_ps(query[0])); const __m256 q1 = _mm256_set1_ps(query[1]); const __m256 q2 = _mm256_set1_ps(query[2]); diff --git a/src/simd/fastscan_avx512.cpp b/src/simd/fastscan_avx512.cpp index 6b0f7a17..af2696bc 100644 --- a/src/simd/fastscan_avx512.cpp +++ b/src/simd/fastscan_avx512.cpp @@ -12,10 +12,12 @@ namespace rabitqlib::fastscan::simd { void pack_lut_avx512(size_t dim, const float* query, float* lut) { + // Keep the initial +0 addition observable for signed-zero inputs. + volatile float zero = 0; for (size_t group = 0; group < dim / 4; ++group) { // Lane n represents the subset selected by the four bits of n. // Masked additions preserve both the coordinate order and the initial +0. - __m512 values = _mm512_setzero_ps(); + __m512 values = _mm512_set1_ps(zero); values = _mm512_mask_add_ps(values, 0xFF00, values, _mm512_set1_ps(query[0])); values = _mm512_mask_add_ps(values, 0xF0F0, values, _mm512_set1_ps(query[1])); values = _mm512_mask_add_ps(values, 0xCCCC, values, _mm512_set1_ps(query[2])); diff --git a/src/simd/fastscan_generic.cpp b/src/simd/fastscan_generic.cpp index 52c6644b..6a20fb1e 100644 --- a/src/simd/fastscan_generic.cpp +++ b/src/simd/fastscan_generic.cpp @@ -6,8 +6,10 @@ namespace rabitqlib::fastscan::simd { void pack_lut_generic(size_t dim, const float* query, float* lut) { + // Keep the initial +0 addition observable; MSVC otherwise turns +0 + -0 into -0. + volatile float zero = 0; for (size_t group = 0; group < dim / 4; ++group) { - lut[0] = 0; + lut[0] = zero; for (size_t j = 1; j < 16; ++j) { lut[j] = lut[j - LOWBIT(j)] + query[kPos[j]]; } diff --git a/tests/README.md b/tests/README.md index 09a11c42..430aea88 100644 --- a/tests/README.md +++ b/tests/README.md @@ -5,17 +5,18 @@ binding tests for RaBitQ Library. ## Prerequisites -- CMake 3.20 or newer for the `ctest --test-dir` commands below -- A C++17 compiler with OpenMP support (GCC, Clang, or Visual Studio 2022) +- CMake 3.20 or newer for the `ctest --test-dir` commands below (4.2 or newer + for the Visual Studio 2026 generator) +- A C++17 compiler with OpenMP support (GCC, Clang, or Visual Studio 2026) - An x86-64 CPU supported by RaBitQ's AVX2 or AVX-512 runtime dispatch - Git and network access during the first configuration so CMake can download GoogleTest 1.14.0 -On Windows, install Visual Studio 2022 with the Desktop development with C++ +On Windows, install Visual Studio 2026 with the Desktop development with C++ workload. Configure with its x64 generator: ```powershell -cmake -S . -B build -G "Visual Studio 17 2022" -A x64 -DRABITQ_BUILD_TESTS=ON -DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF +cmake -S . -B build -G "Visual Studio 18 2026" -A x64 -DRABITQ_BUILD_TESTS=ON -DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF cmake --build build --config Release ctest --test-dir build -C Release --output-on-failure ``` From a6bf38c99723b30d49f6a3172cf49565beb1a9b5 Mon Sep 17 00:00:00 2001 From: gouyt13 Date: Tue, 22 Sep 2026 22:39:19 +0800 Subject: [PATCH 3/6] Fix MSVC SIMD dispatch and cross-platform persistence paths --- .github/workflows/python.yml | 4 +- AGENTS.md | 5 ++ CMakeLists.txt | 3 ++ DEVELOPMENT.md | 7 +++ README.md | 24 ++++----- include/rabitqlib/index/hnsw/hnsw.hpp | 5 +- include/rabitqlib/index/ivf/ivf.hpp | 5 +- include/rabitqlib/third/hnswlib/hnswalg.h | 5 +- include/rabitqlib/utils/cpu_features.hpp | 4 ++ include/rabitqlib/utils/io.hpp | 13 +++-- include/rabitqlib/utils/path.hpp | 17 +++++++ src/index/qg.cpp | 5 +- src/utils/cpu_features.cpp | 25 ++++++++-- tests/README.md | 6 +-- tests/python/test_persistence_paths.py | 40 +++++++++++++++ .../unit/rabitqlib/index/initializer_test.cpp | 23 +++++++++ .../rabitqlib/utils/cpu_features_test.cpp | 33 +++++++++++++ tests/unit/rabitqlib/utils/io_test.cpp | 49 +++++++++++++++++++ 18 files changed, 240 insertions(+), 33 deletions(-) create mode 100644 include/rabitqlib/utils/path.hpp create mode 100644 tests/python/test_persistence_paths.py diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 8291abd2..f824817b 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -81,5 +81,5 @@ jobs: cache: pip - name: Build and install package run: python -m pip install ".[test]" -v - - name: Test IVF and HNSW bindings - run: python -m pytest tests/python/test_ivf.py tests/python/test_hnsw.py --tb=short -q + - name: Test Python bindings + run: python -m pytest tests/python --tb=short -q diff --git a/AGENTS.md b/AGENTS.md index 6872966f..4d1c7954 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -148,6 +148,11 @@ Recommended: ### Persistence and Python boundaries +Filesystem path strings are UTF-8 on Windows and native path bytes on POSIX. Use +`io_impl::filesystem_path` from `utils/path.hpp` before opening files or querying +filesystem metadata, including IVF's HNSW sidecar. It converts UTF-8 to native Unicode +on Windows and preserves existing path bytes on Linux/macOS. + Never silently reinterpret an old index file. Format changes require a magic/version discriminator, validated sizes before allocation, checked reads, and a compatibility fixture or explicit rejection path. Review each affected index format; preserve SymphonyQG's versioned quantized format and legacy diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ad4d107..270f0bb5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,7 @@ option(RABITQ_BUILD_SAMPLES "Build C++ sample programs" ON) option(RABITQ_BUILD_TESTS "Build C++ tests" OFF) option(RABITQ_BUILD_PYTHON_BINDINGS "Build Python bindings" OFF) option(RABITQ_ENABLE_SANITIZERS "Enable AddressSanitizer and UndefinedBehaviorSanitizer" OFF) +# Enable native tuning for local builds; release wheels explicitly set this OFF. option( RABITQ_ENABLE_NATIVE_OPTIMIZATION "Optimize generic code for the build machine" @@ -131,6 +132,8 @@ if(MSVC) ${RABITQ_AVX2_SOURCES} ${RABITQ_HNSW_AVX2_SOURCES} PROPERTIES COMPILE_OPTIONS "/arch:AVX2" ) + # MSVC enables the complete F/CD/VL/BW/DQ group. Keep the optional + # backend's runtime guard in cpu_features.cpp aligned with this flag. set_source_files_properties( ${RABITQ_AVX512_SOURCES} ${RABITQ_AVX512_POPCNT_SOURCES} ${RABITQ_HNSW_AVX512_CORE_SOURCES} ${RABITQ_HNSW_AVX512_POPCNT_SOURCES} diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 0c2c2b75..f2d7eb3c 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -266,6 +266,13 @@ must happen in generic code first. - Preserve stricter predicates: population-count kernels need AVX512_VPOPCNTDQ, and HNSW's AVX-512 core variant also needs AVX2 for its warmup implementation. Do not infer support from a backend name or from `__AVX*__` macros in a public header. + All AVX-512 backends require AVX2, which GCC/Clang also enable with `-mavx512f`. + MSVC's `/arch:AVX512` additionally requires AVX512VL and AVX512CD; keep these checks + synchronized with the compiler flags. This optional target follows the compiler-group + approach documented in [NumPy's MSVC compatibility rules](https://numpy.org/doc/1.26/reference/simd/build-options.html#on-x86-microsoft-visual-c-c). + Missing group features select the AVX2 fallback; they do not raise the library's minimum + CPU requirements. Native tuning defaults to on for local builds and must be explicitly + disabled for distributed builds; release wheels already set it to off. - Put calculations and scratch-storage helpers outside the dispatcher. Shared implementation headers use internal linkage so independently compiled backends retain their own bodies. Include the FFHT implementation inside the private kernel namespace for the same reason. diff --git a/README.md b/README.md index 30cad720..8f41f554 100644 --- a/README.md +++ b/README.md @@ -94,6 +94,9 @@ Python bindings are also available for `HnswIndex` and `SymqgIndex`. See the [Python examples](sample/python/) for index construction, querying, and index persistence. +Index save/load paths are UTF-8 strings on Windows and native path bytes on POSIX +in C++; Python paths are Unicode strings on all platforms. +
Build the Python bindings from source @@ -220,17 +223,16 @@ and HNSW implementations, with links to the source code. - CMake 3.20 or newer - a C++17 compiler with OpenMP support -- an x86-64 CPU supported by the selected kernels: most paths accept either - AVX2 with FMA or AVX-512F/BW/DQ with FMA +- an x86-64 CPU with AVX2 and FMA
CPU dispatch details -Most SIMD entry points select AVX-512 kernels when AVX-512F, AVX-512BW, and -AVX-512DQ are detected; otherwise they use AVX2 when AVX2 and FMA are -available. AVX-512 VPOPCNTDQ enables additional popcount kernels. The HNSW -AVX-512 core path also checks for AVX2 and FMA. AVX-512 translation units are -compiled with FMA enabled. +AVX2 and FMA are the minimum CPU requirements. Optional AVX-512 kernels also +require AVX-512F/BW/DQ. MSVC builds additionally check AVX-512VL/CD because +`/arch:AVX512` enables the whole group; CPUs missing either feature use AVX2. +AVX-512 VPOPCNTDQ enables additional popcount kernels. All checks include +operating-system support for the required vector register state.
@@ -244,10 +246,10 @@ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release cmake --build build --parallel ``` -Release builds enable native CPU tuning by default. To build a binary that can -be moved between AVX2- and AVX-512-capable machines, configure with -`-DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF`; the ISA-specific kernels will still -be selected at runtime. +Native CPU tuning is on by default for local GCC/Clang builds (`-march=native`). +Set `-DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF` for distributed binaries to retain +the AVX2/FMA minimum and select optional ISA-specific kernels at runtime. +Release wheels explicitly disable native tuning. ### Use RaBitQ-Library in another C++ project diff --git a/include/rabitqlib/index/hnsw/hnsw.hpp b/include/rabitqlib/index/hnsw/hnsw.hpp index 15cd342d..22e72e52 100644 --- a/include/rabitqlib/index/hnsw/hnsw.hpp +++ b/include/rabitqlib/index/hnsw/hnsw.hpp @@ -31,6 +31,7 @@ #include "rabitqlib/simd/hnsw_dispatch.hpp" #include "rabitqlib/utils/buffer.hpp" #include "rabitqlib/utils/memory.hpp" +#include "rabitqlib/utils/path.hpp" #include "rabitqlib/utils/rotator.hpp" #include "rabitqlib/utils/space.hpp" #include "rabitqlib/utils/tools.hpp" @@ -444,7 +445,7 @@ inline HierarchicalNSW::HierarchicalNSW( inline HierarchicalNSW::~HierarchicalNSW() { free_memory(); } inline void HierarchicalNSW::save(const char* filename) const { - std::ofstream output(filename, std::ios::binary); + std::ofstream output(rabitqlib::io_impl::filesystem_path(filename), std::ios::binary); if (!output.is_open()) { throw std::runtime_error("HNSW: cannot open index file for writing"); } @@ -506,7 +507,7 @@ inline void HierarchicalNSW::load(const char* filename) { if (filename == nullptr || filename[0] == '\0') { throw std::invalid_argument("HNSW: index filename must not be empty"); } - std::ifstream input(filename, std::ios::binary); + std::ifstream input(rabitqlib::io_impl::filesystem_path(filename), std::ios::binary); if (!input.is_open()) { throw std::runtime_error("HNSW: cannot open index file"); } diff --git a/include/rabitqlib/index/ivf/ivf.hpp b/include/rabitqlib/index/ivf/ivf.hpp index d8f74be7..183e76e1 100644 --- a/include/rabitqlib/index/ivf/ivf.hpp +++ b/include/rabitqlib/index/ivf/ivf.hpp @@ -25,6 +25,7 @@ #include "rabitqlib/quantization/rabitq.hpp" #include "rabitqlib/utils/buffer.hpp" #include "rabitqlib/utils/memory.hpp" +#include "rabitqlib/utils/path.hpp" #include "rabitqlib/utils/rotator.hpp" #include "rabitqlib/utils/space.hpp" #include "rabitqlib/utils/tools.hpp" @@ -411,7 +412,7 @@ inline void IVF::save(const char* filename) const { throw std::invalid_argument("IVF save filename must not be empty"); } - std::ofstream output(filename, std::ios::binary); + std::ofstream output(rabitqlib::io_impl::filesystem_path(filename), std::ios::binary); output.exceptions(std::ios::failbit | std::ios::badbit); if (raw_reranking_) { output.write( @@ -463,7 +464,7 @@ inline void IVF::load(const char* filename) { if (filename == nullptr || filename[0] == '\0') { throw std::invalid_argument("IVF load filename must not be empty"); } - std::ifstream input(filename, std::ios::binary); + std::ifstream input(rabitqlib::io_impl::filesystem_path(filename), std::ios::binary); if (!input.is_open()) { throw std::runtime_error("Cannot open IVF index file"); } diff --git a/include/rabitqlib/third/hnswlib/hnswalg.h b/include/rabitqlib/third/hnswlib/hnswalg.h index a42bd690..701d0de4 100644 --- a/include/rabitqlib/third/hnswlib/hnswalg.h +++ b/include/rabitqlib/third/hnswlib/hnswalg.h @@ -9,6 +9,7 @@ #include #include #include +#include "rabitqlib/utils/path.hpp" namespace hnswlib { typedef unsigned int tableint; @@ -683,7 +684,7 @@ class HierarchicalNSW : public AlgorithmInterface { } void saveIndex(const std::string &location) { - std::ofstream output(location, std::ios::binary); + std::ofstream output(rabitqlib::io_impl::filesystem_path(location), std::ios::binary); std::streampos position; writeBinaryPOD(output, offsetLevel0_); @@ -714,7 +715,7 @@ class HierarchicalNSW : public AlgorithmInterface { void loadIndex(const std::string &location, SpaceInterface *s, size_t max_elements_i = 0) { - std::ifstream input(location, std::ios::binary); + std::ifstream input(rabitqlib::io_impl::filesystem_path(location), std::ios::binary); if (!input.is_open()) throw std::runtime_error("Cannot open file"); diff --git a/include/rabitqlib/utils/cpu_features.hpp b/include/rabitqlib/utils/cpu_features.hpp index fafe7d10..38605ace 100644 --- a/include/rabitqlib/utils/cpu_features.hpp +++ b/include/rabitqlib/utils/cpu_features.hpp @@ -11,6 +11,8 @@ struct Features { bool avx512bw = false; bool avx512dq = false; bool avx512vpopcntdq = false; + bool avx512vl = false; + bool avx512cd = false; }; const Features& features(); @@ -20,6 +22,8 @@ bool has_avx512_popcnt(); namespace detail { +bool supports_avx512_core(const Features& detected); + Features filter_usable_features( const Features& hardware, bool avx, bool osxsave, uint64_t xcr0 ); diff --git a/include/rabitqlib/utils/io.hpp b/include/rabitqlib/utils/io.hpp index 3bf2ff45..3a61f5a9 100644 --- a/include/rabitqlib/utils/io.hpp +++ b/include/rabitqlib/utils/io.hpp @@ -11,6 +11,8 @@ #include #include +#include "rabitqlib/utils/path.hpp" + namespace rabitqlib { namespace io_impl { @@ -51,14 +53,17 @@ void read_value(std::ifstream& input, T& value, const char* description) { // get num of bytes inline size_t get_filesize(const char* filename) { - const auto file_size = std::filesystem::file_size(filename); + const auto file_size = + std::filesystem::file_size(rabitqlib::io_impl::filesystem_path(filename)); if (file_size > std::numeric_limits::max()) { throw std::length_error("File is too large to address"); } return static_cast(file_size); } -inline bool file_exists(const char* filename) { return std::filesystem::exists(filename); } +inline bool file_exists(const char* filename) { + return std::filesystem::exists(rabitqlib::io_impl::filesystem_path(filename)); +} // load .*vecs file to a matrix (e.g., RowMajorFloatMat) template @@ -73,7 +78,7 @@ void load_vecs(const char* filename, M& row_mat) { if (file_size < sizeof(uint32_t)) { throw std::runtime_error("Vector file is too small to contain a dimension"); } - std::ifstream input(filename, std::ios::binary); + std::ifstream input(rabitqlib::io_impl::filesystem_path(filename), std::ios::binary); if (!input.is_open()) { throw std::runtime_error("Cannot open vector file: " + std::string(filename)); } @@ -122,7 +127,7 @@ void load_bin(const char* filename, M& row_mat) { if (file_size < 2 * sizeof(uint32_t)) { throw std::runtime_error("Binary matrix file is too small to contain its header"); } - std::ifstream input(filename, std::ios::binary); + std::ifstream input(rabitqlib::io_impl::filesystem_path(filename), std::ios::binary); if (!input.is_open()) { throw std::runtime_error( "Cannot open binary matrix file: " + std::string(filename) diff --git a/include/rabitqlib/utils/path.hpp b/include/rabitqlib/utils/path.hpp new file mode 100644 index 00000000..b8520d5c --- /dev/null +++ b/include/rabitqlib/utils/path.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include +#include + +namespace rabitqlib::io_impl { + +// Windows API strings are UTF-8; POSIX API strings retain their native bytes. +inline std::filesystem::path filesystem_path(std::string_view filename) { +#if defined(_WIN32) + return std::filesystem::u8path(filename); +#else + return std::filesystem::path(filename); +#endif +} + +} // namespace rabitqlib::io_impl diff --git a/src/index/qg.cpp b/src/index/qg.cpp index 59dcfcdb..696b0b09 100644 --- a/src/index/qg.cpp +++ b/src/index/qg.cpp @@ -26,6 +26,7 @@ #include "rabitqlib/utils/buffer.hpp" #include "rabitqlib/utils/io.hpp" #include "rabitqlib/utils/memory.hpp" +#include "rabitqlib/utils/path.hpp" #include "rabitqlib/utils/rotator.hpp" #include "rabitqlib/utils/space.hpp" #include "rabitqlib/utils/visited_set.hpp" @@ -261,7 +262,7 @@ void QuantizedGraph::save(const char* filename) const { if (filename == nullptr || filename[0] == '\0') { throw std::invalid_argument("QuantizedGraph save filename must not be empty"); } - std::ofstream output(filename, std::ios::binary); + std::ofstream output(rabitqlib::io_impl::filesystem_path(filename), std::ios::binary); if (!output.is_open()) { throw std::runtime_error("Cannot open quantized graph file for writing"); } @@ -316,7 +317,7 @@ void QuantizedGraph::load(const char* filename) { throw std::runtime_error("Quantized graph file does not exist"); } - std::ifstream input(filename, std::ios::binary); + std::ifstream input(rabitqlib::io_impl::filesystem_path(filename), std::ios::binary); if (!input.is_open()) { throw std::runtime_error("Cannot open quantized graph file"); } diff --git a/src/utils/cpu_features.cpp b/src/utils/cpu_features.cpp index 920d10a8..6ddba80f 100644 --- a/src/utils/cpu_features.cpp +++ b/src/utils/cpu_features.cpp @@ -78,7 +78,8 @@ Features detect_features() { if (max_leaf >= 7) { // leaf 7 (subleaf 0): EBX[5]=AVX2, EBX[16]=AVX512F, - // EBX[17]=AVX512DQ, EBX[30]=AVX512BW, + // EBX[17]=AVX512DQ, EBX[28]=AVX512CD, + // EBX[30]=AVX512BW, EBX[31]=AVX512VL, // ECX[14]=AVX512_VPOPCNTDQ. uint32_t l7_eax = 0; uint32_t l7_ebx = 0; @@ -90,6 +91,8 @@ Features detect_features() { hardware.avx512f = ((l7_ebx >> 16) & 1U) != 0; hardware.avx512dq = ((l7_ebx >> 17) & 1U) != 0; hardware.avx512bw = ((l7_ebx >> 30) & 1U) != 0; + hardware.avx512vl = ((l7_ebx >> 31) & 1U) != 0; + hardware.avx512cd = ((l7_ebx >> 28) & 1U) != 0; hardware.avx512vpopcntdq = ((l7_ecx >> 14) & 1U) != 0; } @@ -120,9 +123,24 @@ Features filter_usable_features( usable.avx512bw = hardware.avx512bw && avx512_state_enabled; usable.avx512dq = hardware.avx512dq && avx512_state_enabled; usable.avx512vpopcntdq = hardware.avx512vpopcntdq && avx512_state_enabled; + usable.avx512vl = hardware.avx512vl && avx512_state_enabled; + usable.avx512cd = hardware.avx512cd && avx512_state_enabled; return usable; } +bool supports_avx512_core(const Features& detected) { +#if defined(_MSC_VER) + // /arch:AVX512 enables the entire F/CD/VL/BW/DQ group. These are + // requirements of this optional backend; AVX2 remains the fallback. + if (!detected.avx512vl || !detected.avx512cd) { + return false; + } +#endif + // GCC/Clang also enable AVX2 when compiling with -mavx512f. + return detected.avx2 && detected.fma && detected.avx512f && detected.avx512bw && + detected.avx512dq; +} + } // namespace detail const Features& features() { @@ -135,10 +153,7 @@ bool has_avx2() { return detected.avx2 && detected.fma; } -bool has_avx512_core() { - const Features& detected = features(); - return detected.fma && detected.avx512f && detected.avx512bw && detected.avx512dq; -} +bool has_avx512_core() { return detail::supports_avx512_core(features()); } bool has_avx512_popcnt() { return has_avx512_core() && features().avx512vpopcntdq; } diff --git a/tests/README.md b/tests/README.md index 430aea88..0101b23f 100644 --- a/tests/README.md +++ b/tests/README.md @@ -42,9 +42,9 @@ ctest --test-dir build --output-on-failure The combined test executable is also available as `build/tests/rabitq_tests`. -Release builds use native CPU tuning by default. Pass -`-DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF` when the resulting test binary must -run on a different AVX2- or AVX-512-capable machine. +Native CPU tuning is on by default for local GCC/Clang builds. Pass +`-DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF` for portable test binaries that may +run on a different CPU from the build machine. ### Building without Tests diff --git a/tests/python/test_persistence_paths.py b/tests/python/test_persistence_paths.py new file mode 100644 index 00000000..912c2dda --- /dev/null +++ b/tests/python/test_persistence_paths.py @@ -0,0 +1,40 @@ +"""Index persistence uses UTF-8 paths, including on Windows.""" + +import numpy as np +import pytest +from rabitqlib import HnswIndex, IvfIndex, SymqgIndex + + +@pytest.mark.parametrize("kind", ["ivf", "ivf_raw", "hnsw", "qg", "qg4", "qg8"]) +@pytest.mark.parametrize("unicode_directory", [False, True]) +def test_unicode_path_round_trip(tmp_path, kind, unicode_directory): + data = np.random.default_rng(42).standard_normal((64, 64)).astype(np.float32) + if kind.startswith("ivf"): + index = IvfIndex(64, 64, 1, nbits=32 if kind == "ivf_raw" else 4) + elif kind == "hnsw": + index = HnswIndex(64, 64, M=4, nbits=4) + else: + bits = {"qg": 0, "qg4": 4, "qg8": 8}[kind] + index = SymqgIndex(64, max_degree=32, quantization_bits=bits) + + if kind.startswith("qg"): + index.build(data, ef_construction=64) + search_args = {"ef": 64} + else: + index.build(data, data.mean(axis=0, keepdims=True), np.zeros(64, np.uint32)) + search_args = {"nprobe": 1} if kind.startswith("ivf") else {"ef": 64} + + directory = tmp_path / "\u6d4b\u8bd5_\U0001f680" if unicode_directory else tmp_path + directory.mkdir(exist_ok=True) + path = directory / "\u7d22\u5f15_\U0001f680.index" + expected_ids, expected_distances = index.search(data[:3], k=5, **search_args) + index.save(str(path)) + assert path.is_file() # Catch successful writes to a mojibake filename. + + # Rename through Python's native Unicode path API before loading. + renamed = directory / "\u91cd\u547d\u540d.index" + path.rename(renamed) + loaded = type(index).load(str(renamed)) + ids, distances = loaded.search(data[:3], k=5, **search_args) + np.testing.assert_array_equal(ids, expected_ids) + np.testing.assert_array_equal(distances, expected_distances) diff --git a/tests/unit/rabitqlib/index/initializer_test.cpp b/tests/unit/rabitqlib/index/initializer_test.cpp index 2b9b91ec..f0804c5e 100644 --- a/tests/unit/rabitqlib/index/initializer_test.cpp +++ b/tests/unit/rabitqlib/index/initializer_test.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -16,6 +17,28 @@ namespace rabitqlib::ivf { namespace { +TEST(HNSWInitializerTest, PersistsUtf8SidecarPaths) { + const auto directory = std::filesystem::temp_directory_path() / + std::filesystem::u8path(u8"rabitq_\u6d4b\u8bd5_\U0001f680"); + std::filesystem::create_directories(directory); + const auto path = (directory / std::filesystem::u8path(u8"\u7d22\u5f15")).u8string(); + const std::array centroids{0.0F, 0.0F, 3.0F, 4.0F}; + HNSWInitializer initializer(2, 2); + initializer.add_vectors(centroids.data(), 1); + std::ofstream ignored_output; + initializer.save(ignored_output, path.c_str()); + EXPECT_TRUE(std::filesystem::is_regular_file(std::filesystem::u8path(path + ".hnsw"))); + HNSWInitializer loaded(2, 2); + std::ifstream ignored_input; + loaded.load(ignored_input, path.c_str()); + std::vector> candidates(1); + loaded.centroids_distances(centroids.data() + 2, 1, candidates); + EXPECT_EQ(candidates[0].id, 1U); + EXPECT_FLOAT_EQ(candidates[0].distance, 0.0F); + std::filesystem::remove(std::filesystem::u8path(path + ".hnsw")); + std::filesystem::remove(directory); +} + TEST(CentroidL2SpaceTest, MatchesDispatchedDistanceForUnalignedInputsAndTails) { for (size_t dim : {1U, 7U, 8U, 15U, 16U, 17U, 63U, 64U, 129U}) { CentroidL2Space space(dim); diff --git a/tests/unit/rabitqlib/utils/cpu_features_test.cpp b/tests/unit/rabitqlib/utils/cpu_features_test.cpp index 37829c0a..294160c1 100644 --- a/tests/unit/rabitqlib/utils/cpu_features_test.cpp +++ b/tests/unit/rabitqlib/utils/cpu_features_test.cpp @@ -14,6 +14,8 @@ rabitqlib::cpu::Features all_hardware_features() { true, true, true, + true, + true, }; } @@ -62,6 +64,8 @@ TEST(CpuFeatures, EnablesAvx2WithoutAvx512State) { EXPECT_FALSE(usable.avx512bw); EXPECT_FALSE(usable.avx512dq); EXPECT_FALSE(usable.avx512vpopcntdq); + EXPECT_FALSE(usable.avx512vl); + EXPECT_FALSE(usable.avx512cd); } TEST(CpuFeatures, EnablesAvx512OnlyWithCompleteAvx512State) { @@ -76,6 +80,8 @@ TEST(CpuFeatures, EnablesAvx512OnlyWithCompleteAvx512State) { EXPECT_TRUE(usable.avx512bw); EXPECT_TRUE(usable.avx512dq); EXPECT_TRUE(usable.avx512vpopcntdq); + EXPECT_TRUE(usable.avx512vl); + EXPECT_TRUE(usable.avx512cd); for (const uint64_t state_bit : {uint64_t{1} << 5, uint64_t{1} << 6, uint64_t{1} << 7}) { @@ -88,6 +94,33 @@ TEST(CpuFeatures, EnablesAvx512OnlyWithCompleteAvx512State) { EXPECT_FALSE(incomplete.avx512bw); EXPECT_FALSE(incomplete.avx512dq); EXPECT_FALSE(incomplete.avx512vpopcntdq); + EXPECT_FALSE(incomplete.avx512vl); + EXPECT_FALSE(incomplete.avx512cd); + } +} + +TEST(CpuFeatures, Avx512SelectionRequiresEveryCompilerEnabledFeature) { + using rabitqlib::cpu::Features; + using rabitqlib::cpu::detail::supports_avx512_core; + EXPECT_TRUE(supports_avx512_core(all_hardware_features())); + for (auto feature : + {&Features::avx2, + &Features::fma, + &Features::avx512f, + &Features::avx512bw, + &Features::avx512dq}) { + auto missing = all_hardware_features(); + missing.*feature = false; + EXPECT_FALSE(supports_avx512_core(missing)); + } + for (auto feature : {&Features::avx512vl, &Features::avx512cd}) { + auto missing = all_hardware_features(); + missing.*feature = false; +#if defined(_MSC_VER) + EXPECT_FALSE(supports_avx512_core(missing)); +#else + EXPECT_TRUE(supports_avx512_core(missing)); +#endif } } diff --git a/tests/unit/rabitqlib/utils/io_test.cpp b/tests/unit/rabitqlib/utils/io_test.cpp index 1aa3a9d2..03a30078 100644 --- a/tests/unit/rabitqlib/utils/io_test.cpp +++ b/tests/unit/rabitqlib/utils/io_test.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include @@ -40,6 +41,54 @@ TEST(VectorIoTest, LoadsCompleteConsistentRecords) { std::remove(path.c_str()); } +TEST(BinaryMatrixIoTest, LoadsUtf8PathsAndChecksTheirSize) { + const auto native_path = + std::filesystem::temp_directory_path() / + std::filesystem::u8path(u8"rabitq_\u6d4b\u8bd5_\U0001f680.bin"); + { + std::ofstream output(native_path, std::ios::binary); + write_value(output, uint32_t{1}); + write_value(output, uint32_t{1}); + write_value(output, 3.0F); + } + const auto path = native_path.u8string(); + EXPECT_TRUE(file_exists(path.c_str())); + EXPECT_EQ(get_filesize(path.c_str()), 12U); + RowMajorMatrix matrix; + load_bin(path.c_str(), matrix); + ASSERT_EQ(matrix.size(), 1); + EXPECT_FLOAT_EQ(matrix(0, 0), 3.0F); + std::filesystem::remove(native_path); +} + +#if !defined(_WIN32) +TEST(FilesystemPathTest, PreservesNativePosixBytes) { + const std::string filename = "rabitq_\xff.bin"; + EXPECT_EQ(io_impl::filesystem_path(filename).native(), filename); +} +#endif + +#if defined(__linux__) +TEST(BinaryMatrixIoTest, LoadsNonUtf8NativePaths) { + const auto native_path = std::filesystem::temp_directory_path() / "rabitq_\xff.bin"; + { + std::ofstream output(native_path, std::ios::binary); + ASSERT_TRUE(output.is_open()); + write_value(output, uint32_t{1}); + write_value(output, uint32_t{1}); + write_value(output, 3.0F); + } + const auto path = native_path.native(); + EXPECT_TRUE(file_exists(path.c_str())); + EXPECT_EQ(get_filesize(path.c_str()), 12U); + RowMajorMatrix matrix; + load_bin(path.c_str(), matrix); + ASSERT_EQ(matrix.size(), 1); + EXPECT_FLOAT_EQ(matrix(0, 0), 3.0F); + std::filesystem::remove(native_path); +} +#endif + TEST(VectorIoTest, RejectsInconsistentAndTruncatedRecordsWithoutReplacingOutput) { const std::string path = ::testing::TempDir() + "rabitq_invalid.fvecs"; RowMajorMatrix matrix(1, 1); From 5d30ebd27fcc56878106a46c0ecb211edff0f32f Mon Sep 17 00:00:00 2001 From: gouyt13 Date: Tue, 22 Sep 2026 22:43:29 +0800 Subject: [PATCH 4/6] Update readme --- README.md | 52 +++++++++++++++++++++------------------------------- 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/README.md b/README.md index 8f41f554..5ff3be75 100644 --- a/README.md +++ b/README.md @@ -35,16 +35,17 @@ ## News -- **September 2026 — IVF raw-vector reranking:** Set `nbits=32` to store raw - float32 vectors for reranking. IVF now selects HACC automatically for 4–9-bit - codes, using standard FastScan for 1–3 bits and raw vectors; manual overrides - remain available. See the [IVF documentation](docs/docs/index/ivf.md). +- **September 2026 — Windows x86-64 support:** C++ and Python source builds now + support MSVC, runtime AVX2/AVX-512 dispatch, and Unicode index paths. Windows + wheels are configured for the next release. See the [Windows build instructions](tests/README.md#prerequisites). -- **September 2026 — Quantized SymphonyQG:** SymphonyQG now supports optional - 4-bit and 8-bit RaBitQ vector storage. Select QG-quant with - `quantization_bits=4` or `quantization_bits=8`; vanilla raw-vector QG remains - the default. See the [SymphonyQG documentation](docs/docs/index/qg.md) for - details. +- **September 2026 — IVF raw-vector reranking:** Use `nbits=32` for float32 + reranking. Quantized IVF automatically selects HACC for 4–9-bit codes. + See the [IVF documentation](docs/docs/index/ivf.md). + +- **September 2026 — Quantized SymphonyQG:** Set `quantization_bits=4` or `8` + for compact vector storage; raw vectors remain the default. + See the [SymphonyQG documentation](docs/docs/index/qg.md). ## Install @@ -52,15 +53,12 @@ python -m pip install --upgrade rabitqlib ``` -Published wheels currently support Linux x86-64 with CPython 3.11–3.14. The -release workflow is configured to add Windows x86-64 wheels in the next release. -AVX2 and FMA are the CPU baseline; supported AVX-512 kernels are selected at -runtime. +Wheels: CPython 3.11–3.14 on Linux x86-64; Windows x86-64 is planned for the +next release. Requires AVX2 and FMA, with optional AVX-512 acceleration. ## Python quick start -The following complete example builds a small IVF index and searches it. It -uses deterministic synthetic data, so no dataset download is required. +Build and search a small IVF index using synthetic data: ```python import numpy as np @@ -101,7 +99,9 @@ in C++; Python paths are Unicode strings on all platforms. Build the Python bindings from source Source builds require a C++17 compiler, CMake 3.20 or newer, and OpenMP. On -Ubuntu or Debian: +Windows, install Visual Studio 2026 with the Desktop development with C++ +workload, then run `python -m pip install .` from the repository root. +On Ubuntu or Debian: ```bash sudo apt-get update @@ -225,17 +225,6 @@ and HNSW implementations, with links to the source code. - a C++17 compiler with OpenMP support - an x86-64 CPU with AVX2 and FMA -
-CPU dispatch details - -AVX2 and FMA are the minimum CPU requirements. Optional AVX-512 kernels also -require AVX-512F/BW/DQ. MSVC builds additionally check AVX-512VL/CD because -`/arch:AVX512` enables the whole group; CPUs missing either feature use AVX2. -AVX-512 VPOPCNTDQ enables additional popcount kernels. All checks include -operating-system support for the required vector register state. - -
- Clone and build the library and example programs: ```bash @@ -246,10 +235,11 @@ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release cmake --build build --parallel ``` -Native CPU tuning is on by default for local GCC/Clang builds (`-march=native`). -Set `-DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF` for distributed binaries to retain -the AVX2/FMA minimum and select optional ISA-specific kernels at runtime. -Release wheels explicitly disable native tuning. +For MSVC, follow the [Windows build instructions](tests/README.md#prerequisites). +Local GCC/Clang builds enable `-march=native` by default; set +`-DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF` for portable binaries, as release +wheels do. See [CPU dispatch details](DEVELOPMENT.md#dispatch-conventions-and-coverage) +for backend requirements and fallbacks. ### Use RaBitQ-Library in another C++ project From f8ec241f66d67dd6aadb1fa87146fa48679e6e99 Mon Sep 17 00:00:00 2001 From: gouyt13 Date: Tue, 22 Sep 2026 22:54:38 +0800 Subject: [PATCH 5/6] Update readme for test --- tests/README.md | 103 +++++++++++++++++++++++++----------------------- 1 file changed, 54 insertions(+), 49 deletions(-) diff --git a/tests/README.md b/tests/README.md index 0101b23f..24223f1f 100644 --- a/tests/README.md +++ b/tests/README.md @@ -8,18 +8,12 @@ binding tests for RaBitQ Library. - CMake 3.20 or newer for the `ctest --test-dir` commands below (4.2 or newer for the Visual Studio 2026 generator) - A C++17 compiler with OpenMP support (GCC, Clang, or Visual Studio 2026) -- An x86-64 CPU supported by RaBitQ's AVX2 or AVX-512 runtime dispatch +- An x86-64 CPU with AVX2 and FMA; AVX-512 is optional - Git and network access during the first configuration so CMake can download GoogleTest 1.14.0 On Windows, install Visual Studio 2026 with the Desktop development with C++ -workload. Configure with its x64 generator: - -```powershell -cmake -S . -B build -G "Visual Studio 18 2026" -A x64 -DRABITQ_BUILD_TESTS=ON -DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF -cmake --build build --config Release -ctest --test-dir build -C Release --output-on-failure -``` +workload. Use MSVC for all C++ targets, including SIMD kernels. On Ubuntu or Debian, install the required build tools with: @@ -28,62 +22,73 @@ sudo apt-get update sudo apt-get install -y git build-essential cmake libomp-dev ``` -## Building and Running Tests +## C++ tests -### Quick Start +### Quick start -From the project root directory: +Run from the repository root. Both configurations disable native tuning to +exercise the portable runtime-dispatch build. + +#### Windows (PowerShell) + +```powershell +cmake -S . -B build -G "Visual Studio 18 2026" -A x64 -DRABITQ_BUILD_TESTS=ON -DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF +cmake --build build --config Release --parallel +ctest --test-dir build -C Release --output-on-failure +``` + +#### Linux ```bash -cmake -S . -B build -DRABITQ_BUILD_TESTS=ON -DCMAKE_BUILD_TYPE=Release +cmake -S . -B build -DRABITQ_BUILD_TESTS=ON -DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF -DCMAKE_BUILD_TYPE=Release cmake --build build --parallel ctest --test-dir build --output-on-failure ``` -The combined test executable is also available as `build/tests/rabitq_tests`. +The combined executable is `build/tests/Release/rabitq_tests.exe` on Windows +and `build/tests/rabitq_tests` on Linux. To run a subset, add `-R ` to +the CTest command. -Native CPU tuning is on by default for local GCC/Clang builds. Pass -`-DRABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF` for portable test binaries that may -run on a different CPU from the build machine. +AVX-512 tests skip when the CPU or OS lacks the required features. Tests using +`/dev/full` skip on Windows; native POSIX path tests compile only on their +applicable platforms. Passing on an AVX2 machine does not verify AVX-512 execution. -### Building without Tests +## Python tests -By default, tests are **not built**, while the C++ samples are. To build only -the library: +Use an activated [project environment](../CONTRIBUTING.md#python-environment). +Rebuild and install the extension before testing C++ changes. These commands +work in PowerShell and Bash: -```bash -cmake -S . -B build \ - -DRABITQ_BUILD_SAMPLES=OFF \ - -DCMAKE_BUILD_TYPE=Release -cmake --build build --parallel +```text +python -m pip install ".[test]" -Ccmake.define.RABITQ_ENABLE_NATIVE_OPTIMIZATION=OFF +python -c "import rabitqlib._rabitqlib as ext; print(ext.__file__)" +python -m pytest tests/python -ra -q ``` +Confirm the printed extension path belongs to the intended environment. The +suite includes all three indexes, quantization, persistence, and Unicode paths. -## Test Structure +## Installed CMake package test +After building the library, verify that another project can consume its installed +headers and library. Use an absolute path for ``: + +```text +cmake --install build --config Release --prefix "" +cmake -S tests/consumer -B build-consumer "-DCMAKE_PREFIX_PATH=" +cmake --build build-consumer --config Release +ctest --test-dir build-consumer -C Release --output-on-failure ``` -tests/ -├── .gitignore -├── CMakeLists.txt # C++ targets and CTest discovery -├── README.md -├── common/ # Shared C++ test utilities -│ ├── test_data.hpp -│ ├── test_data.cpp -│ └── test_helpers.hpp -├── integration/ -│ └── bit_pack_unpack_test.cpp -├── python/ -│ ├── conftest.py -│ ├── test_hnsw.py -│ ├── test_import.py -│ ├── test_ivf.py -│ └── test_symqg.py -└── unit/rabitqlib/utils/ - ├── cpu_features_test.cpp - ├── rotator_test.cpp - ├── space_test.cpp - └── visited_set_test.cpp -``` -CMake discovers C++ files matching `*_test.cpp` under `unit/` and -`integration/`. The Python tests are run separately with `python -m pytest`. +On Windows, add `-G "Visual Studio 18 2026" -A x64` to the consumer configure command. + +## Test structure + +- `unit/`: C++ index, quantization, FastScan, and utility tests +- `integration/`: packing compatibility tests +- `common/`: shared C++ test utilities +- `python/`: Python binding tests and persistence fixtures +- `consumer/`: installed CMake package test + +CMake discovers `*_test.cpp` under `unit/` and `integration/`. Python and +consumer tests run separately using the commands above. From 64bacbbb724ef64c710c33afeac2e35e1ccd034c Mon Sep 17 00:00:00 2001 From: gouyt13clear Date: Tue, 22 Sep 2026 23:02:23 +0800 Subject: [PATCH 6/6] Align Windows quick-start compiler guidance with VS 2026 --- docs/docs/quick_start.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/quick_start.md b/docs/docs/quick_start.md index d222cf5f..2df4dfd0 100644 --- a/docs/docs/quick_start.md +++ b/docs/docs/quick_start.md @@ -10,7 +10,7 @@ a C++17 API for both indexes and low-level quantization. - Linux x86-64 and CPython 3.11–3.14 for currently published Python wheels; Windows x86-64 wheels are configured for the next release - For source builds: a C++17 compiler with OpenMP support and CMake 3.20 or newer; - Windows builds use Visual Studio 2022 with the C++ workload + Windows builds use Visual Studio 2026 with the C++ workload
CPU dispatch details @@ -33,7 +33,7 @@ python -m pip install rabitqlib Published Linux x86-64 wheels for CPython 3.11–3.14 do not require a compiler or CMake. Windows x86-64 wheels are configured for the next release; until then, -installing on Windows builds from source with Visual Studio 2022 and CMake. +installing on Windows builds from source with Visual Studio 2026 and CMake. AVX2 + FMA is the CPU baseline; supported AVX-512 kernels are selected at runtime.