/*
 * Copyright (c) 2021, Alliance for Open Media. All rights reserved
 *
 * This source code is subject to the terms of the BSD 3-Clause Clear License
 * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear
 * License was not distributed with this source code in the LICENSE file, you
 * can obtain it at aomedia.org/license/software-license/bsd-3-c-c/.  If the
 * Alliance for Open Media Patent License 1.0 was not distributed with this
 * source code in the PATENTS file, you can obtain it at
 * aomedia.org/license/patent-license/.
 */
#include <assert.h>
#include <immintrin.h>

#include "config/aom_config.h"
#include "config/av1_rtcd.h"
#include "aom_dsp/x86/synonyms.h"
#include "av1/common/idct.h"
#include "av1/common/txb_common.h"

void av1_highbd_inv_txfm_add_avx2(const tran_low_t *input, uint16_t *dest,
                                  int stride, const TxfmParam *txfm_param) {
  assert(av1_ext_tx_used[txfm_param->tx_set_type][txfm_param->tx_type]);
  inv_txfm(input, dest, stride, txfm_param);
}

// 256bit intrinsic implementation of ROUND_POWER_OF_TWO_SIGNED.
static INLINE __m256i round_power_of_two_signed_avx2(__m256i v_val_d,
                                                     int bits) {
  const __m256i v_bias_d = _mm256_set1_epi32((1 << bits) >> 1);
  const __m256i v_sign_d = _mm256_srai_epi32(v_val_d, 31);
  const __m256i v_tmp_d =
      _mm256_add_epi32(_mm256_add_epi32(v_val_d, v_bias_d), v_sign_d);
  return _mm256_srai_epi32(v_tmp_d, bits);
}

// Inverse secondary transform
void inv_stxfm_avx2(tran_low_t *src, tran_low_t *dst,
                    const PREDICTION_MODE mode, const uint8_t stx_idx,
                    const int size, const int bd) {
  assert(stx_idx < 4);
  const int32_t *kernel = (size == 0) ? ist_4x4_kernel_int32[mode][stx_idx][0]
                                      : ist_8x8_kernel_int32[mode][stx_idx][0];

  int reduced_width, reduced_height;
  if (size == 0) {
    reduced_height = IST_4x4_HEIGHT;
    reduced_width = IST_4x4_WIDTH;
  } else {
    reduced_height = (size == 1)
                         ? IST_8x8_HEIGHT_RED
                         : ((size == 3) ? IST_ADST_NZ_CNT : IST_8x8_HEIGHT);
    reduced_width = IST_8x8_WIDTH;
  }
  for (int j = 0; j < reduced_height; j++) {
    const int32_t *kernel_tmp = kernel;
    int *srcPtr = src;
    int *out = dst;
    __m256i tmpCoeff = _mm256_set1_epi32(srcPtr[j]);
    __m256i *tmpBlock = (__m256i *)out;
    for (int i = 0; i < reduced_width; i += 8, tmpBlock++) {
      __m256i tmp = _mm256_loadu_si256((__m256i *)(kernel_tmp + i));
      __m256i sum = _mm256_loadu_si256(tmpBlock);
      tmp = _mm256_mullo_epi32(tmpCoeff, tmp);
      tmp = _mm256_add_epi32(tmp, sum);
      _mm256_storeu_si256(tmpBlock, tmp);
    }
    kernel += reduced_width;
  }
  int *out = dst;
  __m256i *tmpBlock = (__m256i *)out;
  const __m256i max_value = _mm256_set1_epi32((1 << (7 + bd)) - 1);
  const __m256i min_value = _mm256_set1_epi32(-(1 << (7 + bd)));
  for (int j = 0; j < reduced_width; j += 8, tmpBlock++) {
    __m256i tmp = _mm256_loadu_si256(tmpBlock);
    tmp = round_power_of_two_signed_avx2(tmp, 7);
    tmp = _mm256_min_epi32(_mm256_max_epi32(tmp, min_value), max_value);
    _mm256_storeu_si256(tmpBlock, tmp);
  }
}

void transpose_load_8x8_avx2(const int *src, __m256i *b, int size) {
  __m256i a[8];

  a[0] = _mm256_loadu_si256((__m256i *)(src + 0 * size));
  a[1] = _mm256_loadu_si256((__m256i *)(src + 1 * size));
  a[2] = _mm256_loadu_si256((__m256i *)(src + 2 * size));
  a[3] = _mm256_loadu_si256((__m256i *)(src + 3 * size));
  a[4] = _mm256_loadu_si256((__m256i *)(src + 4 * size));
  a[5] = _mm256_loadu_si256((__m256i *)(src + 5 * size));
  a[6] = _mm256_loadu_si256((__m256i *)(src + 6 * size));
  a[7] = _mm256_loadu_si256((__m256i *)(src + 7 * size));

  __m256i t0 =
      _mm256_unpacklo_epi32(a[0], a[1]);  // { A0 B0 A1 B1 A4 B4 A5 B5 }
  __m256i t1 =
      _mm256_unpackhi_epi32(a[0], a[1]);  // { A2 B2 A3 B3 A6 B6 A7 B7 }
  __m256i t2 =
      _mm256_unpacklo_epi32(a[2], a[3]);  // { C0 D0 C1 D1 C4 D4 C5 D5 }
  __m256i t3 =
      _mm256_unpackhi_epi32(a[2], a[3]);  // { C2 D2 C3 D3 C6 D6 C7 D7 }
  __m256i t4 =
      _mm256_unpacklo_epi32(a[4], a[5]);  // { E0 F0 E1 F1 E4 F4 E5 F5 }
  __m256i t5 =
      _mm256_unpackhi_epi32(a[4], a[5]);  // { E2 F2 E3 F3 E6 F6 E7 F7 }
  __m256i t6 =
      _mm256_unpacklo_epi32(a[6], a[7]);  // { G0 H0 G1 H1 G4 H4 G5 H5 }
  __m256i t7 =
      _mm256_unpackhi_epi32(a[6], a[7]);  // { G2 H2 G3 H3 G6 H6 G7 H7 }

  // Interleave 64-bit elements
  __m256i u0 = _mm256_unpacklo_epi64(t0, t2);  // { A0 B0 C0 D0 A4 B4 C4 D4 }
  __m256i u1 = _mm256_unpackhi_epi64(t0, t2);  // { A1 B1 C1 D1 A5 B5 C5 D5 }
  __m256i u2 = _mm256_unpacklo_epi64(t1, t3);  // { A2 B2 C2 D2 A6 B6 C6 D6 }
  __m256i u3 = _mm256_unpackhi_epi64(t1, t3);  // { A3 B3 C3 D3 A7 B7 C7 D7 }
  __m256i u4 = _mm256_unpacklo_epi64(t4, t6);  // { E0 F0 G0 H0 E4 F4 G4 H4 }
  __m256i u5 = _mm256_unpackhi_epi64(t4, t6);  // { E1 F1 G1 H1 E5 F5 G5 H5 }
  __m256i u6 = _mm256_unpacklo_epi64(t5, t7);  // { E2 F2 G2 H2 E6 F6 G6 H6 }
  __m256i u7 = _mm256_unpackhi_epi64(t5, t7);  // { E3 F3 G3 H3 E7 F7 G7 H7 }

  // Permute 128-bit lanes to complete the transpose
  b[0] =
      _mm256_permute2x128_si256(u0, u4, 0x20);  // { A0 B0 C0 D0 E0 F0 G0 H0 }
  b[1] =
      _mm256_permute2x128_si256(u1, u5, 0x20);  // { A1 B1 C1 D1 E1 F1 G1 H1 }
  b[2] =
      _mm256_permute2x128_si256(u2, u6, 0x20);  // { A2 B2 C2 D2 E2 F2 G2 H2 }
  b[3] =
      _mm256_permute2x128_si256(u3, u7, 0x20);  // { A3 B3 C3 D3 E3 F3 G3 H3 }
  b[4] =
      _mm256_permute2x128_si256(u0, u4, 0x31);  // { A4 B4 C4 D4 E4 F4 G4 H4 }
  b[5] =
      _mm256_permute2x128_si256(u1, u5, 0x31);  // { A5 B5 C5 D5 E5 F5 G5 H5 }
  b[6] =
      _mm256_permute2x128_si256(u2, u6, 0x31);  // { A6 B6 C6 D6 E6 F6 G6 H6 }
  b[7] =
      _mm256_permute2x128_si256(u3, u7, 0x31);  // { A7 B7 C7 D7 E7 F7 G7 H7 }
}

void transpose_load_8x4_sse4(const int *src, __m128i *b, int size) {
  __m128i a[8];

  a[0] = _mm_loadu_si128((__m128i *)(src + 0 * size));      // { A0 A1 A2 A3 }
  a[1] = _mm_loadu_si128((__m128i *)(src + 1 * size));      // { B0 B1 B2 B3 }
  a[2] = _mm_loadu_si128((__m128i *)(src + 2 * size));      // { C0 C1 C2 C3 }
  a[3] = _mm_loadu_si128((__m128i *)(src + 3 * size));      // { D0 D1 D2 D3 }
  a[4] = _mm_loadu_si128((__m128i *)(src + 0 * size + 4));  // { A4 A5 A6 A7 }
  a[5] = _mm_loadu_si128((__m128i *)(src + 1 * size + 4));  // { B4 B5 B6 B7 }
  a[6] = _mm_loadu_si128((__m128i *)(src + 2 * size + 4));  // { C4 C5 C6 C7 }
  a[7] = _mm_loadu_si128((__m128i *)(src + 3 * size + 4));  // { D4 D5 D6 D7 }

  // Step 1: Interleave 32-bit elements
  __m128i t0 = _mm_unpacklo_epi32(a[0], a[1]);  // { A0 B0 A1 B1 }
  __m128i t1 = _mm_unpackhi_epi32(a[0], a[1]);  // { A2 B2 A3 B3 }
  __m128i t2 = _mm_unpacklo_epi32(a[2], a[3]);  // { C0 D0 C1 D1 }
  __m128i t3 = _mm_unpackhi_epi32(a[2], a[3]);  // { C2 D2 C3 D3 }
  __m128i t4 = _mm_unpacklo_epi32(a[4], a[5]);  // { A4 B4 A5 B5 }
  __m128i t5 = _mm_unpackhi_epi32(a[4], a[5]);  // { A6 B6 A7 B7 }
  __m128i t6 = _mm_unpacklo_epi32(a[6], a[7]);  // { C4 D4 C5 D5 }
  __m128i t7 = _mm_unpackhi_epi32(a[6], a[7]);  // { C6 D6 C7 D7 }

  // Step 2: Interleave 64-bit elements
  b[0] = _mm_unpacklo_epi64(t0, t2);  // { A0 B0 C0 D0 }
  b[1] = _mm_unpackhi_epi64(t0, t2);  // { A1 B1 C1 D1 }
  b[2] = _mm_unpacklo_epi64(t1, t3);  // { A2 B2 C2 D2 }
  b[3] = _mm_unpackhi_epi64(t1, t3);  // { A3 B3 C3 D3 }
  b[4] = _mm_unpacklo_epi64(t4, t6);  // { A4 B4 C4 D4 }
  b[5] = _mm_unpackhi_epi64(t4, t6);  // { A5 B5 C5 D5 }
  b[6] = _mm_unpacklo_epi64(t5, t7);  // { A6 B6 C6 D6 }
  b[7] = _mm_unpackhi_epi64(t5, t7);  // { A7 B7 C7 D7 }
}

void transpose_load_4x8_avx2(const int *src, __m256i *b, int size) {
  __m128i a[8];

  a[0] = _mm_loadu_si128((__m128i *)(src + 0 * size));  // { A0 A1 A2 A3 }
  a[1] = _mm_loadu_si128((__m128i *)(src + 1 * size));  // { B0 B1 B2 B3 }
  a[2] = _mm_loadu_si128((__m128i *)(src + 2 * size));  // { C0 C1 C2 C3 }
  a[3] = _mm_loadu_si128((__m128i *)(src + 3 * size));  // { D0 D1 D2 D3 }
  a[4] = _mm_loadu_si128((__m128i *)(src + 4 * size));  // { E0 E1 E2 E3 }
  a[5] = _mm_loadu_si128((__m128i *)(src + 5 * size));  // { F0 F1 F2 F3 }
  a[6] = _mm_loadu_si128((__m128i *)(src + 6 * size));  // { G0 G1 G2 G3 }
  a[7] = _mm_loadu_si128((__m128i *)(src + 7 * size));  // { H0 H1 H2 H3 }

  __m128i t0 = _mm_unpacklo_epi32(a[0], a[1]);  // { A0 B0 A1 B1 }
  __m128i t1 = _mm_unpackhi_epi32(a[0], a[1]);  // { A2 B2 A3 B3 }
  __m128i t2 = _mm_unpacklo_epi32(a[2], a[3]);  // { C0 D0 C1 D1 }
  __m128i t3 = _mm_unpackhi_epi32(a[2], a[3]);  // { C2 D2 C3 D3 }
  __m128i t4 = _mm_unpacklo_epi32(a[4], a[5]);  // { E0 F0 E1 F1 }
  __m128i t5 = _mm_unpackhi_epi32(a[4], a[5]);  // { E2 F2 E3 F3 }
  __m128i t6 = _mm_unpacklo_epi32(a[6], a[7]);  // { G0 H0 G1 H1 }
  __m128i t7 = _mm_unpackhi_epi32(a[6], a[7]);  // { G2 H2 G3 H3 }

  // Interleave 64-bit elements
  __m128i u0 = _mm_unpacklo_epi64(t0, t2);  // { A0 B0 C0 D0 }
  __m128i u1 = _mm_unpackhi_epi64(t0, t2);  // { A1 B1 C1 D1 }
  __m128i u2 = _mm_unpacklo_epi64(t1, t3);  // { A2 B2 C2 D2 }
  __m128i u3 = _mm_unpackhi_epi64(t1, t3);  // { A3 B3 C3 D3 }
  __m128i u4 = _mm_unpacklo_epi64(t4, t6);  // { E0 F0 G0 H0 }
  __m128i u5 = _mm_unpackhi_epi64(t4, t6);  // { E1 F1 G1 H1 }
  __m128i u6 = _mm_unpacklo_epi64(t5, t7);  // { E2 F2 G2 H2 }
  __m128i u7 = _mm_unpackhi_epi64(t5, t7);  // { E3 F3 G3 H3 }

  // Permute 128-bit lanes to complete the transpose
  b[0] = _mm256_set_m128i(u4, u0);  // { A0 B0 C0 D0 E0 F0 G0 H0 }
  b[1] = _mm256_set_m128i(u5, u1);  // { A1 B1 C1 D1 E1 F1 G1 H1 }
  b[2] = _mm256_set_m128i(u6, u2);  // { A2 B2 C2 D2 E2 F2 G2 H2 }
  b[3] = _mm256_set_m128i(u7, u3);  // { A3 B3 C3 D3 E3 F3 G3 H3 }
}

void inv_txfm_dct2_size4_avx2(const int *src, int *dst, int shift, int line,
                              int skip_line, int zero_line, const int coef_min,
                              const int coef_max) {
  (void)zero_line;
  int j;

  int add = 1 << (shift - 1);

  const int *tx_mat = tx_kernel_dct2_size4[INV_TXFM][0];

  const int nz_line = line - skip_line;

  const int tx1d_size = 4;
  if (nz_line >= 8) {
    __m256i a[2], b[2];

    __m256i v_offset = _mm256_set1_epi32(add);
    __m256i v_coef_min = _mm256_set1_epi32(coef_min);
    __m256i v_coef_max = _mm256_set1_epi32(coef_max);

    __m256i s[4];

    __m256i txmat_1_0 = _mm256_set1_epi32(tx_mat[1 * 4 + 0]);  // 85
    __m256i txmat_1_1 = _mm256_set1_epi32(tx_mat[1 * 4 + 1]);  // 35

    for (j = 0; j < nz_line; j += 8) {
      // Transpose input
      transpose_load_4x8_avx2(src, s, tx1d_size);

      b[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_0),
                              _mm256_mullo_epi32(s[3], txmat_1_1));
      b[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_1),
                              _mm256_mullo_epi32(s[3], txmat_1_0));
      a[0] = _mm256_add_epi32(s[0], s[2]);
      a[0] = _mm256_slli_epi32(a[0], 6);
      a[1] = _mm256_sub_epi32(s[0], s[2]);
      a[1] = _mm256_slli_epi32(a[1], 6);

      s[0] = _mm256_add_epi32(v_offset, _mm256_add_epi32(a[0], b[0]));
      s[0] = _mm256_srai_epi32(s[0], shift);
      s[0] = _mm256_min_epi32(s[0], v_coef_max);
      s[0] = _mm256_max_epi32(s[0], v_coef_min);
      _mm256_storeu_si256((__m256i *)(dst + 0 * line), s[0]);

      s[1] = _mm256_add_epi32(v_offset, _mm256_add_epi32(a[1], b[1]));
      s[1] = _mm256_srai_epi32(s[1], shift);
      s[1] = _mm256_min_epi32(s[1], v_coef_max);
      s[1] = _mm256_max_epi32(s[1], v_coef_min);
      _mm256_storeu_si256((__m256i *)(dst + 1 * line), s[1]);

      s[2] = _mm256_add_epi32(v_offset, _mm256_sub_epi32(a[1], b[1]));
      s[2] = _mm256_srai_epi32(s[2], shift);
      s[2] = _mm256_min_epi32(s[2], v_coef_max);
      s[2] = _mm256_max_epi32(s[2], v_coef_min);
      _mm256_storeu_si256((__m256i *)(dst + 2 * line), s[2]);

      s[3] = _mm256_add_epi32(v_offset, _mm256_sub_epi32(a[0], b[0]));
      s[3] = _mm256_srai_epi32(s[3], shift);
      s[3] = _mm256_min_epi32(s[3], v_coef_max);
      s[3] = _mm256_max_epi32(s[3], v_coef_min);
      _mm256_storeu_si256((__m256i *)(dst + 3 * line), s[3]);

      src += 8 * tx1d_size;
      dst += 8;
    }
  } else {
    __m256i v_offset = _mm256_set1_epi32(add);
    __m256i v_coef_min = _mm256_set1_epi32(coef_min);
    __m256i v_coef_max = _mm256_set1_epi32(coef_max);

    for (j = 0; j < nz_line; j += 2) {
      __m256i sum = _mm256_set1_epi32(0);
      for (int k = 0; k < tx1d_size; k++) {
        __m128i tmp_src0 = _mm_set1_epi32(src[(j + 0) * tx1d_size + k]);
        __m128i tmp_src1 = _mm_set1_epi32(src[(j + 1) * tx1d_size + k]);
        __m256i tmp_src = _mm256_set_m128i(tmp_src1, tmp_src0);

        __m128i tmp_val0 = _mm_loadu_si128((__m128i *)(tx_mat + k * tx1d_size));
        __m256i tmp_val = _mm256_set_m128i(tmp_val0, tmp_val0);

        tmp_val = _mm256_mullo_epi32(tmp_src, tmp_val);
        sum = _mm256_add_epi32(tmp_val, sum);
      }

      // Multiply by scale and add offset
      sum = _mm256_add_epi32(sum, v_offset);

      // Right shift by shift
      sum = _mm256_srai_epi32(sum, shift);

      // Clamp to coef_min and coef_max
      sum = _mm256_min_epi32(sum, v_coef_max);
      sum = _mm256_max_epi32(sum, v_coef_min);

      // Store results
      dst[0 * line + j] = _mm256_extract_epi32(sum, 0);
      dst[1 * line + j] = _mm256_extract_epi32(sum, 1);
      dst[2 * line + j] = _mm256_extract_epi32(sum, 2);
      dst[3 * line + j] = _mm256_extract_epi32(sum, 3);
      dst[0 * line + j + 1] = _mm256_extract_epi32(sum, 4);
      dst[1 * line + j + 1] = _mm256_extract_epi32(sum, 5);
      dst[2 * line + j + 1] = _mm256_extract_epi32(sum, 6);
      dst[3 * line + j + 1] = _mm256_extract_epi32(sum, 7);
    }
  }
}

void inv_txfm_dct2_size8_avx2(const int *src, int *dst, int shift, int line,
                              int skip_line, int zero_line, const int coef_min,
                              const int coef_max) {
  (void)zero_line;
  int j, k;

  int add = 1 << (shift - 1);

  const int *tx_mat = tx_kernel_dct2_size8[INV_TXFM][0];

  const int nz_line = line - skip_line;

  const int tx1d_size = 8;
  if (nz_line >= 8) {
    __m256i a[4], b[4];
    __m256i c[2], d[2];

    __m256i v_offset = _mm256_set1_epi32(add);
    __m256i v_coef_min = _mm256_set1_epi32(coef_min);
    __m256i v_coef_max = _mm256_set1_epi32(coef_max);

    __m256i s[8];

    __m256i txmat_2_0 = _mm256_set1_epi32(tx_mat[2 * 8 + 0]);  // 85
    __m256i txmat_2_1 = _mm256_set1_epi32(tx_mat[2 * 8 + 1]);  // 35

    __m256i txmat_1_0 = _mm256_set1_epi32(tx_mat[1 * 8 + 0]);  // 89
    __m256i txmat_1_1 = _mm256_set1_epi32(tx_mat[1 * 8 + 1]);  // 75
    __m256i txmat_1_2 = _mm256_set1_epi32(tx_mat[1 * 8 + 2]);  // 50
    __m256i txmat_1_3 = _mm256_set1_epi32(tx_mat[1 * 8 + 3]);  // 18

    for (j = 0; j < nz_line; j += 8) {
      // Transpose input
      transpose_load_8x8_avx2(src, s, tx1d_size);

      a[0] = _mm256_mullo_epi32(s[1], txmat_1_0);
      a[1] = _mm256_mullo_epi32(s[3], txmat_1_1);
      a[2] = _mm256_mullo_epi32(s[5], txmat_1_2);
      a[3] = _mm256_mullo_epi32(s[7], txmat_1_3);
      b[0] = _mm256_add_epi32(_mm256_add_epi32(a[0], a[1]),
                              _mm256_add_epi32(a[2], a[3]));

      a[0] = _mm256_mullo_epi32(s[1], txmat_1_1);
      a[1] = _mm256_mullo_epi32(s[3], txmat_1_3);
      a[2] = _mm256_mullo_epi32(s[5], txmat_1_0);
      a[3] = _mm256_mullo_epi32(s[7], txmat_1_2);
      b[1] = _mm256_sub_epi32(_mm256_sub_epi32(a[0], a[1]),
                              _mm256_add_epi32(a[2], a[3]));

      a[0] = _mm256_mullo_epi32(s[1], txmat_1_2);
      a[1] = _mm256_mullo_epi32(s[3], txmat_1_0);
      a[2] = _mm256_mullo_epi32(s[5], txmat_1_3);
      a[3] = _mm256_mullo_epi32(s[7], txmat_1_1);
      b[2] = _mm256_add_epi32(_mm256_sub_epi32(a[0], a[1]),
                              _mm256_add_epi32(a[2], a[3]));

      a[0] = _mm256_mullo_epi32(s[1], txmat_1_3);
      a[1] = _mm256_mullo_epi32(s[3], txmat_1_2);
      a[2] = _mm256_mullo_epi32(s[5], txmat_1_1);
      a[3] = _mm256_mullo_epi32(s[7], txmat_1_0);
      b[3] = _mm256_add_epi32(_mm256_sub_epi32(a[0], a[1]),
                              _mm256_sub_epi32(a[2], a[3]));

      d[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[2], txmat_2_0),
                              _mm256_mullo_epi32(s[6], txmat_2_1));
      d[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[2], txmat_2_1),
                              _mm256_mullo_epi32(s[6], txmat_2_0));
      c[0] = _mm256_add_epi32(s[0], s[4]);
      c[0] = _mm256_slli_epi32(c[0], 6);
      c[1] = _mm256_sub_epi32(s[0], s[4]);
      c[1] = _mm256_slli_epi32(c[1], 6);

      a[0] = _mm256_add_epi32(c[0], d[0]);
      a[3] = _mm256_sub_epi32(c[0], d[0]);
      a[1] = _mm256_add_epi32(c[1], d[1]);
      a[2] = _mm256_sub_epi32(c[1], d[1]);

      for (k = 0; k < 4; k++) {
        c[0] = _mm256_add_epi32(v_offset, _mm256_add_epi32(a[k], b[k]));
        c[1] = _mm256_add_epi32(v_offset, _mm256_sub_epi32(a[3 - k], b[3 - k]));

        c[0] = _mm256_srai_epi32(c[0], shift);
        c[1] = _mm256_srai_epi32(c[1], shift);

        c[0] = _mm256_min_epi32(c[0], v_coef_max);
        c[0] = _mm256_max_epi32(c[0], v_coef_min);
        c[1] = _mm256_min_epi32(c[1], v_coef_max);
        c[1] = _mm256_max_epi32(c[1], v_coef_min);

        _mm256_storeu_si256((__m256i *)(dst + k * line), c[0]);
        _mm256_storeu_si256((__m256i *)(dst + (k + 4) * line), c[1]);
      }
      src += 8 * tx1d_size;
      dst += 8;
    }
  } else {
    __m128i a[4], b[4];
    __m128i c[2], d[2];

    __m128i v_offset = _mm_set1_epi32(add);
    __m128i v_coef_min = _mm_set1_epi32(coef_min);
    __m128i v_coef_max = _mm_set1_epi32(coef_max);

    __m128i s[8];

    __m128i txmat_2_0 = _mm_set1_epi32(tx_mat[2 * 8 + 0]);  // 85
    __m128i txmat_2_1 = _mm_set1_epi32(tx_mat[2 * 8 + 1]);  // 35

    __m128i txmat_1_0 = _mm_set1_epi32(tx_mat[1 * 8 + 0]);  // 89
    __m128i txmat_1_1 = _mm_set1_epi32(tx_mat[1 * 8 + 1]);  // 75
    __m128i txmat_1_2 = _mm_set1_epi32(tx_mat[1 * 8 + 2]);  // 50
    __m128i txmat_1_3 = _mm_set1_epi32(tx_mat[1 * 8 + 3]);  // 18

    for (j = 0; j < nz_line; j += 8) {
      // Transpose input
      transpose_load_8x4_sse4(src, s, tx1d_size);

      a[0] = _mm_mullo_epi32(s[1], txmat_1_0);
      a[1] = _mm_mullo_epi32(s[3], txmat_1_1);
      a[2] = _mm_mullo_epi32(s[5], txmat_1_2);
      a[3] = _mm_mullo_epi32(s[7], txmat_1_3);
      b[0] =
          _mm_add_epi32(_mm_add_epi32(a[0], a[1]), _mm_add_epi32(a[2], a[3]));

      a[0] = _mm_mullo_epi32(s[1], txmat_1_1);
      a[1] = _mm_mullo_epi32(s[3], txmat_1_3);
      a[2] = _mm_mullo_epi32(s[5], txmat_1_0);
      a[3] = _mm_mullo_epi32(s[7], txmat_1_2);
      b[1] =
          _mm_sub_epi32(_mm_sub_epi32(a[0], a[1]), _mm_add_epi32(a[2], a[3]));

      a[0] = _mm_mullo_epi32(s[1], txmat_1_2);
      a[1] = _mm_mullo_epi32(s[3], txmat_1_0);
      a[2] = _mm_mullo_epi32(s[5], txmat_1_3);
      a[3] = _mm_mullo_epi32(s[7], txmat_1_1);
      b[2] =
          _mm_add_epi32(_mm_sub_epi32(a[0], a[1]), _mm_add_epi32(a[2], a[3]));

      a[0] = _mm_mullo_epi32(s[1], txmat_1_3);
      a[1] = _mm_mullo_epi32(s[3], txmat_1_2);
      a[2] = _mm_mullo_epi32(s[5], txmat_1_1);
      a[3] = _mm_mullo_epi32(s[7], txmat_1_0);
      b[3] =
          _mm_add_epi32(_mm_sub_epi32(a[0], a[1]), _mm_sub_epi32(a[2], a[3]));

      d[0] = _mm_add_epi32(_mm_mullo_epi32(s[2], txmat_2_0),
                           _mm_mullo_epi32(s[6], txmat_2_1));
      d[1] = _mm_sub_epi32(_mm_mullo_epi32(s[2], txmat_2_1),
                           _mm_mullo_epi32(s[6], txmat_2_0));
      c[0] = _mm_add_epi32(s[0], s[4]);
      c[0] = _mm_slli_epi32(c[0], 6);
      c[1] = _mm_sub_epi32(s[0], s[4]);
      c[1] = _mm_slli_epi32(c[1], 6);

      a[0] = _mm_add_epi32(c[0], d[0]);
      a[3] = _mm_sub_epi32(c[0], d[0]);
      a[1] = _mm_add_epi32(c[1], d[1]);
      a[2] = _mm_sub_epi32(c[1], d[1]);

      for (k = 0; k < 4; k++) {
        c[0] = _mm_add_epi32(v_offset, _mm_add_epi32(a[k], b[k]));
        c[1] = _mm_add_epi32(v_offset, _mm_sub_epi32(a[3 - k], b[3 - k]));

        c[0] = _mm_srai_epi32(c[0], shift);
        c[1] = _mm_srai_epi32(c[1], shift);

        c[0] = _mm_min_epi32(c[0], v_coef_max);
        c[0] = _mm_max_epi32(c[0], v_coef_min);
        c[1] = _mm_min_epi32(c[1], v_coef_max);
        c[1] = _mm_max_epi32(c[1], v_coef_min);

        _mm_storeu_si128((__m128i *)(dst + k * line), c[0]);
        _mm_storeu_si128((__m128i *)(dst + (k + 4) * line), c[1]);
      }
      src += 8 * tx1d_size;
      dst += 8;
    }
  }
}

