#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 round1L;
  int32_t shft2L;
  int32_t round2L;
  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;
  round1L = D1980 + 8192;
  shft1L = round1L >> 14;
  x6 = shft1L * 32138L;
  round1L = x2 + 8192;
  shft1L = round1L >> 14;
  D1981 = shft1L * -19266;
  round2L = x6 + 1;
  shft2L = round2L >> 1;
  x2 = D1981 + shft2L;
  round1L = x1 + 8192;
  shft1L = round1L >> 14;
  D1982 = shft1L * -25746;
  x1 = D1982 + x6;
  D1983 = x0 + x3;
  round1L = D1983 + 8192;
  shft1L = round1L >> 14;
  x6 = shft1L * 27246L;
  round1L = x3 + 16384L;
  shft1L = round1L >> 15;
  D1984 = shft1L * -45451;
  round2L = x6 + 1;
  shft2L = round2L >> 1;
  x3 = D1984 + shft2L;
  round1L = x0 + 16384L;
  shft1L = round1L >> 15;
  D1985 = shft1L * -36163;
  round1L = D1985 + 1;
  shft1L = round1L >> 1;
  x0 = shft1L + x6;
  x6 = x4 + x5;
  x4 = x4 - x5;
  round1L = x0 + 1;
  shft1L = round1L >> 1;
  x5 = shft1L + x2;
  round1L = x0 + 1;
  shft1L = round1L >> 1;
  x0 = shft1L - x2;
  round2L = x1 + 1;
  shft2L = round2L >> 1;
  x2 = x3 + shft2L;
  round2L = x1 + 1;
  shft2L = round2L >> 1;
  x3 = x3 - shft2L;
  D1986 = x7 + x8;
  round1L = D1986 + 8192;
  shft1L = round1L >> 14;
  x1 = shft1L * 17734L;
  round1L = x7 + 8192;
  shft1L = round1L >> 14;
  D1987 = shft1L * -30274;
  round2L = x1 + 1;
  shft2L = round2L >> 1;
  x7 = D1987 + shft2L;
  round1L = x8 + 8192;
  shft1L = round1L >> 14;
  D1988 = shft1L * 6270;
  shft1L = D1988 << 1;
  round2L = x1 + 1;
  shft2L = round2L >> 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));
  round1L = x3 + 8192;
  shft1L = round1L >> 14;
  D1991 = shft1L * 23170L;
  D1979[3] = D1991;
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  round1L = x0 + 8192;
  shft1L = round1L >> 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;
  round1L = D2000 + 8192;
  shft1L = round1L >> 14;
  x6 = shft1L * 32138L;
  round1L = x2 + 8192;
  shft1L = round1L >> 14;
  D2001 = shft1L * -19266;
  round2L = x6 + 1;
  shft2L = round2L >> 1;
  x2 = D2001 + shft2L;
  round1L = x1 + 8192;
  shft1L = round1L >> 14;
  D2002 = shft1L * -25746;
  x1 = D2002 + x6;
  D2003 = x0 + x3;
  round1L = D2003 + 8192;
  shft1L = round1L >> 14;
  x6 = shft1L * 27246L;
  round1L = x3 + 16384L;
  shft1L = round1L >> 15;
  D2004 = shft1L * -45451;
  round2L = x6 + 1;
  shft2L = round2L >> 1;
  x3 = D2004 + shft2L;
  round1L = x0 + 16384L;
  shft1L = round1L >> 15;
  D2005 = shft1L * -36163;
  round1L = D2005 + 1;
  shft1L = round1L >> 1;
  x0 = shft1L + x6;
  x6 = x4 + x5;
  x4 = x4 - x5;
  round1L = x0 + 1;
  shft1L = round1L >> 1;
  x5 = shft1L + x2;
  round1L = x0 + 1;
  shft1L = round1L >> 1;
  x0 = shft1L - x2;
  round2L = x1 + 1;
  shft2L = round2L >> 1;
  x2 = x3 + shft2L;
  round2L = x1 + 1;
  shft2L = round2L >> 1;
  x3 = x3 - shft2L;
  D2006 = x7 + x8;
  round1L = D2006 + 8192;
  shft1L = round1L >> 14;
  x1 = shft1L * 17734L;
  round1L = x7 + 8192;
  shft1L = round1L >> 14;
  D2007 = shft1L * -30274;
  round2L = x1 + 1;
  shft2L = round2L >> 1;
  x7 = D2007 + shft2L;
  round1L = x8 + 8192;
  shft1L = round1L >> 14;
  D2008 = shft1L * 6270;
  shft1L = D2008 << 1;
  round2L = x1 + 1;
  shft2L = round2L >> 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));
  round1L = x3 + 8192;
  shft1L = round1L >> 14;
  D2011 = shft1L * 23170L;
  D1995[col] = D2011;
  D1997 = dctBlock + (160 / sizeof(*dctBlock));
  round1L = x0 + 8192;
  shft1L = round1L >> 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    $0x80,%rsp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0x48(%rbp)
