#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 long long int64_t;
typedef int int32_t;

/* Variables and functions */
int32_t dct(int32_t *dctBlock) {
  int64_t shft0LL;
  int64_t wide0LL;
  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;
  wide0LL = (int64_t)D1980 * 2106220352LL;
  shft0LL = wide0LL >> 30;
  x6 = (int32_t)shft0LL;
  wide0LL = (int64_t)x2 * -1262586814;
  shft0LL = wide0LL >> 30;
  D1981 = (int32_t)shft0LL;
  shft2L = x6 >> 1;
  x2 = D1981 + shft2L;
  wide0LL = (int64_t)x1 * -1687267075;
  shft0LL = wide0LL >> 30;
  D1982 = (int32_t)shft0LL;
  x1 = D1982 + x6;
  D1983 = x0 + x3;
  wide0LL = (int64_t)D1983 * 1785567396LL;
  shft0LL = wide0LL >> 30;
  x6 = (int32_t)shft0LL;
  wide0LL = (int64_t)x3 * -1489322693;
  shft0LL = wide0LL >> 30;
  D1984 = (int32_t)shft0LL;
  shft2L = x6 >> 1;
  x3 = D1984 + shft2L;
  wide0LL = (int64_t)x0 * -592489406;
  shft0LL = wide0LL >> 29;
  D1985 = (int32_t)shft0LL;
  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;
  wide0LL = (int64_t)D1986 * 1162209775LL;
  shft0LL = wide0LL >> 30;
  x1 = (int32_t)shft0LL;
  wide0LL = (int64_t)x7 * -1984016189;
  shft0LL = wide0LL >> 30;
  D1987 = (int32_t)shft0LL;
  shft2L = x1 >> 1;
  x7 = D1987 + shft2L;
  wide0LL = (int64_t)x8 * 1643612827LL;
  shft0LL = wide0LL >> 30;
  D1988 = (int32_t)shft0LL;
  x8 = D1988 + x1;
  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));
  shft1L = x8 >> 1;
  D1979[2] = shft1L;
  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));
  wide0LL = (int64_t)x3 * 1518500250LL;
  shft0LL = wide0LL >> 30;
  D1991 = (int32_t)shft0LL;
  D1979[3] = D1991;
  row_0 = (uint32_t)row;
  D1978 = row_0 * 64;
  shft2UL = D1978 >> 1;
  D1979 = dctBlock + (shft2UL / sizeof(*dctBlock));
  wide0LL = (int64_t)x0 * 1518500250LL;
  shft0LL = wide0LL >> 30;
  D1992 = (int32_t)shft0LL;
  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;
  wide0LL = (int64_t)D2000 * 2106220352LL;
  shft0LL = wide0LL >> 30;
  x6 = (int32_t)shft0LL;
  wide0LL = (int64_t)x2 * -1262586814;
  shft0LL = wide0LL >> 30;
  D2001 = (int32_t)shft0LL;
  shft2L = x6 >> 1;
  x2 = D2001 + shft2L;
  wide0LL = (int64_t)x1 * -1687267075;
  shft0LL = wide0LL >> 30;
  D2002 = (int32_t)shft0LL;
  x1 = D2002 + x6;
  D2003 = x0 + x3;
  wide0LL = (int64_t)D2003 * 1785567396LL;
  shft0LL = wide0LL >> 30;
  x6 = (int32_t)shft0LL;
  wide0LL = (int64_t)x3 * -1489322693;
  shft0LL = wide0LL >> 30;
  D2004 = (int32_t)shft0LL;
  shft2L = x6 >> 1;
  x3 = D2004 + shft2L;
  wide0LL = (int64_t)x0 * -592489406;
  shft0LL = wide0LL >> 29;
  D2005 = (int32_t)shft0LL;
  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;
  wide0LL = (int64_t)D2006 * 1162209775LL;
  shft0LL = wide0LL >> 30;
  x1 = (int32_t)shft0LL;
  wide0LL = (int64_t)x7 * -1984016189;
  shft0LL = wide0LL >> 30;
  D2007 = (int32_t)shft0LL;
  shft2L = x1 >> 1;
  x7 = D2007 + shft2L;
  wide0LL = (int64_t)x8 * 1643612827LL;
  shft0LL = wide0LL >> 30;
  D2008 = (int32_t)shft0LL;
  x8 = D2008 + x1;
  dctBlock[col] = x6;
  D1996 = dctBlock + (128 / sizeof(*dctBlock));
  D1996[col] = x4;
  D1994 = dctBlock + (64 / sizeof(*dctBlock));
  shft1L = x8 >> 1;
  D1994[col] = shft1L;
  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));
  wide0LL = (int64_t)x3 * 1518500250LL;
  shft0LL = wide0LL >> 30;
  D2011 = (int32_t)shft0LL;
  D1995[col] = D2011;
  D1997 = dctBlock + (160 / sizeof(*dctBlock));
  wide0LL = (int64_t)x0 * 1518500250LL;
  shft0LL = wide0LL >> 30;
  D2012 = (int32_t)shft0LL;
  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    $0x88,%rsp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0x50(%rbp)