void inv_txfm_dct2_size16_avx2(const int *src, int *dst, int shift, int line,
                               int skip_line, int zero_line, const int coef_min,
                               const int coef_max) {
  (void)zero_line;
  int j, k;
  int add = 1 << (shift - 1);

  const int *tx_mat = tx_kernel_dct2_size16[INV_TXFM][0];

  const int nz_line = line - skip_line;

  const int tx1d_size = 16;
  if (nz_line >= 8) {
    __m256i a[8], b[8];
    __m256i c[4], d[4];
    __m256i e[2], f[2];

    __m256i v_offset = _mm256_set1_epi32(add);
    __m256i v_coef_min = _mm256_set1_epi32(coef_min);
    __m256i v_coef_max = _mm256_set1_epi32(coef_max);

    __m256i s[16];

    __m256i txmat_4_0 = _mm256_set1_epi32(tx_mat[4 * 16 + 0]);  // 85
    __m256i txmat_4_1 = _mm256_set1_epi32(tx_mat[4 * 16 + 1]);  // 35

    __m256i txmat_2_0 = _mm256_set1_epi32(tx_mat[2 * 16 + 0]);  // 89
    __m256i txmat_2_1 = _mm256_set1_epi32(tx_mat[2 * 16 + 1]);  // 75
    __m256i txmat_2_2 = _mm256_set1_epi32(tx_mat[2 * 16 + 2]);  // 50
    __m256i txmat_2_3 = _mm256_set1_epi32(tx_mat[2 * 16 + 3]);  // 18

    __m256i txmat_1_0 = _mm256_set1_epi32(tx_mat[1 * 16 + 0]);  // 90
    __m256i txmat_1_1 = _mm256_set1_epi32(tx_mat[1 * 16 + 1]);  // 87
    __m256i txmat_1_2 = _mm256_set1_epi32(tx_mat[1 * 16 + 2]);  // 80
    __m256i txmat_1_3 = _mm256_set1_epi32(tx_mat[1 * 16 + 3]);  // 70
    __m256i txmat_1_4 = _mm256_set1_epi32(tx_mat[1 * 16 + 4]);  // 57
    __m256i txmat_1_5 = _mm256_set1_epi32(tx_mat[1 * 16 + 5]);  // 43
    __m256i txmat_1_6 = _mm256_set1_epi32(tx_mat[1 * 16 + 6]);  // 26
    __m256i txmat_1_7 = _mm256_set1_epi32(tx_mat[1 * 16 + 7]);  //  9

    for (j = 0; j < nz_line; j += 8) {
      // Transpose input
      transpose_load_8x8_avx2(src, s, tx1d_size);
      transpose_load_8x8_avx2(src + 8, s + 8, tx1d_size);

      a[0] = _mm256_mullo_epi32(s[1], txmat_1_0);
      a[1] = _mm256_mullo_epi32(s[3], txmat_1_1);
      a[2] = _mm256_mullo_epi32(s[5], txmat_1_2);
      a[3] = _mm256_mullo_epi32(s[7], txmat_1_3);
      a[4] = _mm256_mullo_epi32(s[9], txmat_1_4);
      a[5] = _mm256_mullo_epi32(s[11], txmat_1_5);
      a[6] = _mm256_mullo_epi32(s[13], txmat_1_6);
      a[7] = _mm256_mullo_epi32(s[15], txmat_1_7);
      a[0] = _mm256_add_epi32(_mm256_add_epi32(a[0], a[1]),
                              _mm256_add_epi32(a[2], a[3]));
      a[4] = _mm256_add_epi32(_mm256_add_epi32(a[4], a[5]),
                              _mm256_add_epi32(a[6], a[7]));
      b[0] = _mm256_add_epi32(a[0], a[4]);

      a[0] = _mm256_mullo_epi32(s[1], txmat_1_1);
      a[1] = _mm256_mullo_epi32(s[3], txmat_1_4);
      a[2] = _mm256_mullo_epi32(s[5], txmat_1_7);
      a[3] = _mm256_mullo_epi32(s[7], txmat_1_5);
      a[4] = _mm256_mullo_epi32(s[9], txmat_1_2);
      a[5] = _mm256_mullo_epi32(s[11], txmat_1_0);
      a[6] = _mm256_mullo_epi32(s[13], txmat_1_3);
      a[7] = _mm256_mullo_epi32(s[15], txmat_1_6);
      a[0] = _mm256_add_epi32(_mm256_add_epi32(a[0], a[1]),
                              _mm256_sub_epi32(a[2], a[3]));
      a[4] = _mm256_add_epi32(_mm256_add_epi32(a[4], a[5]),
                              _mm256_add_epi32(a[6], a[7]));
      b[1] = _mm256_sub_epi32(a[0], a[4]);

      a[0] = _mm256_mullo_epi32(s[1], txmat_1_2);
      a[1] = _mm256_mullo_epi32(s[3], txmat_1_7);
      a[2] = _mm256_mullo_epi32(s[5], txmat_1_3);
      a[3] = _mm256_mullo_epi32(s[7], txmat_1_1);
      a[4] = _mm256_mullo_epi32(s[9], txmat_1_6);
      a[5] = _mm256_mullo_epi32(s[11], txmat_1_4);
      a[6] = _mm256_mullo_epi32(s[13], txmat_1_0);
      a[7] = _mm256_mullo_epi32(s[15], txmat_1_5);
      a[0] = _mm256_sub_epi32(_mm256_add_epi32(a[0], a[1]),
                              _mm256_add_epi32(a[2], a[3]));
      a[4] = _mm256_sub_epi32(_mm256_sub_epi32(a[4], a[5]),
                              _mm256_add_epi32(a[6], a[7]));
      b[2] = _mm256_sub_epi32(a[0], a[4]);

      a[0] = _mm256_mullo_epi32(s[1], txmat_1_3);
      a[1] = _mm256_mullo_epi32(s[3], txmat_1_5);
      a[2] = _mm256_mullo_epi32(s[5], txmat_1_1);
      a[3] = _mm256_mullo_epi32(s[7], txmat_1_7);
      a[4] = _mm256_mullo_epi32(s[9], txmat_1_0);
      a[5] = _mm256_mullo_epi32(s[11], txmat_1_6);
      a[6] = _mm256_mullo_epi32(s[13], txmat_1_2);
      a[7] = _mm256_mullo_epi32(s[15], txmat_1_4);
      a[0] = _mm256_sub_epi32(_mm256_sub_epi32(a[0], a[1]),
                              _mm256_sub_epi32(a[2], a[3]));
      a[4] = _mm256_sub_epi32(_mm256_add_epi32(a[4], a[5]),
                              _mm256_add_epi32(a[6], a[7]));
      b[3] = _mm256_add_epi32(a[0], a[4]);

      a[0] = _mm256_mullo_epi32(s[1], txmat_1_4);
      a[1] = _mm256_mullo_epi32(s[3], txmat_1_2);
      a[2] = _mm256_mullo_epi32(s[5], txmat_1_6);
      a[3] = _mm256_mullo_epi32(s[7], txmat_1_0);
      a[4] = _mm256_mullo_epi32(s[9], txmat_1_7);
      a[5] = _mm256_mullo_epi32(s[11], txmat_1_1);
      a[6] = _mm256_mullo_epi32(s[13], txmat_1_5);
      a[7] = _mm256_mullo_epi32(s[15], txmat_1_3);
      a[0] = _mm256_sub_epi32(_mm256_sub_epi32(a[0], a[1]),
                              _mm256_sub_epi32(a[2], a[3]));
      a[4] = _mm256_sub_epi32(_mm256_add_epi32(a[4], a[5]),
                              _mm256_add_epi32(a[6], a[7]));
      b[4] = _mm256_sub_epi32(a[0], a[4]);

      a[0] = _mm256_mullo_epi32(s[1], txmat_1_5);
      a[1] = _mm256_mullo_epi32(s[3], txmat_1_0);
      a[2] = _mm256_mullo_epi32(s[5], txmat_1_4);
      a[3] = _mm256_mullo_epi32(s[7], txmat_1_6);
      a[4] = _mm256_mullo_epi32(s[9], txmat_1_1);
      a[5] = _mm256_mullo_epi32(s[11], txmat_1_3);
      a[6] = _mm256_mullo_epi32(s[13], txmat_1_7);
      a[7] = _mm256_mullo_epi32(s[15], txmat_1_2);
      a[0] = _mm256_add_epi32(_mm256_sub_epi32(a[0], a[1]),
                              _mm256_add_epi32(a[2], a[3]));
      a[4] = _mm256_sub_epi32(_mm256_sub_epi32(a[4], a[5]),
                              _mm256_sub_epi32(a[6], a[7]));
      b[5] = _mm256_sub_epi32(a[0], a[4]);

      a[0] = _mm256_mullo_epi32(s[1], txmat_1_6);
      a[1] = _mm256_mullo_epi32(s[3], txmat_1_3);
      a[2] = _mm256_mullo_epi32(s[5], txmat_1_0);
      a[3] = _mm256_mullo_epi32(s[7], txmat_1_2);
      a[4] = _mm256_mullo_epi32(s[9], txmat_1_5);
      a[5] = _mm256_mullo_epi32(s[11], txmat_1_7);
      a[6] = _mm256_mullo_epi32(s[13], txmat_1_4);
      a[7] = _mm256_mullo_epi32(s[15], txmat_1_1);
      a[0] = _mm256_add_epi32(_mm256_sub_epi32(a[0], a[1]),
                              _mm256_sub_epi32(a[2], a[3]));
      a[4] = _mm256_sub_epi32(_mm256_add_epi32(a[4], a[5]),
                              _mm256_sub_epi32(a[6], a[7]));
      b[6] = _mm256_add_epi32(a[0], a[4]);

      a[0] = _mm256_mullo_epi32(s[1], txmat_1_7);
      a[1] = _mm256_mullo_epi32(s[3], txmat_1_6);
      a[2] = _mm256_mullo_epi32(s[5], txmat_1_5);
      a[3] = _mm256_mullo_epi32(s[7], txmat_1_4);
      a[4] = _mm256_mullo_epi32(s[9], txmat_1_3);
      a[5] = _mm256_mullo_epi32(s[11], txmat_1_2);
      a[6] = _mm256_mullo_epi32(s[13], txmat_1_1);
      a[7] = _mm256_mullo_epi32(s[15], txmat_1_0);
      a[0] = _mm256_add_epi32(_mm256_sub_epi32(a[0], a[1]),
                              _mm256_sub_epi32(a[2], a[3]));
      a[4] = _mm256_add_epi32(_mm256_sub_epi32(a[4], a[5]),
                              _mm256_sub_epi32(a[6], a[7]));
      b[7] = _mm256_add_epi32(a[0], a[4]);

      c[0] = _mm256_mullo_epi32(s[2], txmat_2_0);
      c[1] = _mm256_mullo_epi32(s[6], txmat_2_1);
      c[2] = _mm256_mullo_epi32(s[10], txmat_2_2);
      c[3] = _mm256_mullo_epi32(s[14], txmat_2_3);
      d[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));

      c[0] = _mm256_mullo_epi32(s[2], txmat_2_1);
      c[1] = _mm256_mullo_epi32(s[6], txmat_2_3);
      c[2] = _mm256_mullo_epi32(s[10], txmat_2_0);
      c[3] = _mm256_mullo_epi32(s[14], txmat_2_2);
      d[1] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));

      c[0] = _mm256_mullo_epi32(s[2], txmat_2_2);
      c[1] = _mm256_mullo_epi32(s[6], txmat_2_0);
      c[2] = _mm256_mullo_epi32(s[10], txmat_2_3);
      c[3] = _mm256_mullo_epi32(s[14], txmat_2_1);
      d[2] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));

      c[0] = _mm256_mullo_epi32(s[2], txmat_2_3);
      c[1] = _mm256_mullo_epi32(s[6], txmat_2_2);
      c[2] = _mm256_mullo_epi32(s[10], txmat_2_1);
      c[3] = _mm256_mullo_epi32(s[14], txmat_2_0);
      d[3] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));

      f[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[4], txmat_4_0),
                              _mm256_mullo_epi32(s[12], txmat_4_1));
      f[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[4], txmat_4_1),
                              _mm256_mullo_epi32(s[12], txmat_4_0));
      e[0] = _mm256_add_epi32(s[0], s[8]);
      e[0] = _mm256_slli_epi32(e[0], 6);
      e[1] = _mm256_sub_epi32(s[0], s[8]);
      e[1] = _mm256_slli_epi32(e[1], 6);

      c[0] = _mm256_add_epi32(e[0], f[0]);
      c[3] = _mm256_sub_epi32(e[0], f[0]);
      c[1] = _mm256_add_epi32(e[1], f[1]);
      c[2] = _mm256_sub_epi32(e[1], f[1]);

      for (k = 0; k < 4; k++) {
        a[k] = _mm256_add_epi32(c[k], d[k]);
        a[k + 4] = _mm256_sub_epi32(c[3 - k], d[3 - k]);
      }
      for (k = 0; k < 8; k++) {
        e[0] = _mm256_add_epi32(v_offset, _mm256_add_epi32(a[k], b[k]));
        e[1] = _mm256_add_epi32(v_offset, _mm256_sub_epi32(a[7 - k], b[7 - k]));

        e[0] = _mm256_srai_epi32(e[0], shift);
        e[1] = _mm256_srai_epi32(e[1], shift);

        e[0] = _mm256_min_epi32(e[0], v_coef_max);
        e[0] = _mm256_max_epi32(e[0], v_coef_min);
        e[1] = _mm256_min_epi32(e[1], v_coef_max);
        e[1] = _mm256_max_epi32(e[1], v_coef_min);

        _mm256_storeu_si256((__m256i *)(dst + k * line), e[0]);
        _mm256_storeu_si256((__m256i *)(dst + (k + 8) * line), e[1]);
      }
      src += 8 * tx1d_size;
      dst += 8;
    }
  } else {
    __m128i a[8], b[8];
    __m128i c[4], d[4];
    __m128i e[2], f[2];

    __m128i v_offset = _mm_set1_epi32(add);
    __m128i v_coef_min = _mm_set1_epi32(coef_min);
    __m128i v_coef_max = _mm_set1_epi32(coef_max);

    __m128i s[16];

    __m128i txmat_4_0 = _mm_set1_epi32(tx_mat[4 * 16 + 0]);  // 85
    __m128i txmat_4_1 = _mm_set1_epi32(tx_mat[4 * 16 + 1]);  // 35

    __m128i txmat_2_0 = _mm_set1_epi32(tx_mat[2 * 16 + 0]);  // 89
    __m128i txmat_2_1 = _mm_set1_epi32(tx_mat[2 * 16 + 1]);  // 75
    __m128i txmat_2_2 = _mm_set1_epi32(tx_mat[2 * 16 + 2]);  // 50
    __m128i txmat_2_3 = _mm_set1_epi32(tx_mat[2 * 16 + 3]);  // 18

    __m128i txmat_1_0 = _mm_set1_epi32(tx_mat[1 * 16 + 0]);  // 90
    __m128i txmat_1_1 = _mm_set1_epi32(tx_mat[1 * 16 + 1]);  // 87
    __m128i txmat_1_2 = _mm_set1_epi32(tx_mat[1 * 16 + 2]);  // 80
    __m128i txmat_1_3 = _mm_set1_epi32(tx_mat[1 * 16 + 3]);  // 70
    __m128i txmat_1_4 = _mm_set1_epi32(tx_mat[1 * 16 + 4]);  // 57
    __m128i txmat_1_5 = _mm_set1_epi32(tx_mat[1 * 16 + 5]);  // 43
    __m128i txmat_1_6 = _mm_set1_epi32(tx_mat[1 * 16 + 6]);  // 26
    __m128i txmat_1_7 = _mm_set1_epi32(tx_mat[1 * 16 + 7]);  //  9

    // Transpose input
    transpose_load_8x4_sse4(src, s, tx1d_size);
    transpose_load_8x4_sse4(src + 8, s + 8, tx1d_size);

    a[0] = _mm_mullo_epi32(s[1], txmat_1_0);
    a[1] = _mm_mullo_epi32(s[3], txmat_1_1);
    a[2] = _mm_mullo_epi32(s[5], txmat_1_2);
    a[3] = _mm_mullo_epi32(s[7], txmat_1_3);
    a[4] = _mm_mullo_epi32(s[9], txmat_1_4);
    a[5] = _mm_mullo_epi32(s[11], txmat_1_5);
    a[6] = _mm_mullo_epi32(s[13], txmat_1_6);
    a[7] = _mm_mullo_epi32(s[15], txmat_1_7);
    a[0] = _mm_add_epi32(_mm_add_epi32(a[0], a[1]), _mm_add_epi32(a[2], a[3]));
    a[4] = _mm_add_epi32(_mm_add_epi32(a[4], a[5]), _mm_add_epi32(a[6], a[7]));
    b[0] = _mm_add_epi32(a[0], a[4]);

    a[0] = _mm_mullo_epi32(s[1], txmat_1_1);
    a[1] = _mm_mullo_epi32(s[3], txmat_1_4);
    a[2] = _mm_mullo_epi32(s[5], txmat_1_7);
    a[3] = _mm_mullo_epi32(s[7], txmat_1_5);
    a[4] = _mm_mullo_epi32(s[9], txmat_1_2);
    a[5] = _mm_mullo_epi32(s[11], txmat_1_0);
    a[6] = _mm_mullo_epi32(s[13], txmat_1_3);
    a[7] = _mm_mullo_epi32(s[15], txmat_1_6);
    a[0] = _mm_add_epi32(_mm_add_epi32(a[0], a[1]), _mm_sub_epi32(a[2], a[3]));
    a[4] = _mm_add_epi32(_mm_add_epi32(a[4], a[5]), _mm_add_epi32(a[6], a[7]));
    b[1] = _mm_sub_epi32(a[0], a[4]);

    a[0] = _mm_mullo_epi32(s[1], txmat_1_2);
    a[1] = _mm_mullo_epi32(s[3], txmat_1_7);
    a[2] = _mm_mullo_epi32(s[5], txmat_1_3);
    a[3] = _mm_mullo_epi32(s[7], txmat_1_1);
    a[4] = _mm_mullo_epi32(s[9], txmat_1_6);
    a[5] = _mm_mullo_epi32(s[11], txmat_1_4);
    a[6] = _mm_mullo_epi32(s[13], txmat_1_0);
    a[7] = _mm_mullo_epi32(s[15], txmat_1_5);
    a[0] = _mm_sub_epi32(_mm_add_epi32(a[0], a[1]), _mm_add_epi32(a[2], a[3]));
    a[4] = _mm_sub_epi32(_mm_sub_epi32(a[4], a[5]), _mm_add_epi32(a[6], a[7]));
    b[2] = _mm_sub_epi32(a[0], a[4]);

    a[0] = _mm_mullo_epi32(s[1], txmat_1_3);
    a[1] = _mm_mullo_epi32(s[3], txmat_1_5);
    a[2] = _mm_mullo_epi32(s[5], txmat_1_1);
    a[3] = _mm_mullo_epi32(s[7], txmat_1_7);
    a[4] = _mm_mullo_epi32(s[9], txmat_1_0);
    a[5] = _mm_mullo_epi32(s[11], txmat_1_6);
    a[6] = _mm_mullo_epi32(s[13], txmat_1_2);
    a[7] = _mm_mullo_epi32(s[15], txmat_1_4);
    a[0] = _mm_sub_epi32(_mm_sub_epi32(a[0], a[1]), _mm_sub_epi32(a[2], a[3]));
    a[4] = _mm_sub_epi32(_mm_add_epi32(a[4], a[5]), _mm_add_epi32(a[6], a[7]));
    b[3] = _mm_add_epi32(a[0], a[4]);

    a[0] = _mm_mullo_epi32(s[1], txmat_1_4);
    a[1] = _mm_mullo_epi32(s[3], txmat_1_2);
    a[2] = _mm_mullo_epi32(s[5], txmat_1_6);
    a[3] = _mm_mullo_epi32(s[7], txmat_1_0);
    a[4] = _mm_mullo_epi32(s[9], txmat_1_7);
    a[5] = _mm_mullo_epi32(s[11], txmat_1_1);
    a[6] = _mm_mullo_epi32(s[13], txmat_1_5);
    a[7] = _mm_mullo_epi32(s[15], txmat_1_3);
    a[0] = _mm_sub_epi32(_mm_sub_epi32(a[0], a[1]), _mm_sub_epi32(a[2], a[3]));
    a[4] = _mm_sub_epi32(_mm_add_epi32(a[4], a[5]), _mm_add_epi32(a[6], a[7]));
    b[4] = _mm_sub_epi32(a[0], a[4]);

    a[0] = _mm_mullo_epi32(s[1], txmat_1_5);
    a[1] = _mm_mullo_epi32(s[3], txmat_1_0);
    a[2] = _mm_mullo_epi32(s[5], txmat_1_4);
    a[3] = _mm_mullo_epi32(s[7], txmat_1_6);
    a[4] = _mm_mullo_epi32(s[9], txmat_1_1);
    a[5] = _mm_mullo_epi32(s[11], txmat_1_3);
    a[6] = _mm_mullo_epi32(s[13], txmat_1_7);
    a[7] = _mm_mullo_epi32(s[15], txmat_1_2);
    a[0] = _mm_add_epi32(_mm_sub_epi32(a[0], a[1]), _mm_add_epi32(a[2], a[3]));
    a[4] = _mm_sub_epi32(_mm_sub_epi32(a[4], a[5]), _mm_sub_epi32(a[6], a[7]));
    b[5] = _mm_sub_epi32(a[0], a[4]);

    a[0] = _mm_mullo_epi32(s[1], txmat_1_6);
    a[1] = _mm_mullo_epi32(s[3], txmat_1_3);
    a[2] = _mm_mullo_epi32(s[5], txmat_1_0);
    a[3] = _mm_mullo_epi32(s[7], txmat_1_2);
    a[4] = _mm_mullo_epi32(s[9], txmat_1_5);
    a[5] = _mm_mullo_epi32(s[11], txmat_1_7);
    a[6] = _mm_mullo_epi32(s[13], txmat_1_4);
    a[7] = _mm_mullo_epi32(s[15], txmat_1_1);
    a[0] = _mm_add_epi32(_mm_sub_epi32(a[0], a[1]), _mm_sub_epi32(a[2], a[3]));
    a[4] = _mm_sub_epi32(_mm_add_epi32(a[4], a[5]), _mm_sub_epi32(a[6], a[7]));
    b[6] = _mm_add_epi32(a[0], a[4]);

    a[0] = _mm_mullo_epi32(s[1], txmat_1_7);
    a[1] = _mm_mullo_epi32(s[3], txmat_1_6);
    a[2] = _mm_mullo_epi32(s[5], txmat_1_5);
    a[3] = _mm_mullo_epi32(s[7], txmat_1_4);
    a[4] = _mm_mullo_epi32(s[9], txmat_1_3);
    a[5] = _mm_mullo_epi32(s[11], txmat_1_2);
    a[6] = _mm_mullo_epi32(s[13], txmat_1_1);
    a[7] = _mm_mullo_epi32(s[15], txmat_1_0);
    a[0] = _mm_add_epi32(_mm_sub_epi32(a[0], a[1]), _mm_sub_epi32(a[2], a[3]));
    a[4] = _mm_add_epi32(_mm_sub_epi32(a[4], a[5]), _mm_sub_epi32(a[6], a[7]));
    b[7] = _mm_add_epi32(a[0], a[4]);

    c[0] = _mm_mullo_epi32(s[2], txmat_2_0);
    c[1] = _mm_mullo_epi32(s[6], txmat_2_1);
    c[2] = _mm_mullo_epi32(s[10], txmat_2_2);
    c[3] = _mm_mullo_epi32(s[14], txmat_2_3);
    d[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));

    c[0] = _mm_mullo_epi32(s[2], txmat_2_1);
    c[1] = _mm_mullo_epi32(s[6], txmat_2_3);
    c[2] = _mm_mullo_epi32(s[10], txmat_2_0);
    c[3] = _mm_mullo_epi32(s[14], txmat_2_2);
    d[1] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));

    c[0] = _mm_mullo_epi32(s[2], txmat_2_2);
    c[1] = _mm_mullo_epi32(s[6], txmat_2_0);
    c[2] = _mm_mullo_epi32(s[10], txmat_2_3);
    c[3] = _mm_mullo_epi32(s[14], txmat_2_1);
    d[2] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));

    c[0] = _mm_mullo_epi32(s[2], txmat_2_3);
    c[1] = _mm_mullo_epi32(s[6], txmat_2_2);
    c[2] = _mm_mullo_epi32(s[10], txmat_2_1);
    c[3] = _mm_mullo_epi32(s[14], txmat_2_0);
    d[3] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));

    f[0] = _mm_add_epi32(_mm_mullo_epi32(s[4], txmat_4_0),
                         _mm_mullo_epi32(s[12], txmat_4_1));
    f[1] = _mm_sub_epi32(_mm_mullo_epi32(s[4], txmat_4_1),
                         _mm_mullo_epi32(s[12], txmat_4_0));
    e[0] = _mm_add_epi32(s[0], s[8]);
    e[0] = _mm_slli_epi32(e[0], 6);
    e[1] = _mm_sub_epi32(s[0], s[8]);
    e[1] = _mm_slli_epi32(e[1], 6);

    c[0] = _mm_add_epi32(e[0], f[0]);
    c[3] = _mm_sub_epi32(e[0], f[0]);
    c[1] = _mm_add_epi32(e[1], f[1]);
    c[2] = _mm_sub_epi32(e[1], f[1]);

    for (k = 0; k < 4; k++) {
      a[k] = _mm_add_epi32(c[k], d[k]);
      a[k + 4] = _mm_sub_epi32(c[3 - k], d[3 - k]);
    }
    for (k = 0; k < 8; k++) {
      e[0] = _mm_add_epi32(v_offset, _mm_add_epi32(a[k], b[k]));
      e[1] = _mm_add_epi32(v_offset, _mm_sub_epi32(a[7 - k], b[7 - k]));

      e[0] = _mm_srai_epi32(e[0], shift);
      e[1] = _mm_srai_epi32(e[1], shift);

      e[0] = _mm_min_epi32(e[0], v_coef_max);
      e[0] = _mm_max_epi32(e[0], v_coef_min);
      e[1] = _mm_min_epi32(e[1], v_coef_max);
      e[1] = _mm_max_epi32(e[1], v_coef_min);

      _mm_storeu_si128((__m128i *)(dst + k * line), e[0]);
      _mm_storeu_si128((__m128i *)(dst + (k + 8) * line), e[1]);
    }
  }
}

