void ddct8x8s(int isgn, float **a) {
  int j;
  float x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i;
  float xr, xi;
  if (isgn < 0) {
    for (j = 0; j <= 7; j++) {
      x0r = a[0][j] + a[7][j];
      x1r = a[0][j] - a[7][j];
      x0i = a[2][j] + a[5][j];
      x1i = a[2][j] - a[5][j];
      x2r = a[4][j] + a[3][j];
      x3r = a[4][j] - a[3][j];
      x2i = a[6][j] + a[1][j];
      x3i = a[6][j] - a[1][j];
      xr = x0r + x2r;
      xi = x0i + x2i;
      a[0][j] = 0.35355339059327376220 * (xr + xi);
      a[4][j] = 0.35355339059327376220 * (xr - xi);
      xr = x0r - x2r;
      xi = x0i - x2i;
      a[2][j] = 0.46193976625564337806 * xr - 0.19134171618254488586 * xi;
      a[6][j] = 0.46193976625564337806 * xi + 0.19134171618254488586 * xr;
      xr = 0.70710678118654752440 * (x1i - x3i);
      x1i = 0.70710678118654752440 * (x1i + x3i);
      x3i = x1i - x3r;
      x1i += x3r;
      x3r = x1r - xr;
      x1r += xr;
      a[1][j] = 0.49039264020161522456 * x1r - 0.09754516100806413392 * x1i;
      a[7][j] = 0.49039264020161522456 * x1i + 0.09754516100806413392 * x1r;
      a[3][j] = 0.41573480615127261854 * x3r - 0.27778511650980111237 * x3i;
      a[5][j] = 0.41573480615127261854 * x3i + 0.27778511650980111237 * x3r;
    }
    for (j = 0; j <= 7; j++) {
      x0r = a[j][0] + a[j][7];
      x1r = a[j][0] - a[j][7];
      x0i = a[j][2] + a[j][5];
      x1i = a[j][2] - a[j][5];
      x2r = a[j][4] + a[j][3];
      x3r = a[j][4] - a[j][3];
      x2i = a[j][6] + a[j][1];
      x3i = a[j][6] - a[j][1];
      xr = x0r + x2r;
      xi = x0i + x2i;
      a[j][0] = 0.35355339059327376220 * (xr + xi);
      a[j][4] = 0.35355339059327376220 * (xr - xi);
      xr = x0r - x2r;
      xi = x0i - x2i;
      a[j][2] = 0.46193976625564337806 * xr - 0.19134171618254488586 * xi;
      a[j][6] = 0.46193976625564337806 * xi + 0.19134171618254488586 * xr;
      xr = 0.70710678118654752440 * (x1i - x3i);
      x1i = 0.70710678118654752440 * (x1i + x3i);
      x3i = x1i - x3r;
      x1i += x3r;
      x3r = x1r - xr;
      x1r += xr;
      a[j][1] = 0.49039264020161522456 * x1r - 0.09754516100806413392 * x1i;
      a[j][7] = 0.49039264020161522456 * x1i + 0.09754516100806413392 * x1r;
      a[j][3] = 0.41573480615127261854 * x3r - 0.27778511650980111237 * x3i;
      a[j][5] = 0.41573480615127261854 * x3i + 0.27778511650980111237 * x3r;
    }
  } else {
    for (j = 0; j <= 7; j++) {
      x1r = 0.49039264020161522456 * a[1][j] + 0.09754516100806413392 * a[7][j];
      x1i = 0.49039264020161522456 * a[7][j] - 0.09754516100806413392 * a[1][j];
      x3r = 0.41573480615127261854 * a[3][j] + 0.27778511650980111237 * a[5][j];
      x3i = 0.41573480615127261854 * a[5][j] - 0.27778511650980111237 * a[3][j];
      xr = x1r - x3r;
      xi = x1i + x3i;
      x1r += x3r;
      x3i -= x1i;
      x1i = 0.70710678118654752440 * (xr + xi);
      x3r = 0.70710678118654752440 * (xr - xi);
      xr = 0.46193976625564337806 * a[2][j] + 0.19134171618254488586 * a[6][j];
      xi = 0.46193976625564337806 * a[6][j] - 0.19134171618254488586 * a[2][j];
      x0r = 0.35355339059327376220 * (a[0][j] + a[4][j]);
      x0i = 0.35355339059327376220 * (a[0][j] - a[4][j]);
      x2r = x0r - xr;
      x2i = x0i - xi;
      x0r += xr;
      x0i += xi;
      a[0][j] = x0r + x1r;
      a[7][j] = x0r - x1r;
      a[2][j] = x0i + x1i;
      a[5][j] = x0i - x1i;
      a[4][j] = x2r - x3i;
      a[3][j] = x2r + x3i;
      a[6][j] = x2i - x3r;
      a[1][j] = x2i + x3r;
    }
    for (j = 0; j <= 7; j++) {
      x1r = 0.49039264020161522456 * a[j][1] + 0.09754516100806413392 * a[j][7];
      x1i = 0.49039264020161522456 * a[j][7] - 0.09754516100806413392 * a[j][1];
      x3r = 0.41573480615127261854 * a[j][3] + 0.27778511650980111237 * a[j][5];
      x3i = 0.41573480615127261854 * a[j][5] - 0.27778511650980111237 * a[j][3];
      xr = x1r - x3r;
      xi = x1i + x3i;
      x1r += x3r;
      x3i -= x1i;
      x1i = 0.70710678118654752440 * (xr + xi);
      x3r = 0.70710678118654752440 * (xr - xi);
      xr = 0.46193976625564337806 * a[j][2] + 0.19134171618254488586 * a[j][6];
      xi = 0.46193976625564337806 * a[j][6] - 0.19134171618254488586 * a[j][2];
      x0r = 0.35355339059327376220 * (a[j][0] + a[j][4]);
      x0i = 0.35355339059327376220 * (a[j][0] - a[j][4]);
      x2r = x0r - xr;
      x2i = x0i - xi;
      x0r += xr;
      x0i += xi;
      a[j][0] = x0r + x1r;
      a[j][7] = x0r - x1r;
      a[j][2] = x0i + x1i;
      a[j][5] = x0i - x1i;
      a[j][4] = x2r - x3i;
      a[j][3] = x2r + x3i;
      a[j][6] = x2i - x3r;
      a[j][1] = x2i + x3r;
    }
  }
}


