void cftf162(double *a) {
  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 = 0.707106781186547524400844362104849039284835937688;
  wk1r = 0.980785280403230449126182236134239036973933730893;
  wk1i = 0.195090322016128267848284868477022240927691617751;
  wk2r = 0.923879532511286756128183189396788286822416625863;
  wk2i = 0.382683432365089771728459984030398866761344562485;
  wk3r = 0.831469612302545237078788377617905756738560811987;
  wk3i = 0.555570233019602224742830813948532874374937190754;
  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    $0xf0,%rsp
mov    %rdi,-0x8(%rbp)
movsd  0x1f19(%rip),%xmm0
movsd  %xmm0,-0x10(%rbp)
movsd  0x1f04(%rip),%xmm0
movsd  %xmm0,-0x18(%rbp)
movsd  0x1eef(%rip),%xmm0
movsd  %xmm0,-0x20(%rbp)
movsd  0x1eda(%rip),%xmm0
movsd  %xmm0,-0x28(%rbp)
movsd  0x1ec5(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0x1eb0(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0x1e9b(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x88(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xc8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xc0(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
subsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
addsd  -0x48(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x58(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x58(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x88(%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x80(%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xc8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xc0(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
subsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
addsd  -0x48(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x58(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x98(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x48(%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,-0x58(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xd8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xd0(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x38(%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)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x58(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x10(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0x98(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x18(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0x90(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%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,-0x58(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x50(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xd8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x58(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xd0(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm1
mulsd  -0x48(%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  -0x58(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xa8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xa0(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x30(%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,-0x58(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xe8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xe0(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x48(%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,-0x68(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x58(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xa8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xa0(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x48(%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,-0x58(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xe8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xe0(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x28(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x30(%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)
movsd  -0x28(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x30(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x58(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xb8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xb0(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x40(%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,-0x58(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x40(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xf8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xf0(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x18(%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)
movsd  -0x20(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x58(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x8(%rbp),%rax
movsd  0x30(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xb8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x38(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xb0(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm1
mulsd  -0x50(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x70(%rax),%xmm0
mov    -0x8(%rbp),%rax
addsd  0xf8(%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x8(%rbp),%rax
movsd  0x78(%rax),%xmm0
mov    -0x8(%rbp),%rax
subsd  0xf0(%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movsd  -0x38(%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)
movsd  -0x40(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x38(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x58(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
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  -0x58(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0x58(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x78(%rbp),%xmm0
subsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
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  -0x58(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x60(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x58(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x60(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
subsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0xc8(%rbp),%xmm0
ff
subsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x48(%rbp)
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
subsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
addsd  -0x48(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x58(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x58(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0xc0(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x48(%rbp)
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
subsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
addsd  -0x48(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x58(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0x60(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x68(%rax)
movsd  -0x58(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x60(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x78(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
addsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0x100(%rbp),%xmm0
ff
addsd  -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
subsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x70(%rbp)
movsd  -0x58(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x80(%rax)
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x88(%rax)
movsd  -0x58(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x90(%rax)
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0x98(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
subsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0x100(%rbp),%xmm0
ff
subsd  -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
addsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x70(%rbp)
movsd  -0x58(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xa0(%rax)
movsd  -0x60(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xa8(%rax)
movsd  -0x58(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xb0(%rax)
movsd  -0x60(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xb8(%rax)
movsd  -0x138(%rbp),%xmm0
ff
subsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0x140(%rbp),%xmm0
ff
addsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0x148(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x48(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
subsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
addsd  -0x48(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x58(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xc0(%rax)
movsd  -0x60(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xc8(%rax)
movsd  -0x58(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xd0(%rax)
movsd  -0x60(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xd8(%rax)
movsd  -0x138(%rbp),%xmm0
ff
addsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0x140(%rbp),%xmm0
ff
subsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0x148(%rbp),%xmm0
ff
subsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0x48(%rbp)
movsd  -0x150(%rbp),%xmm0
ff
addsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
subsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
addsd  -0x48(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x58(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xe0(%rax)
movsd  -0x60(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xe8(%rax)
movsd  -0x58(%rbp),%xmm0
addsd  -0x70(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xf0(%rax)
movsd  -0x60(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
mov    -0x8(%rbp),%rax
movsd  %xmm0,0xf8(%rax)
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cftf162>:
movupd 0x80(%rdi),%xmm2
shufpd $0x1,%xmm2,%xmm2
movupd (%rdi),%xmm1
movupd 0x10(%rdi),%xmm8
movapd %xmm1,%xmm3
subpd  %xmm2,%xmm3
addpd  %xmm1,%xmm2
movapd %xmm2,%xmm7
movsd  %xmm3,%xmm7
movsd  0x40(%rdi),%xmm4
movsd  0xc8(%rdi),%xmm9
movapd %xmm4,%xmm1
subsd  %xmm9,%xmm1
movsd  0x48(%rdi),%xmm0
movsd  0xc0(%rdi),%xmm10
movapd %xmm0,%xmm6
addsd  %xmm10,%xmm6
movapd %xmm1,%xmm5
subsd  %xmm6,%xmm5
addsd  %xmm1,%xmm6
unpcklpd %xmm6,%xmm5
movapd 0xe8f(%rip),%xmm1
mulpd  %xmm1,%xmm5
movapd %xmm7,%xmm15
addpd  %xmm5,%xmm15
subpd  %xmm5,%xmm7
movapd %xmm7,-0x18(%rsp)
shufpd $0x2,%xmm3,%xmm2
addsd  %xmm9,%xmm4
subsd  %xmm10,%xmm0
movapd %xmm4,%xmm13
addsd  %xmm0,%xmm13
subsd  %xmm0,%xmm4
unpcklpd %xmm4,%xmm13
mulpd  %xmm1,%xmm13
movapd %xmm2,%xmm0
subpd  %xmm13,%xmm0
addpd  %xmm2,%xmm13
movapd %xmm13,%xmm1
movsd  %xmm0,%xmm1
movapd %xmm1,-0x28(%rsp)
shufpd $0x2,%xmm0,%xmm13
movupd 0x90(%rdi),%xmm3
shufpd $0x1,%xmm3,%xmm3
movapd %xmm8,%xmm2
subpd  %xmm3,%xmm2
addpd  %xmm8,%xmm3
movapd %xmm3,%xmm10
movsd  %xmm2,%xmm10
movapd %xmm3,%xmm0
shufpd $0x1,%xmm2,%xmm0
mulpd  0xe07(%rip),%xmm0
movapd 0xe0f(%rip),%xmm7
mulpd  %xmm7,%xmm10
addpd  %xmm0,%xmm10
movupd 0x50(%rdi),%xmm0
movupd 0xd0(%rdi),%xmm6
shufpd $0x1,%xmm6,%xmm6
movapd %xmm0,%xmm1
subpd  %xmm6,%xmm1
addpd  %xmm0,%xmm6
movapd %xmm6,%xmm0
movsd  %xmm1,%xmm0
movapd %xmm6,%xmm4
shufpd $0x1,%xmm1,%xmm4
mulpd  0xdde(%rip),%xmm4
mulpd  0xde6(%rip),%xmm0
addpd  %xmm4,%xmm0
movapd %xmm10,%xmm5
addpd  %xmm0,%xmm5
subpd  %xmm0,%xmm10
movapd %xmm2,%xmm4
movsd  %xmm3,%xmm4
shufpd $0x1,%xmm3,%xmm2
mulpd  0xdcf(%rip),%xmm2
mulpd  0xdd7(%rip),%xmm4
addpd  %xmm2,%xmm4
movapd %xmm1,%xmm9
movsd  %xmm6,%xmm9
shufpd $0x1,%xmm6,%xmm1
movupd 0x20(%rdi),%xmm3
mulpd  0xdc7(%rip),%xmm1
mulpd  %xmm7,%xmm9
addpd  %xmm1,%xmm9
movapd %xmm4,%xmm0
subpd  %xmm9,%xmm0
movapd %xmm0,-0x38(%rsp)
addpd  %xmm4,%xmm9
movupd 0xa0(%rdi),%xmm2
shufpd $0x1,%xmm2,%xmm2
movapd %xmm3,%xmm7
subpd  %xmm2,%xmm7
addpd  %xmm3,%xmm2
movapd %xmm2,%xmm8
movsd  %xmm7,%xmm8
movapd %xmm2,%xmm1
shufpd $0x1,%xmm7,%xmm1
movapd 0xd84(%rip),%xmm14
mulpd  %xmm14,%xmm1
movapd 0xd86(%rip),%xmm12
mulpd  %xmm12,%xmm8
addpd  %xmm1,%xmm8
movupd 0xe0(%rdi),%xmm6
shufpd $0x1,%xmm6,%xmm6
movupd 0x60(%rdi),%xmm4
movapd %xmm4,%xmm1
subpd  %xmm6,%xmm1
addpd  %xmm4,%xmm6
movapd %xmm6,%xmm4
movsd  %xmm1,%xmm4
movapd %xmm6,%xmm11
shufpd $0x1,%xmm1,%xmm11
movapd 0xd53(%rip),%xmm3
mulpd  %xmm3,%xmm11
movapd 0xd56(%rip),%xmm0
mulpd  %xmm0,%xmm4
addpd  %xmm11,%xmm4
movapd %xmm8,%xmm11
addpd  %xmm4,%xmm11
subpd  %xmm4,%xmm8
movapd %xmm7,%xmm4
movsd  %xmm2,%xmm4
shufpd $0x1,%xmm2,%xmm7
mulpd  %xmm3,%xmm7
mulpd  %xmm0,%xmm4
addpd  %xmm7,%xmm4
movapd %xmm1,%xmm7
movsd  %xmm6,%xmm7
shufpd $0x1,%xmm6,%xmm1
mulpd  %xmm14,%xmm1
mulpd  %xmm12,%xmm7
addpd  %xmm1,%xmm7
movapd %xmm4,%xmm0
subpd  %xmm7,%xmm0
movapd %xmm0,-0x48(%rsp)
addpd  %xmm4,%xmm7
movupd 0xb0(%rdi),%xmm6
shufpd $0x1,%xmm6,%xmm6
movupd 0x30(%rdi),%xmm0
movapd %xmm0,%xmm2
subpd  %xmm6,%xmm2
addpd  %xmm0,%xmm6
movapd %xmm6,%xmm0
shufpd $0x1,%xmm2,%xmm0
mulpd  0xc69(%rip),%xmm0
movapd %xmm6,%xmm4
movsd  %xmm2,%xmm4
mulpd  0xc69(%rip),%xmm4
addpd  %xmm0,%xmm4
movupd 0xf0(%rdi),%xmm0
shufpd $0x1,%xmm0,%xmm0
movupd 0x70(%rdi),%xmm1
movapd %xmm1,%xmm12
subpd  %xmm0,%xmm12
addpd  %xmm1,%xmm0
movapd %xmm0,%xmm3
movsd  %xmm12,%xmm3
movapd %xmm0,%xmm1
shufpd $0x1,%xmm12,%xmm1
mulpd  0xc8a(%rip),%xmm1
movapd 0xc91(%rip),%xmm14
mulpd  %xmm14,%xmm3
addpd  %xmm1,%xmm3
movapd %xmm4,%xmm1
addpd  %xmm3,%xmm1
subpd  %xmm3,%xmm4
movapd %xmm2,%xmm3
movsd  %xmm6,%xmm3
shufpd $0x1,%xmm6,%xmm2
mulpd  %xmm14,%xmm3
mulpd  0xc72(%rip),%xmm2
addpd  %xmm2,%xmm3
movapd %xmm12,%xmm2
movsd  %xmm0,%xmm2
shufpd $0x1,%xmm0,%xmm12
mulpd  0xba6(%rip),%xmm12
mulpd  0xbae(%rip),%xmm2
addpd  %xmm12,%xmm2
movapd %xmm3,%xmm12
addpd  %xmm2,%xmm12
subpd  %xmm2,%xmm3
movapd %xmm15,%xmm0
addpd  %xmm11,%xmm0
movapd %xmm5,%xmm2
addpd  %xmm1,%xmm2
movapd %xmm0,%xmm6
addpd  %xmm2,%xmm6
movupd %xmm6,(%rdi)
subpd  %xmm2,%xmm0
movupd %xmm0,0x10(%rdi)
subpd  %xmm11,%xmm15
subpd  %xmm1,%xmm5
shufpd $0x1,%xmm5,%xmm5
movapd %xmm15,%xmm0
subpd  %xmm5,%xmm0
addpd  %xmm15,%xmm5
movapd %xmm5,%xmm1
movsd  %xmm0,%xmm1
movupd %xmm1,0x20(%rdi)
movapd %xmm4,%xmm1
unpckhpd %xmm4,%xmm1
shufpd $0x2,%xmm0,%xmm5
movapd %xmm10,%xmm0
subsd  %xmm1,%xmm0
addsd  %xmm10,%xmm1
unpckhpd %xmm10,%xmm10
shufpd $0x1,%xmm8,%xmm8
movupd %xmm5,0x30(%rdi)
movapd -0x18(%rsp),%xmm5
movapd %xmm5,%xmm2
subpd  %xmm8,%xmm2
addpd  %xmm5,%xmm8
movapd %xmm10,%xmm5
addsd  %xmm4,%xmm5
movapd %xmm0,%xmm6
subsd  %xmm5,%xmm6
addsd  %xmm0,%xmm5
unpcklpd %xmm5,%xmm6
movapd %xmm8,%xmm0
movsd  %xmm2,%xmm0
movapd 0xaa1(%rip),%xmm11
mulpd  %xmm11,%xmm6
movapd %xmm0,%xmm5
addpd  %xmm6,%xmm5
movupd %xmm5,0x40(%rdi)
subpd  %xmm6,%xmm0
movupd %xmm0,0x50(%rdi)
shufpd $0x1,%xmm8,%xmm2
subsd  %xmm4,%xmm10
movapd %xmm1,%xmm0
subsd  %xmm10,%xmm0
addsd  %xmm1,%xmm10
unpcklpd %xmm10,%xmm0
mulpd  %xmm11,%xmm0
movapd %xmm2,%xmm1
subpd  %xmm0,%xmm1
movhpd %xmm1,0x60(%rdi)
addpd  %xmm2,%xmm0
movupd %xmm0,0x68(%rdi)
movlpd %xmm1,0x78(%rdi)
movapd -0x28(%rsp),%xmm4
movapd %xmm4,%xmm0
movapd -0x48(%rsp),%xmm6
addpd  %xmm6,%xmm0
movapd -0x38(%rsp),%xmm5
movapd %xmm5,%xmm1
subpd  %xmm12,%xmm1
movapd %xmm0,%xmm2
addpd  %xmm1,%xmm2
movupd %xmm2,0x80(%rdi)
subpd  %xmm1,%xmm0
movupd %xmm0,0x90(%rdi)
movapd %xmm9,%xmm0
unpckhpd %xmm9,%xmm0
shufpd $0x1,%xmm7,%xmm7
subpd  %xmm6,%xmm4
movapd %xmm3,%xmm2
unpckhpd %xmm3,%xmm2
addpd  %xmm5,%xmm12
shufpd $0x1,%xmm12,%xmm12
movapd %xmm4,%xmm1
subpd  %xmm12,%xmm1
addpd  %xmm4,%xmm12
movapd %xmm12,%xmm4
movsd  %xmm1,%xmm4
movupd %xmm4,0xa0(%rdi)
shufpd $0x2,%xmm1,%xmm12
movupd %xmm12,0xb0(%rdi)
movapd %xmm13,%xmm1
subpd  %xmm7,%xmm1
addpd  %xmm13,%xmm7
movapd %xmm9,%xmm4
addsd  %xmm2,%xmm4
movapd %xmm0,%xmm5
subsd  %xmm3,%xmm5
movapd %xmm4,%xmm6
subsd  %xmm5,%xmm6
addsd  %xmm4,%xmm5
movapd %xmm7,%xmm4
movsd  %xmm1,%xmm4
unpcklpd %xmm5,%xmm6
mulpd  %xmm11,%xmm6
movapd %xmm4,%xmm5
addpd  %xmm6,%xmm5
movupd %xmm5,0xc0(%rdi)
subpd  %xmm6,%xmm4
movupd %xmm4,0xd0(%rdi)
shufpd $0x1,%xmm7,%xmm1
subsd  %xmm2,%xmm9
addsd  %xmm0,%xmm3
movapd %xmm9,%xmm0
subsd  %xmm3,%xmm0
addsd  %xmm9,%xmm3
unpcklpd %xmm3,%xmm0
mulpd  %xmm11,%xmm0
movapd %xmm1,%xmm2
subpd  %xmm0,%xmm2
addpd  %xmm1,%xmm0
movhpd %xmm2,0xe0(%rdi)
movupd %xmm0,0xe8(%rdi)
movlpd %xmm2,0xf8(%rdi)
ret

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

LLVM IR (-O2):
define void @cftf162(double* %0) {
%2 = bitcast double* %0 to <2 x double>*
%3 = load <2 x double>, <2 x double>* %2
%4 = getelementptr inbounds double, double* %0, i64 16
%5 = bitcast double* %4 to <2 x double>*
%6 = load <2 x double>, <2 x double>* %5
%7 = shufflevector <2 x double> %6, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%8 = fsub <2 x double> %3, %7
%9 = fadd <2 x double> %3, %7
%10 = shufflevector <2 x double> %8, <2 x double> %9, <2 x i32> <i32 0, i32 3>
%11 = getelementptr inbounds double, double* %0, i64 8
%12 = load double, double* %11
%13 = getelementptr inbounds double, double* %0, i64 25
%14 = load double, double* %13
%15 = fsub double %12, %14
%16 = getelementptr inbounds double, double* %0, i64 9
%17 = load double, double* %16
%18 = getelementptr inbounds double, double* %0, i64 24
%19 = load double, double* %18
%20 = fadd double %17, %19
%21 = insertelement <2 x double> poison, double %15, i64 0
%22 = shufflevector <2 x double> %21, <2 x double> poison, <2 x i32> zeroinitializer
%23 = insertelement <2 x double> poison, double %20, i64 0
%24 = shufflevector <2 x double> %23, <2 x double> poison, <2 x i32> zeroinitializer
%25 = fsub <2 x double> %22, %24
%26 = fadd <2 x double> %22, %24
%27 = shufflevector <2 x double> %25, <2 x double> %26, <2 x i32> <i32 0, i32 3>
%28 = fmul <2 x double> %27, <double 0x3FE6A09E667F3BCD, double 0x3FE6A09E667F3BCD>
%29 = fadd <2 x double> %10, %28
%30 = fsub <2 x double> %10, %28
%31 = shufflevector <2 x double> %9, <2 x double> %8, <2 x i32> <i32 0, i32 3>
%32 = fadd double %12, %14
%33 = fsub double %17, %19
%34 = insertelement <2 x double> poison, double %32, i64 0
%35 = shufflevector <2 x double> %34, <2 x double> poison, <2 x i32> zeroinitializer
%36 = insertelement <2 x double> poison, double %33, i64 0
%37 = shufflevector <2 x double> %36, <2 x double> poison, <2 x i32> zeroinitializer
%38 = fadd <2 x double> %35, %37
%39 = fsub <2 x double> %35, %37
%40 = shufflevector <2 x double> %38, <2 x double> %39, <2 x i32> <i32 0, i32 3>
%41 = fmul <2 x double> %40, <double 0x3FE6A09E667F3BCD, double 0x3FE6A09E667F3BCD>
%42 = fsub <2 x double> %31, %41
%43 = fadd <2 x double> %31, %41
%44 = shufflevector <2 x double> %42, <2 x double> %43, <2 x i32> <i32 0, i32 3>
%45 = shufflevector <2 x double> %43, <2 x double> %42, <2 x i32> <i32 0, i32 3>
%46 = getelementptr inbounds double, double* %0, i64 2
%47 = bitcast double* %46 to <2 x double>*
%48 = load <2 x double>, <2 x double>* %47
%49 = getelementptr inbounds double, double* %0, i64 18
%50 = bitcast double* %49 to <2 x double>*
%51 = load <2 x double>, <2 x double>* %50
%52 = shufflevector <2 x double> %51, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%53 = fsub <2 x double> %48, %52
%54 = fadd <2 x double> %48, %52
%55 = shufflevector <2 x double> %53, <2 x double> %54, <2 x i32> <i32 0, i32 3>
%56 = shufflevector <2 x double> %54, <2 x double> %53, <2 x i32> <i32 1, i32 2>
%57 = fmul <2 x double> %56, <double 0xBFC8F8B83C69A60B, double 0x3FC8F8B83C69A60B>
%58 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %55, <2 x double> <double 0x3FEF6297CFF75CB0, double 0x3FEF6297CFF75CB0>, <2 x double> %57)
%59 = getelementptr inbounds double, double* %0, i64 10
%60 = bitcast double* %59 to <2 x double>*
%61 = load <2 x double>, <2 x double>* %60
%62 = getelementptr inbounds double, double* %0, i64 26
%63 = bitcast double* %62 to <2 x double>*
%64 = load <2 x double>, <2 x double>* %63
%65 = shufflevector <2 x double> %64, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%66 = fsub <2 x double> %61, %65
%67 = fadd <2 x double> %61, %65
%68 = shufflevector <2 x double> %66, <2 x double> %67, <2 x i32> <i32 0, i32 3>
%69 = shufflevector <2 x double> %67, <2 x double> %66, <2 x i32> <i32 1, i32 2>
%70 = fmul <2 x double> %69, <double 0xBFEA9B66290EA1A3, double 0x3FEA9B66290EA1A3>
%71 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %68, <2 x double> <double 0x3FE1C73B39AE68C8, double 0x3FE1C73B39AE68C8>, <2 x double> %70)
%72 = fadd <2 x double> %58, %71
%73 = fsub <2 x double> %58, %71
%74 = extractelement <2 x double> %73, i64 0
%75 = fsub <2 x double> %58, %71
%76 = extractelement <2 x double> %75, i64 1
%77 = shufflevector <2 x double> %54, <2 x double> %53, <2 x i32> <i32 0, i32 3>
%78 = shufflevector <2 x double> %53, <2 x double> %54, <2 x i32> <i32 1, i32 2>
%79 = fmul <2 x double> %78, <double 0xBFE1C73B39AE68C8, double 0x3FE1C73B39AE68C8>
%80 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %77, <2 x double> <double 0x3FEA9B66290EA1A3, double 0x3FEA9B66290EA1A3>, <2 x double> %79)
%81 = shufflevector <2 x double> %67, <2 x double> %66, <2 x i32> <i32 0, i32 3>
%82 = shufflevector <2 x double> %66, <2 x double> %67, <2 x i32> <i32 1, i32 2>
%83 = fmul <2 x double> %82, <double 0x3FC8F8B83C69A60B, double 0xBFC8F8B83C69A60B>
%84 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %81, <2 x double> <double 0x3FEF6297CFF75CB0, double 0x3FEF6297CFF75CB0>, <2 x double> %83)
%85 = fsub <2 x double> %80, %84
%86 = fadd <2 x double> %80, %84
%87 = extractelement <2 x double> %86, i64 0
%88 = fadd <2 x double> %80, %84
%89 = extractelement <2 x double> %88, i64 1
%90 = getelementptr inbounds double, double* %0, i64 4
%91 = bitcast double* %90 to <2 x double>*
%92 = load <2 x double>, <2 x double>* %91
%93 = getelementptr inbounds double, double* %0, i64 20
%94 = bitcast double* %93 to <2 x double>*
%95 = load <2 x double>, <2 x double>* %94
%96 = shufflevector <2 x double> %95, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%97 = fsub <2 x double> %92, %96
%98 = fadd <2 x double> %92, %96
%99 = shufflevector <2 x double> %97, <2 x double> %98, <2 x i32> <i32 0, i32 3>
%100 = shufflevector <2 x double> %98, <2 x double> %97, <2 x i32> <i32 1, i32 2>
%101 = fmul <2 x double> %100, <double 0xBFD87DE2A6AEA963, double 0x3FD87DE2A6AEA963>
%102 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %99, <2 x double> <double 0x3FED906BCF328D46, double 0x3FED906BCF328D46>, <2 x double> %101)
%103 = getelementptr inbounds double, double* %0, i64 12
%104 = getelementptr inbounds double, double* %0, i64 29
%105 = getelementptr inbounds double, double* %0, i64 13
%106 = bitcast double* %103 to <2 x double>*
%107 = load <2 x double>, <2 x double>* %106
%108 = getelementptr inbounds double, double* %0, i64 28
%109 = bitcast double* %108 to <2 x double>*
%110 = load <2 x double>, <2 x double>* %109
%111 = shufflevector <2 x double> %110, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%112 = fsub <2 x double> %107, %111
%113 = fadd <2 x double> %107, %111
%114 = shufflevector <2 x double> %112, <2 x double> %113, <2 x i32> <i32 0, i32 3>
%115 = shufflevector <2 x double> %113, <2 x double> %112, <2 x i32> <i32 1, i32 2>
%116 = fmul <2 x double> %115, <double 0xBFED906BCF328D46, double 0x3FED906BCF328D46>
%117 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %114, <2 x double> <double 0x3FD87DE2A6AEA963, double 0x3FD87DE2A6AEA963>, <2 x double> %116)
%118 = fadd <2 x double> %102, %117
%119 = fsub <2 x double> %102, %117
%120 = shufflevector <2 x double> %119, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%121 = shufflevector <2 x double> %98, <2 x double> %97, <2 x i32> <i32 0, i32 3>
%122 = shufflevector <2 x double> %97, <2 x double> %98, <2 x i32> <i32 1, i32 2>
%123 = fmul <2 x double> %122, <double 0xBFED906BCF328D46, double 0x3FED906BCF328D46>
%124 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %121, <2 x double> <double 0x3FD87DE2A6AEA963, double 0x3FD87DE2A6AEA963>, <2 x double> %123)
%125 = shufflevector <2 x double> %113, <2 x double> %112, <2 x i32> <i32 0, i32 3>
%126 = shufflevector <2 x double> %112, <2 x double> %113, <2 x i32> <i32 1, i32 2>
%127 = fmul <2 x double> %126, <double 0xBFD87DE2A6AEA963, double 0x3FD87DE2A6AEA963>
%128 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %125, <2 x double> <double 0x3FED906BCF328D46, double 0x3FED906BCF328D46>, <2 x double> %127)
%129 = fsub <2 x double> %124, %128
%130 = fadd <2 x double> %124, %128
%131 = shufflevector <2 x double> %130, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%132 = getelementptr inbounds double, double* %0, i64 6
%133 = bitcast double* %132 to <2 x double>*
%134 = load <2 x double>, <2 x double>* %133
%135 = getelementptr inbounds double, double* %0, i64 22
%136 = bitcast double* %135 to <2 x double>*
%137 = load <2 x double>, <2 x double>* %136
%138 = shufflevector <2 x double> %137, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%139 = fsub <2 x double> %134, %138
%140 = fadd <2 x double> %134, %138
%141 = shufflevector <2 x double> %139, <2 x double> %140, <2 x i32> <i32 0, i32 3>
%142 = shufflevector <2 x double> %140, <2 x double> %139, <2 x i32> <i32 1, i32 2>
%143 = fmul <2 x double> %142, <double 0xBFE1C73B39AE68C8, double 0x3FE1C73B39AE68C8>
%144 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %141, <2 x double> <double 0x3FEA9B66290EA1A3, double 0x3FEA9B66290EA1A3>, <2 x double> %143)
%145 = getelementptr inbounds double, double* %0, i64 14
%146 = getelementptr inbounds double, double* %0, i64 31
%147 = getelementptr inbounds double, double* %0, i64 15
%148 = bitcast double* %145 to <2 x double>*
%149 = load <2 x double>, <2 x double>* %148
%150 = getelementptr inbounds double, double* %0, i64 30
%151 = bitcast double* %150 to <2 x double>*
%152 = load <2 x double>, <2 x double>* %151
%153 = shufflevector <2 x double> %152, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%154 = fsub <2 x double> %149, %153
%155 = fadd <2 x double> %149, %153
%156 = shufflevector <2 x double> %154, <2 x double> %155, <2 x i32> <i32 0, i32 3>
%157 = shufflevector <2 x double> %155, <2 x double> %154, <2 x i32> <i32 1, i32 2>
%158 = fmul <2 x double> %157, <double 0xBFEF6297CFF75CB0, double 0x3FEF6297CFF75CB0>
%159 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %156, <2 x double> <double 0x3FC8F8B83C69A60B, double 0x3FC8F8B83C69A60B>, <2 x double> %158)
%160 = fadd <2 x double> %144, %159
%161 = fsub <2 x double> %144, %159
%162 = extractelement <2 x double> %161, i64 0
%163 = fsub <2 x double> %144, %159
%164 = extractelement <2 x double> %163, i64 1
%165 = shufflevector <2 x double> %140, <2 x double> %139, <2 x i32> <i32 0, i32 3>
%166 = shufflevector <2 x double> %139, <2 x double> %140, <2 x i32> <i32 1, i32 2>
%167 = fmul <2 x double> %166, <double 0x3FEF6297CFF75CB0, double 0xBFEF6297CFF75CB0>
%168 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %165, <2 x double> <double 0x3FC8F8B83C69A60B, double 0x3FC8F8B83C69A60B>, <2 x double> %167)
%169 = shufflevector <2 x double> %155, <2 x double> %154, <2 x i32> <i32 0, i32 3>
%170 = shufflevector <2 x double> %154, <2 x double> %155, <2 x i32> <i32 1, i32 2>
%171 = fmul <2 x double> %170, <double 0xBFEA9B66290EA1A3, double 0x3FEA9B66290EA1A3>
%172 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %169, <2 x double> <double 0x3FE1C73B39AE68C8, double 0x3FE1C73B39AE68C8>, <2 x double> %171)
%173 = fadd <2 x double> %168, %172
%174 = fsub <2 x double> %168, %172
%175 = extractelement <2 x double> %174, i64 0
%176 = fsub <2 x double> %168, %172
%177 = extractelement <2 x double> %176, i64 1
%178 = fadd <2 x double> %29, %118
%179 = fadd <2 x double> %72, %160
%180 = fadd <2 x double> %178, %179
%181 = bitcast double* %0 to <2 x double>*
store <2 x double> %180, <2 x double>* %181
%182 = fsub <2 x double> %178, %179
%183 = bitcast double* %46 to <2 x double>*
store <2 x double> %182, <2 x double>* %183
%184 = fsub <2 x double> %29, %118
%185 = fsub <2 x double> %72, %160
%186 = shufflevector <2 x double> %185, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%187 = fsub <2 x double> %184, %186
%188 = fadd <2 x double> %184, %186
%189 = shufflevector <2 x double> %187, <2 x double> %188, <2 x i32> <i32 0, i32 3>
%190 = bitcast double* %90 to <2 x double>*
store <2 x double> %189, <2 x double>* %190
%191 = shufflevector <2 x double> %188, <2 x double> %187, <2 x i32> <i32 0, i32 3>
%192 = bitcast double* %132 to <2 x double>*
store <2 x double> %191, <2 x double>* %192
%193 = fsub <2 x double> %30, %120
%194 = fadd <2 x double> %30, %120
%195 = shufflevector <2 x double> %193, <2 x double> %194, <2 x i32> <i32 0, i32 3>
%196 = fsub double %74, %164
%197 = fadd double %76, %162
%198 = insertelement <2 x double> poison, double %196, i64 0
%199 = shufflevector <2 x double> %198, <2 x double> poison, <2 x i32> zeroinitializer
%200 = insertelement <2 x double> poison, double %197, i64 0
%201 = shufflevector <2 x double> %200, <2 x double> poison, <2 x i32> zeroinitializer
%202 = fsub <2 x double> %199, %201
%203 = fadd <2 x double> %199, %201
%204 = shufflevector <2 x double> %202, <2 x double> %203, <2 x i32> <i32 0, i32 3>
%205 = fmul <2 x double> %204, <double 0x3FE6A09E667F3BCD, double 0x3FE6A09E667F3BCD>
%206 = fadd <2 x double> %195, %205
%207 = bitcast double* %11 to <2 x double>*
store <2 x double> %206, <2 x double>* %207
%208 = fsub <2 x double> %195, %205
%209 = bitcast double* %59 to <2 x double>*
store <2 x double> %208, <2 x double>* %209
%210 = shufflevector <2 x double> %193, <2 x double> %194, <2 x i32> <i32 1, i32 2>
%211 = fadd double %74, %164
%212 = fsub double %76, %162
%213 = insertelement <2 x double> poison, double %211, i64 0
%214 = shufflevector <2 x double> %213, <2 x double> poison, <2 x i32> zeroinitializer
%215 = insertelement <2 x double> poison, double %212, i64 0
%216 = shufflevector <2 x double> %215, <2 x double> poison, <2 x i32> zeroinitializer
%217 = fsub <2 x double> %214, %216
%218 = fadd <2 x double> %214, %216
%219 = shufflevector <2 x double> %217, <2 x double> %218, <2 x i32> <i32 0, i32 3>
%220 = fmul <2 x double> %219, <double 0x3FE6A09E667F3BCD, double 0x3FE6A09E667F3BCD>
%221 = fsub <2 x double> %210, %220
%222 = extractelement <2 x double> %221, i64 1
store double %222, double* %103
%223 = fadd <2 x double> %210, %220
%224 = bitcast double* %105 to <2 x double>*
store <2 x double> %223, <2 x double>* %224
%225 = fsub <2 x double> %210, %220
%226 = extractelement <2 x double> %225, i64 0
store double %226, double* %147
%227 = fadd <2 x double> %44, %129
%228 = fsub <2 x double> %85, %173
%229 = fadd <2 x double> %227, %228
%230 = bitcast double* %4 to <2 x double>*
store <2 x double> %229, <2 x double>* %230
%231 = fsub <2 x double> %227, %228
%232 = bitcast double* %49 to <2 x double>*
store <2 x double> %231, <2 x double>* %232
%233 = fsub <2 x double> %44, %129
%234 = fadd <2 x double> %85, %173
%235 = shufflevector <2 x double> %234, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%236 = fsub <2 x double> %233, %235
%237 = fadd <2 x double> %233, %235
%238 = shufflevector <2 x double> %236, <2 x double> %237, <2 x i32> <i32 0, i32 3>
%239 = bitcast double* %93 to <2 x double>*
store <2 x double> %238, <2 x double>* %239
%240 = shufflevector <2 x double> %237, <2 x double> %236, <2 x i32> <i32 0, i32 3>
%241 = bitcast double* %135 to <2 x double>*
store <2 x double> %240, <2 x double>* %241
%242 = fsub <2 x double> %45, %131
%243 = fadd <2 x double> %45, %131
%244 = shufflevector <2 x double> %242, <2 x double> %243, <2 x i32> <i32 0, i32 3>
%245 = fadd double %87, %177
%246 = fsub double %89, %175
%247 = insertelement <2 x double> poison, double %245, i64 0
%248 = shufflevector <2 x double> %247, <2 x double> poison, <2 x i32> zeroinitializer
%249 = insertelement <2 x double> poison, double %246, i64 0
%250 = shufflevector <2 x double> %249, <2 x double> poison, <2 x i32> zeroinitializer
%251 = fsub <2 x double> %248, %250
%252 = fadd <2 x double> %248, %250
%253 = shufflevector <2 x double> %251, <2 x double> %252, <2 x i32> <i32 0, i32 3>
%254 = fmul <2 x double> %253, <double 0x3FE6A09E667F3BCD, double 0x3FE6A09E667F3BCD>
%255 = fadd <2 x double> %244, %254
%256 = bitcast double* %18 to <2 x double>*
store <2 x double> %255, <2 x double>* %256
%257 = fsub <2 x double> %244, %254
%258 = bitcast double* %62 to <2 x double>*
store <2 x double> %257, <2 x double>* %258
%259 = shufflevector <2 x double> %242, <2 x double> %243, <2 x i32> <i32 1, i32 2>
%260 = fsub double %87, %177
%261 = fadd double %89, %175
%262 = insertelement <2 x double> poison, double %260, i64 0
%263 = shufflevector <2 x double> %262, <2 x double> poison, <2 x i32> zeroinitializer
%264 = insertelement <2 x double> poison, double %261, i64 0
%265 = shufflevector <2 x double> %264, <2 x double> poison, <2 x i32> zeroinitializer
%266 = fsub <2 x double> %263, %265
%267 = fadd <2 x double> %263, %265
%268 = shufflevector <2 x double> %266, <2 x double> %267, <2 x i32> <i32 0, i32 3>
%269 = fmul <2 x double> %268, <double 0x3FE6A09E667F3BCD, double 0x3FE6A09E667F3BCD>
%270 = fsub <2 x double> %259, %269
%271 = extractelement <2 x double> %270, i64 1
store double %271, double* %108
%272 = fadd <2 x double> %259, %269
%273 = bitcast double* %104 to <2 x double>*
store <2 x double> %272, <2 x double>* %273
%274 = fsub <2 x double> %259, %269
%275 = extractelement <2 x double> %274, i64 0
store double %275, double* %146
ret void
}