void inv_txfm_dct2_size32_avx2(const int *src, int *dst, int shift, int line,
                               int skip_line, int zero_line, const int coef_min,
                               const int coef_max) {
  (void)zero_line;
  int j, k;
  int add = 1 << (shift - 1);

  const int *tx_mat = tx_kernel_dct2_size32[INV_TXFM][0];

  const int nz_line = line - skip_line;

  const int tx1d_size = 32;
  if (nz_line >= 8) {
    __m256i a[16], b[16];
    __m256i c[8], d[8];
    __m256i e[4], f[4];
    __m256i g[2], h[2];

    __m256i v_offset = _mm256_set1_epi32(add);
    __m256i v_coef_min = _mm256_set1_epi32(coef_min);
    __m256i v_coef_max = _mm256_set1_epi32(coef_max);

    __m256i s[32];

    __m256i txmat_8_0 = _mm256_set1_epi32(tx_mat[8 * 32 + 0]);  // 85
    __m256i txmat_8_1 = _mm256_set1_epi32(tx_mat[8 * 32 + 1]);  // 35

    __m256i txmat_4_0 = _mm256_set1_epi32(tx_mat[4 * 32 + 0]);  // 89
    __m256i txmat_4_1 = _mm256_set1_epi32(tx_mat[4 * 32 + 1]);  // 75
    __m256i txmat_4_2 = _mm256_set1_epi32(tx_mat[4 * 32 + 2]);  // 50
    __m256i txmat_4_3 = _mm256_set1_epi32(tx_mat[4 * 32 + 3]);  // 18

    __m256i txmat_2_0 = _mm256_set1_epi32(tx_mat[2 * 32 + 0]);  // 90
    __m256i txmat_2_1 = _mm256_set1_epi32(tx_mat[2 * 32 + 1]);  // 87
    __m256i txmat_2_2 = _mm256_set1_epi32(tx_mat[2 * 32 + 2]);  // 80
    __m256i txmat_2_3 = _mm256_set1_epi32(tx_mat[2 * 32 + 3]);  // 70
    __m256i txmat_2_4 = _mm256_set1_epi32(tx_mat[2 * 32 + 4]);  // 57
    __m256i txmat_2_5 = _mm256_set1_epi32(tx_mat[2 * 32 + 5]);  // 43
    __m256i txmat_2_6 = _mm256_set1_epi32(tx_mat[2 * 32 + 6]);  // 26
    __m256i txmat_2_7 = _mm256_set1_epi32(tx_mat[2 * 32 + 7]);  //  9

    __m256i txmat_1_0 = _mm256_set1_epi32(tx_mat[1 * 32 + 0]);    // 90
    __m256i txmat_1_1 = _mm256_set1_epi32(tx_mat[1 * 32 + 1]);    // 90
    __m256i txmat_1_2 = _mm256_set1_epi32(tx_mat[1 * 32 + 2]);    // 88
    __m256i txmat_1_3 = _mm256_set1_epi32(tx_mat[1 * 32 + 3]);    // 85
    __m256i txmat_1_4 = _mm256_set1_epi32(tx_mat[1 * 32 + 4]);    // 82
    __m256i txmat_1_5 = _mm256_set1_epi32(tx_mat[1 * 32 + 5]);    // 78
    __m256i txmat_1_6 = _mm256_set1_epi32(tx_mat[1 * 32 + 6]);    // 73
    __m256i txmat_1_7 = _mm256_set1_epi32(tx_mat[1 * 32 + 7]);    // 67
    __m256i txmat_1_8 = _mm256_set1_epi32(tx_mat[1 * 32 + 8]);    // 61
    __m256i txmat_1_9 = _mm256_set1_epi32(tx_mat[1 * 32 + 9]);    // 54
    __m256i txmat_1_10 = _mm256_set1_epi32(tx_mat[1 * 32 + 10]);  // 47
    __m256i txmat_1_11 = _mm256_set1_epi32(tx_mat[1 * 32 + 11]);  // 39
    __m256i txmat_1_12 = _mm256_set1_epi32(tx_mat[1 * 32 + 12]);  // 30
    __m256i txmat_1_13 = _mm256_set1_epi32(tx_mat[1 * 32 + 13]);  // 22
    __m256i txmat_1_14 = _mm256_set1_epi32(tx_mat[1 * 32 + 14]);  // 13
    __m256i txmat_1_15 = _mm256_set1_epi32(tx_mat[1 * 32 + 15]);  //  4

    for (j = 0; j < nz_line; j += 8) {
      // Transpose input
      transpose_load_8x8_avx2(src, s, tx1d_size);
      transpose_load_8x8_avx2(src + 8, s + 8, tx1d_size);
      transpose_load_8x8_avx2(src + 16, s + 16, tx1d_size);
      transpose_load_8x8_avx2(src + 24, s + 24, tx1d_size);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_0),
                              _mm256_mullo_epi32(s[3], txmat_1_1));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_2),
                              _mm256_mullo_epi32(s[7], txmat_1_3));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_4),
                              _mm256_mullo_epi32(s[11], txmat_1_5));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_6),
                              _mm256_mullo_epi32(s[15], txmat_1_7));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_8),
                              _mm256_mullo_epi32(s[19], txmat_1_9));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_10),
                              _mm256_mullo_epi32(s[23], txmat_1_11));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_12),
                              _mm256_mullo_epi32(s[27], txmat_1_13));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_14),
                              _mm256_mullo_epi32(s[31], txmat_1_15));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[0] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_1),
                              _mm256_mullo_epi32(s[3], txmat_1_4));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_7),
                              _mm256_mullo_epi32(s[7], txmat_1_10));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_13),
                              _mm256_mullo_epi32(s[11], txmat_1_15));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_12),
                              _mm256_mullo_epi32(s[15], txmat_1_9));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_6),
                              _mm256_mullo_epi32(s[19], txmat_1_3));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_0),
                              _mm256_mullo_epi32(s[23], txmat_1_2));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_5),
                              _mm256_mullo_epi32(s[27], txmat_1_8));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_11),
                              _mm256_mullo_epi32(s[31], txmat_1_14));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[1] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_2),
                              _mm256_mullo_epi32(s[3], txmat_1_7));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_12),
                              _mm256_mullo_epi32(s[7], txmat_1_14));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_9),
                              _mm256_mullo_epi32(s[11], txmat_1_4));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_0),
                              _mm256_mullo_epi32(s[15], txmat_1_5));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_10),
                              _mm256_mullo_epi32(s[19], txmat_1_15));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_11),
                              _mm256_mullo_epi32(s[23], txmat_1_6));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_1),
                              _mm256_mullo_epi32(s[27], txmat_1_3));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_8),
                              _mm256_mullo_epi32(s[31], txmat_1_13));
      c[0] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[2] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_3),
                              _mm256_mullo_epi32(s[3], txmat_1_10));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_14),
                              _mm256_mullo_epi32(s[7], txmat_1_7));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_0),
                              _mm256_mullo_epi32(s[11], txmat_1_6));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_13),
                              _mm256_mullo_epi32(s[15], txmat_1_11));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_4),
                              _mm256_mullo_epi32(s[19], txmat_1_2));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_9),
                              _mm256_mullo_epi32(s[23], txmat_1_15));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_8),
                              _mm256_mullo_epi32(s[27], txmat_1_1));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_5),
                              _mm256_mullo_epi32(s[31], txmat_1_12));
      c[0] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[3] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_4),
                              _mm256_mullo_epi32(s[3], txmat_1_13));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_9),
                              _mm256_mullo_epi32(s[7], txmat_1_0));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_8),
                              _mm256_mullo_epi32(s[11], txmat_1_14));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_5),
                              _mm256_mullo_epi32(s[15], txmat_1_3));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_12),
                              _mm256_mullo_epi32(s[19], txmat_1_10));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_1),
                              _mm256_mullo_epi32(s[23], txmat_1_7));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_15),
                              _mm256_mullo_epi32(s[27], txmat_1_6));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_2),
                              _mm256_mullo_epi32(s[31], txmat_1_11));
      c[0] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[4] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_5),
                              _mm256_mullo_epi32(s[3], txmat_1_15));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_4),
                              _mm256_mullo_epi32(s[7], txmat_1_6));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_14),
                              _mm256_mullo_epi32(s[11], txmat_1_3));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_7),
                              _mm256_mullo_epi32(s[15], txmat_1_13));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_2),
                              _mm256_mullo_epi32(s[19], txmat_1_8));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_12),
                              _mm256_mullo_epi32(s[23], txmat_1_1));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_9),
                              _mm256_mullo_epi32(s[27], txmat_1_11));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_0),
                              _mm256_mullo_epi32(s[31], txmat_1_10));
      c[0] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[5] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_6),
                              _mm256_mullo_epi32(s[3], txmat_1_12));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_0),
                              _mm256_mullo_epi32(s[7], txmat_1_13));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_5),
                              _mm256_mullo_epi32(s[11], txmat_1_7));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_11),
                              _mm256_mullo_epi32(s[15], txmat_1_1));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_14),
                              _mm256_mullo_epi32(s[19], txmat_1_4));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_8),
                              _mm256_mullo_epi32(s[23], txmat_1_10));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_2),
                              _mm256_mullo_epi32(s[27], txmat_1_15));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_3),
                              _mm256_mullo_epi32(s[31], txmat_1_9));
      c[0] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[6] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_7),
                              _mm256_mullo_epi32(s[3], txmat_1_9));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_5),
                              _mm256_mullo_epi32(s[7], txmat_1_11));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_3),
                              _mm256_mullo_epi32(s[11], txmat_1_13));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_1),
                              _mm256_mullo_epi32(s[15], txmat_1_15));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_0),
                              _mm256_mullo_epi32(s[19], txmat_1_14));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_2),
                              _mm256_mullo_epi32(s[23], txmat_1_12));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_4),
                              _mm256_mullo_epi32(s[27], txmat_1_10));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_6),
                              _mm256_mullo_epi32(s[31], txmat_1_8));
      c[0] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[7] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_8),
                              _mm256_mullo_epi32(s[3], txmat_1_6));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_10),
                              _mm256_mullo_epi32(s[7], txmat_1_4));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_12),
                              _mm256_mullo_epi32(s[11], txmat_1_2));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_14),
                              _mm256_mullo_epi32(s[15], txmat_1_0));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_15),
                              _mm256_mullo_epi32(s[19], txmat_1_1));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_13),
                              _mm256_mullo_epi32(s[23], txmat_1_3));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_11),
                              _mm256_mullo_epi32(s[27], txmat_1_5));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_9),
                              _mm256_mullo_epi32(s[31], txmat_1_7));
      c[0] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[8] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_9),
                              _mm256_mullo_epi32(s[3], txmat_1_3));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_15),
                              _mm256_mullo_epi32(s[7], txmat_1_2));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_10),
                              _mm256_mullo_epi32(s[11], txmat_1_8));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_4),
                              _mm256_mullo_epi32(s[15], txmat_1_14));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_1),
                              _mm256_mullo_epi32(s[19], txmat_1_11));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_7),
                              _mm256_mullo_epi32(s[23], txmat_1_5));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_13),
                              _mm256_mullo_epi32(s[27], txmat_1_0));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_12),
                              _mm256_mullo_epi32(s[31], txmat_1_6));
      c[0] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[9] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_10),
                              _mm256_mullo_epi32(s[3], txmat_1_0));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_11),
                              _mm256_mullo_epi32(s[7], txmat_1_9));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_1),
                              _mm256_mullo_epi32(s[11], txmat_1_12));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_8),
                              _mm256_mullo_epi32(s[15], txmat_1_2));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_13),
                              _mm256_mullo_epi32(s[19], txmat_1_7));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_3),
                              _mm256_mullo_epi32(s[23], txmat_1_14));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_6),
                              _mm256_mullo_epi32(s[27], txmat_1_4));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_15),
                              _mm256_mullo_epi32(s[31], txmat_1_5));
      c[0] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[10] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_11),
                              _mm256_mullo_epi32(s[3], txmat_1_2));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_6),
                              _mm256_mullo_epi32(s[7], txmat_1_15));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_7),
                              _mm256_mullo_epi32(s[11], txmat_1_1));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_10),
                              _mm256_mullo_epi32(s[15], txmat_1_12));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_3),
                              _mm256_mullo_epi32(s[19], txmat_1_5));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_14),
                              _mm256_mullo_epi32(s[23], txmat_1_8));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_0),
                              _mm256_mullo_epi32(s[27], txmat_1_9));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_13),
                              _mm256_mullo_epi32(s[31], txmat_1_4));
      c[0] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[11] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_12),
                              _mm256_mullo_epi32(s[3], txmat_1_5));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_1),
                              _mm256_mullo_epi32(s[7], txmat_1_8));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_15),
                              _mm256_mullo_epi32(s[11], txmat_1_9));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_2),
                              _mm256_mullo_epi32(s[15], txmat_1_4));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_11),
                              _mm256_mullo_epi32(s[19], txmat_1_13));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_6),
                              _mm256_mullo_epi32(s[23], txmat_1_0));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_7),
                              _mm256_mullo_epi32(s[27], txmat_1_14));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_10),
                              _mm256_mullo_epi32(s[31], txmat_1_3));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[12] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_13),
                              _mm256_mullo_epi32(s[3], txmat_1_8));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_3),
                              _mm256_mullo_epi32(s[7], txmat_1_1));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_6),
                              _mm256_mullo_epi32(s[11], txmat_1_11));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_15),
                              _mm256_mullo_epi32(s[15], txmat_1_10));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_5),
                              _mm256_mullo_epi32(s[19], txmat_1_0));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_4),
                              _mm256_mullo_epi32(s[23], txmat_1_9));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_14),
                              _mm256_mullo_epi32(s[27], txmat_1_12));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_7),
                              _mm256_mullo_epi32(s[31], txmat_1_2));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[13] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_14),
                              _mm256_mullo_epi32(s[3], txmat_1_11));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_8),
                              _mm256_mullo_epi32(s[7], txmat_1_5));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_2),
                              _mm256_mullo_epi32(s[11], txmat_1_0));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_3),
                              _mm256_mullo_epi32(s[15], txmat_1_6));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_9),
                              _mm256_mullo_epi32(s[19], txmat_1_12));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_15),
                              _mm256_mullo_epi32(s[23], txmat_1_13));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_10),
                              _mm256_mullo_epi32(s[27], txmat_1_7));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_4),
                              _mm256_mullo_epi32(s[31], txmat_1_1));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[14] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_15),
                              _mm256_mullo_epi32(s[3], txmat_1_14));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_13),
                              _mm256_mullo_epi32(s[7], txmat_1_12));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_11),
                              _mm256_mullo_epi32(s[11], txmat_1_10));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_9),
                              _mm256_mullo_epi32(s[15], txmat_1_8));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_7),
                              _mm256_mullo_epi32(s[19], txmat_1_6));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_5),
                              _mm256_mullo_epi32(s[23], txmat_1_4));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_3),
                              _mm256_mullo_epi32(s[27], txmat_1_2));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_1),
                              _mm256_mullo_epi32(s[31], txmat_1_0));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[15] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_mullo_epi32(s[2], txmat_2_0);
      c[1] = _mm256_mullo_epi32(s[6], txmat_2_1);
      c[2] = _mm256_mullo_epi32(s[10], txmat_2_2);
      c[3] = _mm256_mullo_epi32(s[14], txmat_2_3);
      c[4] = _mm256_mullo_epi32(s[18], txmat_2_4);
      c[5] = _mm256_mullo_epi32(s[22], txmat_2_5);
      c[6] = _mm256_mullo_epi32(s[26], txmat_2_6);
      c[7] = _mm256_mullo_epi32(s[30], txmat_2_7);
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      d[0] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_mullo_epi32(s[2], txmat_2_1);
      c[1] = _mm256_mullo_epi32(s[6], txmat_2_4);
      c[2] = _mm256_mullo_epi32(s[10], txmat_2_7);
      c[3] = _mm256_mullo_epi32(s[14], txmat_2_5);
      c[4] = _mm256_mullo_epi32(s[18], txmat_2_2);
      c[5] = _mm256_mullo_epi32(s[22], txmat_2_0);
      c[6] = _mm256_mullo_epi32(s[26], txmat_2_3);
      c[7] = _mm256_mullo_epi32(s[30], txmat_2_6);
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      d[1] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_mullo_epi32(s[2], txmat_2_2);
      c[1] = _mm256_mullo_epi32(s[6], txmat_2_7);
      c[2] = _mm256_mullo_epi32(s[10], txmat_2_3);
      c[3] = _mm256_mullo_epi32(s[14], txmat_2_1);
      c[4] = _mm256_mullo_epi32(s[18], txmat_2_6);
      c[5] = _mm256_mullo_epi32(s[22], txmat_2_4);
      c[6] = _mm256_mullo_epi32(s[26], txmat_2_0);
      c[7] = _mm256_mullo_epi32(s[30], txmat_2_5);
      c[0] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      d[2] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_mullo_epi32(s[2], txmat_2_3);
      c[1] = _mm256_mullo_epi32(s[6], txmat_2_5);
      c[2] = _mm256_mullo_epi32(s[10], txmat_2_1);
      c[3] = _mm256_mullo_epi32(s[14], txmat_2_7);
      c[4] = _mm256_mullo_epi32(s[18], txmat_2_0);
      c[5] = _mm256_mullo_epi32(s[22], txmat_2_6);
      c[6] = _mm256_mullo_epi32(s[26], txmat_2_2);
      c[7] = _mm256_mullo_epi32(s[30], txmat_2_4);
      c[0] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      d[3] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_mullo_epi32(s[2], txmat_2_4);
      c[1] = _mm256_mullo_epi32(s[6], txmat_2_2);
      c[2] = _mm256_mullo_epi32(s[10], txmat_2_6);
      c[3] = _mm256_mullo_epi32(s[14], txmat_2_0);
      c[4] = _mm256_mullo_epi32(s[18], txmat_2_7);
      c[5] = _mm256_mullo_epi32(s[22], txmat_2_1);
      c[6] = _mm256_mullo_epi32(s[26], txmat_2_5);
      c[7] = _mm256_mullo_epi32(s[30], txmat_2_3);
      c[0] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      d[4] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_mullo_epi32(s[2], txmat_2_5);
      c[1] = _mm256_mullo_epi32(s[6], txmat_2_0);
      c[2] = _mm256_mullo_epi32(s[10], txmat_2_4);
      c[3] = _mm256_mullo_epi32(s[14], txmat_2_6);
      c[4] = _mm256_mullo_epi32(s[18], txmat_2_1);
      c[5] = _mm256_mullo_epi32(s[22], txmat_2_3);
      c[6] = _mm256_mullo_epi32(s[26], txmat_2_7);
      c[7] = _mm256_mullo_epi32(s[30], txmat_2_2);
      c[0] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      d[5] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_mullo_epi32(s[2], txmat_2_6);
      c[1] = _mm256_mullo_epi32(s[6], txmat_2_3);
      c[2] = _mm256_mullo_epi32(s[10], txmat_2_0);
      c[3] = _mm256_mullo_epi32(s[14], txmat_2_2);
      c[4] = _mm256_mullo_epi32(s[18], txmat_2_5);
      c[5] = _mm256_mullo_epi32(s[22], txmat_2_7);
      c[6] = _mm256_mullo_epi32(s[26], txmat_2_4);
      c[7] = _mm256_mullo_epi32(s[30], txmat_2_1);
      c[0] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      d[6] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_mullo_epi32(s[2], txmat_2_7);
      c[1] = _mm256_mullo_epi32(s[6], txmat_2_6);
      c[2] = _mm256_mullo_epi32(s[10], txmat_2_5);
      c[3] = _mm256_mullo_epi32(s[14], txmat_2_4);
      c[4] = _mm256_mullo_epi32(s[18], txmat_2_3);
      c[5] = _mm256_mullo_epi32(s[22], txmat_2_2);
      c[6] = _mm256_mullo_epi32(s[26], txmat_2_1);
      c[7] = _mm256_mullo_epi32(s[30], txmat_2_0);
      c[0] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      d[7] = _mm256_add_epi32(c[0], c[4]);

      e[0] = _mm256_mullo_epi32(s[4], txmat_4_0);
      e[1] = _mm256_mullo_epi32(s[12], txmat_4_1);
      e[2] = _mm256_mullo_epi32(s[20], txmat_4_2);
      e[3] = _mm256_mullo_epi32(s[28], txmat_4_3);
      f[0] = _mm256_add_epi32(_mm256_add_epi32(e[0], e[1]),
                              _mm256_add_epi32(e[2], e[3]));

      e[0] = _mm256_mullo_epi32(s[4], txmat_4_1);
      e[1] = _mm256_mullo_epi32(s[12], txmat_4_3);
      e[2] = _mm256_mullo_epi32(s[20], txmat_4_0);
      e[3] = _mm256_mullo_epi32(s[28], txmat_4_2);
      f[1] = _mm256_sub_epi32(_mm256_sub_epi32(e[0], e[1]),
                              _mm256_add_epi32(e[2], e[3]));

      e[0] = _mm256_mullo_epi32(s[4], txmat_4_2);
      e[1] = _mm256_mullo_epi32(s[12], txmat_4_0);
      e[2] = _mm256_mullo_epi32(s[20], txmat_4_3);
      e[3] = _mm256_mullo_epi32(s[28], txmat_4_1);
      f[2] = _mm256_add_epi32(_mm256_sub_epi32(e[0], e[1]),
                              _mm256_add_epi32(e[2], e[3]));

      e[0] = _mm256_mullo_epi32(s[4], txmat_4_3);
      e[1] = _mm256_mullo_epi32(s[12], txmat_4_2);
      e[2] = _mm256_mullo_epi32(s[20], txmat_4_1);
      e[3] = _mm256_mullo_epi32(s[28], txmat_4_0);
      f[3] = _mm256_add_epi32(_mm256_sub_epi32(e[0], e[1]),
                              _mm256_sub_epi32(e[2], e[3]));

      h[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[8], txmat_8_0),
                              _mm256_mullo_epi32(s[24], txmat_8_1));
      h[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[8], txmat_8_1),
                              _mm256_mullo_epi32(s[24], txmat_8_0));
      g[0] = _mm256_add_epi32(s[0], s[16]);
      g[0] = _mm256_slli_epi32(g[0], 6);
      g[1] = _mm256_sub_epi32(s[0], s[16]);
      g[1] = _mm256_slli_epi32(g[1], 6);

      e[0] = _mm256_add_epi32(g[0], h[0]);
      e[3] = _mm256_sub_epi32(g[0], h[0]);
      e[1] = _mm256_add_epi32(g[1], h[1]);
      e[2] = _mm256_sub_epi32(g[1], h[1]);

      for (k = 0; k < 4; k++) {
        c[k] = _mm256_add_epi32(e[k], f[k]);
        c[k + 4] = _mm256_sub_epi32(e[3 - k], f[3 - k]);
      }
      for (k = 0; k < 8; k++) {
        a[k] = _mm256_add_epi32(c[k], d[k]);
        a[k + 8] = _mm256_sub_epi32(c[7 - k], d[7 - k]);
      }
      for (k = 0; k < 16; k++) {
        g[0] = _mm256_add_epi32(v_offset, _mm256_add_epi32(a[k], b[k]));
        g[1] =
            _mm256_add_epi32(v_offset, _mm256_sub_epi32(a[15 - k], b[15 - k]));

        g[0] = _mm256_srai_epi32(g[0], shift);
        g[1] = _mm256_srai_epi32(g[1], shift);

        g[0] = _mm256_min_epi32(g[0], v_coef_max);
        g[0] = _mm256_max_epi32(g[0], v_coef_min);
        g[1] = _mm256_min_epi32(g[1], v_coef_max);
        g[1] = _mm256_max_epi32(g[1], v_coef_min);

        _mm256_storeu_si256((__m256i *)(dst + k * line), g[0]);
        _mm256_storeu_si256((__m256i *)(dst + (k + 16) * line), g[1]);
      }
      src += 8 * tx1d_size;
      dst += 8;
    }
  } else {
    __m128i a[16], b[16];
    __m128i c[8], d[8];
    __m128i e[4], f[4];
    __m128i g[2], h[2];

    __m128i v_offset = _mm_set1_epi32(add);
    __m128i v_coef_min = _mm_set1_epi32(coef_min);
    __m128i v_coef_max = _mm_set1_epi32(coef_max);

    __m128i s[32];

    __m128i txmat_8_0 = _mm_set1_epi32(tx_mat[8 * 32 + 0]);  // 85
    __m128i txmat_8_1 = _mm_set1_epi32(tx_mat[8 * 32 + 1]);  // 35

    __m128i txmat_4_0 = _mm_set1_epi32(tx_mat[4 * 32 + 0]);  // 89
    __m128i txmat_4_1 = _mm_set1_epi32(tx_mat[4 * 32 + 1]);  // 75
    __m128i txmat_4_2 = _mm_set1_epi32(tx_mat[4 * 32 + 2]);  // 50
    __m128i txmat_4_3 = _mm_set1_epi32(tx_mat[4 * 32 + 3]);  // 18

    __m128i txmat_2_0 = _mm_set1_epi32(tx_mat[2 * 32 + 0]);  // 90
    __m128i txmat_2_1 = _mm_set1_epi32(tx_mat[2 * 32 + 1]);  // 87
    __m128i txmat_2_2 = _mm_set1_epi32(tx_mat[2 * 32 + 2]);  // 80
    __m128i txmat_2_3 = _mm_set1_epi32(tx_mat[2 * 32 + 3]);  // 70
    __m128i txmat_2_4 = _mm_set1_epi32(tx_mat[2 * 32 + 4]);  // 57
    __m128i txmat_2_5 = _mm_set1_epi32(tx_mat[2 * 32 + 5]);  // 43
    __m128i txmat_2_6 = _mm_set1_epi32(tx_mat[2 * 32 + 6]);  // 26
    __m128i txmat_2_7 = _mm_set1_epi32(tx_mat[2 * 32 + 7]);  //  9

    __m128i txmat_1_0 = _mm_set1_epi32(tx_mat[1 * 32 + 0]);    // 90
    __m128i txmat_1_1 = _mm_set1_epi32(tx_mat[1 * 32 + 1]);    // 90
    __m128i txmat_1_2 = _mm_set1_epi32(tx_mat[1 * 32 + 2]);    // 88
    __m128i txmat_1_3 = _mm_set1_epi32(tx_mat[1 * 32 + 3]);    // 85
    __m128i txmat_1_4 = _mm_set1_epi32(tx_mat[1 * 32 + 4]);    // 82
    __m128i txmat_1_5 = _mm_set1_epi32(tx_mat[1 * 32 + 5]);    // 78
    __m128i txmat_1_6 = _mm_set1_epi32(tx_mat[1 * 32 + 6]);    // 73
    __m128i txmat_1_7 = _mm_set1_epi32(tx_mat[1 * 32 + 7]);    // 67
    __m128i txmat_1_8 = _mm_set1_epi32(tx_mat[1 * 32 + 8]);    // 61
    __m128i txmat_1_9 = _mm_set1_epi32(tx_mat[1 * 32 + 9]);    // 54
    __m128i txmat_1_10 = _mm_set1_epi32(tx_mat[1 * 32 + 10]);  // 47
    __m128i txmat_1_11 = _mm_set1_epi32(tx_mat[1 * 32 + 11]);  // 39
    __m128i txmat_1_12 = _mm_set1_epi32(tx_mat[1 * 32 + 12]);  // 30
    __m128i txmat_1_13 = _mm_set1_epi32(tx_mat[1 * 32 + 13]);  // 22
    __m128i txmat_1_14 = _mm_set1_epi32(tx_mat[1 * 32 + 14]);  // 13
    __m128i txmat_1_15 = _mm_set1_epi32(tx_mat[1 * 32 + 15]);  //  4

    // Transpose input
    transpose_load_8x4_sse4(src, s, tx1d_size);
    transpose_load_8x4_sse4(src + 8, s + 8, tx1d_size);
    transpose_load_8x4_sse4(src + 16, s + 16, tx1d_size);
    transpose_load_8x4_sse4(src + 24, s + 24, tx1d_size);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_0),
                         _mm_mullo_epi32(s[3], txmat_1_1));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_2),
                         _mm_mullo_epi32(s[7], txmat_1_3));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_4),
                         _mm_mullo_epi32(s[11], txmat_1_5));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_6),
                         _mm_mullo_epi32(s[15], txmat_1_7));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_8),
                         _mm_mullo_epi32(s[19], txmat_1_9));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_10),
                         _mm_mullo_epi32(s[23], txmat_1_11));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_12),
                         _mm_mullo_epi32(s[27], txmat_1_13));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_14),
                         _mm_mullo_epi32(s[31], txmat_1_15));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[0] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_1),
                         _mm_mullo_epi32(s[3], txmat_1_4));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_7),
                         _mm_mullo_epi32(s[7], txmat_1_10));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_13),
                         _mm_mullo_epi32(s[11], txmat_1_15));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_12),
                         _mm_mullo_epi32(s[15], txmat_1_9));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_6),
                         _mm_mullo_epi32(s[19], txmat_1_3));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_0),
                         _mm_mullo_epi32(s[23], txmat_1_2));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_5),
                         _mm_mullo_epi32(s[27], txmat_1_8));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_11),
                         _mm_mullo_epi32(s[31], txmat_1_14));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[1] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_2),
                         _mm_mullo_epi32(s[3], txmat_1_7));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_12),
                         _mm_mullo_epi32(s[7], txmat_1_14));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_9),
                         _mm_mullo_epi32(s[11], txmat_1_4));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_0),
                         _mm_mullo_epi32(s[15], txmat_1_5));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_10),
                         _mm_mullo_epi32(s[19], txmat_1_15));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_11),
                         _mm_mullo_epi32(s[23], txmat_1_6));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_1),
                         _mm_mullo_epi32(s[27], txmat_1_3));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_8),
                         _mm_mullo_epi32(s[31], txmat_1_13));
    c[0] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_sub_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[2] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_3),
                         _mm_mullo_epi32(s[3], txmat_1_10));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_14),
                         _mm_mullo_epi32(s[7], txmat_1_7));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_0),
                         _mm_mullo_epi32(s[11], txmat_1_6));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_13),
                         _mm_mullo_epi32(s[15], txmat_1_11));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_4),
                         _mm_mullo_epi32(s[19], txmat_1_2));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_9),
                         _mm_mullo_epi32(s[23], txmat_1_15));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_8),
                         _mm_mullo_epi32(s[27], txmat_1_1));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_5),
                         _mm_mullo_epi32(s[31], txmat_1_12));
    c[0] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[3] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_4),
                         _mm_mullo_epi32(s[3], txmat_1_13));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_9),
                         _mm_mullo_epi32(s[7], txmat_1_0));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_8),
                         _mm_mullo_epi32(s[11], txmat_1_14));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_5),
                         _mm_mullo_epi32(s[15], txmat_1_3));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_12),
                         _mm_mullo_epi32(s[19], txmat_1_10));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_1),
                         _mm_mullo_epi32(s[23], txmat_1_7));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_15),
                         _mm_mullo_epi32(s[27], txmat_1_6));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_2),
                         _mm_mullo_epi32(s[31], txmat_1_11));
    c[0] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_sub_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[4] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_5),
                         _mm_mullo_epi32(s[3], txmat_1_15));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_4),
                         _mm_mullo_epi32(s[7], txmat_1_6));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_14),
                         _mm_mullo_epi32(s[11], txmat_1_3));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_7),
                         _mm_mullo_epi32(s[15], txmat_1_13));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_2),
                         _mm_mullo_epi32(s[19], txmat_1_8));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_12),
                         _mm_mullo_epi32(s[23], txmat_1_1));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_9),
                         _mm_mullo_epi32(s[27], txmat_1_11));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_0),
                         _mm_mullo_epi32(s[31], txmat_1_10));
    c[0] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[5] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_6),
                         _mm_mullo_epi32(s[3], txmat_1_12));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_0),
                         _mm_mullo_epi32(s[7], txmat_1_13));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_5),
                         _mm_mullo_epi32(s[11], txmat_1_7));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_11),
                         _mm_mullo_epi32(s[15], txmat_1_1));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_14),
                         _mm_mullo_epi32(s[19], txmat_1_4));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_8),
                         _mm_mullo_epi32(s[23], txmat_1_10));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_2),
                         _mm_mullo_epi32(s[27], txmat_1_15));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_3),
                         _mm_mullo_epi32(s[31], txmat_1_9));
    c[0] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[6] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_7),
                         _mm_mullo_epi32(s[3], txmat_1_9));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_5),
                         _mm_mullo_epi32(s[7], txmat_1_11));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_3),
                         _mm_mullo_epi32(s[11], txmat_1_13));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_1),
                         _mm_mullo_epi32(s[15], txmat_1_15));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_0),
                         _mm_mullo_epi32(s[19], txmat_1_14));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_2),
                         _mm_mullo_epi32(s[23], txmat_1_12));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_4),
                         _mm_mullo_epi32(s[27], txmat_1_10));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_6),
                         _mm_mullo_epi32(s[31], txmat_1_8));
    c[0] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[7] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_8),
                         _mm_mullo_epi32(s[3], txmat_1_6));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_10),
                         _mm_mullo_epi32(s[7], txmat_1_4));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_12),
                         _mm_mullo_epi32(s[11], txmat_1_2));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_14),
                         _mm_mullo_epi32(s[15], txmat_1_0));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_15),
                         _mm_mullo_epi32(s[19], txmat_1_1));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_13),
                         _mm_mullo_epi32(s[23], txmat_1_3));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_11),
                         _mm_mullo_epi32(s[27], txmat_1_5));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_9),
                         _mm_mullo_epi32(s[31], txmat_1_7));
    c[0] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[8] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_9),
                         _mm_mullo_epi32(s[3], txmat_1_3));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_15),
                         _mm_mullo_epi32(s[7], txmat_1_2));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_10),
                         _mm_mullo_epi32(s[11], txmat_1_8));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_4),
                         _mm_mullo_epi32(s[15], txmat_1_14));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_1),
                         _mm_mullo_epi32(s[19], txmat_1_11));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_7),
                         _mm_mullo_epi32(s[23], txmat_1_5));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_13),
                         _mm_mullo_epi32(s[27], txmat_1_0));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_12),
                         _mm_mullo_epi32(s[31], txmat_1_6));
    c[0] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_sub_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[9] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_10),
                         _mm_mullo_epi32(s[3], txmat_1_0));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_11),
                         _mm_mullo_epi32(s[7], txmat_1_9));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_1),
                         _mm_mullo_epi32(s[11], txmat_1_12));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_8),
                         _mm_mullo_epi32(s[15], txmat_1_2));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_13),
                         _mm_mullo_epi32(s[19], txmat_1_7));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_3),
                         _mm_mullo_epi32(s[23], txmat_1_14));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_6),
                         _mm_mullo_epi32(s[27], txmat_1_4));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_15),
                         _mm_mullo_epi32(s[31], txmat_1_5));
    c[0] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_sub_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[10] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_11),
                         _mm_mullo_epi32(s[3], txmat_1_2));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_6),
                         _mm_mullo_epi32(s[7], txmat_1_15));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_7),
                         _mm_mullo_epi32(s[11], txmat_1_1));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_10),
                         _mm_mullo_epi32(s[15], txmat_1_12));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_3),
                         _mm_mullo_epi32(s[19], txmat_1_5));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_14),
                         _mm_mullo_epi32(s[23], txmat_1_8));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_0),
                         _mm_mullo_epi32(s[27], txmat_1_9));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_13),
                         _mm_mullo_epi32(s[31], txmat_1_4));
    c[0] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[11] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_12),
                         _mm_mullo_epi32(s[3], txmat_1_5));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_1),
                         _mm_mullo_epi32(s[7], txmat_1_8));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_15),
                         _mm_mullo_epi32(s[11], txmat_1_9));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_2),
                         _mm_mullo_epi32(s[15], txmat_1_4));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_11),
                         _mm_mullo_epi32(s[19], txmat_1_13));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_6),
                         _mm_mullo_epi32(s[23], txmat_1_0));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_7),
                         _mm_mullo_epi32(s[27], txmat_1_14));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_10),
                         _mm_mullo_epi32(s[31], txmat_1_3));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[12] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_13),
                         _mm_mullo_epi32(s[3], txmat_1_8));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_3),
                         _mm_mullo_epi32(s[7], txmat_1_1));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_6),
                         _mm_mullo_epi32(s[11], txmat_1_11));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_15),
                         _mm_mullo_epi32(s[15], txmat_1_10));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_5),
                         _mm_mullo_epi32(s[19], txmat_1_0));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_4),
                         _mm_mullo_epi32(s[23], txmat_1_9));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_14),
                         _mm_mullo_epi32(s[27], txmat_1_12));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_7),
                         _mm_mullo_epi32(s[31], txmat_1_2));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_add_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[13] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_14),
                         _mm_mullo_epi32(s[3], txmat_1_11));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_8),
                         _mm_mullo_epi32(s[7], txmat_1_5));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_2),
                         _mm_mullo_epi32(s[11], txmat_1_0));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_3),
                         _mm_mullo_epi32(s[15], txmat_1_6));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_9),
                         _mm_mullo_epi32(s[19], txmat_1_12));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_15),
                         _mm_mullo_epi32(s[23], txmat_1_13));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_10),
                         _mm_mullo_epi32(s[27], txmat_1_7));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_4),
                         _mm_mullo_epi32(s[31], txmat_1_1));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[14] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_15),
                         _mm_mullo_epi32(s[3], txmat_1_14));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_13),
                         _mm_mullo_epi32(s[7], txmat_1_12));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_11),
                         _mm_mullo_epi32(s[11], txmat_1_10));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_9),
                         _mm_mullo_epi32(s[15], txmat_1_8));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_7),
                         _mm_mullo_epi32(s[19], txmat_1_6));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_5),
                         _mm_mullo_epi32(s[23], txmat_1_4));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_3),
                         _mm_mullo_epi32(s[27], txmat_1_2));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_1),
                         _mm_mullo_epi32(s[31], txmat_1_0));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[15] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_mullo_epi32(s[2], txmat_2_0);
    c[1] = _mm_mullo_epi32(s[6], txmat_2_1);
    c[2] = _mm_mullo_epi32(s[10], txmat_2_2);
    c[3] = _mm_mullo_epi32(s[14], txmat_2_3);
    c[4] = _mm_mullo_epi32(s[18], txmat_2_4);
    c[5] = _mm_mullo_epi32(s[22], txmat_2_5);
    c[6] = _mm_mullo_epi32(s[26], txmat_2_6);
    c[7] = _mm_mullo_epi32(s[30], txmat_2_7);
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    d[0] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_mullo_epi32(s[2], txmat_2_1);
    c[1] = _mm_mullo_epi32(s[6], txmat_2_4);
    c[2] = _mm_mullo_epi32(s[10], txmat_2_7);
    c[3] = _mm_mullo_epi32(s[14], txmat_2_5);
    c[4] = _mm_mullo_epi32(s[18], txmat_2_2);
    c[5] = _mm_mullo_epi32(s[22], txmat_2_0);
    c[6] = _mm_mullo_epi32(s[26], txmat_2_3);
    c[7] = _mm_mullo_epi32(s[30], txmat_2_6);
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    d[1] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_mullo_epi32(s[2], txmat_2_2);
    c[1] = _mm_mullo_epi32(s[6], txmat_2_7);
    c[2] = _mm_mullo_epi32(s[10], txmat_2_3);
    c[3] = _mm_mullo_epi32(s[14], txmat_2_1);
    c[4] = _mm_mullo_epi32(s[18], txmat_2_6);
    c[5] = _mm_mullo_epi32(s[22], txmat_2_4);
    c[6] = _mm_mullo_epi32(s[26], txmat_2_0);
    c[7] = _mm_mullo_epi32(s[30], txmat_2_5);
    c[0] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_sub_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    d[2] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_mullo_epi32(s[2], txmat_2_3);
    c[1] = _mm_mullo_epi32(s[6], txmat_2_5);
    c[2] = _mm_mullo_epi32(s[10], txmat_2_1);
    c[3] = _mm_mullo_epi32(s[14], txmat_2_7);
    c[4] = _mm_mullo_epi32(s[18], txmat_2_0);
    c[5] = _mm_mullo_epi32(s[22], txmat_2_6);
    c[6] = _mm_mullo_epi32(s[26], txmat_2_2);
    c[7] = _mm_mullo_epi32(s[30], txmat_2_4);
    c[0] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    d[3] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_mullo_epi32(s[2], txmat_2_4);
    c[1] = _mm_mullo_epi32(s[6], txmat_2_2);
    c[2] = _mm_mullo_epi32(s[10], txmat_2_6);
    c[3] = _mm_mullo_epi32(s[14], txmat_2_0);
    c[4] = _mm_mullo_epi32(s[18], txmat_2_7);
    c[5] = _mm_mullo_epi32(s[22], txmat_2_1);
    c[6] = _mm_mullo_epi32(s[26], txmat_2_5);
    c[7] = _mm_mullo_epi32(s[30], txmat_2_3);
    c[0] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    d[4] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_mullo_epi32(s[2], txmat_2_5);
    c[1] = _mm_mullo_epi32(s[6], txmat_2_0);
    c[2] = _mm_mullo_epi32(s[10], txmat_2_4);
    c[3] = _mm_mullo_epi32(s[14], txmat_2_6);
    c[4] = _mm_mullo_epi32(s[18], txmat_2_1);
    c[5] = _mm_mullo_epi32(s[22], txmat_2_3);
    c[6] = _mm_mullo_epi32(s[26], txmat_2_7);
    c[7] = _mm_mullo_epi32(s[30], txmat_2_2);
    c[0] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    d[5] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_mullo_epi32(s[2], txmat_2_6);
    c[1] = _mm_mullo_epi32(s[6], txmat_2_3);
    c[2] = _mm_mullo_epi32(s[10], txmat_2_0);
    c[3] = _mm_mullo_epi32(s[14], txmat_2_2);
    c[4] = _mm_mullo_epi32(s[18], txmat_2_5);
    c[5] = _mm_mullo_epi32(s[22], txmat_2_7);
    c[6] = _mm_mullo_epi32(s[26], txmat_2_4);
    c[7] = _mm_mullo_epi32(s[30], txmat_2_1);
    c[0] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    d[6] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_mullo_epi32(s[2], txmat_2_7);
    c[1] = _mm_mullo_epi32(s[6], txmat_2_6);
    c[2] = _mm_mullo_epi32(s[10], txmat_2_5);
    c[3] = _mm_mullo_epi32(s[14], txmat_2_4);
    c[4] = _mm_mullo_epi32(s[18], txmat_2_3);
    c[5] = _mm_mullo_epi32(s[22], txmat_2_2);
    c[6] = _mm_mullo_epi32(s[26], txmat_2_1);
    c[7] = _mm_mullo_epi32(s[30], txmat_2_0);
    c[0] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    d[7] = _mm_add_epi32(c[0], c[4]);

    e[0] = _mm_mullo_epi32(s[4], txmat_4_0);
    e[1] = _mm_mullo_epi32(s[12], txmat_4_1);
    e[2] = _mm_mullo_epi32(s[20], txmat_4_2);
    e[3] = _mm_mullo_epi32(s[28], txmat_4_3);
    f[0] = _mm_add_epi32(_mm_add_epi32(e[0], e[1]), _mm_add_epi32(e[2], e[3]));

    e[0] = _mm_mullo_epi32(s[4], txmat_4_1);
    e[1] = _mm_mullo_epi32(s[12], txmat_4_3);
    e[2] = _mm_mullo_epi32(s[20], txmat_4_0);
    e[3] = _mm_mullo_epi32(s[28], txmat_4_2);
    f[1] = _mm_sub_epi32(_mm_sub_epi32(e[0], e[1]), _mm_add_epi32(e[2], e[3]));

    e[0] = _mm_mullo_epi32(s[4], txmat_4_2);
    e[1] = _mm_mullo_epi32(s[12], txmat_4_0);
    e[2] = _mm_mullo_epi32(s[20], txmat_4_3);
    e[3] = _mm_mullo_epi32(s[28], txmat_4_1);
    f[2] = _mm_add_epi32(_mm_sub_epi32(e[0], e[1]), _mm_add_epi32(e[2], e[3]));

    e[0] = _mm_mullo_epi32(s[4], txmat_4_3);
    e[1] = _mm_mullo_epi32(s[12], txmat_4_2);
    e[2] = _mm_mullo_epi32(s[20], txmat_4_1);
    e[3] = _mm_mullo_epi32(s[28], txmat_4_0);
    f[3] = _mm_add_epi32(_mm_sub_epi32(e[0], e[1]), _mm_sub_epi32(e[2], e[3]));

    h[0] = _mm_add_epi32(_mm_mullo_epi32(s[8], txmat_8_0),
                         _mm_mullo_epi32(s[24], txmat_8_1));
    h[1] = _mm_sub_epi32(_mm_mullo_epi32(s[8], txmat_8_1),
                         _mm_mullo_epi32(s[24], txmat_8_0));
    g[0] = _mm_add_epi32(s[0], s[16]);
    g[0] = _mm_slli_epi32(g[0], 6);
    g[1] = _mm_sub_epi32(s[0], s[16]);
    g[1] = _mm_slli_epi32(g[1], 6);

    e[0] = _mm_add_epi32(g[0], h[0]);
    e[3] = _mm_sub_epi32(g[0], h[0]);
    e[1] = _mm_add_epi32(g[1], h[1]);
    e[2] = _mm_sub_epi32(g[1], h[1]);

    for (k = 0; k < 4; k++) {
      c[k] = _mm_add_epi32(e[k], f[k]);
      c[k + 4] = _mm_sub_epi32(e[3 - k], f[3 - k]);
    }
    for (k = 0; k < 8; k++) {
      a[k] = _mm_add_epi32(c[k], d[k]);
      a[k + 8] = _mm_sub_epi32(c[7 - k], d[7 - k]);
    }
    for (k = 0; k < 16; k++) {
      g[0] = _mm_add_epi32(v_offset, _mm_add_epi32(a[k], b[k]));
      g[1] = _mm_add_epi32(v_offset, _mm_sub_epi32(a[15 - k], b[15 - k]));

      g[0] = _mm_srai_epi32(g[0], shift);
      g[1] = _mm_srai_epi32(g[1], shift);

      g[0] = _mm_min_epi32(g[0], v_coef_max);
      g[0] = _mm_max_epi32(g[0], v_coef_min);
      g[1] = _mm_min_epi32(g[1], v_coef_max);
      g[1] = _mm_max_epi32(g[1], v_coef_min);

      _mm_storeu_si128((__m128i *)(dst + k * line), g[0]);
      _mm_storeu_si128((__m128i *)(dst + (k + 16) * line), g[1]);
    }
  }
}

