/*
 * Copyright (c) 2016, Alliance for Open Media. All rights reserved
 *
 * This source code is subject to the terms of the BSD 2 Clause License and
 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
 * was not distributed with this source code in the LICENSE file, you can
 * obtain it at www.aomedia.org/license/software. 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 www.aomedia.org/license/patent.
 */

#include <stdlib.h>
#include "av1/common/av1_inv_txfm1d.h"
#include "av1/common/av1_txfm.h"

// TODO(angiebird): Make 1-d txfm functions static
//

void av1_idct4_new(const int32_t *input, int32_t *output, int8_t cos_bit,
                   const int8_t *stage_range) {
  assert(output != input);
  const int32_t size = 4;
  const int32_t *cospi = cospi_arr(cos_bit);

  int32_t stage = 0;
  int32_t *bf0, *bf1;
  int32_t step[4];

  // stage 0;

  // stage 1;
  stage++;
  bf1 = output;
  bf1[0] = input[0];
  bf1[1] = input[2];
  bf1[2] = input[1];
  bf1[3] = input[3];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 2
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = half_btf(cospi[32], bf0[0], cospi[32], bf0[1], cos_bit);
  bf1[1] = half_btf(cospi[32], bf0[0], -cospi[32], bf0[1], cos_bit);
  bf1[2] = half_btf(cospi[48], bf0[2], -cospi[16], bf0[3], cos_bit);
  bf1[3] = half_btf(cospi[16], bf0[2], cospi[48], bf0[3], cos_bit);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 3
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = clamp_value(bf0[0] + bf0[3], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[2], stage_range[stage]);
  bf1[2] = clamp_value(bf0[1] - bf0[2], stage_range[stage]);
  bf1[3] = clamp_value(bf0[0] - bf0[3], stage_range[stage]);
}