jmp    1932 <dct+0x832>
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x40(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
mov    0x8(%rax),%eax
mov    %eax,-0x38(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
mov    0xc(%rax),%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
mov    0x10(%rax),%eax
mov    %eax,-0x30(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
mov    0x14(%rax),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
mov    0x18(%rax),%eax
mov    %eax,-0x28(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0xf8(%rbp),%rax
mov    0x1c(%rax),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x40(%rbp),%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x3c(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x3c(%rbp),%eax
sub    -0x28(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x38(%rbp),%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x34(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x34(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x20(%rbp),%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x20(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x24(%rbp),%eax
sub    -0x28(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x3c(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0xec(%rbp)
mov    -0xec(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x7d8a,%rax,%rax
mov    %eax,-0x28(%rbp)
mov    -0x38(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffffb4be,-0xc(%rbp),%eax
mov    %eax,-0xe8(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0xe8(%rbp),%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff9b6e,-0xc(%rbp),%eax
mov    %eax,-0xe4(%rbp)
mov    -0xe4(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x40(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0xe0(%rbp)
mov    -0xe0(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x6a6e,%rax,%rax
mov    %eax,-0x28(%rbp)
movslq -0x34(%rbp),%rax
add    $0x4000,%rax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xf,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff4e75,-0xc(%rbp),%eax
mov    %eax,-0xdc(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0xdc(%rbp),%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x34(%rbp)
movslq -0x40(%rbp),%rax
add    $0x4000,%rax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xf,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff72bd,-0xc(%rbp),%eax
mov    %eax,-0xd8(%rbp)
mov    -0xd8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x30(%rbp),%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x38(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x34(%rbp),%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x34(%rbp),%eax
sub    -0x14(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0xd4(%rbp)
mov    -0xd4(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x4546,%rax,%rax
mov    %eax,-0x3c(%rbp)
mov    -0x24(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff89be,-0xc(%rbp),%eax
mov    %eax,-0xd0(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0xd0(%rbp),%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0x187e,-0xc(%rbp),%eax
mov    %eax,-0xcc(%rbp)
mov    -0xcc(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0xc(%rbp),%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0x28(%rbp),%ecx
mov    -0xf8(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0x30(%rbp),%ecx
mov    -0xf8(%rbp),%rax
mov    %ecx,0x10(%rax)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0x20(%rbp),%ecx
mov    -0xf8(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0x24(%rbp),%ecx
mov    -0xf8(%rbp),%rax
mov    %ecx,0x18(%rax)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0xc8(%rbp)
mov    -0xc8(%rbp),%ecx
mov    -0xf8(%rbp),%rax
mov    %ecx,0x1c(%rax)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0x38(%rbp),%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0xc4(%rbp)
mov    -0xc4(%rbp),%ecx
mov    -0xf8(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0x34(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x5a82,%rax,%rax
mov    %eax,-0xc0(%rbp)
mov    -0xc0(%rbp),%ecx
mov    -0xf8(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x48(%rbp),%eax
mov    %eax,-0x100(%rbp)
mov    -0x100(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0xf8(%rbp)
mov    -0x40(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x5a82,%rax,%rax
mov    %eax,-0xbc(%rbp)
mov    -0xbc(%rbp),%ecx
mov    -0xf8(%rbp),%rax
mov    %ecx,0x14(%rax)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
cmpl   $0x7,-0x48(%rbp)
jg     1941 <dct+0x841>
jmp    111b <dct+0x1b>
jmp    1946 <dct+0x846>
movl   $0x0,-0x44(%rbp)
jmp    1e59 <dct+0xd59>
mov    -0x8(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x40(%rbp)
mov    -0x8(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x8(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0xb0(%rbp)
mov    -0xb0(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x38(%rbp)
mov    -0x8(%rbp),%rax
add    $0x60,%rax
mov    %rax,-0xa8(%rbp)
mov    -0xa8(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x34(%rbp)
mov    -0x8(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0xa0(%rbp)
mov    -0xa0(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x30(%rbp)
mov    -0x8(%rbp),%rax
add    $0xa0,%rax
mov    %rax,-0x98(%rbp)
mov    -0x98(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x8(%rbp),%rax
add    $0xc0,%rax
mov    %rax,-0x90(%rbp)
mov    -0x90(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x28(%rbp)
mov    -0x8(%rbp),%rax
add    $0xe0,%rax
mov    %rax,-0x88(%rbp)
mov    -0x88(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x40(%rbp),%eax
sub    -0x24(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x3c(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x3c(%rbp),%eax
sub    -0x28(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x38(%rbp),%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x34(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x34(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x20(%rbp),%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x20(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x24(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x24(%rbp),%eax
sub    -0x28(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x3c(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x7d8a,%rax,%rax
mov    %eax,-0x28(%rbp)
mov    -0x38(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffffb4be,-0xc(%rbp),%eax
mov    %eax,-0x78(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x78(%rbp),%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff9b6e,-0xc(%rbp),%eax
mov    %eax,-0x74(%rbp)
mov    -0x74(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x40(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x70(%rbp)
mov    -0x70(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x6a6e,%rax,%rax
mov    %eax,-0x28(%rbp)
movslq -0x34(%rbp),%rax
add    $0x4000,%rax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xf,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff4e75,-0xc(%rbp),%eax
mov    %eax,-0x6c(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x6c(%rbp),%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x34(%rbp)
movslq -0x40(%rbp),%rax
add    $0x4000,%rax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xf,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff72bd,-0xc(%rbp),%eax
mov    %eax,-0x68(%rbp)
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x30(%rbp),%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x30(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x40(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0xc(%rbp),%eax
sub    -0x38(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x34(%rbp),%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x34(%rbp),%eax
sub    -0x14(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x24(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x64(%rbp)
mov    -0x64(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x4546,%rax,%rax
mov    %eax,-0x3c(%rbp)
mov    -0x24(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0xffff89be,-0xc(%rbp),%eax
mov    %eax,-0x60(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0x60(%rbp),%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x20(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
imul   $0x187e,-0xc(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0xc(%rbp)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x14(%rbp)
mov    -0xc(%rbp),%eax
add    -0x14(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x28(%rbp),%edx
mov    -0x8(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0xa0(%rbp)
mov    -0x30(%rbp),%edx
mov    -0xa0(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0xb0(%rbp)
mov    -0x20(%rbp),%edx
mov    -0xb0(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0xc0,%rax
mov    %rax,-0x90(%rbp)
mov    -0x24(%rbp),%edx
mov    -0x90(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0xe0,%rax
mov    %rax,-0x88(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x58(%rbp)
mov    -0x58(%rbp),%edx
mov    -0x88(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0xb8(%rbp)
mov    -0x38(%rbp),%eax
add    -0x2c(%rbp),%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%edx
mov    -0xb8(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0x60,%rax
mov    %rax,-0xa8(%rbp)
mov    -0x34(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x5a82,%rax,%rax
mov    %eax,-0x50(%rbp)
mov    -0x50(%rbp),%edx
mov    -0xa8(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0xa0,%rax
mov    %rax,-0x98(%rbp)
mov    -0x40(%rbp),%eax
add    $0x2000,%eax
mov    %eax,-0x10(%rbp)
mov    -0x10(%rbp),%eax
sar    $0xe,%eax
mov    %eax,-0xc(%rbp)
movslq -0xc(%rbp),%rax
imul   $0x5a82,%rax,%rax
mov    %eax,-0x4c(%rbp)
mov    -0x4c(%rbp),%edx
mov    -0x98(%rbp),%rax
movslq -0x44(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x44(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
cmpl   $0x7,-0x44(%rbp)
jg     1e68 <dct+0xd68>
jmp    1952 <dct+0x852>
jmp    1e6d <dct+0xd6d>
xor    %eax,%eax
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dct>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
xor    %eax,%eax
nopl   0x0(%rax)
mov    (%rdi,%rax,1),%esi
mov    0x4(%rdi,%rax,1),%ebx
mov    0x8(%rdi,%rax,1),%ecx
mov    0xc(%rdi,%rax,1),%edx
mov    0x10(%rdi,%rax,1),%r8d
mov    0x14(%rdi,%rax,1),%r10d
mov    0x18(%rdi,%rax,1),%r11d
mov    0x1c(%rdi,%rax,1),%ebp
lea    (%rsi,%rbp,1),%r15d
sub    %ebp,%esi
lea    (%r11,%rbx,1),%r9d
sub    %r11d,%ebx
lea    (%r10,%rcx,1),%r11d
sub    %r10d,%ecx
lea    (%r8,%rdx,1),%ebp
sub    %r8d,%edx
lea    (%r15,%rbp,1),%r8d
sub    %ebp,%r15d
lea    (%r9,%r11,1),%r14d
sub    %r11d,%r9d
lea    (%rcx,%rbx,1),%ebp
add    $0x2000,%ebp
add    $0x2000,%ecx
sar    $0xe,%ebp
imul   $0x7d8a,%ebp,%ebp
sar    $0xe,%ecx
imul   $0xffffb4be,%ecx,%ecx
add    $0x2000,%ebx
sar    $0xe,%ebx
imul   $0xffff9b6e,%ebx,%r11d
add    %ebp,%r11d
mov    %ebp,%r10d
sar    %r10d
add    %ecx,%r10d
lea    (%rdx,%rsi,1),%ecx
add    $0x2000,%ecx
sar    $0xe,%ecx
imul   $0x6a6e,%ecx,%ecx
add    $0x4000,%edx
sar    $0xf,%edx
imul   $0xffff4e75,%edx,%ebx
add    $0x4000,%esi
sar    $0xf,%esi
imul   $0xffff72bd,%esi,%edx
add    $0x1,%edx
sar    %edx
add    %ecx,%edx
add    $0x1,%edx
mov    %ecx,%esi
sar    %esi
add    %ebx,%esi
lea    (%r8,%r14,1),%r12d
sub    %r14d,%r8d
sar    %edx
lea    (%rdx,%r10,1),%r13d
sar    %r11d
lea    (%rsi,%r11,1),%r14d
lea    (%r9,%r15,1),%ebx
add    $0x2000,%ebx
mov    %r9d,%ebp
add    $0x2000,%ebp
sar    $0xe,%ebx
imul   $0x4546,%ebx,%ebx
sar    $0xe,%ebp
imul   $0xffff89be,%ebp,%ebp
sar    %ebx
add    %ebx,%ebp
add    $0x2000,%r15d
sar    $0xe,%r15d
imul   $0x30fc,%r15d,%ecx
add    %ebx,%ecx
mov    %r12d,(%rdi,%rax,1)
mov    %r8d,0x10(%rdi,%rax,1)
mov    %ecx,0x8(%rdi,%rax,1)
mov    %ebp,0x18(%rdi,%rax,1)
mov    %r14d,%ecx
sub    %r13d,%ecx
mov    %ecx,0x1c(%rdi,%rax,1)
add    %r14d,%r13d
mov    %r13d,0x4(%rdi,%rax,1)
sub    %r11d,%esi
add    $0x2000,%esi
sar    $0xe,%esi
imul   $0x5a82,%esi,%ecx
mov    %ecx,0xc(%rdi,%rax,1)
sub    %r10d,%edx
add    $0x2000,%edx
sar    $0xe,%edx
imul   $0x5a82,%edx,%ecx
mov    %ecx,0x14(%rdi,%rax,1)
add    $0x20,%rax
cmp    $0x100,%rax
jne    1110 <dct+0x10>
mov    $0xfffffffffffffff8,%rax
movdqa 0xd68(%rip),%xmm11
movdqa 0xdff(%rip),%xmm14
movdqa 0xe06(%rip),%xmm15
nopw   0x0(%rax,%rax,1)
movdqu 0x20(%rdi,%rax,4),%xmm10
movdqu 0x40(%rdi,%rax,4),%xmm3
movdqu 0x60(%rdi,%rax,4),%xmm4
movdqu 0x80(%rdi,%rax,4),%xmm2
movdqu 0xa0(%rdi,%rax,4),%xmm8
movdqu 0xc0(%rdi,%rax,4),%xmm7
movdqu 0xe0(%rdi,%rax,4),%xmm0
movdqu 0x100(%rdi,%rax,4),%xmm1
movdqa %xmm1,%xmm6
paddd  %xmm10,%xmm6
psubd  %xmm1,%xmm10
movdqa %xmm0,%xmm1
paddd  %xmm3,%xmm1
psubd  %xmm0,%xmm3
movdqa %xmm7,%xmm0
paddd  %xmm4,%xmm0
psubd  %xmm7,%xmm4
movdqa %xmm8,%xmm5
paddd  %xmm2,%xmm5
psubd  %xmm8,%xmm2
movdqa %xmm6,%xmm13
paddd  %xmm5,%xmm13
psubd  %xmm5,%xmm6
movdqa %xmm1,%xmm12
paddd  %xmm0,%xmm12
psubd  %xmm0,%xmm1
paddd  %xmm11,%xmm4
movdqa %xmm4,%xmm0
paddd  %xmm3,%xmm0
psrad  $0xe,%xmm0
pshufd $0xf5,%xmm0,%xmm5
movdqa 0xcb0(%rip),%xmm7
pmuludq %xmm7,%xmm0
pshufd $0xe8,%xmm0,%xmm8
pmuludq %xmm7,%xmm5
pshufd $0xe8,%xmm5,%xmm0
punpckldq %xmm0,%xmm8
psrad  $0xe,%xmm4
pshufd $0xf5,%xmm4,%xmm0
movdqa 0xc96(%rip),%xmm5
pmuludq %xmm5,%xmm4
pshufd $0xe8,%xmm4,%xmm4
pmuludq %xmm5,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm4
paddd  %xmm11,%xmm3
psrad  $0xe,%xmm3
pshufd $0xf5,%xmm3,%xmm0
movdqa 0xc79(%rip),%xmm5
pmuludq %xmm5,%xmm3
pshufd $0xe8,%xmm3,%xmm9
pmuludq %xmm5,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm9
paddd  %xmm8,%xmm9
psrad  $0x1,%xmm8
paddd  %xmm4,%xmm8
movdqa %xmm2,%xmm0
paddd  %xmm10,%xmm0
paddd  %xmm11,%xmm0
psrad  $0xe,%xmm0
pshufd $0xf5,%xmm0,%xmm4
movdqa 0xc41(%rip),%xmm5
pmuludq %xmm5,%xmm0
pshufd $0xe8,%xmm0,%xmm3
pmuludq %xmm5,%xmm4
pshufd $0xe8,%xmm4,%xmm0
punpckldq %xmm0,%xmm3
movdqa 0xc33(%rip),%xmm5
paddd  %xmm5,%xmm2
psrad  $0xf,%xmm2
pshufd $0xf5,%xmm2,%xmm0
movdqa 0xc2d(%rip),%xmm7
pmuludq %xmm7,%xmm2
pshufd $0xe8,%xmm2,%xmm4
pmuludq %xmm7,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm4
paddd  %xmm5,%xmm10
psrad  $0xf,%xmm10
pshufd $0xf5,%xmm10,%xmm0
movdqa 0xc0e(%rip),%xmm5
pmuludq %xmm5,%xmm10
pshufd $0xe8,%xmm10,%xmm2
pmuludq %xmm5,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm2
pcmpeqd %xmm7,%xmm7
psubd  %xmm7,%xmm2
psrad  $0x1,%xmm2
paddd  %xmm3,%xmm2
psrad  $0x1,%xmm3
paddd  %xmm4,%xmm3
movdqa %xmm13,%xmm10
paddd  %xmm12,%xmm10
psubd  %xmm12,%xmm13
paddd  %xmm11,%xmm1
movdqa %xmm1,%xmm0
paddd  %xmm6,%xmm0
psrad  $0xe,%xmm0
pshufd $0xf5,%xmm0,%xmm4
movdqa 0xbbd(%rip),%xmm12
pmuludq %xmm12,%xmm0
pshufd $0xe8,%xmm0,%xmm5
pmuludq %xmm12,%xmm4
pshufd $0xe8,%xmm4,%xmm0
punpckldq %xmm0,%xmm5
psrad  $0xe,%xmm1
pshufd $0xf5,%xmm1,%xmm0
movdqa 0xba3(%rip),%xmm4
pmuludq %xmm4,%xmm1
pshufd $0xe8,%xmm1,%xmm1
pmuludq %xmm4,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm1
paddd  %xmm11,%xmm6
psrad  $0xe,%xmm6
pshufd $0xf5,%xmm6,%xmm0
pmuludq %xmm14,%xmm6
pshufd $0xe8,%xmm6,%xmm4
pmuludq %xmm14,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm4
psrad  $0x1,%xmm5
paddd  %xmm5,%xmm1
paddd  %xmm5,%xmm4
movdqu %xmm10,0x20(%rdi,%rax,4)
psubd  %xmm7,%xmm2
psrad  $0x1,%xmm2
movdqu %xmm13,0xa0(%rdi,%rax,4)
movdqa %xmm2,%xmm0
paddd  %xmm8,%xmm0
psrad  $0x1,%xmm9
movdqu %xmm4,0x60(%rdi,%rax,4)
movdqa %xmm3,%xmm4
paddd  %xmm9,%xmm4
movdqu %xmm1,0xe0(%rdi,%rax,4)
movdqa %xmm4,%xmm1
psubd  %xmm0,%xmm1
movdqu %xmm1,0x100(%rdi,%rax,4)
paddd  %xmm0,%xmm4
movdqu %xmm4,0x40(%rdi,%rax,4)
psubd  %xmm9,%xmm3
paddd  %xmm11,%xmm3
psrad  $0xe,%xmm3
pshufd $0xf5,%xmm3,%xmm0
pmuludq %xmm15,%xmm3
pshufd $0xe8,%xmm3,%xmm1
pmuludq %xmm15,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0x80(%rdi,%rax,4)
psubd  %xmm8,%xmm2
paddd  %xmm11,%xmm2
psrad  $0xe,%xmm2
pshufd $0xf5,%xmm2,%xmm0
pmuludq %xmm15,%xmm2
pshufd $0xe8,%xmm2,%xmm1
pmuludq %xmm15,%xmm0
pshufd $0xe8,%xmm0,%xmm0
punpckldq %xmm0,%xmm1
movdqu %xmm1,0xc0(%rdi,%rax,4)
add    $0x4,%rax
jne    12b0 <dct+0x1b0>
xor    %eax,%eax
pop    %rbx
pop    %r12
pop    %r13
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*
%53 = alloca i32
%54 = alloca i32
store i32* %0, i32** %2
br label %55
55: ; preds = %1
store i32 0, i32* %18
br label %472
56: ; preds = %475
%57 = load i32, i32* %18
store i32 %57, i32* %54
%58 = load i32, i32* %54
%59 = mul nsw i32 %58, 64
store i32 %59, i32* %53
%60 = load i32, i32* %53
%61 = ashr i32 %60, 1
store i32 %61, i32* %7
%62 = load i32*, i32** %2
%63 = load i32, i32* %7
%64 = sext i32 %63 to i64
%65 = udiv i64 %64, 4
%66 = getelementptr inbounds i32, i32* %62, i64 %65
store i32* %66, i32** %52
%67 = load i32*, i32** %52
%68 = getelementptr inbounds i32, i32* %67, i64 0
%69 = load i32, i32* %68
store i32 %69, i32* %16
%70 = load i32, i32* %18
store i32 %70, i32* %54
%71 = load i32, i32* %54
%72 = mul nsw i32 %71, 64
store i32 %72, i32* %53
%73 = load i32, i32* %53
%74 = ashr i32 %73, 1
store i32 %74, i32* %7
%75 = load i32*, i32** %2
%76 = load i32, i32* %7
%77 = sext i32 %76 to i64
%78 = udiv i64 %77, 4
%79 = getelementptr inbounds i32, i32* %75, i64 %78
store i32* %79, i32** %52
%80 = load i32*, i32** %52
%81 = getelementptr inbounds i32, i32* %80, i64 1
%82 = load i32, i32* %81
store i32 %82, i32* %15
%83 = load i32, i32* %18
store i32 %83, i32* %54
%84 = load i32, i32* %54
%85 = mul nsw i32 %84, 64
store i32 %85, i32* %53
%86 = load i32, i32* %53
%87 = ashr i32 %86, 1
store i32 %87, i32* %7
%88 = load i32*, i32** %2
%89 = load i32, i32* %7
%90 = sext i32 %89 to i64
%91 = udiv i64 %90, 4
%92 = getelementptr inbounds i32, i32* %88, i64 %91
store i32* %92, i32** %52
%93 = load i32*, i32** %52
%94 = getelementptr inbounds i32, i32* %93, i64 2
%95 = load i32, i32* %94
store i32 %95, i32* %14
%96 = load i32, i32* %18
store i32 %96, i32* %54
%97 = load i32, i32* %54
%98 = mul nsw i32 %97, 64
store i32 %98, i32* %53
%99 = load i32, i32* %53
%100 = ashr i32 %99, 1
store i32 %100, i32* %7
%101 = load i32*, i32** %2
%102 = load i32, i32* %7
%103 = sext i32 %102 to i64
%104 = udiv i64 %103, 4
%105 = getelementptr inbounds i32, i32* %101, i64 %104
store i32* %105, i32** %52
%106 = load i32*, i32** %52
%107 = getelementptr inbounds i32, i32* %106, i64 3
%108 = load i32, i32* %107
store i32 %108, i32* %13
%109 = load i32, i32* %18
store i32 %109, i32* %54
%110 = load i32, i32* %54
%111 = mul nsw i32 %110, 64
store i32 %111, i32* %53
%112 = load i32, i32* %53
%113 = ashr i32 %112, 1
store i32 %113, i32* %7
%114 = load i32*, i32** %2
%115 = load i32, i32* %7
%116 = sext i32 %115 to i64
%117 = udiv i64 %116, 4
%118 = getelementptr inbounds i32, i32* %114, i64 %117
store i32* %118, i32** %52
%119 = load i32*, i32** %52
%120 = getelementptr inbounds i32, i32* %119, i64 4
%121 = load i32, i32* %120
store i32 %121, i32* %12
%122 = load i32, i32* %18
store i32 %122, i32* %54
%123 = load i32, i32* %54
%124 = mul nsw i32 %123, 64
store i32 %124, i32* %53
%125 = load i32, i32* %53
%126 = ashr i32 %125, 1
store i32 %126, i32* %7
%127 = load i32*, i32** %2
%128 = load i32, i32* %7
%129 = sext i32 %128 to i64
%130 = udiv i64 %129, 4
%131 = getelementptr inbounds i32, i32* %127, i64 %130
store i32* %131, i32** %52
%132 = load i32*, i32** %52
%133 = getelementptr inbounds i32, i32* %132, i64 5
%134 = load i32, i32* %133
store i32 %134, i32* %11
%135 = load i32, i32* %18
store i32 %135, i32* %54
%136 = load i32, i32* %54
%137 = mul nsw i32 %136, 64
store i32 %137, i32* %53
%138 = load i32, i32* %53
%139 = ashr i32 %138, 1
store i32 %139, i32* %7
%140 = load i32*, i32** %2
%141 = load i32, i32* %7
%142 = sext i32 %141 to i64
%143 = udiv i64 %142, 4
%144 = getelementptr inbounds i32, i32* %140, i64 %143
store i32* %144, i32** %52
%145 = load i32*, i32** %52
%146 = getelementptr inbounds i32, i32* %145, i64 6
%147 = load i32, i32* %146
store i32 %147, i32* %10
%148 = load i32, i32* %18
store i32 %148, i32* %54
%149 = load i32, i32* %54
%150 = mul nsw i32 %149, 64
store i32 %150, i32* %53
%151 = load i32, i32* %53
%152 = ashr i32 %151, 1
store i32 %152, i32* %7
%153 = load i32*, i32** %2
%154 = load i32, i32* %7
%155 = sext i32 %154 to i64
%156 = udiv i64 %155, 4
%157 = getelementptr inbounds i32, i32* %153, i64 %156
store i32* %157, i32** %52
%158 = load i32*, i32** %52
%159 = getelementptr inbounds i32, i32* %158, i64 7
%160 = load i32, i32* %159
store i32 %160, i32* %9
%161 = load i32, i32* %9
%162 = load i32, i32* %16
%163 = add nsw i32 %161, %162
store i32 %163, i32* %8
%164 = load i32, i32* %16
%165 = load i32, i32* %9
%166 = sub nsw i32 %164, %165
store i32 %166, i32* %16
%167 = load i32, i32* %15
%168 = load i32, i32* %10
%169 = add nsw i32 %167, %168
store i32 %169, i32* %9
%170 = load i32, i32* %15
%171 = load i32, i32* %10
%172 = sub nsw i32 %170, %171
store i32 %172, i32* %15
%173 = load i32, i32* %14
%174 = load i32, i32* %11
%175 = add nsw i32 %173, %174
store i32 %175, i32* %10
%176 = load i32, i32* %14
%177 = load i32, i32* %11
%178 = sub nsw i32 %176, %177
store i32 %178, i32* %14
%179 = load i32, i32* %13
%180 = load i32, i32* %12
%181 = add nsw i32 %179, %180
store i32 %181, i32* %11
%182 = load i32, i32* %13
%183 = load i32, i32* %12
%184 = sub nsw i32 %182, %183
store i32 %184, i32* %13
%185 = load i32, i32* %8
%186 = load i32, i32* %11
%187 = add nsw i32 %185, %186
store i32 %187, i32* %12
%188 = load i32, i32* %8
%189 = load i32, i32* %11
%190 = sub nsw i32 %188, %189
store i32 %190, i32* %8
%191 = load i32, i32* %9
%192 = load i32, i32* %10
%193 = add nsw i32 %191, %192
store i32 %193, i32* %11
%194 = load i32, i32* %9
%195 = load i32, i32* %10
%196 = sub nsw i32 %194, %195
store i32 %196, i32* %9
%197 = load i32, i32* %15
%198 = load i32, i32* %14
%199 = add nsw i32 %197, %198
store i32 %199, i32* %51
%200 = load i32, i32* %51
%201 = add nsw i32 %200, 8192
store i32 %201, i32* %4
%202 = load i32, i32* %4
%203 = ashr i32 %202, 14
store i32 %203, i32* %3
%204 = load i32, i32* %3
%205 = sext i32 %204 to i64
%206 = mul nsw i64 %205, 32138
%207 = trunc i64 %206 to i32
store i32 %207, i32* %10
%208 = load i32, i32* %14
%209 = add nsw i32 %208, 8192
store i32 %209, i32* %4
%210 = load i32, i32* %4
%211 = ashr i32 %210, 14
store i32 %211, i32* %3
%212 = load i32, i32* %3
%213 = mul nsw i32 %212, -19266
store i32 %213, i32* %50
%214 = load i32, i32* %10
%215 = add nsw i32 %214, 1
store i32 %215, i32* %6
%216 = load i32, i32* %6
%217 = ashr i32 %216, 1
store i32 %217, i32* %5
%218 = load i32, i32* %50
%219 = load i32, i32* %5
%220 = add nsw i32 %218, %219
store i32 %220, i32* %14
%221 = load i32, i32* %15
%222 = add nsw i32 %221, 8192
store i32 %222, i32* %4
%223 = load i32, i32* %4
%224 = ashr i32 %223, 14
store i32 %224, i32* %3
%225 = load i32, i32* %3
%226 = mul nsw i32 %225, -25746
store i32 %226, i32* %49
%227 = load i32, i32* %49
%228 = load i32, i32* %10
%229 = add nsw i32 %227, %228
store i32 %229, i32* %15
%230 = load i32, i32* %16
%231 = load i32, i32* %13
%232 = add nsw i32 %230, %231
store i32 %232, i32* %48
%233 = load i32, i32* %48
%234 = add nsw i32 %233, 8192
store i32 %234, i32* %4
%235 = load i32, i32* %4
%236 = ashr i32 %235, 14
store i32 %236, i32* %3
%237 = load i32, i32* %3
%238 = sext i32 %237 to i64
%239 = mul nsw i64 %238, 27246
%240 = trunc i64 %239 to i32
store i32 %240, i32* %10
%241 = load i32, i32* %13
%242 = sext i32 %241 to i64
%243 = add nsw i64 %242, 16384
%244 = trunc i64 %243 to i32
store i32 %244, i32* %4
%245 = load i32, i32* %4
%246 = ashr i32 %245, 15
store i32 %246, i32* %3
%247 = load i32, i32* %3
%248 = mul nsw i32 %247, -45451
store i32 %248, i32* %47
%249 = load i32, i32* %10
%250 = add nsw i32 %249, 1
store i32 %250, i32* %6
%251 = load i32, i32* %6
%252 = ashr i32 %251, 1
store i32 %252, i32* %5
%253 = load i32, i32* %47
%254 = load i32, i32* %5
%255 = add nsw i32 %253, %254
store i32 %255, i32* %13
%256 = load i32, i32* %16
%257 = sext i32 %256 to i64
%258 = add nsw i64 %257, 16384
%259 = trunc i64 %258 to i32
store i32 %259, i32* %4
%260 = load i32, i32* %4
%261 = ashr i32 %260, 15
store i32 %261, i32* %3
%262 = load i32, i32* %3
%263 = mul nsw i32 %262, -36163
store i32 %263, i32* %46
%264 = load i32, i32* %46
%265 = add nsw i32 %264, 1
store i32 %265, i32* %4
%266 = load i32, i32* %4
%267 = ashr i32 %266, 1
store i32 %267, i32* %3
%268 = load i32, i32* %3
%269 = load i32, i32* %10
%270 = add nsw i32 %268, %269
store i32 %270, i32* %16
%271 = load i32, i32* %12
%272 = load i32, i32* %11
%273 = add nsw i32 %271, %272
store i32 %273, i32* %10
%274 = load i32, i32* %12
%275 = load i32, i32* %11
%276 = sub nsw i32 %274, %275
store i32 %276, i32* %12
%277 = load i32, i32* %16
%278 = add nsw i32 %277, 1
store i32 %278, i32* %4
%279 = load i32, i32* %4
%280 = ashr i32 %279, 1
store i32 %280, i32* %3
%281 = load i32, i32* %3
%282 = load i32, i32* %14
%283 = add nsw i32 %281, %282
store i32 %283, i32* %11
%284 = load i32, i32* %16
%285 = add nsw i32 %284, 1
store i32 %285, i32* %4
%286 = load i32, i32* %4
%287 = ashr i32 %286, 1
store i32 %287, i32* %3
%288 = load i32, i32* %3
%289 = load i32, i32* %14
%290 = sub nsw i32 %288, %289
store i32 %290, i32* %16
%291 = load i32, i32* %15
%292 = add nsw i32 %291, 1
store i32 %292, i32* %6
%293 = load i32, i32* %6
%294 = ashr i32 %293, 1
store i32 %294, i32* %5
%295 = load i32, i32* %13
%296 = load i32, i32* %5
%297 = add nsw i32 %295, %296
store i32 %297, i32* %14
%298 = load i32, i32* %15
%299 = add nsw i32 %298, 1
store i32 %299, i32* %6
%300 = load i32, i32* %6
%301 = ashr i32 %300, 1
store i32 %301, i32* %5
%302 = load i32, i32* %13
%303 = load i32, i32* %5
%304 = sub nsw i32 %302, %303
store i32 %304, i32* %13
%305 = load i32, i32* %9
%306 = load i32, i32* %8
%307 = add nsw i32 %305, %306
store i32 %307, i32* %45
%308 = load i32, i32* %45
%309 = add nsw i32 %308, 8192
store i32 %309, i32* %4
%310 = load i32, i32* %4
%311 = ashr i32 %310, 14
store i32 %311, i32* %3
%312 = load i32, i32* %3
%313 = sext i32 %312 to i64
%314 = mul nsw i64 %313, 17734
%315 = trunc i64 %314 to i32
store i32 %315, i32* %15
%316 = load i32, i32* %9
%317 = add nsw i32 %316, 8192
store i32 %317, i32* %4
%318 = load i32, i32* %4
%319 = ashr i32 %318, 14
store i32 %319, i32* %3
%320 = load i32, i32* %3
%321 = mul nsw i32 %320, -30274
store i32 %321, i32* %44
%322 = load i32, i32* %15
%323 = add nsw i32 %322, 1
store i32 %323, i32* %6
%324 = load i32, i32* %6
%325 = ashr i32 %324, 1
store i32 %325, i32* %5
%326 = load i32, i32* %44
%327 = load i32, i32* %5
%328 = add nsw i32 %326, %327
store i32 %328, i32* %9
%329 = load i32, i32* %8
%330 = add nsw i32 %329, 8192
store i32 %330, i32* %4
%331 = load i32, i32* %4
%332 = ashr i32 %331, 14
store i32 %332, i32* %3
%333 = load i32, i32* %3
%334 = mul nsw i32 %333, 6270
store i32 %334, i32* %43
%335 = load i32, i32* %43
%336 = shl i32 %335, 1
store i32 %336, i32* %3
%337 = load i32, i32* %15
%338 = add nsw i32 %337, 1
store i32 %338, i32* %6
%339 = load i32, i32* %6
%340 = ashr i32 %339, 1
store i32 %340, i32* %5
%341 = load i32, i32* %3
%342 = load i32, i32* %5
%343 = add nsw i32 %341, %342
store i32 %343, i32* %8
%344 = load i32, i32* %18
store i32 %344, i32* %54
%345 = load i32, i32* %54
%346 = mul nsw i32 %345, 64
store i32 %346, i32* %53
%347 = load i32, i32* %53
%348 = ashr i32 %347, 1
store i32 %348, i32* %7
%349 = load i32*, i32** %2
%350 = load i32, i32* %7
%351 = sext i32 %350 to i64
%352 = udiv i64 %351, 4
%353 = getelementptr inbounds i32, i32* %349, i64 %352
store i32* %353, i32** %52
%354 = load i32, i32* %10
%355 = load i32*, i32** %52
%356 = getelementptr inbounds i32, i32* %355, i64 0
store i32 %354, i32* %356
%357 = load i32, i32* %18
store i32 %357, i32* %54
%358 = load i32, i32* %54
%359 = mul nsw i32 %358, 64
store i32 %359, i32* %53
%360 = load i32, i32* %53
%361 = ashr i32 %360, 1
store i32 %361, i32* %7
%362 = load i32*, i32** %2
%363 = load i32, i32* %7
%364 = sext i32 %363 to i64
%365 = udiv i64 %364, 4
%366 = getelementptr inbounds i32, i32* %362, i64 %365
store i32* %366, i32** %52
%367 = load i32, i32* %12
%368 = load i32*, i32** %52
%369 = getelementptr inbounds i32, i32* %368, i64 4
store i32 %367, i32* %369
%370 = load i32, i32* %18
store i32 %370, i32* %54
%371 = load i32, i32* %54
%372 = mul nsw i32 %371, 64
store i32 %372, i32* %53
%373 = load i32, i32* %53
%374 = ashr i32 %373, 1
store i32 %374, i32* %7
%375 = load i32*, i32** %2
%376 = load i32, i32* %7
%377 = sext i32 %376 to i64
%378 = udiv i64 %377, 4
%379 = getelementptr inbounds i32, i32* %375, i64 %378
store i32* %379, i32** %52
%380 = load i32, i32* %8
%381 = load i32*, i32** %52
%382 = getelementptr inbounds i32, i32* %381, i64 2
store i32 %380, i32* %382
%383 = load i32, i32* %18
store i32 %383, i32* %54
%384 = load i32, i32* %54
%385 = mul nsw i32 %384, 64
store i32 %385, i32* %53
%386 = load i32, i32* %53
%387 = ashr i32 %386, 1
store i32 %387, i32* %7
%388 = load i32*, i32** %2
%389 = load i32, i32* %7
%390 = sext i32 %389 to i64
%391 = udiv i64 %390, 4
%392 = getelementptr inbounds i32, i32* %388, i64 %391
store i32* %392, i32** %52
%393 = load i32, i32* %9
%394 = load i32*, i32** %52
%395 = getelementptr inbounds i32, i32* %394, i64 6
store i32 %393, i32* %395
%396 = load i32, i32* %18
store i32 %396, i32* %54
%397 = load i32, i32* %54
%398 = mul nsw i32 %397, 64
store i32 %398, i32* %53
%399 = load i32, i32* %53
%400 = ashr i32 %399, 1
store i32 %400, i32* %7
%401 = load i32*, i32** %2
%402 = load i32, i32* %7
%403 = sext i32 %402 to i64
%404 = udiv i64 %403, 4
%405 = getelementptr inbounds i32, i32* %401, i64 %404
store i32* %405, i32** %52
%406 = load i32, i32* %14
%407 = load i32, i32* %11
%408 = sub nsw i32 %406, %407
store i32 %408, i32* %42
%409 = load i32, i32* %42
%410 = load i32*, i32** %52
%411 = getelementptr inbounds i32, i32* %410, i64 7
store i32 %409, i32* %411
%412 = load i32, i32* %18
store i32 %412, i32* %54
%413 = load i32, i32* %54
%414 = mul nsw i32 %413, 64
store i32 %414, i32* %53
%415 = load i32, i32* %53
%416 = ashr i32 %415, 1
store i32 %416, i32* %7
%417 = load i32*, i32** %2
%418 = load i32, i32* %7
%419 = sext i32 %418 to i64
%420 = udiv i64 %419, 4
%421 = getelementptr inbounds i32, i32* %417, i64 %420
store i32* %421, i32** %52
%422 = load i32, i32* %14
%423 = load i32, i32* %11
%424 = add nsw i32 %422, %423
store i32 %424, i32* %41
%425 = load i32, i32* %41
%426 = load i32*, i32** %52
%427 = getelementptr inbounds i32, i32* %426, i64 1
store i32 %425, i32* %427
%428 = load i32, i32* %18
store i32 %428, i32* %54
%429 = load i32, i32* %54
%430 = mul nsw i32 %429, 64
store i32 %430, i32* %53
%431 = load i32, i32* %53
%432 = ashr i32 %431, 1
store i32 %432, i32* %7
%433 = load i32*, i32** %2
%434 = load i32, i32* %7
%435 = sext i32 %434 to i64
%436 = udiv i64 %435, 4
%437 = getelementptr inbounds i32, i32* %433, i64 %436
store i32* %437, i32** %52
%438 = load i32, i32* %13
%439 = add nsw i32 %438, 8192
store i32 %439, i32* %4
%440 = load i32, i32* %4
%441 = ashr i32 %440, 14
store i32 %441, i32* %3
%442 = load i32, i32* %3
%443 = sext i32 %442 to i64
%444 = mul nsw i64 %443, 23170
%445 = trunc i64 %444 to i32
store i32 %445, i32* %40
%446 = load i32, i32* %40
%447 = load i32*, i32** %52
%448 = getelementptr inbounds i32, i32* %447, i64 3
store i32 %446, i32* %448
%449 = load i32, i32* %18
store i32 %449, i32* %54
%450 = load i32, i32* %54
%451 = mul nsw i32 %450, 64
store i32 %451, i32* %53
%452 = load i32, i32* %53
%453 = ashr i32 %452, 1
store i32 %453, i32* %7
%454 = load i32*, i32** %2
%455 = load i32, i32* %7
%456 = sext i32 %455 to i64
%457 = udiv i64 %456, 4
%458 = getelementptr inbounds i32, i32* %454, i64 %457
store i32* %458, i32** %52
%459 = load i32, i32* %16
%460 = add nsw i32 %459, 8192
store i32 %460, i32* %4
%461 = load i32, i32* %4
%462 = ashr i32 %461, 14
store i32 %462, i32* %3
%463 = load i32, i32* %3
%464 = sext i32 %463 to i64
%465 = mul nsw i64 %464, 23170
%466 = trunc i64 %465 to i32
store i32 %466, i32* %39
%467 = load i32, i32* %39
%468 = load i32*, i32** %52
%469 = getelementptr inbounds i32, i32* %468, i64 5
store i32 %467, i32* %469
%470 = load i32, i32* %18
%471 = add nsw i32 %470, 1
store i32 %471, i32* %18
br label %472
472: ; preds = %56, %55
%473 = load i32, i32* %18
%474 = icmp sle i32 %473, 7
br i1 %474, label %475, label %476
475: ; preds = %472
br label %56
476: ; preds = %472
br label %477
477: ; preds = %476
store i32 0, i32* %17
br label %794
478: ; preds = %797
%479 = load i32*, i32** %2
%480 = load i32, i32* %17
%481 = sext i32 %480 to i64
%482 = getelementptr inbounds i32, i32* %479, i64 %481
%483 = load i32, i32* %482
store i32 %483, i32* %16
%484 = load i32*, i32** %2
%485 = getelementptr inbounds i32, i32* %484, i64 8
store i32* %485, i32** %38
%486 = load i32*, i32** %38
%487 = load i32, i32* %17
%488 = sext i32 %487 to i64
%489 = getelementptr inbounds i32, i32* %486, i64 %488
%490 = load i32, i32* %489
store i32 %490, i32* %15
%491 = load i32*, i32** %2
%492 = getelementptr inbounds i32, i32* %491, i64 16
store i32* %492, i32** %37
%493 = load i32*, i32** %37
%494 = load i32, i32* %17
%495 = sext i32 %494 to i64
%496 = getelementptr inbounds i32, i32* %493, i64 %495
%497 = load i32, i32* %496
store i32 %497, i32* %14
%498 = load i32*, i32** %2
%499 = getelementptr inbounds i32, i32* %498, i64 24
store i32* %499, i32** %36
%500 = load i32*, i32** %36
%501 = load i32, i32* %17
%502 = sext i32 %501 to i64
%503 = getelementptr inbounds i32, i32* %500, i64 %502
%504 = load i32, i32* %503
store i32 %504, i32* %13
%505 = load i32*, i32** %2
%506 = getelementptr inbounds i32, i32* %505, i64 32
store i32* %506, i32** %35
%507 = load i32*, i32** %35
%508 = load i32, i32* %17
%509 = sext i32 %508 to i64
%510 = getelementptr inbounds i32, i32* %507, i64 %509
%511 = load i32, i32* %510
store i32 %511, i32* %12
%512 = load i32*, i32** %2
%513 = getelementptr inbounds i32, i32* %512, i64 40
store i32* %513, i32** %34
%514 = load i32*, i32** %34
%515 = load i32, i32* %17
%516 = sext i32 %515 to i64
%517 = getelementptr inbounds i32, i32* %514, i64 %516
%518 = load i32, i32* %517
store i32 %518, i32* %11
%519 = load i32*, i32** %2
%520 = getelementptr inbounds i32, i32* %519, i64 48
store i32* %520, i32** %33
%521 = load i32*, i32** %33
%522 = load i32, i32* %17
%523 = sext i32 %522 to i64
%524 = getelementptr inbounds i32, i32* %521, i64 %523
%525 = load i32, i32* %524
store i32 %525, i32* %10
%526 = load i32*, i32** %2
%527 = getelementptr inbounds i32, i32* %526, i64 56
store i32* %527, i32** %32
%528 = load i32*, i32** %32
%529 = load i32, i32* %17
%530 = sext i32 %529 to i64
%531 = getelementptr inbounds i32, i32* %528, i64 %530
%532 = load i32, i32* %531
store i32 %532, i32* %9
%533 = load i32, i32* %9
%534 = load i32, i32* %16
%535 = add nsw i32 %533, %534
store i32 %535, i32* %8
%536 = load i32, i32* %16
%537 = load i32, i32* %9
%538 = sub nsw i32 %536, %537
store i32 %538, i32* %16
%539 = load i32, i32* %15
%540 = load i32, i32* %10
%541 = add nsw i32 %539, %540
store i32 %541, i32* %9
%542 = load i32, i32* %15
%543 = load i32, i32* %10
%544 = sub nsw i32 %542, %543
store i32 %544, i32* %15
%545 = load i32, i32* %14
%546 = load i32, i32* %11
%547 = add nsw i32 %545, %546
store i32 %547, i32* %10
%548 = load i32, i32* %14
%549 = load i32, i32* %11
%550 = sub nsw i32 %548, %549
store i32 %550, i32* %14
%551 = load i32, i32* %13
%552 = load i32, i32* %12
%553 = add nsw i32 %551, %552
store i32 %553, i32* %11
%554 = load i32, i32* %13
%555 = load i32, i32* %12
%556 = sub nsw i32 %554, %555
store i32 %556, i32* %13
%557 = load i32, i32* %8
%558 = load i32, i32* %11
%559 = add nsw i32 %557, %558
store i32 %559, i32* %12
%560 = load i32, i32* %8
%561 = load i32, i32* %11
%562 = sub nsw i32 %560, %561
store i32 %562, i32* %8
%563 = load i32, i32* %9
%564 = load i32, i32* %10
%565 = add nsw i32 %563, %564
store i32 %565, i32* %11
%566 = load i32, i32* %9
%567 = load i32, i32* %10
%568 = sub nsw i32 %566, %567
store i32 %568, i32* %9
%569 = load i32, i32* %15
%570 = load i32, i32* %14
%571 = add nsw i32 %569, %570
store i32 %571, i32* %31
%572 = load i32, i32* %31
%573 = add nsw i32 %572, 8192
store i32 %573, i32* %4
%574 = load i32, i32* %4
%575 = ashr i32 %574, 14
store i32 %575, i32* %3
%576 = load i32, i32* %3
%577 = sext i32 %576 to i64
%578 = mul nsw i64 %577, 32138
%579 = trunc i64 %578 to i32
store i32 %579, i32* %10
%580 = load i32, i32* %14
%581 = add nsw i32 %580, 8192
store i32 %581, i32* %4
%582 = load i32, i32* %4
%583 = ashr i32 %582, 14
store i32 %583, i32* %3
%584 = load i32, i32* %3
%585 = mul nsw i32 %584, -19266
store i32 %585, i32* %30
%586 = load i32, i32* %10
%587 = add nsw i32 %586, 1
store i32 %587, i32* %6
%588 = load i32, i32* %6
%589 = ashr i32 %588, 1
store i32 %589, i32* %5
%590 = load i32, i32* %30
%591 = load i32, i32* %5
%592 = add nsw i32 %590, %591
store i32 %592, i32* %14
%593 = load i32, i32* %15
%594 = add nsw i32 %593, 8192
store i32 %594, i32* %4
%595 = load i32, i32* %4
%596 = ashr i32 %595, 14
store i32 %596, i32* %3
%597 = load i32, i32* %3
%598 = mul nsw i32 %597, -25746
store i32 %598, i32* %29
%599 = load i32, i32* %29
%600 = load i32, i32* %10
%601 = add nsw i32 %599, %600
store i32 %601, i32* %15
%602 = load i32, i32* %16
%603 = load i32, i32* %13
%604 = add nsw i32 %602, %603
store i32 %604, i32* %28
%605 = load i32, i32* %28
%606 = add nsw i32 %605, 8192
store i32 %606, i32* %4
%607 = load i32, i32* %4
%608 = ashr i32 %607, 14
store i32 %608, i32* %3
%609 = load i32, i32* %3
%610 = sext i32 %609 to i64
%611 = mul nsw i64 %610, 27246
%612 = trunc i64 %611 to i32
store i32 %612, i32* %10
%613 = load i32, i32* %13
%614 = sext i32 %613 to i64
%615 = add nsw i64 %614, 16384
%616 = trunc i64 %615 to i32
store i32 %616, i32* %4
%617 = load i32, i32* %4
%618 = ashr i32 %617, 15
store i32 %618, i32* %3
%619 = load i32, i32* %3
%620 = mul nsw i32 %619, -45451
store i32 %620, i32* %27
%621 = load i32, i32* %10
%622 = add nsw i32 %621, 1
store i32 %622, i32* %6
%623 = load i32, i32* %6
%624 = ashr i32 %623, 1
store i32 %624, i32* %5
%625 = load i32, i32* %27
%626 = load i32, i32* %5
%627 = add nsw i32 %625, %626
store i32 %627, i32* %13
%628 = load i32, i32* %16
%629 = sext i32 %628 to i64
%630 = add nsw i64 %629, 16384
%631 = trunc i64 %630 to i32
store i32 %631, i32* %4
%632 = load i32, i32* %4
%633 = ashr i32 %632, 15
store i32 %633, i32* %3
%634 = load i32, i32* %3
%635 = mul nsw i32 %634, -36163
store i32 %635, i32* %26
%636 = load i32, i32* %26
%637 = add nsw i32 %636, 1
store i32 %637, i32* %4
%638 = load i32, i32* %4
%639 = ashr i32 %638, 1
store i32 %639, i32* %3
%640 = load i32, i32* %3
%641 = load i32, i32* %10
%642 = add nsw i32 %640, %641
store i32 %642, i32* %16
%643 = load i32, i32* %12
%644 = load i32, i32* %11
%645 = add nsw i32 %643, %644
store i32 %645, i32* %10
%646 = load i32, i32* %12
%647 = load i32, i32* %11
%648 = sub nsw i32 %646, %647
store i32 %648, i32* %12
%649 = load i32, i32* %16
%650 = add nsw i32 %649, 1
store i32 %650, i32* %4
%651 = load i32, i32* %4
%652 = ashr i32 %651, 1
store i32 %652, i32* %3
%653 = load i32, i32* %3
%654 = load i32, i32* %14
%655 = add nsw i32 %653, %654
store i32 %655, i32* %11
%656 = load i32, i32* %16
%657 = add nsw i32 %656, 1
store i32 %657, i32* %4
%658 = load i32, i32* %4
%659 = ashr i32 %658, 1
store i32 %659, i32* %3
%660 = load i32, i32* %3
%661 = load i32, i32* %14
%662 = sub nsw i32 %660, %661
store i32 %662, i32* %16
%663 = load i32, i32* %15
%664 = add nsw i32 %663, 1
store i32 %664, i32* %6
%665 = load i32, i32* %6
%666 = ashr i32 %665, 1
store i32 %666, i32* %5
%667 = load i32, i32* %13
%668 = load i32, i32* %5
%669 = add nsw i32 %667, %668
store i32 %669, i32* %14
%670 = load i32, i32* %15
%671 = add nsw i32 %670, 1
store i32 %671, i32* %6
%672 = load i32, i32* %6
%673 = ashr i32 %672, 1
store i32 %673, i32* %5
%674 = load i32, i32* %13
%675 = load i32, i32* %5
%676 = sub nsw i32 %674, %675
store i32 %676, i32* %13
%677 = load i32, i32* %9
%678 = load i32, i32* %8
%679 = add nsw i32 %677, %678
store i32 %679, i32* %25
%680 = load i32, i32* %25
%681 = add nsw i32 %680, 8192
store i32 %681, i32* %4
%682 = load i32, i32* %4
%683 = ashr i32 %682, 14
store i32 %683, i32* %3
%684 = load i32, i32* %3
%685 = sext i32 %684 to i64
%686 = mul nsw i64 %685, 17734
%687 = trunc i64 %686 to i32
store i32 %687, i32* %15
%688 = load i32, i32* %9
%689 = add nsw i32 %688, 8192
store i32 %689, i32* %4
%690 = load i32, i32* %4
%691 = ashr i32 %690, 14
store i32 %691, i32* %3
%692 = load i32, i32* %3
%693 = mul nsw i32 %692, -30274
store i32 %693, i32* %24
%694 = load i32, i32* %15
%695 = add nsw i32 %694, 1
store i32 %695, i32* %6
%696 = load i32, i32* %6
%697 = ashr i32 %696, 1
store i32 %697, i32* %5
%698 = load i32, i32* %24
%699 = load i32, i32* %5
%700 = add nsw i32 %698, %699
store i32 %700, i32* %9
%701 = load i32, i32* %8
%702 = add nsw i32 %701, 8192
store i32 %702, i32* %4
%703 = load i32, i32* %4
%704 = ashr i32 %703, 14
store i32 %704, i32* %3
%705 = load i32, i32* %3
%706 = mul nsw i32 %705, 6270
store i32 %706, i32* %23
%707 = load i32, i32* %23
%708 = shl i32 %707, 1
store i32 %708, i32* %3
%709 = load i32, i32* %15
%710 = add nsw i32 %709, 1
store i32 %710, i32* %6
%711 = load i32, i32* %6
%712 = ashr i32 %711, 1
store i32 %712, i32* %5
%713 = load i32, i32* %3
%714 = load i32, i32* %5
%715 = add nsw i32 %713, %714
store i32 %715, i32* %8
%716 = load i32, i32* %10
%717 = load i32*, i32** %2
%718 = load i32, i32* %17
%719 = sext i32 %718 to i64
%720 = getelementptr inbounds i32, i32* %717, i64 %719
store i32 %716, i32* %720
%721 = load i32*, i32** %2
%722 = getelementptr inbounds i32, i32* %721, i64 32
store i32* %722, i32** %35
%723 = load i32, i32* %12
%724 = load i32*, i32** %35
%725 = load i32, i32* %17
%726 = sext i32 %725 to i64
%727 = getelementptr inbounds i32, i32* %724, i64 %726
store i32 %723, i32* %727
%728 = load i32*, i32** %2
%729 = getelementptr inbounds i32, i32* %728, i64 16
store i32* %729, i32** %37
%730 = load i32, i32* %8
%731 = load i32*, i32** %37
%732 = load i32, i32* %17
%733 = sext i32 %732 to i64
%734 = getelementptr inbounds i32, i32* %731, i64 %733
store i32 %730, i32* %734
%735 = load i32*, i32** %2
%736 = getelementptr inbounds i32, i32* %735, i64 48
store i32* %736, i32** %33
%737 = load i32, i32* %9
%738 = load i32*, i32** %33
%739 = load i32, i32* %17
%740 = sext i32 %739 to i64
%741 = getelementptr inbounds i32, i32* %738, i64 %740
store i32 %737, i32* %741
%742 = load i32*, i32** %2
%743 = getelementptr inbounds i32, i32* %742, i64 56
store i32* %743, i32** %32
%744 = load i32, i32* %14
%745 = load i32, i32* %11
%746 = sub nsw i32 %744, %745
store i32 %746, i32* %22
%747 = load i32, i32* %22
%748 = load i32*, i32** %32
%749 = load i32, i32* %17
%750 = sext i32 %749 to i64
%751 = getelementptr inbounds i32, i32* %748, i64 %750
store i32 %747, i32* %751
%752 = load i32*, i32** %2
%753 = getelementptr inbounds i32, i32* %752, i64 8
store i32* %753, i32** %38
%754 = load i32, i32* %14
%755 = load i32, i32* %11
%756 = add nsw i32 %754, %755
store i32 %756, i32* %21
%757 = load i32, i32* %21
%758 = load i32*, i32** %38
%759 = load i32, i32* %17
%760 = sext i32 %759 to i64
%761 = getelementptr inbounds i32, i32* %758, i64 %760
store i32 %757, i32* %761
%762 = load i32*, i32** %2
%763 = getelementptr inbounds i32, i32* %762, i64 24
store i32* %763, i32** %36
%764 = load i32, i32* %13
%765 = add nsw i32 %764, 8192
store i32 %765, i32* %4
%766 = load i32, i32* %4
%767 = ashr i32 %766, 14
store i32 %767, i32* %3
%768 = load i32, i32* %3
%769 = sext i32 %768 to i64
%770 = mul nsw i64 %769, 23170
%771 = trunc i64 %770 to i32
store i32 %771, i32* %20
%772 = load i32, i32* %20
%773 = load i32*, i32** %36
%774 = load i32, i32* %17
%775 = sext i32 %774 to i64
%776 = getelementptr inbounds i32, i32* %773, i64 %775
store i32 %772, i32* %776
%777 = load i32*, i32** %2
%778 = getelementptr inbounds i32, i32* %777, i64 40
store i32* %778, i32** %34
%779 = load i32, i32* %16
%780 = add nsw i32 %779, 8192
store i32 %780, i32* %4
%781 = load i32, i32* %4
%782 = ashr i32 %781, 14
store i32 %782, i32* %3
%783 = load i32, i32* %3
%784 = sext i32 %783 to i64
%785 = mul nsw i64 %784, 23170
%786 = trunc i64 %785 to i32
store i32 %786, i32* %19
%787 = load i32, i32* %19
%788 = load i32*, i32** %34
%789 = load i32, i32* %17
%790 = sext i32 %789 to i64
%791 = getelementptr inbounds i32, i32* %788, i64 %790
store i32 %787, i32* %791
%792 = load i32, i32* %17
%793 = add nsw i32 %792, 1
store i32 %793, i32* %17
br label %794
794: ; preds = %478, %477
%795 = load i32, i32* %17
%796 = icmp sle i32 %795, 7
br i1 %796, label %797, label %798
797: ; preds = %794
br label %478
798: ; preds = %794
br label %799
799: ; preds = %798
ret i32 0
}

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