void inv_txfm_dct2_size64_avx2(const int *src, int *dst, int shift, int line,
                               int skip_line, int zero_line, const int coef_min,
                               const int coef_max) {
  (void)zero_line;
  int offset = 1 << (shift - 1);
  const int tx1d_size = 64;
  const int *tx_mat = tx_kernel_dct2_size64[INV_TXFM][0];

  int j, k;
  const int nz_line = line - skip_line;

  if (nz_line >= 8) {
    __m256i a[32], b[32];
    __m256i c[16], d[16];
    __m256i e[8], f[8];
    __m256i g[4], h[4];
    __m256i u[2], v[2];

    __m256i v_offset = _mm256_set1_epi32(offset);
    __m256i v_coef_min = _mm256_set1_epi32(coef_min);
    __m256i v_coef_max = _mm256_set1_epi32(coef_max);

    __m256i s[64];

    __m256i txmat_16_0 = _mm256_set1_epi32(tx_mat[16 * 64 + 0]);  // 85
    __m256i txmat_16_1 = _mm256_set1_epi32(tx_mat[16 * 64 + 1]);  // 35

    __m256i txmat_8_0 = _mm256_set1_epi32(tx_mat[8 * 64 + 0]);  // 89
    __m256i txmat_8_1 = _mm256_set1_epi32(tx_mat[8 * 64 + 1]);  // 75
    __m256i txmat_8_2 = _mm256_set1_epi32(tx_mat[8 * 64 + 2]);  // 50
    __m256i txmat_8_3 = _mm256_set1_epi32(tx_mat[8 * 64 + 3]);  // 18

    __m256i txmat_4_0 = _mm256_set1_epi32(tx_mat[4 * 64 + 0]);  // 90
    __m256i txmat_4_1 = _mm256_set1_epi32(tx_mat[4 * 64 + 1]);  // 87
    __m256i txmat_4_2 = _mm256_set1_epi32(tx_mat[4 * 64 + 2]);  // 80
    __m256i txmat_4_3 = _mm256_set1_epi32(tx_mat[4 * 64 + 3]);  // 70
    __m256i txmat_4_4 = _mm256_set1_epi32(tx_mat[4 * 64 + 4]);  // 57
    __m256i txmat_4_5 = _mm256_set1_epi32(tx_mat[4 * 64 + 5]);  // 43
    __m256i txmat_4_6 = _mm256_set1_epi32(tx_mat[4 * 64 + 6]);  // 26
    __m256i txmat_4_7 = _mm256_set1_epi32(tx_mat[4 * 64 + 7]);  //  9

    __m256i txmat_2_0 = _mm256_set1_epi32(tx_mat[2 * 64 + 0]);    // 90
    __m256i txmat_2_1 = _mm256_set1_epi32(tx_mat[2 * 64 + 1]);    // 90
    __m256i txmat_2_2 = _mm256_set1_epi32(tx_mat[2 * 64 + 2]);    // 88
    __m256i txmat_2_3 = _mm256_set1_epi32(tx_mat[2 * 64 + 3]);    // 85
    __m256i txmat_2_4 = _mm256_set1_epi32(tx_mat[2 * 64 + 4]);    // 82
    __m256i txmat_2_5 = _mm256_set1_epi32(tx_mat[2 * 64 + 5]);    // 78
    __m256i txmat_2_6 = _mm256_set1_epi32(tx_mat[2 * 64 + 6]);    // 73
    __m256i txmat_2_7 = _mm256_set1_epi32(tx_mat[2 * 64 + 7]);    // 67
    __m256i txmat_2_8 = _mm256_set1_epi32(tx_mat[2 * 64 + 8]);    // 61
    __m256i txmat_2_9 = _mm256_set1_epi32(tx_mat[2 * 64 + 9]);    // 54
    __m256i txmat_2_10 = _mm256_set1_epi32(tx_mat[2 * 64 + 10]);  // 47
    __m256i txmat_2_11 = _mm256_set1_epi32(tx_mat[2 * 64 + 11]);  // 39
    __m256i txmat_2_12 = _mm256_set1_epi32(tx_mat[2 * 64 + 12]);  // 30
    __m256i txmat_2_13 = _mm256_set1_epi32(tx_mat[2 * 64 + 13]);  // 22
    __m256i txmat_2_14 = _mm256_set1_epi32(tx_mat[2 * 64 + 14]);  // 13
    __m256i txmat_2_15 = _mm256_set1_epi32(tx_mat[2 * 64 + 15]);  //  4

    __m256i txmat_1_0 = _mm256_set1_epi32(tx_mat[1 * 64 + 0]);    // 90
    __m256i txmat_1_1 = _mm256_set1_epi32(tx_mat[1 * 64 + 1]);    // 90
    __m256i txmat_1_2 = _mm256_set1_epi32(tx_mat[1 * 64 + 2]);    // 90
    __m256i txmat_1_3 = _mm256_set1_epi32(tx_mat[1 * 64 + 3]);    // 89
    __m256i txmat_1_4 = _mm256_set1_epi32(tx_mat[1 * 64 + 4]);    // 88
    __m256i txmat_1_5 = _mm256_set1_epi32(tx_mat[1 * 64 + 5]);    // 87
    __m256i txmat_1_6 = _mm256_set1_epi32(tx_mat[1 * 64 + 6]);    // 86
    __m256i txmat_1_7 = _mm256_set1_epi32(tx_mat[1 * 64 + 7]);    // 84
    __m256i txmat_1_8 = _mm256_set1_epi32(tx_mat[1 * 64 + 8]);    // 83
    __m256i txmat_1_9 = _mm256_set1_epi32(tx_mat[1 * 64 + 9]);    // 81
    __m256i txmat_1_10 = _mm256_set1_epi32(tx_mat[1 * 64 + 10]);  // 79
    __m256i txmat_1_11 = _mm256_set1_epi32(tx_mat[1 * 64 + 11]);  // 76
    __m256i txmat_1_12 = _mm256_set1_epi32(tx_mat[1 * 64 + 12]);  // 74
    __m256i txmat_1_13 = _mm256_set1_epi32(tx_mat[1 * 64 + 13]);  // 71
    __m256i txmat_1_14 = _mm256_set1_epi32(tx_mat[1 * 64 + 14]);  // 69
    __m256i txmat_1_15 = _mm256_set1_epi32(tx_mat[1 * 64 + 15]);  // 66
    __m256i txmat_1_16 = _mm256_set1_epi32(tx_mat[1 * 64 + 16]);  // 62
    __m256i txmat_1_17 = _mm256_set1_epi32(tx_mat[1 * 64 + 17]);  // 59
    __m256i txmat_1_18 = _mm256_set1_epi32(tx_mat[1 * 64 + 18]);  // 56
    __m256i txmat_1_19 = _mm256_set1_epi32(tx_mat[1 * 64 + 19]);  // 52
    __m256i txmat_1_20 = _mm256_set1_epi32(tx_mat[1 * 64 + 20]);  // 48
    __m256i txmat_1_21 = _mm256_set1_epi32(tx_mat[1 * 64 + 21]);  // 45
    __m256i txmat_1_22 = _mm256_set1_epi32(tx_mat[1 * 64 + 22]);  // 41
    __m256i txmat_1_23 = _mm256_set1_epi32(tx_mat[1 * 64 + 23]);  // 37
    __m256i txmat_1_24 = _mm256_set1_epi32(tx_mat[1 * 64 + 24]);  // 33
    __m256i txmat_1_25 = _mm256_set1_epi32(tx_mat[1 * 64 + 25]);  // 28
    __m256i txmat_1_26 = _mm256_set1_epi32(tx_mat[1 * 64 + 26]);  // 24
    __m256i txmat_1_27 = _mm256_set1_epi32(tx_mat[1 * 64 + 27]);  // 20
    __m256i txmat_1_28 = _mm256_set1_epi32(tx_mat[1 * 64 + 28]);  // 15
    __m256i txmat_1_29 = _mm256_set1_epi32(tx_mat[1 * 64 + 29]);  // 11
    __m256i txmat_1_30 = _mm256_set1_epi32(tx_mat[1 * 64 + 30]);  //  7
    __m256i txmat_1_31 = _mm256_set1_epi32(tx_mat[1 * 64 + 31]);  //  2

    for (j = 0; j < nz_line; j += 8) {
      // Transpose input
      transpose_load_8x8_avx2(src, s, tx1d_size);
      transpose_load_8x8_avx2(src + 8, s + 8, tx1d_size);
      transpose_load_8x8_avx2(src + 16, s + 16, tx1d_size);
      transpose_load_8x8_avx2(src + 24, s + 24, tx1d_size);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_0),
                              _mm256_mullo_epi32(s[3], txmat_1_1));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_2),
                              _mm256_mullo_epi32(s[7], txmat_1_3));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_4),
                              _mm256_mullo_epi32(s[11], txmat_1_5));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_6),
                              _mm256_mullo_epi32(s[15], txmat_1_7));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_8),
                              _mm256_mullo_epi32(s[19], txmat_1_9));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_10),
                              _mm256_mullo_epi32(s[23], txmat_1_11));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_12),
                              _mm256_mullo_epi32(s[27], txmat_1_13));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_14),
                              _mm256_mullo_epi32(s[31], txmat_1_15));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[0] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_1),
                              _mm256_mullo_epi32(s[3], txmat_1_4));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_7),
                              _mm256_mullo_epi32(s[7], txmat_1_10));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_13),
                              _mm256_mullo_epi32(s[11], txmat_1_16));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_19),
                              _mm256_mullo_epi32(s[15], txmat_1_22));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_25),
                              _mm256_mullo_epi32(s[19], txmat_1_28));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_31),
                              _mm256_mullo_epi32(s[23], txmat_1_29));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_26),
                              _mm256_mullo_epi32(s[27], txmat_1_23));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_20),
                              _mm256_mullo_epi32(s[31], txmat_1_17));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[1] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_2),
                              _mm256_mullo_epi32(s[3], txmat_1_7));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_12),
                              _mm256_mullo_epi32(s[7], txmat_1_17));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_22),
                              _mm256_mullo_epi32(s[11], txmat_1_27));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_31),
                              _mm256_mullo_epi32(s[15], txmat_1_26));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_21),
                              _mm256_mullo_epi32(s[19], txmat_1_16));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_11),
                              _mm256_mullo_epi32(s[23], txmat_1_6));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_1),
                              _mm256_mullo_epi32(s[27], txmat_1_3));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_8),
                              _mm256_mullo_epi32(s[31], txmat_1_13));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[2] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_3),
                              _mm256_mullo_epi32(s[3], txmat_1_10));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_17),
                              _mm256_mullo_epi32(s[7], txmat_1_24));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_31),
                              _mm256_mullo_epi32(s[11], txmat_1_25));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_18),
                              _mm256_mullo_epi32(s[15], txmat_1_11));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_4),
                              _mm256_mullo_epi32(s[19], txmat_1_2));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_9),
                              _mm256_mullo_epi32(s[23], txmat_1_16));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_23),
                              _mm256_mullo_epi32(s[27], txmat_1_30));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_26),
                              _mm256_mullo_epi32(s[31], txmat_1_19));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[3] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_4),
                              _mm256_mullo_epi32(s[3], txmat_1_13));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_22),
                              _mm256_mullo_epi32(s[7], txmat_1_31));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_23),
                              _mm256_mullo_epi32(s[11], txmat_1_14));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_5),
                              _mm256_mullo_epi32(s[15], txmat_1_3));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_12),
                              _mm256_mullo_epi32(s[19], txmat_1_21));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_30),
                              _mm256_mullo_epi32(s[23], txmat_1_24));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_15),
                              _mm256_mullo_epi32(s[27], txmat_1_6));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_2),
                              _mm256_mullo_epi32(s[31], txmat_1_11));
      c[0] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[4] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_5),
                              _mm256_mullo_epi32(s[3], txmat_1_16));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_27),
                              _mm256_mullo_epi32(s[7], txmat_1_25));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_14),
                              _mm256_mullo_epi32(s[11], txmat_1_3));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_7),
                              _mm256_mullo_epi32(s[15], txmat_1_18));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_29),
                              _mm256_mullo_epi32(s[19], txmat_1_23));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_12),
                              _mm256_mullo_epi32(s[23], txmat_1_1));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_9),
                              _mm256_mullo_epi32(s[27], txmat_1_20));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_31),
                              _mm256_mullo_epi32(s[31], txmat_1_21));
      c[0] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[5] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_6),
                              _mm256_mullo_epi32(s[3], txmat_1_19));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_31),
                              _mm256_mullo_epi32(s[7], txmat_1_18));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_5),
                              _mm256_mullo_epi32(s[11], txmat_1_7));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_20),
                              _mm256_mullo_epi32(s[15], txmat_1_30));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_17),
                              _mm256_mullo_epi32(s[19], txmat_1_4));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_8),
                              _mm256_mullo_epi32(s[23], txmat_1_21));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_29),
                              _mm256_mullo_epi32(s[27], txmat_1_16));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_3),
                              _mm256_mullo_epi32(s[31], txmat_1_9));
      c[0] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[6] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_7),
                              _mm256_mullo_epi32(s[3], txmat_1_22));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_26),
                              _mm256_mullo_epi32(s[7], txmat_1_11));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_3),
                              _mm256_mullo_epi32(s[11], txmat_1_18));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_30),
                              _mm256_mullo_epi32(s[15], txmat_1_15));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_0),
                              _mm256_mullo_epi32(s[19], txmat_1_14));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_29),
                              _mm256_mullo_epi32(s[23], txmat_1_19));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_4),
                              _mm256_mullo_epi32(s[27], txmat_1_10));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_25),
                              _mm256_mullo_epi32(s[31], txmat_1_23));
      c[0] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[7] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_8),
                              _mm256_mullo_epi32(s[3], txmat_1_25));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_21),
                              _mm256_mullo_epi32(s[7], txmat_1_4));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_12),
                              _mm256_mullo_epi32(s[11], txmat_1_29));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_17),
                              _mm256_mullo_epi32(s[15], txmat_1_0));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_16),
                              _mm256_mullo_epi32(s[19], txmat_1_30));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_13),
                              _mm256_mullo_epi32(s[23], txmat_1_3));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_20),
                              _mm256_mullo_epi32(s[27], txmat_1_26));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_9),
                              _mm256_mullo_epi32(s[31], txmat_1_7));
      c[0] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[8] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_9),
                              _mm256_mullo_epi32(s[3], txmat_1_28));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_16),
                              _mm256_mullo_epi32(s[7], txmat_1_2));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_21),
                              _mm256_mullo_epi32(s[11], txmat_1_23));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_4),
                              _mm256_mullo_epi32(s[15], txmat_1_14));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_30),
                              _mm256_mullo_epi32(s[19], txmat_1_11));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_7),
                              _mm256_mullo_epi32(s[23], txmat_1_26));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_18),
                              _mm256_mullo_epi32(s[27], txmat_1_0));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_19),
                              _mm256_mullo_epi32(s[31], txmat_1_25));
      c[0] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[9] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[1], txmat_1_10),
                              _mm256_mullo_epi32(s[3], txmat_1_31));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_11),
                              _mm256_mullo_epi32(s[7], txmat_1_9));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_30),
                              _mm256_mullo_epi32(s[11], txmat_1_12));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_8),
                              _mm256_mullo_epi32(s[15], txmat_1_29));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_13),
                              _mm256_mullo_epi32(s[19], txmat_1_7));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_28),
                              _mm256_mullo_epi32(s[23], txmat_1_14));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_6),
                              _mm256_mullo_epi32(s[27], txmat_1_27));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_15),
                              _mm256_mullo_epi32(s[31], txmat_1_5));
      c[0] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[10] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_11),
                              _mm256_mullo_epi32(s[3], txmat_1_29));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_6),
                              _mm256_mullo_epi32(s[7], txmat_1_16));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_24),
                              _mm256_mullo_epi32(s[11], txmat_1_1));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_21),
                              _mm256_mullo_epi32(s[15], txmat_1_19));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_3),
                              _mm256_mullo_epi32(s[19], txmat_1_26));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_14),
                              _mm256_mullo_epi32(s[23], txmat_1_8));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_31),
                              _mm256_mullo_epi32(s[27], txmat_1_9));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_13),
                              _mm256_mullo_epi32(s[31], txmat_1_27));
      c[0] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[11] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_12),
                              _mm256_mullo_epi32(s[3], txmat_1_26));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_1),
                              _mm256_mullo_epi32(s[7], txmat_1_23));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_15),
                              _mm256_mullo_epi32(s[11], txmat_1_9));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_29),
                              _mm256_mullo_epi32(s[15], txmat_1_4));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_20),
                              _mm256_mullo_epi32(s[19], txmat_1_18));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_6),
                              _mm256_mullo_epi32(s[23], txmat_1_31));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_7),
                              _mm256_mullo_epi32(s[27], txmat_1_17));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_21),
                              _mm256_mullo_epi32(s[31], txmat_1_3));
      c[0] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[12] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_13),
                              _mm256_mullo_epi32(s[3], txmat_1_23));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_3),
                              _mm256_mullo_epi32(s[7], txmat_1_30));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_6),
                              _mm256_mullo_epi32(s[11], txmat_1_20));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_16),
                              _mm256_mullo_epi32(s[15], txmat_1_10));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_26),
                              _mm256_mullo_epi32(s[19], txmat_1_0));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_27),
                              _mm256_mullo_epi32(s[23], txmat_1_9));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_17),
                              _mm256_mullo_epi32(s[27], txmat_1_19));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_7),
                              _mm256_mullo_epi32(s[31], txmat_1_29));
      c[0] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[13] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_14),
                              _mm256_mullo_epi32(s[3], txmat_1_20));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_8),
                              _mm256_mullo_epi32(s[7], txmat_1_26));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_2),
                              _mm256_mullo_epi32(s[11], txmat_1_31));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_3),
                              _mm256_mullo_epi32(s[15], txmat_1_25));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_9),
                              _mm256_mullo_epi32(s[19], txmat_1_19));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_15),
                              _mm256_mullo_epi32(s[23], txmat_1_13));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_21),
                              _mm256_mullo_epi32(s[27], txmat_1_7));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_27),
                              _mm256_mullo_epi32(s[31], txmat_1_1));
      c[0] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[14] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_15),
                              _mm256_mullo_epi32(s[3], txmat_1_17));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_13),
                              _mm256_mullo_epi32(s[7], txmat_1_19));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_11),
                              _mm256_mullo_epi32(s[11], txmat_1_21));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_9),
                              _mm256_mullo_epi32(s[15], txmat_1_23));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_7),
                              _mm256_mullo_epi32(s[19], txmat_1_25));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_5),
                              _mm256_mullo_epi32(s[23], txmat_1_27));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_3),
                              _mm256_mullo_epi32(s[27], txmat_1_29));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_1),
                              _mm256_mullo_epi32(s[31], txmat_1_31));
      c[0] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[15] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_16),
                              _mm256_mullo_epi32(s[3], txmat_1_14));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_18),
                              _mm256_mullo_epi32(s[7], txmat_1_12));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_20),
                              _mm256_mullo_epi32(s[11], txmat_1_10));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_22),
                              _mm256_mullo_epi32(s[15], txmat_1_8));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_24),
                              _mm256_mullo_epi32(s[19], txmat_1_6));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_26),
                              _mm256_mullo_epi32(s[23], txmat_1_4));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_28),
                              _mm256_mullo_epi32(s[27], txmat_1_2));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_30),
                              _mm256_mullo_epi32(s[31], txmat_1_0));
      c[0] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[16] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_17),
                              _mm256_mullo_epi32(s[3], txmat_1_11));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_23),
                              _mm256_mullo_epi32(s[7], txmat_1_5));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_29),
                              _mm256_mullo_epi32(s[11], txmat_1_0));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_28),
                              _mm256_mullo_epi32(s[15], txmat_1_6));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_22),
                              _mm256_mullo_epi32(s[19], txmat_1_12));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_16),
                              _mm256_mullo_epi32(s[23], txmat_1_18));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_10),
                              _mm256_mullo_epi32(s[27], txmat_1_24));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_4),
                              _mm256_mullo_epi32(s[31], txmat_1_30));
      c[0] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[17] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_18),
                              _mm256_mullo_epi32(s[3], txmat_1_8));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_28),
                              _mm256_mullo_epi32(s[7], txmat_1_1));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_25),
                              _mm256_mullo_epi32(s[11], txmat_1_11));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_15),
                              _mm256_mullo_epi32(s[15], txmat_1_21));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_5),
                              _mm256_mullo_epi32(s[19], txmat_1_31));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_4),
                              _mm256_mullo_epi32(s[23], txmat_1_22));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_14),
                              _mm256_mullo_epi32(s[27], txmat_1_12));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_24),
                              _mm256_mullo_epi32(s[31], txmat_1_2));
      c[0] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[18] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_19),
                              _mm256_mullo_epi32(s[3], txmat_1_5));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_30),
                              _mm256_mullo_epi32(s[7], txmat_1_8));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_16),
                              _mm256_mullo_epi32(s[11], txmat_1_22));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_2),
                              _mm256_mullo_epi32(s[15], txmat_1_27));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_11),
                              _mm256_mullo_epi32(s[19], txmat_1_13));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_25),
                              _mm256_mullo_epi32(s[23], txmat_1_0));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_24),
                              _mm256_mullo_epi32(s[27], txmat_1_14));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_10),
                              _mm256_mullo_epi32(s[31], txmat_1_28));
      c[0] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[19] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_20),
                              _mm256_mullo_epi32(s[3], txmat_1_2));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_25),
                              _mm256_mullo_epi32(s[7], txmat_1_15));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_7),
                              _mm256_mullo_epi32(s[11], txmat_1_30));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_10),
                              _mm256_mullo_epi32(s[15], txmat_1_12));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_28),
                              _mm256_mullo_epi32(s[19], txmat_1_5));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_17),
                              _mm256_mullo_epi32(s[23], txmat_1_23));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_0),
                              _mm256_mullo_epi32(s[27], txmat_1_22));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_18),
                              _mm256_mullo_epi32(s[31], txmat_1_4));
      c[0] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[20] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_21),
                              _mm256_mullo_epi32(s[3], txmat_1_0));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_20),
                              _mm256_mullo_epi32(s[7], txmat_1_22));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_1),
                              _mm256_mullo_epi32(s[11], txmat_1_19));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_23),
                              _mm256_mullo_epi32(s[15], txmat_1_2));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_18),
                              _mm256_mullo_epi32(s[19], txmat_1_24));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_3),
                              _mm256_mullo_epi32(s[23], txmat_1_17));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_25),
                              _mm256_mullo_epi32(s[27], txmat_1_4));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_16),
                              _mm256_mullo_epi32(s[31], txmat_1_26));
      c[0] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[21] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_22),
                              _mm256_mullo_epi32(s[3], txmat_1_3));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[5], txmat_1_15),
                              _mm256_mullo_epi32(s[7], txmat_1_29));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_10),
                              _mm256_mullo_epi32(s[11], txmat_1_8));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_27),
                              _mm256_mullo_epi32(s[15], txmat_1_17));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_1),
                              _mm256_mullo_epi32(s[19], txmat_1_20));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_24),
                              _mm256_mullo_epi32(s[23], txmat_1_5));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_13),
                              _mm256_mullo_epi32(s[27], txmat_1_31));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_12),
                              _mm256_mullo_epi32(s[31], txmat_1_6));
      c[0] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[22] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_23),
                              _mm256_mullo_epi32(s[3], txmat_1_6));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_10),
                              _mm256_mullo_epi32(s[7], txmat_1_27));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_19),
                              _mm256_mullo_epi32(s[11], txmat_1_2));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_14),
                              _mm256_mullo_epi32(s[15], txmat_1_31));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_15),
                              _mm256_mullo_epi32(s[19], txmat_1_1));
      c[5] = _mm256_add_epi32(_mm256_mullo_epi32(s[21], txmat_1_18),
                              _mm256_mullo_epi32(s[23], txmat_1_28));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_11),
                              _mm256_mullo_epi32(s[27], txmat_1_5));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_22),
                              _mm256_mullo_epi32(s[31], txmat_1_24));
      c[0] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[23] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_24),
                              _mm256_mullo_epi32(s[3], txmat_1_9));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_5),
                              _mm256_mullo_epi32(s[7], txmat_1_20));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_28),
                              _mm256_mullo_epi32(s[11], txmat_1_13));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_1),
                              _mm256_mullo_epi32(s[15], txmat_1_16));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_31),
                              _mm256_mullo_epi32(s[19], txmat_1_17));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_2),
                              _mm256_mullo_epi32(s[23], txmat_1_12));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_27),
                              _mm256_mullo_epi32(s[27], txmat_1_21));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_6),
                              _mm256_mullo_epi32(s[31], txmat_1_8));
      c[0] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[24] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_25),
                              _mm256_mullo_epi32(s[3], txmat_1_12));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_0),
                              _mm256_mullo_epi32(s[7], txmat_1_13));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[9], txmat_1_26),
                              _mm256_mullo_epi32(s[11], txmat_1_24));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_11),
                              _mm256_mullo_epi32(s[15], txmat_1_1));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_14),
                              _mm256_mullo_epi32(s[19], txmat_1_27));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_23),
                              _mm256_mullo_epi32(s[23], txmat_1_10));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_2),
                              _mm256_mullo_epi32(s[27], txmat_1_15));
      c[7] = _mm256_add_epi32(_mm256_mullo_epi32(s[29], txmat_1_28),
                              _mm256_mullo_epi32(s[31], txmat_1_22));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[25] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_26),
                              _mm256_mullo_epi32(s[3], txmat_1_15));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_4),
                              _mm256_mullo_epi32(s[7], txmat_1_6));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_17),
                              _mm256_mullo_epi32(s[11], txmat_1_28));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_24),
                              _mm256_mullo_epi32(s[15], txmat_1_13));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_2),
                              _mm256_mullo_epi32(s[19], txmat_1_8));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_19),
                              _mm256_mullo_epi32(s[23], txmat_1_30));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_22),
                              _mm256_mullo_epi32(s[27], txmat_1_11));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_0),
                              _mm256_mullo_epi32(s[31], txmat_1_10));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[26] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_27),
                              _mm256_mullo_epi32(s[3], txmat_1_18));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_9),
                              _mm256_mullo_epi32(s[7], txmat_1_0));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_8),
                              _mm256_mullo_epi32(s[11], txmat_1_17));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[13], txmat_1_26),
                              _mm256_mullo_epi32(s[15], txmat_1_28));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_19),
                              _mm256_mullo_epi32(s[19], txmat_1_10));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_1),
                              _mm256_mullo_epi32(s[23], txmat_1_7));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_16),
                              _mm256_mullo_epi32(s[27], txmat_1_25));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_29),
                              _mm256_mullo_epi32(s[31], txmat_1_20));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[27] = _mm256_sub_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_28),
                              _mm256_mullo_epi32(s[3], txmat_1_21));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_14),
                              _mm256_mullo_epi32(s[7], txmat_1_7));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_0),
                              _mm256_mullo_epi32(s[11], txmat_1_6));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_13),
                              _mm256_mullo_epi32(s[15], txmat_1_20));
      c[4] = _mm256_add_epi32(_mm256_mullo_epi32(s[17], txmat_1_27),
                              _mm256_mullo_epi32(s[19], txmat_1_29));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_22),
                              _mm256_mullo_epi32(s[23], txmat_1_15));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_8),
                              _mm256_mullo_epi32(s[27], txmat_1_1));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_5),
                              _mm256_mullo_epi32(s[31], txmat_1_12));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_sub_epi32(_mm256_sub_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[28] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_29),
                              _mm256_mullo_epi32(s[3], txmat_1_24));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_19),
                              _mm256_mullo_epi32(s[7], txmat_1_14));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_9),
                              _mm256_mullo_epi32(s[11], txmat_1_4));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_0),
                              _mm256_mullo_epi32(s[15], txmat_1_5));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_10),
                              _mm256_mullo_epi32(s[19], txmat_1_15));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_20),
                              _mm256_mullo_epi32(s[23], txmat_1_25));
      c[6] = _mm256_add_epi32(_mm256_mullo_epi32(s[25], txmat_1_30),
                              _mm256_mullo_epi32(s[27], txmat_1_28));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_23),
                              _mm256_mullo_epi32(s[31], txmat_1_18));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_sub_epi32(c[6], c[7]));
      b[29] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_30),
                              _mm256_mullo_epi32(s[3], txmat_1_27));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_24),
                              _mm256_mullo_epi32(s[7], txmat_1_21));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_18),
                              _mm256_mullo_epi32(s[11], txmat_1_15));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_12),
                              _mm256_mullo_epi32(s[15], txmat_1_9));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_6),
                              _mm256_mullo_epi32(s[19], txmat_1_3));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_0),
                              _mm256_mullo_epi32(s[23], txmat_1_2));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_5),
                              _mm256_mullo_epi32(s[27], txmat_1_8));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_11),
                              _mm256_mullo_epi32(s[31], txmat_1_14));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[30] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[1], txmat_1_31),
                              _mm256_mullo_epi32(s[3], txmat_1_30));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[5], txmat_1_29),
                              _mm256_mullo_epi32(s[7], txmat_1_28));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[9], txmat_1_27),
                              _mm256_mullo_epi32(s[11], txmat_1_26));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[13], txmat_1_25),
                              _mm256_mullo_epi32(s[15], txmat_1_24));
      c[4] = _mm256_sub_epi32(_mm256_mullo_epi32(s[17], txmat_1_23),
                              _mm256_mullo_epi32(s[19], txmat_1_22));
      c[5] = _mm256_sub_epi32(_mm256_mullo_epi32(s[21], txmat_1_21),
                              _mm256_mullo_epi32(s[23], txmat_1_20));
      c[6] = _mm256_sub_epi32(_mm256_mullo_epi32(s[25], txmat_1_19),
                              _mm256_mullo_epi32(s[27], txmat_1_18));
      c[7] = _mm256_sub_epi32(_mm256_mullo_epi32(s[29], txmat_1_17),
                              _mm256_mullo_epi32(s[31], txmat_1_16));
      c[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));
      c[4] = _mm256_add_epi32(_mm256_add_epi32(c[4], c[5]),
                              _mm256_add_epi32(c[6], c[7]));
      b[31] = _mm256_add_epi32(c[0], c[4]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[2], txmat_2_0),
                              _mm256_mullo_epi32(s[6], txmat_2_1));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[10], txmat_2_2),
                              _mm256_mullo_epi32(s[14], txmat_2_3));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[18], txmat_2_4),
                              _mm256_mullo_epi32(s[22], txmat_2_5));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[26], txmat_2_6),
                              _mm256_mullo_epi32(s[30], txmat_2_7));
      d[0] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[2], txmat_2_1),
                              _mm256_mullo_epi32(s[6], txmat_2_4));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[10], txmat_2_7),
                              _mm256_mullo_epi32(s[14], txmat_2_10));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[18], txmat_2_13),
                              _mm256_mullo_epi32(s[22], txmat_2_15));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[26], txmat_2_12),
                              _mm256_mullo_epi32(s[30], txmat_2_9));
      d[1] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[2], txmat_2_2),
                              _mm256_mullo_epi32(s[6], txmat_2_7));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[10], txmat_2_12),
                              _mm256_mullo_epi32(s[14], txmat_2_14));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[18], txmat_2_9),
                              _mm256_mullo_epi32(s[22], txmat_2_4));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[26], txmat_2_0),
                              _mm256_mullo_epi32(s[30], txmat_2_5));
      d[2] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[2], txmat_2_3),
                              _mm256_mullo_epi32(s[6], txmat_2_10));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[10], txmat_2_14),
                              _mm256_mullo_epi32(s[14], txmat_2_7));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[18], txmat_2_0),
                              _mm256_mullo_epi32(s[22], txmat_2_6));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[26], txmat_2_13),
                              _mm256_mullo_epi32(s[30], txmat_2_11));
      d[3] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[2], txmat_2_4),
                              _mm256_mullo_epi32(s[6], txmat_2_13));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[10], txmat_2_9),
                              _mm256_mullo_epi32(s[14], txmat_2_0));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[18], txmat_2_8),
                              _mm256_mullo_epi32(s[22], txmat_2_14));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[26], txmat_2_5),
                              _mm256_mullo_epi32(s[30], txmat_2_3));
      d[4] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[2], txmat_2_5),
                              _mm256_mullo_epi32(s[6], txmat_2_15));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[10], txmat_2_4),
                              _mm256_mullo_epi32(s[14], txmat_2_6));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[18], txmat_2_14),
                              _mm256_mullo_epi32(s[22], txmat_2_3));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[26], txmat_2_7),
                              _mm256_mullo_epi32(s[30], txmat_2_13));
      d[5] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_add_epi32(c[2], c[3]));

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[2], txmat_2_6),
                              _mm256_mullo_epi32(s[6], txmat_2_12));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[10], txmat_2_0),
                              _mm256_mullo_epi32(s[14], txmat_2_13));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[18], txmat_2_5),
                              _mm256_mullo_epi32(s[22], txmat_2_7));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[26], txmat_2_11),
                              _mm256_mullo_epi32(s[30], txmat_2_1));
      d[6] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[2], txmat_2_7),
                              _mm256_mullo_epi32(s[6], txmat_2_9));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[10], txmat_2_5),
                              _mm256_mullo_epi32(s[14], txmat_2_11));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[18], txmat_2_3),
                              _mm256_mullo_epi32(s[22], txmat_2_13));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[26], txmat_2_1),
                              _mm256_mullo_epi32(s[30], txmat_2_15));
      d[7] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[2], txmat_2_8),
                              _mm256_mullo_epi32(s[6], txmat_2_6));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[10], txmat_2_10),
                              _mm256_mullo_epi32(s[14], txmat_2_4));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[18], txmat_2_12),
                              _mm256_mullo_epi32(s[22], txmat_2_2));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[26], txmat_2_14),
                              _mm256_mullo_epi32(s[30], txmat_2_0));
      d[8] = _mm256_add_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[2], txmat_2_9),
                              _mm256_mullo_epi32(s[6], txmat_2_3));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[10], txmat_2_15),
                              _mm256_mullo_epi32(s[14], txmat_2_2));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[18], txmat_2_10),
                              _mm256_mullo_epi32(s[22], txmat_2_8));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[26], txmat_2_4),
                              _mm256_mullo_epi32(s[30], txmat_2_14));
      d[9] = _mm256_sub_epi32(_mm256_sub_epi32(c[0], c[1]),
                              _mm256_sub_epi32(c[2], c[3]));

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[2], txmat_2_10),
                              _mm256_mullo_epi32(s[6], txmat_2_0));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[10], txmat_2_11),
                              _mm256_mullo_epi32(s[14], txmat_2_9));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[18], txmat_2_1),
                              _mm256_mullo_epi32(s[22], txmat_2_12));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[26], txmat_2_8),
                              _mm256_mullo_epi32(s[30], txmat_2_2));
      d[10] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                               _mm256_sub_epi32(c[2], c[3]));

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[2], txmat_2_11),
                              _mm256_mullo_epi32(s[6], txmat_2_2));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[10], txmat_2_6),
                              _mm256_mullo_epi32(s[14], txmat_2_15));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[18], txmat_2_7),
                              _mm256_mullo_epi32(s[22], txmat_2_1));
      c[3] = _mm256_add_epi32(_mm256_mullo_epi32(s[26], txmat_2_10),
                              _mm256_mullo_epi32(s[30], txmat_2_12));
      d[11] = _mm256_sub_epi32(_mm256_add_epi32(c[0], c[1]),
                               _mm256_add_epi32(c[2], c[3]));

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[2], txmat_2_12),
                              _mm256_mullo_epi32(s[6], txmat_2_5));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[10], txmat_2_1),
                              _mm256_mullo_epi32(s[14], txmat_2_8));
      c[2] = _mm256_add_epi32(_mm256_mullo_epi32(s[18], txmat_2_15),
                              _mm256_mullo_epi32(s[22], txmat_2_9));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[26], txmat_2_2),
                              _mm256_mullo_epi32(s[30], txmat_2_4));
      d[12] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                               _mm256_sub_epi32(c[2], c[3]));

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[2], txmat_2_13),
                              _mm256_mullo_epi32(s[6], txmat_2_8));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[10], txmat_2_3),
                              _mm256_mullo_epi32(s[14], txmat_2_1));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[18], txmat_2_6),
                              _mm256_mullo_epi32(s[22], txmat_2_11));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[26], txmat_2_15),
                              _mm256_mullo_epi32(s[30], txmat_2_10));
      d[13] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                               _mm256_sub_epi32(c[2], c[3]));

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[2], txmat_2_14),
                              _mm256_mullo_epi32(s[6], txmat_2_11));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[10], txmat_2_8),
                              _mm256_mullo_epi32(s[14], txmat_2_5));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[18], txmat_2_2),
                              _mm256_mullo_epi32(s[22], txmat_2_0));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[26], txmat_2_3),
                              _mm256_mullo_epi32(s[30], txmat_2_6));
      d[14] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                               _mm256_add_epi32(c[2], c[3]));

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[2], txmat_2_15),
                              _mm256_mullo_epi32(s[6], txmat_2_14));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[10], txmat_2_13),
                              _mm256_mullo_epi32(s[14], txmat_2_12));
      c[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[18], txmat_2_11),
                              _mm256_mullo_epi32(s[22], txmat_2_10));
      c[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[26], txmat_2_9),
                              _mm256_mullo_epi32(s[30], txmat_2_8));
      d[15] = _mm256_add_epi32(_mm256_add_epi32(c[0], c[1]),
                               _mm256_add_epi32(c[2], c[3]));

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[4], txmat_4_0),
                              _mm256_mullo_epi32(s[12], txmat_4_1));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[20], txmat_4_2),
                              _mm256_mullo_epi32(s[28], txmat_4_3));
      f[0] = _mm256_add_epi32(c[0], c[1]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[4], txmat_4_1),
                              _mm256_mullo_epi32(s[12], txmat_4_4));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[20], txmat_4_7),
                              _mm256_mullo_epi32(s[28], txmat_4_5));
      f[1] = _mm256_add_epi32(c[0], c[1]);

      c[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[4], txmat_4_2),
                              _mm256_mullo_epi32(s[12], txmat_4_7));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[20], txmat_4_3),
                              _mm256_mullo_epi32(s[28], txmat_4_1));
      f[2] = _mm256_sub_epi32(c[0], c[1]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[4], txmat_4_3),
                              _mm256_mullo_epi32(s[12], txmat_4_5));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[20], txmat_4_1),
                              _mm256_mullo_epi32(s[28], txmat_4_7));
      f[3] = _mm256_sub_epi32(c[0], c[1]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[4], txmat_4_4),
                              _mm256_mullo_epi32(s[12], txmat_4_2));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[20], txmat_4_6),
                              _mm256_mullo_epi32(s[28], txmat_4_0));
      f[4] = _mm256_sub_epi32(c[0], c[1]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[4], txmat_4_5),
                              _mm256_mullo_epi32(s[12], txmat_4_0));
      c[1] = _mm256_add_epi32(_mm256_mullo_epi32(s[20], txmat_4_4),
                              _mm256_mullo_epi32(s[28], txmat_4_6));
      f[5] = _mm256_add_epi32(c[0], c[1]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[4], txmat_4_6),
                              _mm256_mullo_epi32(s[12], txmat_4_3));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[20], txmat_4_0),
                              _mm256_mullo_epi32(s[28], txmat_4_2));
      f[6] = _mm256_add_epi32(c[0], c[1]);

      c[0] = _mm256_sub_epi32(_mm256_mullo_epi32(s[4], txmat_4_7),
                              _mm256_mullo_epi32(s[12], txmat_4_6));
      c[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[20], txmat_4_5),
                              _mm256_mullo_epi32(s[28], txmat_4_4));
      f[7] = _mm256_add_epi32(c[0], c[1]);

      h[0] = _mm256_add_epi32(_mm256_mullo_epi32(s[8], txmat_8_0),
                              _mm256_mullo_epi32(s[24], txmat_8_1));
      h[1] = _mm256_sub_epi32(_mm256_mullo_epi32(s[8], txmat_8_1),
                              _mm256_mullo_epi32(s[24], txmat_8_3));
      h[2] = _mm256_sub_epi32(_mm256_mullo_epi32(s[8], txmat_8_2),
                              _mm256_mullo_epi32(s[24], txmat_8_0));
      h[3] = _mm256_sub_epi32(_mm256_mullo_epi32(s[8], txmat_8_3),
                              _mm256_mullo_epi32(s[24], txmat_8_2));

      u[0] = _mm256_mullo_epi32(s[16], txmat_16_0);
      u[1] = _mm256_mullo_epi32(s[16], txmat_16_1);
      v[0] = _mm256_slli_epi32(s[0], 6);
      v[1] = _mm256_slli_epi32(s[0], 6);

      g[0] = _mm256_add_epi32(v[0], u[0]);
      g[2] = _mm256_sub_epi32(v[1], u[1]);
      g[1] = _mm256_add_epi32(v[1], u[1]);
      g[3] = _mm256_sub_epi32(v[0], u[0]);

      for (k = 0; k < 4; k++) {
        e[k] = _mm256_add_epi32(g[k], h[k]);
        e[k + 4] = _mm256_sub_epi32(g[3 - k], h[3 - k]);
      }

      for (k = 0; k < 8; k++) {
        c[k] = _mm256_add_epi32(e[k], f[k]);
        c[k + 8] = _mm256_sub_epi32(e[7 - k], f[7 - k]);
      }

      for (k = 0; k < 16; k++) {
        a[k] = _mm256_add_epi32(c[k], d[k]);
        a[k + 16] = _mm256_sub_epi32(c[15 - k], d[15 - k]);
      }

      for (k = 0; k < 32; k++) {
        g[0] = _mm256_add_epi32(v_offset, _mm256_add_epi32(a[k], b[k]));
        g[1] =
            _mm256_add_epi32(v_offset, _mm256_sub_epi32(a[31 - k], b[31 - k]));

        g[0] = _mm256_srai_epi32(g[0], shift);
        g[1] = _mm256_srai_epi32(g[1], shift);

        g[0] = _mm256_min_epi32(g[0], v_coef_max);
        g[0] = _mm256_max_epi32(g[0], v_coef_min);
        g[1] = _mm256_min_epi32(g[1], v_coef_max);
        g[1] = _mm256_max_epi32(g[1], v_coef_min);

        _mm256_storeu_si256((__m256i *)(dst + k * line), g[0]);
        _mm256_storeu_si256((__m256i *)(dst + (k + 32) * line), g[1]);
      }
      src += 8 * tx1d_size;
      dst += 8;
    }
  } else {
    __m128i a[32], b[32];
    __m128i c[16], d[16];
    __m128i e[8], f[8];
    __m128i g[4], h[4];
    __m128i u[2], v[2];

    __m128i v_offset = _mm_set1_epi32(offset);
    __m128i v_coef_min = _mm_set1_epi32(coef_min);
    __m128i v_coef_max = _mm_set1_epi32(coef_max);

    __m128i s[64];

    __m128i txmat_16_0 = _mm_set1_epi32(tx_mat[16 * 64 + 0]);  // 85
    __m128i txmat_16_1 = _mm_set1_epi32(tx_mat[16 * 64 + 1]);  // 35

    __m128i txmat_8_0 = _mm_set1_epi32(tx_mat[8 * 64 + 0]);  // 89
    __m128i txmat_8_1 = _mm_set1_epi32(tx_mat[8 * 64 + 1]);  // 75
    __m128i txmat_8_2 = _mm_set1_epi32(tx_mat[8 * 64 + 2]);  // 50
    __m128i txmat_8_3 = _mm_set1_epi32(tx_mat[8 * 64 + 3]);  // 18

    __m128i txmat_4_0 = _mm_set1_epi32(tx_mat[4 * 64 + 0]);  // 90
    __m128i txmat_4_1 = _mm_set1_epi32(tx_mat[4 * 64 + 1]);  // 87
    __m128i txmat_4_2 = _mm_set1_epi32(tx_mat[4 * 64 + 2]);  // 80
    __m128i txmat_4_3 = _mm_set1_epi32(tx_mat[4 * 64 + 3]);  // 70
    __m128i txmat_4_4 = _mm_set1_epi32(tx_mat[4 * 64 + 4]);  // 57
    __m128i txmat_4_5 = _mm_set1_epi32(tx_mat[4 * 64 + 5]);  // 43
    __m128i txmat_4_6 = _mm_set1_epi32(tx_mat[4 * 64 + 6]);  // 26
    __m128i txmat_4_7 = _mm_set1_epi32(tx_mat[4 * 64 + 7]);  //  9

    __m128i txmat_2_0 = _mm_set1_epi32(tx_mat[2 * 64 + 0]);    // 90
    __m128i txmat_2_1 = _mm_set1_epi32(tx_mat[2 * 64 + 1]);    // 90
    __m128i txmat_2_2 = _mm_set1_epi32(tx_mat[2 * 64 + 2]);    // 88
    __m128i txmat_2_3 = _mm_set1_epi32(tx_mat[2 * 64 + 3]);    // 85
    __m128i txmat_2_4 = _mm_set1_epi32(tx_mat[2 * 64 + 4]);    // 82
    __m128i txmat_2_5 = _mm_set1_epi32(tx_mat[2 * 64 + 5]);    // 78
    __m128i txmat_2_6 = _mm_set1_epi32(tx_mat[2 * 64 + 6]);    // 73
    __m128i txmat_2_7 = _mm_set1_epi32(tx_mat[2 * 64 + 7]);    // 67
    __m128i txmat_2_8 = _mm_set1_epi32(tx_mat[2 * 64 + 8]);    // 61
    __m128i txmat_2_9 = _mm_set1_epi32(tx_mat[2 * 64 + 9]);    // 54
    __m128i txmat_2_10 = _mm_set1_epi32(tx_mat[2 * 64 + 10]);  // 47
    __m128i txmat_2_11 = _mm_set1_epi32(tx_mat[2 * 64 + 11]);  // 39
    __m128i txmat_2_12 = _mm_set1_epi32(tx_mat[2 * 64 + 12]);  // 30
    __m128i txmat_2_13 = _mm_set1_epi32(tx_mat[2 * 64 + 13]);  // 22
    __m128i txmat_2_14 = _mm_set1_epi32(tx_mat[2 * 64 + 14]);  // 13
    __m128i txmat_2_15 = _mm_set1_epi32(tx_mat[2 * 64 + 15]);  //  4

    __m128i txmat_1_0 = _mm_set1_epi32(tx_mat[1 * 64 + 0]);    // 90
    __m128i txmat_1_1 = _mm_set1_epi32(tx_mat[1 * 64 + 1]);    // 90
    __m128i txmat_1_2 = _mm_set1_epi32(tx_mat[1 * 64 + 2]);    // 90
    __m128i txmat_1_3 = _mm_set1_epi32(tx_mat[1 * 64 + 3]);    // 89
    __m128i txmat_1_4 = _mm_set1_epi32(tx_mat[1 * 64 + 4]);    // 88
    __m128i txmat_1_5 = _mm_set1_epi32(tx_mat[1 * 64 + 5]);    // 87
    __m128i txmat_1_6 = _mm_set1_epi32(tx_mat[1 * 64 + 6]);    // 86
    __m128i txmat_1_7 = _mm_set1_epi32(tx_mat[1 * 64 + 7]);    // 84
    __m128i txmat_1_8 = _mm_set1_epi32(tx_mat[1 * 64 + 8]);    // 83
    __m128i txmat_1_9 = _mm_set1_epi32(tx_mat[1 * 64 + 9]);    // 81
    __m128i txmat_1_10 = _mm_set1_epi32(tx_mat[1 * 64 + 10]);  // 79
    __m128i txmat_1_11 = _mm_set1_epi32(tx_mat[1 * 64 + 11]);  // 76
    __m128i txmat_1_12 = _mm_set1_epi32(tx_mat[1 * 64 + 12]);  // 74
    __m128i txmat_1_13 = _mm_set1_epi32(tx_mat[1 * 64 + 13]);  // 71
    __m128i txmat_1_14 = _mm_set1_epi32(tx_mat[1 * 64 + 14]);  // 69
    __m128i txmat_1_15 = _mm_set1_epi32(tx_mat[1 * 64 + 15]);  // 66
    __m128i txmat_1_16 = _mm_set1_epi32(tx_mat[1 * 64 + 16]);  // 62
    __m128i txmat_1_17 = _mm_set1_epi32(tx_mat[1 * 64 + 17]);  // 59
    __m128i txmat_1_18 = _mm_set1_epi32(tx_mat[1 * 64 + 18]);  // 56
    __m128i txmat_1_19 = _mm_set1_epi32(tx_mat[1 * 64 + 19]);  // 52
    __m128i txmat_1_20 = _mm_set1_epi32(tx_mat[1 * 64 + 20]);  // 48
    __m128i txmat_1_21 = _mm_set1_epi32(tx_mat[1 * 64 + 21]);  // 45
    __m128i txmat_1_22 = _mm_set1_epi32(tx_mat[1 * 64 + 22]);  // 41
    __m128i txmat_1_23 = _mm_set1_epi32(tx_mat[1 * 64 + 23]);  // 37
    __m128i txmat_1_24 = _mm_set1_epi32(tx_mat[1 * 64 + 24]);  // 33
    __m128i txmat_1_25 = _mm_set1_epi32(tx_mat[1 * 64 + 25]);  // 28
    __m128i txmat_1_26 = _mm_set1_epi32(tx_mat[1 * 64 + 26]);  // 24
    __m128i txmat_1_27 = _mm_set1_epi32(tx_mat[1 * 64 + 27]);  // 20
    __m128i txmat_1_28 = _mm_set1_epi32(tx_mat[1 * 64 + 28]);  // 15
    __m128i txmat_1_29 = _mm_set1_epi32(tx_mat[1 * 64 + 29]);  // 11
    __m128i txmat_1_30 = _mm_set1_epi32(tx_mat[1 * 64 + 30]);  //  7
    __m128i txmat_1_31 = _mm_set1_epi32(tx_mat[1 * 64 + 31]);  //  2

    // Transpose input
    transpose_load_8x4_sse4(src, s, tx1d_size);
    transpose_load_8x4_sse4(src + 8, s + 8, tx1d_size);
    transpose_load_8x4_sse4(src + 16, s + 16, tx1d_size);
    transpose_load_8x4_sse4(src + 24, s + 24, tx1d_size);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_0),
                         _mm_mullo_epi32(s[3], txmat_1_1));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_2),
                         _mm_mullo_epi32(s[7], txmat_1_3));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_4),
                         _mm_mullo_epi32(s[11], txmat_1_5));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_6),
                         _mm_mullo_epi32(s[15], txmat_1_7));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_8),
                         _mm_mullo_epi32(s[19], txmat_1_9));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_10),
                         _mm_mullo_epi32(s[23], txmat_1_11));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_12),
                         _mm_mullo_epi32(s[27], txmat_1_13));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_14),
                         _mm_mullo_epi32(s[31], txmat_1_15));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[0] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_1),
                         _mm_mullo_epi32(s[3], txmat_1_4));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_7),
                         _mm_mullo_epi32(s[7], txmat_1_10));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_13),
                         _mm_mullo_epi32(s[11], txmat_1_16));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_19),
                         _mm_mullo_epi32(s[15], txmat_1_22));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_25),
                         _mm_mullo_epi32(s[19], txmat_1_28));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_31),
                         _mm_mullo_epi32(s[23], txmat_1_29));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_26),
                         _mm_mullo_epi32(s[27], txmat_1_23));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_20),
                         _mm_mullo_epi32(s[31], txmat_1_17));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[1] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_2),
                         _mm_mullo_epi32(s[3], txmat_1_7));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_12),
                         _mm_mullo_epi32(s[7], txmat_1_17));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_22),
                         _mm_mullo_epi32(s[11], txmat_1_27));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_31),
                         _mm_mullo_epi32(s[15], txmat_1_26));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_21),
                         _mm_mullo_epi32(s[19], txmat_1_16));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_11),
                         _mm_mullo_epi32(s[23], txmat_1_6));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_1),
                         _mm_mullo_epi32(s[27], txmat_1_3));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_8),
                         _mm_mullo_epi32(s[31], txmat_1_13));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[2] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_3),
                         _mm_mullo_epi32(s[3], txmat_1_10));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_17),
                         _mm_mullo_epi32(s[7], txmat_1_24));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_31),
                         _mm_mullo_epi32(s[11], txmat_1_25));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_18),
                         _mm_mullo_epi32(s[15], txmat_1_11));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_4),
                         _mm_mullo_epi32(s[19], txmat_1_2));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_9),
                         _mm_mullo_epi32(s[23], txmat_1_16));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_23),
                         _mm_mullo_epi32(s[27], txmat_1_30));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_26),
                         _mm_mullo_epi32(s[31], txmat_1_19));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_add_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[3] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_4),
                         _mm_mullo_epi32(s[3], txmat_1_13));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_22),
                         _mm_mullo_epi32(s[7], txmat_1_31));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_23),
                         _mm_mullo_epi32(s[11], txmat_1_14));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_5),
                         _mm_mullo_epi32(s[15], txmat_1_3));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_12),
                         _mm_mullo_epi32(s[19], txmat_1_21));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_30),
                         _mm_mullo_epi32(s[23], txmat_1_24));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_15),
                         _mm_mullo_epi32(s[27], txmat_1_6));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_2),
                         _mm_mullo_epi32(s[31], txmat_1_11));
    c[0] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[4] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_5),
                         _mm_mullo_epi32(s[3], txmat_1_16));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_27),
                         _mm_mullo_epi32(s[7], txmat_1_25));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_14),
                         _mm_mullo_epi32(s[11], txmat_1_3));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_7),
                         _mm_mullo_epi32(s[15], txmat_1_18));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_29),
                         _mm_mullo_epi32(s[19], txmat_1_23));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_12),
                         _mm_mullo_epi32(s[23], txmat_1_1));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_9),
                         _mm_mullo_epi32(s[27], txmat_1_20));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_31),
                         _mm_mullo_epi32(s[31], txmat_1_21));
    c[0] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_sub_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[5] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_6),
                         _mm_mullo_epi32(s[3], txmat_1_19));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_31),
                         _mm_mullo_epi32(s[7], txmat_1_18));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_5),
                         _mm_mullo_epi32(s[11], txmat_1_7));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_20),
                         _mm_mullo_epi32(s[15], txmat_1_30));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_17),
                         _mm_mullo_epi32(s[19], txmat_1_4));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_8),
                         _mm_mullo_epi32(s[23], txmat_1_21));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_29),
                         _mm_mullo_epi32(s[27], txmat_1_16));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_3),
                         _mm_mullo_epi32(s[31], txmat_1_9));
    c[0] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[6] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_7),
                         _mm_mullo_epi32(s[3], txmat_1_22));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_26),
                         _mm_mullo_epi32(s[7], txmat_1_11));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_3),
                         _mm_mullo_epi32(s[11], txmat_1_18));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_30),
                         _mm_mullo_epi32(s[15], txmat_1_15));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_0),
                         _mm_mullo_epi32(s[19], txmat_1_14));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_29),
                         _mm_mullo_epi32(s[23], txmat_1_19));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_4),
                         _mm_mullo_epi32(s[27], txmat_1_10));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_25),
                         _mm_mullo_epi32(s[31], txmat_1_23));
    c[0] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[7] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_8),
                         _mm_mullo_epi32(s[3], txmat_1_25));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_21),
                         _mm_mullo_epi32(s[7], txmat_1_4));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_12),
                         _mm_mullo_epi32(s[11], txmat_1_29));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_17),
                         _mm_mullo_epi32(s[15], txmat_1_0));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_16),
                         _mm_mullo_epi32(s[19], txmat_1_30));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_13),
                         _mm_mullo_epi32(s[23], txmat_1_3));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_20),
                         _mm_mullo_epi32(s[27], txmat_1_26));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_9),
                         _mm_mullo_epi32(s[31], txmat_1_7));
    c[0] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[8] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_9),
                         _mm_mullo_epi32(s[3], txmat_1_28));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_16),
                         _mm_mullo_epi32(s[7], txmat_1_2));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_21),
                         _mm_mullo_epi32(s[11], txmat_1_23));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_4),
                         _mm_mullo_epi32(s[15], txmat_1_14));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_30),
                         _mm_mullo_epi32(s[19], txmat_1_11));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_7),
                         _mm_mullo_epi32(s[23], txmat_1_26));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_18),
                         _mm_mullo_epi32(s[27], txmat_1_0));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_19),
                         _mm_mullo_epi32(s[31], txmat_1_25));
    c[0] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[9] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[1], txmat_1_10),
                         _mm_mullo_epi32(s[3], txmat_1_31));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_11),
                         _mm_mullo_epi32(s[7], txmat_1_9));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_30),
                         _mm_mullo_epi32(s[11], txmat_1_12));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_8),
                         _mm_mullo_epi32(s[15], txmat_1_29));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_13),
                         _mm_mullo_epi32(s[19], txmat_1_7));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_28),
                         _mm_mullo_epi32(s[23], txmat_1_14));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_6),
                         _mm_mullo_epi32(s[27], txmat_1_27));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_15),
                         _mm_mullo_epi32(s[31], txmat_1_5));
    c[0] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[10] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_11),
                         _mm_mullo_epi32(s[3], txmat_1_29));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_6),
                         _mm_mullo_epi32(s[7], txmat_1_16));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_24),
                         _mm_mullo_epi32(s[11], txmat_1_1));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_21),
                         _mm_mullo_epi32(s[15], txmat_1_19));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_3),
                         _mm_mullo_epi32(s[19], txmat_1_26));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_14),
                         _mm_mullo_epi32(s[23], txmat_1_8));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_31),
                         _mm_mullo_epi32(s[27], txmat_1_9));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_13),
                         _mm_mullo_epi32(s[31], txmat_1_27));
    c[0] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[11] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_12),
                         _mm_mullo_epi32(s[3], txmat_1_26));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_1),
                         _mm_mullo_epi32(s[7], txmat_1_23));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_15),
                         _mm_mullo_epi32(s[11], txmat_1_9));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_29),
                         _mm_mullo_epi32(s[15], txmat_1_4));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_20),
                         _mm_mullo_epi32(s[19], txmat_1_18));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_6),
                         _mm_mullo_epi32(s[23], txmat_1_31));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_7),
                         _mm_mullo_epi32(s[27], txmat_1_17));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_21),
                         _mm_mullo_epi32(s[31], txmat_1_3));
    c[0] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[12] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_13),
                         _mm_mullo_epi32(s[3], txmat_1_23));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_3),
                         _mm_mullo_epi32(s[7], txmat_1_30));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_6),
                         _mm_mullo_epi32(s[11], txmat_1_20));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_16),
                         _mm_mullo_epi32(s[15], txmat_1_10));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_26),
                         _mm_mullo_epi32(s[19], txmat_1_0));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_27),
                         _mm_mullo_epi32(s[23], txmat_1_9));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_17),
                         _mm_mullo_epi32(s[27], txmat_1_19));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_7),
                         _mm_mullo_epi32(s[31], txmat_1_29));
    c[0] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[13] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_14),
                         _mm_mullo_epi32(s[3], txmat_1_20));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_8),
                         _mm_mullo_epi32(s[7], txmat_1_26));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_2),
                         _mm_mullo_epi32(s[11], txmat_1_31));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_3),
                         _mm_mullo_epi32(s[15], txmat_1_25));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_9),
                         _mm_mullo_epi32(s[19], txmat_1_19));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_15),
                         _mm_mullo_epi32(s[23], txmat_1_13));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_21),
                         _mm_mullo_epi32(s[27], txmat_1_7));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_27),
                         _mm_mullo_epi32(s[31], txmat_1_1));
    c[0] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[14] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_15),
                         _mm_mullo_epi32(s[3], txmat_1_17));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_13),
                         _mm_mullo_epi32(s[7], txmat_1_19));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_11),
                         _mm_mullo_epi32(s[11], txmat_1_21));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_9),
                         _mm_mullo_epi32(s[15], txmat_1_23));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_7),
                         _mm_mullo_epi32(s[19], txmat_1_25));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_5),
                         _mm_mullo_epi32(s[23], txmat_1_27));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_3),
                         _mm_mullo_epi32(s[27], txmat_1_29));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_1),
                         _mm_mullo_epi32(s[31], txmat_1_31));
    c[0] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[15] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_16),
                         _mm_mullo_epi32(s[3], txmat_1_14));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_18),
                         _mm_mullo_epi32(s[7], txmat_1_12));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_20),
                         _mm_mullo_epi32(s[11], txmat_1_10));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_22),
                         _mm_mullo_epi32(s[15], txmat_1_8));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_24),
                         _mm_mullo_epi32(s[19], txmat_1_6));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_26),
                         _mm_mullo_epi32(s[23], txmat_1_4));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_28),
                         _mm_mullo_epi32(s[27], txmat_1_2));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_30),
                         _mm_mullo_epi32(s[31], txmat_1_0));
    c[0] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[16] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_17),
                         _mm_mullo_epi32(s[3], txmat_1_11));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_23),
                         _mm_mullo_epi32(s[7], txmat_1_5));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_29),
                         _mm_mullo_epi32(s[11], txmat_1_0));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_28),
                         _mm_mullo_epi32(s[15], txmat_1_6));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_22),
                         _mm_mullo_epi32(s[19], txmat_1_12));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_16),
                         _mm_mullo_epi32(s[23], txmat_1_18));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_10),
                         _mm_mullo_epi32(s[27], txmat_1_24));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_4),
                         _mm_mullo_epi32(s[31], txmat_1_30));
    c[0] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[17] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_18),
                         _mm_mullo_epi32(s[3], txmat_1_8));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_28),
                         _mm_mullo_epi32(s[7], txmat_1_1));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_25),
                         _mm_mullo_epi32(s[11], txmat_1_11));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_15),
                         _mm_mullo_epi32(s[15], txmat_1_21));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_5),
                         _mm_mullo_epi32(s[19], txmat_1_31));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_4),
                         _mm_mullo_epi32(s[23], txmat_1_22));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_14),
                         _mm_mullo_epi32(s[27], txmat_1_12));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_24),
                         _mm_mullo_epi32(s[31], txmat_1_2));
    c[0] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[18] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_19),
                         _mm_mullo_epi32(s[3], txmat_1_5));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_30),
                         _mm_mullo_epi32(s[7], txmat_1_8));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_16),
                         _mm_mullo_epi32(s[11], txmat_1_22));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_2),
                         _mm_mullo_epi32(s[15], txmat_1_27));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_11),
                         _mm_mullo_epi32(s[19], txmat_1_13));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_25),
                         _mm_mullo_epi32(s[23], txmat_1_0));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_24),
                         _mm_mullo_epi32(s[27], txmat_1_14));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_10),
                         _mm_mullo_epi32(s[31], txmat_1_28));
    c[0] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[19] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_20),
                         _mm_mullo_epi32(s[3], txmat_1_2));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_25),
                         _mm_mullo_epi32(s[7], txmat_1_15));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_7),
                         _mm_mullo_epi32(s[11], txmat_1_30));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_10),
                         _mm_mullo_epi32(s[15], txmat_1_12));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_28),
                         _mm_mullo_epi32(s[19], txmat_1_5));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_17),
                         _mm_mullo_epi32(s[23], txmat_1_23));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_0),
                         _mm_mullo_epi32(s[27], txmat_1_22));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_18),
                         _mm_mullo_epi32(s[31], txmat_1_4));
    c[0] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[20] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_21),
                         _mm_mullo_epi32(s[3], txmat_1_0));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_20),
                         _mm_mullo_epi32(s[7], txmat_1_22));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_1),
                         _mm_mullo_epi32(s[11], txmat_1_19));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_23),
                         _mm_mullo_epi32(s[15], txmat_1_2));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_18),
                         _mm_mullo_epi32(s[19], txmat_1_24));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_3),
                         _mm_mullo_epi32(s[23], txmat_1_17));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_25),
                         _mm_mullo_epi32(s[27], txmat_1_4));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_16),
                         _mm_mullo_epi32(s[31], txmat_1_26));
    c[0] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_sub_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[21] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_22),
                         _mm_mullo_epi32(s[3], txmat_1_3));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[5], txmat_1_15),
                         _mm_mullo_epi32(s[7], txmat_1_29));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_10),
                         _mm_mullo_epi32(s[11], txmat_1_8));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_27),
                         _mm_mullo_epi32(s[15], txmat_1_17));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_1),
                         _mm_mullo_epi32(s[19], txmat_1_20));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_24),
                         _mm_mullo_epi32(s[23], txmat_1_5));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_13),
                         _mm_mullo_epi32(s[27], txmat_1_31));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_12),
                         _mm_mullo_epi32(s[31], txmat_1_6));
    c[0] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[22] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_23),
                         _mm_mullo_epi32(s[3], txmat_1_6));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_10),
                         _mm_mullo_epi32(s[7], txmat_1_27));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_19),
                         _mm_mullo_epi32(s[11], txmat_1_2));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_14),
                         _mm_mullo_epi32(s[15], txmat_1_31));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_15),
                         _mm_mullo_epi32(s[19], txmat_1_1));
    c[5] = _mm_add_epi32(_mm_mullo_epi32(s[21], txmat_1_18),
                         _mm_mullo_epi32(s[23], txmat_1_28));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_11),
                         _mm_mullo_epi32(s[27], txmat_1_5));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_22),
                         _mm_mullo_epi32(s[31], txmat_1_24));
    c[0] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[23] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_24),
                         _mm_mullo_epi32(s[3], txmat_1_9));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_5),
                         _mm_mullo_epi32(s[7], txmat_1_20));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_28),
                         _mm_mullo_epi32(s[11], txmat_1_13));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_1),
                         _mm_mullo_epi32(s[15], txmat_1_16));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_31),
                         _mm_mullo_epi32(s[19], txmat_1_17));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_2),
                         _mm_mullo_epi32(s[23], txmat_1_12));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_27),
                         _mm_mullo_epi32(s[27], txmat_1_21));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_6),
                         _mm_mullo_epi32(s[31], txmat_1_8));
    c[0] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_sub_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[24] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_25),
                         _mm_mullo_epi32(s[3], txmat_1_12));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_0),
                         _mm_mullo_epi32(s[7], txmat_1_13));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[9], txmat_1_26),
                         _mm_mullo_epi32(s[11], txmat_1_24));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_11),
                         _mm_mullo_epi32(s[15], txmat_1_1));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_14),
                         _mm_mullo_epi32(s[19], txmat_1_27));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_23),
                         _mm_mullo_epi32(s[23], txmat_1_10));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_2),
                         _mm_mullo_epi32(s[27], txmat_1_15));
    c[7] = _mm_add_epi32(_mm_mullo_epi32(s[29], txmat_1_28),
                         _mm_mullo_epi32(s[31], txmat_1_22));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_sub_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[25] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_26),
                         _mm_mullo_epi32(s[3], txmat_1_15));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_4),
                         _mm_mullo_epi32(s[7], txmat_1_6));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_17),
                         _mm_mullo_epi32(s[11], txmat_1_28));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_24),
                         _mm_mullo_epi32(s[15], txmat_1_13));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_2),
                         _mm_mullo_epi32(s[19], txmat_1_8));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_19),
                         _mm_mullo_epi32(s[23], txmat_1_30));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_22),
                         _mm_mullo_epi32(s[27], txmat_1_11));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_0),
                         _mm_mullo_epi32(s[31], txmat_1_10));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[26] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_27),
                         _mm_mullo_epi32(s[3], txmat_1_18));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_9),
                         _mm_mullo_epi32(s[7], txmat_1_0));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_8),
                         _mm_mullo_epi32(s[11], txmat_1_17));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[13], txmat_1_26),
                         _mm_mullo_epi32(s[15], txmat_1_28));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_19),
                         _mm_mullo_epi32(s[19], txmat_1_10));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_1),
                         _mm_mullo_epi32(s[23], txmat_1_7));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_16),
                         _mm_mullo_epi32(s[27], txmat_1_25));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_29),
                         _mm_mullo_epi32(s[31], txmat_1_20));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_add_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[27] = _mm_sub_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_28),
                         _mm_mullo_epi32(s[3], txmat_1_21));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_14),
                         _mm_mullo_epi32(s[7], txmat_1_7));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_0),
                         _mm_mullo_epi32(s[11], txmat_1_6));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_13),
                         _mm_mullo_epi32(s[15], txmat_1_20));
    c[4] = _mm_add_epi32(_mm_mullo_epi32(s[17], txmat_1_27),
                         _mm_mullo_epi32(s[19], txmat_1_29));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_22),
                         _mm_mullo_epi32(s[23], txmat_1_15));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_8),
                         _mm_mullo_epi32(s[27], txmat_1_1));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_5),
                         _mm_mullo_epi32(s[31], txmat_1_12));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_sub_epi32(_mm_sub_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[28] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_29),
                         _mm_mullo_epi32(s[3], txmat_1_24));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_19),
                         _mm_mullo_epi32(s[7], txmat_1_14));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_9),
                         _mm_mullo_epi32(s[11], txmat_1_4));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_0),
                         _mm_mullo_epi32(s[15], txmat_1_5));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_10),
                         _mm_mullo_epi32(s[19], txmat_1_15));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_20),
                         _mm_mullo_epi32(s[23], txmat_1_25));
    c[6] = _mm_add_epi32(_mm_mullo_epi32(s[25], txmat_1_30),
                         _mm_mullo_epi32(s[27], txmat_1_28));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_23),
                         _mm_mullo_epi32(s[31], txmat_1_18));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_add_epi32(c[4], c[5]), _mm_sub_epi32(c[6], c[7]));
    b[29] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_30),
                         _mm_mullo_epi32(s[3], txmat_1_27));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_24),
                         _mm_mullo_epi32(s[7], txmat_1_21));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_18),
                         _mm_mullo_epi32(s[11], txmat_1_15));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_12),
                         _mm_mullo_epi32(s[15], txmat_1_9));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_6),
                         _mm_mullo_epi32(s[19], txmat_1_3));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_0),
                         _mm_mullo_epi32(s[23], txmat_1_2));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_5),
                         _mm_mullo_epi32(s[27], txmat_1_8));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_11),
                         _mm_mullo_epi32(s[31], txmat_1_14));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[30] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[1], txmat_1_31),
                         _mm_mullo_epi32(s[3], txmat_1_30));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[5], txmat_1_29),
                         _mm_mullo_epi32(s[7], txmat_1_28));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[9], txmat_1_27),
                         _mm_mullo_epi32(s[11], txmat_1_26));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[13], txmat_1_25),
                         _mm_mullo_epi32(s[15], txmat_1_24));
    c[4] = _mm_sub_epi32(_mm_mullo_epi32(s[17], txmat_1_23),
                         _mm_mullo_epi32(s[19], txmat_1_22));
    c[5] = _mm_sub_epi32(_mm_mullo_epi32(s[21], txmat_1_21),
                         _mm_mullo_epi32(s[23], txmat_1_20));
    c[6] = _mm_sub_epi32(_mm_mullo_epi32(s[25], txmat_1_19),
                         _mm_mullo_epi32(s[27], txmat_1_18));
    c[7] = _mm_sub_epi32(_mm_mullo_epi32(s[29], txmat_1_17),
                         _mm_mullo_epi32(s[31], txmat_1_16));
    c[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));
    c[4] = _mm_add_epi32(_mm_add_epi32(c[4], c[5]), _mm_add_epi32(c[6], c[7]));
    b[31] = _mm_add_epi32(c[0], c[4]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[2], txmat_2_0),
                         _mm_mullo_epi32(s[6], txmat_2_1));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[10], txmat_2_2),
                         _mm_mullo_epi32(s[14], txmat_2_3));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[18], txmat_2_4),
                         _mm_mullo_epi32(s[22], txmat_2_5));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[26], txmat_2_6),
                         _mm_mullo_epi32(s[30], txmat_2_7));
    d[0] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[2], txmat_2_1),
                         _mm_mullo_epi32(s[6], txmat_2_4));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[10], txmat_2_7),
                         _mm_mullo_epi32(s[14], txmat_2_10));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[18], txmat_2_13),
                         _mm_mullo_epi32(s[22], txmat_2_15));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[26], txmat_2_12),
                         _mm_mullo_epi32(s[30], txmat_2_9));
    d[1] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[2], txmat_2_2),
                         _mm_mullo_epi32(s[6], txmat_2_7));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[10], txmat_2_12),
                         _mm_mullo_epi32(s[14], txmat_2_14));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[18], txmat_2_9),
                         _mm_mullo_epi32(s[22], txmat_2_4));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[26], txmat_2_0),
                         _mm_mullo_epi32(s[30], txmat_2_5));
    d[2] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[2], txmat_2_3),
                         _mm_mullo_epi32(s[6], txmat_2_10));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[10], txmat_2_14),
                         _mm_mullo_epi32(s[14], txmat_2_7));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[18], txmat_2_0),
                         _mm_mullo_epi32(s[22], txmat_2_6));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[26], txmat_2_13),
                         _mm_mullo_epi32(s[30], txmat_2_11));
    d[3] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[2], txmat_2_4),
                         _mm_mullo_epi32(s[6], txmat_2_13));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[10], txmat_2_9),
                         _mm_mullo_epi32(s[14], txmat_2_0));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[18], txmat_2_8),
                         _mm_mullo_epi32(s[22], txmat_2_14));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[26], txmat_2_5),
                         _mm_mullo_epi32(s[30], txmat_2_3));
    d[4] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[2], txmat_2_5),
                         _mm_mullo_epi32(s[6], txmat_2_15));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[10], txmat_2_4),
                         _mm_mullo_epi32(s[14], txmat_2_6));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[18], txmat_2_14),
                         _mm_mullo_epi32(s[22], txmat_2_3));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[26], txmat_2_7),
                         _mm_mullo_epi32(s[30], txmat_2_13));
    d[5] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[2], txmat_2_6),
                         _mm_mullo_epi32(s[6], txmat_2_12));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[10], txmat_2_0),
                         _mm_mullo_epi32(s[14], txmat_2_13));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[18], txmat_2_5),
                         _mm_mullo_epi32(s[22], txmat_2_7));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[26], txmat_2_11),
                         _mm_mullo_epi32(s[30], txmat_2_1));
    d[6] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[2], txmat_2_7),
                         _mm_mullo_epi32(s[6], txmat_2_9));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[10], txmat_2_5),
                         _mm_mullo_epi32(s[14], txmat_2_11));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[18], txmat_2_3),
                         _mm_mullo_epi32(s[22], txmat_2_13));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[26], txmat_2_1),
                         _mm_mullo_epi32(s[30], txmat_2_15));
    d[7] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[2], txmat_2_8),
                         _mm_mullo_epi32(s[6], txmat_2_6));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[10], txmat_2_10),
                         _mm_mullo_epi32(s[14], txmat_2_4));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[18], txmat_2_12),
                         _mm_mullo_epi32(s[22], txmat_2_2));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[26], txmat_2_14),
                         _mm_mullo_epi32(s[30], txmat_2_0));
    d[8] = _mm_add_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[2], txmat_2_9),
                         _mm_mullo_epi32(s[6], txmat_2_3));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[10], txmat_2_15),
                         _mm_mullo_epi32(s[14], txmat_2_2));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[18], txmat_2_10),
                         _mm_mullo_epi32(s[22], txmat_2_8));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[26], txmat_2_4),
                         _mm_mullo_epi32(s[30], txmat_2_14));
    d[9] = _mm_sub_epi32(_mm_sub_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[2], txmat_2_10),
                         _mm_mullo_epi32(s[6], txmat_2_0));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[10], txmat_2_11),
                         _mm_mullo_epi32(s[14], txmat_2_9));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[18], txmat_2_1),
                         _mm_mullo_epi32(s[22], txmat_2_12));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[26], txmat_2_8),
                         _mm_mullo_epi32(s[30], txmat_2_2));
    d[10] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[2], txmat_2_11),
                         _mm_mullo_epi32(s[6], txmat_2_2));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[10], txmat_2_6),
                         _mm_mullo_epi32(s[14], txmat_2_15));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[18], txmat_2_7),
                         _mm_mullo_epi32(s[22], txmat_2_1));
    c[3] = _mm_add_epi32(_mm_mullo_epi32(s[26], txmat_2_10),
                         _mm_mullo_epi32(s[30], txmat_2_12));
    d[11] = _mm_sub_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[2], txmat_2_12),
                         _mm_mullo_epi32(s[6], txmat_2_5));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[10], txmat_2_1),
                         _mm_mullo_epi32(s[14], txmat_2_8));
    c[2] = _mm_add_epi32(_mm_mullo_epi32(s[18], txmat_2_15),
                         _mm_mullo_epi32(s[22], txmat_2_9));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[26], txmat_2_2),
                         _mm_mullo_epi32(s[30], txmat_2_4));
    d[12] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[2], txmat_2_13),
                         _mm_mullo_epi32(s[6], txmat_2_8));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[10], txmat_2_3),
                         _mm_mullo_epi32(s[14], txmat_2_1));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[18], txmat_2_6),
                         _mm_mullo_epi32(s[22], txmat_2_11));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[26], txmat_2_15),
                         _mm_mullo_epi32(s[30], txmat_2_10));
    d[13] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_sub_epi32(c[2], c[3]));

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[2], txmat_2_14),
                         _mm_mullo_epi32(s[6], txmat_2_11));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[10], txmat_2_8),
                         _mm_mullo_epi32(s[14], txmat_2_5));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[18], txmat_2_2),
                         _mm_mullo_epi32(s[22], txmat_2_0));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[26], txmat_2_3),
                         _mm_mullo_epi32(s[30], txmat_2_6));
    d[14] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[2], txmat_2_15),
                         _mm_mullo_epi32(s[6], txmat_2_14));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[10], txmat_2_13),
                         _mm_mullo_epi32(s[14], txmat_2_12));
    c[2] = _mm_sub_epi32(_mm_mullo_epi32(s[18], txmat_2_11),
                         _mm_mullo_epi32(s[22], txmat_2_10));
    c[3] = _mm_sub_epi32(_mm_mullo_epi32(s[26], txmat_2_9),
                         _mm_mullo_epi32(s[30], txmat_2_8));
    d[15] = _mm_add_epi32(_mm_add_epi32(c[0], c[1]), _mm_add_epi32(c[2], c[3]));

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[4], txmat_4_0),
                         _mm_mullo_epi32(s[12], txmat_4_1));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[20], txmat_4_2),
                         _mm_mullo_epi32(s[28], txmat_4_3));
    f[0] = _mm_add_epi32(c[0], c[1]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[4], txmat_4_1),
                         _mm_mullo_epi32(s[12], txmat_4_4));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[20], txmat_4_7),
                         _mm_mullo_epi32(s[28], txmat_4_5));
    f[1] = _mm_add_epi32(c[0], c[1]);

    c[0] = _mm_add_epi32(_mm_mullo_epi32(s[4], txmat_4_2),
                         _mm_mullo_epi32(s[12], txmat_4_7));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[20], txmat_4_3),
                         _mm_mullo_epi32(s[28], txmat_4_1));
    f[2] = _mm_sub_epi32(c[0], c[1]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[4], txmat_4_3),
                         _mm_mullo_epi32(s[12], txmat_4_5));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[20], txmat_4_1),
                         _mm_mullo_epi32(s[28], txmat_4_7));
    f[3] = _mm_sub_epi32(c[0], c[1]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[4], txmat_4_4),
                         _mm_mullo_epi32(s[12], txmat_4_2));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[20], txmat_4_6),
                         _mm_mullo_epi32(s[28], txmat_4_0));
    f[4] = _mm_sub_epi32(c[0], c[1]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[4], txmat_4_5),
                         _mm_mullo_epi32(s[12], txmat_4_0));
    c[1] = _mm_add_epi32(_mm_mullo_epi32(s[20], txmat_4_4),
                         _mm_mullo_epi32(s[28], txmat_4_6));
    f[5] = _mm_add_epi32(c[0], c[1]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[4], txmat_4_6),
                         _mm_mullo_epi32(s[12], txmat_4_3));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[20], txmat_4_0),
                         _mm_mullo_epi32(s[28], txmat_4_2));
    f[6] = _mm_add_epi32(c[0], c[1]);

    c[0] = _mm_sub_epi32(_mm_mullo_epi32(s[4], txmat_4_7),
                         _mm_mullo_epi32(s[12], txmat_4_6));
    c[1] = _mm_sub_epi32(_mm_mullo_epi32(s[20], txmat_4_5),
                         _mm_mullo_epi32(s[28], txmat_4_4));
    f[7] = _mm_add_epi32(c[0], c[1]);

    h[0] = _mm_add_epi32(_mm_mullo_epi32(s[8], txmat_8_0),
                         _mm_mullo_epi32(s[24], txmat_8_1));
    h[1] = _mm_sub_epi32(_mm_mullo_epi32(s[8], txmat_8_1),
                         _mm_mullo_epi32(s[24], txmat_8_3));
    h[2] = _mm_sub_epi32(_mm_mullo_epi32(s[8], txmat_8_2),
                         _mm_mullo_epi32(s[24], txmat_8_0));
    h[3] = _mm_sub_epi32(_mm_mullo_epi32(s[8], txmat_8_3),
                         _mm_mullo_epi32(s[24], txmat_8_2));

    u[0] = _mm_mullo_epi32(s[16], txmat_16_0);
    u[1] = _mm_mullo_epi32(s[16], txmat_16_1);
    v[0] = _mm_slli_epi32(s[0], 6);
    v[1] = _mm_slli_epi32(s[0], 6);

    g[0] = _mm_add_epi32(v[0], u[0]);
    g[2] = _mm_sub_epi32(v[1], u[1]);
    g[1] = _mm_add_epi32(v[1], u[1]);
    g[3] = _mm_sub_epi32(v[0], u[0]);

    for (k = 0; k < 4; k++) {
      e[k] = _mm_add_epi32(g[k], h[k]);
      e[k + 4] = _mm_sub_epi32(g[3 - k], h[3 - k]);
    }

    for (k = 0; k < 8; k++) {
      c[k] = _mm_add_epi32(e[k], f[k]);
      c[k + 8] = _mm_sub_epi32(e[7 - k], f[7 - k]);
    }

    for (k = 0; k < 16; k++) {
      a[k] = _mm_add_epi32(c[k], d[k]);
      a[k + 16] = _mm_sub_epi32(c[15 - k], d[15 - k]);
    }

    for (k = 0; k < 32; k++) {
      g[0] = _mm_add_epi32(v_offset, _mm_add_epi32(a[k], b[k]));
      g[1] = _mm_add_epi32(v_offset, _mm_sub_epi32(a[31 - k], b[31 - k]));

      g[0] = _mm_srai_epi32(g[0], shift);
      g[1] = _mm_srai_epi32(g[1], shift);

      g[0] = _mm_min_epi32(g[0], v_coef_max);
      g[0] = _mm_max_epi32(g[0], v_coef_min);
      g[1] = _mm_min_epi32(g[1], v_coef_max);
      g[1] = _mm_max_epi32(g[1], v_coef_min);

      _mm_storeu_si128((__m128i *)(dst + k * line), g[0]);
      _mm_storeu_si128((__m128i *)(dst + (k + 32) * line), g[1]);
    }
  }
}