void av1_idct8_new(const int32_t *input, int32_t *output, int8_t cos_bit,
                   const int8_t *stage_range) {
  assert(output != input);
  const int32_t size = 8;
  const int32_t *cospi = cospi_arr(cos_bit);

  int32_t stage = 0;
  int32_t *bf0, *bf1;
  int32_t step[8];

  // stage 0;

  // stage 1;
  stage++;
  bf1 = output;
  bf1[0] = input[0];
  bf1[1] = input[4];
  bf1[2] = input[2];
  bf1[3] = input[6];
  bf1[4] = input[1];
  bf1[5] = input[5];
  bf1[6] = input[3];
  bf1[7] = input[7];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 2
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = bf0[2];
  bf1[3] = bf0[3];
  bf1[4] = half_btf(cospi[56], bf0[4], -cospi[8], bf0[7], cos_bit);
  bf1[5] = half_btf(cospi[24], bf0[5], -cospi[40], bf0[6], cos_bit);
  bf1[6] = half_btf(cospi[40], bf0[5], cospi[24], bf0[6], cos_bit);
  bf1[7] = half_btf(cospi[8], bf0[4], cospi[56], bf0[7], cos_bit);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 3
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = half_btf(cospi[32], bf0[0], cospi[32], bf0[1], cos_bit);
  bf1[1] = half_btf(cospi[32], bf0[0], -cospi[32], bf0[1], cos_bit);
  bf1[2] = half_btf(cospi[48], bf0[2], -cospi[16], bf0[3], cos_bit);
  bf1[3] = half_btf(cospi[16], bf0[2], cospi[48], bf0[3], cos_bit);
  bf1[4] = clamp_value(bf0[4] + bf0[5], stage_range[stage]);
  bf1[5] = clamp_value(bf0[4] - bf0[5], stage_range[stage]);
  bf1[6] = clamp_value(-bf0[6] + bf0[7], stage_range[stage]);
  bf1[7] = clamp_value(bf0[6] + bf0[7], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 4
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = clamp_value(bf0[0] + bf0[3], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[2], stage_range[stage]);
  bf1[2] = clamp_value(bf0[1] - bf0[2], stage_range[stage]);
  bf1[3] = clamp_value(bf0[0] - bf0[3], stage_range[stage]);
  bf1[4] = bf0[4];
  bf1[5] = half_btf(-cospi[32], bf0[5], cospi[32], bf0[6], cos_bit);
  bf1[6] = half_btf(cospi[32], bf0[5], cospi[32], bf0[6], cos_bit);
  bf1[7] = bf0[7];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 5
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = clamp_value(bf0[0] + bf0[7], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[6], stage_range[stage]);
  bf1[2] = clamp_value(bf0[2] + bf0[5], stage_range[stage]);
  bf1[3] = clamp_value(bf0[3] + bf0[4], stage_range[stage]);
  bf1[4] = clamp_value(bf0[3] - bf0[4], stage_range[stage]);
  bf1[5] = clamp_value(bf0[2] - bf0[5], stage_range[stage]);
  bf1[6] = clamp_value(bf0[1] - bf0[6], stage_range[stage]);
  bf1[7] = clamp_value(bf0[0] - bf0[7], stage_range[stage]);
}

void av1_idct16_new(const int32_t *input, int32_t *output, int8_t cos_bit,
                    const int8_t *stage_range) {
  assert(output != input);
  const int32_t size = 16;
  const int32_t *cospi = cospi_arr(cos_bit);

  int32_t stage = 0;
  int32_t *bf0, *bf1;
  int32_t step[16];

  // stage 0;

  // stage 1;
  stage++;
  bf1 = output;
  bf1[0] = input[0];
  bf1[1] = input[8];
  bf1[2] = input[4];
  bf1[3] = input[12];
  bf1[4] = input[2];
  bf1[5] = input[10];
  bf1[6] = input[6];
  bf1[7] = input[14];
  bf1[8] = input[1];
  bf1[9] = input[9];
  bf1[10] = input[5];
  bf1[11] = input[13];
  bf1[12] = input[3];
  bf1[13] = input[11];
  bf1[14] = input[7];
  bf1[15] = input[15];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 2
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = bf0[2];
  bf1[3] = bf0[3];
  bf1[4] = bf0[4];
  bf1[5] = bf0[5];
  bf1[6] = bf0[6];
  bf1[7] = bf0[7];
  bf1[8] = half_btf(cospi[60], bf0[8], -cospi[4], bf0[15], cos_bit);
  bf1[9] = half_btf(cospi[28], bf0[9], -cospi[36], bf0[14], cos_bit);
  bf1[10] = half_btf(cospi[44], bf0[10], -cospi[20], bf0[13], cos_bit);
  bf1[11] = half_btf(cospi[12], bf0[11], -cospi[52], bf0[12], cos_bit);
  bf1[12] = half_btf(cospi[52], bf0[11], cospi[12], bf0[12], cos_bit);
  bf1[13] = half_btf(cospi[20], bf0[10], cospi[44], bf0[13], cos_bit);
  bf1[14] = half_btf(cospi[36], bf0[9], cospi[28], bf0[14], cos_bit);
  bf1[15] = half_btf(cospi[4], bf0[8], cospi[60], bf0[15], cos_bit);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 3
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = bf0[2];
  bf1[3] = bf0[3];
  bf1[4] = half_btf(cospi[56], bf0[4], -cospi[8], bf0[7], cos_bit);
  bf1[5] = half_btf(cospi[24], bf0[5], -cospi[40], bf0[6], cos_bit);
  bf1[6] = half_btf(cospi[40], bf0[5], cospi[24], bf0[6], cos_bit);
  bf1[7] = half_btf(cospi[8], bf0[4], cospi[56], bf0[7], cos_bit);
  bf1[8] = clamp_value(bf0[8] + bf0[9], stage_range[stage]);
  bf1[9] = clamp_value(bf0[8] - bf0[9], stage_range[stage]);
  bf1[10] = clamp_value(-bf0[10] + bf0[11], stage_range[stage]);
  bf1[11] = clamp_value(bf0[10] + bf0[11], stage_range[stage]);
  bf1[12] = clamp_value(bf0[12] + bf0[13], stage_range[stage]);
  bf1[13] = clamp_value(bf0[12] - bf0[13], stage_range[stage]);
  bf1[14] = clamp_value(-bf0[14] + bf0[15], stage_range[stage]);
  bf1[15] = clamp_value(bf0[14] + bf0[15], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 4
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = half_btf(cospi[32], bf0[0], cospi[32], bf0[1], cos_bit);
  bf1[1] = half_btf(cospi[32], bf0[0], -cospi[32], bf0[1], cos_bit);
  bf1[2] = half_btf(cospi[48], bf0[2], -cospi[16], bf0[3], cos_bit);
  bf1[3] = half_btf(cospi[16], bf0[2], cospi[48], bf0[3], cos_bit);
  bf1[4] = clamp_value(bf0[4] + bf0[5], stage_range[stage]);
  bf1[5] = clamp_value(bf0[4] - bf0[5], stage_range[stage]);
  bf1[6] = clamp_value(-bf0[6] + bf0[7], stage_range[stage]);
  bf1[7] = clamp_value(bf0[6] + bf0[7], stage_range[stage]);
  bf1[8] = bf0[8];
  bf1[9] = half_btf(-cospi[16], bf0[9], cospi[48], bf0[14], cos_bit);
  bf1[10] = half_btf(-cospi[48], bf0[10], -cospi[16], bf0[13], cos_bit);
  bf1[11] = bf0[11];
  bf1[12] = bf0[12];
  bf1[13] = half_btf(-cospi[16], bf0[10], cospi[48], bf0[13], cos_bit);
  bf1[14] = half_btf(cospi[48], bf0[9], cospi[16], bf0[14], cos_bit);
  bf1[15] = bf0[15];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 5
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = clamp_value(bf0[0] + bf0[3], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[2], stage_range[stage]);
  bf1[2] = clamp_value(bf0[1] - bf0[2], stage_range[stage]);
  bf1[3] = clamp_value(bf0[0] - bf0[3], stage_range[stage]);
  bf1[4] = bf0[4];
  bf1[5] = half_btf(-cospi[32], bf0[5], cospi[32], bf0[6], cos_bit);
  bf1[6] = half_btf(cospi[32], bf0[5], cospi[32], bf0[6], cos_bit);
  bf1[7] = bf0[7];
  bf1[8] = clamp_value(bf0[8] + bf0[11], stage_range[stage]);
  bf1[9] = clamp_value(bf0[9] + bf0[10], stage_range[stage]);
  bf1[10] = clamp_value(bf0[9] - bf0[10], stage_range[stage]);
  bf1[11] = clamp_value(bf0[8] - bf0[11], stage_range[stage]);
  bf1[12] = clamp_value(-bf0[12] + bf0[15], stage_range[stage]);
  bf1[13] = clamp_value(-bf0[13] + bf0[14], stage_range[stage]);
  bf1[14] = clamp_value(bf0[13] + bf0[14], stage_range[stage]);
  bf1[15] = clamp_value(bf0[12] + bf0[15], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 6
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = clamp_value(bf0[0] + bf0[7], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[6], stage_range[stage]);
  bf1[2] = clamp_value(bf0[2] + bf0[5], stage_range[stage]);
  bf1[3] = clamp_value(bf0[3] + bf0[4], stage_range[stage]);
  bf1[4] = clamp_value(bf0[3] - bf0[4], stage_range[stage]);
  bf1[5] = clamp_value(bf0[2] - bf0[5], stage_range[stage]);
  bf1[6] = clamp_value(bf0[1] - bf0[6], stage_range[stage]);
  bf1[7] = clamp_value(bf0[0] - bf0[7], stage_range[stage]);
  bf1[8] = bf0[8];
  bf1[9] = bf0[9];
  bf1[10] = half_btf(-cospi[32], bf0[10], cospi[32], bf0[13], cos_bit);
  bf1[11] = half_btf(-cospi[32], bf0[11], cospi[32], bf0[12], cos_bit);
  bf1[12] = half_btf(cospi[32], bf0[11], cospi[32], bf0[12], cos_bit);
  bf1[13] = half_btf(cospi[32], bf0[10], cospi[32], bf0[13], cos_bit);
  bf1[14] = bf0[14];
  bf1[15] = bf0[15];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 7
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = clamp_value(bf0[0] + bf0[15], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[14], stage_range[stage]);
  bf1[2] = clamp_value(bf0[2] + bf0[13], stage_range[stage]);
  bf1[3] = clamp_value(bf0[3] + bf0[12], stage_range[stage]);
  bf1[4] = clamp_value(bf0[4] + bf0[11], stage_range[stage]);
  bf1[5] = clamp_value(bf0[5] + bf0[10], stage_range[stage]);
  bf1[6] = clamp_value(bf0[6] + bf0[9], stage_range[stage]);
  bf1[7] = clamp_value(bf0[7] + bf0[8], stage_range[stage]);
  bf1[8] = clamp_value(bf0[7] - bf0[8], stage_range[stage]);
  bf1[9] = clamp_value(bf0[6] - bf0[9], stage_range[stage]);
  bf1[10] = clamp_value(bf0[5] - bf0[10], stage_range[stage]);
  bf1[11] = clamp_value(bf0[4] - bf0[11], stage_range[stage]);
  bf1[12] = clamp_value(bf0[3] - bf0[12], stage_range[stage]);
  bf1[13] = clamp_value(bf0[2] - bf0[13], stage_range[stage]);
  bf1[14] = clamp_value(bf0[1] - bf0[14], stage_range[stage]);
  bf1[15] = clamp_value(bf0[0] - bf0[15], stage_range[stage]);
}

void av1_idct32_new(const int32_t *input, int32_t *output, int8_t cos_bit,
                    const int8_t *stage_range) {
  assert(output != input);
  const int32_t size = 32;
  const int32_t *cospi = cospi_arr(cos_bit);

  int32_t stage = 0;
  int32_t *bf0, *bf1;
  int32_t step[32];

  // stage 0;

  // stage 1;
  stage++;
  bf1 = output;
  bf1[0] = input[0];
  bf1[1] = input[16];
  bf1[2] = input[8];
  bf1[3] = input[24];
  bf1[4] = input[4];
  bf1[5] = input[20];
  bf1[6] = input[12];
  bf1[7] = input[28];
  bf1[8] = input[2];
  bf1[9] = input[18];
  bf1[10] = input[10];
  bf1[11] = input[26];
  bf1[12] = input[6];
  bf1[13] = input[22];
  bf1[14] = input[14];
  bf1[15] = input[30];
  bf1[16] = input[1];
  bf1[17] = input[17];
  bf1[18] = input[9];
  bf1[19] = input[25];
  bf1[20] = input[5];
  bf1[21] = input[21];
  bf1[22] = input[13];
  bf1[23] = input[29];
  bf1[24] = input[3];
  bf1[25] = input[19];
  bf1[26] = input[11];
  bf1[27] = input[27];
  bf1[28] = input[7];
  bf1[29] = input[23];
  bf1[30] = input[15];
  bf1[31] = input[31];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 2
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = bf0[2];
  bf1[3] = bf0[3];
  bf1[4] = bf0[4];
  bf1[5] = bf0[5];
  bf1[6] = bf0[6];
  bf1[7] = bf0[7];
  bf1[8] = bf0[8];
  bf1[9] = bf0[9];
  bf1[10] = bf0[10];
  bf1[11] = bf0[11];
  bf1[12] = bf0[12];
  bf1[13] = bf0[13];
  bf1[14] = bf0[14];
  bf1[15] = bf0[15];
  bf1[16] = half_btf(cospi[62], bf0[16], -cospi[2], bf0[31], cos_bit);
  bf1[17] = half_btf(cospi[30], bf0[17], -cospi[34], bf0[30], cos_bit);
  bf1[18] = half_btf(cospi[46], bf0[18], -cospi[18], bf0[29], cos_bit);
  bf1[19] = half_btf(cospi[14], bf0[19], -cospi[50], bf0[28], cos_bit);
  bf1[20] = half_btf(cospi[54], bf0[20], -cospi[10], bf0[27], cos_bit);
  bf1[21] = half_btf(cospi[22], bf0[21], -cospi[42], bf0[26], cos_bit);
  bf1[22] = half_btf(cospi[38], bf0[22], -cospi[26], bf0[25], cos_bit);
  bf1[23] = half_btf(cospi[6], bf0[23], -cospi[58], bf0[24], cos_bit);
  bf1[24] = half_btf(cospi[58], bf0[23], cospi[6], bf0[24], cos_bit);
  bf1[25] = half_btf(cospi[26], bf0[22], cospi[38], bf0[25], cos_bit);
  bf1[26] = half_btf(cospi[42], bf0[21], cospi[22], bf0[26], cos_bit);
  bf1[27] = half_btf(cospi[10], bf0[20], cospi[54], bf0[27], cos_bit);
  bf1[28] = half_btf(cospi[50], bf0[19], cospi[14], bf0[28], cos_bit);
  bf1[29] = half_btf(cospi[18], bf0[18], cospi[46], bf0[29], cos_bit);
  bf1[30] = half_btf(cospi[34], bf0[17], cospi[30], bf0[30], cos_bit);
  bf1[31] = half_btf(cospi[2], bf0[16], cospi[62], bf0[31], cos_bit);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 3
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = bf0[2];
  bf1[3] = bf0[3];
  bf1[4] = bf0[4];
  bf1[5] = bf0[5];
  bf1[6] = bf0[6];
  bf1[7] = bf0[7];
  bf1[8] = half_btf(cospi[60], bf0[8], -cospi[4], bf0[15], cos_bit);
  bf1[9] = half_btf(cospi[28], bf0[9], -cospi[36], bf0[14], cos_bit);
  bf1[10] = half_btf(cospi[44], bf0[10], -cospi[20], bf0[13], cos_bit);
  bf1[11] = half_btf(cospi[12], bf0[11], -cospi[52], bf0[12], cos_bit);
  bf1[12] = half_btf(cospi[52], bf0[11], cospi[12], bf0[12], cos_bit);
  bf1[13] = half_btf(cospi[20], bf0[10], cospi[44], bf0[13], cos_bit);
  bf1[14] = half_btf(cospi[36], bf0[9], cospi[28], bf0[14], cos_bit);
  bf1[15] = half_btf(cospi[4], bf0[8], cospi[60], bf0[15], cos_bit);
  bf1[16] = clamp_value(bf0[16] + bf0[17], stage_range[stage]);
  bf1[17] = clamp_value(bf0[16] - bf0[17], stage_range[stage]);
  bf1[18] = clamp_value(-bf0[18] + bf0[19], stage_range[stage]);
  bf1[19] = clamp_value(bf0[18] + bf0[19], stage_range[stage]);
  bf1[20] = clamp_value(bf0[20] + bf0[21], stage_range[stage]);
  bf1[21] = clamp_value(bf0[20] - bf0[21], stage_range[stage]);
  bf1[22] = clamp_value(-bf0[22] + bf0[23], stage_range[stage]);
  bf1[23] = clamp_value(bf0[22] + bf0[23], stage_range[stage]);
  bf1[24] = clamp_value(bf0[24] + bf0[25], stage_range[stage]);
  bf1[25] = clamp_value(bf0[24] - bf0[25], stage_range[stage]);
  bf1[26] = clamp_value(-bf0[26] + bf0[27], stage_range[stage]);
  bf1[27] = clamp_value(bf0[26] + bf0[27], stage_range[stage]);
  bf1[28] = clamp_value(bf0[28] + bf0[29], stage_range[stage]);
  bf1[29] = clamp_value(bf0[28] - bf0[29], stage_range[stage]);
  bf1[30] = clamp_value(-bf0[30] + bf0[31], stage_range[stage]);
  bf1[31] = clamp_value(bf0[30] + bf0[31], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 4
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = bf0[2];
  bf1[3] = bf0[3];
  bf1[4] = half_btf(cospi[56], bf0[4], -cospi[8], bf0[7], cos_bit);
  bf1[5] = half_btf(cospi[24], bf0[5], -cospi[40], bf0[6], cos_bit);
  bf1[6] = half_btf(cospi[40], bf0[5], cospi[24], bf0[6], cos_bit);
  bf1[7] = half_btf(cospi[8], bf0[4], cospi[56], bf0[7], cos_bit);
  bf1[8] = clamp_value(bf0[8] + bf0[9], stage_range[stage]);
  bf1[9] = clamp_value(bf0[8] - bf0[9], stage_range[stage]);
  bf1[10] = clamp_value(-bf0[10] + bf0[11], stage_range[stage]);
  bf1[11] = clamp_value(bf0[10] + bf0[11], stage_range[stage]);
  bf1[12] = clamp_value(bf0[12] + bf0[13], stage_range[stage]);
  bf1[13] = clamp_value(bf0[12] - bf0[13], stage_range[stage]);
  bf1[14] = clamp_value(-bf0[14] + bf0[15], stage_range[stage]);
  bf1[15] = clamp_value(bf0[14] + bf0[15], stage_range[stage]);
  bf1[16] = bf0[16];
  bf1[17] = half_btf(-cospi[8], bf0[17], cospi[56], bf0[30], cos_bit);
  bf1[18] = half_btf(-cospi[56], bf0[18], -cospi[8], bf0[29], cos_bit);
  bf1[19] = bf0[19];
  bf1[20] = bf0[20];
  bf1[21] = half_btf(-cospi[40], bf0[21], cospi[24], bf0[26], cos_bit);
  bf1[22] = half_btf(-cospi[24], bf0[22], -cospi[40], bf0[25], cos_bit);
  bf1[23] = bf0[23];
  bf1[24] = bf0[24];
  bf1[25] = half_btf(-cospi[40], bf0[22], cospi[24], bf0[25], cos_bit);
  bf1[26] = half_btf(cospi[24], bf0[21], cospi[40], bf0[26], cos_bit);
  bf1[27] = bf0[27];
  bf1[28] = bf0[28];
  bf1[29] = half_btf(-cospi[8], bf0[18], cospi[56], bf0[29], cos_bit);
  bf1[30] = half_btf(cospi[56], bf0[17], cospi[8], bf0[30], cos_bit);
  bf1[31] = bf0[31];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 5
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = half_btf(cospi[32], bf0[0], cospi[32], bf0[1], cos_bit);
  bf1[1] = half_btf(cospi[32], bf0[0], -cospi[32], bf0[1], cos_bit);
  bf1[2] = half_btf(cospi[48], bf0[2], -cospi[16], bf0[3], cos_bit);
  bf1[3] = half_btf(cospi[16], bf0[2], cospi[48], bf0[3], cos_bit);
  bf1[4] = clamp_value(bf0[4] + bf0[5], stage_range[stage]);
  bf1[5] = clamp_value(bf0[4] - bf0[5], stage_range[stage]);
  bf1[6] = clamp_value(-bf0[6] + bf0[7], stage_range[stage]);
  bf1[7] = clamp_value(bf0[6] + bf0[7], stage_range[stage]);
  bf1[8] = bf0[8];
  bf1[9] = half_btf(-cospi[16], bf0[9], cospi[48], bf0[14], cos_bit);
  bf1[10] = half_btf(-cospi[48], bf0[10], -cospi[16], bf0[13], cos_bit);
  bf1[11] = bf0[11];
  bf1[12] = bf0[12];
  bf1[13] = half_btf(-cospi[16], bf0[10], cospi[48], bf0[13], cos_bit);
  bf1[14] = half_btf(cospi[48], bf0[9], cospi[16], bf0[14], cos_bit);
  bf1[15] = bf0[15];
  bf1[16] = clamp_value(bf0[16] + bf0[19], stage_range[stage]);
  bf1[17] = clamp_value(bf0[17] + bf0[18], stage_range[stage]);
  bf1[18] = clamp_value(bf0[17] - bf0[18], stage_range[stage]);
  bf1[19] = clamp_value(bf0[16] - bf0[19], stage_range[stage]);
  bf1[20] = clamp_value(-bf0[20] + bf0[23], stage_range[stage]);
  bf1[21] = clamp_value(-bf0[21] + bf0[22], stage_range[stage]);
  bf1[22] = clamp_value(bf0[21] + bf0[22], stage_range[stage]);
  bf1[23] = clamp_value(bf0[20] + bf0[23], stage_range[stage]);
  bf1[24] = clamp_value(bf0[24] + bf0[27], stage_range[stage]);
  bf1[25] = clamp_value(bf0[25] + bf0[26], stage_range[stage]);
  bf1[26] = clamp_value(bf0[25] - bf0[26], stage_range[stage]);
  bf1[27] = clamp_value(bf0[24] - bf0[27], stage_range[stage]);
  bf1[28] = clamp_value(-bf0[28] + bf0[31], stage_range[stage]);
  bf1[29] = clamp_value(-bf0[29] + bf0[30], stage_range[stage]);
  bf1[30] = clamp_value(bf0[29] + bf0[30], stage_range[stage]);
  bf1[31] = clamp_value(bf0[28] + bf0[31], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 6
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = clamp_value(bf0[0] + bf0[3], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[2], stage_range[stage]);
  bf1[2] = clamp_value(bf0[1] - bf0[2], stage_range[stage]);
  bf1[3] = clamp_value(bf0[0] - bf0[3], stage_range[stage]);
  bf1[4] = bf0[4];
  bf1[5] = half_btf(-cospi[32], bf0[5], cospi[32], bf0[6], cos_bit);
  bf1[6] = half_btf(cospi[32], bf0[5], cospi[32], bf0[6], cos_bit);
  bf1[7] = bf0[7];
  bf1[8] = clamp_value(bf0[8] + bf0[11], stage_range[stage]);
  bf1[9] = clamp_value(bf0[9] + bf0[10], stage_range[stage]);
  bf1[10] = clamp_value(bf0[9] - bf0[10], stage_range[stage]);
  bf1[11] = clamp_value(bf0[8] - bf0[11], stage_range[stage]);
  bf1[12] = clamp_value(-bf0[12] + bf0[15], stage_range[stage]);
  bf1[13] = clamp_value(-bf0[13] + bf0[14], stage_range[stage]);
  bf1[14] = clamp_value(bf0[13] + bf0[14], stage_range[stage]);
  bf1[15] = clamp_value(bf0[12] + bf0[15], stage_range[stage]);
  bf1[16] = bf0[16];
  bf1[17] = bf0[17];
  bf1[18] = half_btf(-cospi[16], bf0[18], cospi[48], bf0[29], cos_bit);
  bf1[19] = half_btf(-cospi[16], bf0[19], cospi[48], bf0[28], cos_bit);
  bf1[20] = half_btf(-cospi[48], bf0[20], -cospi[16], bf0[27], cos_bit);
  bf1[21] = half_btf(-cospi[48], bf0[21], -cospi[16], bf0[26], cos_bit);
  bf1[22] = bf0[22];
  bf1[23] = bf0[23];
  bf1[24] = bf0[24];
  bf1[25] = bf0[25];
  bf1[26] = half_btf(-cospi[16], bf0[21], cospi[48], bf0[26], cos_bit);
  bf1[27] = half_btf(-cospi[16], bf0[20], cospi[48], bf0[27], cos_bit);
  bf1[28] = half_btf(cospi[48], bf0[19], cospi[16], bf0[28], cos_bit);
  bf1[29] = half_btf(cospi[48], bf0[18], cospi[16], bf0[29], cos_bit);
  bf1[30] = bf0[30];
  bf1[31] = bf0[31];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 7
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = clamp_value(bf0[0] + bf0[7], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[6], stage_range[stage]);
  bf1[2] = clamp_value(bf0[2] + bf0[5], stage_range[stage]);
  bf1[3] = clamp_value(bf0[3] + bf0[4], stage_range[stage]);
  bf1[4] = clamp_value(bf0[3] - bf0[4], stage_range[stage]);
  bf1[5] = clamp_value(bf0[2] - bf0[5], stage_range[stage]);
  bf1[6] = clamp_value(bf0[1] - bf0[6], stage_range[stage]);
  bf1[7] = clamp_value(bf0[0] - bf0[7], stage_range[stage]);
  bf1[8] = bf0[8];
  bf1[9] = bf0[9];
  bf1[10] = half_btf(-cospi[32], bf0[10], cospi[32], bf0[13], cos_bit);
  bf1[11] = half_btf(-cospi[32], bf0[11], cospi[32], bf0[12], cos_bit);
  bf1[12] = half_btf(cospi[32], bf0[11], cospi[32], bf0[12], cos_bit);
  bf1[13] = half_btf(cospi[32], bf0[10], cospi[32], bf0[13], cos_bit);
  bf1[14] = bf0[14];
  bf1[15] = bf0[15];
  bf1[16] = clamp_value(bf0[16] + bf0[23], stage_range[stage]);
  bf1[17] = clamp_value(bf0[17] + bf0[22], stage_range[stage]);
  bf1[18] = clamp_value(bf0[18] + bf0[21], stage_range[stage]);
  bf1[19] = clamp_value(bf0[19] + bf0[20], stage_range[stage]);
  bf1[20] = clamp_value(bf0[19] - bf0[20], stage_range[stage]);
  bf1[21] = clamp_value(bf0[18] - bf0[21], stage_range[stage]);
  bf1[22] = clamp_value(bf0[17] - bf0[22], stage_range[stage]);
  bf1[23] = clamp_value(bf0[16] - bf0[23], stage_range[stage]);
  bf1[24] = clamp_value(-bf0[24] + bf0[31], stage_range[stage]);
  bf1[25] = clamp_value(-bf0[25] + bf0[30], stage_range[stage]);
  bf1[26] = clamp_value(-bf0[26] + bf0[29], stage_range[stage]);
  bf1[27] = clamp_value(-bf0[27] + bf0[28], stage_range[stage]);
  bf1[28] = clamp_value(bf0[27] + bf0[28], stage_range[stage]);
  bf1[29] = clamp_value(bf0[26] + bf0[29], stage_range[stage]);
  bf1[30] = clamp_value(bf0[25] + bf0[30], stage_range[stage]);
  bf1[31] = clamp_value(bf0[24] + bf0[31], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 8
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = clamp_value(bf0[0] + bf0[15], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[14], stage_range[stage]);
  bf1[2] = clamp_value(bf0[2] + bf0[13], stage_range[stage]);
  bf1[3] = clamp_value(bf0[3] + bf0[12], stage_range[stage]);
  bf1[4] = clamp_value(bf0[4] + bf0[11], stage_range[stage]);
  bf1[5] = clamp_value(bf0[5] + bf0[10], stage_range[stage]);
  bf1[6] = clamp_value(bf0[6] + bf0[9], stage_range[stage]);
  bf1[7] = clamp_value(bf0[7] + bf0[8], stage_range[stage]);
  bf1[8] = clamp_value(bf0[7] - bf0[8], stage_range[stage]);
  bf1[9] = clamp_value(bf0[6] - bf0[9], stage_range[stage]);
  bf1[10] = clamp_value(bf0[5] - bf0[10], stage_range[stage]);
  bf1[11] = clamp_value(bf0[4] - bf0[11], stage_range[stage]);
  bf1[12] = clamp_value(bf0[3] - bf0[12], stage_range[stage]);
  bf1[13] = clamp_value(bf0[2] - bf0[13], stage_range[stage]);
  bf1[14] = clamp_value(bf0[1] - bf0[14], stage_range[stage]);
  bf1[15] = clamp_value(bf0[0] - bf0[15], stage_range[stage]);
  bf1[16] = bf0[16];
  bf1[17] = bf0[17];
  bf1[18] = bf0[18];
  bf1[19] = bf0[19];
  bf1[20] = half_btf(-cospi[32], bf0[20], cospi[32], bf0[27], cos_bit);
  bf1[21] = half_btf(-cospi[32], bf0[21], cospi[32], bf0[26], cos_bit);
  bf1[22] = half_btf(-cospi[32], bf0[22], cospi[32], bf0[25], cos_bit);
  bf1[23] = half_btf(-cospi[32], bf0[23], cospi[32], bf0[24], cos_bit);
  bf1[24] = half_btf(cospi[32], bf0[23], cospi[32], bf0[24], cos_bit);
  bf1[25] = half_btf(cospi[32], bf0[22], cospi[32], bf0[25], cos_bit);
  bf1[26] = half_btf(cospi[32], bf0[21], cospi[32], bf0[26], cos_bit);
  bf1[27] = half_btf(cospi[32], bf0[20], cospi[32], bf0[27], cos_bit);
  bf1[28] = bf0[28];
  bf1[29] = bf0[29];
  bf1[30] = bf0[30];
  bf1[31] = bf0[31];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 9
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = clamp_value(bf0[0] + bf0[31], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[30], stage_range[stage]);
  bf1[2] = clamp_value(bf0[2] + bf0[29], stage_range[stage]);
  bf1[3] = clamp_value(bf0[3] + bf0[28], stage_range[stage]);
  bf1[4] = clamp_value(bf0[4] + bf0[27], stage_range[stage]);
  bf1[5] = clamp_value(bf0[5] + bf0[26], stage_range[stage]);
  bf1[6] = clamp_value(bf0[6] + bf0[25], stage_range[stage]);
  bf1[7] = clamp_value(bf0[7] + bf0[24], stage_range[stage]);
  bf1[8] = clamp_value(bf0[8] + bf0[23], stage_range[stage]);
  bf1[9] = clamp_value(bf0[9] + bf0[22], stage_range[stage]);
  bf1[10] = clamp_value(bf0[10] + bf0[21], stage_range[stage]);
  bf1[11] = clamp_value(bf0[11] + bf0[20], stage_range[stage]);
  bf1[12] = clamp_value(bf0[12] + bf0[19], stage_range[stage]);
  bf1[13] = clamp_value(bf0[13] + bf0[18], stage_range[stage]);
  bf1[14] = clamp_value(bf0[14] + bf0[17], stage_range[stage]);
  bf1[15] = clamp_value(bf0[15] + bf0[16], stage_range[stage]);
  bf1[16] = clamp_value(bf0[15] - bf0[16], stage_range[stage]);
  bf1[17] = clamp_value(bf0[14] - bf0[17], stage_range[stage]);
  bf1[18] = clamp_value(bf0[13] - bf0[18], stage_range[stage]);
  bf1[19] = clamp_value(bf0[12] - bf0[19], stage_range[stage]);
  bf1[20] = clamp_value(bf0[11] - bf0[20], stage_range[stage]);
  bf1[21] = clamp_value(bf0[10] - bf0[21], stage_range[stage]);
  bf1[22] = clamp_value(bf0[9] - bf0[22], stage_range[stage]);
  bf1[23] = clamp_value(bf0[8] - bf0[23], stage_range[stage]);
  bf1[24] = clamp_value(bf0[7] - bf0[24], stage_range[stage]);
  bf1[25] = clamp_value(bf0[6] - bf0[25], stage_range[stage]);
  bf1[26] = clamp_value(bf0[5] - bf0[26], stage_range[stage]);
  bf1[27] = clamp_value(bf0[4] - bf0[27], stage_range[stage]);
  bf1[28] = clamp_value(bf0[3] - bf0[28], stage_range[stage]);
  bf1[29] = clamp_value(bf0[2] - bf0[29], stage_range[stage]);
  bf1[30] = clamp_value(bf0[1] - bf0[30], stage_range[stage]);
  bf1[31] = clamp_value(bf0[0] - bf0[31], stage_range[stage]);
}

#if CONFIG_MODE_DEP_INTRA_TX || CONFIG_MODE_DEP_INTER_TX
void av1_imdt4(const int32_t *input, int32_t *output, int8_t cos_bit,
               const int8_t *side_info) {
  // The argument side_info is included in a way that the function has the same
  // signature as other 1D transforms. Here, it is used to carry side
  // information such as prediction mode
  (void)cos_bit;
  int32_t s[4] = { 0 };
  const int32_t *mdt = get_mdt_from_mode_4(side_info[MAX_TXFM_STAGE_NUM]);
  for (int i = 0; i < 4; i++)
    for (int j = 0; j < 4; j++) s[j] += mdt[i * 4 + j] * input[i];

  for (int i = 0; i < 4; i++) output[i] = round_shift(s[i], 10);
}

void av1_imdt8(const int32_t *input, int32_t *output, int8_t cos_bit,
               const int8_t *side_info) {
  (void)cos_bit;
  int32_t s[8] = { 0 };
  const int32_t *mdt = get_mdt_from_mode_8(side_info[MAX_TXFM_STAGE_NUM]);
  for (int i = 0; i < 8; i++)
    for (int j = 0; j < 8; j++) s[j] += mdt[i * 8 + j] * input[i];

  for (int i = 0; i < 8; i++) output[i] = round_shift(s[i], 10);
}

void av1_imdt16(const int32_t *input, int32_t *output, int8_t cos_bit,
                const int8_t *side_info) {
  (void)cos_bit;
  (void)side_info;  // This transform is not mode-dependent
  int32_t s[16] = { 0 };
  const int32_t *mdt = get_mdt_from_mode_16(side_info[MAX_TXFM_STAGE_NUM]);
  for (int i = 0; i < 16; i++)
    for (int j = 0; j < 16; j++) s[j] += mdt[i * 16 + j] * input[i];

  for (int i = 0; i < 16; i++) output[i] = round_shift(s[i], 10);
}
#endif  // CONFIG_MODE_DEP_INTRA_TX || CONFIG_MODE_DEP_INTER_TX

#if CONFIG_LGT
void av1_iadst4_lgt_intra(const int32_t *input, int32_t *output, int8_t cos_bit,
                          const int8_t *stage_range) {
  (void)cos_bit;
  (void)stage_range;
  for (int32_t i = 0; i < 4; i++) {
    int32_t sum = 0;
    for (int32_t j = 0; j < 4; j++) {
      sum += input[j] * lgt_intra_4x4[j * 4 + i];
    }
    output[i] = ROUND_POWER_OF_TWO_SIGNED(sum, LGT_PREC_BITS);
  }
}

void av1_iadst4_lgt_inter(const int32_t *input, int32_t *output, int8_t cos_bit,
                          const int8_t *stage_range) {
  (void)cos_bit;
  (void)stage_range;
  for (int32_t i = 0; i < 4; i++) {
    int32_t sum = 0;
    for (int32_t j = 0; j < 4; j++) {
      sum += input[j] * lgt_inter_4x4[j * 4 + i];
    }
    output[i] = ROUND_POWER_OF_TWO_SIGNED(sum, LGT_PREC_BITS);
  }
}
#endif  // CONFIG_LGT

void av1_iadst4_new(const int32_t *input, int32_t *output, int8_t cos_bit,
                    const int8_t *stage_range) {
  int bit = cos_bit;
  const int32_t *sinpi = sinpi_arr(bit);
  int32_t s0, s1, s2, s3, s4, s5, s6, s7;

  int32_t x0 = input[0];
  int32_t x1 = input[1];
  int32_t x2 = input[2];
  int32_t x3 = input[3];

  if (!(x0 | x1 | x2 | x3)) {
    output[0] = output[1] = output[2] = output[3] = 0;
    return;
  }

  assert(sinpi[1] + sinpi[2] == sinpi[4]);

  // stage 1
  s0 = range_check_value(sinpi[1] * x0, stage_range[1] + bit);
  s1 = range_check_value(sinpi[2] * x0, stage_range[1] + bit);
  s2 = range_check_value(sinpi[3] * x1, stage_range[1] + bit);
  s3 = range_check_value(sinpi[4] * x2, stage_range[1] + bit);
  s4 = range_check_value(sinpi[1] * x2, stage_range[1] + bit);
  s5 = range_check_value(sinpi[2] * x3, stage_range[1] + bit);
  s6 = range_check_value(sinpi[4] * x3, stage_range[1] + bit);

  // stage 2
  // NOTICE: (x0 - x2) here may use one extra bit compared to the
  // opt_range_row/col specified in av1_gen_inv_stage_range()
  s7 = range_check_value((x0 - x2) + x3, stage_range[2]);

  // stage 3
  s0 = range_check_value(s0 + s3, stage_range[3] + bit);
  s1 = range_check_value(s1 - s4, stage_range[3] + bit);
  s3 = range_check_value(s2, stage_range[3] + bit);
  s2 = range_check_value(sinpi[3] * s7, stage_range[3] + bit);

  // stage 4
  s0 = range_check_value(s0 + s5, stage_range[4] + bit);
  s1 = range_check_value(s1 - s6, stage_range[4] + bit);

  // stage 5
  x0 = range_check_value(s0 + s3, stage_range[5] + bit);
  x1 = range_check_value(s1 + s3, stage_range[5] + bit);
  x2 = range_check_value(s2, stage_range[5] + bit);
  x3 = range_check_value(s0 + s1, stage_range[5] + bit);

  // stage 6
  x3 = range_check_value(x3 - s3, stage_range[6] + bit);

  output[0] = round_shift(x0, bit);
  output[1] = round_shift(x1, bit);
  output[2] = round_shift(x2, bit);
  output[3] = round_shift(x3, bit);
}

#if CONFIG_LGT
void av1_iadst8_lgt_intra(const int32_t *input, int32_t *output, int8_t cos_bit,
                          const int8_t *stage_range) {
  (void)cos_bit;
  (void)stage_range;
  for (int32_t i = 0; i < 8; i++) {
    int32_t sum = 0;
    for (int32_t j = 0; j < 8; j++) {
      sum += input[j] * lgt_intra_8x8[j * 8 + i];
    }
    output[i] = ROUND_POWER_OF_TWO_SIGNED(sum, LGT_PREC_BITS);
  }
}

void av1_iadst8_lgt_inter(const int32_t *input, int32_t *output, int8_t cos_bit,
                          const int8_t *stage_range) {
  (void)cos_bit;
  (void)stage_range;
  for (int32_t i = 0; i < 8; i++) {
    int32_t sum = 0;
    for (int32_t j = 0; j < 8; j++) {
      sum += input[j] * lgt_inter_8x8[j * 8 + i];
    }
    output[i] = ROUND_POWER_OF_TWO_SIGNED(sum, LGT_PREC_BITS);
  }
}
#endif  // CONFIG_LGT

void av1_iadst8_new(const int32_t *input, int32_t *output, int8_t cos_bit,
                    const int8_t *stage_range) {
  assert(output != input);
  const int32_t size = 8;
  const int32_t *cospi = cospi_arr(cos_bit);

  int32_t stage = 0;
  int32_t *bf0, *bf1;
  int32_t step[8];

  // stage 0;

  // stage 1;
  stage++;
  bf1 = output;
  bf1[0] = input[7];
  bf1[1] = input[0];
  bf1[2] = input[5];
  bf1[3] = input[2];
  bf1[4] = input[3];
  bf1[5] = input[4];
  bf1[6] = input[1];
  bf1[7] = input[6];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 2
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = half_btf(cospi[4], bf0[0], cospi[60], bf0[1], cos_bit);
  bf1[1] = half_btf(cospi[60], bf0[0], -cospi[4], bf0[1], cos_bit);
  bf1[2] = half_btf(cospi[20], bf0[2], cospi[44], bf0[3], cos_bit);
  bf1[3] = half_btf(cospi[44], bf0[2], -cospi[20], bf0[3], cos_bit);
  bf1[4] = half_btf(cospi[36], bf0[4], cospi[28], bf0[5], cos_bit);
  bf1[5] = half_btf(cospi[28], bf0[4], -cospi[36], bf0[5], cos_bit);
  bf1[6] = half_btf(cospi[52], bf0[6], cospi[12], bf0[7], cos_bit);
  bf1[7] = half_btf(cospi[12], bf0[6], -cospi[52], bf0[7], cos_bit);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 3
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = clamp_value(bf0[0] + bf0[4], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[5], stage_range[stage]);
  bf1[2] = clamp_value(bf0[2] + bf0[6], stage_range[stage]);
  bf1[3] = clamp_value(bf0[3] + bf0[7], stage_range[stage]);
  bf1[4] = clamp_value(bf0[0] - bf0[4], stage_range[stage]);
  bf1[5] = clamp_value(bf0[1] - bf0[5], stage_range[stage]);
  bf1[6] = clamp_value(bf0[2] - bf0[6], stage_range[stage]);
  bf1[7] = clamp_value(bf0[3] - bf0[7], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 4
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = bf0[2];
  bf1[3] = bf0[3];
  bf1[4] = half_btf(cospi[16], bf0[4], cospi[48], bf0[5], cos_bit);
  bf1[5] = half_btf(cospi[48], bf0[4], -cospi[16], bf0[5], cos_bit);
  bf1[6] = half_btf(-cospi[48], bf0[6], cospi[16], bf0[7], cos_bit);
  bf1[7] = half_btf(cospi[16], bf0[6], cospi[48], bf0[7], cos_bit);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 5
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = clamp_value(bf0[0] + bf0[2], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[3], stage_range[stage]);
  bf1[2] = clamp_value(bf0[0] - bf0[2], stage_range[stage]);
  bf1[3] = clamp_value(bf0[1] - bf0[3], stage_range[stage]);
  bf1[4] = clamp_value(bf0[4] + bf0[6], stage_range[stage]);
  bf1[5] = clamp_value(bf0[5] + bf0[7], stage_range[stage]);
  bf1[6] = clamp_value(bf0[4] - bf0[6], stage_range[stage]);
  bf1[7] = clamp_value(bf0[5] - bf0[7], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 6
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = half_btf(cospi[32], bf0[2], cospi[32], bf0[3], cos_bit);
  bf1[3] = half_btf(cospi[32], bf0[2], -cospi[32], bf0[3], cos_bit);
  bf1[4] = bf0[4];
  bf1[5] = bf0[5];
  bf1[6] = half_btf(cospi[32], bf0[6], cospi[32], bf0[7], cos_bit);
  bf1[7] = half_btf(cospi[32], bf0[6], -cospi[32], bf0[7], cos_bit);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 7
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = bf0[0];
  bf1[1] = -bf0[4];
  bf1[2] = bf0[6];
  bf1[3] = -bf0[2];
  bf1[4] = bf0[3];
  bf1[5] = -bf0[7];
  bf1[6] = bf0[5];
  bf1[7] = -bf0[1];
}

#if CONFIG_LGT
void av1_iadst16_lgt_intra(const int32_t *input, int32_t *output,
                           int8_t cos_bit, const int8_t *stage_range) {
  (void)cos_bit;
  (void)stage_range;
  for (int32_t i = 0; i < 16; i++) {
    int32_t sum = 0;
    for (int32_t j = 0; j < 16; j++) {
      sum += input[j] * lgt_intra_16x16[j * 16 + i];
    }
    output[i] = ROUND_POWER_OF_TWO_SIGNED(sum, LGT_PREC_BITS);
  }
}

void av1_iadst16_lgt_inter(const int32_t *input, int32_t *output,
                           int8_t cos_bit, const int8_t *stage_range) {
  (void)cos_bit;
  (void)stage_range;
  for (int32_t i = 0; i < 16; i++) {
    int32_t sum = 0;
    for (int32_t j = 0; j < 16; j++) {
      sum += input[j] * lgt_inter_16x16[j * 16 + i];
    }
    output[i] = ROUND_POWER_OF_TWO_SIGNED(sum, LGT_PREC_BITS);
  }
}
#endif  // CONFIG_LGT

void av1_iadst16_new(const int32_t *input, int32_t *output, int8_t cos_bit,
                     const int8_t *stage_range) {
  assert(output != input);
#if CONFIG_DST7_16X16
  (void)cos_bit;
  (void)stage_range;
  for (int32_t i = 0; i < 16; i++) {
    int32_t sum = 0;
    for (int32_t j = 0; j < 16; j++) {
      sum += input[j] * dst7_16x16[j][i];
    }
    output[i] = (sum + 64) >> 7;
  }
#else
  const int32_t size = 16;
  const int32_t *cospi = cospi_arr(cos_bit);

  int32_t stage = 0;
  int32_t *bf0, *bf1;
  int32_t step[16];

  // stage 0;

  // stage 1;
  stage++;
  bf1 = output;
  bf1[0] = input[15];
  bf1[1] = input[0];
  bf1[2] = input[13];
  bf1[3] = input[2];
  bf1[4] = input[11];
  bf1[5] = input[4];
  bf1[6] = input[9];
  bf1[7] = input[6];
  bf1[8] = input[7];
  bf1[9] = input[8];
  bf1[10] = input[5];
  bf1[11] = input[10];
  bf1[12] = input[3];
  bf1[13] = input[12];
  bf1[14] = input[1];
  bf1[15] = input[14];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 2
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = half_btf(cospi[2], bf0[0], cospi[62], bf0[1], cos_bit);
  bf1[1] = half_btf(cospi[62], bf0[0], -cospi[2], bf0[1], cos_bit);
  bf1[2] = half_btf(cospi[10], bf0[2], cospi[54], bf0[3], cos_bit);
  bf1[3] = half_btf(cospi[54], bf0[2], -cospi[10], bf0[3], cos_bit);
  bf1[4] = half_btf(cospi[18], bf0[4], cospi[46], bf0[5], cos_bit);
  bf1[5] = half_btf(cospi[46], bf0[4], -cospi[18], bf0[5], cos_bit);
  bf1[6] = half_btf(cospi[26], bf0[6], cospi[38], bf0[7], cos_bit);
  bf1[7] = half_btf(cospi[38], bf0[6], -cospi[26], bf0[7], cos_bit);
  bf1[8] = half_btf(cospi[34], bf0[8], cospi[30], bf0[9], cos_bit);
  bf1[9] = half_btf(cospi[30], bf0[8], -cospi[34], bf0[9], cos_bit);
  bf1[10] = half_btf(cospi[42], bf0[10], cospi[22], bf0[11], cos_bit);
  bf1[11] = half_btf(cospi[22], bf0[10], -cospi[42], bf0[11], cos_bit);
  bf1[12] = half_btf(cospi[50], bf0[12], cospi[14], bf0[13], cos_bit);
  bf1[13] = half_btf(cospi[14], bf0[12], -cospi[50], bf0[13], cos_bit);
  bf1[14] = half_btf(cospi[58], bf0[14], cospi[6], bf0[15], cos_bit);
  bf1[15] = half_btf(cospi[6], bf0[14], -cospi[58], bf0[15], cos_bit);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 3
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = clamp_value(bf0[0] + bf0[8], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[9], stage_range[stage]);
  bf1[2] = clamp_value(bf0[2] + bf0[10], stage_range[stage]);
  bf1[3] = clamp_value(bf0[3] + bf0[11], stage_range[stage]);
  bf1[4] = clamp_value(bf0[4] + bf0[12], stage_range[stage]);
  bf1[5] = clamp_value(bf0[5] + bf0[13], stage_range[stage]);
  bf1[6] = clamp_value(bf0[6] + bf0[14], stage_range[stage]);
  bf1[7] = clamp_value(bf0[7] + bf0[15], stage_range[stage]);
  bf1[8] = clamp_value(bf0[0] - bf0[8], stage_range[stage]);
  bf1[9] = clamp_value(bf0[1] - bf0[9], stage_range[stage]);
  bf1[10] = clamp_value(bf0[2] - bf0[10], stage_range[stage]);
  bf1[11] = clamp_value(bf0[3] - bf0[11], stage_range[stage]);
  bf1[12] = clamp_value(bf0[4] - bf0[12], stage_range[stage]);
  bf1[13] = clamp_value(bf0[5] - bf0[13], stage_range[stage]);
  bf1[14] = clamp_value(bf0[6] - bf0[14], stage_range[stage]);
  bf1[15] = clamp_value(bf0[7] - bf0[15], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 4
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = bf0[2];
  bf1[3] = bf0[3];
  bf1[4] = bf0[4];
  bf1[5] = bf0[5];
  bf1[6] = bf0[6];
  bf1[7] = bf0[7];
  bf1[8] = half_btf(cospi[8], bf0[8], cospi[56], bf0[9], cos_bit);
  bf1[9] = half_btf(cospi[56], bf0[8], -cospi[8], bf0[9], cos_bit);
  bf1[10] = half_btf(cospi[40], bf0[10], cospi[24], bf0[11], cos_bit);
  bf1[11] = half_btf(cospi[24], bf0[10], -cospi[40], bf0[11], cos_bit);
  bf1[12] = half_btf(-cospi[56], bf0[12], cospi[8], bf0[13], cos_bit);
  bf1[13] = half_btf(cospi[8], bf0[12], cospi[56], bf0[13], cos_bit);
  bf1[14] = half_btf(-cospi[24], bf0[14], cospi[40], bf0[15], cos_bit);
  bf1[15] = half_btf(cospi[40], bf0[14], cospi[24], bf0[15], cos_bit);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 5
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = clamp_value(bf0[0] + bf0[4], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[5], stage_range[stage]);
  bf1[2] = clamp_value(bf0[2] + bf0[6], stage_range[stage]);
  bf1[3] = clamp_value(bf0[3] + bf0[7], stage_range[stage]);
  bf1[4] = clamp_value(bf0[0] - bf0[4], stage_range[stage]);
  bf1[5] = clamp_value(bf0[1] - bf0[5], stage_range[stage]);
  bf1[6] = clamp_value(bf0[2] - bf0[6], stage_range[stage]);
  bf1[7] = clamp_value(bf0[3] - bf0[7], stage_range[stage]);
  bf1[8] = clamp_value(bf0[8] + bf0[12], stage_range[stage]);
  bf1[9] = clamp_value(bf0[9] + bf0[13], stage_range[stage]);
  bf1[10] = clamp_value(bf0[10] + bf0[14], stage_range[stage]);
  bf1[11] = clamp_value(bf0[11] + bf0[15], stage_range[stage]);
  bf1[12] = clamp_value(bf0[8] - bf0[12], stage_range[stage]);
  bf1[13] = clamp_value(bf0[9] - bf0[13], stage_range[stage]);
  bf1[14] = clamp_value(bf0[10] - bf0[14], stage_range[stage]);
  bf1[15] = clamp_value(bf0[11] - bf0[15], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 6
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = bf0[2];
  bf1[3] = bf0[3];
  bf1[4] = half_btf(cospi[16], bf0[4], cospi[48], bf0[5], cos_bit);
  bf1[5] = half_btf(cospi[48], bf0[4], -cospi[16], bf0[5], cos_bit);
  bf1[6] = half_btf(-cospi[48], bf0[6], cospi[16], bf0[7], cos_bit);
  bf1[7] = half_btf(cospi[16], bf0[6], cospi[48], bf0[7], cos_bit);
  bf1[8] = bf0[8];
  bf1[9] = bf0[9];
  bf1[10] = bf0[10];
  bf1[11] = bf0[11];
  bf1[12] = half_btf(cospi[16], bf0[12], cospi[48], bf0[13], cos_bit);
  bf1[13] = half_btf(cospi[48], bf0[12], -cospi[16], bf0[13], cos_bit);
  bf1[14] = half_btf(-cospi[48], bf0[14], cospi[16], bf0[15], cos_bit);
  bf1[15] = half_btf(cospi[16], bf0[14], cospi[48], bf0[15], cos_bit);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 7
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = clamp_value(bf0[0] + bf0[2], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[3], stage_range[stage]);
  bf1[2] = clamp_value(bf0[0] - bf0[2], stage_range[stage]);
  bf1[3] = clamp_value(bf0[1] - bf0[3], stage_range[stage]);
  bf1[4] = clamp_value(bf0[4] + bf0[6], stage_range[stage]);
  bf1[5] = clamp_value(bf0[5] + bf0[7], stage_range[stage]);
  bf1[6] = clamp_value(bf0[4] - bf0[6], stage_range[stage]);
  bf1[7] = clamp_value(bf0[5] - bf0[7], stage_range[stage]);
  bf1[8] = clamp_value(bf0[8] + bf0[10], stage_range[stage]);
  bf1[9] = clamp_value(bf0[9] + bf0[11], stage_range[stage]);
  bf1[10] = clamp_value(bf0[8] - bf0[10], stage_range[stage]);
  bf1[11] = clamp_value(bf0[9] - bf0[11], stage_range[stage]);
  bf1[12] = clamp_value(bf0[12] + bf0[14], stage_range[stage]);
  bf1[13] = clamp_value(bf0[13] + bf0[15], stage_range[stage]);
  bf1[14] = clamp_value(bf0[12] - bf0[14], stage_range[stage]);
  bf1[15] = clamp_value(bf0[13] - bf0[15], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 8
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = half_btf(cospi[32], bf0[2], cospi[32], bf0[3], cos_bit);
  bf1[3] = half_btf(cospi[32], bf0[2], -cospi[32], bf0[3], cos_bit);
  bf1[4] = bf0[4];
  bf1[5] = bf0[5];
  bf1[6] = half_btf(cospi[32], bf0[6], cospi[32], bf0[7], cos_bit);
  bf1[7] = half_btf(cospi[32], bf0[6], -cospi[32], bf0[7], cos_bit);
  bf1[8] = bf0[8];
  bf1[9] = bf0[9];
  bf1[10] = half_btf(cospi[32], bf0[10], cospi[32], bf0[11], cos_bit);
  bf1[11] = half_btf(cospi[32], bf0[10], -cospi[32], bf0[11], cos_bit);
  bf1[12] = bf0[12];
  bf1[13] = bf0[13];
  bf1[14] = half_btf(cospi[32], bf0[14], cospi[32], bf0[15], cos_bit);
  bf1[15] = half_btf(cospi[32], bf0[14], -cospi[32], bf0[15], cos_bit);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 9
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = bf0[0];
  bf1[1] = -bf0[8];
  bf1[2] = bf0[12];
  bf1[3] = -bf0[4];
  bf1[4] = bf0[6];
  bf1[5] = -bf0[14];
  bf1[6] = bf0[10];
  bf1[7] = -bf0[2];
  bf1[8] = bf0[3];
  bf1[9] = -bf0[11];
  bf1[10] = bf0[15];
  bf1[11] = -bf0[7];
  bf1[12] = bf0[5];
  bf1[13] = -bf0[13];
  bf1[14] = bf0[9];
  bf1[15] = -bf0[1];
#endif
}

#if CONFIG_DST_32X32
void av1_iadst32_new(const int32_t *input, int32_t *output, int8_t cos_bit,
                     const int8_t *stage_range) {
  (void)cos_bit;
  (void)stage_range;
  for (int32_t i = 0; i < 32; i++) {
    int32_t sum = 0;
    for (int32_t j = 0; j < 32; j++) {
#if CONFIG_LGT32
      sum += input[j] * lgt_32x32[j * 32 + i];
#else
      sum += input[j] * dst7_32x32[j][i];
#endif  // CONFIG_LGT32
    }
    output[i] = ROUND_POWER_OF_TWO_SIGNED(sum, DST_32X32_PREC_BITS);
  }
}
#endif

void av1_iidentity4_c(const int32_t *input, int32_t *output, int8_t cos_bit,
                      const int8_t *stage_range) {
  (void)cos_bit;
  (void)stage_range;
  for (int i = 0; i < 4; ++i) {
    output[i] = round_shift((int64_t)NewSqrt2 * input[i], NewSqrt2Bits);
  }
  assert(stage_range[0] + NewSqrt2Bits <= 32);
}

void av1_iidentity8_c(const int32_t *input, int32_t *output, int8_t cos_bit,
                      const int8_t *stage_range) {
  (void)cos_bit;
  (void)stage_range;
  for (int i = 0; i < 8; ++i) output[i] = (int32_t)((int64_t)input[i] * 2);
}

void av1_iidentity16_c(const int32_t *input, int32_t *output, int8_t cos_bit,
                       const int8_t *stage_range) {
  (void)cos_bit;
  (void)stage_range;
  for (int i = 0; i < 16; ++i)
    output[i] = round_shift((int64_t)NewSqrt2 * 2 * input[i], NewSqrt2Bits);
  assert(stage_range[0] + NewSqrt2Bits <= 32);
}

void av1_iidentity32_c(const int32_t *input, int32_t *output, int8_t cos_bit,
                       const int8_t *stage_range) {
  (void)cos_bit;
  (void)stage_range;
  for (int i = 0; i < 32; ++i) output[i] = (int32_t)((int64_t)input[i] * 4);
}

void av1_idct64_new(const int32_t *input, int32_t *output, int8_t cos_bit,
                    const int8_t *stage_range) {
  assert(output != input);
  const int32_t size = 64;
  const int32_t *cospi = cospi_arr(cos_bit);

  int32_t stage = 0;
  int32_t *bf0, *bf1;
  int32_t step[64];

  // stage 0;

  // stage 1;
  stage++;
  bf1 = output;
  bf1[0] = input[0];
  bf1[1] = input[32];
  bf1[2] = input[16];
  bf1[3] = input[48];
  bf1[4] = input[8];
  bf1[5] = input[40];
  bf1[6] = input[24];
  bf1[7] = input[56];
  bf1[8] = input[4];
  bf1[9] = input[36];
  bf1[10] = input[20];
  bf1[11] = input[52];
  bf1[12] = input[12];
  bf1[13] = input[44];
  bf1[14] = input[28];
  bf1[15] = input[60];
  bf1[16] = input[2];
  bf1[17] = input[34];
  bf1[18] = input[18];
  bf1[19] = input[50];
  bf1[20] = input[10];
  bf1[21] = input[42];
  bf1[22] = input[26];
  bf1[23] = input[58];
  bf1[24] = input[6];
  bf1[25] = input[38];
  bf1[26] = input[22];
  bf1[27] = input[54];
  bf1[28] = input[14];
  bf1[29] = input[46];
  bf1[30] = input[30];
  bf1[31] = input[62];
  bf1[32] = input[1];
  bf1[33] = input[33];
  bf1[34] = input[17];
  bf1[35] = input[49];
  bf1[36] = input[9];
  bf1[37] = input[41];
  bf1[38] = input[25];
  bf1[39] = input[57];
  bf1[40] = input[5];
  bf1[41] = input[37];
  bf1[42] = input[21];
  bf1[43] = input[53];
  bf1[44] = input[13];
  bf1[45] = input[45];
  bf1[46] = input[29];
  bf1[47] = input[61];
  bf1[48] = input[3];
  bf1[49] = input[35];
  bf1[50] = input[19];
  bf1[51] = input[51];
  bf1[52] = input[11];
  bf1[53] = input[43];
  bf1[54] = input[27];
  bf1[55] = input[59];
  bf1[56] = input[7];
  bf1[57] = input[39];
  bf1[58] = input[23];
  bf1[59] = input[55];
  bf1[60] = input[15];
  bf1[61] = input[47];
  bf1[62] = input[31];
  bf1[63] = input[63];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 2
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = bf0[2];
  bf1[3] = bf0[3];
  bf1[4] = bf0[4];
  bf1[5] = bf0[5];
  bf1[6] = bf0[6];
  bf1[7] = bf0[7];
  bf1[8] = bf0[8];
  bf1[9] = bf0[9];
  bf1[10] = bf0[10];
  bf1[11] = bf0[11];
  bf1[12] = bf0[12];
  bf1[13] = bf0[13];
  bf1[14] = bf0[14];
  bf1[15] = bf0[15];
  bf1[16] = bf0[16];
  bf1[17] = bf0[17];
  bf1[18] = bf0[18];
  bf1[19] = bf0[19];
  bf1[20] = bf0[20];
  bf1[21] = bf0[21];
  bf1[22] = bf0[22];
  bf1[23] = bf0[23];
  bf1[24] = bf0[24];
  bf1[25] = bf0[25];
  bf1[26] = bf0[26];
  bf1[27] = bf0[27];
  bf1[28] = bf0[28];
  bf1[29] = bf0[29];
  bf1[30] = bf0[30];
  bf1[31] = bf0[31];
  bf1[32] = half_btf(cospi[63], bf0[32], -cospi[1], bf0[63], cos_bit);
  bf1[33] = half_btf(cospi[31], bf0[33], -cospi[33], bf0[62], cos_bit);
  bf1[34] = half_btf(cospi[47], bf0[34], -cospi[17], bf0[61], cos_bit);
  bf1[35] = half_btf(cospi[15], bf0[35], -cospi[49], bf0[60], cos_bit);
  bf1[36] = half_btf(cospi[55], bf0[36], -cospi[9], bf0[59], cos_bit);
  bf1[37] = half_btf(cospi[23], bf0[37], -cospi[41], bf0[58], cos_bit);
  bf1[38] = half_btf(cospi[39], bf0[38], -cospi[25], bf0[57], cos_bit);
  bf1[39] = half_btf(cospi[7], bf0[39], -cospi[57], bf0[56], cos_bit);
  bf1[40] = half_btf(cospi[59], bf0[40], -cospi[5], bf0[55], cos_bit);
  bf1[41] = half_btf(cospi[27], bf0[41], -cospi[37], bf0[54], cos_bit);
  bf1[42] = half_btf(cospi[43], bf0[42], -cospi[21], bf0[53], cos_bit);
  bf1[43] = half_btf(cospi[11], bf0[43], -cospi[53], bf0[52], cos_bit);
  bf1[44] = half_btf(cospi[51], bf0[44], -cospi[13], bf0[51], cos_bit);
  bf1[45] = half_btf(cospi[19], bf0[45], -cospi[45], bf0[50], cos_bit);
  bf1[46] = half_btf(cospi[35], bf0[46], -cospi[29], bf0[49], cos_bit);
  bf1[47] = half_btf(cospi[3], bf0[47], -cospi[61], bf0[48], cos_bit);
  bf1[48] = half_btf(cospi[61], bf0[47], cospi[3], bf0[48], cos_bit);
  bf1[49] = half_btf(cospi[29], bf0[46], cospi[35], bf0[49], cos_bit);
  bf1[50] = half_btf(cospi[45], bf0[45], cospi[19], bf0[50], cos_bit);
  bf1[51] = half_btf(cospi[13], bf0[44], cospi[51], bf0[51], cos_bit);
  bf1[52] = half_btf(cospi[53], bf0[43], cospi[11], bf0[52], cos_bit);
  bf1[53] = half_btf(cospi[21], bf0[42], cospi[43], bf0[53], cos_bit);
  bf1[54] = half_btf(cospi[37], bf0[41], cospi[27], bf0[54], cos_bit);
  bf1[55] = half_btf(cospi[5], bf0[40], cospi[59], bf0[55], cos_bit);
  bf1[56] = half_btf(cospi[57], bf0[39], cospi[7], bf0[56], cos_bit);
  bf1[57] = half_btf(cospi[25], bf0[38], cospi[39], bf0[57], cos_bit);
  bf1[58] = half_btf(cospi[41], bf0[37], cospi[23], bf0[58], cos_bit);
  bf1[59] = half_btf(cospi[9], bf0[36], cospi[55], bf0[59], cos_bit);
  bf1[60] = half_btf(cospi[49], bf0[35], cospi[15], bf0[60], cos_bit);
  bf1[61] = half_btf(cospi[17], bf0[34], cospi[47], bf0[61], cos_bit);
  bf1[62] = half_btf(cospi[33], bf0[33], cospi[31], bf0[62], cos_bit);
  bf1[63] = half_btf(cospi[1], bf0[32], cospi[63], bf0[63], cos_bit);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 3
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = bf0[2];
  bf1[3] = bf0[3];
  bf1[4] = bf0[4];
  bf1[5] = bf0[5];
  bf1[6] = bf0[6];
  bf1[7] = bf0[7];
  bf1[8] = bf0[8];
  bf1[9] = bf0[9];
  bf1[10] = bf0[10];
  bf1[11] = bf0[11];
  bf1[12] = bf0[12];
  bf1[13] = bf0[13];
  bf1[14] = bf0[14];
  bf1[15] = bf0[15];
  bf1[16] = half_btf(cospi[62], bf0[16], -cospi[2], bf0[31], cos_bit);
  bf1[17] = half_btf(cospi[30], bf0[17], -cospi[34], bf0[30], cos_bit);
  bf1[18] = half_btf(cospi[46], bf0[18], -cospi[18], bf0[29], cos_bit);
  bf1[19] = half_btf(cospi[14], bf0[19], -cospi[50], bf0[28], cos_bit);
  bf1[20] = half_btf(cospi[54], bf0[20], -cospi[10], bf0[27], cos_bit);
  bf1[21] = half_btf(cospi[22], bf0[21], -cospi[42], bf0[26], cos_bit);
  bf1[22] = half_btf(cospi[38], bf0[22], -cospi[26], bf0[25], cos_bit);
  bf1[23] = half_btf(cospi[6], bf0[23], -cospi[58], bf0[24], cos_bit);
  bf1[24] = half_btf(cospi[58], bf0[23], cospi[6], bf0[24], cos_bit);
  bf1[25] = half_btf(cospi[26], bf0[22], cospi[38], bf0[25], cos_bit);
  bf1[26] = half_btf(cospi[42], bf0[21], cospi[22], bf0[26], cos_bit);
  bf1[27] = half_btf(cospi[10], bf0[20], cospi[54], bf0[27], cos_bit);
  bf1[28] = half_btf(cospi[50], bf0[19], cospi[14], bf0[28], cos_bit);
  bf1[29] = half_btf(cospi[18], bf0[18], cospi[46], bf0[29], cos_bit);
  bf1[30] = half_btf(cospi[34], bf0[17], cospi[30], bf0[30], cos_bit);
  bf1[31] = half_btf(cospi[2], bf0[16], cospi[62], bf0[31], cos_bit);
  bf1[32] = clamp_value(bf0[32] + bf0[33], stage_range[stage]);
  bf1[33] = clamp_value(bf0[32] - bf0[33], stage_range[stage]);
  bf1[34] = clamp_value(-bf0[34] + bf0[35], stage_range[stage]);
  bf1[35] = clamp_value(bf0[34] + bf0[35], stage_range[stage]);
  bf1[36] = clamp_value(bf0[36] + bf0[37], stage_range[stage]);
  bf1[37] = clamp_value(bf0[36] - bf0[37], stage_range[stage]);
  bf1[38] = clamp_value(-bf0[38] + bf0[39], stage_range[stage]);
  bf1[39] = clamp_value(bf0[38] + bf0[39], stage_range[stage]);
  bf1[40] = clamp_value(bf0[40] + bf0[41], stage_range[stage]);
  bf1[41] = clamp_value(bf0[40] - bf0[41], stage_range[stage]);
  bf1[42] = clamp_value(-bf0[42] + bf0[43], stage_range[stage]);
  bf1[43] = clamp_value(bf0[42] + bf0[43], stage_range[stage]);
  bf1[44] = clamp_value(bf0[44] + bf0[45], stage_range[stage]);
  bf1[45] = clamp_value(bf0[44] - bf0[45], stage_range[stage]);
  bf1[46] = clamp_value(-bf0[46] + bf0[47], stage_range[stage]);
  bf1[47] = clamp_value(bf0[46] + bf0[47], stage_range[stage]);
  bf1[48] = clamp_value(bf0[48] + bf0[49], stage_range[stage]);
  bf1[49] = clamp_value(bf0[48] - bf0[49], stage_range[stage]);
  bf1[50] = clamp_value(-bf0[50] + bf0[51], stage_range[stage]);
  bf1[51] = clamp_value(bf0[50] + bf0[51], stage_range[stage]);
  bf1[52] = clamp_value(bf0[52] + bf0[53], stage_range[stage]);
  bf1[53] = clamp_value(bf0[52] - bf0[53], stage_range[stage]);
  bf1[54] = clamp_value(-bf0[54] + bf0[55], stage_range[stage]);
  bf1[55] = clamp_value(bf0[54] + bf0[55], stage_range[stage]);
  bf1[56] = clamp_value(bf0[56] + bf0[57], stage_range[stage]);
  bf1[57] = clamp_value(bf0[56] - bf0[57], stage_range[stage]);
  bf1[58] = clamp_value(-bf0[58] + bf0[59], stage_range[stage]);
  bf1[59] = clamp_value(bf0[58] + bf0[59], stage_range[stage]);
  bf1[60] = clamp_value(bf0[60] + bf0[61], stage_range[stage]);
  bf1[61] = clamp_value(bf0[60] - bf0[61], stage_range[stage]);
  bf1[62] = clamp_value(-bf0[62] + bf0[63], stage_range[stage]);
  bf1[63] = clamp_value(bf0[62] + bf0[63], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 4
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = bf0[2];
  bf1[3] = bf0[3];
  bf1[4] = bf0[4];
  bf1[5] = bf0[5];
  bf1[6] = bf0[6];
  bf1[7] = bf0[7];
  bf1[8] = half_btf(cospi[60], bf0[8], -cospi[4], bf0[15], cos_bit);
  bf1[9] = half_btf(cospi[28], bf0[9], -cospi[36], bf0[14], cos_bit);
  bf1[10] = half_btf(cospi[44], bf0[10], -cospi[20], bf0[13], cos_bit);
  bf1[11] = half_btf(cospi[12], bf0[11], -cospi[52], bf0[12], cos_bit);
  bf1[12] = half_btf(cospi[52], bf0[11], cospi[12], bf0[12], cos_bit);
  bf1[13] = half_btf(cospi[20], bf0[10], cospi[44], bf0[13], cos_bit);
  bf1[14] = half_btf(cospi[36], bf0[9], cospi[28], bf0[14], cos_bit);
  bf1[15] = half_btf(cospi[4], bf0[8], cospi[60], bf0[15], cos_bit);
  bf1[16] = clamp_value(bf0[16] + bf0[17], stage_range[stage]);
  bf1[17] = clamp_value(bf0[16] - bf0[17], stage_range[stage]);
  bf1[18] = clamp_value(-bf0[18] + bf0[19], stage_range[stage]);
  bf1[19] = clamp_value(bf0[18] + bf0[19], stage_range[stage]);
  bf1[20] = clamp_value(bf0[20] + bf0[21], stage_range[stage]);
  bf1[21] = clamp_value(bf0[20] - bf0[21], stage_range[stage]);
  bf1[22] = clamp_value(-bf0[22] + bf0[23], stage_range[stage]);
  bf1[23] = clamp_value(bf0[22] + bf0[23], stage_range[stage]);
  bf1[24] = clamp_value(bf0[24] + bf0[25], stage_range[stage]);
  bf1[25] = clamp_value(bf0[24] - bf0[25], stage_range[stage]);
  bf1[26] = clamp_value(-bf0[26] + bf0[27], stage_range[stage]);
  bf1[27] = clamp_value(bf0[26] + bf0[27], stage_range[stage]);
  bf1[28] = clamp_value(bf0[28] + bf0[29], stage_range[stage]);
  bf1[29] = clamp_value(bf0[28] - bf0[29], stage_range[stage]);
  bf1[30] = clamp_value(-bf0[30] + bf0[31], stage_range[stage]);
  bf1[31] = clamp_value(bf0[30] + bf0[31], stage_range[stage]);
  bf1[32] = bf0[32];
  bf1[33] = half_btf(-cospi[4], bf0[33], cospi[60], bf0[62], cos_bit);
  bf1[34] = half_btf(-cospi[60], bf0[34], -cospi[4], bf0[61], cos_bit);
  bf1[35] = bf0[35];
  bf1[36] = bf0[36];
  bf1[37] = half_btf(-cospi[36], bf0[37], cospi[28], bf0[58], cos_bit);
  bf1[38] = half_btf(-cospi[28], bf0[38], -cospi[36], bf0[57], cos_bit);
  bf1[39] = bf0[39];
  bf1[40] = bf0[40];
  bf1[41] = half_btf(-cospi[20], bf0[41], cospi[44], bf0[54], cos_bit);
  bf1[42] = half_btf(-cospi[44], bf0[42], -cospi[20], bf0[53], cos_bit);
  bf1[43] = bf0[43];
  bf1[44] = bf0[44];
  bf1[45] = half_btf(-cospi[52], bf0[45], cospi[12], bf0[50], cos_bit);
  bf1[46] = half_btf(-cospi[12], bf0[46], -cospi[52], bf0[49], cos_bit);
  bf1[47] = bf0[47];
  bf1[48] = bf0[48];
  bf1[49] = half_btf(-cospi[52], bf0[46], cospi[12], bf0[49], cos_bit);
  bf1[50] = half_btf(cospi[12], bf0[45], cospi[52], bf0[50], cos_bit);
  bf1[51] = bf0[51];
  bf1[52] = bf0[52];
  bf1[53] = half_btf(-cospi[20], bf0[42], cospi[44], bf0[53], cos_bit);
  bf1[54] = half_btf(cospi[44], bf0[41], cospi[20], bf0[54], cos_bit);
  bf1[55] = bf0[55];
  bf1[56] = bf0[56];
  bf1[57] = half_btf(-cospi[36], bf0[38], cospi[28], bf0[57], cos_bit);
  bf1[58] = half_btf(cospi[28], bf0[37], cospi[36], bf0[58], cos_bit);
  bf1[59] = bf0[59];
  bf1[60] = bf0[60];
  bf1[61] = half_btf(-cospi[4], bf0[34], cospi[60], bf0[61], cos_bit);
  bf1[62] = half_btf(cospi[60], bf0[33], cospi[4], bf0[62], cos_bit);
  bf1[63] = bf0[63];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 5
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = bf0[0];
  bf1[1] = bf0[1];
  bf1[2] = bf0[2];
  bf1[3] = bf0[3];
  bf1[4] = half_btf(cospi[56], bf0[4], -cospi[8], bf0[7], cos_bit);
  bf1[5] = half_btf(cospi[24], bf0[5], -cospi[40], bf0[6], cos_bit);
  bf1[6] = half_btf(cospi[40], bf0[5], cospi[24], bf0[6], cos_bit);
  bf1[7] = half_btf(cospi[8], bf0[4], cospi[56], bf0[7], cos_bit);
  bf1[8] = clamp_value(bf0[8] + bf0[9], stage_range[stage]);
  bf1[9] = clamp_value(bf0[8] - bf0[9], stage_range[stage]);
  bf1[10] = clamp_value(-bf0[10] + bf0[11], stage_range[stage]);
  bf1[11] = clamp_value(bf0[10] + bf0[11], stage_range[stage]);
  bf1[12] = clamp_value(bf0[12] + bf0[13], stage_range[stage]);
  bf1[13] = clamp_value(bf0[12] - bf0[13], stage_range[stage]);
  bf1[14] = clamp_value(-bf0[14] + bf0[15], stage_range[stage]);
  bf1[15] = clamp_value(bf0[14] + bf0[15], stage_range[stage]);
  bf1[16] = bf0[16];
  bf1[17] = half_btf(-cospi[8], bf0[17], cospi[56], bf0[30], cos_bit);
  bf1[18] = half_btf(-cospi[56], bf0[18], -cospi[8], bf0[29], cos_bit);
  bf1[19] = bf0[19];
  bf1[20] = bf0[20];
  bf1[21] = half_btf(-cospi[40], bf0[21], cospi[24], bf0[26], cos_bit);
  bf1[22] = half_btf(-cospi[24], bf0[22], -cospi[40], bf0[25], cos_bit);
  bf1[23] = bf0[23];
  bf1[24] = bf0[24];
  bf1[25] = half_btf(-cospi[40], bf0[22], cospi[24], bf0[25], cos_bit);
  bf1[26] = half_btf(cospi[24], bf0[21], cospi[40], bf0[26], cos_bit);
  bf1[27] = bf0[27];
  bf1[28] = bf0[28];
  bf1[29] = half_btf(-cospi[8], bf0[18], cospi[56], bf0[29], cos_bit);
  bf1[30] = half_btf(cospi[56], bf0[17], cospi[8], bf0[30], cos_bit);
  bf1[31] = bf0[31];
  bf1[32] = clamp_value(bf0[32] + bf0[35], stage_range[stage]);
  bf1[33] = clamp_value(bf0[33] + bf0[34], stage_range[stage]);
  bf1[34] = clamp_value(bf0[33] - bf0[34], stage_range[stage]);
  bf1[35] = clamp_value(bf0[32] - bf0[35], stage_range[stage]);
  bf1[36] = clamp_value(-bf0[36] + bf0[39], stage_range[stage]);
  bf1[37] = clamp_value(-bf0[37] + bf0[38], stage_range[stage]);
  bf1[38] = clamp_value(bf0[37] + bf0[38], stage_range[stage]);
  bf1[39] = clamp_value(bf0[36] + bf0[39], stage_range[stage]);
  bf1[40] = clamp_value(bf0[40] + bf0[43], stage_range[stage]);
  bf1[41] = clamp_value(bf0[41] + bf0[42], stage_range[stage]);
  bf1[42] = clamp_value(bf0[41] - bf0[42], stage_range[stage]);
  bf1[43] = clamp_value(bf0[40] - bf0[43], stage_range[stage]);
  bf1[44] = clamp_value(-bf0[44] + bf0[47], stage_range[stage]);
  bf1[45] = clamp_value(-bf0[45] + bf0[46], stage_range[stage]);
  bf1[46] = clamp_value(bf0[45] + bf0[46], stage_range[stage]);
  bf1[47] = clamp_value(bf0[44] + bf0[47], stage_range[stage]);
  bf1[48] = clamp_value(bf0[48] + bf0[51], stage_range[stage]);
  bf1[49] = clamp_value(bf0[49] + bf0[50], stage_range[stage]);
  bf1[50] = clamp_value(bf0[49] - bf0[50], stage_range[stage]);
  bf1[51] = clamp_value(bf0[48] - bf0[51], stage_range[stage]);
  bf1[52] = clamp_value(-bf0[52] + bf0[55], stage_range[stage]);
  bf1[53] = clamp_value(-bf0[53] + bf0[54], stage_range[stage]);
  bf1[54] = clamp_value(bf0[53] + bf0[54], stage_range[stage]);
  bf1[55] = clamp_value(bf0[52] + bf0[55], stage_range[stage]);
  bf1[56] = clamp_value(bf0[56] + bf0[59], stage_range[stage]);
  bf1[57] = clamp_value(bf0[57] + bf0[58], stage_range[stage]);
  bf1[58] = clamp_value(bf0[57] - bf0[58], stage_range[stage]);
  bf1[59] = clamp_value(bf0[56] - bf0[59], stage_range[stage]);
  bf1[60] = clamp_value(-bf0[60] + bf0[63], stage_range[stage]);
  bf1[61] = clamp_value(-bf0[61] + bf0[62], stage_range[stage]);
  bf1[62] = clamp_value(bf0[61] + bf0[62], stage_range[stage]);
  bf1[63] = clamp_value(bf0[60] + bf0[63], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 6
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = half_btf(cospi[32], bf0[0], cospi[32], bf0[1], cos_bit);
  bf1[1] = half_btf(cospi[32], bf0[0], -cospi[32], bf0[1], cos_bit);
  bf1[2] = half_btf(cospi[48], bf0[2], -cospi[16], bf0[3], cos_bit);
  bf1[3] = half_btf(cospi[16], bf0[2], cospi[48], bf0[3], cos_bit);
  bf1[4] = clamp_value(bf0[4] + bf0[5], stage_range[stage]);
  bf1[5] = clamp_value(bf0[4] - bf0[5], stage_range[stage]);
  bf1[6] = clamp_value(-bf0[6] + bf0[7], stage_range[stage]);
  bf1[7] = clamp_value(bf0[6] + bf0[7], stage_range[stage]);
  bf1[8] = bf0[8];
  bf1[9] = half_btf(-cospi[16], bf0[9], cospi[48], bf0[14], cos_bit);
  bf1[10] = half_btf(-cospi[48], bf0[10], -cospi[16], bf0[13], cos_bit);
  bf1[11] = bf0[11];
  bf1[12] = bf0[12];
  bf1[13] = half_btf(-cospi[16], bf0[10], cospi[48], bf0[13], cos_bit);
  bf1[14] = half_btf(cospi[48], bf0[9], cospi[16], bf0[14], cos_bit);
  bf1[15] = bf0[15];
  bf1[16] = clamp_value(bf0[16] + bf0[19], stage_range[stage]);
  bf1[17] = clamp_value(bf0[17] + bf0[18], stage_range[stage]);
  bf1[18] = clamp_value(bf0[17] - bf0[18], stage_range[stage]);
  bf1[19] = clamp_value(bf0[16] - bf0[19], stage_range[stage]);
  bf1[20] = clamp_value(-bf0[20] + bf0[23], stage_range[stage]);
  bf1[21] = clamp_value(-bf0[21] + bf0[22], stage_range[stage]);
  bf1[22] = clamp_value(bf0[21] + bf0[22], stage_range[stage]);
  bf1[23] = clamp_value(bf0[20] + bf0[23], stage_range[stage]);
  bf1[24] = clamp_value(bf0[24] + bf0[27], stage_range[stage]);
  bf1[25] = clamp_value(bf0[25] + bf0[26], stage_range[stage]);
  bf1[26] = clamp_value(bf0[25] - bf0[26], stage_range[stage]);
  bf1[27] = clamp_value(bf0[24] - bf0[27], stage_range[stage]);
  bf1[28] = clamp_value(-bf0[28] + bf0[31], stage_range[stage]);
  bf1[29] = clamp_value(-bf0[29] + bf0[30], stage_range[stage]);
  bf1[30] = clamp_value(bf0[29] + bf0[30], stage_range[stage]);
  bf1[31] = clamp_value(bf0[28] + bf0[31], stage_range[stage]);
  bf1[32] = bf0[32];
  bf1[33] = bf0[33];
  bf1[34] = half_btf(-cospi[8], bf0[34], cospi[56], bf0[61], cos_bit);
  bf1[35] = half_btf(-cospi[8], bf0[35], cospi[56], bf0[60], cos_bit);
  bf1[36] = half_btf(-cospi[56], bf0[36], -cospi[8], bf0[59], cos_bit);
  bf1[37] = half_btf(-cospi[56], bf0[37], -cospi[8], bf0[58], cos_bit);
  bf1[38] = bf0[38];
  bf1[39] = bf0[39];
  bf1[40] = bf0[40];
  bf1[41] = bf0[41];
  bf1[42] = half_btf(-cospi[40], bf0[42], cospi[24], bf0[53], cos_bit);
  bf1[43] = half_btf(-cospi[40], bf0[43], cospi[24], bf0[52], cos_bit);
  bf1[44] = half_btf(-cospi[24], bf0[44], -cospi[40], bf0[51], cos_bit);
  bf1[45] = half_btf(-cospi[24], bf0[45], -cospi[40], bf0[50], cos_bit);
  bf1[46] = bf0[46];
  bf1[47] = bf0[47];
  bf1[48] = bf0[48];
  bf1[49] = bf0[49];
  bf1[50] = half_btf(-cospi[40], bf0[45], cospi[24], bf0[50], cos_bit);
  bf1[51] = half_btf(-cospi[40], bf0[44], cospi[24], bf0[51], cos_bit);
  bf1[52] = half_btf(cospi[24], bf0[43], cospi[40], bf0[52], cos_bit);
  bf1[53] = half_btf(cospi[24], bf0[42], cospi[40], bf0[53], cos_bit);
  bf1[54] = bf0[54];
  bf1[55] = bf0[55];
  bf1[56] = bf0[56];
  bf1[57] = bf0[57];
  bf1[58] = half_btf(-cospi[8], bf0[37], cospi[56], bf0[58], cos_bit);
  bf1[59] = half_btf(-cospi[8], bf0[36], cospi[56], bf0[59], cos_bit);
  bf1[60] = half_btf(cospi[56], bf0[35], cospi[8], bf0[60], cos_bit);
  bf1[61] = half_btf(cospi[56], bf0[34], cospi[8], bf0[61], cos_bit);
  bf1[62] = bf0[62];
  bf1[63] = bf0[63];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 7
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = clamp_value(bf0[0] + bf0[3], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[2], stage_range[stage]);
  bf1[2] = clamp_value(bf0[1] - bf0[2], stage_range[stage]);
  bf1[3] = clamp_value(bf0[0] - bf0[3], stage_range[stage]);
  bf1[4] = bf0[4];
  bf1[5] = half_btf(-cospi[32], bf0[5], cospi[32], bf0[6], cos_bit);
  bf1[6] = half_btf(cospi[32], bf0[5], cospi[32], bf0[6], cos_bit);
  bf1[7] = bf0[7];
  bf1[8] = clamp_value(bf0[8] + bf0[11], stage_range[stage]);
  bf1[9] = clamp_value(bf0[9] + bf0[10], stage_range[stage]);
  bf1[10] = clamp_value(bf0[9] - bf0[10], stage_range[stage]);
  bf1[11] = clamp_value(bf0[8] - bf0[11], stage_range[stage]);
  bf1[12] = clamp_value(-bf0[12] + bf0[15], stage_range[stage]);
  bf1[13] = clamp_value(-bf0[13] + bf0[14], stage_range[stage]);
  bf1[14] = clamp_value(bf0[13] + bf0[14], stage_range[stage]);
  bf1[15] = clamp_value(bf0[12] + bf0[15], stage_range[stage]);
  bf1[16] = bf0[16];
  bf1[17] = bf0[17];
  bf1[18] = half_btf(-cospi[16], bf0[18], cospi[48], bf0[29], cos_bit);
  bf1[19] = half_btf(-cospi[16], bf0[19], cospi[48], bf0[28], cos_bit);
  bf1[20] = half_btf(-cospi[48], bf0[20], -cospi[16], bf0[27], cos_bit);
  bf1[21] = half_btf(-cospi[48], bf0[21], -cospi[16], bf0[26], cos_bit);
  bf1[22] = bf0[22];
  bf1[23] = bf0[23];
  bf1[24] = bf0[24];
  bf1[25] = bf0[25];
  bf1[26] = half_btf(-cospi[16], bf0[21], cospi[48], bf0[26], cos_bit);
  bf1[27] = half_btf(-cospi[16], bf0[20], cospi[48], bf0[27], cos_bit);
  bf1[28] = half_btf(cospi[48], bf0[19], cospi[16], bf0[28], cos_bit);
  bf1[29] = half_btf(cospi[48], bf0[18], cospi[16], bf0[29], cos_bit);
  bf1[30] = bf0[30];
  bf1[31] = bf0[31];
  bf1[32] = clamp_value(bf0[32] + bf0[39], stage_range[stage]);
  bf1[33] = clamp_value(bf0[33] + bf0[38], stage_range[stage]);
  bf1[34] = clamp_value(bf0[34] + bf0[37], stage_range[stage]);
  bf1[35] = clamp_value(bf0[35] + bf0[36], stage_range[stage]);
  bf1[36] = clamp_value(bf0[35] - bf0[36], stage_range[stage]);
  bf1[37] = clamp_value(bf0[34] - bf0[37], stage_range[stage]);
  bf1[38] = clamp_value(bf0[33] - bf0[38], stage_range[stage]);
  bf1[39] = clamp_value(bf0[32] - bf0[39], stage_range[stage]);
  bf1[40] = clamp_value(-bf0[40] + bf0[47], stage_range[stage]);
  bf1[41] = clamp_value(-bf0[41] + bf0[46], stage_range[stage]);
  bf1[42] = clamp_value(-bf0[42] + bf0[45], stage_range[stage]);
  bf1[43] = clamp_value(-bf0[43] + bf0[44], stage_range[stage]);
  bf1[44] = clamp_value(bf0[43] + bf0[44], stage_range[stage]);
  bf1[45] = clamp_value(bf0[42] + bf0[45], stage_range[stage]);
  bf1[46] = clamp_value(bf0[41] + bf0[46], stage_range[stage]);
  bf1[47] = clamp_value(bf0[40] + bf0[47], stage_range[stage]);
  bf1[48] = clamp_value(bf0[48] + bf0[55], stage_range[stage]);
  bf1[49] = clamp_value(bf0[49] + bf0[54], stage_range[stage]);
  bf1[50] = clamp_value(bf0[50] + bf0[53], stage_range[stage]);
  bf1[51] = clamp_value(bf0[51] + bf0[52], stage_range[stage]);
  bf1[52] = clamp_value(bf0[51] - bf0[52], stage_range[stage]);
  bf1[53] = clamp_value(bf0[50] - bf0[53], stage_range[stage]);
  bf1[54] = clamp_value(bf0[49] - bf0[54], stage_range[stage]);
  bf1[55] = clamp_value(bf0[48] - bf0[55], stage_range[stage]);
  bf1[56] = clamp_value(-bf0[56] + bf0[63], stage_range[stage]);
  bf1[57] = clamp_value(-bf0[57] + bf0[62], stage_range[stage]);
  bf1[58] = clamp_value(-bf0[58] + bf0[61], stage_range[stage]);
  bf1[59] = clamp_value(-bf0[59] + bf0[60], stage_range[stage]);
  bf1[60] = clamp_value(bf0[59] + bf0[60], stage_range[stage]);
  bf1[61] = clamp_value(bf0[58] + bf0[61], stage_range[stage]);
  bf1[62] = clamp_value(bf0[57] + bf0[62], stage_range[stage]);
  bf1[63] = clamp_value(bf0[56] + bf0[63], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 8
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = clamp_value(bf0[0] + bf0[7], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[6], stage_range[stage]);
  bf1[2] = clamp_value(bf0[2] + bf0[5], stage_range[stage]);
  bf1[3] = clamp_value(bf0[3] + bf0[4], stage_range[stage]);
  bf1[4] = clamp_value(bf0[3] - bf0[4], stage_range[stage]);
  bf1[5] = clamp_value(bf0[2] - bf0[5], stage_range[stage]);
  bf1[6] = clamp_value(bf0[1] - bf0[6], stage_range[stage]);
  bf1[7] = clamp_value(bf0[0] - bf0[7], stage_range[stage]);
  bf1[8] = bf0[8];
  bf1[9] = bf0[9];
  bf1[10] = half_btf(-cospi[32], bf0[10], cospi[32], bf0[13], cos_bit);
  bf1[11] = half_btf(-cospi[32], bf0[11], cospi[32], bf0[12], cos_bit);
  bf1[12] = half_btf(cospi[32], bf0[11], cospi[32], bf0[12], cos_bit);
  bf1[13] = half_btf(cospi[32], bf0[10], cospi[32], bf0[13], cos_bit);
  bf1[14] = bf0[14];
  bf1[15] = bf0[15];
  bf1[16] = clamp_value(bf0[16] + bf0[23], stage_range[stage]);
  bf1[17] = clamp_value(bf0[17] + bf0[22], stage_range[stage]);
  bf1[18] = clamp_value(bf0[18] + bf0[21], stage_range[stage]);
  bf1[19] = clamp_value(bf0[19] + bf0[20], stage_range[stage]);
  bf1[20] = clamp_value(bf0[19] - bf0[20], stage_range[stage]);
  bf1[21] = clamp_value(bf0[18] - bf0[21], stage_range[stage]);
  bf1[22] = clamp_value(bf0[17] - bf0[22], stage_range[stage]);
  bf1[23] = clamp_value(bf0[16] - bf0[23], stage_range[stage]);
  bf1[24] = clamp_value(-bf0[24] + bf0[31], stage_range[stage]);
  bf1[25] = clamp_value(-bf0[25] + bf0[30], stage_range[stage]);
  bf1[26] = clamp_value(-bf0[26] + bf0[29], stage_range[stage]);
  bf1[27] = clamp_value(-bf0[27] + bf0[28], stage_range[stage]);
  bf1[28] = clamp_value(bf0[27] + bf0[28], stage_range[stage]);
  bf1[29] = clamp_value(bf0[26] + bf0[29], stage_range[stage]);
  bf1[30] = clamp_value(bf0[25] + bf0[30], stage_range[stage]);
  bf1[31] = clamp_value(bf0[24] + bf0[31], stage_range[stage]);
  bf1[32] = bf0[32];
  bf1[33] = bf0[33];
  bf1[34] = bf0[34];
  bf1[35] = bf0[35];
  bf1[36] = half_btf(-cospi[16], bf0[36], cospi[48], bf0[59], cos_bit);
  bf1[37] = half_btf(-cospi[16], bf0[37], cospi[48], bf0[58], cos_bit);
  bf1[38] = half_btf(-cospi[16], bf0[38], cospi[48], bf0[57], cos_bit);
  bf1[39] = half_btf(-cospi[16], bf0[39], cospi[48], bf0[56], cos_bit);
  bf1[40] = half_btf(-cospi[48], bf0[40], -cospi[16], bf0[55], cos_bit);
  bf1[41] = half_btf(-cospi[48], bf0[41], -cospi[16], bf0[54], cos_bit);
  bf1[42] = half_btf(-cospi[48], bf0[42], -cospi[16], bf0[53], cos_bit);
  bf1[43] = half_btf(-cospi[48], bf0[43], -cospi[16], bf0[52], cos_bit);
  bf1[44] = bf0[44];
  bf1[45] = bf0[45];
  bf1[46] = bf0[46];
  bf1[47] = bf0[47];
  bf1[48] = bf0[48];
  bf1[49] = bf0[49];
  bf1[50] = bf0[50];
  bf1[51] = bf0[51];
  bf1[52] = half_btf(-cospi[16], bf0[43], cospi[48], bf0[52], cos_bit);
  bf1[53] = half_btf(-cospi[16], bf0[42], cospi[48], bf0[53], cos_bit);
  bf1[54] = half_btf(-cospi[16], bf0[41], cospi[48], bf0[54], cos_bit);
  bf1[55] = half_btf(-cospi[16], bf0[40], cospi[48], bf0[55], cos_bit);
  bf1[56] = half_btf(cospi[48], bf0[39], cospi[16], bf0[56], cos_bit);
  bf1[57] = half_btf(cospi[48], bf0[38], cospi[16], bf0[57], cos_bit);
  bf1[58] = half_btf(cospi[48], bf0[37], cospi[16], bf0[58], cos_bit);
  bf1[59] = half_btf(cospi[48], bf0[36], cospi[16], bf0[59], cos_bit);
  bf1[60] = bf0[60];
  bf1[61] = bf0[61];
  bf1[62] = bf0[62];
  bf1[63] = bf0[63];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 9
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = clamp_value(bf0[0] + bf0[15], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[14], stage_range[stage]);
  bf1[2] = clamp_value(bf0[2] + bf0[13], stage_range[stage]);
  bf1[3] = clamp_value(bf0[3] + bf0[12], stage_range[stage]);
  bf1[4] = clamp_value(bf0[4] + bf0[11], stage_range[stage]);
  bf1[5] = clamp_value(bf0[5] + bf0[10], stage_range[stage]);
  bf1[6] = clamp_value(bf0[6] + bf0[9], stage_range[stage]);
  bf1[7] = clamp_value(bf0[7] + bf0[8], stage_range[stage]);
  bf1[8] = clamp_value(bf0[7] - bf0[8], stage_range[stage]);
  bf1[9] = clamp_value(bf0[6] - bf0[9], stage_range[stage]);
  bf1[10] = clamp_value(bf0[5] - bf0[10], stage_range[stage]);
  bf1[11] = clamp_value(bf0[4] - bf0[11], stage_range[stage]);
  bf1[12] = clamp_value(bf0[3] - bf0[12], stage_range[stage]);
  bf1[13] = clamp_value(bf0[2] - bf0[13], stage_range[stage]);
  bf1[14] = clamp_value(bf0[1] - bf0[14], stage_range[stage]);
  bf1[15] = clamp_value(bf0[0] - bf0[15], stage_range[stage]);
  bf1[16] = bf0[16];
  bf1[17] = bf0[17];
  bf1[18] = bf0[18];
  bf1[19] = bf0[19];
  bf1[20] = half_btf(-cospi[32], bf0[20], cospi[32], bf0[27], cos_bit);
  bf1[21] = half_btf(-cospi[32], bf0[21], cospi[32], bf0[26], cos_bit);
  bf1[22] = half_btf(-cospi[32], bf0[22], cospi[32], bf0[25], cos_bit);
  bf1[23] = half_btf(-cospi[32], bf0[23], cospi[32], bf0[24], cos_bit);
  bf1[24] = half_btf(cospi[32], bf0[23], cospi[32], bf0[24], cos_bit);
  bf1[25] = half_btf(cospi[32], bf0[22], cospi[32], bf0[25], cos_bit);
  bf1[26] = half_btf(cospi[32], bf0[21], cospi[32], bf0[26], cos_bit);
  bf1[27] = half_btf(cospi[32], bf0[20], cospi[32], bf0[27], cos_bit);
  bf1[28] = bf0[28];
  bf1[29] = bf0[29];
  bf1[30] = bf0[30];
  bf1[31] = bf0[31];
  bf1[32] = clamp_value(bf0[32] + bf0[47], stage_range[stage]);
  bf1[33] = clamp_value(bf0[33] + bf0[46], stage_range[stage]);
  bf1[34] = clamp_value(bf0[34] + bf0[45], stage_range[stage]);
  bf1[35] = clamp_value(bf0[35] + bf0[44], stage_range[stage]);
  bf1[36] = clamp_value(bf0[36] + bf0[43], stage_range[stage]);
  bf1[37] = clamp_value(bf0[37] + bf0[42], stage_range[stage]);
  bf1[38] = clamp_value(bf0[38] + bf0[41], stage_range[stage]);
  bf1[39] = clamp_value(bf0[39] + bf0[40], stage_range[stage]);
  bf1[40] = clamp_value(bf0[39] - bf0[40], stage_range[stage]);
  bf1[41] = clamp_value(bf0[38] - bf0[41], stage_range[stage]);
  bf1[42] = clamp_value(bf0[37] - bf0[42], stage_range[stage]);
  bf1[43] = clamp_value(bf0[36] - bf0[43], stage_range[stage]);
  bf1[44] = clamp_value(bf0[35] - bf0[44], stage_range[stage]);
  bf1[45] = clamp_value(bf0[34] - bf0[45], stage_range[stage]);
  bf1[46] = clamp_value(bf0[33] - bf0[46], stage_range[stage]);
  bf1[47] = clamp_value(bf0[32] - bf0[47], stage_range[stage]);
  bf1[48] = clamp_value(-bf0[48] + bf0[63], stage_range[stage]);
  bf1[49] = clamp_value(-bf0[49] + bf0[62], stage_range[stage]);
  bf1[50] = clamp_value(-bf0[50] + bf0[61], stage_range[stage]);
  bf1[51] = clamp_value(-bf0[51] + bf0[60], stage_range[stage]);
  bf1[52] = clamp_value(-bf0[52] + bf0[59], stage_range[stage]);
  bf1[53] = clamp_value(-bf0[53] + bf0[58], stage_range[stage]);
  bf1[54] = clamp_value(-bf0[54] + bf0[57], stage_range[stage]);
  bf1[55] = clamp_value(-bf0[55] + bf0[56], stage_range[stage]);
  bf1[56] = clamp_value(bf0[55] + bf0[56], stage_range[stage]);
  bf1[57] = clamp_value(bf0[54] + bf0[57], stage_range[stage]);
  bf1[58] = clamp_value(bf0[53] + bf0[58], stage_range[stage]);
  bf1[59] = clamp_value(bf0[52] + bf0[59], stage_range[stage]);
  bf1[60] = clamp_value(bf0[51] + bf0[60], stage_range[stage]);
  bf1[61] = clamp_value(bf0[50] + bf0[61], stage_range[stage]);
  bf1[62] = clamp_value(bf0[49] + bf0[62], stage_range[stage]);
  bf1[63] = clamp_value(bf0[48] + bf0[63], stage_range[stage]);
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 10
  stage++;
  bf0 = output;
  bf1 = step;
  bf1[0] = clamp_value(bf0[0] + bf0[31], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[30], stage_range[stage]);
  bf1[2] = clamp_value(bf0[2] + bf0[29], stage_range[stage]);
  bf1[3] = clamp_value(bf0[3] + bf0[28], stage_range[stage]);
  bf1[4] = clamp_value(bf0[4] + bf0[27], stage_range[stage]);
  bf1[5] = clamp_value(bf0[5] + bf0[26], stage_range[stage]);
  bf1[6] = clamp_value(bf0[6] + bf0[25], stage_range[stage]);
  bf1[7] = clamp_value(bf0[7] + bf0[24], stage_range[stage]);
  bf1[8] = clamp_value(bf0[8] + bf0[23], stage_range[stage]);
  bf1[9] = clamp_value(bf0[9] + bf0[22], stage_range[stage]);
  bf1[10] = clamp_value(bf0[10] + bf0[21], stage_range[stage]);
  bf1[11] = clamp_value(bf0[11] + bf0[20], stage_range[stage]);
  bf1[12] = clamp_value(bf0[12] + bf0[19], stage_range[stage]);
  bf1[13] = clamp_value(bf0[13] + bf0[18], stage_range[stage]);
  bf1[14] = clamp_value(bf0[14] + bf0[17], stage_range[stage]);
  bf1[15] = clamp_value(bf0[15] + bf0[16], stage_range[stage]);
  bf1[16] = clamp_value(bf0[15] - bf0[16], stage_range[stage]);
  bf1[17] = clamp_value(bf0[14] - bf0[17], stage_range[stage]);
  bf1[18] = clamp_value(bf0[13] - bf0[18], stage_range[stage]);
  bf1[19] = clamp_value(bf0[12] - bf0[19], stage_range[stage]);
  bf1[20] = clamp_value(bf0[11] - bf0[20], stage_range[stage]);
  bf1[21] = clamp_value(bf0[10] - bf0[21], stage_range[stage]);
  bf1[22] = clamp_value(bf0[9] - bf0[22], stage_range[stage]);
  bf1[23] = clamp_value(bf0[8] - bf0[23], stage_range[stage]);
  bf1[24] = clamp_value(bf0[7] - bf0[24], stage_range[stage]);
  bf1[25] = clamp_value(bf0[6] - bf0[25], stage_range[stage]);
  bf1[26] = clamp_value(bf0[5] - bf0[26], stage_range[stage]);
  bf1[27] = clamp_value(bf0[4] - bf0[27], stage_range[stage]);
  bf1[28] = clamp_value(bf0[3] - bf0[28], stage_range[stage]);
  bf1[29] = clamp_value(bf0[2] - bf0[29], stage_range[stage]);
  bf1[30] = clamp_value(bf0[1] - bf0[30], stage_range[stage]);
  bf1[31] = clamp_value(bf0[0] - bf0[31], stage_range[stage]);
  bf1[32] = bf0[32];
  bf1[33] = bf0[33];
  bf1[34] = bf0[34];
  bf1[35] = bf0[35];
  bf1[36] = bf0[36];
  bf1[37] = bf0[37];
  bf1[38] = bf0[38];
  bf1[39] = bf0[39];
  bf1[40] = half_btf(-cospi[32], bf0[40], cospi[32], bf0[55], cos_bit);
  bf1[41] = half_btf(-cospi[32], bf0[41], cospi[32], bf0[54], cos_bit);
  bf1[42] = half_btf(-cospi[32], bf0[42], cospi[32], bf0[53], cos_bit);
  bf1[43] = half_btf(-cospi[32], bf0[43], cospi[32], bf0[52], cos_bit);
  bf1[44] = half_btf(-cospi[32], bf0[44], cospi[32], bf0[51], cos_bit);
  bf1[45] = half_btf(-cospi[32], bf0[45], cospi[32], bf0[50], cos_bit);
  bf1[46] = half_btf(-cospi[32], bf0[46], cospi[32], bf0[49], cos_bit);
  bf1[47] = half_btf(-cospi[32], bf0[47], cospi[32], bf0[48], cos_bit);
  bf1[48] = half_btf(cospi[32], bf0[47], cospi[32], bf0[48], cos_bit);
  bf1[49] = half_btf(cospi[32], bf0[46], cospi[32], bf0[49], cos_bit);
  bf1[50] = half_btf(cospi[32], bf0[45], cospi[32], bf0[50], cos_bit);
  bf1[51] = half_btf(cospi[32], bf0[44], cospi[32], bf0[51], cos_bit);
  bf1[52] = half_btf(cospi[32], bf0[43], cospi[32], bf0[52], cos_bit);
  bf1[53] = half_btf(cospi[32], bf0[42], cospi[32], bf0[53], cos_bit);
  bf1[54] = half_btf(cospi[32], bf0[41], cospi[32], bf0[54], cos_bit);
  bf1[55] = half_btf(cospi[32], bf0[40], cospi[32], bf0[55], cos_bit);
  bf1[56] = bf0[56];
  bf1[57] = bf0[57];
  bf1[58] = bf0[58];
  bf1[59] = bf0[59];
  bf1[60] = bf0[60];
  bf1[61] = bf0[61];
  bf1[62] = bf0[62];
  bf1[63] = bf0[63];
  av1_range_check_buf(stage, input, bf1, size, stage_range[stage]);

  // stage 11
  stage++;
  bf0 = step;
  bf1 = output;
  bf1[0] = clamp_value(bf0[0] + bf0[63], stage_range[stage]);
  bf1[1] = clamp_value(bf0[1] + bf0[62], stage_range[stage]);
  bf1[2] = clamp_value(bf0[2] + bf0[61], stage_range[stage]);
  bf1[3] = clamp_value(bf0[3] + bf0[60], stage_range[stage]);
  bf1[4] = clamp_value(bf0[4] + bf0[59], stage_range[stage]);
  bf1[5] = clamp_value(bf0[5] + bf0[58], stage_range[stage]);
  bf1[6] = clamp_value(bf0[6] + bf0[57], stage_range[stage]);
  bf1[7] = clamp_value(bf0[7] + bf0[56], stage_range[stage]);
  bf1[8] = clamp_value(bf0[8] + bf0[55], stage_range[stage]);
  bf1[9] = clamp_value(bf0[9] + bf0[54], stage_range[stage]);
  bf1[10] = clamp_value(bf0[10] + bf0[53], stage_range[stage]);
  bf1[11] = clamp_value(bf0[11] + bf0[52], stage_range[stage]);
  bf1[12] = clamp_value(bf0[12] + bf0[51], stage_range[stage]);
  bf1[13] = clamp_value(bf0[13] + bf0[50], stage_range[stage]);
  bf1[14] = clamp_value(bf0[14] + bf0[49], stage_range[stage]);
  bf1[15] = clamp_value(bf0[15] + bf0[48], stage_range[stage]);
  bf1[16] = clamp_value(bf0[16] + bf0[47], stage_range[stage]);
  bf1[17] = clamp_value(bf0[17] + bf0[46], stage_range[stage]);
  bf1[18] = clamp_value(bf0[18] + bf0[45], stage_range[stage]);
  bf1[19] = clamp_value(bf0[19] + bf0[44], stage_range[stage]);
  bf1[20] = clamp_value(bf0[20] + bf0[43], stage_range[stage]);
  bf1[21] = clamp_value(bf0[21] + bf0[42], stage_range[stage]);
  bf1[22] = clamp_value(bf0[22] + bf0[41], stage_range[stage]);
  bf1[23] = clamp_value(bf0[23] + bf0[40], stage_range[stage]);
  bf1[24] = clamp_value(bf0[24] + bf0[39], stage_range[stage]);
  bf1[25] = clamp_value(bf0[25] + bf0[38], stage_range[stage]);
  bf1[26] = clamp_value(bf0[26] + bf0[37], stage_range[stage]);
  bf1[27] = clamp_value(bf0[27] + bf0[36], stage_range[stage]);
  bf1[28] = clamp_value(bf0[28] + bf0[35], stage_range[stage]);
  bf1[29] = clamp_value(bf0[29] + bf0[34], stage_range[stage]);
  bf1[30] = clamp_value(bf0[30] + bf0[33], stage_range[stage]);
  bf1[31] = clamp_value(bf0[31] + bf0[32], stage_range[stage]);
  bf1[32] = clamp_value(bf0[31] - bf0[32], stage_range[stage]);
  bf1[33] = clamp_value(bf0[30] - bf0[33], stage_range[stage]);
  bf1[34] = clamp_value(bf0[29] - bf0[34], stage_range[stage]);
  bf1[35] = clamp_value(bf0[28] - bf0[35], stage_range[stage]);
  bf1[36] = clamp_value(bf0[27] - bf0[36], stage_range[stage]);
  bf1[37] = clamp_value(bf0[26] - bf0[37], stage_range[stage]);
  bf1[38] = clamp_value(bf0[25] - bf0[38], stage_range[stage]);
  bf1[39] = clamp_value(bf0[24] - bf0[39], stage_range[stage]);
  bf1[40] = clamp_value(bf0[23] - bf0[40], stage_range[stage]);
  bf1[41] = clamp_value(bf0[22] - bf0[41], stage_range[stage]);
  bf1[42] = clamp_value(bf0[21] - bf0[42], stage_range[stage]);
  bf1[43] = clamp_value(bf0[20] - bf0[43], stage_range[stage]);
  bf1[44] = clamp_value(bf0[19] - bf0[44], stage_range[stage]);
  bf1[45] = clamp_value(bf0[18] - bf0[45], stage_range[stage]);
  bf1[46] = clamp_value(bf0[17] - bf0[46], stage_range[stage]);
  bf1[47] = clamp_value(bf0[16] - bf0[47], stage_range[stage]);
  bf1[48] = clamp_value(bf0[15] - bf0[48], stage_range[stage]);
  bf1[49] = clamp_value(bf0[14] - bf0[49], stage_range[stage]);
  bf1[50] = clamp_value(bf0[13] - bf0[50], stage_range[stage]);
  bf1[51] = clamp_value(bf0[12] - bf0[51], stage_range[stage]);
  bf1[52] = clamp_value(bf0[11] - bf0[52], stage_range[stage]);
  bf1[53] = clamp_value(bf0[10] - bf0[53], stage_range[stage]);
  bf1[54] = clamp_value(bf0[9] - bf0[54], stage_range[stage]);
  bf1[55] = clamp_value(bf0[8] - bf0[55], stage_range[stage]);
  bf1[56] = clamp_value(bf0[7] - bf0[56], stage_range[stage]);
  bf1[57] = clamp_value(bf0[6] - bf0[57], stage_range[stage]);
  bf1[58] = clamp_value(bf0[5] - bf0[58], stage_range[stage]);
  bf1[59] = clamp_value(bf0[4] - bf0[59], stage_range[stage]);
  bf1[60] = clamp_value(bf0[3] - bf0[60], stage_range[stage]);
  bf1[61] = clamp_value(bf0[2] - bf0[61], stage_range[stage]);
  bf1[62] = clamp_value(bf0[1] - bf0[62], stage_range[stage]);
  bf1[63] = clamp_value(bf0[0] - bf0[63], stage_range[stage]);
}
