void cftf162(double *a, double *w) {
  double wn4r, wk1r, wk1i, wk2r, wk2i, wk3r, wk3i, x0r, x0i, x1r, x1i, x2r, x2i,
      y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i, y4r, y4i, y5r, y5i, y6r, y6i, y7r,
      y7i, y8r, y8i, y9r, y9i, y10r, y10i, y11r, y11i, y12r, y12i, y13r, y13i,
      y14r, y14i, y15r, y15i;
  wn4r = w[1];
  wk1r = w[4];
  wk1i = w[5];
  wk3r = w[6];
  wk3i = w[7];
  wk2r = w[8];
  wk2i = w[9];
  x1r = a[0] - a[17];
  x1i = a[1] + a[16];
  x0r = a[8] - a[25];
  x0i = a[9] + a[24];
  x2r = wn4r * (x0r - x0i);
  x2i = wn4r * (x0i + x0r);
  y0r = x1r + x2r;
  y0i = x1i + x2i;
  y4r = x1r - x2r;
  y4i = x1i - x2i;
  x1r = a[0] + a[17];
  x1i = a[1] - a[16];
  x0r = a[8] + a[25];
  x0i = a[9] - a[24];
  x2r = wn4r * (x0r - x0i);
  x2i = wn4r * (x0i + x0r);
  y8r = x1r - x2i;
  y8i = x1i + x2r;
  y12r = x1r + x2i;
  y12i = x1i - x2r;
  x0r = a[2] - a[19];
  x0i = a[3] + a[18];
  x1r = wk1r * x0r - wk1i * x0i;
  x1i = wk1r * x0i + wk1i * x0r;
  x0r = a[10] - a[27];
  x0i = a[11] + a[26];
  x2r = wk3i * x0r - wk3r * x0i;
  x2i = wk3i * x0i + wk3r * x0r;
  y1r = x1r + x2r;
  y1i = x1i + x2i;
  y5r = x1r - x2r;
  y5i = x1i - x2i;
  x0r = a[2] + a[19];
  x0i = a[3] - a[18];
  x1r = wk3r * x0r - wk3i * x0i;
  x1i = wk3r * x0i + wk3i * x0r;
  x0r = a[10] + a[27];
  x0i = a[11] - a[26];
  x2r = wk1r * x0r + wk1i * x0i;
  x2i = wk1r * x0i - wk1i * x0r;
  y9r = x1r - x2r;
  y9i = x1i - x2i;
  y13r = x1r + x2r;
  y13i = x1i + x2i;
  x0r = a[4] - a[21];
  x0i = a[5] + a[20];
  x1r = wk2r * x0r - wk2i * x0i;
  x1i = wk2r * x0i + wk2i * x0r;
  x0r = a[12] - a[29];
  x0i = a[13] + a[28];
  x2r = wk2i * x0r - wk2r * x0i;
  x2i = wk2i * x0i + wk2r * x0r;
  y2r = x1r + x2r;
  y2i = x1i + x2i;
  y6r = x1r - x2r;
  y6i = x1i - x2i;
  x0r = a[4] + a[21];
  x0i = a[5] - a[20];
  x1r = wk2i * x0r - wk2r * x0i;
  x1i = wk2i * x0i + wk2r * x0r;
  x0r = a[12] + a[29];
  x0i = a[13] - a[28];
  x2r = wk2r * x0r - wk2i * x0i;
  x2i = wk2r * x0i + wk2i * x0r;
  y10r = x1r - x2r;
  y10i = x1i - x2i;
  y14r = x1r + x2r;
  y14i = x1i + x2i;
  x0r = a[6] - a[23];
  x0i = a[7] + a[22];
  x1r = wk3r * x0r - wk3i * x0i;
  x1i = wk3r * x0i + wk3i * x0r;
  x0r = a[14] - a[31];
  x0i = a[15] + a[30];
  x2r = wk1i * x0r - wk1r * x0i;
  x2i = wk1i * x0i + wk1r * x0r;
  y3r = x1r + x2r;
  y3i = x1i + x2i;
  y7r = x1r - x2r;
  y7i = x1i - x2i;
  x0r = a[6] + a[23];
  x0i = a[7] - a[22];
  x1r = wk1i * x0r + wk1r * x0i;
  x1i = wk1i * x0i - wk1r * x0r;
  x0r = a[14] + a[31];
  x0i = a[15] - a[30];
  x2r = wk3i * x0r - wk3r * x0i;
  x2i = wk3i * x0i + wk3r * x0r;
  y11r = x1r + x2r;
  y11i = x1i + x2i;
  y15r = x1r - x2r;
  y15i = x1i - x2i;
  x1r = y0r + y2r;
  x1i = y0i + y2i;
  x2r = y1r + y3r;
  x2i = y1i + y3i;
  a[0] = x1r + x2r;
  a[1] = x1i + x2i;
  a[2] = x1r - x2r;
  a[3] = x1i - x2i;
  x1r = y0r - y2r;
  x1i = y0i - y2i;
  x2r = y1r - y3r;
  x2i = y1i - y3i;
  a[4] = x1r - x2i;
  a[5] = x1i + x2r;
  a[6] = x1r + x2i;
  a[7] = x1i - x2r;
  x1r = y4r - y6i;
  x1i = y4i + y6r;
  x0r = y5r - y7i;
  x0i = y5i + y7r;
  x2r = wn4r * (x0r - x0i);
  x2i = wn4r * (x0i + x0r);
  a[8] = x1r + x2r;
  a[9] = x1i + x2i;
  a[10] = x1r - x2r;
  a[11] = x1i - x2i;
  x1r = y4r + y6i;
  x1i = y4i - y6r;
  x0r = y5r + y7i;
  x0i = y5i - y7r;
  x2r = wn4r * (x0r - x0i);
  x2i = wn4r * (x0i + x0r);
  a[12] = x1r - x2i;
  a[13] = x1i + x2r;
  a[14] = x1r + x2i;
  a[15] = x1i - x2r;
  x1r = y8r + y10r;
  x1i = y8i + y10i;
  x2r = y9r - y11r;
  x2i = y9i - y11i;
  a[16] = x1r + x2r;
  a[17] = x1i + x2i;
  a[18] = x1r - x2r;
  a[19] = x1i - x2i;
  x1r = y8r - y10r;
  x1i = y8i - y10i;
  x2r = y9r + y11r;
  x2i = y9i + y11i;
  a[20] = x1r - x2i;
  a[21] = x1i + x2r;
  a[22] = x1r + x2i;
  a[23] = x1i - x2r;
  x1r = y12r - y14i;
  x1i = y12i + y14r;
  x0r = y13r + y15i;
  x0i = y13i - y15r;
  x2r = wn4r * (x0r - x0i);
  x2i = wn4r * (x0i + x0r);
  a[24] = x1r + x2r;
  a[25] = x1i + x2i;
  a[26] = x1r - x2r;
  a[27] = x1i - x2i;
  x1r = y12r + y14i;
  x1i = y12i - y14r;
  x0r = y13r - y15i;
  x0i = y13i + y15r;
  x2r = wn4r * (x0r - x0i);
  x2i = wn4r * (x0i + x0r);
  a[28] = x1r - x2i;
  a[29] = x1i + x2r;
  a[30] = x1r + x2i;
  a[31] = x1i - x2r;
}