void inv_txfm_idtx_size4_avx2(const int *src, int *dst, int shift, int line,
                              int skip_line, int zero_line, const int coef_min,
                              const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 4;

  __m128i v_offset = _mm_set1_epi32(offset);
  __m128i v_coef_min = _mm_set1_epi32(coef_min);
  __m128i v_coef_max = _mm_set1_epi32(coef_max);
  for (int i = 0; i < nz_line; i++) {
    // Load 8 int16_t values and extend to int32_t
    __m128i v_src = _mm_lddqu_si128((__m128i *)&src[i * tx1d_size]);

    // Multiply by scale and add offset
    __m128i v_scaled = _mm_slli_epi32(v_src, 7);
    __m128i v_offsetted = _mm_add_epi32(v_scaled, v_offset);

    // Right shift by shift
    __m128i v_shifted = _mm_srai_epi32(v_offsetted, shift);

    // Clamp to coef_min and coef_max
    v_shifted = _mm_min_epi32(v_shifted, v_coef_max);
    v_shifted = _mm_max_epi32(v_shifted, v_coef_min);

    // Extract 16bit integer and store
    dst[0 * line + i] = _mm_extract_epi32(v_shifted, 0);
    dst[1 * line + i] = _mm_extract_epi32(v_shifted, 1);
    dst[2 * line + i] = _mm_extract_epi32(v_shifted, 2);
    dst[3 * line + i] = _mm_extract_epi32(v_shifted, 3);
  }
}

