#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int uint32_t;
typedef int int32_t;

/* Variables and functions */
int32_t dct(int32_t *dctBlock) {
  int32_t shft1L;
  int32_t shft2L;
  uint32_t shft2UL;
  int32_t x8;
  int32_t x7;
  int32_t x6;
  int32_t x5;
  int32_t x4;
  int32_t x3;
  int32_t x2;
  int32_t x1;
  int32_t x0;
  int32_t col;
  int32_t row;
  int32_t D2012;
  int32_t D2011;
  int32_t D2010;
  int32_t D2009;
  int32_t D2008;
  int32_t D2007;
  int32_t D2006;
  int32_t D2005;
  int32_t D2004;
  int32_t D2003;
  int32_t D2002;
  int32_t D2001;
  int32_t D2000;
  int32_t *D1999;
  int32_t *D1998;
  int32_t *D1997;
  int32_t *D1996;
  int32_t *D1995;
  int32_t *D1994;
  int32_t *D1993;
  int32_t D1992;
  int32_t D1991;
  int32_t D1990;
  int32_t D1989;
  int32_t D1988;
  int32_t D1987;
  int32_t D1986;
  int32_t D1985;
  int32_t D1984;
  int32_t D1983;
  int32_t D1982;
  int32_t D1981;
  int32_t D1980;
  int32_t *D1979;
  uint32_t D1978;
  uint32_t row_0;
bb2:
  row = 0;
  goto bb4;
bb3:
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  x0 = D1979[0];
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  x1 = D1979[1];
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  x2 = D1979[2];
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  x3 = D1979[3];
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  x4 = D1979[4];
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  x5 = D1979[5];
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  x6 = D1979[6];
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  x7 = D1979[7];
  x8 = x7 + x0;
  x0 = x0 - x7;
  x7 = x1 + x6;
  x1 = x1 - x6;
  x6 = x2 + x5;
  x2 = x2 - x5;
  x5 = x3 + x4;
  x3 = x3 - x4;
  x4 = x8 + x5;
  x8 = x8 - x5;
  x5 = x7 + x6;
  x7 = x7 - x6;
  D1980 = x1 + x2;
  shft1L = D1980 >> 14;
  x6 = shft1L * 32138L;
  shft1L = x2 >> 14;
  D1981 = shft1L * -19266;
  shft2L = x6 >> 1;
  x2 = D1981 + shft2L;
  shft1L = x1 >> 14;
  D1982 = shft1L * -25746;
  x1 = D1982 + x6;
  D1983 = x0 + x3;
  shft1L = D1983 >> 14;
  x6 = shft1L * 27246L;
  shft1L = x3 >> 15;
  D1984 = shft1L * -45451;
  shft2L = x6 >> 1;
  x3 = D1984 + shft2L;
  shft1L = x0 >> 15;
  D1985 = shft1L * -36163;
  shft1L = D1985 >> 1;
  x0 = shft1L + x6;
  x6 = x4 + x5;
  x4 = x4 - x5;
  shft1L = x0 >> 1;
  x5 = shft1L + x2;
  shft1L = x0 >> 1;
  x0 = shft1L - x2;
  shft2L = x1 >> 1;
  x2 = x3 + shft2L;
  shft2L = x1 >> 1;
  x3 = x3 - shft2L;
  D1986 = x7 + x8;
  shft1L = D1986 >> 14;
  x1 = shft1L * 17734L;
  shft1L = x7 >> 14;
  D1987 = shft1L * -30274;
  shft2L = x1 >> 1;
  x7 = D1987 + shft2L;
  shft1L = x8 >> 14;
  D1988 = shft1L * 6270;
  shft1L = D1988 << 1;
  shft2L = x1 >> 1;
  x8 = shft1L + shft2L;
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  D1979[0] = x6;
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  D1979[4] = x4;
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  D1979[2] = x8;
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  D1979[6] = x7;
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  D1989 = x2 - x5;
  D1979[7] = D1989;
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  D1990 = x2 + x5;
  D1979[1] = D1990;
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  shft1L = x3 >> 14;
  D1991 = shft1L * 23170L;
  D1979[3] = D1991;
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  shft1L = x0 >> 14;
  D1992 = shft1L * 23170L;
  D1979[5] = D1992;
  row = row + 1;
bb4:
  if (row <= 7)
    goto bb3;
  else
    goto bb5;
bb5:
  col = 0;
  goto bb7;
bb6:
  x0 = dctBlock[col];
  D1993 = dctBlock + (32 / sizeof(*dctBlock));
  x1 = D1993[col];
  D1994 = dctBlock + (64 / sizeof(*dctBlock));
  x2 = D1994[col];
  D1995 = dctBlock + (96 / sizeof(*dctBlock));
  x3 = D1995[col];
  D1996 = dctBlock + (128 / sizeof(*dctBlock));
  x4 = D1996[col];
  D1997 = dctBlock + (160 / sizeof(*dctBlock));
  x5 = D1997[col];
  D1998 = dctBlock + (192 / sizeof(*dctBlock));
  x6 = D1998[col];
  D1999 = dctBlock + (224 / sizeof(*dctBlock));
  x7 = D1999[col];
  x8 = x7 + x0;
  x0 = x0 - x7;
  x7 = x1 + x6;
  x1 = x1 - x6;
  x6 = x2 + x5;
  x2 = x2 - x5;
  x5 = x3 + x4;
  x3 = x3 - x4;
  x4 = x8 + x5;
  x8 = x8 - x5;
  x5 = x7 + x6;
  x7 = x7 - x6;
  D2000 = x1 + x2;
  shft1L = D2000 >> 14;
  x6 = shft1L * 32138L;
  shft1L = x2 >> 14;
  D2001 = shft1L * -19266;
  shft2L = x6 >> 1;
  x2 = D2001 + shft2L;
  shft1L = x1 >> 14;
  D2002 = shft1L * -25746;
  x1 = D2002 + x6;
  D2003 = x0 + x3;
  shft1L = D2003 >> 14;
  x6 = shft1L * 27246L;
  shft1L = x3 >> 15;
  D2004 = shft1L * -45451;
  shft2L = x6 >> 1;
  x3 = D2004 + shft2L;
  shft1L = x0 >> 15;
  D2005 = shft1L * -36163;
  shft1L = D2005 >> 1;
  x0 = shft1L + x6;
  x6 = x4 + x5;
  x4 = x4 - x5;
  shft1L = x0 >> 1;
  x5 = shft1L + x2;
  shft1L = x0 >> 1;
  x0 = shft1L - x2;
  shft2L = x1 >> 1;
  x2 = x3 + shft2L;
  shft2L = x1 >> 1;
  x3 = x3 - shft2L;
  D2006 = x7 + x8;
  shft1L = D2006 >> 14;
  x1 = shft1L * 17734L;
  shft1L = x7 >> 14;
  D2007 = shft1L * -30274;
  shft2L = x1 >> 1;
  x7 = D2007 + shft2L;
  shft1L = x8 >> 14;
  D2008 = shft1L * 6270;
  shft1L = D2008 << 1;
  shft2L = x1 >> 1;
  x8 = shft1L + shft2L;
  dctBlock[col] = x6;
  D1996 = dctBlock + (128 / sizeof(*dctBlock));
  D1996[col] = x4;
  D1994 = dctBlock + (64 / sizeof(*dctBlock));
  D1994[col] = x8;
  D1998 = dctBlock + (192 / sizeof(*dctBlock));
  D1998[col] = x7;
  D1999 = dctBlock + (224 / sizeof(*dctBlock));
  D2009 = x2 - x5;
  D1999[col] = D2009;
  D1993 = dctBlock + (32 / sizeof(*dctBlock));
  D2010 = x2 + x5;
  D1993[col] = D2010;
  D1995 = dctBlock + (96 / sizeof(*dctBlock));
  shft1L = x3 >> 14;
  D2011 = shft1L * 23170L;
  D1995[col] = D2011;
  D1997 = dctBlock + (160 / sizeof(*dctBlock));
  shft1L = x0 >> 14;
  D2012 = shft1L * 23170L;
  D1997[col] = D2012;
  col = col + 1;
bb7:
  if (col <= 7)
    goto bb6;
  else
    goto bb8;
bb8:
  return 0;
}