x86 assembly (clang, -O0):
<cftf162>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf8,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
movsd  %xmm0,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
movsd  %xmm0,-0x20(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x30(%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x38(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x88(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xc8(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xc0(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
subsd  -0x58(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
addsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x68(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x88(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xc8(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xc0(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
subsd  -0x58(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
addsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x98(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xd8(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xd0(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x98(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xd8(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xd0(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xa8(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xa0(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xe8(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xe0(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xa8(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xa0(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xe8(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xe0(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xb8(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xb0(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xf8(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xf0(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xb8(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xb0(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xf8(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xf0(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
addsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
addsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x70(%rbp)
movsd  -0x98(%rbp),%xmm0
ff
addsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x68(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x68(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x80(%rbp),%xmm0
subsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
subsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x70(%rbp)
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x68(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x60(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x68(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
subsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
subsd  -0x58(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
addsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0x68(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x68(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0xc8(%rbp),%xmm0
ff
subsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
subsd  -0x58(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
addsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0x68(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x60(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x68(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x78(%rax)
movsd  -0x100(%rbp),%xmm0
ff
addsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0x108(%rbp),%xmm0
ff
addsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
movsd  -0x110(%rbp),%xmm0
ff
subsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x70(%rbp)
movsd  -0x118(%rbp),%xmm0
ff
subsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x80(%rax)
movsd  -0x68(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x88(%rax)
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x90(%rax)
movsd  -0x68(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x98(%rax)
movsd  -0x100(%rbp),%xmm0
ff
subsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0x108(%rbp),%xmm0
ff
subsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
movsd  -0x110(%rbp),%xmm0
ff
addsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x70(%rbp)
movsd  -0x118(%rbp),%xmm0
ff
addsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xa0(%rax)
movsd  -0x68(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xa8(%rax)
movsd  -0x60(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xb0(%rax)
movsd  -0x68(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xb8(%rax)
movsd  -0x140(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0x148(%rbp),%xmm0
ff
addsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
addsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x158(%rbp),%xmm0
ff
subsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
subsd  -0x58(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
addsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xc0(%rax)
movsd  -0x68(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xc8(%rax)
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xd0(%rax)
movsd  -0x68(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xd8(%rax)
movsd  -0x140(%rbp),%xmm0
ff
addsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0x148(%rbp),%xmm0
ff
subsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x68(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
subsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x158(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
subsd  -0x58(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
addsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
subsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xe0(%rax)
movsd  -0x68(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xe8(%rax)
movsd  -0x60(%rbp),%xmm0
addsd  -0x78(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xf0(%rax)
movsd  -0x68(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xf8(%rax)
add    $0xf8,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cftf162>:
sub    $0x108,%rsp
movupd 0x80(%rdi),%xmm2
shufpd $0x1,%xmm2,%xmm2
movupd (%rdi),%xmm0
movupd 0x10(%rdi),%xmm1
movapd %xmm0,%xmm3
subpd  %xmm2,%xmm3
movapd %xmm3,0xf0(%rsp)
addpd  %xmm0,%xmm2
movapd %xmm2,0xe0(%rsp)
movsd  0x40(%rdi),%xmm0
movapd %xmm0,0x30(%rsp)
movsd  0xc8(%rdi),%xmm2
movsd  %xmm2,0x58(%rsp)
subsd  %xmm2,%xmm0
movsd  0x48(%rdi),%xmm2
movsd  %xmm2,0x50(%rsp)
movsd  0xc0(%rdi),%xmm3
movsd  %xmm3,0x48(%rsp)
addsd  %xmm3,%xmm2
movapd %xmm0,%xmm3
subsd  %xmm2,%xmm3
addsd  %xmm0,%xmm2
unpcklpd %xmm2,%xmm3
movapd %xmm3,0x20(%rsp)
movupd 0x90(%rdi),%xmm15
shufpd $0x1,%xmm15,%xmm15
movapd %xmm1,%xmm12
subpd  %xmm15,%xmm12
addpd  %xmm1,%xmm15
movsd  0x28(%rsi),%xmm10
movapd 0xe49(%rip),%xmm6
movapd %xmm10,%xmm1
xorpd  %xmm6,%xmm1
movapd %xmm15,%xmm4
shufpd $0x1,%xmm10,%xmm4
movapd %xmm10,-0x10(%rsp)
movupd 0x50(%rdi),%xmm3
movupd 0xd0(%rdi),%xmm5
shufpd $0x1,%xmm5,%xmm5
movapd %xmm3,%xmm2
subpd  %xmm5,%xmm2
addpd  %xmm3,%xmm5
movapd %xmm5,%xmm14
movsd  %xmm2,%xmm14
movsd  0x30(%rsi),%xmm9
movapd %xmm9,%xmm13
movapd %xmm9,-0x60(%rsp)
xorpd  %xmm6,%xmm13
movapd %xmm13,0x10(%rsp)
unpcklpd %xmm2,%xmm13
movapd %xmm2,%xmm7
shufpd $0x1,%xmm1,%xmm2
movapd %xmm2,(%rsp)
movapd %xmm1,%xmm2
unpcklpd %xmm12,%xmm2
mulpd  %xmm4,%xmm2
movapd %xmm12,%xmm1
movsd  %xmm15,%xmm1
movapd %xmm1,-0x20(%rsp)
movsd  0x38(%rsi),%xmm8
movapd %xmm8,%xmm1
xorpd  %xmm6,%xmm1
movapd %xmm1,%xmm3
movapd %xmm1,%xmm4
unpcklpd %xmm15,%xmm3
movsd  %xmm12,%xmm15
movsd  0x20(%rsi),%xmm1
movapd %xmm1,%xmm0
unpcklpd %xmm1,%xmm0
movapd %xmm0,-0x40(%rsp)
mulpd  %xmm0,%xmm15
addpd  %xmm2,%xmm15
movsd  %xmm5,%xmm7
movapd %xmm7,-0x30(%rsp)
unpcklpd %xmm5,%xmm10
movapd %xmm10,-0x50(%rsp)
shufpd $0x1,%xmm9,%xmm5
mulpd  %xmm5,%xmm13
movupd 0xb0(%rdi),%xmm9
shufpd $0x1,%xmm9,%xmm9
movupd 0x30(%rdi),%xmm0
movapd %xmm0,%xmm2
subpd  %xmm9,%xmm2
addpd  %xmm0,%xmm9
shufpd $0x1,%xmm8,%xmm12
movapd %xmm9,%xmm0
shufpd $0x1,%xmm8,%xmm0
movapd %xmm0,-0x70(%rsp)
movapd %xmm8,%xmm10
unpcklpd %xmm8,%xmm10
mulpd  %xmm10,%xmm14
addpd  %xmm13,%xmm14
movapd %xmm14,0x80(%rsp)
movapd %xmm3,%xmm7
mulpd  %xmm12,%xmm7
movupd 0xf0(%rdi),%xmm13
shufpd $0x1,%xmm13,%xmm13
movupd 0x70(%rdi),%xmm0
movapd %xmm0,%xmm11
subpd  %xmm13,%xmm11
addpd  %xmm0,%xmm13
movsd  0x48(%rsi),%xmm0
movapd %xmm0,0x60(%rsp)
xorpd  %xmm6,%xmm0
movapd %xmm0,0xb0(%rsp)
movsd  0x40(%rsi),%xmm0
movapd %xmm0,0xd0(%rsp)
xorpd  %xmm6,%xmm0
movapd %xmm0,0xc0(%rsp)
movapd %xmm1,%xmm8
xorpd  %xmm1,%xmm6
movapd %xmm13,%xmm12
shufpd $0x1,%xmm1,%xmm12
movapd %xmm2,%xmm5
movsd  %xmm9,%xmm5
unpcklpd %xmm9,%xmm8
movapd %xmm9,%xmm3
movsd  %xmm2,%xmm3
unpcklpd %xmm2,%xmm4
movapd %xmm4,-0x80(%rsp)
movapd %xmm11,%xmm4
movsd  %xmm13,%xmm4
movapd 0x10(%rsp),%xmm1
unpcklpd %xmm13,%xmm1
movsd  %xmm11,%xmm13
shufpd $0x1,%xmm6,%xmm2
unpcklpd %xmm11,%xmm6
movapd -0x60(%rsp),%xmm9
shufpd $0x1,%xmm9,%xmm11
unpcklpd %xmm9,%xmm9
movapd -0x20(%rsp),%xmm0
mulpd  %xmm9,%xmm0
addpd  %xmm7,%xmm0
movapd (%rsp),%xmm7
mulpd  -0x50(%rsp),%xmm7
movapd -0x30(%rsp),%xmm14
mulpd  -0x40(%rsp),%xmm14
addpd  %xmm7,%xmm14
movapd %xmm0,%xmm7
subpd  %xmm14,%xmm7
movapd %xmm7,0x10(%rsp)
addpd  %xmm0,%xmm14
movapd -0x80(%rsp),%xmm7
mulpd  -0x70(%rsp),%xmm7
movapd %xmm3,%xmm0
mulpd  %xmm9,%xmm0
addpd  %xmm7,%xmm0
mulpd  %xmm12,%xmm6
movapd -0x10(%rsp),%xmm3
unpcklpd %xmm3,%xmm3
mulpd  %xmm3,%xmm13
addpd  %xmm6,%xmm13
movapd %xmm13,-0x10(%rsp)
mulpd  %xmm8,%xmm2
mulpd  %xmm3,%xmm5
addpd  %xmm2,%xmm5
mulpd  %xmm11,%xmm1
mulpd  %xmm10,%xmm4
addpd  %xmm1,%xmm4
movapd %xmm4,%xmm1
movapd %xmm4,-0x60(%rsp)
movapd %xmm15,%xmm4
movapd 0x80(%rsp),%xmm6
subpd  %xmm6,%xmm15
movapd %xmm0,(%rsp)
subpd  %xmm13,%xmm0
movapd %xmm0,%xmm2
movapd %xmm0,-0x30(%rsp)
unpckhpd %xmm0,%xmm2
movapd %xmm15,%xmm3
subsd  %xmm2,%xmm3
movapd %xmm3,-0x20(%rsp)
addsd  %xmm15,%xmm2
unpckhpd %xmm15,%xmm15
movapd %xmm15,-0x40(%rsp)
subsd  %xmm0,%xmm15
movapd %xmm2,%xmm0
subsd  %xmm15,%xmm0
movapd %xmm0,%xmm3
addsd  %xmm2,%xmm15
movapd %xmm5,-0x50(%rsp)
subpd  %xmm1,%xmm5
unpcklpd %xmm14,%xmm0
subpd  %xmm5,%xmm0
movapd %xmm5,%xmm1
unpckhpd %xmm5,%xmm1
addpd  %xmm14,%xmm1
movsd  %xmm1,%xmm0
movapd %xmm0,%xmm2
movapd %xmm0,-0x70(%rsp)
movapd %xmm14,%xmm1
unpckhpd %xmm14,%xmm1
subpd  %xmm5,%xmm1
unpcklpd %xmm5,%xmm10
addpd  %xmm14,%xmm10
movsd  %xmm1,%xmm10
movapd 0xe0(%rsp),%xmm1
movapd %xmm1,%xmm5
movapd 0xf0(%rsp),%xmm0
movsd  %xmm0,%xmm5
movsd  0x8(%rsi),%xmm9
mulsd  %xmm9,%xmm3
movapd %xmm3,0x90(%rsp)
mulsd  %xmm9,%xmm15
movapd %xmm2,%xmm3
subpd  %xmm10,%xmm3
movapd %xmm9,%xmm2
mulsd  %xmm3,%xmm2
movapd %xmm2,-0x80(%rsp)
unpckhpd %xmm3,%xmm3
mulsd  %xmm9,%xmm3
movapd %xmm3,0xa0(%rsp)
unpcklpd %xmm9,%xmm9
movapd %xmm9,0x70(%rsp)
movapd 0x20(%rsp),%xmm2
mulpd  %xmm9,%xmm2
movapd %xmm5,%xmm11
addpd  %xmm2,%xmm11
subpd  %xmm2,%xmm5
movapd %xmm5,0x20(%rsp)
shufpd $0x2,%xmm0,%xmm1
movapd 0x30(%rsp),%xmm2
addsd  0x58(%rsp),%xmm2
movsd  0x50(%rsp),%xmm3
subsd  0x48(%rsp),%xmm3
movapd %xmm2,%xmm0
addsd  %xmm3,%xmm0
subsd  %xmm3,%xmm2
unpcklpd %xmm2,%xmm0
mulpd  %xmm9,%xmm0
movapd %xmm1,%xmm14
subpd  %xmm0,%xmm14
addpd  %xmm1,%xmm0
movapd %xmm0,%xmm13
movsd  %xmm14,%xmm13
shufpd $0x1,%xmm0,%xmm14
addpd  %xmm6,%xmm4
movapd %xmm4,0x30(%rsp)
movupd 0xa0(%rdi),%xmm0
shufpd $0x1,%xmm0,%xmm0
movupd 0x20(%rdi),%xmm1
movapd %xmm1,%xmm2
subpd  %xmm0,%xmm2
addpd  %xmm1,%xmm0
movapd %xmm0,%xmm3
shufpd $0x1,0x60(%rsp),%xmm3
movapd 0xb0(%rsp),%xmm9
movapd %xmm9,%xmm1
unpcklpd %xmm2,%xmm1
mulpd  %xmm3,%xmm1
movupd 0xe0(%rdi),%xmm3
shufpd $0x1,%xmm3,%xmm3
movupd 0x60(%rdi),%xmm7
movapd %xmm7,%xmm6
subpd  %xmm3,%xmm6
addpd  %xmm7,%xmm3
movapd %xmm2,%xmm7
movsd  %xmm0,%xmm7
movapd 0xc0(%rsp),%xmm12
movapd %xmm12,%xmm4
unpcklpd %xmm0,%xmm12
movsd  %xmm2,%xmm0
movapd %xmm3,%xmm5
movapd 0xd0(%rsp),%xmm8
shufpd $0x1,%xmm8,%xmm5
shufpd $0x1,%xmm8,%xmm2
unpcklpd %xmm8,%xmm8
mulpd  %xmm8,%xmm0
addpd  %xmm1,%xmm0
unpcklpd %xmm6,%xmm4
mulpd  %xmm5,%xmm4
movapd %xmm6,%xmm1
movsd  %xmm3,%xmm1
unpcklpd %xmm3,%xmm9
movsd  %xmm6,%xmm3
movapd 0x60(%rsp),%xmm5
shufpd $0x1,%xmm5,%xmm6
unpcklpd %xmm5,%xmm5
mulpd  %xmm5,%xmm3
addpd  %xmm4,%xmm3
movapd %xmm0,%xmm4
addpd  %xmm3,%xmm4
subpd  %xmm3,%xmm0
mulpd  %xmm2,%xmm12
mulpd  %xmm5,%xmm7
addpd  %xmm12,%xmm7
mulpd  %xmm6,%xmm9
mulpd  %xmm8,%xmm1
addpd  %xmm9,%xmm1
movapd %xmm7,%xmm2
subpd  %xmm1,%xmm2
addpd  %xmm7,%xmm1
movapd (%rsp),%xmm6
addpd  -0x10(%rsp),%xmm6
movapd -0x50(%rsp),%xmm9
addpd  -0x60(%rsp),%xmm9
movapd %xmm11,%xmm3
addpd  %xmm4,%xmm3
movapd 0x30(%rsp),%xmm7
movapd %xmm7,%xmm5
addpd  %xmm6,%xmm5
movapd %xmm6,%xmm8
movapd %xmm3,%xmm6
addpd  %xmm5,%xmm6
movupd %xmm6,(%rdi)
subpd  %xmm5,%xmm3
movupd %xmm3,0x10(%rdi)
subpd  %xmm4,%xmm11
subpd  %xmm8,%xmm7
shufpd $0x1,%xmm7,%xmm7
movapd %xmm11,%xmm3
subpd  %xmm7,%xmm3
addpd  %xmm11,%xmm7
movapd %xmm7,%xmm4
movsd  %xmm3,%xmm4
movupd %xmm4,0x20(%rdi)
shufpd $0x2,%xmm3,%xmm7
movupd %xmm7,0x30(%rdi)
shufpd $0x1,%xmm0,%xmm0
movapd 0x20(%rsp),%xmm4
movapd %xmm4,%xmm3
subpd  %xmm0,%xmm3
addpd  %xmm4,%xmm0
movapd -0x40(%rsp),%xmm6
addsd  -0x30(%rsp),%xmm6
movapd -0x20(%rsp),%xmm5
movapd %xmm5,%xmm4
subsd  %xmm6,%xmm4
addsd  %xmm5,%xmm6
unpcklpd %xmm6,%xmm4
movapd %xmm0,%xmm5
subsd  %xmm15,%xmm5
addsd  %xmm0,%xmm15
movsd  %xmm3,%xmm0
movapd 0x70(%rsp),%xmm7
mulpd  %xmm7,%xmm4
movapd %xmm0,%xmm6
addpd  %xmm4,%xmm6
movupd %xmm6,0x40(%rdi)
subpd  %xmm4,%xmm0
movupd %xmm0,0x50(%rdi)
unpckhpd %xmm3,%xmm3
movsd  %xmm5,0x60(%rdi)
movapd %xmm3,%xmm0
movapd 0x90(%rsp),%xmm4
addsd  %xmm4,%xmm0
movsd  %xmm0,0x68(%rdi)
movsd  %xmm15,0x70(%rdi)
subsd  %xmm4,%xmm3
movsd  %xmm3,0x78(%rdi)
movapd %xmm13,%xmm0
addpd  %xmm2,%xmm0
movapd 0x10(%rsp),%xmm5
movapd %xmm5,%xmm3
movapd %xmm9,%xmm6
subpd  %xmm9,%xmm3
movapd %xmm0,%xmm4
addpd  %xmm3,%xmm4
movupd %xmm4,0x80(%rdi)
subpd  %xmm3,%xmm0
movupd %xmm0,0x90(%rdi)
subpd  %xmm2,%xmm13
addpd  %xmm5,%xmm6
shufpd $0x1,%xmm6,%xmm6
movapd %xmm13,%xmm0
subpd  %xmm6,%xmm0
addpd  %xmm13,%xmm6
movapd %xmm6,%xmm2
movsd  %xmm0,%xmm2
movupd %xmm2,0xa0(%rdi)
shufpd $0x2,%xmm0,%xmm6
movupd %xmm6,0xb0(%rdi)
movapd %xmm14,%xmm0
subpd  %xmm1,%xmm0
movapd %xmm0,%xmm2
unpckhpd %xmm0,%xmm2
movapd %xmm2,%xmm3
movapd -0x80(%rsp),%xmm4
addsd  %xmm4,%xmm3
movsd  %xmm3,0xc0(%rdi)
addpd  %xmm14,%xmm1
addpd  -0x70(%rsp),%xmm10
mulpd  %xmm7,%xmm10
movapd %xmm1,%xmm3
addsd  %xmm10,%xmm3
movsd  %xmm3,0xc8(%rdi)
subsd  %xmm4,%xmm2
movsd  %xmm2,0xd0(%rdi)
movapd %xmm1,%xmm2
subpd  %xmm10,%xmm2
movupd %xmm2,0xd8(%rdi)
movsd  %xmm0,%xmm1
movapd 0xa0(%rsp),%xmm2
movsd  %xmm2,%xmm10
addpd  %xmm1,%xmm10
movupd %xmm10,0xe8(%rdi)
subsd  %xmm2,%xmm0
movsd  %xmm0,0xf8(%rdi)
add    $0x108,%rsp
ret

LLVM IR (-O0):
define void @cftf162(double* %0, double* %1) {
%3 = alloca double*
%4 = alloca double*
%5 = alloca double
%6 = alloca double
%7 = alloca double
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
%44 = alloca double
%45 = alloca double
%46 = alloca double
%47 = alloca double
%48 = alloca double
%49 = alloca double
store double* %0, double** %3
store double* %1, double** %4
%50 = load double*, double** %4
%51 = getelementptr inbounds double, double* %50, i64 1
%52 = load double, double* %51
store double %52, double* %5
%53 = load double*, double** %4
%54 = getelementptr inbounds double, double* %53, i64 4
%55 = load double, double* %54
store double %55, double* %6
%56 = load double*, double** %4
%57 = getelementptr inbounds double, double* %56, i64 5
%58 = load double, double* %57
store double %58, double* %7
%59 = load double*, double** %4
%60 = getelementptr inbounds double, double* %59, i64 6
%61 = load double, double* %60
store double %61, double* %10
%62 = load double*, double** %4
%63 = getelementptr inbounds double, double* %62, i64 7
%64 = load double, double* %63
store double %64, double* %11
%65 = load double*, double** %4
%66 = getelementptr inbounds double, double* %65, i64 8
%67 = load double, double* %66
store double %67, double* %8
%68 = load double*, double** %4
%69 = getelementptr inbounds double, double* %68, i64 9
%70 = load double, double* %69
store double %70, double* %9
%71 = load double*, double** %3
%72 = getelementptr inbounds double, double* %71, i64 0
%73 = load double, double* %72
%74 = load double*, double** %3
%75 = getelementptr inbounds double, double* %74, i64 17
%76 = load double, double* %75
%77 = fsub double %73, %76
store double %77, double* %14
%78 = load double*, double** %3
%79 = getelementptr inbounds double, double* %78, i64 1
%80 = load double, double* %79
%81 = load double*, double** %3
%82 = getelementptr inbounds double, double* %81, i64 16
%83 = load double, double* %82
%84 = fadd double %80, %83
store double %84, double* %15
%85 = load double*, double** %3
%86 = getelementptr inbounds double, double* %85, i64 8
%87 = load double, double* %86
%88 = load double*, double** %3
%89 = getelementptr inbounds double, double* %88, i64 25
%90 = load double, double* %89
%91 = fsub double %87, %90
store double %91, double* %12
%92 = load double*, double** %3
%93 = getelementptr inbounds double, double* %92, i64 9
%94 = load double, double* %93
%95 = load double*, double** %3
%96 = getelementptr inbounds double, double* %95, i64 24
%97 = load double, double* %96
%98 = fadd double %94, %97
store double %98, double* %13
%99 = load double, double* %5
%100 = load double, double* %12
%101 = load double, double* %13
%102 = fsub double %100, %101
%103 = fmul double %99, %102
store double %103, double* %16
%104 = load double, double* %5
%105 = load double, double* %13
%106 = load double, double* %12
%107 = fadd double %105, %106
%108 = fmul double %104, %107
store double %108, double* %17
%109 = load double, double* %14
%110 = load double, double* %16
%111 = fadd double %109, %110
store double %111, double* %18
%112 = load double, double* %15
%113 = load double, double* %17
%114 = fadd double %112, %113
store double %114, double* %19
%115 = load double, double* %14
%116 = load double, double* %16
%117 = fsub double %115, %116
store double %117, double* %26
%118 = load double, double* %15
%119 = load double, double* %17
%120 = fsub double %118, %119
store double %120, double* %27
%121 = load double*, double** %3
%122 = getelementptr inbounds double, double* %121, i64 0
%123 = load double, double* %122
%124 = load double*, double** %3
%125 = getelementptr inbounds double, double* %124, i64 17
%126 = load double, double* %125
%127 = fadd double %123, %126
store double %127, double* %14
%128 = load double*, double** %3
%129 = getelementptr inbounds double, double* %128, i64 1
%130 = load double, double* %129
%131 = load double*, double** %3
%132 = getelementptr inbounds double, double* %131, i64 16
%133 = load double, double* %132
%134 = fsub double %130, %133
store double %134, double* %15
%135 = load double*, double** %3
%136 = getelementptr inbounds double, double* %135, i64 8
%137 = load double, double* %136
%138 = load double*, double** %3
%139 = getelementptr inbounds double, double* %138, i64 25
%140 = load double, double* %139
%141 = fadd double %137, %140
store double %141, double* %12
%142 = load double*, double** %3
%143 = getelementptr inbounds double, double* %142, i64 9
%144 = load double, double* %143
%145 = load double*, double** %3
%146 = getelementptr inbounds double, double* %145, i64 24
%147 = load double, double* %146
%148 = fsub double %144, %147
store double %148, double* %13
%149 = load double, double* %5
%150 = load double, double* %12
%151 = load double, double* %13
%152 = fsub double %150, %151
%153 = fmul double %149, %152
store double %153, double* %16
%154 = load double, double* %5
%155 = load double, double* %13
%156 = load double, double* %12
%157 = fadd double %155, %156
%158 = fmul double %154, %157
store double %158, double* %17
%159 = load double, double* %14
%160 = load double, double* %17
%161 = fsub double %159, %160
store double %161, double* %34
%162 = load double, double* %15
%163 = load double, double* %16
%164 = fadd double %162, %163
store double %164, double* %35
%165 = load double, double* %14
%166 = load double, double* %17
%167 = fadd double %165, %166
store double %167, double* %42
%168 = load double, double* %15
%169 = load double, double* %16
%170 = fsub double %168, %169
store double %170, double* %43
%171 = load double*, double** %3
%172 = getelementptr inbounds double, double* %171, i64 2
%173 = load double, double* %172
%174 = load double*, double** %3
%175 = getelementptr inbounds double, double* %174, i64 19
%176 = load double, double* %175
%177 = fsub double %173, %176
store double %177, double* %12
%178 = load double*, double** %3
%179 = getelementptr inbounds double, double* %178, i64 3
%180 = load double, double* %179
%181 = load double*, double** %3
%182 = getelementptr inbounds double, double* %181, i64 18
%183 = load double, double* %182
%184 = fadd double %180, %183
store double %184, double* %13
%185 = load double, double* %6
%186 = load double, double* %12
%187 = load double, double* %7
%188 = load double, double* %13
%189 = fmul double %187, %188
%190 = fneg double %189
%191 = call double @llvm.fmuladd.f64(double %185, double %186, double %190)
store double %191, double* %14
%192 = load double, double* %6
%193 = load double, double* %13
%194 = load double, double* %7
%195 = load double, double* %12
%196 = fmul double %194, %195
%197 = call double @llvm.fmuladd.f64(double %192, double %193, double %196)
store double %197, double* %15
%198 = load double*, double** %3
%199 = getelementptr inbounds double, double* %198, i64 10
%200 = load double, double* %199
%201 = load double*, double** %3
%202 = getelementptr inbounds double, double* %201, i64 27
%203 = load double, double* %202
%204 = fsub double %200, %203
store double %204, double* %12
%205 = load double*, double** %3
%206 = getelementptr inbounds double, double* %205, i64 11
%207 = load double, double* %206
%208 = load double*, double** %3
%209 = getelementptr inbounds double, double* %208, i64 26
%210 = load double, double* %209
%211 = fadd double %207, %210
store double %211, double* %13
%212 = load double, double* %11
%213 = load double, double* %12
%214 = load double, double* %10
%215 = load double, double* %13
%216 = fmul double %214, %215
%217 = fneg double %216
%218 = call double @llvm.fmuladd.f64(double %212, double %213, double %217)
store double %218, double* %16
%219 = load double, double* %11
%220 = load double, double* %13
%221 = load double, double* %10
%222 = load double, double* %12
%223 = fmul double %221, %222
%224 = call double @llvm.fmuladd.f64(double %219, double %220, double %223)
store double %224, double* %17
%225 = load double, double* %14
%226 = load double, double* %16
%227 = fadd double %225, %226
store double %227, double* %20
%228 = load double, double* %15
%229 = load double, double* %17
%230 = fadd double %228, %229
store double %230, double* %21
%231 = load double, double* %14
%232 = load double, double* %16
%233 = fsub double %231, %232
store double %233, double* %28
%234 = load double, double* %15
%235 = load double, double* %17
%236 = fsub double %234, %235
store double %236, double* %29
%237 = load double*, double** %3
%238 = getelementptr inbounds double, double* %237, i64 2
%239 = load double, double* %238
%240 = load double*, double** %3
%241 = getelementptr inbounds double, double* %240, i64 19
%242 = load double, double* %241
%243 = fadd double %239, %242
store double %243, double* %12
%244 = load double*, double** %3
%245 = getelementptr inbounds double, double* %244, i64 3
%246 = load double, double* %245
%247 = load double*, double** %3
%248 = getelementptr inbounds double, double* %247, i64 18
%249 = load double, double* %248
%250 = fsub double %246, %249
store double %250, double* %13
%251 = load double, double* %10
%252 = load double, double* %12
%253 = load double, double* %11
%254 = load double, double* %13
%255 = fmul double %253, %254
%256 = fneg double %255
%257 = call double @llvm.fmuladd.f64(double %251, double %252, double %256)
store double %257, double* %14
%258 = load double, double* %10
%259 = load double, double* %13
%260 = load double, double* %11
%261 = load double, double* %12
%262 = fmul double %260, %261
%263 = call double @llvm.fmuladd.f64(double %258, double %259, double %262)
store double %263, double* %15
%264 = load double*, double** %3
%265 = getelementptr inbounds double, double* %264, i64 10
%266 = load double, double* %265
%267 = load double*, double** %3
%268 = getelementptr inbounds double, double* %267, i64 27
%269 = load double, double* %268
%270 = fadd double %266, %269
store double %270, double* %12
%271 = load double*, double** %3
%272 = getelementptr inbounds double, double* %271, i64 11
%273 = load double, double* %272
%274 = load double*, double** %3
%275 = getelementptr inbounds double, double* %274, i64 26
%276 = load double, double* %275
%277 = fsub double %273, %276
store double %277, double* %13
%278 = load double, double* %6
%279 = load double, double* %12
%280 = load double, double* %7
%281 = load double, double* %13
%282 = fmul double %280, %281
%283 = call double @llvm.fmuladd.f64(double %278, double %279, double %282)
store double %283, double* %16
%284 = load double, double* %6
%285 = load double, double* %13
%286 = load double, double* %7
%287 = load double, double* %12
%288 = fmul double %286, %287
%289 = fneg double %288
%290 = call double @llvm.fmuladd.f64(double %284, double %285, double %289)
store double %290, double* %17
%291 = load double, double* %14
%292 = load double, double* %16
%293 = fsub double %291, %292
store double %293, double* %36
%294 = load double, double* %15
%295 = load double, double* %17
%296 = fsub double %294, %295
store double %296, double* %37
%297 = load double, double* %14
%298 = load double, double* %16
%299 = fadd double %297, %298
store double %299, double* %44
%300 = load double, double* %15
%301 = load double, double* %17
%302 = fadd double %300, %301
store double %302, double* %45
%303 = load double*, double** %3
%304 = getelementptr inbounds double, double* %303, i64 4
%305 = load double, double* %304
%306 = load double*, double** %3
%307 = getelementptr inbounds double, double* %306, i64 21
%308 = load double, double* %307
%309 = fsub double %305, %308
store double %309, double* %12
%310 = load double*, double** %3
%311 = getelementptr inbounds double, double* %310, i64 5
%312 = load double, double* %311
%313 = load double*, double** %3
%314 = getelementptr inbounds double, double* %313, i64 20
%315 = load double, double* %314
%316 = fadd double %312, %315
store double %316, double* %13
%317 = load double, double* %8
%318 = load double, double* %12
%319 = load double, double* %9
%320 = load double, double* %13
%321 = fmul double %319, %320
%322 = fneg double %321
%323 = call double @llvm.fmuladd.f64(double %317, double %318, double %322)
store double %323, double* %14
%324 = load double, double* %8
%325 = load double, double* %13
%326 = load double, double* %9
%327 = load double, double* %12
%328 = fmul double %326, %327
%329 = call double @llvm.fmuladd.f64(double %324, double %325, double %328)
store double %329, double* %15
%330 = load double*, double** %3
%331 = getelementptr inbounds double, double* %330, i64 12
%332 = load double, double* %331
%333 = load double*, double** %3
%334 = getelementptr inbounds double, double* %333, i64 29
%335 = load double, double* %334
%336 = fsub double %332, %335
store double %336, double* %12
%337 = load double*, double** %3
%338 = getelementptr inbounds double, double* %337, i64 13
%339 = load double, double* %338
%340 = load double*, double** %3
%341 = getelementptr inbounds double, double* %340, i64 28
%342 = load double, double* %341
%343 = fadd double %339, %342
store double %343, double* %13
%344 = load double, double* %9
%345 = load double, double* %12
%346 = load double, double* %8
%347 = load double, double* %13
%348 = fmul double %346, %347
%349 = fneg double %348
%350 = call double @llvm.fmuladd.f64(double %344, double %345, double %349)
store double %350, double* %16
%351 = load double, double* %9
%352 = load double, double* %13
%353 = load double, double* %8
%354 = load double, double* %12
%355 = fmul double %353, %354
%356 = call double @llvm.fmuladd.f64(double %351, double %352, double %355)
store double %356, double* %17
%357 = load double, double* %14
%358 = load double, double* %16
%359 = fadd double %357, %358
store double %359, double* %22
%360 = load double, double* %15
%361 = load double, double* %17
%362 = fadd double %360, %361
store double %362, double* %23
%363 = load double, double* %14
%364 = load double, double* %16
%365 = fsub double %363, %364
store double %365, double* %30
%366 = load double, double* %15
%367 = load double, double* %17
%368 = fsub double %366, %367
store double %368, double* %31
%369 = load double*, double** %3
%370 = getelementptr inbounds double, double* %369, i64 4
%371 = load double, double* %370
%372 = load double*, double** %3
%373 = getelementptr inbounds double, double* %372, i64 21
%374 = load double, double* %373
%375 = fadd double %371, %374
store double %375, double* %12
%376 = load double*, double** %3
%377 = getelementptr inbounds double, double* %376, i64 5
%378 = load double, double* %377
%379 = load double*, double** %3
%380 = getelementptr inbounds double, double* %379, i64 20
%381 = load double, double* %380
%382 = fsub double %378, %381
store double %382, double* %13
%383 = load double, double* %9
%384 = load double, double* %12
%385 = load double, double* %8
%386 = load double, double* %13
%387 = fmul double %385, %386
%388 = fneg double %387
%389 = call double @llvm.fmuladd.f64(double %383, double %384, double %388)
store double %389, double* %14
%390 = load double, double* %9
%391 = load double, double* %13
%392 = load double, double* %8
%393 = load double, double* %12
%394 = fmul double %392, %393
%395 = call double @llvm.fmuladd.f64(double %390, double %391, double %394)
store double %395, double* %15
%396 = load double*, double** %3
%397 = getelementptr inbounds double, double* %396, i64 12
%398 = load double, double* %397
%399 = load double*, double** %3
%400 = getelementptr inbounds double, double* %399, i64 29
%401 = load double, double* %400
%402 = fadd double %398, %401
store double %402, double* %12
%403 = load double*, double** %3
%404 = getelementptr inbounds double, double* %403, i64 13
%405 = load double, double* %404
%406 = load double*, double** %3
%407 = getelementptr inbounds double, double* %406, i64 28
%408 = load double, double* %407
%409 = fsub double %405, %408
store double %409, double* %13
%410 = load double, double* %8
%411 = load double, double* %12
%412 = load double, double* %9
%413 = load double, double* %13
%414 = fmul double %412, %413
%415 = fneg double %414
%416 = call double @llvm.fmuladd.f64(double %410, double %411, double %415)
store double %416, double* %16
%417 = load double, double* %8
%418 = load double, double* %13
%419 = load double, double* %9
%420 = load double, double* %12
%421 = fmul double %419, %420
%422 = call double @llvm.fmuladd.f64(double %417, double %418, double %421)
store double %422, double* %17
%423 = load double, double* %14
%424 = load double, double* %16
%425 = fsub double %423, %424
store double %425, double* %38
%426 = load double, double* %15
%427 = load double, double* %17
%428 = fsub double %426, %427
store double %428, double* %39
%429 = load double, double* %14
%430 = load double, double* %16
%431 = fadd double %429, %430
store double %431, double* %46
%432 = load double, double* %15
%433 = load double, double* %17
%434 = fadd double %432, %433
store double %434, double* %47
%435 = load double*, double** %3
%436 = getelementptr inbounds double, double* %435, i64 6
%437 = load double, double* %436
%438 = load double*, double** %3
%439 = getelementptr inbounds double, double* %438, i64 23
%440 = load double, double* %439
%441 = fsub double %437, %440
store double %441, double* %12
%442 = load double*, double** %3
%443 = getelementptr inbounds double, double* %442, i64 7
%444 = load double, double* %443
%445 = load double*, double** %3
%446 = getelementptr inbounds double, double* %445, i64 22
%447 = load double, double* %446
%448 = fadd double %444, %447
store double %448, double* %13
%449 = load double, double* %10
%450 = load double, double* %12
%451 = load double, double* %11
%452 = load double, double* %13
%453 = fmul double %451, %452
%454 = fneg double %453
%455 = call double @llvm.fmuladd.f64(double %449, double %450, double %454)
store double %455, double* %14
%456 = load double, double* %10
%457 = load double, double* %13
%458 = load double, double* %11
%459 = load double, double* %12
%460 = fmul double %458, %459
%461 = call double @llvm.fmuladd.f64(double %456, double %457, double %460)
store double %461, double* %15
%462 = load double*, double** %3
%463 = getelementptr inbounds double, double* %462, i64 14
%464 = load double, double* %463
%465 = load double*, double** %3
%466 = getelementptr inbounds double, double* %465, i64 31
%467 = load double, double* %466
%468 = fsub double %464, %467
store double %468, double* %12
%469 = load double*, double** %3
%470 = getelementptr inbounds double, double* %469, i64 15
%471 = load double, double* %470
%472 = load double*, double** %3
%473 = getelementptr inbounds double, double* %472, i64 30
%474 = load double, double* %473
%475 = fadd double %471, %474
store double %475, double* %13
%476 = load double, double* %7
%477 = load double, double* %12
%478 = load double, double* %6
%479 = load double, double* %13
%480 = fmul double %478, %479
%481 = fneg double %480
%482 = call double @llvm.fmuladd.f64(double %476, double %477, double %481)
store double %482, double* %16
%483 = load double, double* %7
%484 = load double, double* %13
%485 = load double, double* %6
%486 = load double, double* %12
%487 = fmul double %485, %486
%488 = call double @llvm.fmuladd.f64(double %483, double %484, double %487)
store double %488, double* %17
%489 = load double, double* %14
%490 = load double, double* %16
%491 = fadd double %489, %490
store double %491, double* %24
%492 = load double, double* %15
%493 = load double, double* %17
%494 = fadd double %492, %493
store double %494, double* %25
%495 = load double, double* %14
%496 = load double, double* %16
%497 = fsub double %495, %496
store double %497, double* %32
%498 = load double, double* %15
%499 = load double, double* %17
%500 = fsub double %498, %499
store double %500, double* %33
%501 = load double*, double** %3
%502 = getelementptr inbounds double, double* %501, i64 6
%503 = load double, double* %502
%504 = load double*, double** %3
%505 = getelementptr inbounds double, double* %504, i64 23
%506 = load double, double* %505
%507 = fadd double %503, %506
store double %507, double* %12
%508 = load double*, double** %3
%509 = getelementptr inbounds double, double* %508, i64 7
%510 = load double, double* %509
%511 = load double*, double** %3
%512 = getelementptr inbounds double, double* %511, i64 22
%513 = load double, double* %512
%514 = fsub double %510, %513
store double %514, double* %13
%515 = load double, double* %7
%516 = load double, double* %12
%517 = load double, double* %6
%518 = load double, double* %13
%519 = fmul double %517, %518
%520 = call double @llvm.fmuladd.f64(double %515, double %516, double %519)
store double %520, double* %14
%521 = load double, double* %7
%522 = load double, double* %13
%523 = load double, double* %6
%524 = load double, double* %12
%525 = fmul double %523, %524
%526 = fneg double %525
%527 = call double @llvm.fmuladd.f64(double %521, double %522, double %526)
store double %527, double* %15
%528 = load double*, double** %3
%529 = getelementptr inbounds double, double* %528, i64 14
%530 = load double, double* %529
%531 = load double*, double** %3
%532 = getelementptr inbounds double, double* %531, i64 31
%533 = load double, double* %532
%534 = fadd double %530, %533
store double %534, double* %12
%535 = load double*, double** %3
%536 = getelementptr inbounds double, double* %535, i64 15
%537 = load double, double* %536
%538 = load double*, double** %3
%539 = getelementptr inbounds double, double* %538, i64 30
%540 = load double, double* %539
%541 = fsub double %537, %540
store double %541, double* %13
%542 = load double, double* %11
%543 = load double, double* %12
%544 = load double, double* %10
%545 = load double, double* %13
%546 = fmul double %544, %545
%547 = fneg double %546
%548 = call double @llvm.fmuladd.f64(double %542, double %543, double %547)
store double %548, double* %16
%549 = load double, double* %11
%550 = load double, double* %13
%551 = load double, double* %10
%552 = load double, double* %12
%553 = fmul double %551, %552
%554 = call double @llvm.fmuladd.f64(double %549, double %550, double %553)
store double %554, double* %17
%555 = load double, double* %14
%556 = load double, double* %16
%557 = fadd double %555, %556
store double %557, double* %40
%558 = load double, double* %15
%559 = load double, double* %17
%560 = fadd double %558, %559
store double %560, double* %41
%561 = load double, double* %14
%562 = load double, double* %16
%563 = fsub double %561, %562
store double %563, double* %48
%564 = load double, double* %15
%565 = load double, double* %17
%566 = fsub double %564, %565
store double %566, double* %49
%567 = load double, double* %18
%568 = load double, double* %22
%569 = fadd double %567, %568
store double %569, double* %14
%570 = load double, double* %19
%571 = load double, double* %23
%572 = fadd double %570, %571
store double %572, double* %15
%573 = load double, double* %20
%574 = load double, double* %24
%575 = fadd double %573, %574
store double %575, double* %16
%576 = load double, double* %21
%577 = load double, double* %25
%578 = fadd double %576, %577
store double %578, double* %17
%579 = load double, double* %14
%580 = load double, double* %16
%581 = fadd double %579, %580
%582 = load double*, double** %3
%583 = getelementptr inbounds double, double* %582, i64 0
store double %581, double* %583
%584 = load double, double* %15
%585 = load double, double* %17
%586 = fadd double %584, %585
%587 = load double*, double** %3
%588 = getelementptr inbounds double, double* %587, i64 1
store double %586, double* %588
%589 = load double, double* %14
%590 = load double, double* %16
%591 = fsub double %589, %590
%592 = load double*, double** %3
%593 = getelementptr inbounds double, double* %592, i64 2
store double %591, double* %593
%594 = load double, double* %15
%595 = load double, double* %17
%596 = fsub double %594, %595
%597 = load double*, double** %3
%598 = getelementptr inbounds double, double* %597, i64 3
store double %596, double* %598
%599 = load double, double* %18
%600 = load double, double* %22
%601 = fsub double %599, %600
store double %601, double* %14
%602 = load double, double* %19
%603 = load double, double* %23
%604 = fsub double %602, %603
store double %604, double* %15
%605 = load double, double* %20
%606 = load double, double* %24
%607 = fsub double %605, %606
store double %607, double* %16
%608 = load double, double* %21
%609 = load double, double* %25
%610 = fsub double %608, %609
store double %610, double* %17
%611 = load double, double* %14
%612 = load double, double* %17
%613 = fsub double %611, %612
%614 = load double*, double** %3
%615 = getelementptr inbounds double, double* %614, i64 4
store double %613, double* %615
%616 = load double, double* %15
%617 = load double, double* %16
%618 = fadd double %616, %617
%619 = load double*, double** %3
%620 = getelementptr inbounds double, double* %619, i64 5
store double %618, double* %620
%621 = load double, double* %14
%622 = load double, double* %17
%623 = fadd double %621, %622
%624 = load double*, double** %3
%625 = getelementptr inbounds double, double* %624, i64 6
store double %623, double* %625
%626 = load double, double* %15
%627 = load double, double* %16
%628 = fsub double %626, %627
%629 = load double*, double** %3
%630 = getelementptr inbounds double, double* %629, i64 7
store double %628, double* %630
%631 = load double, double* %26
%632 = load double, double* %31
%633 = fsub double %631, %632
store double %633, double* %14
%634 = load double, double* %27
%635 = load double, double* %30
%636 = fadd double %634, %635
store double %636, double* %15
%637 = load double, double* %28
%638 = load double, double* %33
%639 = fsub double %637, %638
store double %639, double* %12
%640 = load double, double* %29
%641 = load double, double* %32
%642 = fadd double %640, %641
store double %642, double* %13
%643 = load double, double* %5
%644 = load double, double* %12
%645 = load double, double* %13
%646 = fsub double %644, %645
%647 = fmul double %643, %646
store double %647, double* %16
%648 = load double, double* %5
%649 = load double, double* %13
%650 = load double, double* %12
%651 = fadd double %649, %650
%652 = fmul double %648, %651
store double %652, double* %17
%653 = load double, double* %14
%654 = load double, double* %16
%655 = fadd double %653, %654
%656 = load double*, double** %3
%657 = getelementptr inbounds double, double* %656, i64 8
store double %655, double* %657
%658 = load double, double* %15
%659 = load double, double* %17
%660 = fadd double %658, %659
%661 = load double*, double** %3
%662 = getelementptr inbounds double, double* %661, i64 9
store double %660, double* %662
%663 = load double, double* %14
%664 = load double, double* %16
%665 = fsub double %663, %664
%666 = load double*, double** %3
%667 = getelementptr inbounds double, double* %666, i64 10
store double %665, double* %667
%668 = load double, double* %15
%669 = load double, double* %17
%670 = fsub double %668, %669
%671 = load double*, double** %3
%672 = getelementptr inbounds double, double* %671, i64 11
store double %670, double* %672
%673 = load double, double* %26
%674 = load double, double* %31
%675 = fadd double %673, %674
store double %675, double* %14
%676 = load double, double* %27
%677 = load double, double* %30
%678 = fsub double %676, %677
store double %678, double* %15
%679 = load double, double* %28
%680 = load double, double* %33
%681 = fadd double %679, %680
store double %681, double* %12
%682 = load double, double* %29
%683 = load double, double* %32
%684 = fsub double %682, %683
store double %684, double* %13
%685 = load double, double* %5
%686 = load double, double* %12
%687 = load double, double* %13
%688 = fsub double %686, %687
%689 = fmul double %685, %688
store double %689, double* %16
%690 = load double, double* %5
%691 = load double, double* %13
%692 = load double, double* %12
%693 = fadd double %691, %692
%694 = fmul double %690, %693
store double %694, double* %17
%695 = load double, double* %14
%696 = load double, double* %17
%697 = fsub double %695, %696
%698 = load double*, double** %3
%699 = getelementptr inbounds double, double* %698, i64 12
store double %697, double* %699
%700 = load double, double* %15
%701 = load double, double* %16
%702 = fadd double %700, %701
%703 = load double*, double** %3
%704 = getelementptr inbounds double, double* %703, i64 13
store double %702, double* %704
%705 = load double, double* %14
%706 = load double, double* %17
%707 = fadd double %705, %706
%708 = load double*, double** %3
%709 = getelementptr inbounds double, double* %708, i64 14
store double %707, double* %709
%710 = load double, double* %15
%711 = load double, double* %16
%712 = fsub double %710, %711
%713 = load double*, double** %3
%714 = getelementptr inbounds double, double* %713, i64 15
store double %712, double* %714
%715 = load double, double* %34
%716 = load double, double* %38
%717 = fadd double %715, %716
store double %717, double* %14
%718 = load double, double* %35
%719 = load double, double* %39
%720 = fadd double %718, %719
store double %720, double* %15
%721 = load double, double* %36
%722 = load double, double* %40
%723 = fsub double %721, %722
store double %723, double* %16
%724 = load double, double* %37
%725 = load double, double* %41
%726 = fsub double %724, %725
store double %726, double* %17
%727 = load double, double* %14
%728 = load double, double* %16
%729 = fadd double %727, %728
%730 = load double*, double** %3
%731 = getelementptr inbounds double, double* %730, i64 16
store double %729, double* %731
%732 = load double, double* %15
%733 = load double, double* %17
%734 = fadd double %732, %733
%735 = load double*, double** %3
%736 = getelementptr inbounds double, double* %735, i64 17
store double %734, double* %736
%737 = load double, double* %14
%738 = load double, double* %16
%739 = fsub double %737, %738
%740 = load double*, double** %3
%741 = getelementptr inbounds double, double* %740, i64 18
store double %739, double* %741
%742 = load double, double* %15
%743 = load double, double* %17
%744 = fsub double %742, %743
%745 = load double*, double** %3
%746 = getelementptr inbounds double, double* %745, i64 19
store double %744, double* %746
%747 = load double, double* %34
%748 = load double, double* %38
%749 = fsub double %747, %748
store double %749, double* %14
%750 = load double, double* %35
%751 = load double, double* %39
%752 = fsub double %750, %751
store double %752, double* %15
%753 = load double, double* %36
%754 = load double, double* %40
%755 = fadd double %753, %754
store double %755, double* %16
%756 = load double, double* %37
%757 = load double, double* %41
%758 = fadd double %756, %757
store double %758, double* %17
%759 = load double, double* %14
%760 = load double, double* %17
%761 = fsub double %759, %760
%762 = load double*, double** %3
%763 = getelementptr inbounds double, double* %762, i64 20
store double %761, double* %763
%764 = load double, double* %15
%765 = load double, double* %16
%766 = fadd double %764, %765
%767 = load double*, double** %3
%768 = getelementptr inbounds double, double* %767, i64 21
store double %766, double* %768
%769 = load double, double* %14
%770 = load double, double* %17
%771 = fadd double %769, %770
%772 = load double*, double** %3
%773 = getelementptr inbounds double, double* %772, i64 22
store double %771, double* %773
%774 = load double, double* %15
%775 = load double, double* %16
%776 = fsub double %774, %775
%777 = load double*, double** %3
%778 = getelementptr inbounds double, double* %777, i64 23
store double %776, double* %778
%779 = load double, double* %42
%780 = load double, double* %47
%781 = fsub double %779, %780
store double %781, double* %14
%782 = load double, double* %43
%783 = load double, double* %46
%784 = fadd double %782, %783
store double %784, double* %15
%785 = load double, double* %44
%786 = load double, double* %49
%787 = fadd double %785, %786
store double %787, double* %12
%788 = load double, double* %45
%789 = load double, double* %48
%790 = fsub double %788, %789
store double %790, double* %13
%791 = load double, double* %5
%792 = load double, double* %12
%793 = load double, double* %13
%794 = fsub double %792, %793
%795 = fmul double %791, %794
store double %795, double* %16
%796 = load double, double* %5
%797 = load double, double* %13
%798 = load double, double* %12
%799 = fadd double %797, %798
%800 = fmul double %796, %799
store double %800, double* %17
%801 = load double, double* %14
%802 = load double, double* %16
%803 = fadd double %801, %802
%804 = load double*, double** %3
%805 = getelementptr inbounds double, double* %804, i64 24
store double %803, double* %805
%806 = load double, double* %15
%807 = load double, double* %17
%808 = fadd double %806, %807
%809 = load double*, double** %3
%810 = getelementptr inbounds double, double* %809, i64 25
store double %808, double* %810
%811 = load double, double* %14
%812 = load double, double* %16
%813 = fsub double %811, %812
%814 = load double*, double** %3
%815 = getelementptr inbounds double, double* %814, i64 26
store double %813, double* %815
%816 = load double, double* %15
%817 = load double, double* %17
%818 = fsub double %816, %817
%819 = load double*, double** %3
%820 = getelementptr inbounds double, double* %819, i64 27
store double %818, double* %820
%821 = load double, double* %42
%822 = load double, double* %47
%823 = fadd double %821, %822
store double %823, double* %14
%824 = load double, double* %43
%825 = load double, double* %46
%826 = fsub double %824, %825
store double %826, double* %15
%827 = load double, double* %44
%828 = load double, double* %49
%829 = fsub double %827, %828
store double %829, double* %12
%830 = load double, double* %45
%831 = load double, double* %48
%832 = fadd double %830, %831
store double %832, double* %13
%833 = load double, double* %5
%834 = load double, double* %12
%835 = load double, double* %13
%836 = fsub double %834, %835
%837 = fmul double %833, %836
store double %837, double* %16
%838 = load double, double* %5
%839 = load double, double* %13
%840 = load double, double* %12
%841 = fadd double %839, %840
%842 = fmul double %838, %841
store double %842, double* %17
%843 = load double, double* %14
%844 = load double, double* %17
%845 = fsub double %843, %844
%846 = load double*, double** %3
%847 = getelementptr inbounds double, double* %846, i64 28
store double %845, double* %847
%848 = load double, double* %15
%849 = load double, double* %16
%850 = fadd double %848, %849
%851 = load double*, double** %3
%852 = getelementptr inbounds double, double* %851, i64 29
store double %850, double* %852
%853 = load double, double* %14
%854 = load double, double* %17
%855 = fadd double %853, %854
%856 = load double*, double** %3
%857 = getelementptr inbounds double, double* %856, i64 30
store double %855, double* %857
%858 = load double, double* %15
%859 = load double, double* %16
%860 = fsub double %858, %859
%861 = load double*, double** %3
%862 = getelementptr inbounds double, double* %861, i64 31
store double %860, double* %862
ret void
}

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