void inv_txfm_idtx_size8_avx2(const int *src, int *dst, int shift, int line,
                              int skip_line, int zero_line, const int coef_min,
                              const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 8;
  const int scale = 181;

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_scale = _mm256_set1_epi32(scale);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int i = 0; i < nz_line; i++) {
    // Load 8 int16_t values and extend to int32_t
    __m256i v_src = _mm256_loadu_si256((__m256i *)&src[i * tx1d_size]);

    // Multiply by scale and add offset
    __m256i v_scaled = _mm256_mullo_epi32(v_src, v_scale);
    __m256i v_offsetted = _mm256_add_epi32(v_scaled, v_offset);

    // Right shift by shift
    __m256i v_shifted = _mm256_srai_epi32(v_offsetted, shift);

    // Clamp to coef_min and coef_max
    v_shifted = _mm256_min_epi32(v_shifted, v_coef_max);
    v_shifted = _mm256_max_epi32(v_shifted, v_coef_min);

    // Extract 16bit integer and store
    dst[0 * line + i] = _mm256_extract_epi32(v_shifted, 0);
    dst[1 * line + i] = _mm256_extract_epi32(v_shifted, 1);
    dst[2 * line + i] = _mm256_extract_epi32(v_shifted, 2);
    dst[3 * line + i] = _mm256_extract_epi32(v_shifted, 3);
    dst[4 * line + i] = _mm256_extract_epi32(v_shifted, 4);
    dst[5 * line + i] = _mm256_extract_epi32(v_shifted, 5);
    dst[6 * line + i] = _mm256_extract_epi32(v_shifted, 6);
    dst[7 * line + i] = _mm256_extract_epi32(v_shifted, 7);
  }
}