x86 assembly (clang, -O0):
<dct>:
push   %rbp
mov    %rsp,%rbp
sub    $0x78,%rsp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0x40(%rbp)
jmp    1861 <dct+0x761>
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x38(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x34(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    0x8(%rax),%eax
mov    %eax,-0x30(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    0xc(%rax),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    0x10(%rax),%eax
mov    %eax,-0x28(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    0x14(%rax),%eax
mov    %eax,-0x24(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    0x18(%rax),%eax
mov    %eax,-0x20(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0xf0(%rbp),%rax
mov    0x1c(%rax),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x1c(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x34(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x34(%rbp),%eax
sub    -0x20(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x30(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x30(%rbp),%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x2c(%rbp),%eax
sub    -0x28(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x1c(%rbp),%eax
sub    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x34(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0xe4(%rbp)
mov    -0xe4(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x7d8a,%rax,%rax
mov    %eax,-0x20(%rbp)
mov    -0x30(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffffb4be,-0xc(%rbp),%eax
mov    %eax,-0xe0(%rbp)
mov    -0x20(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0xe0(%rbp),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x34(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff9b6e,-0xc(%rbp),%eax
mov    %eax,-0xdc(%rbp)
mov    -0xdc(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x38(%rbp),%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0xd8(%rbp)
mov    -0xd8(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x6a6e,%rax,%rax
mov    %eax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
sar    $0xf,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff4e75,-0xc(%rbp),%eax
mov    %eax,-0xd4(%rbp)
mov    -0x20(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0xd4(%rbp),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x38(%rbp),%eax
sar    $0xf,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff72bd,-0xc(%rbp),%eax
mov    %eax,-0xd0(%rbp)
mov    -0xd0(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x28(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x28(%rbp),%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x38(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x38(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x34(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x34(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x2c(%rbp),%eax
sub    -0x10(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x18(%rbp),%eax
mov    %eax,-0xcc(%rbp)
mov    -0xcc(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x4546,%rax,%rax
mov    %eax,-0x34(%rbp)
mov    -0x1c(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff89be,-0xc(%rbp),%eax
mov    %eax,-0xc8(%rbp)
mov    -0x34(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0xc8(%rbp),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0x187e,-0xc(%rbp),%eax
mov    %eax,-0xc4(%rbp)
mov    -0xc4(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0x34(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0xc(%rbp),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0x20(%rbp),%ecx
mov    -0xf0(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0x28(%rbp),%ecx
mov    -0xf0(%rbp),%rax
mov    %ecx,0x10(%rax)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0x18(%rbp),%ecx
mov    -0xf0(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0x1c(%rbp),%ecx
mov    -0xf0(%rbp),%rax
mov    %ecx,0x18(%rax)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0x30(%rbp),%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0xc0(%rbp)
mov    -0xc0(%rbp),%ecx
mov    -0xf0(%rbp),%rax
mov    %ecx,0x1c(%rax)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0x30(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0xbc(%rbp)
mov    -0xbc(%rbp),%ecx
mov    -0xf0(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0x2c(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x5a82,%rax,%rax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%ecx
mov    -0xf0(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x40(%rbp),%eax
mov    %eax,-0xf8(%rbp)
mov    -0xf8(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf0(%rbp)
mov    -0x38(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x5a82,%rax,%rax
mov    %eax,-0xb4(%rbp)
mov    -0xb4(%rbp),%ecx
mov    -0xf0(%rbp),%rax
mov    %ecx,0x14(%rax)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x40(%rbp)
cmpl   $0x7,-0x40(%rbp)
jg     1870 <dct+0x770>
jmp    1118 <dct+0x18>
jmp    1875 <dct+0x775>
movl   $0x0,-0x3c(%rbp)
jmp    1cae <dct+0xbae>
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x38(%rbp)
mov    -0x8(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0xb0(%rbp)
mov    -0xb0(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x34(%rbp)
mov    -0x8(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0xa8(%rbp)
mov    -0xa8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x30(%rbp)
mov    -0x8(%rbp),%rax
add    $0x60,%rax
mov    %rax,-0xa0(%rbp)
mov    -0xa0(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x8(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x98(%rbp)
mov    -0x98(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
add    $0xa0,%rax
mov    %rax,-0x90(%rbp)
mov    -0x90(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
add    $0xc0,%rax
mov    %rax,-0x88(%rbp)
mov    -0x88(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x20(%rbp)
mov    -0x8(%rbp),%rax
add    $0xe0,%rax
mov    %rax,-0x80(%rbp)
mov    -0x80(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x1c(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x34(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x34(%rbp),%eax
sub    -0x20(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x30(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x30(%rbp),%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x2c(%rbp),%eax
sub    -0x28(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x1c(%rbp),%eax
sub    -0x20(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x34(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x74(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x7d8a,%rax,%rax
mov    %eax,-0x20(%rbp)
mov    -0x30(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffffb4be,-0xc(%rbp),%eax
mov    %eax,-0x70(%rbp)
mov    -0x20(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x70(%rbp),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x34(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff9b6e,-0xc(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x38(%rbp),%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x6a6e,%rax,%rax
mov    %eax,-0x20(%rbp)
mov    -0x2c(%rbp),%eax
sar    $0xf,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff4e75,-0xc(%rbp),%eax
mov    %eax,-0x64(%rbp)
mov    -0x20(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x64(%rbp),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x38(%rbp),%eax
sar    $0xf,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff72bd,-0xc(%rbp),%eax
mov    %eax,-0x60(%rbp)
mov    -0x60(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x28(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x28(%rbp),%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x38(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x38(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x34(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x34(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x2c(%rbp),%eax
sub    -0x10(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x18(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x4546,%rax,%rax
mov    %eax,-0x34(%rbp)
mov    -0x1c(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff89be,-0xc(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x34(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x58(%rbp),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x18(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0x187e,-0xc(%rbp),%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0x34(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0xc(%rbp),%eax
add    -0x10(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x20(%rbp),%edx
mov    -0x8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0x98(%rbp)
mov    -0x28(%rbp),%edx
mov    -0x98(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0xa8(%rbp)
mov    -0x18(%rbp),%edx
mov    -0xa8(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0xc0,%rax
mov    %rax,-0x88(%rbp)
mov    -0x1c(%rbp),%edx
mov    -0x88(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0xe0,%rax
mov    %rax,-0x80(%rbp)
mov    -0x30(%rbp),%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0x50(%rbp)
mov    -0x50(%rbp),%edx
mov    -0x80(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0xb0(%rbp)
mov    -0x30(%rbp),%eax
add    -0x24(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x4c(%rbp),%edx
mov    -0xb0(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0x60,%rax
mov    %rax,-0xa0(%rbp)
mov    -0x2c(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x5a82,%rax,%rax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%edx
mov    -0xa0(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0xa0,%rax
mov    %rax,-0x90(%rbp)
mov    -0x38(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x5a82,%rax,%rax
mov    %eax,-0x44(%rbp)
mov    -0x44(%rbp),%edx
mov    -0x90(%rbp),%rax
movslq -0x3c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
cmpl   $0x7,-0x3c(%rbp)
jg     1cbd <dct+0xbbd>
jmp    1881 <dct+0x781>
jmp    1cc2 <dct+0xbc2>
xor    %eax,%eax
add    $0x78,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dct>:
push   %rbp
push   %r15
push   %r14
push   %rbx
xor    %eax,%eax
nopl   0x0(%rax,%rax,1)
mov    (%rdi,%rax,1),%r14d
mov    0x4(%rdi,%rax,1),%edx
mov    0x8(%rdi,%rax,1),%ebx
mov    0xc(%rdi,%rax,1),%ecx
mov    0x10(%rdi,%rax,1),%r8d
mov    0x14(%rdi,%rax,1),%r11d
mov    0x18(%rdi,%rax,1),%ebp
mov    0x1c(%rdi,%rax,1),%esi
lea    (%rsi,%r14,1),%r9d
sub    %esi,%r14d
lea    (%rdx,%rbp,1),%r10d
sub    %ebp,%edx
lea    (%r11,%rbx,1),%esi
sub    %r11d,%ebx
lea    (%r8,%rcx,1),%ebp
sub    %r8d,%ecx
lea    (%r9,%rbp,1),%r8d
sub    %ebp,%r9d
lea    (%r10,%rsi,1),%r11d
sub    %esi,%r10d
lea    (%rdx,%rbx,1),%esi
sar    $0xe,%esi
imul   $0x7d8a,%esi,%esi
sar    $0xe,%ebx
imul   $0xffffb4be,%ebx,%r15d
sar    $0xe,%edx
imul   $0xffff9b6e,%edx,%ebx
add    %esi,%ebx
mov    %esi,%ebp
sar    %ebp
add    %r15d,%ebp
lea    (%r14,%rcx,1),%edx
sar    $0xe,%edx
imul   $0x6a6e,%edx,%edx
sar    $0xf,%ecx
imul   $0xffff4e75,%ecx,%esi
sar    $0xf,%r14d
imul   $0xffff72bd,%r14d,%ecx
sar    %ecx
add    %edx,%ecx
sar    %edx
add    %esi,%edx
lea    (%r8,%r11,1),%r14d
sub    %r11d,%r8d
sar    %ecx
lea    (%rcx,%rbp,1),%r11d
sub    %ebp,%ecx
sar    %ebx
lea    (%rdx,%rbx,1),%r15d
sub    %ebx,%edx
lea    (%r9,%r10,1),%ebx
sar    $0xe,%ebx
imul   $0x4546,%ebx,%ebx
sar    $0xe,%r10d
imul   $0xffff89be,%r10d,%esi
sar    %ebx
add    %ebx,%esi
sar    $0xe,%r9d
imul   $0x30fc,%r9d,%ebp
add    %ebx,%ebp
mov    %r14d,(%rdi,%rax,1)
mov    %r8d,0x10(%rdi,%rax,1)
mov    %ebp,0x8(%rdi,%rax,1)
mov    %esi,0x18(%rdi,%rax,1)
mov    %r15d,%esi
sub    %r11d,%esi
mov    %esi,0x1c(%rdi,%rax,1)
add    %r11d,%r15d
mov    %r15d,0x4(%rdi,%rax,1)
sar    $0xe,%edx
imul   $0x5a82,%edx,%edx
mov    %edx,0xc(%rdi,%rax,1)
sar    $0xe,%ecx
imul   $0x5a82,%ecx,%ecx
mov    %ecx,0x14(%rdi,%rax,1)
add    $0x20,%rax
cmp    $0x100,%rax
jne    1110 <dct+0x10>
movdqu 0x40(%rdi),%xmm0
movdqu 0x60(%rdi),%xmm4
movdqu 0x80(%rdi),%xmm8
movdqu 0xa0(%rdi),%xmm5
movdqu 0xc0(%rdi),%xmm2
movdqu 0xe0(%rdi),%xmm3
movdqu (%rdi),%xmm1
movdqu 0x20(%rdi),%xmm6
movdqa %xmm3,%xmm7
paddd  %xmm1,%xmm7
psubd  %xmm3,%xmm1
movdqa %xmm2,%xmm10
paddd  %xmm6,%xmm10
psubd  %xmm2,%xmm6
movdqa %xmm5,%xmm2
paddd  %xmm0,%xmm2
psubd  %xmm5,%xmm0
movdqa %xmm8,%xmm3
paddd  %xmm4,%xmm3
psubd  %xmm8,%xmm4
movdqa %xmm7,%xmm11
paddd  %xmm3,%xmm11
psubd  %xmm3,%xmm7
movdqa %xmm10,%xmm14
paddd  %xmm2,%xmm14
psubd  %xmm2,%xmm10
movdqa %xmm6,%xmm2
paddd  %xmm0,%xmm2
psrad  $0xe,%xmm2
movdqa 0xd2c(%rip),%xmm8
pshufd $0xf5,%xmm2,%xmm5
pmuludq %xmm8,%xmm2
pshufd $0xe8,%xmm2,%xmm3
pmuludq %xmm8,%xmm5
pshufd $0xe8,%xmm5,%xmm2
punpckldq %xmm2,%xmm3
psrad  $0xe,%xmm0
movdqa 0xd11(%rip),%xmm8
pshufd $0xf5,%xmm0,%xmm2
pmuludq %xmm8,%xmm0
pshufd $0xe8,%xmm0,%xmm5
pmuludq %xmm8,%xmm2
pshufd $0xe8,%xmm2,%xmm0
punpckldq %xmm0,%xmm5
psrad  $0xe,%xmm6
movdqa 0xcf7(%rip),%xmm2
pshufd $0xf5,%xmm6,%xmm0
pmuludq %xmm2,%xmm6
pshufd $0xe8,%xmm6,%xmm6
pmuludq %xmm2,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm6
paddd  %xmm3,%xmm6
movdqa %xmm3,%xmm0
psrad  $0x1,%xmm0
paddd  %xmm5,%xmm0
movdqa %xmm1,%xmm2
paddd  %xmm4,%xmm2
psrad  $0xe,%xmm2
movdqa 0xcc5(%rip),%xmm8
pshufd $0xf5,%xmm2,%xmm5
pmuludq %xmm8,%xmm2
pshufd $0xe8,%xmm2,%xmm3
pmuludq %xmm8,%xmm5
pshufd $0xe8,%xmm5,%xmm2
punpckldq %xmm2,%xmm3
psrad  $0xf,%xmm4
movdqa 0xcaa(%rip),%xmm8
pshufd $0xf5,%xmm4,%xmm2
pmuludq %xmm8,%xmm4
pshufd $0xe8,%xmm4,%xmm5
pmuludq %xmm8,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm5
psrad  $0xf,%xmm1
movdqa 0xc8f(%rip),%xmm13
pshufd $0xf5,%xmm1,%xmm2
pmuludq %xmm13,%xmm1
pshufd $0xe8,%xmm1,%xmm4
pmuludq %xmm13,%xmm2
pshufd $0xe8,%xmm2,%xmm1
punpckldq %xmm1,%xmm4
psrad  $0x1,%xmm4
paddd  %xmm3,%xmm4
movdqa %xmm3,%xmm1
psrad  $0x1,%xmm1
paddd  %xmm5,%xmm1
movdqa %xmm11,%xmm9
paddd  %xmm14,%xmm9
psubd  %xmm14,%xmm11
psrad  $0x1,%xmm4
movdqa %xmm4,%xmm8
paddd  %xmm0,%xmm8
psubd  %xmm0,%xmm4
psrad  $0x1,%xmm6
movdqa %xmm1,%xmm3
paddd  %xmm6,%xmm3
psubd  %xmm6,%xmm1
movdqa %xmm7,%xmm2
paddd  %xmm10,%xmm2
psrad  $0xe,%xmm2
movdqa 0xc22(%rip),%xmm14
pshufd $0xf5,%xmm2,%xmm6
pmuludq %xmm14,%xmm2
pshufd $0xe8,%xmm2,%xmm5
pmuludq %xmm14,%xmm6
pshufd $0xe8,%xmm6,%xmm2
punpckldq %xmm2,%xmm5
psrad  $0xe,%xmm10
movdqa 0xc06(%rip),%xmm15
pshufd $0xf5,%xmm10,%xmm2
pmuludq %xmm15,%xmm10
pshufd $0xe8,%xmm10,%xmm6
pmuludq %xmm15,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm6
psrad  $0xe,%xmm7
movdqa 0xbe9(%rip),%xmm12
pshufd $0xf5,%xmm7,%xmm2
pmuludq %xmm12,%xmm7
pshufd $0xe8,%xmm7,%xmm0
pmuludq %xmm12,%xmm2
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm0
psrad  $0x1,%xmm5
paddd  %xmm5,%xmm6
paddd  %xmm5,%xmm0
movdqu 0x10(%rdi),%xmm5
movdqu 0x30(%rdi),%xmm7
movdqu %xmm9,(%rdi)
movdqu %xmm11,0x80(%rdi)
movdqu %xmm0,0x40(%rdi)
movdqu %xmm6,0xc0(%rdi)
movdqa %xmm3,%xmm0
psubd  %xmm8,%xmm0
movdqu %xmm0,0xe0(%rdi)
paddd  %xmm8,%xmm3
movdqu %xmm3,0x20(%rdi)
psrad  $0xe,%xmm1
movdqa 0xb81(%rip),%xmm10
pshufd $0xf5,%xmm1,%xmm0
pmuludq %xmm10,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pmuludq %xmm10,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x60(%rdi)
psrad  $0xe,%xmm4
pshufd $0xf5,%xmm4,%xmm0
pmuludq %xmm10,%xmm4
pshufd $0xe8,%xmm4,%xmm1
pmuludq %xmm10,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0xa0(%rdi)
movdqu 0x50(%rdi),%xmm2
movdqu 0xd0(%rdi),%xmm0
movdqu 0xf0(%rdi),%xmm1
movdqa %xmm1,%xmm11
paddd  %xmm5,%xmm11
psubd  %xmm1,%xmm5
movdqa %xmm0,%xmm6
paddd  %xmm7,%xmm6
psubd  %xmm0,%xmm7
movdqu 0xb0(%rdi),%xmm0
movdqa %xmm0,%xmm4
paddd  %xmm2,%xmm4
psubd  %xmm0,%xmm2
movdqu 0x70(%rdi),%xmm0
movdqu 0x90(%rdi),%xmm3
movdqa %xmm3,%xmm1
paddd  %xmm0,%xmm1
psubd  %xmm3,%xmm0
movdqa %xmm11,%xmm9
paddd  %xmm1,%xmm9
psubd  %xmm1,%xmm11
movdqa %xmm6,%xmm8
paddd  %xmm4,%xmm8
psubd  %xmm4,%xmm6
movdqa %xmm7,%xmm3
paddd  %xmm2,%xmm3
psrad  $0xe,%xmm3
pshufd $0xf5,%xmm3,%xmm4
movdqa 0xa12(%rip),%xmm1
pmuludq %xmm1,%xmm3
pmuludq %xmm1,%xmm4
pshufd $0xe8,%xmm3,%xmm3
pshufd $0xe8,%xmm4,%xmm4
punpckldq %xmm4,%xmm3
psrad  $0xe,%xmm2
pshufd $0xf5,%xmm2,%xmm4
movdqa 0x9fa(%rip),%xmm1
pmuludq %xmm1,%xmm2
pmuludq %xmm1,%xmm4
pshufd $0xe8,%xmm2,%xmm1
pshufd $0xe8,%xmm4,%xmm2
punpckldq %xmm2,%xmm1
psrad  $0xe,%xmm7
pshufd $0xf5,%xmm7,%xmm2
movdqa 0x9e2(%rip),%xmm4
pmuludq %xmm4,%xmm7
pmuludq %xmm4,%xmm2
pshufd $0xe8,%xmm7,%xmm7
pshufd $0xe8,%xmm2,%xmm2
punpckldq %xmm2,%xmm7
paddd  %xmm3,%xmm7
movdqa %xmm3,%xmm2
psrad  $0x1,%xmm2
paddd  %xmm1,%xmm2
movdqa %xmm5,%xmm1
paddd  %xmm0,%xmm1
psrad  $0xe,%xmm1
pshufd $0xf5,%xmm1,%xmm3
movdqa 0x9b1(%rip),%xmm4
pmuludq %xmm4,%xmm1
pmuludq %xmm4,%xmm3
pshufd $0xe8,%xmm1,%xmm4
pshufd $0xe8,%xmm3,%xmm1
punpckldq %xmm1,%xmm4
psrad  $0xf,%xmm0
pshufd $0xf5,%xmm0,%xmm1
movdqa 0x999(%rip),%xmm3
pmuludq %xmm3,%xmm0
pmuludq %xmm3,%xmm1
pshufd $0xe8,%xmm0,%xmm3
pshufd $0xe8,%xmm1,%xmm0
punpckldq %xmm0,%xmm3
psrad  $0xf,%xmm5
pshufd $0xf5,%xmm5,%xmm0
pmuludq %xmm13,%xmm5
pmuludq %xmm13,%xmm0
pshufd $0xe8,%xmm5,%xmm5
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm5
psrad  $0x1,%xmm5
paddd  %xmm4,%xmm5
movdqa %xmm4,%xmm0
psrad  $0x1,%xmm0
paddd  %xmm3,%xmm0
movdqa %xmm9,%xmm13
paddd  %xmm8,%xmm13
psubd  %xmm8,%xmm9
psrad  $0x1,%xmm5
movdqa %xmm5,%xmm1
paddd  %xmm2,%xmm1
psubd  %xmm2,%xmm5
psrad  $0x1,%xmm7
movdqa %xmm0,%xmm2
paddd  %xmm7,%xmm2
psubd  %xmm7,%xmm0
movdqa %xmm11,%xmm3
paddd  %xmm6,%xmm3
psrad  $0xe,%xmm3
pshufd $0xf5,%xmm3,%xmm7
pmuludq %xmm14,%xmm3
pmuludq %xmm14,%xmm7
pshufd $0xe8,%xmm3,%xmm3
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm3
psrad  $0xe,%xmm6
pshufd $0xf5,%xmm6,%xmm7
pmuludq %xmm15,%xmm6
pmuludq %xmm15,%xmm7
pshufd $0xe8,%xmm6,%xmm6
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm6
psrad  $0xe,%xmm11
pshufd $0xf5,%xmm11,%xmm7
pmuludq %xmm12,%xmm11
pmuludq %xmm12,%xmm7
pshufd $0xe8,%xmm11,%xmm4
pshufd $0xe8,%xmm7,%xmm7
punpckldq %xmm7,%xmm4
psrad  $0x1,%xmm3
paddd  %xmm3,%xmm6
paddd  %xmm3,%xmm4
movdqu %xmm13,0x10(%rdi)
movdqu %xmm9,0x90(%rdi)
movdqu %xmm4,0x50(%rdi)
movdqu %xmm6,0xd0(%rdi)
movdqa %xmm2,%xmm3
psubd  %xmm1,%xmm3
movdqu %xmm3,0xf0(%rdi)
paddd  %xmm1,%xmm2
movdqu %xmm2,0x30(%rdi)
psrad  $0xe,%xmm0
pshufd $0xf5,%xmm0,%xmm1
pmuludq %xmm10,%xmm0
pshufd $0xe8,%xmm0,%xmm0
pmuludq %xmm10,%xmm1
pshufd $0xe8,%xmm1,%xmm1
punpckldq %xmm1,%xmm0
movdqu %xmm0,0x70(%rdi)
psrad  $0xe,%xmm5
pshufd $0xf5,%xmm5,%xmm0
pmuludq %xmm10,%xmm5
pmuludq %xmm10,%xmm0
pshufd $0xe8,%xmm5,%xmm1
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0xb0(%rdi)
xor    %eax,%eax
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @dct(i32* %0) {
%2 = alloca i32*
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32*
%31 = alloca i32*
%32 = alloca i32*
%33 = alloca i32*
%34 = alloca i32*
%35 = alloca i32*
%36 = alloca i32*
%37 = alloca i32
%38 = alloca i32
%39 = alloca i32
%40 = alloca i32
%41 = alloca i32
%42 = alloca i32
%43 = alloca i32
%44 = alloca i32
%45 = alloca i32
%46 = alloca i32
%47 = alloca i32
%48 = alloca i32
%49 = alloca i32
%50 = alloca i32*
%51 = alloca i32
%52 = alloca i32
store i32* %0, i32** %2
br label %53
53: ; preds = %1
store i32 0, i32* %16
br label %426
54: ; preds = %429
%55 = load i32, i32* %16
store i32 %55, i32* %52
%56 = load i32, i32* %52
%57 = mul nsw i32 %56, 64
store i32 %57, i32* %51
%58 = load i32, i32* %51
%59 = ashr i32 %58, 1
store i32 %59, i32* %5
%60 = load i32*, i32** %2
%61 = load i32, i32* %5
%62 = sext i32 %61 to i64
%63 = udiv i64 %62, 4
%64 = getelementptr inbounds i32, i32* %60, i64 %63
store i32* %64, i32** %50
%65 = load i32*, i32** %50
%66 = getelementptr inbounds i32, i32* %65, i64 0
%67 = load i32, i32* %66
store i32 %67, i32* %14
%68 = load i32, i32* %16
store i32 %68, i32* %52
%69 = load i32, i32* %52
%70 = mul nsw i32 %69, 64
store i32 %70, i32* %51
%71 = load i32, i32* %51
%72 = ashr i32 %71, 1
store i32 %72, i32* %5
%73 = load i32*, i32** %2
%74 = load i32, i32* %5
%75 = sext i32 %74 to i64
%76 = udiv i64 %75, 4
%77 = getelementptr inbounds i32, i32* %73, i64 %76
store i32* %77, i32** %50
%78 = load i32*, i32** %50
%79 = getelementptr inbounds i32, i32* %78, i64 1
%80 = load i32, i32* %79
store i32 %80, i32* %13
%81 = load i32, i32* %16
store i32 %81, i32* %52
%82 = load i32, i32* %52
%83 = mul nsw i32 %82, 64
store i32 %83, i32* %51
%84 = load i32, i32* %51
%85 = ashr i32 %84, 1
store i32 %85, i32* %5
%86 = load i32*, i32** %2
%87 = load i32, i32* %5
%88 = sext i32 %87 to i64
%89 = udiv i64 %88, 4
%90 = getelementptr inbounds i32, i32* %86, i64 %89
store i32* %90, i32** %50
%91 = load i32*, i32** %50
%92 = getelementptr inbounds i32, i32* %91, i64 2
%93 = load i32, i32* %92
store i32 %93, i32* %12
%94 = load i32, i32* %16
store i32 %94, i32* %52
%95 = load i32, i32* %52
%96 = mul nsw i32 %95, 64
store i32 %96, i32* %51
%97 = load i32, i32* %51
%98 = ashr i32 %97, 1
store i32 %98, i32* %5
%99 = load i32*, i32** %2
%100 = load i32, i32* %5
%101 = sext i32 %100 to i64
%102 = udiv i64 %101, 4
%103 = getelementptr inbounds i32, i32* %99, i64 %102
store i32* %103, i32** %50
%104 = load i32*, i32** %50
%105 = getelementptr inbounds i32, i32* %104, i64 3
%106 = load i32, i32* %105
store i32 %106, i32* %11
%107 = load i32, i32* %16
store i32 %107, i32* %52
%108 = load i32, i32* %52
%109 = mul nsw i32 %108, 64
store i32 %109, i32* %51
%110 = load i32, i32* %51
%111 = ashr i32 %110, 1
store i32 %111, i32* %5
%112 = load i32*, i32** %2
%113 = load i32, i32* %5
%114 = sext i32 %113 to i64
%115 = udiv i64 %114, 4
%116 = getelementptr inbounds i32, i32* %112, i64 %115
store i32* %116, i32** %50
%117 = load i32*, i32** %50
%118 = getelementptr inbounds i32, i32* %117, i64 4
%119 = load i32, i32* %118
store i32 %119, i32* %10
%120 = load i32, i32* %16
store i32 %120, i32* %52
%121 = load i32, i32* %52
%122 = mul nsw i32 %121, 64
store i32 %122, i32* %51
%123 = load i32, i32* %51
%124 = ashr i32 %123, 1
store i32 %124, i32* %5
%125 = load i32*, i32** %2
%126 = load i32, i32* %5
%127 = sext i32 %126 to i64
%128 = udiv i64 %127, 4
%129 = getelementptr inbounds i32, i32* %125, i64 %128
store i32* %129, i32** %50
%130 = load i32*, i32** %50
%131 = getelementptr inbounds i32, i32* %130, i64 5
%132 = load i32, i32* %131
store i32 %132, i32* %9
%133 = load i32, i32* %16
store i32 %133, i32* %52
%134 = load i32, i32* %52
%135 = mul nsw i32 %134, 64
store i32 %135, i32* %51
%136 = load i32, i32* %51
%137 = ashr i32 %136, 1
store i32 %137, i32* %5
%138 = load i32*, i32** %2
%139 = load i32, i32* %5
%140 = sext i32 %139 to i64
%141 = udiv i64 %140, 4
%142 = getelementptr inbounds i32, i32* %138, i64 %141
store i32* %142, i32** %50
%143 = load i32*, i32** %50
%144 = getelementptr inbounds i32, i32* %143, i64 6
%145 = load i32, i32* %144
store i32 %145, i32* %8
%146 = load i32, i32* %16
store i32 %146, i32* %52
%147 = load i32, i32* %52
%148 = mul nsw i32 %147, 64
store i32 %148, i32* %51
%149 = load i32, i32* %51
%150 = ashr i32 %149, 1
store i32 %150, i32* %5
%151 = load i32*, i32** %2
%152 = load i32, i32* %5
%153 = sext i32 %152 to i64
%154 = udiv i64 %153, 4
%155 = getelementptr inbounds i32, i32* %151, i64 %154
store i32* %155, i32** %50
%156 = load i32*, i32** %50
%157 = getelementptr inbounds i32, i32* %156, i64 7
%158 = load i32, i32* %157
store i32 %158, i32* %7
%159 = load i32, i32* %7
%160 = load i32, i32* %14
%161 = add nsw i32 %159, %160
store i32 %161, i32* %6
%162 = load i32, i32* %14
%163 = load i32, i32* %7
%164 = sub nsw i32 %162, %163
store i32 %164, i32* %14
%165 = load i32, i32* %13
%166 = load i32, i32* %8
%167 = add nsw i32 %165, %166
store i32 %167, i32* %7
%168 = load i32, i32* %13
%169 = load i32, i32* %8
%170 = sub nsw i32 %168, %169
store i32 %170, i32* %13
%171 = load i32, i32* %12
%172 = load i32, i32* %9
%173 = add nsw i32 %171, %172
store i32 %173, i32* %8
%174 = load i32, i32* %12
%175 = load i32, i32* %9
%176 = sub nsw i32 %174, %175
store i32 %176, i32* %12
%177 = load i32, i32* %11
%178 = load i32, i32* %10
%179 = add nsw i32 %177, %178
store i32 %179, i32* %9
%180 = load i32, i32* %11
%181 = load i32, i32* %10
%182 = sub nsw i32 %180, %181
store i32 %182, i32* %11
%183 = load i32, i32* %6
%184 = load i32, i32* %9
%185 = add nsw i32 %183, %184
store i32 %185, i32* %10
%186 = load i32, i32* %6
%187 = load i32, i32* %9
%188 = sub nsw i32 %186, %187
store i32 %188, i32* %6
%189 = load i32, i32* %7
%190 = load i32, i32* %8
%191 = add nsw i32 %189, %190
store i32 %191, i32* %9
%192 = load i32, i32* %7
%193 = load i32, i32* %8
%194 = sub nsw i32 %192, %193
store i32 %194, i32* %7
%195 = load i32, i32* %13
%196 = load i32, i32* %12
%197 = add nsw i32 %195, %196
store i32 %197, i32* %49
%198 = load i32, i32* %49
%199 = ashr i32 %198, 14
store i32 %199, i32* %3
%200 = load i32, i32* %3
%201 = sext i32 %200 to i64
%202 = mul nsw i64 %201, 32138
%203 = trunc i64 %202 to i32
store i32 %203, i32* %8
%204 = load i32, i32* %12
%205 = ashr i32 %204, 14
store i32 %205, i32* %3
%206 = load i32, i32* %3
%207 = mul nsw i32 %206, -19266
store i32 %207, i32* %48
%208 = load i32, i32* %8
%209 = ashr i32 %208, 1
store i32 %209, i32* %4
%210 = load i32, i32* %48
%211 = load i32, i32* %4
%212 = add nsw i32 %210, %211
store i32 %212, i32* %12
%213 = load i32, i32* %13
%214 = ashr i32 %213, 14
store i32 %214, i32* %3
%215 = load i32, i32* %3
%216 = mul nsw i32 %215, -25746
store i32 %216, i32* %47
%217 = load i32, i32* %47
%218 = load i32, i32* %8
%219 = add nsw i32 %217, %218
store i32 %219, i32* %13
%220 = load i32, i32* %14
%221 = load i32, i32* %11
%222 = add nsw i32 %220, %221
store i32 %222, i32* %46
%223 = load i32, i32* %46
%224 = ashr i32 %223, 14
store i32 %224, i32* %3
%225 = load i32, i32* %3
%226 = sext i32 %225 to i64
%227 = mul nsw i64 %226, 27246
%228 = trunc i64 %227 to i32
store i32 %228, i32* %8
%229 = load i32, i32* %11
%230 = ashr i32 %229, 15
store i32 %230, i32* %3
%231 = load i32, i32* %3
%232 = mul nsw i32 %231, -45451
store i32 %232, i32* %45
%233 = load i32, i32* %8
%234 = ashr i32 %233, 1
store i32 %234, i32* %4
%235 = load i32, i32* %45
%236 = load i32, i32* %4
%237 = add nsw i32 %235, %236
store i32 %237, i32* %11
%238 = load i32, i32* %14
%239 = ashr i32 %238, 15
store i32 %239, i32* %3
%240 = load i32, i32* %3
%241 = mul nsw i32 %240, -36163
store i32 %241, i32* %44
%242 = load i32, i32* %44
%243 = ashr i32 %242, 1
store i32 %243, i32* %3
%244 = load i32, i32* %3
%245 = load i32, i32* %8
%246 = add nsw i32 %244, %245
store i32 %246, i32* %14
%247 = load i32, i32* %10
%248 = load i32, i32* %9
%249 = add nsw i32 %247, %248
store i32 %249, i32* %8
%250 = load i32, i32* %10
%251 = load i32, i32* %9
%252 = sub nsw i32 %250, %251
store i32 %252, i32* %10
%253 = load i32, i32* %14
%254 = ashr i32 %253, 1
store i32 %254, i32* %3
%255 = load i32, i32* %3
%256 = load i32, i32* %12
%257 = add nsw i32 %255, %256
store i32 %257, i32* %9
%258 = load i32, i32* %14
%259 = ashr i32 %258, 1
store i32 %259, i32* %3
%260 = load i32, i32* %3
%261 = load i32, i32* %12
%262 = sub nsw i32 %260, %261
store i32 %262, i32* %14
%263 = load i32, i32* %13
%264 = ashr i32 %263, 1
store i32 %264, i32* %4
%265 = load i32, i32* %11
%266 = load i32, i32* %4
%267 = add nsw i32 %265, %266
store i32 %267, i32* %12
%268 = load i32, i32* %13
%269 = ashr i32 %268, 1
store i32 %269, i32* %4
%270 = load i32, i32* %11
%271 = load i32, i32* %4
%272 = sub nsw i32 %270, %271
store i32 %272, i32* %11
%273 = load i32, i32* %7
%274 = load i32, i32* %6
%275 = add nsw i32 %273, %274
store i32 %275, i32* %43
%276 = load i32, i32* %43
%277 = ashr i32 %276, 14
store i32 %277, i32* %3
%278 = load i32, i32* %3
%279 = sext i32 %278 to i64
%280 = mul nsw i64 %279, 17734
%281 = trunc i64 %280 to i32
store i32 %281, i32* %13
%282 = load i32, i32* %7
%283 = ashr i32 %282, 14
store i32 %283, i32* %3
%284 = load i32, i32* %3
%285 = mul nsw i32 %284, -30274
store i32 %285, i32* %42
%286 = load i32, i32* %13
%287 = ashr i32 %286, 1
store i32 %287, i32* %4
%288 = load i32, i32* %42
%289 = load i32, i32* %4
%290 = add nsw i32 %288, %289
store i32 %290, i32* %7
%291 = load i32, i32* %6
%292 = ashr i32 %291, 14
store i32 %292, i32* %3
%293 = load i32, i32* %3
%294 = mul nsw i32 %293, 6270
store i32 %294, i32* %41
%295 = load i32, i32* %41
%296 = shl i32 %295, 1
store i32 %296, i32* %3
%297 = load i32, i32* %13
%298 = ashr i32 %297, 1
store i32 %298, i32* %4
%299 = load i32, i32* %3
%300 = load i32, i32* %4
%301 = add nsw i32 %299, %300
store i32 %301, i32* %6
%302 = load i32, i32* %16
store i32 %302, i32* %52
%303 = load i32, i32* %52
%304 = mul nsw i32 %303, 64
store i32 %304, i32* %51
%305 = load i32, i32* %51
%306 = ashr i32 %305, 1
store i32 %306, i32* %5
%307 = load i32*, i32** %2
%308 = load i32, i32* %5
%309 = sext i32 %308 to i64
%310 = udiv i64 %309, 4
%311 = getelementptr inbounds i32, i32* %307, i64 %310
store i32* %311, i32** %50
%312 = load i32, i32* %8
%313 = load i32*, i32** %50
%314 = getelementptr inbounds i32, i32* %313, i64 0
store i32 %312, i32* %314
%315 = load i32, i32* %16
store i32 %315, i32* %52
%316 = load i32, i32* %52
%317 = mul nsw i32 %316, 64
store i32 %317, i32* %51
%318 = load i32, i32* %51
%319 = ashr i32 %318, 1
store i32 %319, i32* %5
%320 = load i32*, i32** %2
%321 = load i32, i32* %5
%322 = sext i32 %321 to i64
%323 = udiv i64 %322, 4
%324 = getelementptr inbounds i32, i32* %320, i64 %323
store i32* %324, i32** %50
%325 = load i32, i32* %10
%326 = load i32*, i32** %50
%327 = getelementptr inbounds i32, i32* %326, i64 4
store i32 %325, i32* %327
%328 = load i32, i32* %16
store i32 %328, i32* %52
%329 = load i32, i32* %52
%330 = mul nsw i32 %329, 64
store i32 %330, i32* %51
%331 = load i32, i32* %51
%332 = ashr i32 %331, 1
store i32 %332, i32* %5
%333 = load i32*, i32** %2
%334 = load i32, i32* %5
%335 = sext i32 %334 to i64
%336 = udiv i64 %335, 4
%337 = getelementptr inbounds i32, i32* %333, i64 %336
store i32* %337, i32** %50
%338 = load i32, i32* %6
%339 = load i32*, i32** %50
%340 = getelementptr inbounds i32, i32* %339, i64 2
store i32 %338, i32* %340
%341 = load i32, i32* %16
store i32 %341, i32* %52
%342 = load i32, i32* %52
%343 = mul nsw i32 %342, 64
store i32 %343, i32* %51
%344 = load i32, i32* %51
%345 = ashr i32 %344, 1
store i32 %345, i32* %5
%346 = load i32*, i32** %2
%347 = load i32, i32* %5
%348 = sext i32 %347 to i64
%349 = udiv i64 %348, 4
%350 = getelementptr inbounds i32, i32* %346, i64 %349
store i32* %350, i32** %50
%351 = load i32, i32* %7
%352 = load i32*, i32** %50
%353 = getelementptr inbounds i32, i32* %352, i64 6
store i32 %351, i32* %353
%354 = load i32, i32* %16
store i32 %354, i32* %52
%355 = load i32, i32* %52
%356 = mul nsw i32 %355, 64
store i32 %356, i32* %51
%357 = load i32, i32* %51
%358 = ashr i32 %357, 1
store i32 %358, i32* %5
%359 = load i32*, i32** %2
%360 = load i32, i32* %5
%361 = sext i32 %360 to i64
%362 = udiv i64 %361, 4
%363 = getelementptr inbounds i32, i32* %359, i64 %362
store i32* %363, i32** %50
%364 = load i32, i32* %12
%365 = load i32, i32* %9
%366 = sub nsw i32 %364, %365
store i32 %366, i32* %40
%367 = load i32, i32* %40
%368 = load i32*, i32** %50
%369 = getelementptr inbounds i32, i32* %368, i64 7
store i32 %367, i32* %369
%370 = load i32, i32* %16
store i32 %370, i32* %52
%371 = load i32, i32* %52
%372 = mul nsw i32 %371, 64
store i32 %372, i32* %51
%373 = load i32, i32* %51
%374 = ashr i32 %373, 1
store i32 %374, i32* %5
%375 = load i32*, i32** %2
%376 = load i32, i32* %5
%377 = sext i32 %376 to i64
%378 = udiv i64 %377, 4
%379 = getelementptr inbounds i32, i32* %375, i64 %378
store i32* %379, i32** %50
%380 = load i32, i32* %12
%381 = load i32, i32* %9
%382 = add nsw i32 %380, %381
store i32 %382, i32* %39
%383 = load i32, i32* %39
%384 = load i32*, i32** %50
%385 = getelementptr inbounds i32, i32* %384, i64 1
store i32 %383, i32* %385
%386 = load i32, i32* %16
store i32 %386, i32* %52
%387 = load i32, i32* %52
%388 = mul nsw i32 %387, 64
store i32 %388, i32* %51
%389 = load i32, i32* %51
%390 = ashr i32 %389, 1
store i32 %390, i32* %5
%391 = load i32*, i32** %2
%392 = load i32, i32* %5
%393 = sext i32 %392 to i64
%394 = udiv i64 %393, 4
%395 = getelementptr inbounds i32, i32* %391, i64 %394
store i32* %395, i32** %50
%396 = load i32, i32* %11
%397 = ashr i32 %396, 14
store i32 %397, i32* %3
%398 = load i32, i32* %3
%399 = sext i32 %398 to i64
%400 = mul nsw i64 %399, 23170
%401 = trunc i64 %400 to i32
store i32 %401, i32* %38
%402 = load i32, i32* %38
%403 = load i32*, i32** %50
%404 = getelementptr inbounds i32, i32* %403, i64 3
store i32 %402, i32* %404
%405 = load i32, i32* %16
store i32 %405, i32* %52
%406 = load i32, i32* %52
%407 = mul nsw i32 %406, 64
store i32 %407, i32* %51
%408 = load i32, i32* %51
%409 = ashr i32 %408, 1
store i32 %409, i32* %5
%410 = load i32*, i32** %2
%411 = load i32, i32* %5
%412 = sext i32 %411 to i64
%413 = udiv i64 %412, 4
%414 = getelementptr inbounds i32, i32* %410, i64 %413
store i32* %414, i32** %50
%415 = load i32, i32* %14
%416 = ashr i32 %415, 14
store i32 %416, i32* %3
%417 = load i32, i32* %3
%418 = sext i32 %417 to i64
%419 = mul nsw i64 %418, 23170
%420 = trunc i64 %419 to i32
store i32 %420, i32* %37
%421 = load i32, i32* %37
%422 = load i32*, i32** %50
%423 = getelementptr inbounds i32, i32* %422, i64 5
store i32 %421, i32* %423
%424 = load i32, i32* %16
%425 = add nsw i32 %424, 1
store i32 %425, i32* %16
br label %426
426: ; preds = %54, %53
%427 = load i32, i32* %16
%428 = icmp sle i32 %427, 7
br i1 %428, label %429, label %430
429: ; preds = %426
br label %54
430: ; preds = %426
br label %431
431: ; preds = %430
store i32 0, i32* %15
br label %704
432: ; preds = %707
%433 = load i32*, i32** %2
%434 = load i32, i32* %15
%435 = sext i32 %434 to i64
%436 = getelementptr inbounds i32, i32* %433, i64 %435
%437 = load i32, i32* %436
store i32 %437, i32* %14
%438 = load i32*, i32** %2
%439 = getelementptr inbounds i32, i32* %438, i64 8
store i32* %439, i32** %36
%440 = load i32*, i32** %36
%441 = load i32, i32* %15
%442 = sext i32 %441 to i64
%443 = getelementptr inbounds i32, i32* %440, i64 %442
%444 = load i32, i32* %443
store i32 %444, i32* %13
%445 = load i32*, i32** %2
%446 = getelementptr inbounds i32, i32* %445, i64 16
store i32* %446, i32** %35
%447 = load i32*, i32** %35
%448 = load i32, i32* %15
%449 = sext i32 %448 to i64
%450 = getelementptr inbounds i32, i32* %447, i64 %449
%451 = load i32, i32* %450
store i32 %451, i32* %12
%452 = load i32*, i32** %2
%453 = getelementptr inbounds i32, i32* %452, i64 24
store i32* %453, i32** %34
%454 = load i32*, i32** %34
%455 = load i32, i32* %15
%456 = sext i32 %455 to i64
%457 = getelementptr inbounds i32, i32* %454, i64 %456
%458 = load i32, i32* %457
store i32 %458, i32* %11
%459 = load i32*, i32** %2
%460 = getelementptr inbounds i32, i32* %459, i64 32
store i32* %460, i32** %33
%461 = load i32*, i32** %33
%462 = load i32, i32* %15
%463 = sext i32 %462 to i64
%464 = getelementptr inbounds i32, i32* %461, i64 %463
%465 = load i32, i32* %464
store i32 %465, i32* %10
%466 = load i32*, i32** %2
%467 = getelementptr inbounds i32, i32* %466, i64 40
store i32* %467, i32** %32
%468 = load i32*, i32** %32
%469 = load i32, i32* %15
%470 = sext i32 %469 to i64
%471 = getelementptr inbounds i32, i32* %468, i64 %470
%472 = load i32, i32* %471
store i32 %472, i32* %9
%473 = load i32*, i32** %2
%474 = getelementptr inbounds i32, i32* %473, i64 48
store i32* %474, i32** %31
%475 = load i32*, i32** %31
%476 = load i32, i32* %15
%477 = sext i32 %476 to i64
%478 = getelementptr inbounds i32, i32* %475, i64 %477
%479 = load i32, i32* %478
store i32 %479, i32* %8
%480 = load i32*, i32** %2
%481 = getelementptr inbounds i32, i32* %480, i64 56
store i32* %481, i32** %30
%482 = load i32*, i32** %30
%483 = load i32, i32* %15
%484 = sext i32 %483 to i64
%485 = getelementptr inbounds i32, i32* %482, i64 %484
%486 = load i32, i32* %485
store i32 %486, i32* %7
%487 = load i32, i32* %7
%488 = load i32, i32* %14
%489 = add nsw i32 %487, %488
store i32 %489, i32* %6
%490 = load i32, i32* %14
%491 = load i32, i32* %7
%492 = sub nsw i32 %490, %491
store i32 %492, i32* %14
%493 = load i32, i32* %13
%494 = load i32, i32* %8
%495 = add nsw i32 %493, %494
store i32 %495, i32* %7
%496 = load i32, i32* %13
%497 = load i32, i32* %8
%498 = sub nsw i32 %496, %497
store i32 %498, i32* %13
%499 = load i32, i32* %12
%500 = load i32, i32* %9
%501 = add nsw i32 %499, %500
store i32 %501, i32* %8
%502 = load i32, i32* %12
%503 = load i32, i32* %9
%504 = sub nsw i32 %502, %503
store i32 %504, i32* %12
%505 = load i32, i32* %11
%506 = load i32, i32* %10
%507 = add nsw i32 %505, %506
store i32 %507, i32* %9
%508 = load i32, i32* %11
%509 = load i32, i32* %10
%510 = sub nsw i32 %508, %509
store i32 %510, i32* %11
%511 = load i32, i32* %6
%512 = load i32, i32* %9
%513 = add nsw i32 %511, %512
store i32 %513, i32* %10
%514 = load i32, i32* %6
%515 = load i32, i32* %9
%516 = sub nsw i32 %514, %515
store i32 %516, i32* %6
%517 = load i32, i32* %7
%518 = load i32, i32* %8
%519 = add nsw i32 %517, %518
store i32 %519, i32* %9
%520 = load i32, i32* %7
%521 = load i32, i32* %8
%522 = sub nsw i32 %520, %521
store i32 %522, i32* %7
%523 = load i32, i32* %13
%524 = load i32, i32* %12
%525 = add nsw i32 %523, %524
store i32 %525, i32* %29
%526 = load i32, i32* %29
%527 = ashr i32 %526, 14
store i32 %527, i32* %3
%528 = load i32, i32* %3
%529 = sext i32 %528 to i64
%530 = mul nsw i64 %529, 32138
%531 = trunc i64 %530 to i32
store i32 %531, i32* %8
%532 = load i32, i32* %12
%533 = ashr i32 %532, 14
store i32 %533, i32* %3
%534 = load i32, i32* %3
%535 = mul nsw i32 %534, -19266
store i32 %535, i32* %28
%536 = load i32, i32* %8
%537 = ashr i32 %536, 1
store i32 %537, i32* %4
%538 = load i32, i32* %28
%539 = load i32, i32* %4
%540 = add nsw i32 %538, %539
store i32 %540, i32* %12
%541 = load i32, i32* %13
%542 = ashr i32 %541, 14
store i32 %542, i32* %3
%543 = load i32, i32* %3
%544 = mul nsw i32 %543, -25746
store i32 %544, i32* %27
%545 = load i32, i32* %27
%546 = load i32, i32* %8
%547 = add nsw i32 %545, %546
store i32 %547, i32* %13
%548 = load i32, i32* %14
%549 = load i32, i32* %11
%550 = add nsw i32 %548, %549
store i32 %550, i32* %26
%551 = load i32, i32* %26
%552 = ashr i32 %551, 14
store i32 %552, i32* %3
%553 = load i32, i32* %3
%554 = sext i32 %553 to i64
%555 = mul nsw i64 %554, 27246
%556 = trunc i64 %555 to i32
store i32 %556, i32* %8
%557 = load i32, i32* %11
%558 = ashr i32 %557, 15
store i32 %558, i32* %3
%559 = load i32, i32* %3
%560 = mul nsw i32 %559, -45451
store i32 %560, i32* %25
%561 = load i32, i32* %8
%562 = ashr i32 %561, 1
store i32 %562, i32* %4
%563 = load i32, i32* %25
%564 = load i32, i32* %4
%565 = add nsw i32 %563, %564
store i32 %565, i32* %11
%566 = load i32, i32* %14
%567 = ashr i32 %566, 15
store i32 %567, i32* %3
%568 = load i32, i32* %3
%569 = mul nsw i32 %568, -36163
store i32 %569, i32* %24
%570 = load i32, i32* %24
%571 = ashr i32 %570, 1
store i32 %571, i32* %3
%572 = load i32, i32* %3
%573 = load i32, i32* %8
%574 = add nsw i32 %572, %573
store i32 %574, i32* %14
%575 = load i32, i32* %10
%576 = load i32, i32* %9
%577 = add nsw i32 %575, %576
store i32 %577, i32* %8
%578 = load i32, i32* %10
%579 = load i32, i32* %9
%580 = sub nsw i32 %578, %579
store i32 %580, i32* %10
%581 = load i32, i32* %14
%582 = ashr i32 %581, 1
store i32 %582, i32* %3
%583 = load i32, i32* %3
%584 = load i32, i32* %12
%585 = add nsw i32 %583, %584
store i32 %585, i32* %9
%586 = load i32, i32* %14
%587 = ashr i32 %586, 1
store i32 %587, i32* %3
%588 = load i32, i32* %3
%589 = load i32, i32* %12
%590 = sub nsw i32 %588, %589
store i32 %590, i32* %14
%591 = load i32, i32* %13
%592 = ashr i32 %591, 1
store i32 %592, i32* %4
%593 = load i32, i32* %11
%594 = load i32, i32* %4
%595 = add nsw i32 %593, %594
store i32 %595, i32* %12
%596 = load i32, i32* %13
%597 = ashr i32 %596, 1
store i32 %597, i32* %4
%598 = load i32, i32* %11
%599 = load i32, i32* %4
%600 = sub nsw i32 %598, %599
store i32 %600, i32* %11
%601 = load i32, i32* %7
%602 = load i32, i32* %6
%603 = add nsw i32 %601, %602
store i32 %603, i32* %23
%604 = load i32, i32* %23
%605 = ashr i32 %604, 14
store i32 %605, i32* %3
%606 = load i32, i32* %3
%607 = sext i32 %606 to i64
%608 = mul nsw i64 %607, 17734
%609 = trunc i64 %608 to i32
store i32 %609, i32* %13
%610 = load i32, i32* %7
%611 = ashr i32 %610, 14
store i32 %611, i32* %3
%612 = load i32, i32* %3
%613 = mul nsw i32 %612, -30274
store i32 %613, i32* %22
%614 = load i32, i32* %13
%615 = ashr i32 %614, 1
store i32 %615, i32* %4
%616 = load i32, i32* %22
%617 = load i32, i32* %4
%618 = add nsw i32 %616, %617
store i32 %618, i32* %7
%619 = load i32, i32* %6
%620 = ashr i32 %619, 14
store i32 %620, i32* %3
%621 = load i32, i32* %3
%622 = mul nsw i32 %621, 6270
store i32 %622, i32* %21
%623 = load i32, i32* %21
%624 = shl i32 %623, 1
store i32 %624, i32* %3
%625 = load i32, i32* %13
%626 = ashr i32 %625, 1
store i32 %626, i32* %4
%627 = load i32, i32* %3
%628 = load i32, i32* %4
%629 = add nsw i32 %627, %628
store i32 %629, i32* %6
%630 = load i32, i32* %8
%631 = load i32*, i32** %2
%632 = load i32, i32* %15
%633 = sext i32 %632 to i64
%634 = getelementptr inbounds i32, i32* %631, i64 %633
store i32 %630, i32* %634
%635 = load i32*, i32** %2
%636 = getelementptr inbounds i32, i32* %635, i64 32
store i32* %636, i32** %33
%637 = load i32, i32* %10
%638 = load i32*, i32** %33
%639 = load i32, i32* %15
%640 = sext i32 %639 to i64
%641 = getelementptr inbounds i32, i32* %638, i64 %640
store i32 %637, i32* %641
%642 = load i32*, i32** %2
%643 = getelementptr inbounds i32, i32* %642, i64 16
store i32* %643, i32** %35
%644 = load i32, i32* %6
%645 = load i32*, i32** %35
%646 = load i32, i32* %15
%647 = sext i32 %646 to i64
%648 = getelementptr inbounds i32, i32* %645, i64 %647
store i32 %644, i32* %648
%649 = load i32*, i32** %2
%650 = getelementptr inbounds i32, i32* %649, i64 48
store i32* %650, i32** %31
%651 = load i32, i32* %7
%652 = load i32*, i32** %31
%653 = load i32, i32* %15
%654 = sext i32 %653 to i64
%655 = getelementptr inbounds i32, i32* %652, i64 %654
store i32 %651, i32* %655
%656 = load i32*, i32** %2
%657 = getelementptr inbounds i32, i32* %656, i64 56
store i32* %657, i32** %30
%658 = load i32, i32* %12
%659 = load i32, i32* %9
%660 = sub nsw i32 %658, %659
store i32 %660, i32* %20
%661 = load i32, i32* %20
%662 = load i32*, i32** %30
%663 = load i32, i32* %15
%664 = sext i32 %663 to i64
%665 = getelementptr inbounds i32, i32* %662, i64 %664
store i32 %661, i32* %665
%666 = load i32*, i32** %2
%667 = getelementptr inbounds i32, i32* %666, i64 8
store i32* %667, i32** %36
%668 = load i32, i32* %12
%669 = load i32, i32* %9
%670 = add nsw i32 %668, %669
store i32 %670, i32* %19
%671 = load i32, i32* %19
%672 = load i32*, i32** %36
%673 = load i32, i32* %15
%674 = sext i32 %673 to i64
%675 = getelementptr inbounds i32, i32* %672, i64 %674
store i32 %671, i32* %675
%676 = load i32*, i32** %2
%677 = getelementptr inbounds i32, i32* %676, i64 24
store i32* %677, i32** %34
%678 = load i32, i32* %11
%679 = ashr i32 %678, 14
store i32 %679, i32* %3
%680 = load i32, i32* %3
%681 = sext i32 %680 to i64
%682 = mul nsw i64 %681, 23170
%683 = trunc i64 %682 to i32
store i32 %683, i32* %18
%684 = load i32, i32* %18
%685 = load i32*, i32** %34
%686 = load i32, i32* %15
%687 = sext i32 %686 to i64
%688 = getelementptr inbounds i32, i32* %685, i64 %687
store i32 %684, i32* %688
%689 = load i32*, i32** %2
%690 = getelementptr inbounds i32, i32* %689, i64 40
store i32* %690, i32** %32
%691 = load i32, i32* %14
%692 = ashr i32 %691, 14
store i32 %692, i32* %3
%693 = load i32, i32* %3
%694 = sext i32 %693 to i64
%695 = mul nsw i64 %694, 23170
%696 = trunc i64 %695 to i32
store i32 %696, i32* %17
%697 = load i32, i32* %17
%698 = load i32*, i32** %32
%699 = load i32, i32* %15
%700 = sext i32 %699 to i64
%701 = getelementptr inbounds i32, i32* %698, i64 %700
store i32 %697, i32* %701
%702 = load i32, i32* %15
%703 = add nsw i32 %702, 1
store i32 %703, i32* %15
br label %704
704: ; preds = %432, %431
%705 = load i32, i32* %15
%706 = icmp sle i32 %705, 7
br i1 %706, label %707, label %708
707: ; preds = %704
br label %432
708: ; preds = %704
br label %709
709: ; preds = %708
ret i32 0
}

LLVM IR (-O2):
define i32 @dct(i32* nocapture %0) {
br label %180
2: ; preds = %180
%3 = getelementptr inbounds i32, i32* %0, i64 8
%4 = getelementptr inbounds i32, i32* %0, i64 16
%5 = getelementptr inbounds i32, i32* %0, i64 24
%6 = getelementptr inbounds i32, i32* %0, i64 32
%7 = getelementptr inbounds i32, i32* %0, i64 40
%8 = getelementptr inbounds i32, i32* %0, i64 48
%9 = getelementptr inbounds i32, i32* %0, i64 56
%10 = bitcast i32* %0 to <4 x i32>*
%11 = load <4 x i32>, <4 x i32>* %10
%12 = bitcast i32* %3 to <4 x i32>*
%13 = load <4 x i32>, <4 x i32>* %12
%14 = bitcast i32* %4 to <4 x i32>*
%15 = load <4 x i32>, <4 x i32>* %14
%16 = bitcast i32* %5 to <4 x i32>*
%17 = load <4 x i32>, <4 x i32>* %16
%18 = bitcast i32* %6 to <4 x i32>*
%19 = load <4 x i32>, <4 x i32>* %18
%20 = bitcast i32* %7 to <4 x i32>*
%21 = load <4 x i32>, <4 x i32>* %20
%22 = bitcast i32* %8 to <4 x i32>*
%23 = load <4 x i32>, <4 x i32>* %22
%24 = bitcast i32* %9 to <4 x i32>*
%25 = load <4 x i32>, <4 x i32>* %24
%26 = add nsw <4 x i32> %25, %11
%27 = sub nsw <4 x i32> %11, %25
%28 = add nsw <4 x i32> %23, %13
%29 = sub nsw <4 x i32> %13, %23
%30 = add nsw <4 x i32> %21, %15
%31 = sub nsw <4 x i32> %15, %21
%32 = add nsw <4 x i32> %19, %17
%33 = sub nsw <4 x i32> %17, %19
%34 = add nsw <4 x i32> %26, %32
%35 = sub nsw <4 x i32> %26, %32
%36 = add nsw <4 x i32> %28, %30
%37 = sub nsw <4 x i32> %28, %30
%38 = add nsw <4 x i32> %29, %31
%39 = ashr <4 x i32> %38, <i32 14, i32 14, i32 14, i32 14>
%40 = mul <4 x i32> %39, <i32 32138, i32 32138, i32 32138, i32 32138>
%41 = ashr <4 x i32> %31, <i32 14, i32 14, i32 14, i32 14>
%42 = mul nsw <4 x i32> %41, <i32 -19266, i32 -19266, i32 -19266, i32 -19266>
%43 = ashr exact <4 x i32> %40, <i32 1, i32 1, i32 1, i32 1>
%44 = add nsw <4 x i32> %43, %42
%45 = ashr <4 x i32> %29, <i32 14, i32 14, i32 14, i32 14>
%46 = mul nsw <4 x i32> %45, <i32 -25746, i32 -25746, i32 -25746, i32 -25746>
%47 = add nsw <4 x i32> %40, %46
%48 = add nsw <4 x i32> %27, %33
%49 = ashr <4 x i32> %48, <i32 14, i32 14, i32 14, i32 14>
%50 = mul <4 x i32> %49, <i32 27246, i32 27246, i32 27246, i32 27246>
%51 = ashr <4 x i32> %33, <i32 15, i32 15, i32 15, i32 15>
%52 = mul nsw <4 x i32> %51, <i32 -45451, i32 -45451, i32 -45451, i32 -45451>
%53 = ashr exact <4 x i32> %50, <i32 1, i32 1, i32 1, i32 1>
%54 = add nsw <4 x i32> %53, %52
%55 = ashr <4 x i32> %27, <i32 15, i32 15, i32 15, i32 15>
%56 = mul nsw <4 x i32> %55, <i32 -36163, i32 -36163, i32 -36163, i32 -36163>
%57 = ashr <4 x i32> %56, <i32 1, i32 1, i32 1, i32 1>
%58 = add nsw <4 x i32> %57, %50
%59 = add nsw <4 x i32> %34, %36
%60 = sub nsw <4 x i32> %34, %36
%61 = ashr <4 x i32> %58, <i32 1, i32 1, i32 1, i32 1>
%62 = add nsw <4 x i32> %61, %44
%63 = sub nsw <4 x i32> %61, %44
%64 = ashr exact <4 x i32> %47, <i32 1, i32 1, i32 1, i32 1>
%65 = add nsw <4 x i32> %54, %64
%66 = sub nsw <4 x i32> %54, %64
%67 = add nsw <4 x i32> %35, %37
%68 = ashr <4 x i32> %67, <i32 14, i32 14, i32 14, i32 14>
%69 = mul <4 x i32> %68, <i32 17734, i32 17734, i32 17734, i32 17734>
%70 = ashr <4 x i32> %37, <i32 14, i32 14, i32 14, i32 14>
%71 = mul nsw <4 x i32> %70, <i32 -30274, i32 -30274, i32 -30274, i32 -30274>
%72 = ashr exact <4 x i32> %69, <i32 1, i32 1, i32 1, i32 1>
%73 = add nsw <4 x i32> %72, %71
%74 = ashr <4 x i32> %35, <i32 14, i32 14, i32 14, i32 14>
%75 = mul nsw <4 x i32> %74, <i32 12540, i32 12540, i32 12540, i32 12540>
%76 = add nsw <4 x i32> %72, %75
%77 = bitcast i32* %0 to <4 x i32>*
store <4 x i32> %59, <4 x i32>* %77
%78 = bitcast i32* %6 to <4 x i32>*
store <4 x i32> %60, <4 x i32>* %78
%79 = bitcast i32* %4 to <4 x i32>*
store <4 x i32> %76, <4 x i32>* %79
%80 = bitcast i32* %8 to <4 x i32>*
store <4 x i32> %73, <4 x i32>* %80
%81 = sub nsw <4 x i32> %65, %62
%82 = bitcast i32* %9 to <4 x i32>*
store <4 x i32> %81, <4 x i32>* %82
%83 = add nsw <4 x i32> %65, %62
%84 = bitcast i32* %3 to <4 x i32>*
store <4 x i32> %83, <4 x i32>* %84
%85 = ashr <4 x i32> %66, <i32 14, i32 14, i32 14, i32 14>
%86 = mul <4 x i32> %85, <i32 23170, i32 23170, i32 23170, i32 23170>
%87 = bitcast i32* %5 to <4 x i32>*
store <4 x i32> %86, <4 x i32>* %87
%88 = ashr <4 x i32> %63, <i32 14, i32 14, i32 14, i32 14>
%89 = mul <4 x i32> %88, <i32 23170, i32 23170, i32 23170, i32 23170>
%90 = bitcast i32* %7 to <4 x i32>*
store <4 x i32> %89, <4 x i32>* %90
%91 = getelementptr inbounds i32, i32* %0, i64 4
%92 = bitcast i32* %91 to <4 x i32>*
%93 = load <4 x i32>, <4 x i32>* %92
%94 = getelementptr inbounds i32, i32* %0, i64 12
%95 = bitcast i32* %94 to <4 x i32>*
%96 = load <4 x i32>, <4 x i32>* %95
%97 = getelementptr inbounds i32, i32* %0, i64 20
%98 = bitcast i32* %97 to <4 x i32>*
%99 = load <4 x i32>, <4 x i32>* %98
%100 = getelementptr inbounds i32, i32* %0, i64 28
%101 = bitcast i32* %100 to <4 x i32>*
%102 = load <4 x i32>, <4 x i32>* %101
%103 = getelementptr inbounds i32, i32* %0, i64 36
%104 = bitcast i32* %103 to <4 x i32>*
%105 = load <4 x i32>, <4 x i32>* %104
%106 = getelementptr inbounds i32, i32* %0, i64 44
%107 = bitcast i32* %106 to <4 x i32>*
%108 = load <4 x i32>, <4 x i32>* %107
%109 = getelementptr inbounds i32, i32* %0, i64 52
%110 = bitcast i32* %109 to <4 x i32>*
%111 = load <4 x i32>, <4 x i32>* %110
%112 = getelementptr inbounds i32, i32* %0, i64 60
%113 = bitcast i32* %112 to <4 x i32>*
%114 = load <4 x i32>, <4 x i32>* %113
%115 = add nsw <4 x i32> %114, %93
%116 = sub nsw <4 x i32> %93, %114
%117 = add nsw <4 x i32> %111, %96
%118 = sub nsw <4 x i32> %96, %111
%119 = add nsw <4 x i32> %108, %99
%120 = sub nsw <4 x i32> %99, %108
%121 = add nsw <4 x i32> %105, %102
%122 = sub nsw <4 x i32> %102, %105
%123 = add nsw <4 x i32> %115, %121
%124 = sub nsw <4 x i32> %115, %121
%125 = add nsw <4 x i32> %117, %119
%126 = sub nsw <4 x i32> %117, %119
%127 = add nsw <4 x i32> %118, %120
%128 = ashr <4 x i32> %127, <i32 14, i32 14, i32 14, i32 14>
%129 = mul <4 x i32> %128, <i32 32138, i32 32138, i32 32138, i32 32138>
%130 = ashr <4 x i32> %120, <i32 14, i32 14, i32 14, i32 14>
%131 = mul nsw <4 x i32> %130, <i32 -19266, i32 -19266, i32 -19266, i32 -19266>
%132 = ashr exact <4 x i32> %129, <i32 1, i32 1, i32 1, i32 1>
%133 = add nsw <4 x i32> %132, %131
%134 = ashr <4 x i32> %118, <i32 14, i32 14, i32 14, i32 14>
%135 = mul nsw <4 x i32> %134, <i32 -25746, i32 -25746, i32 -25746, i32 -25746>
%136 = add nsw <4 x i32> %129, %135
%137 = add nsw <4 x i32> %116, %122
%138 = ashr <4 x i32> %137, <i32 14, i32 14, i32 14, i32 14>
%139 = mul <4 x i32> %138, <i32 27246, i32 27246, i32 27246, i32 27246>
%140 = ashr <4 x i32> %122, <i32 15, i32 15, i32 15, i32 15>
%141 = mul nsw <4 x i32> %140, <i32 -45451, i32 -45451, i32 -45451, i32 -45451>
%142 = ashr exact <4 x i32> %139, <i32 1, i32 1, i32 1, i32 1>
%143 = add nsw <4 x i32> %142, %141
%144 = ashr <4 x i32> %116, <i32 15, i32 15, i32 15, i32 15>
%145 = mul nsw <4 x i32> %144, <i32 -36163, i32 -36163, i32 -36163, i32 -36163>
%146 = ashr <4 x i32> %145, <i32 1, i32 1, i32 1, i32 1>
%147 = add nsw <4 x i32> %146, %139
%148 = add nsw <4 x i32> %123, %125
%149 = sub nsw <4 x i32> %123, %125
%150 = ashr <4 x i32> %147, <i32 1, i32 1, i32 1, i32 1>
%151 = add nsw <4 x i32> %150, %133
%152 = sub nsw <4 x i32> %150, %133
%153 = ashr exact <4 x i32> %136, <i32 1, i32 1, i32 1, i32 1>
%154 = add nsw <4 x i32> %143, %153
%155 = sub nsw <4 x i32> %143, %153
%156 = add nsw <4 x i32> %124, %126
%157 = ashr <4 x i32> %156, <i32 14, i32 14, i32 14, i32 14>
%158 = mul <4 x i32> %157, <i32 17734, i32 17734, i32 17734, i32 17734>
%159 = ashr <4 x i32> %126, <i32 14, i32 14, i32 14, i32 14>
%160 = mul nsw <4 x i32> %159, <i32 -30274, i32 -30274, i32 -30274, i32 -30274>
%161 = ashr exact <4 x i32> %158, <i32 1, i32 1, i32 1, i32 1>
%162 = add nsw <4 x i32> %161, %160
%163 = ashr <4 x i32> %124, <i32 14, i32 14, i32 14, i32 14>
%164 = mul nsw <4 x i32> %163, <i32 12540, i32 12540, i32 12540, i32 12540>
%165 = add nsw <4 x i32> %161, %164
%166 = bitcast i32* %91 to <4 x i32>*
store <4 x i32> %148, <4 x i32>* %166
%167 = bitcast i32* %103 to <4 x i32>*
store <4 x i32> %149, <4 x i32>* %167
%168 = bitcast i32* %97 to <4 x i32>*
store <4 x i32> %165, <4 x i32>* %168
%169 = bitcast i32* %109 to <4 x i32>*
store <4 x i32> %162, <4 x i32>* %169
%170 = sub nsw <4 x i32> %154, %151
%171 = bitcast i32* %112 to <4 x i32>*
store <4 x i32> %170, <4 x i32>* %171
%172 = add nsw <4 x i32> %154, %151
%173 = bitcast i32* %94 to <4 x i32>*
store <4 x i32> %172, <4 x i32>* %173
%174 = ashr <4 x i32> %155, <i32 14, i32 14, i32 14, i32 14>
%175 = mul <4 x i32> %174, <i32 23170, i32 23170, i32 23170, i32 23170>
%176 = bitcast i32* %100 to <4 x i32>*
store <4 x i32> %175, <4 x i32>* %176
%177 = ashr <4 x i32> %152, <i32 14, i32 14, i32 14, i32 14>
%178 = mul <4 x i32> %177, <i32 23170, i32 23170, i32 23170, i32 23170>
%179 = bitcast i32* %106 to <4 x i32>*
store <4 x i32> %178, <4 x i32>* %179
ret i32 0
180: ; preds = %1, %180
%181 = phi i64 [ 0, %1 ], [ %256, %180 ]
%182 = shl nuw nsw i64 %181, 3
%183 = getelementptr inbounds i32, i32* %0, i64 %182
%184 = load i32, i32* %183
%185 = getelementptr inbounds i32, i32* %183, i64 1
%186 = load i32, i32* %185
%187 = getelementptr inbounds i32, i32* %183, i64 2
%188 = load i32, i32* %187
%189 = getelementptr inbounds i32, i32* %183, i64 3
%190 = load i32, i32* %189
%191 = getelementptr inbounds i32, i32* %183, i64 4
%192 = load i32, i32* %191
%193 = getelementptr inbounds i32, i32* %183, i64 5
%194 = load i32, i32* %193
%195 = getelementptr inbounds i32, i32* %183, i64 6
%196 = load i32, i32* %195
%197 = getelementptr inbounds i32, i32* %183, i64 7
%198 = load i32, i32* %197
%199 = add nsw i32 %198, %184
%200 = sub nsw i32 %184, %198
%201 = add nsw i32 %196, %186
%202 = sub nsw i32 %186, %196
%203 = add nsw i32 %194, %188
%204 = sub nsw i32 %188, %194
%205 = add nsw i32 %192, %190
%206 = sub nsw i32 %190, %192
%207 = add nsw i32 %199, %205
%208 = sub nsw i32 %199, %205
%209 = add nsw i32 %201, %203
%210 = sub nsw i32 %201, %203
%211 = add nsw i32 %202, %204
%212 = ashr i32 %211, 14
%213 = mul i32 %212, 32138
%214 = ashr i32 %204, 14
%215 = mul nsw i32 %214, -19266
%216 = ashr exact i32 %213, 1
%217 = add nsw i32 %216, %215
%218 = ashr i32 %202, 14
%219 = mul nsw i32 %218, -25746
%220 = add nsw i32 %213, %219
%221 = add nsw i32 %200, %206
%222 = ashr i32 %221, 14
%223 = mul i32 %222, 27246
%224 = ashr i32 %206, 15
%225 = mul nsw i32 %224, -45451
%226 = ashr exact i32 %223, 1
%227 = add nsw i32 %226, %225
%228 = ashr i32 %200, 15
%229 = mul nsw i32 %228, -36163
%230 = ashr i32 %229, 1
%231 = add nsw i32 %230, %223
%232 = add nsw i32 %207, %209
%233 = sub nsw i32 %207, %209
%234 = ashr i32 %231, 1
%235 = add nsw i32 %234, %217
%236 = sub nsw i32 %234, %217
%237 = ashr exact i32 %220, 1
%238 = add nsw i32 %227, %237
%239 = sub nsw i32 %227, %237
%240 = add nsw i32 %208, %210
%241 = ashr i32 %240, 14
%242 = mul i32 %241, 17734
%243 = ashr i32 %210, 14
%244 = mul nsw i32 %243, -30274
%245 = ashr exact i32 %242, 1
%246 = add nsw i32 %245, %244
%247 = ashr i32 %208, 14
%248 = mul nsw i32 %247, 12540
%249 = add nsw i32 %245, %248
store i32 %232, i32* %183
store i32 %233, i32* %191
store i32 %249, i32* %187
store i32 %246, i32* %195
%250 = sub nsw i32 %238, %235
store i32 %250, i32* %197
%251 = add nsw i32 %238, %235
store i32 %251, i32* %185
%252 = ashr i32 %239, 14
%253 = mul i32 %252, 23170
store i32 %253, i32* %189
%254 = ashr i32 %236, 14
%255 = mul i32 %254, 23170
store i32 %255, i32* %193
%256 = add nuw nsw i64 %181, 1
%257 = icmp eq i64 %256, 8
br i1 %257, label %2, label %180
}