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


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

x86 assembly (clang, -O2):
<cftf161>:
movupd 0x80(%rdi),%xmm2
movupd (%rdi),%xmm3
movupd 0x10(%rdi),%xmm1
movupd 0x20(%rdi),%xmm10
movapd %xmm3,%xmm0
addpd  %xmm2,%xmm0
subpd  %xmm2,%xmm3
movupd 0x40(%rdi),%xmm4
movupd 0xc0(%rdi),%xmm2
movapd %xmm4,%xmm5
addpd  %xmm2,%xmm5
subpd  %xmm2,%xmm4
shufpd $0x1,%xmm4,%xmm4
movapd %xmm0,%xmm2
addpd  %xmm5,%xmm0
movapd %xmm0,-0x18(%rsp)
subpd  %xmm5,%xmm2
movapd %xmm2,-0x28(%rsp)
movapd %xmm3,%xmm2
subpd  %xmm4,%xmm2
addpd  %xmm3,%xmm4
movapd %xmm4,%xmm15
movsd  %xmm2,%xmm15
shufpd $0x2,%xmm2,%xmm4
movupd 0x90(%rdi),%xmm2
movapd %xmm1,%xmm13
addpd  %xmm2,%xmm13
subpd  %xmm2,%xmm1
movupd 0x50(%rdi),%xmm2
movupd 0xd0(%rdi),%xmm3
movapd %xmm2,%xmm5
addpd  %xmm3,%xmm5
subpd  %xmm3,%xmm2
shufpd $0x1,%xmm2,%xmm2
movapd %xmm13,%xmm12
addpd  %xmm5,%xmm12
subpd  %xmm5,%xmm13
movapd %xmm1,%xmm7
subpd  %xmm2,%xmm7
addpd  %xmm1,%xmm2
movapd %xmm2,%xmm5
movsd  %xmm7,%xmm5
movapd %xmm2,%xmm1
shufpd $0x1,%xmm7,%xmm1
mulpd  0xe24(%rip),%xmm1
mulpd  0xe2c(%rip),%xmm5
addpd  %xmm1,%xmm5
movapd %xmm7,%xmm6
movsd  %xmm2,%xmm6
shufpd $0x1,%xmm2,%xmm7
movapd 0xe22(%rip),%xmm14
mulpd  %xmm14,%xmm7
mulpd  0xe25(%rip),%xmm6
addpd  %xmm7,%xmm6
movupd 0xa0(%rdi),%xmm1
movapd %xmm10,%xmm7
addpd  %xmm1,%xmm7
subpd  %xmm1,%xmm10
movupd 0x60(%rdi),%xmm2
movupd 0xe0(%rdi),%xmm0
movapd %xmm2,%xmm1
addpd  %xmm0,%xmm1
subpd  %xmm0,%xmm2
movapd %xmm7,%xmm0
addpd  %xmm1,%xmm0
movapd %xmm0,-0x38(%rsp)
subpd  %xmm1,%xmm7
movapd %xmm2,%xmm11
unpckhpd %xmm2,%xmm11
movapd %xmm10,%xmm1
subsd  %xmm11,%xmm1
addsd  %xmm10,%xmm11
unpckhpd %xmm10,%xmm10
movapd %xmm10,%xmm0
addsd  %xmm2,%xmm0
movapd %xmm1,%xmm3
subsd  %xmm0,%xmm3
addsd  %xmm1,%xmm0
unpcklpd %xmm0,%xmm3
subsd  %xmm2,%xmm10
movapd %xmm10,%xmm1
addsd  %xmm11,%xmm1
subsd  %xmm11,%xmm10
unpcklpd %xmm10,%xmm1
movupd 0x30(%rdi),%xmm8
movupd 0xb0(%rdi),%xmm2
movapd %xmm8,%xmm9
addpd  %xmm2,%xmm9
subpd  %xmm2,%xmm8
movupd 0x70(%rdi),%xmm2
movupd 0xf0(%rdi),%xmm10
movapd %xmm2,%xmm0
addpd  %xmm10,%xmm0
subpd  %xmm10,%xmm2
movapd %xmm9,%xmm10
addpd  %xmm0,%xmm10
subpd  %xmm0,%xmm9
shufpd $0x1,%xmm2,%xmm2
movapd %xmm8,%xmm11
subpd  %xmm2,%xmm11
addpd  %xmm8,%xmm2
movapd %xmm2,%xmm0
shufpd $0x1,%xmm11,%xmm0
mulpd  %xmm14,%xmm0
movapd %xmm2,%xmm14
movsd  %xmm11,%xmm14
mulpd  0xd12(%rip),%xmm14
addpd  %xmm0,%xmm14
movapd %xmm11,%xmm0
movsd  %xmm2,%xmm0
shufpd $0x1,%xmm2,%xmm11
mulpd  0xcc5(%rip),%xmm11
mulpd  0xccd(%rip),%xmm0
addpd  %xmm11,%xmm0
movapd 0xcef(%rip),%xmm8
mulpd  %xmm8,%xmm1
movapd %xmm4,%xmm2
subpd  %xmm1,%xmm2
addpd  %xmm4,%xmm1
movapd %xmm6,%xmm4
subpd  %xmm0,%xmm4
addpd  %xmm6,%xmm0
movapd %xmm2,%xmm6
addpd  %xmm4,%xmm6
movupd %xmm6,0xc0(%rdi)
subpd  %xmm4,%xmm2
shufpd $0x1,%xmm0,%xmm0
movupd %xmm2,0xd0(%rdi)
movapd %xmm1,%xmm2
subpd  %xmm0,%xmm2
addpd  %xmm1,%xmm0
movapd %xmm0,%xmm1
movsd  %xmm2,%xmm1
movupd %xmm1,0xe0(%rdi)
shufpd $0x2,%xmm2,%xmm0
mulpd  %xmm8,%xmm3
movupd %xmm0,0xf0(%rdi)
movapd %xmm15,%xmm0
addpd  %xmm3,%xmm0
subpd  %xmm3,%xmm15
movapd %xmm5,%xmm1
addpd  %xmm14,%xmm1
subpd  %xmm14,%xmm5
movapd %xmm0,%xmm2
addpd  %xmm1,%xmm2
movupd %xmm2,0x80(%rdi)
subpd  %xmm1,%xmm0
movapd %xmm9,%xmm1
unpckhpd %xmm9,%xmm1
shufpd $0x1,%xmm5,%xmm5
movupd %xmm0,0x90(%rdi)
movapd %xmm15,%xmm0
subpd  %xmm5,%xmm0
addpd  %xmm15,%xmm5
movapd %xmm5,%xmm2
movsd  %xmm0,%xmm2
movupd %xmm2,0xa0(%rdi)
movapd %xmm13,%xmm2
subsd  %xmm1,%xmm2
addsd  %xmm13,%xmm1
unpckhpd %xmm13,%xmm13
shufpd $0x2,%xmm0,%xmm5
movupd %xmm5,0xb0(%rdi)
movapd %xmm13,%xmm0
addsd  %xmm9,%xmm0
movapd %xmm2,%xmm3
subsd  %xmm0,%xmm3
addsd  %xmm2,%xmm0
unpcklpd %xmm0,%xmm3
subsd  %xmm9,%xmm13
movapd %xmm1,%xmm0
subsd  %xmm13,%xmm0
addsd  %xmm1,%xmm13
unpcklpd %xmm13,%xmm0
shufpd $0x1,%xmm7,%xmm7
mulpd  %xmm8,%xmm3
mulpd  %xmm8,%xmm0
movapd -0x28(%rsp),%xmm2
movapd %xmm2,%xmm1
subpd  %xmm7,%xmm1
addpd  %xmm2,%xmm7
movapd %xmm7,%xmm2
movsd  %xmm1,%xmm2
shufpd $0x1,%xmm7,%xmm1
movapd %xmm2,%xmm4
addpd  %xmm3,%xmm4
movupd %xmm4,0x40(%rdi)
subpd  %xmm3,%xmm2
movupd %xmm2,0x50(%rdi)
movapd %xmm1,%xmm2
subpd  %xmm0,%xmm2
addpd  %xmm0,%xmm1
movhpd %xmm2,0x60(%rdi)
movupd %xmm1,0x68(%rdi)
movlpd %xmm2,0x78(%rdi)
movapd -0x18(%rsp),%xmm1
movapd %xmm1,%xmm0
movapd -0x38(%rsp),%xmm2
addpd  %xmm2,%xmm0
subpd  %xmm2,%xmm1
movapd %xmm1,%xmm3
movapd %xmm12,%xmm1
addpd  %xmm10,%xmm1
subpd  %xmm10,%xmm12
movapd %xmm0,%xmm2
addpd  %xmm1,%xmm2
movupd %xmm2,(%rdi)
subpd  %xmm1,%xmm0
shufpd $0x1,%xmm12,%xmm12
movupd %xmm0,0x10(%rdi)
movapd %xmm3,%xmm0
subpd  %xmm12,%xmm0
addpd  %xmm3,%xmm12
movapd %xmm12,%xmm1
movsd  %xmm0,%xmm1
movupd %xmm1,0x20(%rdi)
shufpd $0x2,%xmm0,%xmm12
movupd %xmm12,0x30(%rdi)
ret

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