void inv_txfm_idtx_size16_avx2(const int *src, int *dst, int shift, int line,
                               int skip_line, int zero_line, const int coef_min,
                               const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 16;

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int i = 0; i < nz_line; i++) {
    for (int j = 0; j < tx1d_size; j += 8) {
      // Load 8 int16_t values and extend to int32_t
      __m256i v_src = _mm256_loadu_si256((__m256i *)&src[i * tx1d_size + j]);

      // Multiply by scale and add offset
      __m256i v_scaled = _mm256_slli_epi32(v_src, 8);
      __m256i v_offsetted = _mm256_add_epi32(v_scaled, v_offset);

      // Right shift by shift
      __m256i v_shifted = _mm256_srai_epi32(v_offsetted, shift);

      // Clamp to coef_min and coef_max
      v_shifted = _mm256_min_epi32(v_shifted, v_coef_max);
      v_shifted = _mm256_max_epi32(v_shifted, v_coef_min);

      // Extract 16bit integer and store
      dst[(0 + j) * line + i] = _mm256_extract_epi32(v_shifted, 0);
      dst[(1 + j) * line + i] = _mm256_extract_epi32(v_shifted, 1);
      dst[(2 + j) * line + i] = _mm256_extract_epi32(v_shifted, 2);
      dst[(3 + j) * line + i] = _mm256_extract_epi32(v_shifted, 3);
      dst[(4 + j) * line + i] = _mm256_extract_epi32(v_shifted, 4);
      dst[(5 + j) * line + i] = _mm256_extract_epi32(v_shifted, 5);
      dst[(6 + j) * line + i] = _mm256_extract_epi32(v_shifted, 6);
      dst[(7 + j) * line + i] = _mm256_extract_epi32(v_shifted, 7);
    }
  }
}

void inv_txfm_idtx_size32_avx2(const int *src, int *dst, int shift, int line,
                               int skip_line, int zero_line, const int coef_min,
                               const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 32;
  const int scale = 362;

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_scale = _mm256_set1_epi32(scale);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int i = 0; i < nz_line; i++) {
    for (int j = 0; j < tx1d_size; j += 8) {
      // Load 8 int16_t values and extend to int32_t
      __m256i v_src = _mm256_loadu_si256((__m256i *)&src[i * tx1d_size + j]);

      // Multiply by scale and add offset
      __m256i v_scaled = _mm256_mullo_epi32(v_src, v_scale);
      __m256i v_offsetted = _mm256_add_epi32(v_scaled, v_offset);

      // Right shift by shift
      __m256i v_shifted = _mm256_srai_epi32(v_offsetted, shift);

      // Clamp to coef_min and coef_max
      v_shifted = _mm256_min_epi32(v_shifted, v_coef_max);
      v_shifted = _mm256_max_epi32(v_shifted, v_coef_min);

      // Extract 16bit integer and store
      dst[(0 + j) * line + i] = _mm256_extract_epi32(v_shifted, 0);
      dst[(1 + j) * line + i] = _mm256_extract_epi32(v_shifted, 1);
      dst[(2 + j) * line + i] = _mm256_extract_epi32(v_shifted, 2);
      dst[(3 + j) * line + i] = _mm256_extract_epi32(v_shifted, 3);
      dst[(4 + j) * line + i] = _mm256_extract_epi32(v_shifted, 4);
      dst[(5 + j) * line + i] = _mm256_extract_epi32(v_shifted, 5);
      dst[(6 + j) * line + i] = _mm256_extract_epi32(v_shifted, 6);
      dst[(7 + j) * line + i] = _mm256_extract_epi32(v_shifted, 7);
    }
  }
}

void inv_txfm_adst_size4_avx2(const int *src, int *dst, int shift, int line,
                              int skip_line, int zero_line, const int coef_min,
                              const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 4;
  const int *tx_mat = tx_kernel_adst_size4[INV_TXFM][0];

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int j = 0; j < nz_line; j += 2) {
    __m256i sum = _mm256_set1_epi32(0);
    for (int k = 0; k < tx1d_size; k++) {
      __m128i tmp_src0 = _mm_set1_epi32(src[(j + 0) * tx1d_size + k]);
      __m128i tmp_src1 = _mm_set1_epi32(src[(j + 1) * tx1d_size + k]);
      __m256i tmp_src = _mm256_set_m128i(tmp_src1, tmp_src0);

      __m128i tmp_val0 = _mm_loadu_si128((__m128i *)(tx_mat + k * tx1d_size));
      __m256i tmp_val = _mm256_set_m128i(tmp_val0, tmp_val0);

      tmp_val = _mm256_mullo_epi32(tmp_src, tmp_val);
      sum = _mm256_add_epi32(tmp_val, sum);
    }
    // Multiply by scale and add offset
    sum = _mm256_add_epi32(sum, v_offset);

    // Right shift by shift
    sum = _mm256_srai_epi32(sum, shift);

    // Clamp to coef_min and coef_max
    sum = _mm256_min_epi32(sum, v_coef_max);
    sum = _mm256_max_epi32(sum, v_coef_min);

    // Store results
    dst[0 * line + j] = _mm256_extract_epi32(sum, 0);
    dst[1 * line + j] = _mm256_extract_epi32(sum, 1);
    dst[2 * line + j] = _mm256_extract_epi32(sum, 2);
    dst[3 * line + j] = _mm256_extract_epi32(sum, 3);
    dst[0 * line + j + 1] = _mm256_extract_epi32(sum, 4);
    dst[1 * line + j + 1] = _mm256_extract_epi32(sum, 5);
    dst[2 * line + j + 1] = _mm256_extract_epi32(sum, 6);
    dst[3 * line + j + 1] = _mm256_extract_epi32(sum, 7);
  }
}

void inv_txfm_fdst_size4_avx2(const int *src, int *dst, int shift, int line,
                              int skip_line, int zero_line, const int coef_min,
                              const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 4;
  const int *tx_mat = tx_kernel_fdst_size4[INV_TXFM][0];

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int j = 0; j < nz_line; j += 2) {
    __m256i sum = _mm256_set1_epi32(0);
    for (int k = 0; k < tx1d_size; k++) {
      __m128i tmp_src0 = _mm_set1_epi32(src[(j + 0) * tx1d_size + k]);
      __m128i tmp_src1 = _mm_set1_epi32(src[(j + 1) * tx1d_size + k]);
      __m256i tmp_src = _mm256_set_m128i(tmp_src1, tmp_src0);

      __m128i tmp_val0 = _mm_loadu_si128((__m128i *)(tx_mat + k * tx1d_size));
      __m256i tmp_val = _mm256_set_m128i(tmp_val0, tmp_val0);

      tmp_val = _mm256_mullo_epi32(tmp_src, tmp_val);
      sum = _mm256_add_epi32(tmp_val, sum);
    }
    // Multiply by scale and add offset
    sum = _mm256_add_epi32(sum, v_offset);

    // Right shift by shift
    sum = _mm256_srai_epi32(sum, shift);

    // Clamp to coef_min and coef_max
    sum = _mm256_min_epi32(sum, v_coef_max);
    sum = _mm256_max_epi32(sum, v_coef_min);

    // Store results
    dst[0 * line + j] = _mm256_extract_epi32(sum, 0);
    dst[1 * line + j] = _mm256_extract_epi32(sum, 1);
    dst[2 * line + j] = _mm256_extract_epi32(sum, 2);
    dst[3 * line + j] = _mm256_extract_epi32(sum, 3);
    dst[0 * line + j + 1] = _mm256_extract_epi32(sum, 4);
    dst[1 * line + j + 1] = _mm256_extract_epi32(sum, 5);
    dst[2 * line + j + 1] = _mm256_extract_epi32(sum, 6);
    dst[3 * line + j + 1] = _mm256_extract_epi32(sum, 7);
  }
}

void inv_txfm_adst_size8_avx2(const int *src, int *dst, int shift, int line,
                              int skip_line, int zero_line, const int coef_min,
                              const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 8;
  const int *tx_mat = tx_kernel_adst_size8[INV_TXFM][0];

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int j = 0; j < nz_line; j++) {
    __m256i sum = _mm256_set1_epi32(0);
    for (int k = 0; k < tx1d_size; k++) {
      __m256i tmp_src = _mm256_set1_epi32(src[j * tx1d_size + k]);
      __m256i tmp_val = _mm256_loadu_si256((__m256i *)(tx_mat + k * tx1d_size));
      tmp_val = _mm256_mullo_epi32(tmp_src, tmp_val);
      sum = _mm256_add_epi32(tmp_val, sum);
    }
    // Multiply by scale and add offset
    sum = _mm256_add_epi32(sum, v_offset);

    // Right shift by shift
    sum = _mm256_srai_epi32(sum, shift);

    // Clamp to coef_min and coef_max
    sum = _mm256_min_epi32(sum, v_coef_max);
    sum = _mm256_max_epi32(sum, v_coef_min);

    // Store results
    dst[0 * line + j] = _mm256_extract_epi32(sum, 0);
    dst[1 * line + j] = _mm256_extract_epi32(sum, 1);
    dst[2 * line + j] = _mm256_extract_epi32(sum, 2);
    dst[3 * line + j] = _mm256_extract_epi32(sum, 3);
    dst[4 * line + j] = _mm256_extract_epi32(sum, 4);
    dst[5 * line + j] = _mm256_extract_epi32(sum, 5);
    dst[6 * line + j] = _mm256_extract_epi32(sum, 6);
    dst[7 * line + j] = _mm256_extract_epi32(sum, 7);
  }
}

void inv_txfm_fdst_size8_avx2(const int *src, int *dst, int shift, int line,
                              int skip_line, int zero_line, const int coef_min,
                              const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 8;
  const int *tx_mat = tx_kernel_fdst_size8[INV_TXFM][0];

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int j = 0; j < nz_line; j++) {
    __m256i sum = _mm256_set1_epi32(0);
    for (int k = 0; k < tx1d_size; k++) {
      __m256i tmp_src = _mm256_set1_epi32(src[j * tx1d_size + k]);
      __m256i tmp_val = _mm256_loadu_si256((__m256i *)(tx_mat + k * tx1d_size));
      tmp_val = _mm256_mullo_epi32(tmp_src, tmp_val);
      sum = _mm256_add_epi32(tmp_val, sum);
    }
    // Multiply by scale and add offset
    sum = _mm256_add_epi32(sum, v_offset);

    // Right shift by shift
    sum = _mm256_srai_epi32(sum, shift);

    // Clamp to coef_min and coef_max
    sum = _mm256_min_epi32(sum, v_coef_max);
    sum = _mm256_max_epi32(sum, v_coef_min);

    // Store results
    dst[0 * line + j] = _mm256_extract_epi32(sum, 0);
    dst[1 * line + j] = _mm256_extract_epi32(sum, 1);
    dst[2 * line + j] = _mm256_extract_epi32(sum, 2);
    dst[3 * line + j] = _mm256_extract_epi32(sum, 3);
    dst[4 * line + j] = _mm256_extract_epi32(sum, 4);
    dst[5 * line + j] = _mm256_extract_epi32(sum, 5);
    dst[6 * line + j] = _mm256_extract_epi32(sum, 6);
    dst[7 * line + j] = _mm256_extract_epi32(sum, 7);
  }
}

void inv_txfm_adst_size16_avx2(const int *src, int *dst, int shift, int line,
                               int skip_line, int zero_line, const int coef_min,
                               const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 16;
  const int *tx_mat = tx_kernel_adst_size16[INV_TXFM][0];

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int j = 0; j < nz_line; j++) {
    for (int i = 0; i < tx1d_size; i += 8) {
      __m256i sum = _mm256_set1_epi32(0);
      for (int k = 0; k < tx1d_size; k++) {
        __m256i tmp_src = _mm256_set1_epi32(src[j * tx1d_size + k]);
        __m256i tmp_val =
            _mm256_loadu_si256((__m256i *)(tx_mat + k * tx1d_size + i));
        tmp_val = _mm256_mullo_epi32(tmp_src, tmp_val);
        sum = _mm256_add_epi32(tmp_val, sum);
      }
      // Multiply by scale and add offset
      sum = _mm256_add_epi32(sum, v_offset);

      // Right shift by shift
      sum = _mm256_srai_epi32(sum, shift);

      // Clamp to coef_min and coef_max
      sum = _mm256_min_epi32(sum, v_coef_max);
      sum = _mm256_max_epi32(sum, v_coef_min);

      // Store results
      dst[(i + 0) * line + j] = _mm256_extract_epi32(sum, 0);
      dst[(i + 1) * line + j] = _mm256_extract_epi32(sum, 1);
      dst[(i + 2) * line + j] = _mm256_extract_epi32(sum, 2);
      dst[(i + 3) * line + j] = _mm256_extract_epi32(sum, 3);
      dst[(i + 4) * line + j] = _mm256_extract_epi32(sum, 4);
      dst[(i + 5) * line + j] = _mm256_extract_epi32(sum, 5);
      dst[(i + 6) * line + j] = _mm256_extract_epi32(sum, 6);
      dst[(i + 7) * line + j] = _mm256_extract_epi32(sum, 7);
    }
  }
}

void inv_txfm_fdst_size16_avx2(const int *src, int *dst, int shift, int line,
                               int skip_line, int zero_line, const int coef_min,
                               const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 16;
  const int *tx_mat = tx_kernel_fdst_size16[INV_TXFM][0];

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int j = 0; j < nz_line; j++) {
    for (int i = 0; i < tx1d_size; i += 8) {
      __m256i sum = _mm256_set1_epi32(0);
      for (int k = 0; k < tx1d_size; k++) {
        __m256i tmp_src = _mm256_set1_epi32(src[j * tx1d_size + k]);
        __m256i tmp_val =
            _mm256_loadu_si256((__m256i *)(tx_mat + k * tx1d_size + i));
        tmp_val = _mm256_mullo_epi32(tmp_src, tmp_val);
        sum = _mm256_add_epi32(tmp_val, sum);
      }
      // Multiply by scale and add offset
      sum = _mm256_add_epi32(sum, v_offset);

      // Right shift by shift
      sum = _mm256_srai_epi32(sum, shift);

      // Clamp to coef_min and coef_max
      sum = _mm256_min_epi32(sum, v_coef_max);
      sum = _mm256_max_epi32(sum, v_coef_min);

      // Store results
      dst[(i + 0) * line + j] = _mm256_extract_epi32(sum, 0);
      dst[(i + 1) * line + j] = _mm256_extract_epi32(sum, 1);
      dst[(i + 2) * line + j] = _mm256_extract_epi32(sum, 2);
      dst[(i + 3) * line + j] = _mm256_extract_epi32(sum, 3);
      dst[(i + 4) * line + j] = _mm256_extract_epi32(sum, 4);
      dst[(i + 5) * line + j] = _mm256_extract_epi32(sum, 5);
      dst[(i + 6) * line + j] = _mm256_extract_epi32(sum, 6);
      dst[(i + 7) * line + j] = _mm256_extract_epi32(sum, 7);
    }
  }
}

void inv_txfm_ddtx_size4_avx2(const int *src, int *dst, int shift, int line,
                              int skip_line, int zero_line, const int coef_min,
                              const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 4;
  const int *tx_mat = tx_kernel_ddtx_size4[INV_TXFM][0];

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int j = 0; j < nz_line; j += 2) {
    __m256i sum = _mm256_set1_epi32(0);
    for (int k = 0; k < tx1d_size; k++) {
      __m128i tmp_src0 = _mm_set1_epi32(src[(j + 0) * tx1d_size + k]);
      __m128i tmp_src1 = _mm_set1_epi32(src[(j + 1) * tx1d_size + k]);
      __m256i tmp_src = _mm256_set_m128i(tmp_src1, tmp_src0);

      __m128i tmp_val0 = _mm_loadu_si128((__m128i *)(tx_mat + k * tx1d_size));
      __m256i tmp_val = _mm256_set_m128i(tmp_val0, tmp_val0);

      tmp_val = _mm256_mullo_epi32(tmp_src, tmp_val);
      sum = _mm256_add_epi32(tmp_val, sum);
    }
    // Multiply by scale and add offset
    sum = _mm256_add_epi32(sum, v_offset);

    // Right shift by shift
    sum = _mm256_srai_epi32(sum, shift);

    // Clamp to coef_min and coef_max
    sum = _mm256_min_epi32(sum, v_coef_max);
    sum = _mm256_max_epi32(sum, v_coef_min);

    // Store results
    dst[0 * line + j] = _mm256_extract_epi32(sum, 0);
    dst[1 * line + j] = _mm256_extract_epi32(sum, 1);
    dst[2 * line + j] = _mm256_extract_epi32(sum, 2);
    dst[3 * line + j] = _mm256_extract_epi32(sum, 3);
    dst[0 * line + j + 1] = _mm256_extract_epi32(sum, 4);
    dst[1 * line + j + 1] = _mm256_extract_epi32(sum, 5);
    dst[2 * line + j + 1] = _mm256_extract_epi32(sum, 6);
    dst[3 * line + j + 1] = _mm256_extract_epi32(sum, 7);
  }
}

void inv_txfm_ddtx_size8_avx2(const int *src, int *dst, int shift, int line,
                              int skip_line, int zero_line, const int coef_min,
                              const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 8;
  const int *tx_mat = tx_kernel_ddtx_size8[INV_TXFM][0];

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int j = 0; j < nz_line; j++) {
    __m256i sum = _mm256_set1_epi32(0);
    for (int k = 0; k < tx1d_size; k++) {
      __m256i tmp_src = _mm256_set1_epi32(src[j * tx1d_size + k]);
      __m256i tmp_val = _mm256_loadu_si256((__m256i *)(tx_mat + k * tx1d_size));
      tmp_val = _mm256_mullo_epi32(tmp_src, tmp_val);
      sum = _mm256_add_epi32(tmp_val, sum);
    }
    // Multiply by scale and add offset
    sum = _mm256_add_epi32(sum, v_offset);

    // Right shift by shift
    sum = _mm256_srai_epi32(sum, shift);

    // Clamp to coef_min and coef_max
    sum = _mm256_min_epi32(sum, v_coef_max);
    sum = _mm256_max_epi32(sum, v_coef_min);

    // Store results
    dst[0 * line + j] = _mm256_extract_epi32(sum, 0);
    dst[1 * line + j] = _mm256_extract_epi32(sum, 1);
    dst[2 * line + j] = _mm256_extract_epi32(sum, 2);
    dst[3 * line + j] = _mm256_extract_epi32(sum, 3);
    dst[4 * line + j] = _mm256_extract_epi32(sum, 4);
    dst[5 * line + j] = _mm256_extract_epi32(sum, 5);
    dst[6 * line + j] = _mm256_extract_epi32(sum, 6);
    dst[7 * line + j] = _mm256_extract_epi32(sum, 7);
  }
}