jmp    18ec <dct+0x7ec>
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    (%rax),%eax
mov    %eax,-0x48(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    0x4(%rax),%eax
mov    %eax,-0x44(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    0x8(%rax),%eax
mov    %eax,-0x40(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    0xc(%rax),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    0x10(%rax),%eax
mov    %eax,-0x38(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    0x14(%rax),%eax
mov    %eax,-0x34(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    0x18(%rax),%eax
mov    %eax,-0x30(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x100(%rbp),%rax
mov    0x1c(%rax),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x48(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x48(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x44(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x44(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x40(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x40(%rbp),%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x3c(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x3c(%rbp),%eax
sub    -0x38(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x28(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x28(%rbp),%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x2c(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x44(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0xf4(%rbp)
movslq -0xf4(%rbp),%rax
imul   $0x7d8a5f40,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x30(%rbp)
movslq -0x40(%rbp),%rax
imul   $0xffffffffb4be7442,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0xf0(%rbp)
mov    -0x30(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0xf0(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x40(%rbp)
movslq -0x44(%rbp),%rax
imul   $0xffffffff9b6e58fd,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0xec(%rbp)
mov    -0xec(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x48(%rbp),%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0xe8(%rbp)
movslq -0xe8(%rbp),%rax
imul   $0x6a6d98a4,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x30(%rbp)
movslq -0x3c(%rbp),%rax
imul   $0xffffffffa73abd3b,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0xe4(%rbp)
mov    -0x30(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0xe4(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x3c(%rbp)
movslq -0x48(%rbp),%rax
imul   $0xffffffffdcaf5442,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1d,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0xe0(%rbp)
mov    -0xe0(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x38(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x48(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
sub    -0x40(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x44(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x3c(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x44(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x3c(%rbp),%eax
sub    -0x20(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0xdc(%rbp)
movslq -0xdc(%rbp),%rax
imul   $0x4545e9ef,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x44(%rbp)
movslq -0x2c(%rbp),%rax
imul   $0xffffffff89be50c3,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0xd8(%rbp)
mov    -0x44(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0xd8(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x2c(%rbp)
movslq -0x28(%rbp),%rax
imul   $0x61f78a9b,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0xd4(%rbp)
mov    -0xd4(%rbp),%eax
add    -0x44(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x30(%rbp),%ecx
mov    -0x100(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x38(%rbp),%ecx
mov    -0x100(%rbp),%rax
mov    %ecx,0x10(%rax)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x28(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%ecx
mov    -0x100(%rbp),%rax
mov    %ecx,0x8(%rax)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x2c(%rbp),%ecx
mov    -0x100(%rbp),%rax
mov    %ecx,0x18(%rax)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x40(%rbp),%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0xd0(%rbp)
mov    -0xd0(%rbp),%ecx
mov    -0x100(%rbp),%rax
mov    %ecx,0x1c(%rax)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
mov    -0x40(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0xcc(%rbp)
mov    -0xcc(%rbp),%ecx
mov    -0x100(%rbp),%rax
mov    %ecx,0x4(%rax)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
movslq -0x3c(%rbp),%rax
imul   $0x5a82799a,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0xc8(%rbp)
mov    -0xc8(%rbp),%ecx
mov    -0x100(%rbp),%rax
mov    %ecx,0xc(%rax)
mov    -0x50(%rbp),%eax
mov    %eax,-0x108(%rbp)
mov    -0x108(%rbp),%eax
shl    $0x6,%eax
mov    %eax,-0x104(%rbp)
mov    -0x104(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
shr    $0x2,%rcx
shl    $0x2,%rcx
add    %rcx,%rax
mov    %rax,-0x100(%rbp)
movslq -0x48(%rbp),%rax
imul   $0x5a82799a,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0xc4(%rbp)
mov    -0xc4(%rbp),%ecx
mov    -0x100(%rbp),%rax
mov    %ecx,0x14(%rax)
mov    -0x50(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x50(%rbp)
cmpl   $0x7,-0x50(%rbp)
jg     18fb <dct+0x7fb>
jmp    111b <dct+0x1b>
jmp    1900 <dct+0x800>
movl   $0x0,-0x4c(%rbp)
jmp    1dd3 <dct+0xcd3>
mov    -0x8(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x48(%rbp)
mov    -0x8(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0xc0(%rbp)
mov    -0xc0(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x44(%rbp)
mov    -0x8(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0xb8(%rbp)
mov    -0xb8(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x40(%rbp)
mov    -0x8(%rbp),%rax
add    $0x60,%rax
mov    %rax,-0xb0(%rbp)
mov    -0xb0(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x8(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0xa8(%rbp)
mov    -0xa8(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x38(%rbp)
mov    -0x8(%rbp),%rax
add    $0xa0,%rax
mov    %rax,-0xa0(%rbp)
mov    -0xa0(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x34(%rbp)
mov    -0x8(%rbp),%rax
add    $0xc0,%rax
mov    %rax,-0x98(%rbp)
mov    -0x98(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x30(%rbp)
mov    -0x8(%rbp),%rax
add    $0xe0,%rax
mov    %rax,-0x90(%rbp)
mov    -0x90(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x48(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x48(%rbp),%eax
sub    -0x2c(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x44(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x44(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x40(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x40(%rbp),%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x3c(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x3c(%rbp),%eax
sub    -0x38(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x28(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x28(%rbp),%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x2c(%rbp),%eax
sub    -0x30(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x44(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x84(%rbp)
movslq -0x84(%rbp),%rax
imul   $0x7d8a5f40,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x30(%rbp)
movslq -0x40(%rbp),%rax
imul   $0xffffffffb4be7442,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x80(%rbp)
mov    -0x30(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x80(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x40(%rbp)
movslq -0x44(%rbp),%rax
imul   $0xffffffff9b6e58fd,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x7c(%rbp)
mov    -0x7c(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x44(%rbp)
mov    -0x48(%rbp),%eax
add    -0x3c(%rbp),%eax
mov    %eax,-0x78(%rbp)
movslq -0x78(%rbp),%rax
imul   $0x6a6d98a4,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x30(%rbp)
movslq -0x3c(%rbp),%rax
imul   $0xffffffffa73abd3b,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x74(%rbp)
mov    -0x30(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x74(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x3c(%rbp)
movslq -0x48(%rbp),%rax
imul   $0xffffffffdcaf5442,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1d,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x70(%rbp)
mov    -0x70(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x30(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x38(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x38(%rbp),%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x48(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x40(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
sub    -0x40(%rbp),%eax
mov    %eax,-0x48(%rbp)
mov    -0x44(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x3c(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x40(%rbp)
mov    -0x44(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x3c(%rbp),%eax
sub    -0x20(%rbp),%eax
mov    %eax,-0x3c(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x28(%rbp),%eax
mov    %eax,-0x6c(%rbp)
movslq -0x6c(%rbp),%rax
imul   $0x4545e9ef,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x44(%rbp)
movslq -0x2c(%rbp),%rax
imul   $0xffffffff89be50c3,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x68(%rbp)
mov    -0x44(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x68(%rbp),%eax
add    -0x20(%rbp),%eax
mov    %eax,-0x2c(%rbp)
movslq -0x28(%rbp),%rax
imul   $0x61f78a9b,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x64(%rbp)
mov    -0x64(%rbp),%eax
add    -0x44(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x30(%rbp),%edx
mov    -0x8(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0x80,%rax
mov    %rax,-0xa8(%rbp)
mov    -0x38(%rbp),%edx
mov    -0xa8(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0x40,%rax
mov    %rax,-0xb8(%rbp)
mov    -0x28(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%edx
mov    -0xb8(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0xc0,%rax
mov    %rax,-0x98(%rbp)
mov    -0x2c(%rbp),%edx
mov    -0x98(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0xe0,%rax
mov    %rax,-0x90(%rbp)
mov    -0x40(%rbp),%eax
sub    -0x34(%rbp),%eax
mov    %eax,-0x60(%rbp)
mov    -0x60(%rbp),%edx
mov    -0x90(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0x20,%rax
mov    %rax,-0xc0(%rbp)
mov    -0x40(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%edx
mov    -0xc0(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0x60,%rax
mov    %rax,-0xb0(%rbp)
movslq -0x3c(%rbp),%rax
imul   $0x5a82799a,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x58(%rbp)
mov    -0x58(%rbp),%edx
mov    -0xb0(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x8(%rbp),%rax
add    $0xa0,%rax
mov    %rax,-0xa0(%rbp)
movslq -0x48(%rbp),%rax
imul   $0x5a82799a,%rax,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
sar    $0x1e,%rax
mov    %rax,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%edx
mov    -0xa0(%rbp),%rax
movslq -0x4c(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x4c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
cmpl   $0x7,-0x4c(%rbp)
jg     1de2 <dct+0xce2>
jmp    190c <dct+0x80c>
jmp    1de7 <dct+0xce7>
xor    %eax,%eax
add    $0x88,%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),%esi
mov    0x8(%rdi,%rax,1),%ebx
mov    0xc(%rdi,%rax,1),%r15d
mov    0x10(%rdi,%rax,1),%r8d
mov    0x14(%rdi,%rax,1),%edx
mov    0x18(%rdi,%rax,1),%ebp
mov    0x1c(%rdi,%rax,1),%ecx
lea    (%rcx,%r14,1),%r9d
sub    %ecx,%r14d
lea    (%rsi,%rbp,1),%r11d
sub    %ebp,%esi
lea    (%rdx,%rbx,1),%ecx
sub    %edx,%ebx
lea    (%r8,%r15,1),%edx
sub    %r8d,%r15d
lea    (%r9,%rdx,1),%r8d
sub    %edx,%r9d
lea    (%r11,%rcx,1),%r10d
sub    %ecx,%r11d
lea    (%rsi,%rbx,1),%ecx
movslq %ecx,%rcx
imul   $0x7d8a5f40,%rcx,%rbp
shr    $0x1e,%rbp
movslq %ebx,%rcx
imul   $0xffffffffb4be7442,%rcx,%rcx
shr    $0x1e,%rcx
movslq %esi,%rdx
imul   $0xffffffff9b6e58fd,%rdx,%rsi
shr    $0x1e,%rsi
add    %ebp,%esi
sar    %ebp
add    %ecx,%ebp
lea    (%r14,%r15,1),%ecx
movslq %ecx,%rcx
imul   $0x6a6d98a4,%rcx,%rcx
shr    $0x1e,%rcx
movslq %r15d,%rdx
imul   $0xffffffffa73abd3b,%rdx,%rbx
shr    $0x1e,%rbx
movslq %r14d,%rdx
imul   $0xffffffffdcaf5442,%rdx,%rdx
shr    $0x1d,%rdx
sar    %edx
add    %ecx,%edx
sar    %ecx
add    %ebx,%ecx
lea    (%r8,%r10,1),%r14d
sub    %r10d,%r8d
sar    %edx
lea    (%rdx,%rbp,1),%r10d
sub    %ebp,%edx
sar    %esi
lea    (%rcx,%rsi,1),%r15d
sub    %esi,%ecx
lea    (%r9,%r11,1),%esi
movslq %esi,%rsi
imul   $0x4545e9ef,%rsi,%rsi
shr    $0x1e,%rsi
movslq %r11d,%rbx
imul   $0xffffffff89be50c3,%rbx,%rbx
shr    $0x1e,%rbx
movslq %r9d,%rbp
imul   $0x61f78a9b,%rbp,%rbp
shr    $0x1e,%rbp
add    %esi,%ebp
sar    %esi
add    %ebx,%esi
mov    %r14d,(%rdi,%rax,1)
mov    %r8d,0x10(%rdi,%rax,1)
sar    %ebp
mov    %ebp,0x8(%rdi,%rax,1)
mov    %esi,0x18(%rdi,%rax,1)
mov    %r15d,%esi
sub    %r10d,%esi
mov    %esi,0x1c(%rdi,%rax,1)
add    %r10d,%r15d
mov    %r15d,0x4(%rdi,%rax,1)
movslq %ecx,%rcx
imul   $0x5a82799a,%rcx,%rcx
shr    $0x1e,%rcx
mov    %ecx,0xc(%rdi,%rax,1)
movslq %edx,%rcx
imul   $0x5a82799a,%rcx,%rcx
shr    $0x1e,%rcx
mov    %ecx,0x14(%rdi,%rax,1)
add    $0x20,%rax
cmp    $0x100,%rax
jne    1110 <dct+0x10>
mov    $0xfffffffffffffff8,%rax
movdqa 0xdaa(%rip),%xmm13
movdqa 0xe21(%rip),%xmm12
nop
movdqu 0x20(%rdi,%rax,4),%xmm7
movdqu 0x40(%rdi,%rax,4),%xmm1
movdqu 0x60(%rdi,%rax,4),%xmm2
movdqu 0x80(%rdi,%rax,4),%xmm8
movdqu 0xa0(%rdi,%rax,4),%xmm10
movdqu 0xc0(%rdi,%rax,4),%xmm0
movdqu 0xe0(%rdi,%rax,4),%xmm5
movdqu 0x100(%rdi,%rax,4),%xmm6
movdqa %xmm6,%xmm4
paddd  %xmm7,%xmm4
psubd  %xmm6,%xmm7
movdqa %xmm5,%xmm6
paddd  %xmm1,%xmm6
psubd  %xmm5,%xmm1
movdqa %xmm0,%xmm3
paddd  %xmm2,%xmm3
psubd  %xmm0,%xmm2
movdqa %xmm10,%xmm0
paddd  %xmm8,%xmm0
psubd  %xmm10,%xmm8
movdqa %xmm4,%xmm9
paddd  %xmm0,%xmm9
psubd  %xmm0,%xmm4
movdqa %xmm6,%xmm0
paddd  %xmm3,%xmm0
psubd  %xmm3,%xmm6
movdqa %xmm1,%xmm3
paddd  %xmm2,%xmm3
pshufd $0xfe,%xmm3,%xmm10
pshufd $0xd4,%xmm3,%xmm3
pxor   %xmm11,%xmm11
pcmpgtd %xmm3,%xmm11
movdqa 0xccd(%rip),%xmm5
pmuludq %xmm5,%xmm3
pmuludq %xmm5,%xmm11
psllq  $0x20,%xmm11
paddq  %xmm3,%xmm11
pxor   %xmm3,%xmm3
pcmpgtd %xmm10,%xmm3
pmuludq %xmm5,%xmm10
pmuludq %xmm5,%xmm3
psllq  $0x20,%xmm3
paddq  %xmm10,%xmm3
psrlq  $0x1e,%xmm3
psrlq  $0x1e,%xmm11
shufps $0x88,%xmm3,%xmm11
pshufd $0xee,%xmm2,%xmm3
pxor   %xmm10,%xmm10
pcmpgtd %xmm3,%xmm10
punpckldq %xmm10,%xmm3
movdqa %xmm3,%xmm14
pmuludq %xmm13,%xmm3
pshufd $0xd4,%xmm10,%xmm10
movdqa 0xc71(%rip),%xmm5
pmuludq %xmm5,%xmm10
paddq  %xmm3,%xmm10
pxor   %xmm3,%xmm3
pcmpgtd %xmm2,%xmm3
punpckldq %xmm3,%xmm2
pmuludq %xmm5,%xmm14
psllq  $0x20,%xmm10
paddq  %xmm14,%xmm10
movdqa %xmm2,%xmm14
pmuludq %xmm5,%xmm14
pmuludq %xmm13,%xmm2
pshufd $0xd4,%xmm3,%xmm3
pmuludq %xmm5,%xmm3
paddq  %xmm2,%xmm3
psllq  $0x20,%xmm3
paddq  %xmm14,%xmm3
psrlq  $0x1e,%xmm3
psrlq  $0x1e,%xmm10
shufps $0x88,%xmm10,%xmm3
pshufd $0xee,%xmm1,%xmm2
pxor   %xmm10,%xmm10
pcmpgtd %xmm2,%xmm10
punpckldq %xmm10,%xmm2
movdqa %xmm2,%xmm14
pmuludq %xmm13,%xmm2
pshufd $0xd4,%xmm10,%xmm15
movdqa 0xc09(%rip),%xmm5
pmuludq %xmm5,%xmm15
paddq  %xmm2,%xmm15
pxor   %xmm2,%xmm2
pcmpgtd %xmm1,%xmm2
punpckldq %xmm2,%xmm1
pmuludq %xmm5,%xmm14
psllq  $0x20,%xmm15
paddq  %xmm14,%xmm15
movdqa %xmm1,%xmm14
pmuludq %xmm5,%xmm14
pmuludq %xmm13,%xmm1
pshufd $0xd4,%xmm2,%xmm10
pmuludq %xmm5,%xmm10
paddq  %xmm1,%xmm10
psllq  $0x20,%xmm10
paddq  %xmm14,%xmm10
psrlq  $0x1e,%xmm10
psrlq  $0x1e,%xmm15
shufps $0x88,%xmm15,%xmm10
paddd  %xmm11,%xmm10
psrad  $0x1,%xmm11
paddd  %xmm3,%xmm11
movdqa %xmm7,%xmm1
paddd  %xmm8,%xmm1
pshufd $0xfe,%xmm1,%xmm3
pshufd $0xd4,%xmm1,%xmm1
pxor   %xmm14,%xmm14
pcmpgtd %xmm1,%xmm14
movdqa 0xb83(%rip),%xmm2
pmuludq %xmm2,%xmm1
pmuludq %xmm2,%xmm14
psllq  $0x20,%xmm14
paddq  %xmm1,%xmm14
pxor   %xmm1,%xmm1
pcmpgtd %xmm3,%xmm1
pmuludq %xmm2,%xmm3
pmuludq %xmm2,%xmm1
psllq  $0x20,%xmm1
paddq  %xmm3,%xmm1
psrlq  $0x1e,%xmm1
psrlq  $0x1e,%xmm14
shufps $0x88,%xmm1,%xmm14
pshufd $0xee,%xmm8,%xmm1
pxor   %xmm3,%xmm3
pcmpgtd %xmm1,%xmm3
punpckldq %xmm3,%xmm1
movdqa %xmm1,%xmm15
pmuludq %xmm13,%xmm1
pshufd $0xd4,%xmm3,%xmm2
movdqa 0xb2d(%rip),%xmm5
pmuludq %xmm5,%xmm2
paddq  %xmm1,%xmm2
pxor   %xmm1,%xmm1
pcmpgtd %xmm8,%xmm1
punpckldq %xmm1,%xmm8
pmuludq %xmm5,%xmm15
psllq  $0x20,%xmm2
paddq  %xmm15,%xmm2
movdqa %xmm8,%xmm15
pmuludq %xmm5,%xmm15
pmuludq %xmm13,%xmm8
pshufd $0xd4,%xmm1,%xmm3
pmuludq %xmm5,%xmm3
paddq  %xmm8,%xmm3
psllq  $0x20,%xmm3
paddq  %xmm15,%xmm3
psrlq  $0x1e,%xmm3
psrlq  $0x1e,%xmm2
shufps $0x88,%xmm2,%xmm3
pshufd $0xee,%xmm7,%xmm1
pxor   %xmm2,%xmm2
pcmpgtd %xmm1,%xmm2
punpckldq %xmm2,%xmm1
movdqa %xmm1,%xmm8
pmuludq %xmm13,%xmm1
pshufd $0xd4,%xmm2,%xmm2
movdqa 0xabb(%rip),%xmm5
pmuludq %xmm5,%xmm2
paddq  %xmm1,%xmm2
pxor   %xmm1,%xmm1
pcmpgtd %xmm7,%xmm1
punpckldq %xmm1,%xmm7
pmuludq %xmm5,%xmm8
psllq  $0x20,%xmm2
paddq  %xmm8,%xmm2
movdqa %xmm7,%xmm8
pmuludq %xmm5,%xmm8
pmuludq %xmm13,%xmm7
pshufd $0xd4,%xmm1,%xmm1
pmuludq %xmm5,%xmm1
paddq  %xmm7,%xmm1
psllq  $0x20,%xmm1
paddq  %xmm8,%xmm1
psrlq  $0x1d,%xmm1
psrlq  $0x1d,%xmm2
shufps $0x88,%xmm2,%xmm1
psrad  $0x1,%xmm1
paddd  %xmm14,%xmm1
movdqa %xmm14,%xmm7
psrad  $0x1,%xmm7
paddd  %xmm3,%xmm7
movdqa %xmm9,%xmm8
paddd  %xmm0,%xmm8
psubd  %xmm0,%xmm9
psrad  $0x1,%xmm1
movdqa %xmm1,%xmm14
paddd  %xmm11,%xmm14
psubd  %xmm11,%xmm1
psrad  $0x1,%xmm10
movdqa %xmm7,%xmm11
paddd  %xmm10,%xmm11
psubd  %xmm10,%xmm7
movdqa %xmm4,%xmm2
paddd  %xmm6,%xmm2
pshufd $0xfe,%xmm2,%xmm3
pshufd $0xd4,%xmm2,%xmm2
pxor   %xmm10,%xmm10
pcmpgtd %xmm2,%xmm10
movdqa 0xa00(%rip),%xmm0
pmuludq %xmm0,%xmm2
pmuludq %xmm0,%xmm10
psllq  $0x20,%xmm10
paddq  %xmm2,%xmm10
pxor   %xmm2,%xmm2
pcmpgtd %xmm3,%xmm2
pmuludq %xmm0,%xmm3
pmuludq %xmm0,%xmm2
psllq  $0x20,%xmm2
paddq  %xmm3,%xmm2
psrlq  $0x1e,%xmm2
psrlq  $0x1e,%xmm10
shufps $0x88,%xmm2,%xmm10
pshufd $0xee,%xmm6,%xmm2
pxor   %xmm3,%xmm3
pcmpgtd %xmm2,%xmm3
punpckldq %xmm3,%xmm2
movdqa %xmm2,%xmm0
pmuludq %xmm13,%xmm2
pshufd $0xd4,%xmm3,%xmm3
movdqa 0x9ac(%rip),%xmm5
pmuludq %xmm5,%xmm3
paddq  %xmm2,%xmm3
pxor   %xmm2,%xmm2
pcmpgtd %xmm6,%xmm2
punpckldq %xmm2,%xmm6
pmuludq %xmm5,%xmm0
psllq  $0x20,%xmm3
paddq  %xmm0,%xmm3
movdqa %xmm6,%xmm0
pmuludq %xmm13,%xmm6
pshufd $0xd4,%xmm2,%xmm2
pmuludq %xmm5,%xmm2
paddq  %xmm6,%xmm2
pmuludq %xmm5,%xmm0
psllq  $0x20,%xmm2
paddq  %xmm0,%xmm2
pshufd $0xfe,%xmm4,%xmm0
pshufd $0xd4,%xmm4,%xmm4
psrlq  $0x1e,%xmm2
psrlq  $0x1e,%xmm3
shufps $0x88,%xmm3,%xmm2
pxor   %xmm3,%xmm3
pcmpgtd %xmm4,%xmm3
movdqa 0x950(%rip),%xmm5
pmuludq %xmm5,%xmm4
pmuludq %xmm5,%xmm3
psllq  $0x20,%xmm3
paddq  %xmm4,%xmm3
pxor   %xmm4,%xmm4
pcmpgtd %xmm0,%xmm4
pmuludq %xmm5,%xmm0
pmuludq %xmm5,%xmm4
psllq  $0x20,%xmm4
paddq  %xmm0,%xmm4
psrlq  $0x1e,%xmm4
psrlq  $0x1e,%xmm3
shufps $0x88,%xmm4,%xmm3
paddd  %xmm10,%xmm3
psrad  $0x1,%xmm10
paddd  %xmm2,%xmm10
movdqu %xmm8,0x20(%rdi,%rax,4)
movdqu %xmm9,0xa0(%rdi,%rax,4)
psrad  $0x1,%xmm3
movdqu %xmm3,0x60(%rdi,%rax,4)
movdqu %xmm10,0xe0(%rdi,%rax,4)
movdqa %xmm11,%xmm0
psubd  %xmm14,%xmm0
movdqu %xmm0,0x100(%rdi,%rax,4)
paddd  %xmm14,%xmm11
movdqu %xmm11,0x40(%rdi,%rax,4)
pshufd $0xfe,%xmm7,%xmm0
pshufd $0xd4,%xmm7,%xmm2
pxor   %xmm3,%xmm3
pcmpgtd %xmm2,%xmm3
pmuludq %xmm12,%xmm2
pmuludq %xmm12,%xmm3
psllq  $0x20,%xmm3
paddq  %xmm2,%xmm3
pxor   %xmm2,%xmm2
pcmpgtd %xmm0,%xmm2
pmuludq %xmm12,%xmm0
pmuludq %xmm12,%xmm2
psllq  $0x20,%xmm2
paddq  %xmm0,%xmm2
psrlq  $0x1e,%xmm2
psrlq  $0x1e,%xmm3
shufps $0x88,%xmm2,%xmm3
movups %xmm3,0x80(%rdi,%rax,4)
pshufd $0xfe,%xmm1,%xmm0
pshufd $0xd4,%xmm1,%xmm1
pxor   %xmm2,%xmm2
pcmpgtd %xmm1,%xmm2
pmuludq %xmm12,%xmm1
pmuludq %xmm12,%xmm2
psllq  $0x20,%xmm2
paddq  %xmm1,%xmm2
pxor   %xmm1,%xmm1
pcmpgtd %xmm0,%xmm1
pmuludq %xmm12,%xmm0
pmuludq %xmm12,%xmm1
psllq  $0x20,%xmm1
paddq  %xmm0,%xmm1
psrlq  $0x1e,%xmm1
psrlq  $0x1e,%xmm2
shufps $0x88,%xmm1,%xmm2
movups %xmm2,0xc0(%rdi,%rax,4)
add    $0x4,%rax
jne    1280 <dct+0x180>
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 i64
%4 = alloca i64
%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 %449
56: ; preds = %452
%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 = sext i32 %200 to i64
%202 = mul nsw i64 %201, 2106220352
store i64 %202, i64* %4
%203 = load i64, i64* %4
%204 = ashr i64 %203, 30
store i64 %204, i64* %3
%205 = load i64, i64* %3
%206 = trunc i64 %205 to i32
store i32 %206, i32* %10
%207 = load i32, i32* %14
%208 = sext i32 %207 to i64
%209 = mul nsw i64 %208, -1262586814
store i64 %209, i64* %4
%210 = load i64, i64* %4
%211 = ashr i64 %210, 30
store i64 %211, i64* %3
%212 = load i64, i64* %3
%213 = trunc i64 %212 to i32
store i32 %213, i32* %50
%214 = load i32, i32* %10
%215 = ashr i32 %214, 1
store i32 %215, i32* %6
%216 = load i32, i32* %50
%217 = load i32, i32* %6
%218 = add nsw i32 %216, %217
store i32 %218, i32* %14
%219 = load i32, i32* %15
%220 = sext i32 %219 to i64
%221 = mul nsw i64 %220, -1687267075
store i64 %221, i64* %4
%222 = load i64, i64* %4
%223 = ashr i64 %222, 30
store i64 %223, i64* %3
%224 = load i64, i64* %3
%225 = trunc i64 %224 to i32
store i32 %225, i32* %49
%226 = load i32, i32* %49
%227 = load i32, i32* %10
%228 = add nsw i32 %226, %227
store i32 %228, i32* %15
%229 = load i32, i32* %16
%230 = load i32, i32* %13
%231 = add nsw i32 %229, %230
store i32 %231, i32* %48
%232 = load i32, i32* %48
%233 = sext i32 %232 to i64
%234 = mul nsw i64 %233, 1785567396
store i64 %234, i64* %4
%235 = load i64, i64* %4
%236 = ashr i64 %235, 30
store i64 %236, i64* %3
%237 = load i64, i64* %3
%238 = trunc i64 %237 to i32
store i32 %238, i32* %10
%239 = load i32, i32* %13
%240 = sext i32 %239 to i64
%241 = mul nsw i64 %240, -1489322693
store i64 %241, i64* %4
%242 = load i64, i64* %4
%243 = ashr i64 %242, 30
store i64 %243, i64* %3
%244 = load i64, i64* %3
%245 = trunc i64 %244 to i32
store i32 %245, i32* %47
%246 = load i32, i32* %10
%247 = ashr i32 %246, 1
store i32 %247, i32* %6
%248 = load i32, i32* %47
%249 = load i32, i32* %6
%250 = add nsw i32 %248, %249
store i32 %250, i32* %13
%251 = load i32, i32* %16
%252 = sext i32 %251 to i64
%253 = mul nsw i64 %252, -592489406
store i64 %253, i64* %4
%254 = load i64, i64* %4
%255 = ashr i64 %254, 29
store i64 %255, i64* %3
%256 = load i64, i64* %3
%257 = trunc i64 %256 to i32
store i32 %257, i32* %46
%258 = load i32, i32* %46
%259 = ashr i32 %258, 1
store i32 %259, i32* %5
%260 = load i32, i32* %5
%261 = load i32, i32* %10
%262 = add nsw i32 %260, %261
store i32 %262, i32* %16
%263 = load i32, i32* %12
%264 = load i32, i32* %11
%265 = add nsw i32 %263, %264
store i32 %265, i32* %10
%266 = load i32, i32* %12
%267 = load i32, i32* %11
%268 = sub nsw i32 %266, %267
store i32 %268, i32* %12
%269 = load i32, i32* %16
%270 = ashr i32 %269, 1
store i32 %270, i32* %5
%271 = load i32, i32* %5
%272 = load i32, i32* %14
%273 = add nsw i32 %271, %272
store i32 %273, i32* %11
%274 = load i32, i32* %16
%275 = ashr i32 %274, 1
store i32 %275, i32* %5
%276 = load i32, i32* %5
%277 = load i32, i32* %14
%278 = sub nsw i32 %276, %277
store i32 %278, i32* %16
%279 = load i32, i32* %15
%280 = ashr i32 %279, 1
store i32 %280, i32* %6
%281 = load i32, i32* %13
%282 = load i32, i32* %6
%283 = add nsw i32 %281, %282
store i32 %283, i32* %14
%284 = load i32, i32* %15
%285 = ashr i32 %284, 1
store i32 %285, i32* %6
%286 = load i32, i32* %13
%287 = load i32, i32* %6
%288 = sub nsw i32 %286, %287
store i32 %288, i32* %13
%289 = load i32, i32* %9
%290 = load i32, i32* %8
%291 = add nsw i32 %289, %290
store i32 %291, i32* %45
%292 = load i32, i32* %45
%293 = sext i32 %292 to i64
%294 = mul nsw i64 %293, 1162209775
store i64 %294, i64* %4
%295 = load i64, i64* %4
%296 = ashr i64 %295, 30
store i64 %296, i64* %3
%297 = load i64, i64* %3
%298 = trunc i64 %297 to i32
store i32 %298, i32* %15
%299 = load i32, i32* %9
%300 = sext i32 %299 to i64
%301 = mul nsw i64 %300, -1984016189
store i64 %301, i64* %4
%302 = load i64, i64* %4
%303 = ashr i64 %302, 30
store i64 %303, i64* %3
%304 = load i64, i64* %3
%305 = trunc i64 %304 to i32
store i32 %305, i32* %44
%306 = load i32, i32* %15
%307 = ashr i32 %306, 1
store i32 %307, i32* %6
%308 = load i32, i32* %44
%309 = load i32, i32* %6
%310 = add nsw i32 %308, %309
store i32 %310, i32* %9
%311 = load i32, i32* %8
%312 = sext i32 %311 to i64
%313 = mul nsw i64 %312, 1643612827
store i64 %313, i64* %4
%314 = load i64, i64* %4
%315 = ashr i64 %314, 30
store i64 %315, i64* %3
%316 = load i64, i64* %3
%317 = trunc i64 %316 to i32
store i32 %317, i32* %43
%318 = load i32, i32* %43
%319 = load i32, i32* %15
%320 = add nsw i32 %318, %319
store i32 %320, i32* %8
%321 = load i32, i32* %18
store i32 %321, i32* %54
%322 = load i32, i32* %54
%323 = mul nsw i32 %322, 64
store i32 %323, i32* %53
%324 = load i32, i32* %53
%325 = ashr i32 %324, 1
store i32 %325, i32* %7
%326 = load i32*, i32** %2
%327 = load i32, i32* %7
%328 = sext i32 %327 to i64
%329 = udiv i64 %328, 4
%330 = getelementptr inbounds i32, i32* %326, i64 %329
store i32* %330, i32** %52
%331 = load i32, i32* %10
%332 = load i32*, i32** %52
%333 = getelementptr inbounds i32, i32* %332, i64 0
store i32 %331, i32* %333
%334 = load i32, i32* %18
store i32 %334, i32* %54
%335 = load i32, i32* %54
%336 = mul nsw i32 %335, 64
store i32 %336, i32* %53
%337 = load i32, i32* %53
%338 = ashr i32 %337, 1
store i32 %338, i32* %7
%339 = load i32*, i32** %2
%340 = load i32, i32* %7
%341 = sext i32 %340 to i64
%342 = udiv i64 %341, 4
%343 = getelementptr inbounds i32, i32* %339, i64 %342
store i32* %343, i32** %52
%344 = load i32, i32* %12
%345 = load i32*, i32** %52
%346 = getelementptr inbounds i32, i32* %345, i64 4
store i32 %344, i32* %346
%347 = load i32, i32* %18
store i32 %347, i32* %54
%348 = load i32, i32* %54
%349 = mul nsw i32 %348, 64
store i32 %349, i32* %53
%350 = load i32, i32* %53
%351 = ashr i32 %350, 1
store i32 %351, i32* %7
%352 = load i32*, i32** %2
%353 = load i32, i32* %7
%354 = sext i32 %353 to i64
%355 = udiv i64 %354, 4
%356 = getelementptr inbounds i32, i32* %352, i64 %355
store i32* %356, i32** %52
%357 = load i32, i32* %8
%358 = ashr i32 %357, 1
store i32 %358, i32* %5
%359 = load i32, i32* %5
%360 = load i32*, i32** %52
%361 = getelementptr inbounds i32, i32* %360, i64 2
store i32 %359, i32* %361
%362 = load i32, i32* %18
store i32 %362, i32* %54
%363 = load i32, i32* %54
%364 = mul nsw i32 %363, 64
store i32 %364, i32* %53
%365 = load i32, i32* %53
%366 = ashr i32 %365, 1
store i32 %366, i32* %7
%367 = load i32*, i32** %2
%368 = load i32, i32* %7
%369 = sext i32 %368 to i64
%370 = udiv i64 %369, 4
%371 = getelementptr inbounds i32, i32* %367, i64 %370
store i32* %371, i32** %52
%372 = load i32, i32* %9
%373 = load i32*, i32** %52
%374 = getelementptr inbounds i32, i32* %373, i64 6
store i32 %372, i32* %374
%375 = load i32, i32* %18
store i32 %375, i32* %54
%376 = load i32, i32* %54
%377 = mul nsw i32 %376, 64
store i32 %377, i32* %53
%378 = load i32, i32* %53
%379 = ashr i32 %378, 1
store i32 %379, i32* %7
%380 = load i32*, i32** %2
%381 = load i32, i32* %7
%382 = sext i32 %381 to i64
%383 = udiv i64 %382, 4
%384 = getelementptr inbounds i32, i32* %380, i64 %383
store i32* %384, i32** %52
%385 = load i32, i32* %14
%386 = load i32, i32* %11
%387 = sub nsw i32 %385, %386
store i32 %387, i32* %42
%388 = load i32, i32* %42
%389 = load i32*, i32** %52
%390 = getelementptr inbounds i32, i32* %389, i64 7
store i32 %388, i32* %390
%391 = load i32, i32* %18
store i32 %391, i32* %54
%392 = load i32, i32* %54
%393 = mul nsw i32 %392, 64
store i32 %393, i32* %53
%394 = load i32, i32* %53
%395 = ashr i32 %394, 1
store i32 %395, i32* %7
%396 = load i32*, i32** %2
%397 = load i32, i32* %7
%398 = sext i32 %397 to i64
%399 = udiv i64 %398, 4
%400 = getelementptr inbounds i32, i32* %396, i64 %399
store i32* %400, i32** %52
%401 = load i32, i32* %14
%402 = load i32, i32* %11
%403 = add nsw i32 %401, %402
store i32 %403, i32* %41
%404 = load i32, i32* %41
%405 = load i32*, i32** %52
%406 = getelementptr inbounds i32, i32* %405, i64 1
store i32 %404, i32* %406
%407 = load i32, i32* %18
store i32 %407, i32* %54
%408 = load i32, i32* %54
%409 = mul nsw i32 %408, 64
store i32 %409, i32* %53
%410 = load i32, i32* %53
%411 = ashr i32 %410, 1
store i32 %411, i32* %7
%412 = load i32*, i32** %2
%413 = load i32, i32* %7
%414 = sext i32 %413 to i64
%415 = udiv i64 %414, 4
%416 = getelementptr inbounds i32, i32* %412, i64 %415
store i32* %416, i32** %52
%417 = load i32, i32* %13
%418 = sext i32 %417 to i64
%419 = mul nsw i64 %418, 1518500250
store i64 %419, i64* %4
%420 = load i64, i64* %4
%421 = ashr i64 %420, 30
store i64 %421, i64* %3
%422 = load i64, i64* %3
%423 = trunc i64 %422 to i32
store i32 %423, i32* %40
%424 = load i32, i32* %40
%425 = load i32*, i32** %52
%426 = getelementptr inbounds i32, i32* %425, i64 3
store i32 %424, i32* %426
%427 = load i32, i32* %18
store i32 %427, i32* %54
%428 = load i32, i32* %54
%429 = mul nsw i32 %428, 64
store i32 %429, i32* %53
%430 = load i32, i32* %53
%431 = ashr i32 %430, 1
store i32 %431, i32* %7
%432 = load i32*, i32** %2
%433 = load i32, i32* %7
%434 = sext i32 %433 to i64
%435 = udiv i64 %434, 4
%436 = getelementptr inbounds i32, i32* %432, i64 %435
store i32* %436, i32** %52
%437 = load i32, i32* %16
%438 = sext i32 %437 to i64
%439 = mul nsw i64 %438, 1518500250
store i64 %439, i64* %4
%440 = load i64, i64* %4
%441 = ashr i64 %440, 30
store i64 %441, i64* %3
%442 = load i64, i64* %3
%443 = trunc i64 %442 to i32
store i32 %443, i32* %39
%444 = load i32, i32* %39
%445 = load i32*, i32** %52
%446 = getelementptr inbounds i32, i32* %445, i64 5
store i32 %444, i32* %446
%447 = load i32, i32* %18
%448 = add nsw i32 %447, 1
store i32 %448, i32* %18
br label %449
449: ; preds = %56, %55
%450 = load i32, i32* %18
%451 = icmp sle i32 %450, 7
br i1 %451, label %452, label %453
452: ; preds = %449
br label %56
453: ; preds = %449
br label %454
454: ; preds = %453
store i32 0, i32* %17
br label %748
455: ; preds = %751
%456 = load i32*, i32** %2
%457 = load i32, i32* %17
%458 = sext i32 %457 to i64
%459 = getelementptr inbounds i32, i32* %456, i64 %458
%460 = load i32, i32* %459
store i32 %460, i32* %16
%461 = load i32*, i32** %2
%462 = getelementptr inbounds i32, i32* %461, i64 8
store i32* %462, i32** %38
%463 = load i32*, i32** %38
%464 = load i32, i32* %17
%465 = sext i32 %464 to i64
%466 = getelementptr inbounds i32, i32* %463, i64 %465
%467 = load i32, i32* %466
store i32 %467, i32* %15
%468 = load i32*, i32** %2
%469 = getelementptr inbounds i32, i32* %468, i64 16
store i32* %469, i32** %37
%470 = load i32*, i32** %37
%471 = load i32, i32* %17
%472 = sext i32 %471 to i64
%473 = getelementptr inbounds i32, i32* %470, i64 %472
%474 = load i32, i32* %473
store i32 %474, i32* %14
%475 = load i32*, i32** %2
%476 = getelementptr inbounds i32, i32* %475, i64 24
store i32* %476, i32** %36
%477 = load i32*, i32** %36
%478 = load i32, i32* %17
%479 = sext i32 %478 to i64
%480 = getelementptr inbounds i32, i32* %477, i64 %479
%481 = load i32, i32* %480
store i32 %481, i32* %13
%482 = load i32*, i32** %2
%483 = getelementptr inbounds i32, i32* %482, i64 32
store i32* %483, i32** %35
%484 = load i32*, i32** %35
%485 = load i32, i32* %17
%486 = sext i32 %485 to i64
%487 = getelementptr inbounds i32, i32* %484, i64 %486
%488 = load i32, i32* %487
store i32 %488, i32* %12
%489 = load i32*, i32** %2
%490 = getelementptr inbounds i32, i32* %489, i64 40
store i32* %490, i32** %34
%491 = load i32*, i32** %34
%492 = load i32, i32* %17
%493 = sext i32 %492 to i64
%494 = getelementptr inbounds i32, i32* %491, i64 %493
%495 = load i32, i32* %494
store i32 %495, i32* %11
%496 = load i32*, i32** %2
%497 = getelementptr inbounds i32, i32* %496, i64 48
store i32* %497, i32** %33
%498 = load i32*, i32** %33
%499 = load i32, i32* %17
%500 = sext i32 %499 to i64
%501 = getelementptr inbounds i32, i32* %498, i64 %500
%502 = load i32, i32* %501
store i32 %502, i32* %10
%503 = load i32*, i32** %2
%504 = getelementptr inbounds i32, i32* %503, i64 56
store i32* %504, i32** %32
%505 = load i32*, i32** %32
%506 = load i32, i32* %17
%507 = sext i32 %506 to i64
%508 = getelementptr inbounds i32, i32* %505, i64 %507
%509 = load i32, i32* %508
store i32 %509, i32* %9
%510 = load i32, i32* %9
%511 = load i32, i32* %16
%512 = add nsw i32 %510, %511
store i32 %512, i32* %8
%513 = load i32, i32* %16
%514 = load i32, i32* %9
%515 = sub nsw i32 %513, %514
store i32 %515, i32* %16
%516 = load i32, i32* %15
%517 = load i32, i32* %10
%518 = add nsw i32 %516, %517
store i32 %518, i32* %9
%519 = load i32, i32* %15
%520 = load i32, i32* %10
%521 = sub nsw i32 %519, %520
store i32 %521, i32* %15
%522 = load i32, i32* %14
%523 = load i32, i32* %11
%524 = add nsw i32 %522, %523
store i32 %524, i32* %10
%525 = load i32, i32* %14
%526 = load i32, i32* %11
%527 = sub nsw i32 %525, %526
store i32 %527, i32* %14
%528 = load i32, i32* %13
%529 = load i32, i32* %12
%530 = add nsw i32 %528, %529
store i32 %530, i32* %11
%531 = load i32, i32* %13
%532 = load i32, i32* %12
%533 = sub nsw i32 %531, %532
store i32 %533, i32* %13
%534 = load i32, i32* %8
%535 = load i32, i32* %11
%536 = add nsw i32 %534, %535
store i32 %536, i32* %12
%537 = load i32, i32* %8
%538 = load i32, i32* %11
%539 = sub nsw i32 %537, %538
store i32 %539, i32* %8
%540 = load i32, i32* %9
%541 = load i32, i32* %10
%542 = add nsw i32 %540, %541
store i32 %542, i32* %11
%543 = load i32, i32* %9
%544 = load i32, i32* %10
%545 = sub nsw i32 %543, %544
store i32 %545, i32* %9
%546 = load i32, i32* %15
%547 = load i32, i32* %14
%548 = add nsw i32 %546, %547
store i32 %548, i32* %31
%549 = load i32, i32* %31
%550 = sext i32 %549 to i64
%551 = mul nsw i64 %550, 2106220352
store i64 %551, i64* %4
%552 = load i64, i64* %4
%553 = ashr i64 %552, 30
store i64 %553, i64* %3
%554 = load i64, i64* %3
%555 = trunc i64 %554 to i32
store i32 %555, i32* %10
%556 = load i32, i32* %14
%557 = sext i32 %556 to i64
%558 = mul nsw i64 %557, -1262586814
store i64 %558, i64* %4
%559 = load i64, i64* %4
%560 = ashr i64 %559, 30
store i64 %560, i64* %3
%561 = load i64, i64* %3
%562 = trunc i64 %561 to i32
store i32 %562, i32* %30
%563 = load i32, i32* %10
%564 = ashr i32 %563, 1
store i32 %564, i32* %6
%565 = load i32, i32* %30
%566 = load i32, i32* %6
%567 = add nsw i32 %565, %566
store i32 %567, i32* %14
%568 = load i32, i32* %15
%569 = sext i32 %568 to i64
%570 = mul nsw i64 %569, -1687267075
store i64 %570, i64* %4
%571 = load i64, i64* %4
%572 = ashr i64 %571, 30
store i64 %572, i64* %3
%573 = load i64, i64* %3
%574 = trunc i64 %573 to i32
store i32 %574, i32* %29
%575 = load i32, i32* %29
%576 = load i32, i32* %10
%577 = add nsw i32 %575, %576
store i32 %577, i32* %15
%578 = load i32, i32* %16
%579 = load i32, i32* %13
%580 = add nsw i32 %578, %579
store i32 %580, i32* %28
%581 = load i32, i32* %28
%582 = sext i32 %581 to i64
%583 = mul nsw i64 %582, 1785567396
store i64 %583, i64* %4
%584 = load i64, i64* %4
%585 = ashr i64 %584, 30
store i64 %585, i64* %3
%586 = load i64, i64* %3
%587 = trunc i64 %586 to i32
store i32 %587, i32* %10
%588 = load i32, i32* %13
%589 = sext i32 %588 to i64
%590 = mul nsw i64 %589, -1489322693
store i64 %590, i64* %4
%591 = load i64, i64* %4
%592 = ashr i64 %591, 30
store i64 %592, i64* %3
%593 = load i64, i64* %3
%594 = trunc i64 %593 to i32
store i32 %594, i32* %27
%595 = load i32, i32* %10
%596 = ashr i32 %595, 1
store i32 %596, i32* %6
%597 = load i32, i32* %27
%598 = load i32, i32* %6
%599 = add nsw i32 %597, %598
store i32 %599, i32* %13
%600 = load i32, i32* %16
%601 = sext i32 %600 to i64
%602 = mul nsw i64 %601, -592489406
store i64 %602, i64* %4
%603 = load i64, i64* %4
%604 = ashr i64 %603, 29
store i64 %604, i64* %3
%605 = load i64, i64* %3
%606 = trunc i64 %605 to i32
store i32 %606, i32* %26
%607 = load i32, i32* %26
%608 = ashr i32 %607, 1
store i32 %608, i32* %5
%609 = load i32, i32* %5
%610 = load i32, i32* %10
%611 = add nsw i32 %609, %610
store i32 %611, i32* %16
%612 = load i32, i32* %12
%613 = load i32, i32* %11
%614 = add nsw i32 %612, %613
store i32 %614, i32* %10
%615 = load i32, i32* %12
%616 = load i32, i32* %11
%617 = sub nsw i32 %615, %616
store i32 %617, i32* %12
%618 = load i32, i32* %16
%619 = ashr i32 %618, 1
store i32 %619, i32* %5
%620 = load i32, i32* %5
%621 = load i32, i32* %14
%622 = add nsw i32 %620, %621
store i32 %622, i32* %11
%623 = load i32, i32* %16
%624 = ashr i32 %623, 1
store i32 %624, i32* %5
%625 = load i32, i32* %5
%626 = load i32, i32* %14
%627 = sub nsw i32 %625, %626
store i32 %627, i32* %16
%628 = load i32, i32* %15
%629 = ashr i32 %628, 1
store i32 %629, i32* %6
%630 = load i32, i32* %13
%631 = load i32, i32* %6
%632 = add nsw i32 %630, %631
store i32 %632, i32* %14
%633 = load i32, i32* %15
%634 = ashr i32 %633, 1
store i32 %634, i32* %6
%635 = load i32, i32* %13
%636 = load i32, i32* %6
%637 = sub nsw i32 %635, %636
store i32 %637, i32* %13
%638 = load i32, i32* %9
%639 = load i32, i32* %8
%640 = add nsw i32 %638, %639
store i32 %640, i32* %25
%641 = load i32, i32* %25
%642 = sext i32 %641 to i64
%643 = mul nsw i64 %642, 1162209775
store i64 %643, i64* %4
%644 = load i64, i64* %4
%645 = ashr i64 %644, 30
store i64 %645, i64* %3
%646 = load i64, i64* %3
%647 = trunc i64 %646 to i32
store i32 %647, i32* %15
%648 = load i32, i32* %9
%649 = sext i32 %648 to i64
%650 = mul nsw i64 %649, -1984016189
store i64 %650, i64* %4
%651 = load i64, i64* %4
%652 = ashr i64 %651, 30
store i64 %652, i64* %3
%653 = load i64, i64* %3
%654 = trunc i64 %653 to i32
store i32 %654, i32* %24
%655 = load i32, i32* %15
%656 = ashr i32 %655, 1
store i32 %656, i32* %6
%657 = load i32, i32* %24
%658 = load i32, i32* %6
%659 = add nsw i32 %657, %658
store i32 %659, i32* %9
%660 = load i32, i32* %8
%661 = sext i32 %660 to i64
%662 = mul nsw i64 %661, 1643612827
store i64 %662, i64* %4
%663 = load i64, i64* %4
%664 = ashr i64 %663, 30
store i64 %664, i64* %3
%665 = load i64, i64* %3
%666 = trunc i64 %665 to i32
store i32 %666, i32* %23
%667 = load i32, i32* %23
%668 = load i32, i32* %15
%669 = add nsw i32 %667, %668
store i32 %669, i32* %8
%670 = load i32, i32* %10
%671 = load i32*, i32** %2
%672 = load i32, i32* %17
%673 = sext i32 %672 to i64
%674 = getelementptr inbounds i32, i32* %671, i64 %673
store i32 %670, i32* %674
%675 = load i32*, i32** %2
%676 = getelementptr inbounds i32, i32* %675, i64 32
store i32* %676, i32** %35
%677 = load i32, i32* %12
%678 = load i32*, i32** %35
%679 = load i32, i32* %17
%680 = sext i32 %679 to i64
%681 = getelementptr inbounds i32, i32* %678, i64 %680
store i32 %677, i32* %681
%682 = load i32*, i32** %2
%683 = getelementptr inbounds i32, i32* %682, i64 16
store i32* %683, i32** %37
%684 = load i32, i32* %8
%685 = ashr i32 %684, 1
store i32 %685, i32* %5
%686 = load i32, i32* %5
%687 = load i32*, i32** %37
%688 = load i32, i32* %17
%689 = sext i32 %688 to i64
%690 = getelementptr inbounds i32, i32* %687, i64 %689
store i32 %686, i32* %690
%691 = load i32*, i32** %2
%692 = getelementptr inbounds i32, i32* %691, i64 48
store i32* %692, i32** %33
%693 = load i32, i32* %9
%694 = load i32*, i32** %33
%695 = load i32, i32* %17
%696 = sext i32 %695 to i64
%697 = getelementptr inbounds i32, i32* %694, i64 %696
store i32 %693, i32* %697
%698 = load i32*, i32** %2
%699 = getelementptr inbounds i32, i32* %698, i64 56
store i32* %699, i32** %32
%700 = load i32, i32* %14
%701 = load i32, i32* %11
%702 = sub nsw i32 %700, %701
store i32 %702, i32* %22
%703 = load i32, i32* %22
%704 = load i32*, i32** %32
%705 = load i32, i32* %17
%706 = sext i32 %705 to i64
%707 = getelementptr inbounds i32, i32* %704, i64 %706
store i32 %703, i32* %707
%708 = load i32*, i32** %2
%709 = getelementptr inbounds i32, i32* %708, i64 8
store i32* %709, i32** %38
%710 = load i32, i32* %14
%711 = load i32, i32* %11
%712 = add nsw i32 %710, %711
store i32 %712, i32* %21
%713 = load i32, i32* %21
%714 = load i32*, i32** %38
%715 = load i32, i32* %17
%716 = sext i32 %715 to i64
%717 = getelementptr inbounds i32, i32* %714, i64 %716
store i32 %713, i32* %717
%718 = load i32*, i32** %2
%719 = getelementptr inbounds i32, i32* %718, i64 24
store i32* %719, i32** %36
%720 = load i32, i32* %13
%721 = sext i32 %720 to i64
%722 = mul nsw i64 %721, 1518500250
store i64 %722, i64* %4
%723 = load i64, i64* %4
%724 = ashr i64 %723, 30
store i64 %724, i64* %3
%725 = load i64, i64* %3
%726 = trunc i64 %725 to i32
store i32 %726, i32* %20
%727 = load i32, i32* %20
%728 = load i32*, i32** %36
%729 = load i32, i32* %17
%730 = sext i32 %729 to i64
%731 = getelementptr inbounds i32, i32* %728, i64 %730
store i32 %727, i32* %731
%732 = load i32*, i32** %2
%733 = getelementptr inbounds i32, i32* %732, i64 40
store i32* %733, i32** %34
%734 = load i32, i32* %16
%735 = sext i32 %734 to i64
%736 = mul nsw i64 %735, 1518500250
store i64 %736, i64* %4
%737 = load i64, i64* %4
%738 = ashr i64 %737, 30
store i64 %738, i64* %3
%739 = load i64, i64* %3
%740 = trunc i64 %739 to i32
store i32 %740, i32* %19
%741 = load i32, i32* %19
%742 = load i32*, i32** %34
%743 = load i32, i32* %17
%744 = sext i32 %743 to i64
%745 = getelementptr inbounds i32, i32* %742, i64 %744
store i32 %741, i32* %745
%746 = load i32, i32* %17
%747 = add nsw i32 %746, 1
store i32 %747, i32* %17
br label %748
748: ; preds = %455, %454
%749 = load i32, i32* %17
%750 = icmp sle i32 %749, 7
br i1 %750, label %751, label %752
751: ; preds = %748
br label %455
752: ; preds = %748
br label %753
753: ; preds = %752
ret i32 0
}

LLVM IR (-O2):
define i32 @dct(i32* nocapture %0) {
br label %126
2: ; preds = %126
%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 ], [ %124, %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 nsw <4 x i32> %39, %41
%49 = sext <4 x i32> %48 to <4 x i64>
%50 = mul nsw <4 x i64> %49, <i64 2106220352, i64 2106220352, i64 2106220352, i64 2106220352>
%51 = lshr <4 x i64> %50, <i64 30, i64 30, i64 30, i64 30>
%52 = trunc <4 x i64> %51 to <4 x i32>
%53 = sext <4 x i32> %41 to <4 x i64>
%54 = mul nsw <4 x i64> %53, <i64 -1262586814, i64 -1262586814, i64 -1262586814, i64 -1262586814>
%55 = lshr <4 x i64> %54, <i64 30, i64 30, i64 30, i64 30>
%56 = trunc <4 x i64> %55 to <4 x i32>
%57 = ashr <4 x i32> %52, <i32 1, i32 1, i32 1, i32 1>
%58 = add nsw <4 x i32> %57, %56
%59 = sext <4 x i32> %39 to <4 x i64>
%60 = mul nsw <4 x i64> %59, <i64 -1687267075, i64 -1687267075, i64 -1687267075, i64 -1687267075>
%61 = lshr <4 x i64> %60, <i64 30, i64 30, i64 30, i64 30>
%62 = trunc <4 x i64> %61 to <4 x i32>
%63 = add nsw <4 x i32> %52, %62
%64 = add nsw <4 x i32> %37, %43
%65 = sext <4 x i32> %64 to <4 x i64>
%66 = mul nsw <4 x i64> %65, <i64 1785567396, i64 1785567396, i64 1785567396, i64 1785567396>
%67 = lshr <4 x i64> %66, <i64 30, i64 30, i64 30, i64 30>
%68 = trunc <4 x i64> %67 to <4 x i32>
%69 = sext <4 x i32> %43 to <4 x i64>
%70 = mul nsw <4 x i64> %69, <i64 -1489322693, i64 -1489322693, i64 -1489322693, i64 -1489322693>
%71 = lshr <4 x i64> %70, <i64 30, i64 30, i64 30, i64 30>
%72 = trunc <4 x i64> %71 to <4 x i32>
%73 = ashr <4 x i32> %68, <i32 1, i32 1, i32 1, i32 1>
%74 = add nsw <4 x i32> %73, %72
%75 = sext <4 x i32> %37 to <4 x i64>
%76 = mul nsw <4 x i64> %75, <i64 -592489406, i64 -592489406, i64 -592489406, i64 -592489406>
%77 = lshr <4 x i64> %76, <i64 29, i64 29, i64 29, i64 29>
%78 = trunc <4 x i64> %77 to <4 x i32>
%79 = ashr <4 x i32> %78, <i32 1, i32 1, i32 1, i32 1>
%80 = add nsw <4 x i32> %79, %68
%81 = add nsw <4 x i32> %44, %46
%82 = sub nsw <4 x i32> %44, %46
%83 = ashr <4 x i32> %80, <i32 1, i32 1, i32 1, i32 1>
%84 = add nsw <4 x i32> %83, %58
%85 = sub nsw <4 x i32> %83, %58
%86 = ashr <4 x i32> %63, <i32 1, i32 1, i32 1, i32 1>
%87 = add nsw <4 x i32> %74, %86
%88 = sub nsw <4 x i32> %74, %86
%89 = add nsw <4 x i32> %45, %47
%90 = sext <4 x i32> %89 to <4 x i64>
%91 = mul nsw <4 x i64> %90, <i64 1162209775, i64 1162209775, i64 1162209775, i64 1162209775>
%92 = lshr <4 x i64> %91, <i64 30, i64 30, i64 30, i64 30>
%93 = trunc <4 x i64> %92 to <4 x i32>
%94 = sext <4 x i32> %47 to <4 x i64>
%95 = mul nsw <4 x i64> %94, <i64 -1984016189, i64 -1984016189, i64 -1984016189, i64 -1984016189>
%96 = lshr <4 x i64> %95, <i64 30, i64 30, i64 30, i64 30>
%97 = trunc <4 x i64> %96 to <4 x i32>
%98 = ashr <4 x i32> %93, <i32 1, i32 1, i32 1, i32 1>
%99 = add nsw <4 x i32> %98, %97
%100 = sext <4 x i32> %45 to <4 x i64>
%101 = mul nsw <4 x i64> %100, <i64 1643612827, i64 1643612827, i64 1643612827, i64 1643612827>
%102 = lshr <4 x i64> %101, <i64 30, i64 30, i64 30, i64 30>
%103 = trunc <4 x i64> %102 to <4 x i32>
%104 = add nsw <4 x i32> %93, %103
%105 = bitcast i32* %12 to <4 x i32>*
store <4 x i32> %81, <4 x i32>* %105
%106 = bitcast i32* %24 to <4 x i32>*
store <4 x i32> %82, <4 x i32>* %106
%107 = ashr <4 x i32> %104, <i32 1, i32 1, i32 1, i32 1>
%108 = bitcast i32* %18 to <4 x i32>*
store <4 x i32> %107, <4 x i32>* %108
%109 = bitcast i32* %30 to <4 x i32>*
store <4 x i32> %99, <4 x i32>* %109
%110 = sub nsw <4 x i32> %87, %84
%111 = bitcast i32* %33 to <4 x i32>*
store <4 x i32> %110, <4 x i32>* %111
%112 = add nsw <4 x i32> %87, %84
%113 = bitcast i32* %15 to <4 x i32>*
store <4 x i32> %112, <4 x i32>* %113
%114 = sext <4 x i32> %88 to <4 x i64>
%115 = mul nsw <4 x i64> %114, <i64 1518500250, i64 1518500250, i64 1518500250, i64 1518500250>
%116 = lshr <4 x i64> %115, <i64 30, i64 30, i64 30, i64 30>
%117 = trunc <4 x i64> %116 to <4 x i32>
%118 = bitcast i32* %21 to <4 x i32>*
store <4 x i32> %117, <4 x i32>* %118
%119 = sext <4 x i32> %85 to <4 x i64>
%120 = mul nsw <4 x i64> %119, <i64 1518500250, i64 1518500250, i64 1518500250, i64 1518500250>
%121 = lshr <4 x i64> %120, <i64 30, i64 30, i64 30, i64 30>
%122 = trunc <4 x i64> %121 to <4 x i32>
%123 = bitcast i32* %27 to <4 x i32>*
store <4 x i32> %122, <4 x i32>* %123
%124 = add nuw i64 %11, 4
%125 = icmp eq i64 %124, 8
br i1 %125, label %227, label %10
126: ; preds = %1, %126
%127 = phi i64 [ 0, %1 ], [ %225, %126 ]
%128 = shl nuw nsw i64 %127, 3
%129 = getelementptr inbounds i32, i32* %0, i64 %128
%130 = load i32, i32* %129
%131 = getelementptr inbounds i32, i32* %129, i64 1
%132 = load i32, i32* %131
%133 = getelementptr inbounds i32, i32* %129, i64 2
%134 = load i32, i32* %133
%135 = getelementptr inbounds i32, i32* %129, i64 3
%136 = load i32, i32* %135
%137 = getelementptr inbounds i32, i32* %129, i64 4
%138 = load i32, i32* %137
%139 = getelementptr inbounds i32, i32* %129, i64 5
%140 = load i32, i32* %139
%141 = getelementptr inbounds i32, i32* %129, i64 6
%142 = load i32, i32* %141
%143 = getelementptr inbounds i32, i32* %129, i64 7
%144 = load i32, i32* %143
%145 = add nsw i32 %144, %130
%146 = sub nsw i32 %130, %144
%147 = add nsw i32 %142, %132
%148 = sub nsw i32 %132, %142
%149 = add nsw i32 %140, %134
%150 = sub nsw i32 %134, %140
%151 = add nsw i32 %138, %136
%152 = sub nsw i32 %136, %138
%153 = add nsw i32 %145, %151
%154 = sub nsw i32 %145, %151
%155 = add nsw i32 %147, %149
%156 = sub nsw i32 %147, %149
%157 = add nsw i32 %148, %150
%158 = sext i32 %157 to i64
%159 = mul nsw i64 %158, 2106220352
%160 = lshr i64 %159, 30
%161 = trunc i64 %160 to i32
%162 = sext i32 %150 to i64
%163 = mul nsw i64 %162, -1262586814
%164 = lshr i64 %163, 30
%165 = trunc i64 %164 to i32
%166 = ashr i32 %161, 1
%167 = add nsw i32 %166, %165
%168 = sext i32 %148 to i64
%169 = mul nsw i64 %168, -1687267075
%170 = lshr i64 %169, 30
%171 = trunc i64 %170 to i32
%172 = add nsw i32 %161, %171
%173 = add nsw i32 %146, %152
%174 = sext i32 %173 to i64
%175 = mul nsw i64 %174, 1785567396
%176 = lshr i64 %175, 30
%177 = trunc i64 %176 to i32
%178 = sext i32 %152 to i64
%179 = mul nsw i64 %178, -1489322693
%180 = lshr i64 %179, 30
%181 = trunc i64 %180 to i32
%182 = ashr i32 %177, 1
%183 = add nsw i32 %182, %181
%184 = sext i32 %146 to i64
%185 = mul nsw i64 %184, -592489406
%186 = lshr i64 %185, 29
%187 = trunc i64 %186 to i32
%188 = ashr i32 %187, 1
%189 = add nsw i32 %188, %177
%190 = add nsw i32 %153, %155
%191 = sub nsw i32 %153, %155
%192 = ashr i32 %189, 1
%193 = add nsw i32 %192, %167
%194 = sub nsw i32 %192, %167
%195 = ashr i32 %172, 1
%196 = add nsw i32 %183, %195
%197 = sub nsw i32 %183, %195
%198 = add nsw i32 %154, %156
%199 = sext i32 %198 to i64
%200 = mul nsw i64 %199, 1162209775
%201 = lshr i64 %200, 30
%202 = trunc i64 %201 to i32
%203 = sext i32 %156 to i64
%204 = mul nsw i64 %203, -1984016189
%205 = lshr i64 %204, 30
%206 = trunc i64 %205 to i32
%207 = ashr i32 %202, 1
%208 = add nsw i32 %207, %206
%209 = sext i32 %154 to i64
%210 = mul nsw i64 %209, 1643612827
%211 = lshr i64 %210, 30
%212 = trunc i64 %211 to i32
%213 = add nsw i32 %202, %212
store i32 %190, i32* %129
store i32 %191, i32* %137
%214 = ashr i32 %213, 1
store i32 %214, i32* %133
store i32 %208, i32* %141
%215 = sub nsw i32 %196, %193
store i32 %215, i32* %143
%216 = add nsw i32 %196, %193
store i32 %216, i32* %131
%217 = sext i32 %197 to i64
%218 = mul nsw i64 %217, 1518500250
%219 = lshr i64 %218, 30
%220 = trunc i64 %219 to i32
store i32 %220, i32* %135
%221 = sext i32 %194 to i64
%222 = mul nsw i64 %221, 1518500250
%223 = lshr i64 %222, 30
%224 = trunc i64 %223 to i32
store i32 %224, i32* %139
%225 = add nuw nsw i64 %127, 1
%226 = icmp eq i64 %225, 8
br i1 %226, label %2, label %126
227: ; preds = %10
ret i32 0
}