LLVM IR (-O2):
define void @cftf161(double* %0) {
%2 = getelementptr inbounds double, double* %0, i64 16
%3 = bitcast double* %0 to <2 x double>*
%4 = load <2 x double>, <2 x double>* %3
%5 = bitcast double* %2 to <2 x double>*
%6 = load <2 x double>, <2 x double>* %5
%7 = fadd <2 x double> %4, %6
%8 = fsub <2 x double> %4, %6
%9 = getelementptr inbounds double, double* %0, i64 8
%10 = getelementptr inbounds double, double* %0, i64 24
%11 = bitcast double* %9 to <2 x double>*
%12 = load <2 x double>, <2 x double>* %11
%13 = bitcast double* %10 to <2 x double>*
%14 = load <2 x double>, <2 x double>* %13
%15 = fadd <2 x double> %12, %14
%16 = fsub <2 x double> %12, %14
%17 = shufflevector <2 x double> %16, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%18 = fadd <2 x double> %7, %15
%19 = fsub <2 x double> %7, %15
%20 = fsub <2 x double> %8, %17
%21 = fadd <2 x double> %8, %17
%22 = shufflevector <2 x double> %20, <2 x double> %21, <2 x i32> <i32 0, i32 3>
%23 = shufflevector <2 x double> %21, <2 x double> %20, <2 x i32> <i32 0, i32 3>
%24 = getelementptr inbounds double, double* %0, i64 2
%25 = getelementptr inbounds double, double* %0, i64 18
%26 = bitcast double* %24 to <2 x double>*
%27 = load <2 x double>, <2 x double>* %26
%28 = bitcast double* %25 to <2 x double>*
%29 = load <2 x double>, <2 x double>* %28
%30 = fadd <2 x double> %27, %29
%31 = fsub <2 x double> %27, %29
%32 = getelementptr inbounds double, double* %0, i64 10
%33 = getelementptr inbounds double, double* %0, i64 26
%34 = bitcast double* %32 to <2 x double>*
%35 = load <2 x double>, <2 x double>* %34
%36 = bitcast double* %33 to <2 x double>*
%37 = load <2 x double>, <2 x double>* %36
%38 = fadd <2 x double> %35, %37
%39 = fsub <2 x double> %35, %37
%40 = shufflevector <2 x double> %39, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%41 = fadd <2 x double> %30, %38
%42 = fsub <2 x double> %30, %38
%43 = extractelement <2 x double> %42, i64 0
%44 = fsub <2 x double> %30, %38
%45 = extractelement <2 x double> %44, i64 1
%46 = fsub <2 x double> %31, %40
%47 = fadd <2 x double> %31, %40
%48 = shufflevector <2 x double> %46, <2 x double> %47, <2 x i32> <i32 0, i32 3>
%49 = shufflevector <2 x double> %47, <2 x double> %46, <2 x i32> <i32 1, i32 2>
%50 = fmul <2 x double> %49, <double 0xBFD87DE2A6AEA963, double 0x3FD87DE2A6AEA963>
%51 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %48, <2 x double> <double 0x3FED906BCF328D46, double 0x3FED906BCF328D46>, <2 x double> %50)
%52 = shufflevector <2 x double> %47, <2 x double> %46, <2 x i32> <i32 0, i32 3>
%53 = shufflevector <2 x double> %46, <2 x double> %47, <2 x i32> <i32 1, i32 2>
%54 = fmul <2 x double> %53, <double 0xBFED906BCF328D46, double 0x3FED906BCF328D46>
%55 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %52, <2 x double> <double 0x3FD87DE2A6AEA963, double 0x3FD87DE2A6AEA963>, <2 x double> %54)
%56 = getelementptr inbounds double, double* %0, i64 4
%57 = getelementptr inbounds double, double* %0, i64 20
%58 = bitcast double* %56 to <2 x double>*
%59 = load <2 x double>, <2 x double>* %58
%60 = bitcast double* %57 to <2 x double>*
%61 = load <2 x double>, <2 x double>* %60
%62 = fadd <2 x double> %59, %61
%63 = fsub <2 x double> %59, %61
%64 = extractelement <2 x double> %63, i64 0
%65 = fsub <2 x double> %59, %61
%66 = extractelement <2 x double> %65, i64 1
%67 = getelementptr inbounds double, double* %0, i64 12
%68 = getelementptr inbounds double, double* %0, i64 28
%69 = getelementptr inbounds double, double* %0, i64 13
%70 = bitcast double* %67 to <2 x double>*
%71 = load <2 x double>, <2 x double>* %70
%72 = bitcast double* %68 to <2 x double>*
%73 = load <2 x double>, <2 x double>* %72
%74 = fadd <2 x double> %71, %73
%75 = fsub <2 x double> %71, %73
%76 = extractelement <2 x double> %75, i64 0
%77 = fsub <2 x double> %71, %73
%78 = extractelement <2 x double> %77, i64 1
%79 = fadd <2 x double> %62, %74
%80 = fsub <2 x double> %62, %74
%81 = shufflevector <2 x double> %80, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%82 = fsub double %64, %78
%83 = fadd double %66, %76
%84 = insertelement <2 x double> poison, double %82, i64 0
%85 = shufflevector <2 x double> %84, <2 x double> poison, <2 x i32> zeroinitializer
%86 = insertelement <2 x double> poison, double %83, i64 0
%87 = shufflevector <2 x double> %86, <2 x double> poison, <2 x i32> zeroinitializer
%88 = fsub <2 x double> %85, %87
%89 = fadd <2 x double> %85, %87
%90 = shufflevector <2 x double> %88, <2 x double> %89, <2 x i32> <i32 0, i32 3>
%91 = fmul <2 x double> %90, <double 0x3FE6A09E667F3BCD, double 0x3FE6A09E667F3BCD>
%92 = fadd double %64, %78
%93 = fsub double %66, %76
%94 = insertelement <2 x double> poison, double %93, i64 0
%95 = shufflevector <2 x double> %94, <2 x double> poison, <2 x i32> zeroinitializer
%96 = insertelement <2 x double> poison, double %92, i64 0
%97 = shufflevector <2 x double> %96, <2 x double> poison, <2 x i32> zeroinitializer
%98 = fadd <2 x double> %95, %97
%99 = fsub <2 x double> %95, %97
%100 = shufflevector <2 x double> %98, <2 x double> %99, <2 x i32> <i32 0, i32 3>
%101 = fmul <2 x double> %100, <double 0x3FE6A09E667F3BCD, double 0x3FE6A09E667F3BCD>
%102 = getelementptr inbounds double, double* %0, i64 6
%103 = getelementptr inbounds double, double* %0, i64 22
%104 = bitcast double* %102 to <2 x double>*
%105 = load <2 x double>, <2 x double>* %104
%106 = bitcast double* %103 to <2 x double>*
%107 = load <2 x double>, <2 x double>* %106
%108 = fadd <2 x double> %105, %107
%109 = fsub <2 x double> %105, %107
%110 = getelementptr inbounds double, double* %0, i64 14
%111 = getelementptr inbounds double, double* %0, i64 30
%112 = getelementptr inbounds double, double* %0, i64 15
%113 = bitcast double* %110 to <2 x double>*
%114 = load <2 x double>, <2 x double>* %113
%115 = bitcast double* %111 to <2 x double>*
%116 = load <2 x double>, <2 x double>* %115
%117 = fadd <2 x double> %114, %116
%118 = fsub <2 x double> %114, %116
%119 = shufflevector <2 x double> %118, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%120 = fadd <2 x double> %108, %117
%121 = fsub <2 x double> %108, %117
%122 = extractelement <2 x double> %121, i64 0
%123 = fsub <2 x double> %108, %117
%124 = extractelement <2 x double> %123, i64 1
%125 = fsub <2 x double> %109, %119
%126 = fadd <2 x double> %109, %119
%127 = shufflevector <2 x double> %125, <2 x double> %126, <2 x i32> <i32 0, i32 3>
%128 = shufflevector <2 x double> %126, <2 x double> %125, <2 x i32> <i32 1, i32 2>
%129 = fmul <2 x double> %128, <double 0xBFED906BCF328D46, double 0x3FED906BCF328D46>
%130 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %127, <2 x double> <double 0x3FD87DE2A6AEA963, double 0x3FD87DE2A6AEA963>, <2 x double> %129)
%131 = shufflevector <2 x double> %126, <2 x double> %125, <2 x i32> <i32 0, i32 3>
%132 = shufflevector <2 x double> %125, <2 x double> %126, <2 x i32> <i32 1, i32 2>
%133 = fmul <2 x double> %132, <double 0xBFD87DE2A6AEA963, double 0x3FD87DE2A6AEA963>
%134 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %131, <2 x double> <double 0x3FED906BCF328D46, double 0x3FED906BCF328D46>, <2 x double> %133)
%135 = fsub <2 x double> %23, %101
%136 = fadd <2 x double> %23, %101
%137 = fsub <2 x double> %55, %134
%138 = fadd <2 x double> %55, %134
%139 = shufflevector <2 x double> %138, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%140 = fadd <2 x double> %135, %137
%141 = bitcast double* %10 to <2 x double>*
store <2 x double> %140, <2 x double>* %141
%142 = fsub <2 x double> %135, %137
%143 = bitcast double* %33 to <2 x double>*
store <2 x double> %142, <2 x double>* %143
%144 = fsub <2 x double> %136, %139
%145 = fadd <2 x double> %136, %139
%146 = shufflevector <2 x double> %144, <2 x double> %145, <2 x i32> <i32 0, i32 3>
%147 = bitcast double* %68 to <2 x double>*
store <2 x double> %146, <2 x double>* %147
%148 = shufflevector <2 x double> %145, <2 x double> %144, <2 x i32> <i32 0, i32 3>
%149 = bitcast double* %111 to <2 x double>*
store <2 x double> %148, <2 x double>* %149
%150 = fadd <2 x double> %22, %91
%151 = fsub <2 x double> %22, %91
%152 = fadd <2 x double> %51, %130
%153 = fsub <2 x double> %51, %130
%154 = shufflevector <2 x double> %153, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%155 = fadd <2 x double> %150, %152
%156 = bitcast double* %2 to <2 x double>*
store <2 x double> %155, <2 x double>* %156
%157 = fsub <2 x double> %150, %152
%158 = bitcast double* %25 to <2 x double>*
store <2 x double> %157, <2 x double>* %158
%159 = fsub <2 x double> %151, %154
%160 = fadd <2 x double> %151, %154
%161 = shufflevector <2 x double> %159, <2 x double> %160, <2 x i32> <i32 0, i32 3>
%162 = bitcast double* %57 to <2 x double>*
store <2 x double> %161, <2 x double>* %162
%163 = shufflevector <2 x double> %160, <2 x double> %159, <2 x i32> <i32 0, i32 3>
%164 = bitcast double* %103 to <2 x double>*
store <2 x double> %163, <2 x double>* %164
%165 = fsub double %43, %124
%166 = fadd double %45, %122
%167 = insertelement <2 x double> poison, double %165, i64 0
%168 = shufflevector <2 x double> %167, <2 x double> poison, <2 x i32> zeroinitializer
%169 = insertelement <2 x double> poison, double %166, i64 0
%170 = shufflevector <2 x double> %169, <2 x double> poison, <2 x i32> zeroinitializer
%171 = fsub <2 x double> %168, %170
%172 = fadd <2 x double> %168, %170
%173 = shufflevector <2 x double> %171, <2 x double> %172, <2 x i32> <i32 0, i32 3>
%174 = fmul <2 x double> %173, <double 0x3FE6A09E667F3BCD, double 0x3FE6A09E667F3BCD>
%175 = fadd double %43, %124
%176 = fsub double %45, %122
%177 = insertelement <2 x double> poison, double %175, i64 0
%178 = shufflevector <2 x double> %177, <2 x double> poison, <2 x i32> zeroinitializer
%179 = insertelement <2 x double> poison, double %176, i64 0
%180 = shufflevector <2 x double> %179, <2 x double> poison, <2 x i32> zeroinitializer
%181 = fsub <2 x double> %178, %180
%182 = fadd <2 x double> %178, %180
%183 = shufflevector <2 x double> %181, <2 x double> %182, <2 x i32> <i32 0, i32 3>
%184 = fmul <2 x double> %183, <double 0x3FE6A09E667F3BCD, double 0x3FE6A09E667F3BCD>
%185 = fsub <2 x double> %19, %81
%186 = fadd <2 x double> %19, %81
%187 = shufflevector <2 x double> %185, <2 x double> %186, <2 x i32> <i32 0, i32 3>
%188 = shufflevector <2 x double> %185, <2 x double> %186, <2 x i32> <i32 1, i32 2>
%189 = fadd <2 x double> %187, %174
%190 = bitcast double* %9 to <2 x double>*
store <2 x double> %189, <2 x double>* %190
%191 = fsub <2 x double> %187, %174
%192 = bitcast double* %32 to <2 x double>*
store <2 x double> %191, <2 x double>* %192
%193 = fsub <2 x double> %188, %184
%194 = extractelement <2 x double> %193, i64 1
store double %194, double* %67
%195 = fadd <2 x double> %188, %184
%196 = bitcast double* %69 to <2 x double>*
store <2 x double> %195, <2 x double>* %196
%197 = fsub <2 x double> %188, %184
%198 = extractelement <2 x double> %197, i64 0
store double %198, double* %112
%199 = fadd <2 x double> %18, %79
%200 = fsub <2 x double> %18, %79
%201 = fadd <2 x double> %41, %120
%202 = fsub <2 x double> %41, %120
%203 = shufflevector <2 x double> %202, <2 x double> poison, <2 x i32> <i32 1, i32 0>
%204 = fadd <2 x double> %199, %201
%205 = bitcast double* %0 to <2 x double>*
store <2 x double> %204, <2 x double>* %205
%206 = fsub <2 x double> %199, %201
%207 = bitcast double* %24 to <2 x double>*
store <2 x double> %206, <2 x double>* %207
%208 = fsub <2 x double> %200, %203
%209 = fadd <2 x double> %200, %203
%210 = shufflevector <2 x double> %208, <2 x double> %209, <2 x i32> <i32 0, i32 3>
%211 = bitcast double* %56 to <2 x double>*
store <2 x double> %210, <2 x double>* %211
%212 = shufflevector <2 x double> %209, <2 x double> %208, <2 x i32> <i32 0, i32 3>
%213 = bitcast double* %102 to <2 x double>*
store <2 x double> %212, <2 x double>* %213
ret void
}