void inv_txfm_ddtx_size16_avx2(const int *src, int *dst, int shift, int line,
                               int skip_line, int zero_line, const int coef_min,
                               const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 16;
  const int *tx_mat = tx_kernel_ddtx_size16[INV_TXFM][0];

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int j = 0; j < nz_line; j++) {
    for (int i = 0; i < tx1d_size; i += 8) {
      __m256i sum = _mm256_set1_epi32(0);
      for (int k = 0; k < tx1d_size; k++) {
        __m256i tmp_src = _mm256_set1_epi32(src[j * tx1d_size + k]);
        __m256i tmp_val =
            _mm256_loadu_si256((__m256i *)(tx_mat + k * tx1d_size + i));
        tmp_val = _mm256_mullo_epi32(tmp_src, tmp_val);
        sum = _mm256_add_epi32(tmp_val, sum);
      }
      // Multiply by scale and add offset
      sum = _mm256_add_epi32(sum, v_offset);

      // Right shift by shift
      sum = _mm256_srai_epi32(sum, shift);

      // Clamp to coef_min and coef_max
      sum = _mm256_min_epi32(sum, v_coef_max);
      sum = _mm256_max_epi32(sum, v_coef_min);

      // Store results
      dst[(i + 0) * line + j] = _mm256_extract_epi32(sum, 0);
      dst[(i + 1) * line + j] = _mm256_extract_epi32(sum, 1);
      dst[(i + 2) * line + j] = _mm256_extract_epi32(sum, 2);
      dst[(i + 3) * line + j] = _mm256_extract_epi32(sum, 3);
      dst[(i + 4) * line + j] = _mm256_extract_epi32(sum, 4);
      dst[(i + 5) * line + j] = _mm256_extract_epi32(sum, 5);
      dst[(i + 6) * line + j] = _mm256_extract_epi32(sum, 6);
      dst[(i + 7) * line + j] = _mm256_extract_epi32(sum, 7);
    }
  }
}

void inv_txfm_fddt_size4_avx2(const int *src, int *dst, int shift, int line,
                              int skip_line, int zero_line, const int coef_min,
                              const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 4;
  const int *tx_mat = tx_kernel_ddtx_size4[INV_TXFM][0];

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int j = 0; j < nz_line; j += 2) {
    __m256i sum = _mm256_set1_epi32(0);
    for (int k = 0; k < tx1d_size; k++) {
      __m128i tmp_src0 = _mm_set1_epi32(src[(j + 0) * tx1d_size + k]);
      __m128i tmp_src1 = _mm_set1_epi32(src[(j + 1) * tx1d_size + k]);
      __m256i tmp_src = _mm256_set_m128i(tmp_src1, tmp_src0);

      __m128i tmp_val0 = _mm_loadu_si128((__m128i *)(tx_mat + k * tx1d_size));
      __m256i tmp_val = _mm256_set_m128i(tmp_val0, tmp_val0);

      tmp_val = _mm256_mullo_epi32(tmp_src, tmp_val);
      sum = _mm256_add_epi32(tmp_val, sum);
    }
    // Multiply by scale and add offset
    sum = _mm256_add_epi32(sum, v_offset);

    // Right shift by shift
    sum = _mm256_srai_epi32(sum, shift);

    // Clamp to coef_min and coef_max
    sum = _mm256_min_epi32(sum, v_coef_max);
    sum = _mm256_max_epi32(sum, v_coef_min);

    // Store results
    dst[3 * line + j] = _mm256_extract_epi32(sum, 0);
    dst[2 * line + j] = _mm256_extract_epi32(sum, 1);
    dst[1 * line + j] = _mm256_extract_epi32(sum, 2);
    dst[0 * line + j] = _mm256_extract_epi32(sum, 3);
    dst[3 * line + j + 1] = _mm256_extract_epi32(sum, 4);
    dst[2 * line + j + 1] = _mm256_extract_epi32(sum, 5);
    dst[1 * line + j + 1] = _mm256_extract_epi32(sum, 6);
    dst[0 * line + j + 1] = _mm256_extract_epi32(sum, 7);
  }
}

void inv_txfm_fddt_size8_avx2(const int *src, int *dst, int shift, int line,
                              int skip_line, int zero_line, const int coef_min,
                              const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 8;
  const int *tx_mat = tx_kernel_ddtx_size8[INV_TXFM][0];

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int j = 0; j < nz_line; j++) {
    __m256i sum = _mm256_set1_epi32(0);
    for (int k = 0; k < tx1d_size; k++) {
      __m256i tmp_src = _mm256_set1_epi32(src[j * tx1d_size + k]);
      __m256i tmp_val = _mm256_loadu_si256((__m256i *)(tx_mat + k * tx1d_size));
      tmp_val = _mm256_mullo_epi32(tmp_src, tmp_val);
      sum = _mm256_add_epi32(tmp_val, sum);
    }
    // Multiply by scale and add offset
    sum = _mm256_add_epi32(sum, v_offset);

    // Right shift by shift
    sum = _mm256_srai_epi32(sum, shift);

    // Clamp to coef_min and coef_max
    sum = _mm256_min_epi32(sum, v_coef_max);
    sum = _mm256_max_epi32(sum, v_coef_min);

    // Store results
    dst[7 * line + j] = _mm256_extract_epi32(sum, 0);
    dst[6 * line + j] = _mm256_extract_epi32(sum, 1);
    dst[5 * line + j] = _mm256_extract_epi32(sum, 2);
    dst[4 * line + j] = _mm256_extract_epi32(sum, 3);
    dst[3 * line + j] = _mm256_extract_epi32(sum, 4);
    dst[2 * line + j] = _mm256_extract_epi32(sum, 5);
    dst[1 * line + j] = _mm256_extract_epi32(sum, 6);
    dst[0 * line + j] = _mm256_extract_epi32(sum, 7);
  }
}

void inv_txfm_fddt_size16_avx2(const int *src, int *dst, int shift, int line,
                               int skip_line, int zero_line, const int coef_min,
                               const int coef_max) {
  (void)zero_line;
  const int offset = 1 << (shift - 1);
  const int nz_line = line - skip_line;
  const int tx1d_size = 16;
  const int *tx_mat = tx_kernel_ddtx_size16[INV_TXFM][0];

  __m256i v_offset = _mm256_set1_epi32(offset);
  __m256i v_coef_min = _mm256_set1_epi32(coef_min);
  __m256i v_coef_max = _mm256_set1_epi32(coef_max);

  for (int j = 0; j < nz_line; j++) {
    for (int i = 0; i < tx1d_size; i += 8) {
      __m256i sum = _mm256_set1_epi32(0);
      for (int k = 0; k < tx1d_size; k++) {
        __m256i tmp_src = _mm256_set1_epi32(src[j * tx1d_size + k]);
        __m256i tmp_val =
            _mm256_loadu_si256((__m256i *)(tx_mat + k * tx1d_size + i));
        tmp_val = _mm256_mullo_epi32(tmp_src, tmp_val);
        sum = _mm256_add_epi32(tmp_val, sum);
      }
      // Multiply by scale and add offset
      sum = _mm256_add_epi32(sum, v_offset);

      // Right shift by shift
      sum = _mm256_srai_epi32(sum, shift);

      // Clamp to coef_min and coef_max
      sum = _mm256_min_epi32(sum, v_coef_max);
      sum = _mm256_max_epi32(sum, v_coef_min);

      // Store results
      dst[(15 - i) * line + j] = _mm256_extract_epi32(sum, 0);
      dst[(14 - i) * line + j] = _mm256_extract_epi32(sum, 1);
      dst[(13 - i) * line + j] = _mm256_extract_epi32(sum, 2);
      dst[(12 - i) * line + j] = _mm256_extract_epi32(sum, 3);
      dst[(11 - i) * line + j] = _mm256_extract_epi32(sum, 4);
      dst[(10 - i) * line + j] = _mm256_extract_epi32(sum, 5);
      dst[(9 - i) * line + j] = _mm256_extract_epi32(sum, 6);
      dst[(8 - i) * line + j] = _mm256_extract_epi32(sum, 7);
    }
  }
}

void inv_transform_1d_avx2(const int *src, int *dst, int shift, int line,
                           int skip_line, int zero_line, const int coef_min,
                           const int coef_max, const int tx_type_index,
                           const int size_index) {
  switch (size_index) {
    case 0:
      switch (tx_type_index) {
        case 0:
          inv_txfm_dct2_size4_avx2(src, dst, shift, line, skip_line, zero_line,
                                   coef_min, coef_max);
          break;
        case 1:
          inv_txfm_idtx_size4_avx2(src, dst, shift, line, skip_line, zero_line,
                                   coef_min, coef_max);
          break;
        case 2:
          inv_txfm_adst_size4_avx2(src, dst, shift, line, skip_line, zero_line,
                                   coef_min, coef_max);
          break;
        case 3:
          inv_txfm_fdst_size4_avx2(src, dst, shift, line, skip_line, zero_line,
                                   coef_min, coef_max);
          break;
        case 4:
          inv_txfm_ddtx_size4_avx2(src, dst, shift, line, skip_line, zero_line,
                                   coef_min, coef_max);
          break;
        case 5:
          inv_txfm_fddt_size4_avx2(src, dst, shift, line, skip_line, zero_line,
                                   coef_min, coef_max);
          break;
        default: assert(0); break;
      }
      break;
    case 1:
      switch (tx_type_index) {
        case 0:
          inv_txfm_dct2_size8_avx2(src, dst, shift, line, skip_line, zero_line,
                                   coef_min, coef_max);
          break;
        case 1:
          inv_txfm_idtx_size8_avx2(src, dst, shift, line, skip_line, zero_line,
                                   coef_min, coef_max);
          break;
        case 2:
          inv_txfm_adst_size8_avx2(src, dst, shift, line, skip_line, zero_line,
                                   coef_min, coef_max);
          break;
        case 3:
          inv_txfm_fdst_size8_avx2(src, dst, shift, line, skip_line, zero_line,
                                   coef_min, coef_max);
          break;
        case 4:
          inv_txfm_ddtx_size8_avx2(src, dst, shift, line, skip_line, zero_line,
                                   coef_min, coef_max);
          break;
        case 5:
          inv_txfm_fddt_size8_avx2(src, dst, shift, line, skip_line, zero_line,
                                   coef_min, coef_max);
          break;
        default: assert(0); break;
      }
      break;
    case 2:
      switch (tx_type_index) {
        case 0:
          inv_txfm_dct2_size16_avx2(src, dst, shift, line, skip_line, zero_line,
                                    coef_min, coef_max);
          break;
        case 1:
          inv_txfm_idtx_size16_avx2(src, dst, shift, line, skip_line, zero_line,
                                    coef_min, coef_max);
          break;
        case 2:
          inv_txfm_adst_size16_avx2(src, dst, shift, line, skip_line, zero_line,
                                    coef_min, coef_max);
          break;
        case 3:
          inv_txfm_fdst_size16_avx2(src, dst, shift, line, skip_line, zero_line,
                                    coef_min, coef_max);
          break;
        case 4:
          inv_txfm_ddtx_size16_avx2(src, dst, shift, line, skip_line, zero_line,
                                    coef_min, coef_max);
          break;
        case 5:
          inv_txfm_fddt_size16_avx2(src, dst, shift, line, skip_line, zero_line,
                                    coef_min, coef_max);
          break;
        default: assert(0); break;
      }
      break;
    case 3:
      switch (tx_type_index) {
        case 0:
          inv_txfm_dct2_size32_avx2(src, dst, shift, line, skip_line, zero_line,
                                    coef_min, coef_max);
          break;
        case 1:
          inv_txfm_idtx_size32_avx2(src, dst, shift, line, skip_line, zero_line,
                                    coef_min, coef_max);
          break;
        default: assert(0); break;
      }
      break;
    case 4:
      switch (tx_type_index) {
        case 0:
          inv_txfm_dct2_size64_avx2(src, dst, shift, line, skip_line, zero_line,
                                    coef_min, coef_max);
          break;
        default: assert(0); break;
      }
      break;
    default: assert(0); break;
  }
}

void inv_txfm_avx2(const tran_low_t *input, uint16_t *dest, int stride,
                   const TxfmParam *txfm_param) {
  const TX_SIZE tx_size = txfm_param->tx_size;
  TX_TYPE tx_type = txfm_param->tx_type;

  const int width = tx_size_wide[tx_size];
  const int height = tx_size_high[tx_size];

  const int intermediate_bitdepth = txfm_param->bd + 8;
  const int rng_min = -(1 << (intermediate_bitdepth - 1));
  const int rng_max = (1 << (intermediate_bitdepth - 1)) - 1;

  const uint32_t tx_wide_index = tx_size_wide_log2[tx_size] - 2;
  const uint32_t tx_high_index = tx_size_high_log2[tx_size] - 2;

  if (txfm_param->lossless) {
#if CONFIG_LOSSLESS_DPCM && !CONFIG_IMPROVE_LOSSLESS_TXM
    assert(tx_type == DCT_DCT || tx_type == IDTX);
    if (tx_type == IDTX) {
      av1_inv_txfm2d_add_4x4_c(input, dest, stride, tx_type,
                               txfm_param->use_ddt, txfm_param->bd);
    } else {
      av1_highbd_iwht4x4_add(input, dest, stride, txfm_param->eob,
                             txfm_param->bd);
    }
#else
    assert(tx_type == DCT_DCT);
    av1_highbd_iwht4x4_add(input, dest, stride, txfm_param->eob,
                           txfm_param->bd);
#endif  // CONFIG_LOSSLESS_DPCM && !CONFIG_IMPROVE_LOSSLESS_TXM
    return;
  }

  int tx_type_row = g_hor_tx_type[tx_type];
  int tx_type_col = g_ver_tx_type[tx_type];

  if (txfm_param->use_ddt) {
    const int use_ddt_row = (width == 4 && REPLACE_ADST4) ||
                            (width == 8 && REPLACE_ADST8) ||
                            (width == 16 && REPLACE_ADST16);
    if (use_ddt_row && (tx_type_row == DST7 || tx_type_row == DCT8)) {
      tx_type_row = (tx_type_row == DST7) ? DDTX : FDDT;
    }
    const int use_ddt_col = (height == 4 && REPLACE_ADST4) ||
                            (height == 8 && REPLACE_ADST8) ||
                            (height == 16 && REPLACE_ADST16);
    if (use_ddt_col && (tx_type_col == DST7 || tx_type_col == DCT8)) {
      tx_type_col = (tx_type_col == DST7) ? DDTX : FDDT;
    }
  }

  int skipWidth = width > 32 ? width - 32 : 0;
  int skipHeight = height > 32 ? height - 32 : 0;

  int block[MAX_TX_SQUARE] = { 0 };
  int temp[MAX_TX_SQUARE] = { 0 };

  const int log2width = tx_size_wide_log2[tx_size];
  const int log2height = tx_size_high_log2[tx_size];
  const int sqrt2 = ((log2width + log2height) & 1) ? 1 : 0;

  // Load clamp boundaries into SIMD registers
  __m256i vcoefmin = _mm256_set1_epi32(-(1 << (txfm_param->bd + 7)));
  __m256i vcoefmax = _mm256_set1_epi32((1 << (txfm_param->bd + 7)) - 1);
  if (skipWidth) {
    for (int y = 0; y < height; y++) {
      if (sqrt2) {
        __m256i scale_vector = _mm256_set1_epi64x((int64_t)NewInvSqrt2);
        __m128i shift_bits = _mm_set1_epi64x(NewSqrt2Bits);
        __m256i round_offset = _mm256_set1_epi64x(1LL << (NewSqrt2Bits - 1));
        __m256i idx = _mm256_set_epi32(6, 4, 2, 0, 6, 4, 2, 0);
        for (int i = 0; i < 32; i += 8) {
          __m256i data = _mm256_loadu_si256((__m256i *)(input + y * 32 + i));

          __m256i data0 =
              _mm256_cvtepi32_epi64(_mm256_extracti128_si256(data, 0));
          data0 = _mm256_mul_epi32(data0, scale_vector);
          data0 = _mm256_add_epi64(data0, round_offset);
          data0 = _mm256_srl_epi64(data0, shift_bits);
          data0 = _mm256_permutevar8x32_epi32(data0, idx);

          __m256i data1 =
              _mm256_cvtepi32_epi64(_mm256_extracti128_si256(data, 1));
          data1 = _mm256_mul_epi32(data1, scale_vector);
          data1 = _mm256_add_epi64(data1, round_offset);
          data1 = _mm256_srl_epi64(data1, shift_bits);
          data1 = _mm256_permutevar8x32_epi32(data1, idx);

          data = _mm256_blend_epi32(data0, data1, 0b11110000);

          data = _mm256_min_epi32(_mm256_max_epi32(data, vcoefmin), vcoefmax);
          _mm256_storeu_si256((__m256i *)(block + y * width + i), data);
        }
      } else {
        for (int i = 0; i < 32; i += 8) {
          __m256i data = _mm256_loadu_si256((__m256i *)(input + y * 32 + i));
          data = _mm256_min_epi32(_mm256_max_epi32(data, vcoefmin), vcoefmax);
          _mm256_storeu_si256((__m256i *)(block + y * width + i), data);
        }
      }
    }
  } else {
    if (sqrt2) {
      __m256i scale_vector = _mm256_set1_epi64x((int64_t)NewInvSqrt2);
      __m128i shift_bits = _mm_set1_epi64x(NewSqrt2Bits);
      __m256i round_offset = _mm256_set1_epi64x(1LL << (NewSqrt2Bits - 1));
      __m256i idx = _mm256_set_epi32(6, 4, 2, 0, 6, 4, 2, 0);
      for (int i = 0; i < AOMMIN(1024, width * height); i += 8) {
        __m256i data = _mm256_loadu_si256((__m256i *)(input + i));

        __m256i data0 =
            _mm256_cvtepi32_epi64(_mm256_extracti128_si256(data, 0));
        data0 = _mm256_mul_epi32(data0, scale_vector);
        data0 = _mm256_add_epi64(data0, round_offset);
        data0 = _mm256_srl_epi64(data0, shift_bits);
        data0 = _mm256_permutevar8x32_epi32(data0, idx);

        __m256i data1 =
            _mm256_cvtepi32_epi64(_mm256_extracti128_si256(data, 1));
        data1 = _mm256_mul_epi32(data1, scale_vector);
        data1 = _mm256_add_epi64(data1, round_offset);
        data1 = _mm256_srl_epi64(data1, shift_bits);
        data1 = _mm256_permutevar8x32_epi32(data1, idx);

        data = _mm256_blend_epi32(data0, data1, 0b11110000);

        data = _mm256_min_epi32(_mm256_max_epi32(data, vcoefmin), vcoefmax);
        _mm256_storeu_si256((__m256i *)(block + i), data);
      }
    } else {
      for (int i = 0; i < AOMMIN(1024, width * height); i += 8) {
        __m256i data = _mm256_loadu_si256((__m256i *)(input + i));
        data = _mm256_min_epi32(_mm256_max_epi32(data, vcoefmin), vcoefmax);
        _mm256_storeu_si256((__m256i *)(block + i), data);
      }
    }
  }

  const int shift_1st = inv_tx_shift[tx_size][0];
  const int shift_2nd = inv_tx_shift[tx_size][1];

  assert(shift_1st >= 0);
  assert(shift_2nd >= 0);

  inv_transform_1d_avx2(block, temp, shift_1st, height, skipHeight, skipWidth,
                        rng_min, rng_max, tx_type_row, tx_wide_index);

  inv_transform_1d_avx2(temp, block, shift_2nd, width, 0, skipHeight, rng_min,
                        rng_max, tx_type_col, tx_high_index);

  // Load clamp boundaries into SIMD registers
  __m256i vpixmin = _mm256_setzero_si256();
  __m256i vpixmax = _mm256_set1_epi32((1 << txfm_param->bd) - 1);
  if ((width & 7) == 0) {
    for (int y = 0; y < height; y++) {
      int row_offset = y * stride;
      for (int x = 0; x < width; x += 8) {
        __m256i vdest = _mm256_cvtepu16_epi32(
            _mm_loadu_si128((__m128i *)&dest[row_offset + x]));
        __m256i vblock = _mm256_loadu_si256((__m256i *)&block[y * width + x]);
        __m256i vsum = _mm256_add_epi32(vdest, vblock);
        __m256i vclamped =
            _mm256_min_epi32(_mm256_max_epi32(vsum, vpixmin), vpixmax);
        __m256i vresult = _mm256_permute4x64_epi64(
            _mm256_packus_epi32(vclamped, vclamped), 0xd8);
        _mm_storeu_si128((__m128i *)&dest[row_offset + x],
                         _mm256_castsi256_si128(vresult));
      }
    }
  } else {
    for (int y = 0; y < height; y += 2) {
      int row_offset = y * stride;
      for (int x = 0; x < width; x += 4) {
        __m128i vdest0 =
            _mm_cvtepu16_epi32(_mm_loadu_si64(&dest[row_offset + x]));
        __m128i vdest1 =
            _mm_cvtepu16_epi32(_mm_loadu_si64(&dest[row_offset + stride + x]));
        __m256i vdest = _mm256_set_m128i(vdest1, vdest0);
        __m256i vblock = _mm256_loadu_si256((__m256i *)&block[y * width + x]);
        __m256i vsum = _mm256_add_epi32(vdest, vblock);
        __m256i vclamped =
            _mm256_min_epi32(_mm256_max_epi32(vsum, vpixmin), vpixmax);
        __m256i vresult = _mm256_packus_epi32(vclamped, vclamped);
        __m128i vresult_lo = _mm256_extracti128_si256(vresult, 0);
        __m128i vresult_hi = _mm256_extracti128_si256(vresult, 1);
#if ARCH_X86_64
        *((int64_t *)&dest[row_offset + x]) = _mm_extract_epi64(vresult_lo, 0);
        *((int64_t *)&dest[row_offset + stride + x]) =
            _mm_extract_epi64(vresult_hi, 0);
#else
        xx_storel_64(&dest[row_offset + x], vresult_lo);
        xx_storel_64(&dest[row_offset + stride + x], vresult_hi);
#endif
      }
    }
  }
}

#if CONFIG_IMPROVE_LOSSLESS_TXM
void process_inv_idtx_add_4x4_avx2(const tran_low_t *input, int in_stride,
                                   uint16_t *dst, int out_stride,
                                   int scale_bits, int bd) {
  const int32_t max_val = (1 << bd) - 1;
  const int in_stride_bytes = in_stride * 4;
  const int out_stride_bytes = out_stride * 2;

  // === Part 1: Load and Process Source (int32_t) ===
  const uint8_t *src_bytes = (const uint8_t *)input;
  __m128i s_r0 =
      _mm_loadu_si128((const __m128i *)(src_bytes + 0 * in_stride_bytes));
  __m128i s_r1 =
      _mm_loadu_si128((const __m128i *)(src_bytes + 1 * in_stride_bytes));
  __m128i s_r2 =
      _mm_loadu_si128((const __m128i *)(src_bytes + 2 * in_stride_bytes));
  __m128i s_r3 =
      _mm_loadu_si128((const __m128i *)(src_bytes + 3 * in_stride_bytes));
  __m256i src_data_01 = _mm256_set_m128i(s_r1, s_r0);  // els 0..7
  __m256i src_data_23 = _mm256_set_m128i(s_r3, s_r2);  // els 8..15
  __m256i shifted_01;
  __m256i shifted_23;
  if (scale_bits == 0) {
    shifted_01 = src_data_01;
    shifted_23 = src_data_23;
  } else {
    shifted_01 = _mm256_srai_epi32(src_data_01, scale_bits);
    shifted_23 = _mm256_srai_epi32(src_data_23, scale_bits);
  }

  // === Part 2: Load and Widen Destination (uint16_t -> int32_t)
  // --- 2a. Load dst (4x4 uint16) ---
  const uint8_t *dst_read_bytes =
      (const uint8_t *)dst;  // Use const for reading phase
  __m128i d_r0 = _mm_loadl_epi64(
      (const __m128i *)(dst_read_bytes +
                        0 * out_stride_bytes));  // Load Row 0 (8 bytes)
  __m128i d_r1 = _mm_loadl_epi64(
      (const __m128i *)(dst_read_bytes + 1 * out_stride_bytes));  // Load Row 1
  __m128i d_r2 = _mm_loadl_epi64(
      (const __m128i *)(dst_read_bytes + 2 * out_stride_bytes));  // Load Row 2
  __m128i d_r3 = _mm_loadl_epi64(
      (const __m128i *)(dst_read_bytes + 3 * out_stride_bytes));  // Load Row 3
  // Combine pairs into 128-bit lanes (maintains row order within lanes)
  __m128i d_lane01 =
      _mm_unpacklo_epi64(d_r0, d_r1);  // [Row1 | Row0] (16-bit elements)
  __m128i d_lane23 =
      _mm_unpacklo_epi64(d_r2, d_r3);  // [Row3 | Row2] (16-bit elements)

  // --- 2b. Widen dst uint16 -> int32 (ZERO-extend) --- *MODIFIED*
  // Use _mm256_cvtepu16_epi32 for zero extension
  __m256i dst_data_01_s32 =
      _mm256_cvtepu16_epi32(d_lane01);  // Zero-extends elements 0..7
  __m256i dst_data_23_s32 =
      _mm256_cvtepu16_epi32(d_lane23);  // Zero-extends elements 8..15

  // === Part 3: Add, Clamp [0, max_val], Pack/Saturate (to uint16_t) ===

  // --- 3a. Add ---
  // Addition is still performed using 32-bit signed arithmetic
  __m256i sum_01 = _mm256_add_epi32(shifted_01, dst_data_01_s32);
  __m256i sum_23 = _mm256_add_epi32(shifted_23, dst_data_23_s32);

  // --- 3b. Clamp [0, max_val] ---
  // (Clamping logic remains the same on the int32 sum)
  const __m256i v_zero = _mm256_setzero_si256();
  const __m256i v_max_val = _mm256_set1_epi32(max_val);
  __m256i clamped_01_tmp = _mm256_max_epi32(sum_01, v_zero);
  __m256i clamped_23_tmp = _mm256_max_epi32(sum_23, v_zero);
  __m256i clamped_01 =
      _mm256_min_epi32(clamped_01_tmp, v_max_val);  // els 0..7 clamped
  __m256i clamped_23 =
      _mm256_min_epi32(clamped_23_tmp, v_max_val);  // els 8..15 clamped
  // clamped_01, clamped_23 contain int32 values guaranteed >= 0

  // --- 3c. Pack clamped int32 -> uint16 with UNSIGNED Saturation ---
  // *MODIFIED* Use _mm_packus_epi32 which saturates int32 to [0, 65535]
  // (uint16_t range)
  __m128i packed_clamped_r0r1 =
      _mm_packus_epi32(  // <-- pack*us* for unsigned saturation
          _mm256_castsi256_si128(
              clamped_01),  // Low lane of clamped_01 (els 0..3)
          _mm256_extracti128_si256(clamped_01,
                                   1)  // High lane of clamped_01 (els 4..7)
      );  // Result: [el7..el4 | el3..el0] (saturated uint16_t)

  __m128i packed_clamped_r2r3 = _mm_packus_epi32(  // <-- pack*us*
      _mm256_castsi256_si128(clamped_23),  // Low lane of clamped_23 (els 8..11)
      _mm256_extracti128_si256(clamped_23,
                               1)  // High lane of clamped_23 (els 12..15)
  );  // Result: [el15..el12 | el11..el8] (saturated uint16_t)

  // Combine into final 256-bit register holding uint16_t results
  // Layout: [Row3 | Row2 | Row1 | Row0] (16-bit elements)
  __m256i final_result_u16 =
      _mm256_set_m128i(packed_clamped_r2r3, packed_clamped_r0r1);

  // === Part 4: Store Result back to dst (uint16_t) ===
  // (Store mechanism identical, pointer type `uint16_t*` is correct)
  uint8_t *dst_write_bytes = (uint8_t *)dst;  // Cast for byte arithmetic
  __m128i res_lane01 = _mm256_castsi256_si128(final_result_u16);
  __m128i res_lane23 = _mm256_extracti128_si256(final_result_u16, 1);
  // Store Row 0 (8 bytes)
  _mm_storel_epi64((__m128i *)(dst_write_bytes + 0 * out_stride_bytes),
                   res_lane01);
  // Extract and Store Row 1 (8 bytes)
  __m128i res_row1 = _mm_bsrli_si128(res_lane01, 8);
  _mm_storel_epi64((__m128i *)(dst_write_bytes + 1 * out_stride_bytes),
                   res_row1);
  // Store Row 2 (8 bytes)
  _mm_storel_epi64((__m128i *)(dst_write_bytes + 2 * out_stride_bytes),
                   res_lane23);
  // Extract and Store Row 3 (8 bytes)
  __m128i res_row3 = _mm_bsrli_si128(res_lane23, 8);
  _mm_storel_epi64((__m128i *)(dst_write_bytes + 3 * out_stride_bytes),
                   res_row3);
}

void av1_lossless_inv_idtx_add_avx2(const tran_low_t *input, uint16_t *dest,
                                    int stride, const TxfmParam *txfm_param) {
  const int txw = tx_size_wide[txfm_param->tx_size];
  const int txh = tx_size_high[txfm_param->tx_size];
  int scale_bits = 3 - av1_get_tx_scale(txfm_param->tx_size);
  const int bd = txfm_param->bd;

  for (int i = 0; i < txh; i += MI_SIZE) {
    for (int j = 0; j < txw; j += MI_SIZE) {
      process_inv_idtx_add_4x4_avx2(input + i * txw + j, txw,
                                    dest + i * stride + j, stride, scale_bits,
                                    bd);
    }
  }
}
#endif  // CONFIG_IMPROVE_LOSSLESS_TXM