x86 assembly (clang, -O0):
<ddct8x8s>:
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
cmpl   $0x0,-0x4(%rbp)
jge    19a8 <ddct8x8s+0x8a8>
movl   $0x0,-0x14(%rbp)
cmpl   $0x7,-0x14(%rbp)
jg     155c <ddct8x8s+0x45c>
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%rax
movslq -0x14(%rbp),%rcx
addss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%rax
movslq -0x14(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rax
movslq -0x14(%rbp),%rcx
addss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rax
movslq -0x14(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x24(%rbp)
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rax
movslq -0x14(%rbp),%rcx
addss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rax
movslq -0x14(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movslq -0x14(%rbp),%rcx
addss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movslq -0x14(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x18(%rbp),%xmm0
addss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x1c(%rbp),%xmm0
addss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x38(%rbp),%xmm0
addss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x1d70(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x38(%rbp),%xmm0
subss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x1d42(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x18(%rbp),%xmm0
subss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x1c(%rbp),%xmm0
subss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x3c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x1d01(%rip),%xmm1
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x1cd6(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x38(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x1ca7(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0x1c93(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x24(%rbp),%xmm0
subss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x1c70(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x24(%rbp),%xmm0
addss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x1c4d(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x24(%rbp),%xmm0
subss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x30(%rbp),%xmm0
addss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x20(%rbp),%xmm0
subss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x38(%rbp),%xmm0
addss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
movss  -0x20(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x24(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x1c0a(%rip),%xmm1
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x1bdf(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x24(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x20(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x1bb0(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0x1b9c(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x30(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x34(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x1b5d(%rip),%xmm1
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x1b32(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x30(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x1b03(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0x1aef(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    111c <ddct8x8s+0x1c>
movl   $0x0,-0x14(%rbp)
cmpl   $0x7,-0x14(%rbp)
jg     19a3 <ddct8x8s+0x8a3>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
addss  0x1c(%rax),%xmm0
movss  %xmm0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
subss  0x1c(%rax),%xmm0
movss  %xmm0,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
addss  0x14(%rax),%xmm0
movss  %xmm0,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
subss  0x14(%rax),%xmm0
movss  %xmm0,-0x24(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
addss  0xc(%rax),%xmm0
movss  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x10(%rax),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
subss  0xc(%rax),%xmm0
movss  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
addss  0x4(%rax),%xmm0
movss  %xmm0,-0x2c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x18(%rax),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
subss  0x4(%rax),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x18(%rbp),%xmm0
addss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x1c(%rbp),%xmm0
addss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x38(%rbp),%xmm0
addss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x1929(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,(%rax)
movss  -0x38(%rbp),%xmm0
subss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x18fb(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,0x10(%rax)
movss  -0x18(%rbp),%xmm0
subss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x1c(%rbp),%xmm0
subss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x3c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x18ba(%rip),%xmm1
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x188f(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,0x8(%rax)
movss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x38(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x1860(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0x184c(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,0x18(%rax)
movss  -0x24(%rbp),%xmm0
subss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x1829(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x24(%rbp),%xmm0
addss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x1806(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x24(%rbp),%xmm0
subss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x30(%rbp),%xmm0
addss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x20(%rbp),%xmm0
subss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x38(%rbp),%xmm0
addss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
movss  -0x20(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x24(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x17c3(%rip),%xmm1
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x1798(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,0x4(%rax)
movss  -0x24(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x20(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x1769(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0x1755(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,0x1c(%rax)
movss  -0x30(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x34(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x1716(%rip),%xmm1
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x16eb(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,0xc(%rax)
movss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x30(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x16bc(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0x16a8(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,0x14(%rax)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1563 <ddct8x8s+0x463>
jmp    2243 <ddct8x8s+0x1143>
movl   $0x0,-0x14(%rbp)
cmpl   $0x7,-0x14(%rbp)
jg     1df3 <ddct8x8s+0xcf3>
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x164d(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0x1639(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x20(%rbp)
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x15fe(%rip),%xmm1
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x15d3(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x24(%rbp)
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x1588(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0x1574(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x1539(%rip),%xmm1
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x150e(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x20(%rbp),%xmm0
subss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x24(%rbp),%xmm0
addss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x30(%rbp),%xmm0
addss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
movss  -0x24(%rbp),%xmm1
movss  -0x34(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x38(%rbp),%xmm0
addss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x149f(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x38(%rbp),%xmm0
subss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x147c(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x1435(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0x1421(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x13e6(%rip),%xmm1
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x13bb(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%rax
movslq -0x14(%rbp),%rcx
addss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x1375(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movslq -0x14(%rbp),%rcx
movss  (%rax,%rcx,4),%xmm0
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%rax
movslq -0x14(%rbp),%rcx
subss  (%rax,%rcx,4),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x133b(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  -0x18(%rbp),%xmm0
subss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  -0x1c(%rbp),%xmm0
subss  -0x3c(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x38(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x3c(%rbp),%xmm0
addss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  -0x18(%rbp),%xmm0
addss  -0x20(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x18(%rbp),%xmm0
subss  -0x20(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x38(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x1c(%rbp),%xmm0
addss  -0x24(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x10(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x1c(%rbp),%xmm0
subss  -0x24(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x28(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x28(%rbp),%xmm0
subss  -0x34(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x20(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x28(%rbp),%xmm0
addss  -0x34(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x18(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x2c(%rbp),%xmm0
subss  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x30(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
movss  -0x2c(%rbp),%xmm0
addss  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
mov    0x8(%rax),%rax
movslq -0x14(%rbp),%rcx
movss  %xmm0,(%rax,%rcx,4)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    19af <ddct8x8s+0x8af>
movl   $0x0,-0x14(%rbp)
cmpl   $0x7,-0x14(%rbp)
jg     223e <ddct8x8s+0x113e>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x4(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x1c(%rax),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x1202(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0x11ee(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x1c(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x4(%rax),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x11b3(%rip),%xmm1
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x1188(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x24(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0xc(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x14(%rax),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x113d(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0x1129(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x14(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0xc(%rax),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0x10ee(%rip),%xmm1
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x10c3(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x20(%rbp),%xmm0
subss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x24(%rbp),%xmm0
addss  -0x34(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x30(%rbp),%xmm0
addss  -0x20(%rbp),%xmm0
movss  %xmm0,-0x20(%rbp)
movss  -0x24(%rbp),%xmm1
movss  -0x34(%rbp),%xmm0
subss  %xmm1,%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x38(%rbp),%xmm0
addss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x1054(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x38(%rbp),%xmm0
subss  -0x3c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x1031(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x8(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x18(%rax),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xfea(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0xfd6(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x18(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  0x8(%rax),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xf9b(%rip),%xmm1
mulsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0xf70(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
addss  0x10(%rax),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xf2a(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  (%rax),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
subss  0x10(%rax),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xef0(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  -0x18(%rbp),%xmm0
subss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  -0x1c(%rbp),%xmm0
subss  -0x3c(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x38(%rbp),%xmm0
addss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x18(%rbp)
movss  -0x3c(%rbp),%xmm0
addss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0x1c(%rbp)
movss  -0x18(%rbp),%xmm0
addss  -0x20(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,(%rax)
movss  -0x18(%rbp),%xmm0
subss  -0x20(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,0x1c(%rax)
movss  -0x1c(%rbp),%xmm0
addss  -0x24(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,0x8(%rax)
movss  -0x1c(%rbp),%xmm0
subss  -0x24(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,0x14(%rax)
movss  -0x28(%rbp),%xmm0
subss  -0x34(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,0x10(%rax)
movss  -0x28(%rbp),%xmm0
addss  -0x34(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,0xc(%rax)
movss  -0x2c(%rbp),%xmm0
subss  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,0x18(%rax)
movss  -0x2c(%rbp),%xmm0
addss  -0x30(%rbp),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movss  %xmm0,0x4(%rax)
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1dfa <ddct8x8s+0xcfa>
jmp    2243 <ddct8x8s+0x1143>
pop    %rbp
ret

x86 assembly (clang, -O2):
<ddct8x8s>:
push   %rbx
test   %edi,%edi
js     155e <ddct8x8s+0x45e>
mov    (%rsi),%rax
mov    0x8(%rsi),%r8
mov    0x38(%rsi),%r9
mov    0x18(%rsi),%r10
mov    0x28(%rsi),%r11
mov    0x10(%rsi),%rdx
mov    0x30(%rsi),%rdi
mov    0x20(%rsi),%rcx
xor    %ebx,%ebx
movsd  0xecd(%rip),%xmm14
movsd  0xecc(%rip),%xmm15
movsd  0xecb(%rip),%xmm9
movsd  0xed2(%rip),%xmm11
movsd  0xed1(%rip),%xmm12
movsd  0xed8(%rip),%xmm13
movss  (%r8,%rbx,1),%xmm0
xorps  %xmm1,%xmm1
cvtss2sd %xmm0,%xmm1
movss  (%r9,%rbx,1),%xmm0
xorps  %xmm3,%xmm3
cvtss2sd %xmm0,%xmm3
movaps %xmm3,%xmm0
mulsd  %xmm14,%xmm0
movaps %xmm1,%xmm5
movapd %xmm15,%xmm8
mulsd  %xmm15,%xmm5
addsd  %xmm0,%xmm5
xorps  %xmm0,%xmm0
cvtsd2ss %xmm5,%xmm0
mulsd  %xmm9,%xmm1
mulsd  %xmm15,%xmm3
addsd  %xmm1,%xmm3
xorps  %xmm1,%xmm1
cvtsd2ss %xmm3,%xmm1
movss  (%r10,%rbx,1),%xmm3
xorps  %xmm4,%xmm4
cvtss2sd %xmm3,%xmm4
movss  (%r11,%rbx,1),%xmm5
cvtss2sd %xmm5,%xmm5
movaps %xmm5,%xmm6
movsd  0xe47(%rip),%xmm2
mulsd  %xmm2,%xmm6
movaps %xmm4,%xmm3
mulsd  %xmm11,%xmm3
addsd  %xmm6,%xmm3
cvtsd2ss %xmm3,%xmm7
mulsd  %xmm12,%xmm4
mulsd  %xmm11,%xmm5
addsd  %xmm4,%xmm5
xorps  %xmm6,%xmm6
cvtsd2ss %xmm5,%xmm6
movaps %xmm0,%xmm5
subss  %xmm7,%xmm5
movaps %xmm1,%xmm3
addss  %xmm6,%xmm3
addss  %xmm7,%xmm0
subss  %xmm1,%xmm6
movaps %xmm3,%xmm15
movss  (%rdx,%rbx,1),%xmm4
xorps  %xmm9,%xmm9
cvtss2sd %xmm4,%xmm9
movss  (%rdi,%rbx,1),%xmm7
cvtss2sd %xmm7,%xmm7
movaps %xmm7,%xmm2
mulsd  %xmm13,%xmm2
movaps %xmm9,%xmm4
movsd  0xe01(%rip),%xmm1
mulsd  %xmm1,%xmm4
addsd  %xmm2,%xmm4
movapd %xmm13,%xmm10
movapd %xmm12,%xmm13
movapd %xmm11,%xmm12
movapd %xmm8,%xmm11
xorps  %xmm8,%xmm8
cvtsd2ss %xmm4,%xmm8
mulsd  0xddb(%rip),%xmm9
mulsd  %xmm1,%xmm7
addsd  %xmm9,%xmm7
xorps  %xmm9,%xmm9
cvtsd2ss %xmm7,%xmm9
addss  %xmm5,%xmm15
movss  (%rax,%rbx,1),%xmm2
movss  (%rcx,%rbx,1),%xmm4
movaps %xmm2,%xmm7
addss  %xmm4,%xmm7
cvtss2sd %xmm7,%xmm7
movsd  0xdaf(%rip),%xmm1
mulsd  %xmm1,%xmm7
cvtsd2ss %xmm7,%xmm7
subss  %xmm3,%xmm5
subss  %xmm4,%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  %xmm1,%xmm2
cvtsd2ss %xmm2,%xmm2
movaps %xmm7,%xmm3
subss  %xmm8,%xmm3
addss  %xmm7,%xmm8
movaps %xmm2,%xmm4
subss  %xmm9,%xmm4
addss  %xmm2,%xmm9
movaps %xmm0,%xmm2
addss  %xmm8,%xmm2
movss  %xmm2,(%rax,%rbx,1)
xorps  %xmm1,%xmm1
cvtss2sd %xmm15,%xmm1
movsd  0xd3c(%rip),%xmm2
mulsd  %xmm2,%xmm1
cvtsd2ss %xmm1,%xmm1
subss  %xmm0,%xmm8
movss  %xmm8,(%r9,%rbx,1)
movapd %xmm11,%xmm15
movapd %xmm12,%xmm11
movapd %xmm13,%xmm12
movapd %xmm10,%xmm13
movaps %xmm9,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,(%rdx,%rbx,1)
subss  %xmm1,%xmm9
movss  %xmm9,(%r11,%rbx,1)
movsd  0xcd4(%rip),%xmm9
movaps %xmm3,%xmm0
subss  %xmm6,%xmm0
movss  %xmm0,(%rcx,%rbx,1)
xorps  %xmm0,%xmm0
cvtss2sd %xmm5,%xmm0
mulsd  %xmm2,%xmm0
cvtsd2ss %xmm0,%xmm0
addss  %xmm6,%xmm3
movss  %xmm3,(%r10,%rbx,1)
movaps %xmm4,%xmm1
subss  %xmm0,%xmm1
movss  %xmm1,(%rdi,%rbx,1)
addss  %xmm0,%xmm4
movss  %xmm4,(%r8,%rbx,1)
add    $0x4,%rbx
cmp    $0x20,%rbx
jne    1160 <ddct8x8s+0x60>
mov    $0x1,%ecx
movsd  0xcad(%rip),%xmm10
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movss  0x4(%rax),%xmm0
cvtss2sd %xmm0,%xmm0
movss  0x1c(%rax),%xmm1
cvtss2sd %xmm1,%xmm1
movaps %xmm1,%xmm2
mulsd  %xmm14,%xmm2
movaps %xmm0,%xmm3
movapd %xmm15,%xmm4
mulsd  %xmm15,%xmm3
addsd  %xmm2,%xmm3
xorps  %xmm8,%xmm8
cvtsd2ss %xmm3,%xmm8
mulsd  %xmm9,%xmm0
mulsd  %xmm15,%xmm1
addsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm1,%xmm0
movss  0xc(%rax),%xmm1
cvtss2sd %xmm1,%xmm1
movss  0x14(%rax),%xmm2
cvtss2sd %xmm2,%xmm2
movaps %xmm2,%xmm4
mulsd  0xc12(%rip),%xmm4
movaps %xmm1,%xmm5
mulsd  %xmm11,%xmm5
addsd  %xmm4,%xmm5
xorps  %xmm4,%xmm4
cvtsd2ss %xmm5,%xmm4
mulsd  %xmm12,%xmm1
mulsd  %xmm11,%xmm2
addsd  %xmm1,%xmm2
xorps  %xmm5,%xmm5
cvtsd2ss %xmm2,%xmm5
movss  (%rax),%xmm6
movaps %xmm8,%xmm1
subss  %xmm4,%xmm1
movaps %xmm0,%xmm2
addss  %xmm5,%xmm2
addss  %xmm4,%xmm8
subss  %xmm0,%xmm5
movaps %xmm1,%xmm0
addss  %xmm2,%xmm0
subss  %xmm2,%xmm1
unpcklps %xmm1,%xmm0
cvtps2pd %xmm0,%xmm0
movss  0x8(%rax),%xmm1
cvtss2sd %xmm1,%xmm1
movss  0x18(%rax),%xmm2
cvtss2sd %xmm2,%xmm2
movaps %xmm2,%xmm4
mulsd  %xmm13,%xmm4
movaps %xmm1,%xmm7
mulsd  %xmm10,%xmm7
addsd  %xmm4,%xmm7
mulsd  0xbbf(%rip),%xmm1
mulsd  %xmm10,%xmm2
addsd  %xmm1,%xmm2
movss  0x10(%rax),%xmm1
movaps %xmm6,%xmm4
addss  %xmm1,%xmm4
cvtss2sd %xmm4,%xmm4
movsd  0xba6(%rip),%xmm3
mulsd  %xmm3,%xmm4
unpcklpd %xmm2,%xmm4
mulpd  0xba6(%rip),%xmm0
cvtpd2ps %xmm0,%xmm0
subss  %xmm1,%xmm6
xorps  %xmm1,%xmm1
cvtss2sd %xmm6,%xmm1
mulsd  %xmm3,%xmm1
unpcklpd %xmm7,%xmm1
cvtpd2ps %xmm1,%xmm2
cvtpd2ps %xmm4,%xmm1
movapd %xmm1,%xmm4
unpcklpd %xmm2,%xmm4
shufps $0x11,%xmm1,%xmm2
movapd %xmm4,%xmm1
subps  %xmm2,%xmm1
addps  %xmm4,%xmm2
movaps %xmm2,%xmm4
shufps $0xff,%xmm2,%xmm4
addss  %xmm8,%xmm4
movss  %xmm4,(%rax)
movaps %xmm1,%xmm4
shufps $0xd8,%xmm2,%xmm4
shufps $0x55,%xmm2,%xmm2
addss  %xmm0,%xmm2
movss  %xmm2,0x8(%rax)
movaps %xmm5,%xmm2
addss  %xmm1,%xmm2
movss  %xmm2,0xc(%rax)
movlhps %xmm0,%xmm5
shufps $0xd4,%xmm0,%xmm8
shufps $0x28,%xmm8,%xmm5
shufps $0xd8,%xmm4,%xmm4
subps  %xmm5,%xmm4
movups %xmm4,0x10(%rax)
movhlps %xmm1,%xmm1
shufps $0x55,%xmm0,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,0x4(%rax)
cmp    $0x8,%rcx
je     199d <ddct8x8s+0x89d>
mov    (%rsi,%rcx,8),%rax
add    $0x1,%rcx
jmp    13a0 <ddct8x8s+0x2a0>
mov    (%rsi),%rax
mov    0x8(%rsi),%r8
mov    0x38(%rsi),%r9
mov    0x10(%rsi),%r10
mov    0x28(%rsi),%r11
mov    0x20(%rsi),%rdx
mov    0x18(%rsi),%rdi
mov    0x30(%rsi),%rcx
xor    %ebx,%ebx
movsd  0xac8(%rip),%xmm12
movsd  0xaa7(%rip),%xmm15
movsd  0xa76(%rip),%xmm10
nopw   0x0(%rax,%rax,1)
movss  (%rax,%rbx,1),%xmm14
movss  (%r9,%rbx,1),%xmm0
movaps %xmm14,%xmm9
addss  %xmm0,%xmm9
subss  %xmm0,%xmm14
movss  (%r10,%rbx,1),%xmm8
movss  (%r11,%rbx,1),%xmm0
movaps %xmm8,%xmm3
addss  %xmm0,%xmm3
subss  %xmm0,%xmm8
movss  (%rdx,%rbx,1),%xmm6
movss  (%rdi,%rbx,1),%xmm0
movaps %xmm6,%xmm1
addss  %xmm0,%xmm1
subss  %xmm0,%xmm6
movss  (%rcx,%rbx,1),%xmm0
movapd %xmm10,%xmm11
movss  (%r8,%rbx,1),%xmm10
movaps %xmm0,%xmm4
addss  %xmm10,%xmm4
movaps %xmm9,%xmm7
addss  %xmm1,%xmm7
movaps %xmm3,%xmm5
addss  %xmm4,%xmm5
movaps %xmm7,%xmm2
addss  %xmm5,%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  %xmm12,%xmm2
cvtsd2ss %xmm2,%xmm2
subss  %xmm10,%xmm0
movapd %xmm11,%xmm10
movss  %xmm2,(%rax,%rbx,1)
subss  %xmm5,%xmm7
subss  %xmm1,%xmm9
subss  %xmm4,%xmm3
xorps  %xmm1,%xmm1
cvtss2sd %xmm9,%xmm1
xorps  %xmm2,%xmm2
cvtss2sd %xmm3,%xmm2
movaps %xmm2,%xmm3
mulsd  0x9ef(%rip),%xmm3
movaps %xmm1,%xmm4
movsd  0x9dc(%rip),%xmm5
mulsd  %xmm5,%xmm4
addsd  %xmm3,%xmm4
xorps  %xmm3,%xmm3
cvtss2sd %xmm7,%xmm3
mulsd  %xmm12,%xmm3
cvtsd2ss %xmm3,%xmm3
cvtsd2ss %xmm4,%xmm4
movss  %xmm3,(%rdx,%rbx,1)
movss  %xmm4,(%r10,%rbx,1)
mulsd  %xmm15,%xmm1
mulsd  %xmm5,%xmm2
addsd  %xmm1,%xmm2
xorps  %xmm1,%xmm1
cvtsd2ss %xmm2,%xmm1
movaps %xmm8,%xmm2
subss  %xmm0,%xmm2
cvtss2sd %xmm2,%xmm2
movsd  0x97d(%rip),%xmm3
mulsd  %xmm3,%xmm2
cvtsd2ss %xmm2,%xmm2
movss  %xmm1,(%rcx,%rbx,1)
addss  %xmm8,%xmm0
movsd  0x952(%rip),%xmm8
movsd  0x951(%rip),%xmm9
cvtss2sd %xmm0,%xmm0
mulsd  %xmm3,%xmm0
cvtsd2ss %xmm0,%xmm0
movaps %xmm0,%xmm1
subss  %xmm6,%xmm1
addss  %xmm0,%xmm6
movaps %xmm14,%xmm0
addss  %xmm2,%xmm14
xorps  %xmm3,%xmm3
cvtss2sd %xmm14,%xmm3
xorps  %xmm4,%xmm4
cvtss2sd %xmm6,%xmm4
movaps %xmm4,%xmm5
mulsd  %xmm11,%xmm5
movaps %xmm3,%xmm6
movsd  0x8ef(%rip),%xmm7
mulsd  %xmm7,%xmm6
addsd  %xmm5,%xmm6
xorps  %xmm5,%xmm5
cvtsd2ss %xmm6,%xmm5
subss  %xmm2,%xmm0
movss  %xmm5,(%r8,%rbx,1)
mulsd  0x8c6(%rip),%xmm3
mulsd  %xmm7,%xmm4
addsd  %xmm3,%xmm4
xorps  %xmm2,%xmm2
cvtsd2ss %xmm4,%xmm2
movss  %xmm2,(%r9,%rbx,1)
cvtss2sd %xmm0,%xmm0
cvtss2sd %xmm1,%xmm1
movaps %xmm1,%xmm2
mulsd  %xmm9,%xmm2
movaps %xmm0,%xmm3
mulsd  %xmm8,%xmm3
addsd  %xmm2,%xmm3
mulsd  0x8a5(%rip),%xmm0
mulsd  %xmm8,%xmm1
addsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsd2ss %xmm3,%xmm0
cvtsd2ss %xmm1,%xmm1
movss  %xmm0,(%rdi,%rbx,1)
movss  %xmm1,(%r11,%rbx,1)
add    $0x4,%rbx
cmp    $0x20,%rbx
jne    15a0 <ddct8x8s+0x4a0>
movapd %xmm15,%xmm13
mov    $0x1,%ecx
nopw   0x0(%rax,%rax,1)
movss  0x1c(%rax),%xmm0
movss  (%rax),%xmm1
movss  0x4(%rax),%xmm3
movaps %xmm1,%xmm2
addss  %xmm0,%xmm2
subss  %xmm0,%xmm1
movss  0x8(%rax),%xmm8
movss  0x14(%rax),%xmm0
movaps %xmm8,%xmm4
addss  %xmm0,%xmm4
subss  %xmm0,%xmm8
movss  0x10(%rax),%xmm0
movss  0xc(%rax),%xmm5
movaps %xmm0,%xmm6
addss  %xmm5,%xmm6
subss  %xmm5,%xmm0
movss  0x18(%rax),%xmm10
movaps %xmm10,%xmm5
addss  %xmm3,%xmm5
subss  %xmm3,%xmm10
movaps %xmm2,%xmm14
addss  %xmm6,%xmm14
movaps %xmm4,%xmm3
addss  %xmm5,%xmm3
movaps %xmm14,%xmm9
addss  %xmm3,%xmm9
subss  %xmm3,%xmm14
subss  %xmm6,%xmm2
subss  %xmm5,%xmm4
xorps  %xmm3,%xmm3
cvtss2sd %xmm2,%xmm3
xorps  %xmm12,%xmm12
cvtss2sd %xmm4,%xmm12
movaps %xmm12,%xmm4
mulsd  0x7fd(%rip),%xmm4
movaps %xmm3,%xmm2
movsd  0x7ea(%rip),%xmm6
mulsd  %xmm6,%xmm2
addsd  %xmm4,%xmm2
mulsd  %xmm15,%xmm3
mulsd  %xmm6,%xmm12
addsd  %xmm3,%xmm12
movaps %xmm8,%xmm3
subss  %xmm10,%xmm3
cvtss2sd %xmm3,%xmm3
movsd  0x7ae(%rip),%xmm6
mulsd  %xmm6,%xmm3
cvtsd2ss %xmm3,%xmm3
addss  %xmm8,%xmm10
xorps  %xmm4,%xmm4
cvtss2sd %xmm10,%xmm4
mulsd  %xmm6,%xmm4
cvtsd2ss %xmm4,%xmm4
movaps %xmm4,%xmm8
subss  %xmm0,%xmm8
addss  %xmm4,%xmm0
movaps %xmm1,%xmm4
subss  %xmm3,%xmm4
addss  %xmm3,%xmm1
cvtss2sd %xmm1,%xmm7
cvtss2sd %xmm0,%xmm0
movaps %xmm0,%xmm3
movapd %xmm11,%xmm1
mulsd  %xmm11,%xmm3
movaps %xmm7,%xmm1
movsd  0x730(%rip),%xmm10
mulsd  %xmm10,%xmm1
addsd  %xmm3,%xmm1
xorps  %xmm3,%xmm3
cvtss2sd %xmm9,%xmm3
movsd  0x75e(%rip),%xmm9
mulsd  %xmm9,%xmm3
unpcklpd %xmm1,%xmm3
mulsd  0x6fd(%rip),%xmm7
mulsd  %xmm10,%xmm0
addsd  %xmm7,%xmm0
xorps  %xmm1,%xmm1
cvtss2sd %xmm4,%xmm1
xorps  %xmm4,%xmm4
cvtss2sd %xmm8,%xmm4
movaps %xmm4,%xmm6
mulsd  0x702(%rip),%xmm6
movaps %xmm1,%xmm7
movsd  0x6ef(%rip),%xmm5
mulsd  %xmm5,%xmm7
addsd  %xmm6,%xmm7
unpcklpd %xmm7,%xmm2
cvtpd2ps %xmm2,%xmm2
cvtpd2ps %xmm3,%xmm3
unpcklpd %xmm0,%xmm12
unpcklpd %xmm2,%xmm3
mulsd  0x6c2(%rip),%xmm1
mulsd  %xmm5,%xmm4
addsd  %xmm1,%xmm4
xorps  %xmm0,%xmm0
cvtss2sd %xmm14,%xmm0
mulsd  %xmm9,%xmm0
unpcklpd %xmm4,%xmm0
cvtpd2ps %xmm12,%xmm1
cvtpd2ps %xmm0,%xmm0
movupd %xmm3,(%rax)
unpcklpd %xmm1,%xmm0
movupd %xmm0,0x10(%rax)
cmp    $0x8,%rcx
je     199d <ddct8x8s+0x89d>
mov    (%rsi,%rcx,8),%rax
add    $0x1,%rcx
movapd %xmm13,%xmm15
jmp    17b0 <ddct8x8s+0x6b0>
pop    %rbx
ret

LLVM IR (-O0):
define void @ddct8x8s(i32 %0, float** %1) {
%3 = alloca i32
%4 = alloca float**
%5 = alloca i32
%6 = alloca float
%7 = alloca float
%8 = alloca float
%9 = alloca float
%10 = alloca float
%11 = alloca float
%12 = alloca float
%13 = alloca float
%14 = alloca float
%15 = alloca float
store i32 %0, i32* %3
store float** %1, float*** %4
%16 = load i32, i32* %3
%17 = icmp slt i32 %16, 0
br i1 %17, label %18, label %557
18: ; preds = %2
store i32 0, i32* %5
br label %19
19: ; preds = %284, %18
%20 = load i32, i32* %5
%21 = icmp sle i32 %20, 7
br i1 %21, label %22, label %287
22: ; preds = %19
%23 = load float**, float*** %4
%24 = getelementptr inbounds float*, float** %23, i64 0
%25 = load float*, float** %24
%26 = load i32, i32* %5
%27 = sext i32 %26 to i64
%28 = getelementptr inbounds float, float* %25, i64 %27
%29 = load float, float* %28
%30 = load float**, float*** %4
%31 = getelementptr inbounds float*, float** %30, i64 7
%32 = load float*, float** %31
%33 = load i32, i32* %5
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds float, float* %32, i64 %34
%36 = load float, float* %35
%37 = fadd float %29, %36
store float %37, float* %6
%38 = load float**, float*** %4
%39 = getelementptr inbounds float*, float** %38, i64 0
%40 = load float*, float** %39
%41 = load i32, i32* %5
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds float, float* %40, i64 %42
%44 = load float, float* %43
%45 = load float**, float*** %4
%46 = getelementptr inbounds float*, float** %45, i64 7
%47 = load float*, float** %46
%48 = load i32, i32* %5
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds float, float* %47, i64 %49
%51 = load float, float* %50
%52 = fsub float %44, %51
store float %52, float* %8
%53 = load float**, float*** %4
%54 = getelementptr inbounds float*, float** %53, i64 2
%55 = load float*, float** %54
%56 = load i32, i32* %5
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds float, float* %55, i64 %57
%59 = load float, float* %58
%60 = load float**, float*** %4
%61 = getelementptr inbounds float*, float** %60, i64 5
%62 = load float*, float** %61
%63 = load i32, i32* %5
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds float, float* %62, i64 %64
%66 = load float, float* %65
%67 = fadd float %59, %66
store float %67, float* %7
%68 = load float**, float*** %4
%69 = getelementptr inbounds float*, float** %68, i64 2
%70 = load float*, float** %69
%71 = load i32, i32* %5
%72 = sext i32 %71 to i64
%73 = getelementptr inbounds float, float* %70, i64 %72
%74 = load float, float* %73
%75 = load float**, float*** %4
%76 = getelementptr inbounds float*, float** %75, i64 5
%77 = load float*, float** %76
%78 = load i32, i32* %5
%79 = sext i32 %78 to i64
%80 = getelementptr inbounds float, float* %77, i64 %79
%81 = load float, float* %80
%82 = fsub float %74, %81
store float %82, float* %9
%83 = load float**, float*** %4
%84 = getelementptr inbounds float*, float** %83, i64 4
%85 = load float*, float** %84
%86 = load i32, i32* %5
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds float, float* %85, i64 %87
%89 = load float, float* %88
%90 = load float**, float*** %4
%91 = getelementptr inbounds float*, float** %90, i64 3
%92 = load float*, float** %91
%93 = load i32, i32* %5
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds float, float* %92, i64 %94
%96 = load float, float* %95
%97 = fadd float %89, %96
store float %97, float* %10
%98 = load float**, float*** %4
%99 = getelementptr inbounds float*, float** %98, i64 4
%100 = load float*, float** %99
%101 = load i32, i32* %5
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds float, float* %100, i64 %102
%104 = load float, float* %103
%105 = load float**, float*** %4
%106 = getelementptr inbounds float*, float** %105, i64 3
%107 = load float*, float** %106
%108 = load i32, i32* %5
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds float, float* %107, i64 %109
%111 = load float, float* %110
%112 = fsub float %104, %111
store float %112, float* %12
%113 = load float**, float*** %4
%114 = getelementptr inbounds float*, float** %113, i64 6
%115 = load float*, float** %114
%116 = load i32, i32* %5
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds float, float* %115, i64 %117
%119 = load float, float* %118
%120 = load float**, float*** %4
%121 = getelementptr inbounds float*, float** %120, i64 1
%122 = load float*, float** %121
%123 = load i32, i32* %5
%124 = sext i32 %123 to i64
%125 = getelementptr inbounds float, float* %122, i64 %124
%126 = load float, float* %125
%127 = fadd float %119, %126
store float %127, float* %11
%128 = load float**, float*** %4
%129 = getelementptr inbounds float*, float** %128, i64 6
%130 = load float*, float** %129
%131 = load i32, i32* %5
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds float, float* %130, i64 %132
%134 = load float, float* %133
%135 = load float**, float*** %4
%136 = getelementptr inbounds float*, float** %135, i64 1
%137 = load float*, float** %136
%138 = load i32, i32* %5
%139 = sext i32 %138 to i64
%140 = getelementptr inbounds float, float* %137, i64 %139
%141 = load float, float* %140
%142 = fsub float %134, %141
store float %142, float* %13
%143 = load float, float* %6
%144 = load float, float* %10
%145 = fadd float %143, %144
store float %145, float* %14
%146 = load float, float* %7
%147 = load float, float* %11
%148 = fadd float %146, %147
store float %148, float* %15
%149 = load float, float* %14
%150 = load float, float* %15
%151 = fadd float %149, %150
%152 = fpext float %151 to double
%153 = fmul double 0x3FD6A09E667F3BCD, %152
%154 = fptrunc double %153 to float
%155 = load float**, float*** %4
%156 = getelementptr inbounds float*, float** %155, i64 0
%157 = load float*, float** %156
%158 = load i32, i32* %5
%159 = sext i32 %158 to i64
%160 = getelementptr inbounds float, float* %157, i64 %159
store float %154, float* %160
%161 = load float, float* %14
%162 = load float, float* %15
%163 = fsub float %161, %162
%164 = fpext float %163 to double
%165 = fmul double 0x3FD6A09E667F3BCD, %164
%166 = fptrunc double %165 to float
%167 = load float**, float*** %4
%168 = getelementptr inbounds float*, float** %167, i64 4
%169 = load float*, float** %168
%170 = load i32, i32* %5
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds float, float* %169, i64 %171
store float %166, float* %172
%173 = load float, float* %6
%174 = load float, float* %10
%175 = fsub float %173, %174
store float %175, float* %14
%176 = load float, float* %7
%177 = load float, float* %11
%178 = fsub float %176, %177
store float %178, float* %15
%179 = load float, float* %14
%180 = fpext float %179 to double
%181 = load float, float* %15
%182 = fpext float %181 to double
%183 = fmul double 0x3FC87DE2A6AEA963, %182
%184 = fneg double %183
%185 = call double @llvm.fmuladd.f64(double 0x3FDD906BCF328D46, double %180, double %184)
%186 = fptrunc double %185 to float
%187 = load float**, float*** %4
%188 = getelementptr inbounds float*, float** %187, i64 2
%189 = load float*, float** %188
%190 = load i32, i32* %5
%191 = sext i32 %190 to i64
%192 = getelementptr inbounds float, float* %189, i64 %191
store float %186, float* %192
%193 = load float, float* %15
%194 = fpext float %193 to double
%195 = load float, float* %14
%196 = fpext float %195 to double
%197 = fmul double 0x3FC87DE2A6AEA963, %196
%198 = call double @llvm.fmuladd.f64(double 0x3FDD906BCF328D46, double %194, double %197)
%199 = fptrunc double %198 to float
%200 = load float**, float*** %4
%201 = getelementptr inbounds float*, float** %200, i64 6
%202 = load float*, float** %201
%203 = load i32, i32* %5
%204 = sext i32 %203 to i64
%205 = getelementptr inbounds float, float* %202, i64 %204
store float %199, float* %205
%206 = load float, float* %9
%207 = load float, float* %13
%208 = fsub float %206, %207
%209 = fpext float %208 to double
%210 = fmul double 0x3FE6A09E667F3BCD, %209
%211 = fptrunc double %210 to float
store float %211, float* %14
%212 = load float, float* %9
%213 = load float, float* %13
%214 = fadd float %212, %213
%215 = fpext float %214 to double
%216 = fmul double 0x3FE6A09E667F3BCD, %215
%217 = fptrunc double %216 to float
store float %217, float* %9
%218 = load float, float* %9
%219 = load float, float* %12
%220 = fsub float %218, %219
store float %220, float* %13
%221 = load float, float* %12
%222 = load float, float* %9
%223 = fadd float %222, %221
store float %223, float* %9
%224 = load float, float* %8
%225 = load float, float* %14
%226 = fsub float %224, %225
store float %226, float* %12
%227 = load float, float* %14
%228 = load float, float* %8
%229 = fadd float %228, %227
store float %229, float* %8
%230 = load float, float* %8
%231 = fpext float %230 to double
%232 = load float, float* %9
%233 = fpext float %232 to double
%234 = fmul double 0x3FB8F8B83C69A60B, %233
%235 = fneg double %234
%236 = call double @llvm.fmuladd.f64(double 0x3FDF6297CFF75CB0, double %231, double %235)
%237 = fptrunc double %236 to float
%238 = load float**, float*** %4
%239 = getelementptr inbounds float*, float** %238, i64 1
%240 = load float*, float** %239
%241 = load i32, i32* %5
%242 = sext i32 %241 to i64
%243 = getelementptr inbounds float, float* %240, i64 %242
store float %237, float* %243
%244 = load float, float* %9
%245 = fpext float %244 to double
%246 = load float, float* %8
%247 = fpext float %246 to double
%248 = fmul double 0x3FB8F8B83C69A60B, %247
%249 = call double @llvm.fmuladd.f64(double 0x3FDF6297CFF75CB0, double %245, double %248)
%250 = fptrunc double %249 to float
%251 = load float**, float*** %4
%252 = getelementptr inbounds float*, float** %251, i64 7
%253 = load float*, float** %252
%254 = load i32, i32* %5
%255 = sext i32 %254 to i64
%256 = getelementptr inbounds float, float* %253, i64 %255
store float %250, float* %256
%257 = load float, float* %12
%258 = fpext float %257 to double
%259 = load float, float* %13
%260 = fpext float %259 to double
%261 = fmul double 0x3FD1C73B39AE68C8, %260
%262 = fneg double %261
%263 = call double @llvm.fmuladd.f64(double 0x3FDA9B66290EA1A3, double %258, double %262)
%264 = fptrunc double %263 to float
%265 = load float**, float*** %4
%266 = getelementptr inbounds float*, float** %265, i64 3
%267 = load float*, float** %266
%268 = load i32, i32* %5
%269 = sext i32 %268 to i64
%270 = getelementptr inbounds float, float* %267, i64 %269
store float %264, float* %270
%271 = load float, float* %13
%272 = fpext float %271 to double
%273 = load float, float* %12
%274 = fpext float %273 to double
%275 = fmul double 0x3FD1C73B39AE68C8, %274
%276 = call double @llvm.fmuladd.f64(double 0x3FDA9B66290EA1A3, double %272, double %275)
%277 = fptrunc double %276 to float
%278 = load float**, float*** %4
%279 = getelementptr inbounds float*, float** %278, i64 5
%280 = load float*, float** %279
%281 = load i32, i32* %5
%282 = sext i32 %281 to i64
%283 = getelementptr inbounds float, float* %280, i64 %282
store float %277, float* %283
br label %284
284: ; preds = %22
%285 = load i32, i32* %5
%286 = add nsw i32 %285, 1
store i32 %286, i32* %5
br label %19
287: ; preds = %19
store i32 0, i32* %5
br label %288
288: ; preds = %553, %287
%289 = load i32, i32* %5
%290 = icmp sle i32 %289, 7
br i1 %290, label %291, label %556
291: ; preds = %288
%292 = load float**, float*** %4
%293 = load i32, i32* %5
%294 = sext i32 %293 to i64
%295 = getelementptr inbounds float*, float** %292, i64 %294
%296 = load float*, float** %295
%297 = getelementptr inbounds float, float* %296, i64 0
%298 = load float, float* %297
%299 = load float**, float*** %4
%300 = load i32, i32* %5
%301 = sext i32 %300 to i64
%302 = getelementptr inbounds float*, float** %299, i64 %301
%303 = load float*, float** %302
%304 = getelementptr inbounds float, float* %303, i64 7
%305 = load float, float* %304
%306 = fadd float %298, %305
store float %306, float* %6
%307 = load float**, float*** %4
%308 = load i32, i32* %5
%309 = sext i32 %308 to i64
%310 = getelementptr inbounds float*, float** %307, i64 %309
%311 = load float*, float** %310
%312 = getelementptr inbounds float, float* %311, i64 0
%313 = load float, float* %312
%314 = load float**, float*** %4
%315 = load i32, i32* %5
%316 = sext i32 %315 to i64
%317 = getelementptr inbounds float*, float** %314, i64 %316
%318 = load float*, float** %317
%319 = getelementptr inbounds float, float* %318, i64 7
%320 = load float, float* %319
%321 = fsub float %313, %320
store float %321, float* %8
%322 = load float**, float*** %4
%323 = load i32, i32* %5
%324 = sext i32 %323 to i64
%325 = getelementptr inbounds float*, float** %322, i64 %324
%326 = load float*, float** %325
%327 = getelementptr inbounds float, float* %326, i64 2
%328 = load float, float* %327
%329 = load float**, float*** %4
%330 = load i32, i32* %5
%331 = sext i32 %330 to i64
%332 = getelementptr inbounds float*, float** %329, i64 %331
%333 = load float*, float** %332
%334 = getelementptr inbounds float, float* %333, i64 5
%335 = load float, float* %334
%336 = fadd float %328, %335
store float %336, float* %7
%337 = load float**, float*** %4
%338 = load i32, i32* %5
%339 = sext i32 %338 to i64
%340 = getelementptr inbounds float*, float** %337, i64 %339
%341 = load float*, float** %340
%342 = getelementptr inbounds float, float* %341, i64 2
%343 = load float, float* %342
%344 = load float**, float*** %4
%345 = load i32, i32* %5
%346 = sext i32 %345 to i64
%347 = getelementptr inbounds float*, float** %344, i64 %346
%348 = load float*, float** %347
%349 = getelementptr inbounds float, float* %348, i64 5
%350 = load float, float* %349
%351 = fsub float %343, %350
store float %351, float* %9
%352 = load float**, float*** %4
%353 = load i32, i32* %5
%354 = sext i32 %353 to i64
%355 = getelementptr inbounds float*, float** %352, i64 %354
%356 = load float*, float** %355
%357 = getelementptr inbounds float, float* %356, i64 4
%358 = load float, float* %357
%359 = load float**, float*** %4
%360 = load i32, i32* %5
%361 = sext i32 %360 to i64
%362 = getelementptr inbounds float*, float** %359, i64 %361
%363 = load float*, float** %362
%364 = getelementptr inbounds float, float* %363, i64 3
%365 = load float, float* %364
%366 = fadd float %358, %365
store float %366, float* %10
%367 = load float**, float*** %4
%368 = load i32, i32* %5
%369 = sext i32 %368 to i64
%370 = getelementptr inbounds float*, float** %367, i64 %369
%371 = load float*, float** %370
%372 = getelementptr inbounds float, float* %371, i64 4
%373 = load float, float* %372
%374 = load float**, float*** %4
%375 = load i32, i32* %5
%376 = sext i32 %375 to i64
%377 = getelementptr inbounds float*, float** %374, i64 %376
%378 = load float*, float** %377
%379 = getelementptr inbounds float, float* %378, i64 3
%380 = load float, float* %379
%381 = fsub float %373, %380
store float %381, float* %12
%382 = load float**, float*** %4
%383 = load i32, i32* %5
%384 = sext i32 %383 to i64
%385 = getelementptr inbounds float*, float** %382, i64 %384
%386 = load float*, float** %385
%387 = getelementptr inbounds float, float* %386, i64 6
%388 = load float, float* %387
%389 = load float**, float*** %4
%390 = load i32, i32* %5
%391 = sext i32 %390 to i64
%392 = getelementptr inbounds float*, float** %389, i64 %391
%393 = load float*, float** %392
%394 = getelementptr inbounds float, float* %393, i64 1
%395 = load float, float* %394
%396 = fadd float %388, %395
store float %396, float* %11
%397 = load float**, float*** %4
%398 = load i32, i32* %5
%399 = sext i32 %398 to i64
%400 = getelementptr inbounds float*, float** %397, i64 %399
%401 = load float*, float** %400
%402 = getelementptr inbounds float, float* %401, i64 6
%403 = load float, float* %402
%404 = load float**, float*** %4
%405 = load i32, i32* %5
%406 = sext i32 %405 to i64
%407 = getelementptr inbounds float*, float** %404, i64 %406
%408 = load float*, float** %407
%409 = getelementptr inbounds float, float* %408, i64 1
%410 = load float, float* %409
%411 = fsub float %403, %410
store float %411, float* %13
%412 = load float, float* %6
%413 = load float, float* %10
%414 = fadd float %412, %413
store float %414, float* %14
%415 = load float, float* %7
%416 = load float, float* %11
%417 = fadd float %415, %416
store float %417, float* %15
%418 = load float, float* %14
%419 = load float, float* %15
%420 = fadd float %418, %419
%421 = fpext float %420 to double
%422 = fmul double 0x3FD6A09E667F3BCD, %421
%423 = fptrunc double %422 to float
%424 = load float**, float*** %4
%425 = load i32, i32* %5
%426 = sext i32 %425 to i64
%427 = getelementptr inbounds float*, float** %424, i64 %426
%428 = load float*, float** %427
%429 = getelementptr inbounds float, float* %428, i64 0
store float %423, float* %429
%430 = load float, float* %14
%431 = load float, float* %15
%432 = fsub float %430, %431
%433 = fpext float %432 to double
%434 = fmul double 0x3FD6A09E667F3BCD, %433
%435 = fptrunc double %434 to float
%436 = load float**, float*** %4
%437 = load i32, i32* %5
%438 = sext i32 %437 to i64
%439 = getelementptr inbounds float*, float** %436, i64 %438
%440 = load float*, float** %439
%441 = getelementptr inbounds float, float* %440, i64 4
store float %435, float* %441
%442 = load float, float* %6
%443 = load float, float* %10
%444 = fsub float %442, %443
store float %444, float* %14
%445 = load float, float* %7
%446 = load float, float* %11
%447 = fsub float %445, %446
store float %447, float* %15
%448 = load float, float* %14
%449 = fpext float %448 to double
%450 = load float, float* %15
%451 = fpext float %450 to double
%452 = fmul double 0x3FC87DE2A6AEA963, %451
%453 = fneg double %452
%454 = call double @llvm.fmuladd.f64(double 0x3FDD906BCF328D46, double %449, double %453)
%455 = fptrunc double %454 to float
%456 = load float**, float*** %4
%457 = load i32, i32* %5
%458 = sext i32 %457 to i64
%459 = getelementptr inbounds float*, float** %456, i64 %458
%460 = load float*, float** %459
%461 = getelementptr inbounds float, float* %460, i64 2
store float %455, float* %461
%462 = load float, float* %15
%463 = fpext float %462 to double
%464 = load float, float* %14
%465 = fpext float %464 to double
%466 = fmul double 0x3FC87DE2A6AEA963, %465
%467 = call double @llvm.fmuladd.f64(double 0x3FDD906BCF328D46, double %463, double %466)
%468 = fptrunc double %467 to float
%469 = load float**, float*** %4
%470 = load i32, i32* %5
%471 = sext i32 %470 to i64
%472 = getelementptr inbounds float*, float** %469, i64 %471
%473 = load float*, float** %472
%474 = getelementptr inbounds float, float* %473, i64 6
store float %468, float* %474
%475 = load float, float* %9
%476 = load float, float* %13
%477 = fsub float %475, %476
%478 = fpext float %477 to double
%479 = fmul double 0x3FE6A09E667F3BCD, %478
%480 = fptrunc double %479 to float
store float %480, float* %14
%481 = load float, float* %9
%482 = load float, float* %13
%483 = fadd float %481, %482
%484 = fpext float %483 to double
%485 = fmul double 0x3FE6A09E667F3BCD, %484
%486 = fptrunc double %485 to float
store float %486, float* %9
%487 = load float, float* %9
%488 = load float, float* %12
%489 = fsub float %487, %488
store float %489, float* %13
%490 = load float, float* %12
%491 = load float, float* %9
%492 = fadd float %491, %490
store float %492, float* %9
%493 = load float, float* %8
%494 = load float, float* %14
%495 = fsub float %493, %494
store float %495, float* %12
%496 = load float, float* %14
%497 = load float, float* %8
%498 = fadd float %497, %496
store float %498, float* %8
%499 = load float, float* %8
%500 = fpext float %499 to double
%501 = load float, float* %9
%502 = fpext float %501 to double
%503 = fmul double 0x3FB8F8B83C69A60B, %502
%504 = fneg double %503
%505 = call double @llvm.fmuladd.f64(double 0x3FDF6297CFF75CB0, double %500, double %504)
%506 = fptrunc double %505 to float
%507 = load float**, float*** %4
%508 = load i32, i32* %5
%509 = sext i32 %508 to i64
%510 = getelementptr inbounds float*, float** %507, i64 %509
%511 = load float*, float** %510
%512 = getelementptr inbounds float, float* %511, i64 1
store float %506, float* %512
%513 = load float, float* %9
%514 = fpext float %513 to double
%515 = load float, float* %8
%516 = fpext float %515 to double
%517 = fmul double 0x3FB8F8B83C69A60B, %516
%518 = call double @llvm.fmuladd.f64(double 0x3FDF6297CFF75CB0, double %514, double %517)
%519 = fptrunc double %518 to float
%520 = load float**, float*** %4
%521 = load i32, i32* %5
%522 = sext i32 %521 to i64
%523 = getelementptr inbounds float*, float** %520, i64 %522
%524 = load float*, float** %523
%525 = getelementptr inbounds float, float* %524, i64 7
store float %519, float* %525
%526 = load float, float* %12
%527 = fpext float %526 to double
%528 = load float, float* %13
%529 = fpext float %528 to double
%530 = fmul double 0x3FD1C73B39AE68C8, %529
%531 = fneg double %530
%532 = call double @llvm.fmuladd.f64(double 0x3FDA9B66290EA1A3, double %527, double %531)
%533 = fptrunc double %532 to float
%534 = load float**, float*** %4
%535 = load i32, i32* %5
%536 = sext i32 %535 to i64
%537 = getelementptr inbounds float*, float** %534, i64 %536
%538 = load float*, float** %537
%539 = getelementptr inbounds float, float* %538, i64 3
store float %533, float* %539
%540 = load float, float* %13
%541 = fpext float %540 to double
%542 = load float, float* %12
%543 = fpext float %542 to double
%544 = fmul double 0x3FD1C73B39AE68C8, %543
%545 = call double @llvm.fmuladd.f64(double 0x3FDA9B66290EA1A3, double %541, double %544)
%546 = fptrunc double %545 to float
%547 = load float**, float*** %4
%548 = load i32, i32* %5
%549 = sext i32 %548 to i64
%550 = getelementptr inbounds float*, float** %547, i64 %549
%551 = load float*, float** %550
%552 = getelementptr inbounds float, float* %551, i64 5
store float %546, float* %552
br label %553
553: ; preds = %291
%554 = load i32, i32* %5
%555 = add nsw i32 %554, 1
store i32 %555, i32* %5
br label %288
556: ; preds = %288
br label %1096
557: ; preds = %2
store i32 0, i32* %5
br label %558
558: ; preds = %823, %557
%559 = load i32, i32* %5
%560 = icmp sle i32 %559, 7
br i1 %560, label %561, label %826
561: ; preds = %558
%562 = load float**, float*** %4
%563 = getelementptr inbounds float*, float** %562, i64 1
%564 = load float*, float** %563
%565 = load i32, i32* %5
%566 = sext i32 %565 to i64
%567 = getelementptr inbounds float, float* %564, i64 %566
%568 = load float, float* %567
%569 = fpext float %568 to double
%570 = load float**, float*** %4
%571 = getelementptr inbounds float*, float** %570, i64 7
%572 = load float*, float** %571
%573 = load i32, i32* %5
%574 = sext i32 %573 to i64
%575 = getelementptr inbounds float, float* %572, i64 %574
%576 = load float, float* %575
%577 = fpext float %576 to double
%578 = fmul double 0x3FB8F8B83C69A60B, %577
%579 = call double @llvm.fmuladd.f64(double 0x3FDF6297CFF75CB0, double %569, double %578)
%580 = fptrunc double %579 to float
store float %580, float* %8
%581 = load float**, float*** %4
%582 = getelementptr inbounds float*, float** %581, i64 7
%583 = load float*, float** %582
%584 = load i32, i32* %5
%585 = sext i32 %584 to i64
%586 = getelementptr inbounds float, float* %583, i64 %585
%587 = load float, float* %586
%588 = fpext float %587 to double
%589 = load float**, float*** %4
%590 = getelementptr inbounds float*, float** %589, i64 1
%591 = load float*, float** %590
%592 = load i32, i32* %5
%593 = sext i32 %592 to i64
%594 = getelementptr inbounds float, float* %591, i64 %593
%595 = load float, float* %594
%596 = fpext float %595 to double
%597 = fmul double 0x3FB8F8B83C69A60B, %596
%598 = fneg double %597
%599 = call double @llvm.fmuladd.f64(double 0x3FDF6297CFF75CB0, double %588, double %598)
%600 = fptrunc double %599 to float
store float %600, float* %9
%601 = load float**, float*** %4
%602 = getelementptr inbounds float*, float** %601, i64 3
%603 = load float*, float** %602
%604 = load i32, i32* %5
%605 = sext i32 %604 to i64
%606 = getelementptr inbounds float, float* %603, i64 %605
%607 = load float, float* %606
%608 = fpext float %607 to double
%609 = load float**, float*** %4
%610 = getelementptr inbounds float*, float** %609, i64 5
%611 = load float*, float** %610
%612 = load i32, i32* %5
%613 = sext i32 %612 to i64
%614 = getelementptr inbounds float, float* %611, i64 %613
%615 = load float, float* %614
%616 = fpext float %615 to double
%617 = fmul double 0x3FD1C73B39AE68C8, %616
%618 = call double @llvm.fmuladd.f64(double 0x3FDA9B66290EA1A3, double %608, double %617)
%619 = fptrunc double %618 to float
store float %619, float* %12
%620 = load float**, float*** %4
%621 = getelementptr inbounds float*, float** %620, i64 5
%622 = load float*, float** %621
%623 = load i32, i32* %5
%624 = sext i32 %623 to i64
%625 = getelementptr inbounds float, float* %622, i64 %624
%626 = load float, float* %625
%627 = fpext float %626 to double
%628 = load float**, float*** %4
%629 = getelementptr inbounds float*, float** %628, i64 3
%630 = load float*, float** %629
%631 = load i32, i32* %5
%632 = sext i32 %631 to i64
%633 = getelementptr inbounds float, float* %630, i64 %632
%634 = load float, float* %633
%635 = fpext float %634 to double
%636 = fmul double 0x3FD1C73B39AE68C8, %635
%637 = fneg double %636
%638 = call double @llvm.fmuladd.f64(double 0x3FDA9B66290EA1A3, double %627, double %637)
%639 = fptrunc double %638 to float
store float %639, float* %13
%640 = load float, float* %8
%641 = load float, float* %12
%642 = fsub float %640, %641
store float %642, float* %14
%643 = load float, float* %9
%644 = load float, float* %13
%645 = fadd float %643, %644
store float %645, float* %15
%646 = load float, float* %12
%647 = load float, float* %8
%648 = fadd float %647, %646
store float %648, float* %8
%649 = load float, float* %9
%650 = load float, float* %13
%651 = fsub float %650, %649
store float %651, float* %13
%652 = load float, float* %14
%653 = load float, float* %15
%654 = fadd float %652, %653
%655 = fpext float %654 to double
%656 = fmul double 0x3FE6A09E667F3BCD, %655
%657 = fptrunc double %656 to float
store float %657, float* %9
%658 = load float, float* %14
%659 = load float, float* %15
%660 = fsub float %658, %659
%661 = fpext float %660 to double
%662 = fmul double 0x3FE6A09E667F3BCD, %661
%663 = fptrunc double %662 to float
store float %663, float* %12
%664 = load float**, float*** %4
%665 = getelementptr inbounds float*, float** %664, i64 2
%666 = load float*, float** %665
%667 = load i32, i32* %5
%668 = sext i32 %667 to i64
%669 = getelementptr inbounds float, float* %666, i64 %668
%670 = load float, float* %669
%671 = fpext float %670 to double
%672 = load float**, float*** %4
%673 = getelementptr inbounds float*, float** %672, i64 6
%674 = load float*, float** %673
%675 = load i32, i32* %5
%676 = sext i32 %675 to i64
%677 = getelementptr inbounds float, float* %674, i64 %676
%678 = load float, float* %677
%679 = fpext float %678 to double
%680 = fmul double 0x3FC87DE2A6AEA963, %679
%681 = call double @llvm.fmuladd.f64(double 0x3FDD906BCF328D46, double %671, double %680)
%682 = fptrunc double %681 to float
store float %682, float* %14
%683 = load float**, float*** %4
%684 = getelementptr inbounds float*, float** %683, i64 6
%685 = load float*, float** %684
%686 = load i32, i32* %5
%687 = sext i32 %686 to i64
%688 = getelementptr inbounds float, float* %685, i64 %687
%689 = load float, float* %688
%690 = fpext float %689 to double
%691 = load float**, float*** %4
%692 = getelementptr inbounds float*, float** %691, i64 2
%693 = load float*, float** %692
%694 = load i32, i32* %5
%695 = sext i32 %694 to i64
%696 = getelementptr inbounds float, float* %693, i64 %695
%697 = load float, float* %696
%698 = fpext float %697 to double
%699 = fmul double 0x3FC87DE2A6AEA963, %698
%700 = fneg double %699
%701 = call double @llvm.fmuladd.f64(double 0x3FDD906BCF328D46, double %690, double %700)
%702 = fptrunc double %701 to float
store float %702, float* %15
%703 = load float**, float*** %4
%704 = getelementptr inbounds float*, float** %703, i64 0
%705 = load float*, float** %704
%706 = load i32, i32* %5
%707 = sext i32 %706 to i64
%708 = getelementptr inbounds float, float* %705, i64 %707
%709 = load float, float* %708
%710 = load float**, float*** %4
%711 = getelementptr inbounds float*, float** %710, i64 4
%712 = load float*, float** %711
%713 = load i32, i32* %5
%714 = sext i32 %713 to i64
%715 = getelementptr inbounds float, float* %712, i64 %714
%716 = load float, float* %715
%717 = fadd float %709, %716
%718 = fpext float %717 to double
%719 = fmul double 0x3FD6A09E667F3BCD, %718
%720 = fptrunc double %719 to float
store float %720, float* %6
%721 = load float**, float*** %4
%722 = getelementptr inbounds float*, float** %721, i64 0
%723 = load float*, float** %722
%724 = load i32, i32* %5
%725 = sext i32 %724 to i64
%726 = getelementptr inbounds float, float* %723, i64 %725
%727 = load float, float* %726
%728 = load float**, float*** %4
%729 = getelementptr inbounds float*, float** %728, i64 4
%730 = load float*, float** %729
%731 = load i32, i32* %5
%732 = sext i32 %731 to i64
%733 = getelementptr inbounds float, float* %730, i64 %732
%734 = load float, float* %733
%735 = fsub float %727, %734
%736 = fpext float %735 to double
%737 = fmul double 0x3FD6A09E667F3BCD, %736
%738 = fptrunc double %737 to float
store float %738, float* %7
%739 = load float, float* %6
%740 = load float, float* %14
%741 = fsub float %739, %740
store float %741, float* %10
%742 = load float, float* %7
%743 = load float, float* %15
%744 = fsub float %742, %743
store float %744, float* %11
%745 = load float, float* %14
%746 = load float, float* %6
%747 = fadd float %746, %745
store float %747, float* %6
%748 = load float, float* %15
%749 = load float, float* %7
%750 = fadd float %749, %748
store float %750, float* %7
%751 = load float, float* %6
%752 = load float, float* %8
%753 = fadd float %751, %752
%754 = load float**, float*** %4
%755 = getelementptr inbounds float*, float** %754, i64 0
%756 = load float*, float** %755
%757 = load i32, i32* %5
%758 = sext i32 %757 to i64
%759 = getelementptr inbounds float, float* %756, i64 %758
store float %753, float* %759
%760 = load float, float* %6
%761 = load float, float* %8
%762 = fsub float %760, %761
%763 = load float**, float*** %4
%764 = getelementptr inbounds float*, float** %763, i64 7
%765 = load float*, float** %764
%766 = load i32, i32* %5
%767 = sext i32 %766 to i64
%768 = getelementptr inbounds float, float* %765, i64 %767
store float %762, float* %768
%769 = load float, float* %7
%770 = load float, float* %9
%771 = fadd float %769, %770
%772 = load float**, float*** %4
%773 = getelementptr inbounds float*, float** %772, i64 2
%774 = load float*, float** %773
%775 = load i32, i32* %5
%776 = sext i32 %775 to i64
%777 = getelementptr inbounds float, float* %774, i64 %776
store float %771, float* %777
%778 = load float, float* %7
%779 = load float, float* %9
%780 = fsub float %778, %779
%781 = load float**, float*** %4
%782 = getelementptr inbounds float*, float** %781, i64 5
%783 = load float*, float** %782
%784 = load i32, i32* %5
%785 = sext i32 %784 to i64
%786 = getelementptr inbounds float, float* %783, i64 %785
store float %780, float* %786
%787 = load float, float* %10
%788 = load float, float* %13
%789 = fsub float %787, %788
%790 = load float**, float*** %4
%791 = getelementptr inbounds float*, float** %790, i64 4
%792 = load float*, float** %791
%793 = load i32, i32* %5
%794 = sext i32 %793 to i64
%795 = getelementptr inbounds float, float* %792, i64 %794
store float %789, float* %795
%796 = load float, float* %10
%797 = load float, float* %13
%798 = fadd float %796, %797
%799 = load float**, float*** %4
%800 = getelementptr inbounds float*, float** %799, i64 3
%801 = load float*, float** %800
%802 = load i32, i32* %5
%803 = sext i32 %802 to i64
%804 = getelementptr inbounds float, float* %801, i64 %803
store float %798, float* %804
%805 = load float, float* %11
%806 = load float, float* %12
%807 = fsub float %805, %806
%808 = load float**, float*** %4
%809 = getelementptr inbounds float*, float** %808, i64 6
%810 = load float*, float** %809
%811 = load i32, i32* %5
%812 = sext i32 %811 to i64
%813 = getelementptr inbounds float, float* %810, i64 %812
store float %807, float* %813
%814 = load float, float* %11
%815 = load float, float* %12
%816 = fadd float %814, %815
%817 = load float**, float*** %4
%818 = getelementptr inbounds float*, float** %817, i64 1
%819 = load float*, float** %818
%820 = load i32, i32* %5
%821 = sext i32 %820 to i64
%822 = getelementptr inbounds float, float* %819, i64 %821
store float %816, float* %822
br label %823
823: ; preds = %561
%824 = load i32, i32* %5
%825 = add nsw i32 %824, 1
store i32 %825, i32* %5
br label %558
826: ; preds = %558
store i32 0, i32* %5
br label %827
827: ; preds = %1092, %826
%828 = load i32, i32* %5
%829 = icmp sle i32 %828, 7
br i1 %829, label %830, label %1095
830: ; preds = %827
%831 = load float**, float*** %4
%832 = load i32, i32* %5
%833 = sext i32 %832 to i64
%834 = getelementptr inbounds float*, float** %831, i64 %833
%835 = load float*, float** %834
%836 = getelementptr inbounds float, float* %835, i64 1
%837 = load float, float* %836
%838 = fpext float %837 to double
%839 = load float**, float*** %4
%840 = load i32, i32* %5
%841 = sext i32 %840 to i64
%842 = getelementptr inbounds float*, float** %839, i64 %841
%843 = load float*, float** %842
%844 = getelementptr inbounds float, float* %843, i64 7
%845 = load float, float* %844
%846 = fpext float %845 to double
%847 = fmul double 0x3FB8F8B83C69A60B, %846
%848 = call double @llvm.fmuladd.f64(double 0x3FDF6297CFF75CB0, double %838, double %847)
%849 = fptrunc double %848 to float
store float %849, float* %8
%850 = load float**, float*** %4
%851 = load i32, i32* %5
%852 = sext i32 %851 to i64
%853 = getelementptr inbounds float*, float** %850, i64 %852
%854 = load float*, float** %853
%855 = getelementptr inbounds float, float* %854, i64 7
%856 = load float, float* %855
%857 = fpext float %856 to double
%858 = load float**, float*** %4
%859 = load i32, i32* %5
%860 = sext i32 %859 to i64
%861 = getelementptr inbounds float*, float** %858, i64 %860
%862 = load float*, float** %861
%863 = getelementptr inbounds float, float* %862, i64 1
%864 = load float, float* %863
%865 = fpext float %864 to double
%866 = fmul double 0x3FB8F8B83C69A60B, %865
%867 = fneg double %866
%868 = call double @llvm.fmuladd.f64(double 0x3FDF6297CFF75CB0, double %857, double %867)
%869 = fptrunc double %868 to float
store float %869, float* %9
%870 = load float**, float*** %4
%871 = load i32, i32* %5
%872 = sext i32 %871 to i64
%873 = getelementptr inbounds float*, float** %870, i64 %872
%874 = load float*, float** %873
%875 = getelementptr inbounds float, float* %874, i64 3
%876 = load float, float* %875
%877 = fpext float %876 to double
%878 = load float**, float*** %4
%879 = load i32, i32* %5
%880 = sext i32 %879 to i64
%881 = getelementptr inbounds float*, float** %878, i64 %880
%882 = load float*, float** %881
%883 = getelementptr inbounds float, float* %882, i64 5
%884 = load float, float* %883
%885 = fpext float %884 to double
%886 = fmul double 0x3FD1C73B39AE68C8, %885
%887 = call double @llvm.fmuladd.f64(double 0x3FDA9B66290EA1A3, double %877, double %886)
%888 = fptrunc double %887 to float
store float %888, float* %12
%889 = load float**, float*** %4
%890 = load i32, i32* %5
%891 = sext i32 %890 to i64
%892 = getelementptr inbounds float*, float** %889, i64 %891
%893 = load float*, float** %892
%894 = getelementptr inbounds float, float* %893, i64 5
%895 = load float, float* %894
%896 = fpext float %895 to double
%897 = load float**, float*** %4
%898 = load i32, i32* %5
%899 = sext i32 %898 to i64
%900 = getelementptr inbounds float*, float** %897, i64 %899
%901 = load float*, float** %900
%902 = getelementptr inbounds float, float* %901, i64 3
%903 = load float, float* %902
%904 = fpext float %903 to double
%905 = fmul double 0x3FD1C73B39AE68C8, %904
%906 = fneg double %905
%907 = call double @llvm.fmuladd.f64(double 0x3FDA9B66290EA1A3, double %896, double %906)
%908 = fptrunc double %907 to float
store float %908, float* %13
%909 = load float, float* %8
%910 = load float, float* %12
%911 = fsub float %909, %910
store float %911, float* %14
%912 = load float, float* %9
%913 = load float, float* %13
%914 = fadd float %912, %913
store float %914, float* %15
%915 = load float, float* %12
%916 = load float, float* %8
%917 = fadd float %916, %915
store float %917, float* %8
%918 = load float, float* %9
%919 = load float, float* %13
%920 = fsub float %919, %918
store float %920, float* %13
%921 = load float, float* %14
%922 = load float, float* %15
%923 = fadd float %921, %922
%924 = fpext float %923 to double
%925 = fmul double 0x3FE6A09E667F3BCD, %924
%926 = fptrunc double %925 to float
store float %926, float* %9
%927 = load float, float* %14
%928 = load float, float* %15
%929 = fsub float %927, %928
%930 = fpext float %929 to double
%931 = fmul double 0x3FE6A09E667F3BCD, %930
%932 = fptrunc double %931 to float
store float %932, float* %12
%933 = load float**, float*** %4
%934 = load i32, i32* %5
%935 = sext i32 %934 to i64
%936 = getelementptr inbounds float*, float** %933, i64 %935
%937 = load float*, float** %936
%938 = getelementptr inbounds float, float* %937, i64 2
%939 = load float, float* %938
%940 = fpext float %939 to double
%941 = load float**, float*** %4
%942 = load i32, i32* %5
%943 = sext i32 %942 to i64
%944 = getelementptr inbounds float*, float** %941, i64 %943
%945 = load float*, float** %944
%946 = getelementptr inbounds float, float* %945, i64 6
%947 = load float, float* %946
%948 = fpext float %947 to double
%949 = fmul double 0x3FC87DE2A6AEA963, %948
%950 = call double @llvm.fmuladd.f64(double 0x3FDD906BCF328D46, double %940, double %949)
%951 = fptrunc double %950 to float
store float %951, float* %14
%952 = load float**, float*** %4
%953 = load i32, i32* %5
%954 = sext i32 %953 to i64
%955 = getelementptr inbounds float*, float** %952, i64 %954
%956 = load float*, float** %955
%957 = getelementptr inbounds float, float* %956, i64 6
%958 = load float, float* %957
%959 = fpext float %958 to double
%960 = load float**, float*** %4
%961 = load i32, i32* %5
%962 = sext i32 %961 to i64
%963 = getelementptr inbounds float*, float** %960, i64 %962
%964 = load float*, float** %963
%965 = getelementptr inbounds float, float* %964, i64 2
%966 = load float, float* %965
%967 = fpext float %966 to double
%968 = fmul double 0x3FC87DE2A6AEA963, %967
%969 = fneg double %968
%970 = call double @llvm.fmuladd.f64(double 0x3FDD906BCF328D46, double %959, double %969)
%971 = fptrunc double %970 to float
store float %971, float* %15
%972 = load float**, float*** %4
%973 = load i32, i32* %5
%974 = sext i32 %973 to i64
%975 = getelementptr inbounds float*, float** %972, i64 %974
%976 = load float*, float** %975
%977 = getelementptr inbounds float, float* %976, i64 0
%978 = load float, float* %977
%979 = load float**, float*** %4
%980 = load i32, i32* %5
%981 = sext i32 %980 to i64
%982 = getelementptr inbounds float*, float** %979, i64 %981
%983 = load float*, float** %982
%984 = getelementptr inbounds float, float* %983, i64 4
%985 = load float, float* %984
%986 = fadd float %978, %985
%987 = fpext float %986 to double
%988 = fmul double 0x3FD6A09E667F3BCD, %987
%989 = fptrunc double %988 to float
store float %989, float* %6
%990 = load float**, float*** %4
%991 = load i32, i32* %5
%992 = sext i32 %991 to i64
%993 = getelementptr inbounds float*, float** %990, i64 %992
%994 = load float*, float** %993
%995 = getelementptr inbounds float, float* %994, i64 0
%996 = load float, float* %995
%997 = load float**, float*** %4
%998 = load i32, i32* %5
%999 = sext i32 %998 to i64
%1000 = getelementptr inbounds float*, float** %997, i64 %999
%1001 = load float*, float** %1000
%1002 = getelementptr inbounds float, float* %1001, i64 4
%1003 = load float, float* %1002
%1004 = fsub float %996, %1003
%1005 = fpext float %1004 to double
%1006 = fmul double 0x3FD6A09E667F3BCD, %1005
%1007 = fptrunc double %1006 to float
store float %1007, float* %7
%1008 = load float, float* %6
%1009 = load float, float* %14
%1010 = fsub float %1008, %1009
store float %1010, float* %10
%1011 = load float, float* %7
%1012 = load float, float* %15
%1013 = fsub float %1011, %1012
store float %1013, float* %11
%1014 = load float, float* %14
%1015 = load float, float* %6
%1016 = fadd float %1015, %1014
store float %1016, float* %6
%1017 = load float, float* %15
%1018 = load float, float* %7
%1019 = fadd float %1018, %1017
store float %1019, float* %7
%1020 = load float, float* %6
%1021 = load float, float* %8
%1022 = fadd float %1020, %1021
%1023 = load float**, float*** %4
%1024 = load i32, i32* %5
%1025 = sext i32 %1024 to i64
%1026 = getelementptr inbounds float*, float** %1023, i64 %1025
%1027 = load float*, float** %1026
%1028 = getelementptr inbounds float, float* %1027, i64 0
store float %1022, float* %1028
%1029 = load float, float* %6
%1030 = load float, float* %8
%1031 = fsub float %1029, %1030
%1032 = load float**, float*** %4
%1033 = load i32, i32* %5
%1034 = sext i32 %1033 to i64
%1035 = getelementptr inbounds float*, float** %1032, i64 %1034
%1036 = load float*, float** %1035
%1037 = getelementptr inbounds float, float* %1036, i64 7
store float %1031, float* %1037
%1038 = load float, float* %7
%1039 = load float, float* %9
%1040 = fadd float %1038, %1039
%1041 = load float**, float*** %4
%1042 = load i32, i32* %5
%1043 = sext i32 %1042 to i64
%1044 = getelementptr inbounds float*, float** %1041, i64 %1043
%1045 = load float*, float** %1044
%1046 = getelementptr inbounds float, float* %1045, i64 2
store float %1040, float* %1046
%1047 = load float, float* %7
%1048 = load float, float* %9
%1049 = fsub float %1047, %1048
%1050 = load float**, float*** %4
%1051 = load i32, i32* %5
%1052 = sext i32 %1051 to i64
%1053 = getelementptr inbounds float*, float** %1050, i64 %1052
%1054 = load float*, float** %1053
%1055 = getelementptr inbounds float, float* %1054, i64 5
store float %1049, float* %1055
%1056 = load float, float* %10
%1057 = load float, float* %13
%1058 = fsub float %1056, %1057
%1059 = load float**, float*** %4
%1060 = load i32, i32* %5
%1061 = sext i32 %1060 to i64
%1062 = getelementptr inbounds float*, float** %1059, i64 %1061
%1063 = load float*, float** %1062
%1064 = getelementptr inbounds float, float* %1063, i64 4
store float %1058, float* %1064
%1065 = load float, float* %10
%1066 = load float, float* %13
%1067 = fadd float %1065, %1066
%1068 = load float**, float*** %4
%1069 = load i32, i32* %5
%1070 = sext i32 %1069 to i64
%1071 = getelementptr inbounds float*, float** %1068, i64 %1070
%1072 = load float*, float** %1071
%1073 = getelementptr inbounds float, float* %1072, i64 3
store float %1067, float* %1073
%1074 = load float, float* %11
%1075 = load float, float* %12
%1076 = fsub float %1074, %1075
%1077 = load float**, float*** %4
%1078 = load i32, i32* %5
%1079 = sext i32 %1078 to i64
%1080 = getelementptr inbounds float*, float** %1077, i64 %1079
%1081 = load float*, float** %1080
%1082 = getelementptr inbounds float, float* %1081, i64 6
store float %1076, float* %1082
%1083 = load float, float* %11
%1084 = load float, float* %12
%1085 = fadd float %1083, %1084
%1086 = load float**, float*** %4
%1087 = load i32, i32* %5
%1088 = sext i32 %1087 to i64
%1089 = getelementptr inbounds float*, float** %1086, i64 %1088
%1090 = load float*, float** %1089
%1091 = getelementptr inbounds float, float* %1090, i64 1
store float %1085, float* %1091
br label %1092
1092: ; preds = %830
%1093 = load i32, i32* %5
%1094 = add nsw i32 %1093, 1
store i32 %1094, i32* %5
br label %827
1095: ; preds = %827
br label %1096
1096: ; preds = %1095, %556
ret void
}

LLVM IR (-O2):
define void @ddct8x8s(i32 %0, float** nocapture %1) {
%3 = icmp slt i32 %0, 0
br i1 %3, label %20, label %4
4: ; preds = %2
%5 = getelementptr inbounds float*, float** %1, i64 1
%6 = load float*, float** %5
%7 = getelementptr inbounds float*, float** %1, i64 7
%8 = load float*, float** %7
%9 = getelementptr inbounds float*, float** %1, i64 3
%10 = load float*, float** %9
%11 = getelementptr inbounds float*, float** %1, i64 5
%12 = load float*, float** %11
%13 = getelementptr inbounds float*, float** %1, i64 2
%14 = load float*, float** %13
%15 = getelementptr inbounds float*, float** %1, i64 6
%16 = load float*, float** %15
%17 = load float*, float** %1
%18 = getelementptr inbounds float*, float** %1, i64 4
%19 = load float*, float** %18
br label %195
20: ; preds = %2
%21 = load float*, float** %1
%22 = getelementptr inbounds float*, float** %1, i64 7
%23 = load float*, float** %22
%24 = getelementptr inbounds float*, float** %1, i64 2
%25 = load float*, float** %24
%26 = getelementptr inbounds float*, float** %1, i64 5
%27 = load float*, float** %26
%28 = getelementptr inbounds float*, float** %1, i64 4
%29 = load float*, float** %28
%30 = getelementptr inbounds float*, float** %1, i64 3
%31 = load float*, float** %30
%32 = getelementptr inbounds float*, float** %1, i64 6
%33 = load float*, float** %32
%34 = getelementptr inbounds float*, float** %1, i64 1
%35 = load float*, float** %34
br label %36
36: ; preds = %20, %36
%37 = phi i64 [ 0, %20 ], [ %110, %36 ]
%38 = getelementptr inbounds float, float* %21, i64 %37
%39 = load float, float* %38
%40 = getelementptr inbounds float, float* %23, i64 %37
%41 = load float, float* %40
%42 = fadd float %39, %41
%43 = fsub float %39, %41
%44 = getelementptr inbounds float, float* %25, i64 %37
%45 = load float, float* %44
%46 = getelementptr inbounds float, float* %27, i64 %37
%47 = load float, float* %46
%48 = fadd float %45, %47
%49 = fsub float %45, %47
%50 = getelementptr inbounds float, float* %29, i64 %37
%51 = load float, float* %50
%52 = getelementptr inbounds float, float* %31, i64 %37
%53 = load float, float* %52
%54 = fadd float %51, %53
%55 = fsub float %51, %53
%56 = getelementptr inbounds float, float* %33, i64 %37
%57 = load float, float* %56
%58 = getelementptr inbounds float, float* %35, i64 %37
%59 = load float, float* %58
%60 = fadd float %57, %59
%61 = fsub float %57, %59
%62 = fadd float %42, %54
%63 = fadd float %48, %60
%64 = fadd float %62, %63
%65 = fpext float %64 to double
%66 = fmul double %65, 0x3FD6A09E667F3BCD
%67 = fptrunc double %66 to float
store float %67, float* %38
%68 = fsub float %62, %63
%69 = fpext float %68 to double
%70 = fmul double %69, 0x3FD6A09E667F3BCD
%71 = fptrunc double %70 to float
store float %71, float* %50
%72 = fsub float %42, %54
%73 = fsub float %48, %60
%74 = fpext float %72 to double
%75 = fpext float %73 to double
%76 = fmul double %75, 0xBFC87DE2A6AEA963
%77 = tail call double @llvm.fmuladd.f64(double %74, double 0x3FDD906BCF328D46, double %76)
%78 = fptrunc double %77 to float
store float %78, float* %44
%79 = fmul double %74, 0x3FC87DE2A6AEA963
%80 = tail call double @llvm.fmuladd.f64(double %75, double 0x3FDD906BCF328D46, double %79)
%81 = fptrunc double %80 to float
store float %81, float* %56
%82 = fsub float %49, %61
%83 = fpext float %82 to double
%84 = fmul double %83, 0x3FE6A09E667F3BCD
%85 = fptrunc double %84 to float
%86 = fadd float %49, %61
%87 = fpext float %86 to double
%88 = fmul double %87, 0x3FE6A09E667F3BCD
%89 = fptrunc double %88 to float
%90 = fsub float %89, %55
%91 = fadd float %55, %89
%92 = fsub float %43, %85
%93 = fadd float %43, %85
%94 = fpext float %93 to double
%95 = fpext float %91 to double
%96 = fmul double %95, 0xBFB8F8B83C69A60B
%97 = tail call double @llvm.fmuladd.f64(double %94, double 0x3FDF6297CFF75CB0, double %96)
%98 = fptrunc double %97 to float
store float %98, float* %58
%99 = fmul double %94, 0x3FB8F8B83C69A60B
%100 = tail call double @llvm.fmuladd.f64(double %95, double 0x3FDF6297CFF75CB0, double %99)
%101 = fptrunc double %100 to float
store float %101, float* %40
%102 = fpext float %92 to double
%103 = fpext float %90 to double
%104 = fmul double %103, 0xBFD1C73B39AE68C8
%105 = tail call double @llvm.fmuladd.f64(double %102, double 0x3FDA9B66290EA1A3, double %104)
%106 = fptrunc double %105 to float
store float %106, float* %52
%107 = fmul double %102, 0x3FD1C73B39AE68C8
%108 = tail call double @llvm.fmuladd.f64(double %103, double 0x3FDA9B66290EA1A3, double %107)
%109 = fptrunc double %108 to float
store float %109, float* %46
%110 = add nuw nsw i64 %37, 1
%111 = icmp eq i64 %110, 8
br i1 %111, label %112, label %36
112: ; preds = %36, %192
%113 = phi float* [ %194, %192 ], [ %21, %36 ]
%114 = phi i64 [ %190, %192 ], [ 0, %36 ]
%115 = load float, float* %113
%116 = getelementptr inbounds float, float* %113, i64 7
%117 = load float, float* %116
%118 = fadd float %115, %117
%119 = fsub float %115, %117
%120 = getelementptr inbounds float, float* %113, i64 2
%121 = load float, float* %120
%122 = getelementptr inbounds float, float* %113, i64 5
%123 = load float, float* %122
%124 = fadd float %121, %123
%125 = fsub float %121, %123
%126 = getelementptr inbounds float, float* %113, i64 4
%127 = load float, float* %126
%128 = getelementptr inbounds float, float* %113, i64 3
%129 = load float, float* %128
%130 = fadd float %127, %129
%131 = fsub float %127, %129
%132 = getelementptr inbounds float, float* %113, i64 6
%133 = load float, float* %132
%134 = getelementptr inbounds float, float* %113, i64 1
%135 = load float, float* %134
%136 = fadd float %133, %135
%137 = fsub float %133, %135
%138 = fadd float %118, %130
%139 = fadd float %124, %136
%140 = fadd float %138, %139
%141 = fpext float %140 to double
%142 = fmul double %141, 0x3FD6A09E667F3BCD
%143 = fsub float %138, %139
%144 = fpext float %143 to double
%145 = fmul double %144, 0x3FD6A09E667F3BCD
%146 = fsub float %118, %130
%147 = fsub float %124, %136
%148 = fpext float %146 to double
%149 = fpext float %147 to double
%150 = fmul double %149, 0xBFC87DE2A6AEA963
%151 = tail call double @llvm.fmuladd.f64(double %148, double 0x3FDD906BCF328D46, double %150)
%152 = fmul double %148, 0x3FC87DE2A6AEA963
%153 = tail call double @llvm.fmuladd.f64(double %149, double 0x3FDD906BCF328D46, double %152)
%154 = fsub float %125, %137
%155 = fpext float %154 to double
%156 = fmul double %155, 0x3FE6A09E667F3BCD
%157 = fptrunc double %156 to float
%158 = fadd float %125, %137
%159 = fpext float %158 to double
%160 = fmul double %159, 0x3FE6A09E667F3BCD
%161 = fptrunc double %160 to float
%162 = fsub float %161, %131
%163 = fadd float %131, %161
%164 = fsub float %119, %157
%165 = fadd float %119, %157
%166 = fpext float %165 to double
%167 = fpext float %163 to double
%168 = fmul double %167, 0xBFB8F8B83C69A60B
%169 = tail call double @llvm.fmuladd.f64(double %166, double 0x3FDF6297CFF75CB0, double %168)
%170 = fmul double %166, 0x3FB8F8B83C69A60B
%171 = tail call double @llvm.fmuladd.f64(double %167, double 0x3FDF6297CFF75CB0, double %170)
%172 = fpext float %164 to double
%173 = fpext float %162 to double
%174 = fmul double %173, 0xBFD1C73B39AE68C8
%175 = tail call double @llvm.fmuladd.f64(double %172, double 0x3FDA9B66290EA1A3, double %174)
%176 = insertelement <4 x double> poison, double %142, i64 0
%177 = insertelement <4 x double> %176, double %169, i64 1
%178 = insertelement <4 x double> %177, double %151, i64 2
%179 = insertelement <4 x double> %178, double %175, i64 3
%180 = fptrunc <4 x double> %179 to <4 x float>
%181 = bitcast float* %113 to <4 x float>*
store <4 x float> %180, <4 x float>* %181
%182 = fmul double %172, 0x3FD1C73B39AE68C8
%183 = tail call double @llvm.fmuladd.f64(double %173, double 0x3FDA9B66290EA1A3, double %182)
%184 = insertelement <4 x double> poison, double %145, i64 0
%185 = insertelement <4 x double> %184, double %183, i64 1
%186 = insertelement <4 x double> %185, double %153, i64 2
%187 = insertelement <4 x double> %186, double %171, i64 3
%188 = fptrunc <4 x double> %187 to <4 x float>
%189 = bitcast float* %126 to <4 x float>*
store <4 x float> %188, <4 x float>* %189
%190 = add nuw nsw i64 %114, 1
%191 = icmp eq i64 %190, 8
br i1 %191, label %361, label %192
192: ; preds = %112
%193 = getelementptr inbounds float*, float** %1, i64 %190
%194 = load float*, float** %193
br label %112
195: ; preds = %4, %195
%196 = phi i64 [ 0, %4 ], [ %269, %195 ]
%197 = getelementptr inbounds float, float* %6, i64 %196
%198 = load float, float* %197
%199 = fpext float %198 to double
%200 = getelementptr inbounds float, float* %8, i64 %196
%201 = load float, float* %200
%202 = fpext float %201 to double
%203 = fmul double %202, 0x3FB8F8B83C69A60B
%204 = tail call double @llvm.fmuladd.f64(double %199, double 0x3FDF6297CFF75CB0, double %203)
%205 = fptrunc double %204 to float
%206 = fmul double %199, 0xBFB8F8B83C69A60B
%207 = tail call double @llvm.fmuladd.f64(double %202, double 0x3FDF6297CFF75CB0, double %206)
%208 = fptrunc double %207 to float
%209 = getelementptr inbounds float, float* %10, i64 %196
%210 = load float, float* %209
%211 = fpext float %210 to double
%212 = getelementptr inbounds float, float* %12, i64 %196
%213 = load float, float* %212
%214 = fpext float %213 to double
%215 = fmul double %214, 0x3FD1C73B39AE68C8
%216 = tail call double @llvm.fmuladd.f64(double %211, double 0x3FDA9B66290EA1A3, double %215)
%217 = fptrunc double %216 to float
%218 = fmul double %211, 0xBFD1C73B39AE68C8
%219 = tail call double @llvm.fmuladd.f64(double %214, double 0x3FDA9B66290EA1A3, double %218)
%220 = fptrunc double %219 to float
%221 = fsub float %205, %217
%222 = fadd float %208, %220
%223 = fadd float %205, %217
%224 = fsub float %220, %208
%225 = fadd float %222, %221
%226 = fpext float %225 to double
%227 = fmul double %226, 0x3FE6A09E667F3BCD
%228 = fptrunc double %227 to float
%229 = fsub float %221, %222
%230 = fpext float %229 to double
%231 = fmul double %230, 0x3FE6A09E667F3BCD
%232 = fptrunc double %231 to float
%233 = getelementptr inbounds float, float* %14, i64 %196
%234 = load float, float* %233
%235 = fpext float %234 to double
%236 = getelementptr inbounds float, float* %16, i64 %196
%237 = load float, float* %236
%238 = fpext float %237 to double
%239 = fmul double %238, 0x3FC87DE2A6AEA963
%240 = tail call double @llvm.fmuladd.f64(double %235, double 0x3FDD906BCF328D46, double %239)
%241 = fptrunc double %240 to float
%242 = fmul double %235, 0xBFC87DE2A6AEA963
%243 = tail call double @llvm.fmuladd.f64(double %238, double 0x3FDD906BCF328D46, double %242)
%244 = fptrunc double %243 to float
%245 = getelementptr inbounds float, float* %17, i64 %196
%246 = load float, float* %245
%247 = getelementptr inbounds float, float* %19, i64 %196
%248 = load float, float* %247
%249 = fadd float %246, %248
%250 = fpext float %249 to double
%251 = fmul double %250, 0x3FD6A09E667F3BCD
%252 = fptrunc double %251 to float
%253 = fsub float %246, %248
%254 = fpext float %253 to double
%255 = fmul double %254, 0x3FD6A09E667F3BCD
%256 = fptrunc double %255 to float
%257 = fsub float %252, %241
%258 = fsub float %256, %244
%259 = fadd float %241, %252
%260 = fadd float %244, %256
%261 = fadd float %223, %259
store float %261, float* %245
%262 = fsub float %259, %223
store float %262, float* %200
%263 = fadd float %260, %228
store float %263, float* %233
%264 = fsub float %260, %228
store float %264, float* %212
%265 = fsub float %257, %224
store float %265, float* %247
%266 = fadd float %224, %257
store float %266, float* %209
%267 = fsub float %258, %232
store float %267, float* %236
%268 = fadd float %258, %232
store float %268, float* %197
%269 = add nuw nsw i64 %196, 1
%270 = icmp eq i64 %269, 8
br i1 %270, label %271, label %195
271: ; preds = %195, %358
%272 = phi float* [ %360, %358 ], [ %17, %195 ]
%273 = phi i64 [ %356, %358 ], [ 0, %195 ]
%274 = getelementptr inbounds float, float* %272, i64 1
%275 = load float, float* %274
%276 = fpext float %275 to double
%277 = getelementptr inbounds float, float* %272, i64 7
%278 = load float, float* %277
%279 = fpext float %278 to double
%280 = fmul double %279, 0x3FB8F8B83C69A60B
%281 = tail call double @llvm.fmuladd.f64(double %276, double 0x3FDF6297CFF75CB0, double %280)
%282 = fptrunc double %281 to float
%283 = fmul double %276, 0xBFB8F8B83C69A60B
%284 = tail call double @llvm.fmuladd.f64(double %279, double 0x3FDF6297CFF75CB0, double %283)
%285 = fptrunc double %284 to float
%286 = getelementptr inbounds float, float* %272, i64 3
%287 = load float, float* %286
%288 = fpext float %287 to double
%289 = getelementptr inbounds float, float* %272, i64 5
%290 = load float, float* %289
%291 = fpext float %290 to double
%292 = fmul double %291, 0x3FD1C73B39AE68C8
%293 = tail call double @llvm.fmuladd.f64(double %288, double 0x3FDA9B66290EA1A3, double %292)
%294 = fptrunc double %293 to float
%295 = fmul double %288, 0xBFD1C73B39AE68C8
%296 = tail call double @llvm.fmuladd.f64(double %291, double 0x3FDA9B66290EA1A3, double %295)
%297 = fptrunc double %296 to float
%298 = fsub float %282, %294
%299 = fadd float %285, %297
%300 = fadd float %282, %294
%301 = fsub float %297, %285
%302 = insertelement <2 x float> poison, float %298, i64 0
%303 = shufflevector <2 x float> %302, <2 x float> poison, <2 x i32> zeroinitializer
%304 = insertelement <2 x float> poison, float %299, i64 0
%305 = shufflevector <2 x float> %304, <2 x float> poison, <2 x i32> zeroinitializer
%306 = fadd <2 x float> %303, %305
%307 = fsub <2 x float> %303, %305
%308 = shufflevector <2 x float> %306, <2 x float> %307, <2 x i32> <i32 0, i32 3>
%309 = fpext <2 x float> %308 to <2 x double>
%310 = fmul <2 x double> %309, <double 0x3FE6A09E667F3BCD, double 0x3FE6A09E667F3BCD>
%311 = fptrunc <2 x double> %310 to <2 x float>
%312 = getelementptr inbounds float, float* %272, i64 2
%313 = load float, float* %312
%314 = fpext float %313 to double
%315 = getelementptr inbounds float, float* %272, i64 6
%316 = load float, float* %315
%317 = fpext float %316 to double
%318 = fmul double %317, 0x3FC87DE2A6AEA963
%319 = tail call double @llvm.fmuladd.f64(double %314, double 0x3FDD906BCF328D46, double %318)
%320 = fmul double %314, 0xBFC87DE2A6AEA963
%321 = tail call double @llvm.fmuladd.f64(double %317, double 0x3FDD906BCF328D46, double %320)
%322 = load float, float* %272
%323 = getelementptr inbounds float, float* %272, i64 4
%324 = load float, float* %323
%325 = fadd float %322, %324
%326 = fpext float %325 to double
%327 = fmul double %326, 0x3FD6A09E667F3BCD
%328 = fsub float %322, %324
%329 = fpext float %328 to double
%330 = fmul double %329, 0x3FD6A09E667F3BCD
%331 = insertelement <4 x double> poison, double %327, i64 0
%332 = insertelement <4 x double> %331, double %321, i64 1
%333 = insertelement <4 x double> %332, double %330, i64 2
%334 = insertelement <4 x double> %333, double %319, i64 3
%335 = fptrunc <4 x double> %334 to <4 x float>
%336 = shufflevector <4 x float> %335, <4 x float> undef, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
%337 = fsub <4 x float> %335, %336
%338 = fadd <4 x float> %336, %335
%339 = shufflevector <4 x float> %337, <4 x float> %338, <4 x i32> <i32 0, i32 5, i32 2, i32 7>
%340 = extractelement <4 x float> %338, i64 3
%341 = fadd float %300, %340
store float %341, float* %272
%342 = extractelement <4 x float> %338, i64 1
%343 = extractelement <2 x float> %311, i64 0
%344 = fadd float %342, %343
store float %344, float* %312
%345 = extractelement <4 x float> %337, i64 0
%346 = fadd float %301, %345
store float %346, float* %286
%347 = insertelement <4 x float> poison, float %301, i64 0
%348 = shufflevector <2 x float> %311, <2 x float> poison, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
%349 = shufflevector <4 x float> %347, <4 x float> %348, <4 x i32> <i32 0, i32 4, i32 5, i32 undef>
%350 = insertelement <4 x float> %349, float %300, i64 3
%351 = fsub <4 x float> %339, %350
%352 = bitcast float* %323 to <4 x float>*
store <4 x float> %351, <4 x float>* %352
%353 = extractelement <4 x float> %337, i64 2
%354 = extractelement <2 x float> %311, i64 1
%355 = fadd float %353, %354
store float %355, float* %274
%356 = add nuw nsw i64 %273, 1
%357 = icmp eq i64 %356, 8
br i1 %357, label %361, label %358
358: ; preds = %271
%359 = getelementptr inbounds float*, float** %1, i64 %356
%360 = load float*, float** %359
br label %271
361: ; preds = %271, %112
ret void
}