void cft1st(int n, double *a) {
  int j, kj, kr;
  double ew, wn4r, wtmp, wk1r, wk1i, wk2r, wk2i, wk3r, wk3i, wk4r, wk4i, wk5r,
      wk5i, wk6r, wk6i, wk7r, wk7i;
  double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, y0r, y0i, y1r, y1i, y2r, y2i,
      y3r, y3i, y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i;
  wn4r = 0.707106781186547524400844362104849039284835937688;
  x0r = a[0] + a[2];
  x0i = a[1] + a[3];
  x1r = a[0] - a[2];
  x1i = a[1] - a[3];
  x2r = a[4] + a[6];
  x2i = a[5] + a[7];
  x3r = a[4] - a[6];
  x3i = a[5] - a[7];
  y0r = x0r + x2r;
  y0i = x0i + x2i;
  y2r = x0r - x2r;
  y2i = x0i - x2i;
  y1r = x1r - x3i;
  y1i = x1i + x3r;
  y3r = x1r + x3i;
  y3i = x1i - x3r;
  x0r = a[8] + a[10];
  x0i = a[9] + a[11];
  x1r = a[8] - a[10];
  x1i = a[9] - a[11];
  x2r = a[12] + a[14];
  x2i = a[13] + a[15];
  x3r = a[12] - a[14];
  x3i = a[13] - a[15];
  y4r = x0r + x2r;
  y4i = x0i + x2i;
  y6r = x0r - x2r;
  y6i = x0i - x2i;
  x0r = x1r - x3i;
  x0i = x1i + x3r;
  x2r = x1r + x3i;
  x2i = x1i - x3r;
  y5r = wn4r * (x0r - x0i);
  y5i = wn4r * (x0r + x0i);
  y7r = wn4r * (x2r - x2i);
  y7i = wn4r * (x2r + x2i);
  a[2] = y1r + y5r;
  a[3] = y1i + y5i;
  a[10] = y1r - y5r;
  a[11] = y1i - y5i;
  a[6] = y3r - y7i;
  a[7] = y3i + y7r;
  a[14] = y3r + y7i;
  a[15] = y3i - y7r;
  a[0] = y0r + y4r;
  a[1] = y0i + y4i;
  a[8] = y0r - y4r;
  a[9] = y0i - y4i;
  a[4] = y2r - y6i;
  a[5] = y2i + y6r;
  a[12] = y2r + y6i;
  a[13] = y2i - y6r;
  if (n > 16) {
    wk1r = 0.923879532511286756128183189396788286822416625863;
    wk1i = 0.382683432365089771728459984030398866761344562485;
    x0r = a[16] + a[18];
    x0i = a[17] + a[19];
    x1r = a[16] - a[18];
    x1i = a[17] - a[19];
    x2r = a[20] + a[22];
    x2i = a[21] + a[23];
    x3r = a[20] - a[22];
    x3i = a[21] - a[23];
    y0r = x0r + x2r;
    y0i = x0i + x2i;
    y2r = x0r - x2r;
    y2i = x0i - x2i;
    y1r = x1r - x3i;
    y1i = x1i + x3r;
    y3r = x1r + x3i;
    y3i = x1i - x3r;
    x0r = a[24] + a[26];
    x0i = a[25] + a[27];
    x1r = a[24] - a[26];
    x1i = a[25] - a[27];
    x2r = a[28] + a[30];
    x2i = a[29] + a[31];
    x3r = a[28] - a[30];
    x3i = a[29] - a[31];
    y4r = x0r + x2r;
    y4i = x0i + x2i;
    y6r = x0r - x2r;
    y6i = x0i - x2i;
    x0r = x1r - x3i;
    x0i = x1i + x3r;
    x2r = x1r + x3i;
    x2i = x3r - x1i;
    y5r = wk1i * x0r - wk1r * x0i;
    y5i = wk1i * x0i + wk1r * x0r;
    y7r = wk1r * x2r + wk1i * x2i;
    y7i = wk1r * x2i - wk1i * x2r;
    x0r = wk1r * y1r - wk1i * y1i;
    x0i = wk1r * y1i + wk1i * y1r;
    a[18] = x0r + y5r;
    a[19] = x0i + y5i;
    a[26] = y5i - x0i;
    a[27] = x0r - y5r;
    x0r = wk1i * y3r - wk1r * y3i;
    x0i = wk1i * y3i + wk1r * y3r;
    a[22] = x0r - y7r;
    a[23] = x0i + y7i;
    a[30] = y7i - x0i;
    a[31] = x0r + y7r;
    a[16] = y0r + y4r;
    a[17] = y0i + y4i;
    a[24] = y4i - y0i;
    a[25] = y0r - y4r;
    x0r = y2r - y6i;
    x0i = y2i + y6r;
    a[20] = wn4r * (x0r - x0i);
    a[21] = wn4r * (x0i + x0r);
    x0r = y6r - y2i;
    x0i = y2r + y6i;
    a[28] = wn4r * (x0r - x0i);
    a[29] = wn4r * (x0i + x0r);
    ew = 1.570796326794896619231321691639751442098584699687 / n;
    kr = n >> 2;
    for (j = 32; j < n; j += 16) {
      for (kj = n >> 2; kj > (kr ^= kj); kj >>= 1)
        ;
      wk1r = cos(ew * kr);
      wk1i = sin(ew * kr);
      wk2r = 1 - 2 * wk1i * wk1i;
      wk2i = 2 * wk1i * wk1r;
      wtmp = 2 * wk2i;
      wk3r = wk1r - wtmp * wk1i;
      wk3i = wtmp * wk1r - wk1i;
      wk4r = 1 - wtmp * wk2i;
      wk4i = wtmp * wk2r;
      wtmp = 2 * wk4i;
      wk5r = wk3r - wtmp * wk1i;
      wk5i = wtmp * wk1r - wk3i;
      wk6r = wk2r - wtmp * wk2i;
      wk6i = wtmp * wk2r - wk2i;
      wk7r = wk1r - wtmp * wk3i;
      wk7i = wtmp * wk3r - wk1i;
      x0r = a[j] + a[j + 2];
      x0i = a[j + 1] + a[j + 3];
      x1r = a[j] - a[j + 2];
      x1i = a[j + 1] - a[j + 3];
      x2r = a[j + 4] + a[j + 6];
      x2i = a[j + 5] + a[j + 7];
      x3r = a[j + 4] - a[j + 6];
      x3i = a[j + 5] - a[j + 7];
      y0r = x0r + x2r;
      y0i = x0i + x2i;
      y2r = x0r - x2r;
      y2i = x0i - x2i;
      y1r = x1r - x3i;
      y1i = x1i + x3r;
      y3r = x1r + x3i;
      y3i = x1i - x3r;
      x0r = a[j + 8] + a[j + 10];
      x0i = a[j + 9] + a[j + 11];
      x1r = a[j + 8] - a[j + 10];
      x1i = a[j + 9] - a[j + 11];
      x2r = a[j + 12] + a[j + 14];
      x2i = a[j + 13] + a[j + 15];
      x3r = a[j + 12] - a[j + 14];
      x3i = a[j + 13] - a[j + 15];
      y4r = x0r + x2r;
      y4i = x0i + x2i;
      y6r = x0r - x2r;
      y6i = x0i - x2i;
      x0r = x1r - x3i;
      x0i = x1i + x3r;
      x2r = x1r + x3i;
      x2i = x1i - x3r;
      y5r = wn4r * (x0r - x0i);
      y5i = wn4r * (x0r + x0i);
      y7r = wn4r * (x2r - x2i);
      y7i = wn4r * (x2r + x2i);
      x0r = y1r + y5r;
      x0i = y1i + y5i;
      a[j + 2] = wk1r * x0r - wk1i * x0i;
      a[j + 3] = wk1r * x0i + wk1i * x0r;
      x0r = y1r - y5r;
      x0i = y1i - y5i;
      a[j + 10] = wk5r * x0r - wk5i * x0i;
      a[j + 11] = wk5r * x0i + wk5i * x0r;
      x0r = y3r - y7i;
      x0i = y3i + y7r;
      a[j + 6] = wk3r * x0r - wk3i * x0i;
      a[j + 7] = wk3r * x0i + wk3i * x0r;
      x0r = y3r + y7i;
      x0i = y3i - y7r;
      a[j + 14] = wk7r * x0r - wk7i * x0i;
      a[j + 15] = wk7r * x0i + wk7i * x0r;
      a[j] = y0r + y4r;
      a[j + 1] = y0i + y4i;
      x0r = y0r - y4r;
      x0i = y0i - y4i;
      a[j + 8] = wk4r * x0r - wk4i * x0i;
      a[j + 9] = wk4r * x0i + wk4i * x0r;
      x0r = y2r - y6i;
      x0i = y2i + y6r;
      a[j + 4] = wk2r * x0r - wk2i * x0i;
      a[j + 5] = wk2r * x0i + wk2i * x0r;
      x0r = y2r + y6i;
      x0i = y2i - y6r;
      a[j + 12] = wk6r * x0r - wk6i * x0i;
      a[j + 13] = wk6r * x0i + wk6i * x0r;
    }
  }
}


x86 assembly (clang, -O0):
<cft1st>:
push   %rbp
mov    %rsp,%rbp
sub    $0x170,%rsp
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
movsd  0x1ec6(%rip),%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x18(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x10(%rax),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x8(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x18(%rax),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x30(%rax),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x38(%rax),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x20(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x30(%rax),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x28(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x38(%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
subsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
subsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x50(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x58(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x40(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x50(%rax),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x48(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x58(%rax),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x70(%rax),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x78(%rax),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x60(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x70(%rax),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x68(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x78(%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
subsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
subsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
subsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
addsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
subsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
addsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
addsd  -0x140(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x10(%rax)
movsd  -0x108(%rbp),%xmm0
ff
addsd  -0x148(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x18(%rax)
movsd  -0x100(%rbp),%xmm0
ff
subsd  -0x140(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x50(%rax)
movsd  -0x108(%rbp),%xmm0
ff
subsd  -0x148(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x58(%rax)
movsd  -0x120(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x30(%rax)
movsd  -0x128(%rbp),%xmm0
ff
addsd  -0x160(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x38(%rax)
movsd  -0x120(%rbp),%xmm0
ff
addsd  -0x168(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x70(%rax)
movsd  -0x128(%rbp),%xmm0
ff
subsd  -0x160(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x78(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
addsd  -0x130(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
addsd  -0x138(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x8(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
subsd  -0x130(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x40(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
subsd  -0x138(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x48(%rax)
movsd  -0x110(%rbp),%xmm0
ff
subsd  -0x158(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x20(%rax)
movsd  -0x118(%rbp),%xmm0
ff
addsd  -0x150(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x28(%rax)
movsd  -0x110(%rbp),%xmm0
ff
addsd  -0x158(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x60(%rax)
movsd  -0x118(%rbp),%xmm0
ff
subsd  -0x150(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x68(%rax)
cmpl   $0x10,-0x4(%rbp)
jle    2aee <cft1st+0x19ce>
movsd  0x1996(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0x1981(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movsd  0x80(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x90(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x88(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0x98(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x80(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x90(%rax),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0x88(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0x98(%rax),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xa0(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0xb0(%rax),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xa8(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0xb8(%rax),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xa0(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0xb0(%rax),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xa8(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0xb8(%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
subsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
subsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xc0(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0xd0(%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xc8(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0xd8(%rax),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xc0(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0xd0(%rax),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xc8(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0xd8(%rax),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xe0(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0xf0(%rax),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xe8(%rax),%xmm0
mov    -0x10(%rbp),%rax
addsd  0xf8(%rax),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xe0(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0xf0(%rax),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  0xe8(%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  0xf8(%rax),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
subsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x40(%rbp),%xmm1
mulsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x40(%rbp),%xmm1
mulsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x48(%rbp),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x48(%rbp),%xmm1
mulsd  -0xd0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x100(%rbp),%xmm2
ff
movsd  -0x48(%rbp),%xmm1
mulsd  -0x108(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x108(%rbp),%xmm2
ff
movsd  -0x48(%rbp),%xmm1
mulsd  -0x100(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x140(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x90(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x148(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x98(%rax)
movsd  -0x148(%rbp),%xmm0
ff
subsd  -0xb8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0xd0(%rax)
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0x140(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0xd8(%rax)
movsd  -0x48(%rbp),%xmm0
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0x40(%rbp),%xmm1
mulsd  -0x128(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0x40(%rbp),%xmm1
mulsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0x160(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0xb0(%rax)
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0x168(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0xb8(%rax)
movsd  -0x168(%rbp),%xmm0
ff
subsd  -0xb8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0xf0(%rax)
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x160(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0xf8(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
addsd  -0x130(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x80(%rax)
movsd  -0xf8(%rbp),%xmm0
ff
addsd  -0x138(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0x88(%rax)
movsd  -0x138(%rbp),%xmm0
ff
subsd  -0xf8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0xc0(%rax)
movsd  -0xf0(%rbp),%xmm0
ff
subsd  -0x130(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movsd  %xmm0,0xc8(%rax)
movsd  -0x110(%rbp),%xmm0
ff
subsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
addsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
subsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0xa0(%rax)
movsd  -0x30(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm1
ff
addsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0xa8(%rax)
movsd  -0x150(%rbp),%xmm0
ff
subsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x110(%rbp),%xmm0
ff
addsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
subsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0xe0(%rax)
movsd  -0x30(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm1
ff
addsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movsd  %xmm0,0xe8(%rax)
cvtsi2sdl -0x4(%rbp),%xmm1
movsd  0x11f7(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x28(%rbp)
mov    -0x4(%rbp),%eax
sar    $0x2,%eax
mov    %eax,-0x1c(%rbp)
movl   $0x20,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    2ae9 <cft1st+0x19c9>
mov    -0x4(%rbp),%eax
sar    $0x2,%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
mov    -0x18(%rbp),%ecx
xor    -0x1c(%rbp),%ecx
mov    %ecx,-0x1c(%rbp)
cmp    %ecx,%eax
jle    1e66 <cft1st+0xd46>
jmp    1e58 <cft1st+0xd38>
mov    -0x18(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1e3f <cft1st+0xd1f>
movsd  -0x28(%rbp),%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
mulsd  %xmm1,%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  -0x28(%rbp),%xmm0
cvtsi2sdl -0x1c(%rbp),%xmm1
mulsd  %xmm1,%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0x48(%rbp)
movsd  0x1182(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0x115d(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0x1144(%rip),%xmm0
mulsd  -0x48(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0x112d(%rip),%xmm0
mulsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x48(%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  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0x1098(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0x1070(%rip),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x60(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
movsd  -0x68(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x50(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  -0x58(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x40(%rbp),%xmm1
movsd  -0x38(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x7,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x7,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
subsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
subsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x8,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xa,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x9,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xb,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x8,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xa,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x9,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xb,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xc,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xe,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xd,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xf,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xc,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xe,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xd,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xf,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
addsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
subsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
addsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
subsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
subsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
addsd  -0xb8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
subsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
addsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
addsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
addsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x48(%rbp),%xmm1
mulsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x40(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x48(%rbp),%xmm1
mulsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x100(%rbp),%xmm0
ff
subsd  -0x140(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x108(%rbp),%xmm0
ff
subsd  -0x148(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x88(%rbp),%xmm1
ff
mulsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xa,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x80(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x88(%rbp),%xmm1
ff
mulsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xb,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x120(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
addsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x6,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x60(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x7,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x120(%rbp),%xmm0
ff
addsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
subsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xe,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xf,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xf0(%rbp),%xmm0
ff
addsd  -0x130(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xf8(%rbp),%xmm0
ff
addsd  -0x138(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xf0(%rbp),%xmm0
ff
subsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
subsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
mulsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x8,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x70(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
mulsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x9,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x110(%rbp),%xmm0
ff
subsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
addsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x58(%rbp),%xmm1
mulsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x4,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x50(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x58(%rbp),%xmm1
mulsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x5,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x110(%rbp),%xmm0
ff
addsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
subsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xb0(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  -0xb8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xc,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0xd,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x14(%rbp),%eax
add    $0x10,%eax
mov    %eax,-0x14(%rbp)
jmp    1e2a <cft1st+0xd0a>
jmp    2aee <cft1st+0x19ce>
add    $0x170,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cft1st>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0xa0,%rsp
movupd (%rsi),%xmm0
movupd 0x10(%rsi),%xmm1
movupd 0x20(%rsi),%xmm3
movupd 0x30(%rsi),%xmm2
movapd %xmm0,%xmm10
addpd  %xmm1,%xmm10
subpd  %xmm1,%xmm0
movapd %xmm3,%xmm1
addpd  %xmm2,%xmm1
subpd  %xmm2,%xmm3
shufpd $0x1,%xmm3,%xmm3
movapd %xmm10,%xmm9
addpd  %xmm1,%xmm9
subpd  %xmm1,%xmm10
movapd %xmm0,%xmm4
subpd  %xmm3,%xmm4
addpd  %xmm0,%xmm3
movupd 0x40(%rsi),%xmm0
movupd 0x50(%rsi),%xmm1
movapd %xmm0,%xmm5
addpd  %xmm1,%xmm5
subpd  %xmm1,%xmm0
movupd 0x60(%rsi),%xmm2
movupd 0x70(%rsi),%xmm1
movapd %xmm2,%xmm7
subpd  %xmm1,%xmm2
movapd %xmm2,%xmm6
unpckhpd %xmm2,%xmm6
movapd %xmm0,%xmm12
subsd  %xmm6,%xmm12
addsd  %xmm0,%xmm6
unpckhpd %xmm0,%xmm0
addpd  %xmm1,%xmm7
movapd %xmm5,%xmm11
addpd  %xmm7,%xmm11
subpd  %xmm7,%xmm5
movapd %xmm0,%xmm1
subsd  %xmm2,%xmm0
movapd %xmm6,%xmm7
subsd  %xmm0,%xmm7
movsd  0xe87(%rip),%xmm8
addsd  %xmm6,%xmm0
mulsd  %xmm8,%xmm0
movapd %xmm3,%xmm6
subsd  %xmm0,%xmm6
addsd  %xmm3,%xmm0
movsd  %xmm4,%xmm3
unpckhpd %xmm4,%xmm4
shufpd $0x1,%xmm5,%xmm5
addsd  %xmm2,%xmm1
movapd %xmm12,%xmm2
subsd  %xmm1,%xmm2
addsd  %xmm12,%xmm1
unpcklpd %xmm1,%xmm2
mulpd  0xdd7(%rip),%xmm2
mulsd  %xmm8,%xmm7
movapd %xmm3,%xmm1
addpd  %xmm2,%xmm1
movupd %xmm1,0x10(%rsi)
subpd  %xmm2,%xmm3
movupd %xmm3,0x50(%rsi)
movsd  %xmm6,0x30(%rsi)
movapd %xmm4,%xmm1
addsd  %xmm7,%xmm1
movsd  %xmm1,0x38(%rsi)
movsd  %xmm0,0x70(%rsi)
subsd  %xmm7,%xmm4
movsd  %xmm4,0x78(%rsi)
movapd %xmm9,%xmm0
addpd  %xmm11,%xmm0
movupd %xmm0,(%rsi)
subpd  %xmm11,%xmm9
movupd %xmm9,0x40(%rsi)
movapd %xmm10,%xmm0
subpd  %xmm5,%xmm0
addpd  %xmm10,%xmm5
movapd %xmm5,%xmm1
movsd  %xmm0,%xmm1
movupd %xmm1,0x20(%rsi)
shufpd $0x2,%xmm0,%xmm5
movupd %xmm5,0x60(%rsi)
cmp    $0x11,%edi
jl     196d <cft1st+0x84d>
mov    %rsi,%rbx
mov    %edi,%r14d
movupd 0x80(%rsi),%xmm0
movupd 0x90(%rsi),%xmm2
movupd 0xa0(%rsi),%xmm4
movupd 0xb0(%rsi),%xmm3
movapd %xmm0,%xmm12
addpd  %xmm2,%xmm12
subpd  %xmm2,%xmm0
movapd %xmm4,%xmm2
addpd  %xmm3,%xmm2
subpd  %xmm3,%xmm4
shufpd $0x1,%xmm4,%xmm4
movapd %xmm12,%xmm9
addpd  %xmm2,%xmm9
subpd  %xmm2,%xmm12
movapd %xmm0,%xmm5
subpd  %xmm4,%xmm5
addpd  %xmm0,%xmm4
movupd 0xc0(%rsi),%xmm6
movupd 0xd0(%rsi),%xmm0
movapd %xmm6,%xmm3
addpd  %xmm0,%xmm3
subpd  %xmm0,%xmm6
movupd 0xe0(%rsi),%xmm0
movupd 0xf0(%rsi),%xmm2
movapd %xmm0,%xmm1
addpd  %xmm2,%xmm1
subpd  %xmm2,%xmm0
shufpd $0x1,%xmm0,%xmm0
movapd %xmm3,%xmm13
addpd  %xmm1,%xmm13
subpd  %xmm1,%xmm3
movapd %xmm6,%xmm1
subpd  %xmm0,%xmm1
movapd %xmm6,%xmm7
addpd  %xmm0,%xmm7
movapd %xmm7,%xmm2
movsd  %xmm1,%xmm2
subpd  %xmm6,%xmm0
movapd %xmm0,%xmm6
movsd  %xmm7,%xmm6
shufpd $0x1,%xmm7,%xmm0
shufpd $0x1,%xmm1,%xmm7
movapd 0xc83(%rip),%xmm10
mulpd  %xmm10,%xmm7
movapd 0xc85(%rip),%xmm11
mulpd  %xmm11,%xmm2
addpd  %xmm7,%xmm2
mulpd  0xc84(%rip),%xmm0
movapd 0xc8c(%rip),%xmm1
mulpd  %xmm1,%xmm6
addpd  %xmm0,%xmm6
movapd %xmm4,%xmm0
movsd  %xmm5,%xmm0
mulpd  %xmm1,%xmm0
movapd %xmm4,%xmm1
shufpd $0x1,%xmm5,%xmm1
mulpd  0xc77(%rip),%xmm1
addpd  %xmm1,%xmm0
movapd %xmm0,%xmm1
addpd  %xmm2,%xmm1
movupd %xmm1,0x90(%rsi)
movapd %xmm2,%xmm1
shufpd $0x1,%xmm0,%xmm1
shufpd $0x1,%xmm2,%xmm0
subpd  %xmm0,%xmm1
movupd %xmm1,0xd0(%rsi)
movapd %xmm5,%xmm0
movsd  %xmm4,%xmm0
shufpd $0x1,%xmm4,%xmm5
mulpd  %xmm10,%xmm5
mulpd  %xmm11,%xmm0
addpd  %xmm5,%xmm0
movapd %xmm0,%xmm1
subpd  %xmm6,%xmm1
movapd %xmm0,%xmm2
addpd  %xmm6,%xmm2
shufpd $0x2,%xmm2,%xmm1
movupd %xmm1,0xb0(%rsi)
subpd  %xmm0,%xmm6
shufpd $0x1,%xmm2,%xmm6
movapd %xmm3,%xmm0
unpckhpd %xmm3,%xmm0
movupd %xmm6,0xf0(%rsi)
movapd %xmm9,%xmm1
addpd  %xmm13,%xmm1
movupd %xmm1,0x80(%rsi)
movapd %xmm13,%xmm1
shufpd $0x1,%xmm9,%xmm1
shufpd $0x1,%xmm13,%xmm9
movapd %xmm12,%xmm2
subsd  %xmm0,%xmm2
addsd  %xmm12,%xmm0
unpckhpd %xmm12,%xmm12
subpd  %xmm9,%xmm1
movupd %xmm1,0xc0(%rsi)
movapd %xmm12,%xmm1
addsd  %xmm3,%xmm1
movapd %xmm2,%xmm4
subsd  %xmm1,%xmm4
mulsd  %xmm8,%xmm4
movsd  %xmm4,0xa0(%rsi)
addsd  %xmm2,%xmm1
mulsd  %xmm8,%xmm1
movsd  %xmm1,0xa8(%rsi)
subsd  %xmm12,%xmm3
movapd %xmm3,%xmm1
subsd  %xmm0,%xmm1
mulsd  %xmm8,%xmm1
movsd  %xmm1,0xe0(%rsi)
addsd  %xmm3,%xmm0
mulsd  %xmm8,%xmm0
movsd  %xmm0,0xe8(%rsi)
cmp    $0x21,%edi
jb     196d <cft1st+0x84d>
xorps  %xmm0,%xmm0
cvtsi2sd %r14d,%xmm0
movsd  0xb6a(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x18(%rsp)
mov    %r14d,%r15d
shr    $0x2,%r14d
mov    $0x20,%r12d
mov    %r14d,%ebp
nopl   0x0(%rax,%rax,1)
mov    %r14d,%ecx
mov    %r14d,%eax
cs nopw 0x0(%rax,%rax,1)
xor    %ecx,%ebp
shr    %eax
cmp    %ebp,%ecx
mov    %eax,%ecx
jg     1540 <cft1st+0x420>
xorps  %xmm0,%xmm0
cvtsi2sd %ebp,%xmm0
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,(%rsp)
call   1040 <cos@plt>
movapd %xmm0,0x20(%rsp)
movsd  (%rsp),%xmm0
call   1030 <sin@plt>
movapd %xmm0,%xmm13
addsd  %xmm0,%xmm0
movapd 0x20(%rsp),%xmm12
movapd %xmm12,%xmm3
mulsd  %xmm0,%xmm3
mulsd  %xmm13,%xmm0
movsd  0xae9(%rip),%xmm2
movapd %xmm2,%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,%xmm4
movapd %xmm3,%xmm0
addsd  %xmm3,%xmm0
movapd %xmm0,%xmm1
mulsd  %xmm13,%xmm1
movapd %xmm12,%xmm11
subsd  %xmm1,%xmm11
movapd %xmm0,%xmm1
mulsd  %xmm12,%xmm1
subsd  %xmm13,%xmm1
movapd %xmm1,%xmm5
movapd %xmm1,0x40(%rsp)
movapd %xmm4,0x60(%rsp)
movapd %xmm4,%xmm6
mulsd  %xmm0,%xmm6
movapd %xmm6,0x70(%rsp)
movapd %xmm3,0x80(%rsp)
mulsd  %xmm3,%xmm0
subsd  %xmm0,%xmm2
movapd %xmm2,0x90(%rsp)
addsd  %xmm6,%xmm6
movapd %xmm6,%xmm0
mulsd  %xmm13,%xmm0
movapd %xmm11,%xmm10
subsd  %xmm0,%xmm10
movapd %xmm6,%xmm0
mulsd  %xmm3,%xmm0
movapd %xmm4,%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,(%rsp)
movapd %xmm6,%xmm0
mulsd  %xmm5,%xmm0
subsd  %xmm0,%xmm12
lea    0x0(,%r12,8),%rdx
mov    %rdx,%rax
or     $0x10,%rax
movupd (%rbx,%r12,8),%xmm0
movupd (%rbx,%rax,1),%xmm1
movapd %xmm0,%xmm3
addpd  %xmm1,%xmm3
subpd  %xmm1,%xmm0
mov    %rdx,%r8
or     $0x20,%r8
mov    %rdx,%rdi
or     $0x30,%rdi
movupd (%rbx,%r8,1),%xmm7
movupd (%rbx,%rdi,1),%xmm1
movapd %xmm7,%xmm2
addpd  %xmm1,%xmm2
subpd  %xmm1,%xmm7
movapd %xmm3,%xmm15
addpd  %xmm2,%xmm15
subpd  %xmm2,%xmm3
movapd %xmm3,0x50(%rsp)
shufpd $0x1,%xmm7,%xmm7
movapd %xmm0,%xmm2
subpd  %xmm7,%xmm2
addpd  %xmm0,%xmm7
movapd %xmm7,%xmm8
movsd  %xmm2,%xmm8
shufpd $0x2,%xmm2,%xmm7
mov    %rdx,%rsi
or     $0x40,%rsi
mov    %rdx,%rcx
or     $0x50,%rcx
movupd (%rbx,%rsi,1),%xmm2
movupd (%rbx,%rcx,1),%xmm4
movapd %xmm2,%xmm9
addpd  %xmm4,%xmm9
subpd  %xmm4,%xmm2
mov    %rdx,%r9
or     $0x60,%r9
or     $0x70,%rdx
movupd (%rbx,%r9,1),%xmm4
movupd (%rbx,%rdx,1),%xmm1
movapd %xmm4,%xmm0
addpd  %xmm1,%xmm0
subpd  %xmm1,%xmm4
movapd %xmm9,%xmm1
addpd  %xmm0,%xmm1
movapd %xmm1,0x30(%rsp)
subpd  %xmm0,%xmm9
movapd %xmm4,%xmm1
unpckhpd %xmm4,%xmm1
movapd %xmm2,%xmm5
subsd  %xmm1,%xmm5
addsd  %xmm2,%xmm1
movapd %xmm2,%xmm0
unpckhpd %xmm2,%xmm0
movapd %xmm0,%xmm2
addsd  %xmm4,%xmm2
subsd  %xmm4,%xmm0
movapd %xmm5,%xmm3
subsd  %xmm2,%xmm3
addsd  %xmm5,%xmm2
unpcklpd %xmm2,%xmm3
movapd %xmm1,%xmm2
addsd  %xmm0,%xmm2
subsd  %xmm0,%xmm1
unpcklpd %xmm1,%xmm2
movapd %xmm6,%xmm0
movapd %xmm6,%xmm4
mulsd  %xmm11,%xmm6
subsd  %xmm13,%xmm6
movapd 0x886(%rip),%xmm1
mulpd  %xmm1,%xmm3
movapd %xmm8,%xmm1
addpd  %xmm3,%xmm1
movapd %xmm1,%xmm5
shufpd $0x1,%xmm13,%xmm5
movapd 0x8c6(%rip),%xmm14
xorpd  %xmm14,%xmm13
unpcklpd %xmm1,%xmm13
mulpd  %xmm5,%xmm13
movapd 0x20(%rsp),%xmm5
mulsd  %xmm5,%xmm0
unpcklpd %xmm5,%xmm5
mulpd  %xmm1,%xmm5
addpd  %xmm13,%xmm5
movupd %xmm5,(%rbx,%rax,1)
subpd  %xmm3,%xmm8
movapd 0x40(%rsp),%xmm3
subsd  %xmm3,%xmm0
movapd %xmm8,%xmm1
shufpd $0x1,%xmm0,%xmm1
xorpd  %xmm14,%xmm0
unpcklpd %xmm8,%xmm0
mulpd  %xmm1,%xmm0
unpcklpd %xmm10,%xmm10
mulpd  %xmm8,%xmm10
addpd  %xmm0,%xmm10
movupd %xmm10,(%rbx,%rcx,1)
mulpd  0x7f7(%rip),%xmm2
movapd %xmm7,%xmm0
subpd  %xmm2,%xmm0
addpd  %xmm7,%xmm2
movapd %xmm2,%xmm1
shufpd $0x1,%xmm3,%xmm1
xorpd  %xmm14,%xmm3
unpcklpd %xmm0,%xmm3
mulpd  %xmm1,%xmm3
movapd %xmm2,%xmm1
movsd  %xmm0,%xmm1
unpcklpd %xmm11,%xmm11
mulpd  %xmm1,%xmm11
addpd  %xmm3,%xmm11
movupd %xmm11,(%rbx,%rdi,1)
movapd %xmm0,%xmm1
movsd  %xmm2,%xmm1
shufpd $0x1,%xmm6,%xmm0
xorpd  %xmm14,%xmm6
unpcklpd %xmm2,%xmm6
mulpd  %xmm0,%xmm6
unpcklpd %xmm12,%xmm12
mulpd  %xmm1,%xmm12
addpd  %xmm6,%xmm12
movupd %xmm12,(%rbx,%rdx,1)
movapd %xmm15,%xmm0
movapd 0x30(%rsp),%xmm1
addpd  %xmm1,%xmm0
movupd %xmm0,(%rbx,%r12,8)
subpd  %xmm1,%xmm15
movapd %xmm15,%xmm0
movapd 0x70(%rsp),%xmm1
shufpd $0x1,%xmm1,%xmm0
xorpd  %xmm14,%xmm1
unpcklpd %xmm15,%xmm1
mulpd  %xmm0,%xmm1
movapd 0x90(%rsp),%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm15,%xmm0
addpd  %xmm1,%xmm0
movapd 0x60(%rsp),%xmm3
mulsd  %xmm3,%xmm4
movapd 0x80(%rsp),%xmm2
subsd  %xmm2,%xmm4
shufpd $0x1,%xmm9,%xmm9
movupd %xmm0,(%rbx,%rsi,1)
movapd 0x50(%rsp),%xmm1
movapd %xmm1,%xmm0
subpd  %xmm9,%xmm0
addpd  %xmm1,%xmm9
movapd %xmm9,%xmm1
shufpd $0x1,%xmm2,%xmm1
xorpd  %xmm14,%xmm2
unpcklpd %xmm0,%xmm2
mulpd  %xmm1,%xmm2
movapd %xmm9,%xmm1
movsd  %xmm0,%xmm1
unpcklpd %xmm3,%xmm3
mulpd  %xmm1,%xmm3
addpd  %xmm2,%xmm3
movupd %xmm3,(%rbx,%r8,1)
movapd %xmm0,%xmm1
movsd  %xmm9,%xmm1
shufpd $0x1,%xmm4,%xmm0
xorpd  %xmm14,%xmm4
unpcklpd %xmm9,%xmm4
mulpd  %xmm0,%xmm4
movapd (%rsp),%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm1,%xmm0
addpd  %xmm4,%xmm0
movupd %xmm0,(%rbx,%r9,1)
add    $0x10,%r12
cmp    %r15,%r12
jb     1530 <cft1st+0x410>
add    $0xa0,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

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

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