void cftmdl(int n, int l, double *a) {
  int j, j1, j2, j3, j4, j5, j6, j7, k, kj, kr, m;
  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;
  m = l << 3;
  wn4r = 0.707106781186547524400844362104849039284835937688;
  for (j = 0; j < l; j += 2) {
    j1 = j + l;
    j2 = j1 + l;
    j3 = j2 + l;
    j4 = j3 + l;
    j5 = j4 + l;
    j6 = j5 + l;
    j7 = j6 + l;
    x0r = a[j] + a[j1];
    x0i = a[j + 1] + a[j1 + 1];
    x1r = a[j] - a[j1];
    x1i = a[j + 1] - a[j1 + 1];
    x2r = a[j2] + a[j3];
    x2i = a[j2 + 1] + a[j3 + 1];
    x3r = a[j2] - a[j3];
    x3i = a[j2 + 1] - a[j3 + 1];
    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[j4] + a[j5];
    x0i = a[j4 + 1] + a[j5 + 1];
    x1r = a[j4] - a[j5];
    x1i = a[j4 + 1] - a[j5 + 1];
    x2r = a[j6] + a[j7];
    x2i = a[j6 + 1] + a[j7 + 1];
    x3r = a[j6] - a[j7];
    x3i = a[j6 + 1] - a[j7 + 1];
    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[j1] = y1r + y5r;
    a[j1 + 1] = y1i + y5i;
    a[j5] = y1r - y5r;
    a[j5 + 1] = y1i - y5i;
    a[j3] = y3r - y7i;
    a[j3 + 1] = y3i + y7r;
    a[j7] = y3r + y7i;
    a[j7 + 1] = y3i - y7r;
    a[j] = y0r + y4r;
    a[j + 1] = y0i + y4i;
    a[j4] = y0r - y4r;
    a[j4 + 1] = y0i - y4i;
    a[j2] = y2r - y6i;
    a[j2 + 1] = y2i + y6r;
    a[j6] = y2r + y6i;
    a[j6 + 1] = y2i - y6r;
  }
  if (m < n) {
    wk1r = 0.923879532511286756128183189396788286822416625863;
    wk1i = 0.382683432365089771728459984030398866761344562485;
    for (j = m; j < l + m; j += 2) {
      j1 = j + l;
      j2 = j1 + l;
      j3 = j2 + l;
      j4 = j3 + l;
      j5 = j4 + l;
      j6 = j5 + l;
      j7 = j6 + l;
      x0r = a[j] + a[j1];
      x0i = a[j + 1] + a[j1 + 1];
      x1r = a[j] - a[j1];
      x1i = a[j + 1] - a[j1 + 1];
      x2r = a[j2] + a[j3];
      x2i = a[j2 + 1] + a[j3 + 1];
      x3r = a[j2] - a[j3];
      x3i = a[j2 + 1] - a[j3 + 1];
      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[j4] + a[j5];
      x0i = a[j4 + 1] + a[j5 + 1];
      x1r = a[j4] - a[j5];
      x1i = a[j4 + 1] - a[j5 + 1];
      x2r = a[j6] + a[j7];
      x2i = a[j6 + 1] + a[j7 + 1];
      x3r = a[j6] - a[j7];
      x3i = a[j6 + 1] - a[j7 + 1];
      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[j1] = x0r + y5r;
      a[j1 + 1] = x0i + y5i;
      a[j5] = y5i - x0i;
      a[j5 + 1] = x0r - y5r;
      x0r = wk1i * y3r - wk1r * y3i;
      x0i = wk1i * y3i + wk1r * y3r;
      a[j3] = x0r - y7r;
      a[j3 + 1] = x0i + y7i;
      a[j7] = y7i - x0i;
      a[j7 + 1] = x0r + y7r;
      a[j] = y0r + y4r;
      a[j + 1] = y0i + y4i;
      a[j4] = y4i - y0i;
      a[j4 + 1] = y0r - y4r;
      x0r = y2r - y6i;
      x0i = y2i + y6r;
      a[j2] = wn4r * (x0r - x0i);
      a[j2 + 1] = wn4r * (x0i + x0r);
      x0r = y6r - y2i;
      x0i = y2r + y6i;
      a[j6] = wn4r * (x0r - x0i);
      a[j6 + 1] = wn4r * (x0i + x0r);
    }
    ew = 1.570796326794896619231321691639751442098584699687 / n;
    kr = n >> 2;
    for (k = 2 * m; k < n; k += m) {
      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;
      for (j = k; j < l + k; j += 2) {
        j1 = j + l;
        j2 = j1 + l;
        j3 = j2 + l;
        j4 = j3 + l;
        j5 = j4 + l;
        j6 = j5 + l;
        j7 = j6 + l;
        x0r = a[j] + a[j1];
        x0i = a[j + 1] + a[j1 + 1];
        x1r = a[j] - a[j1];
        x1i = a[j + 1] - a[j1 + 1];
        x2r = a[j2] + a[j3];
        x2i = a[j2 + 1] + a[j3 + 1];
        x3r = a[j2] - a[j3];
        x3i = a[j2 + 1] - a[j3 + 1];
        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[j4] + a[j5];
        x0i = a[j4 + 1] + a[j5 + 1];
        x1r = a[j4] - a[j5];
        x1i = a[j4 + 1] - a[j5 + 1];
        x2r = a[j6] + a[j7];
        x2i = a[j6 + 1] + a[j7 + 1];
        x3r = a[j6] - a[j7];
        x3i = a[j6 + 1] - a[j7 + 1];
        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[j1] = wk1r * x0r - wk1i * x0i;
        a[j1 + 1] = wk1r * x0i + wk1i * x0r;
        x0r = y1r - y5r;
        x0i = y1i - y5i;
        a[j5] = wk5r * x0r - wk5i * x0i;
        a[j5 + 1] = wk5r * x0i + wk5i * x0r;
        x0r = y3r - y7i;
        x0i = y3i + y7r;
        a[j3] = wk3r * x0r - wk3i * x0i;
        a[j3 + 1] = wk3r * x0i + wk3i * x0r;
        x0r = y3r + y7i;
        x0i = y3i - y7r;
        a[j7] = wk7r * x0r - wk7i * x0i;
        a[j7 + 1] = wk7r * x0i + wk7i * x0r;
        a[j] = y0r + y4r;
        a[j + 1] = y0i + y4i;
        x0r = y0r - y4r;
        x0i = y0i - y4i;
        a[j4] = wk4r * x0r - wk4i * x0i;
        a[j4 + 1] = wk4r * x0i + wk4i * x0r;
        x0r = y2r - y6i;
        x0i = y2i + y6r;
        a[j2] = wk2r * x0r - wk2i * x0i;
        a[j2 + 1] = wk2r * x0i + wk2i * x0r;
        x0r = y2r + y6i;
        x0i = y2i - y6r;
        a[j6] = wk6r * x0r - wk6i * x0i;
        a[j6 + 1] = wk6r * x0i + wk6i * x0r;
      }
    }
  }
}


x86 assembly (clang, -O0):
<cftmdl>:
push   %rbp
mov    %rsp,%rbp
sub    $0x190,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    %rdx,-0x10(%rbp)
mov    -0x8(%rbp),%eax
shl    $0x3,%eax
mov    %eax,-0x40(%rbp)
movsd  0x1eba(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0x14(%rbp),%eax
cmp    -0x8(%rbp),%eax
jge    1817 <cftmdl+0x6f7>
mov    -0x14(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd0(%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    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe0(%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    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
subsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
addsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
addsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
subsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
addsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
addsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
subsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
addsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0xf0(%rbp),%xmm1
ff
subsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0xf0(%rbp),%xmm1
ff
addsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
addsd  -0x160(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x128(%rbp),%xmm0
ff
addsd  -0x168(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x120(%rbp),%xmm0
ff
subsd  -0x160(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x128(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x140(%rbp),%xmm0
ff
subsd  -0x188(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x148(%rbp),%xmm0
ff
addsd  -0x180(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x140(%rbp),%xmm0
ff
addsd  -0x188(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x148(%rbp),%xmm0
ff
subsd  -0x180(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x110(%rbp),%xmm0
ff
addsd  -0x150(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x118(%rbp),%xmm0
ff
addsd  -0x158(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x110(%rbp),%xmm0
ff
subsd  -0x150(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x118(%rbp),%xmm0
ff
subsd  -0x158(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x130(%rbp),%xmm0
ff
subsd  -0x178(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x138(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x130(%rbp),%xmm0
ff
addsd  -0x178(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x138(%rbp),%xmm0
ff
subsd  -0x170(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
jmp    1152 <cftmdl+0x32>
mov    -0x40(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    2dd2 <cftmdl+0x1cb2>
movsd  0x17e5(%rip),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0x17d0(%rip),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x40(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    -0x8(%rbp),%ecx
add    -0x40(%rbp),%ecx
cmp    %ecx,%eax
jge    20b9 <cftmdl+0xf99>
mov    -0x14(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd0(%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    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe0(%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    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
subsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
addsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
addsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
subsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
addsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
addsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
subsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x60(%rbp),%xmm1
mulsd  -0xd8(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x60(%rbp),%xmm1
mulsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0xf0(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0xf8(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  -0xf0(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0x68(%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,-0xd0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0x128(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  -0x120(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0x160(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0x168(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x168(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0x160(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x68(%rbp),%xmm0
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x60(%rbp),%xmm1
mulsd  -0x148(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  -0x148(%rbp),%xmm2
ff
movsd  -0x60(%rbp),%xmm1
mulsd  -0x140(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0x180(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0x188(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x188(%rbp),%xmm0
ff
subsd  -0xd8(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0x180(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x110(%rbp),%xmm0
ff
addsd  -0x150(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x118(%rbp),%xmm0
ff
addsd  -0x158(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x158(%rbp),%xmm0
ff
subsd  -0x118(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x110(%rbp),%xmm0
ff
subsd  -0x150(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x130(%rbp),%xmm0
ff
subsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
subsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x50(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm1
addsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x170(%rbp),%xmm0
ff
subsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
addsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
subsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x50(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm1
ff
addsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
jmp    1843 <cftmdl+0x723>
cvtsi2sdl -0x4(%rbp),%xmm1
movsd  0xf52(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x4(%rbp),%eax
sar    $0x2,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x40(%rbp),%eax
shl    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x4(%rbp),%eax
jge    2dcd <cftmdl+0x1cad>
mov    -0x4(%rbp),%eax
sar    $0x2,%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
mov    -0x38(%rbp),%ecx
xor    -0x3c(%rbp),%ecx
mov    %ecx,-0x3c(%rbp)
cmp    %ecx,%eax
jle    211d <cftmdl+0xffd>
jmp    210f <cftmdl+0xfef>
mov    -0x38(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    20f6 <cftmdl+0xfd6>
movsd  -0x48(%rbp),%xmm0
cvtsi2sdl -0x3c(%rbp),%xmm1
mulsd  %xmm1,%xmm0
call   1040 <cos@plt>
movsd  %xmm0,-0x60(%rbp)
movsd  -0x48(%rbp),%xmm0
cvtsi2sdl -0x3c(%rbp),%xmm1
mulsd  %xmm1,%xmm0
call   1030 <sin@plt>
movsd  %xmm0,-0x68(%rbp)
movsd  0xecb(%rip),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xea6(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  0xe8d(%rip),%xmm0
mulsd  -0x68(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0xe76(%rip),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x60(%rbp),%xmm1
movsd  -0x58(%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,-0x80(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  -0x60(%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  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm1
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm1,%xmm0
movsd  0xdde(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0xdb0(%rip),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x58(%rbp)
movsd  -0x80(%rbp),%xmm1
movsd  -0x58(%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  -0x58(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x70(%rbp),%xmm1
movsd  -0x58(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x60(%rbp),%xmm1
movsd  -0x58(%rbp),%xmm0
movsd  -0x88(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x80(%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,-0xc8(%rbp)
ff
mov    -0x34(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    -0x8(%rbp),%ecx
add    -0x34(%rbp),%ecx
cmp    %ecx,%eax
jge    2dba <cftmdl+0x1c9a>
mov    -0x14(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x18(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x28(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
add    -0x8(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd0(%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    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x18(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe0(%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    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
subsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
addsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
addsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x148(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
movslq -0x30(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
addsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
addsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
subsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
subsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
subsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
addsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
addsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xe8(%rbp),%xmm0
ff
subsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
subsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
addsd  -0xd8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0xf0(%rbp),%xmm1
ff
subsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  -0xf0(%rbp),%xmm1
ff
addsd  -0xf8(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
addsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
addsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  -0xd8(%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
movslq -0x18(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x60(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x68(%rbp),%xmm1
mulsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x120(%rbp),%xmm0
ff
subsd  -0x160(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
subsd  -0x168(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  -0xd8(%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
movslq -0x28(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xa0(%rbp),%xmm0
ff
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0xa8(%rbp),%xmm1
ff
mulsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x140(%rbp),%xmm0
ff
subsd  -0x188(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
addsd  -0x180(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x88(%rbp),%xmm1
ff
mulsd  -0xd8(%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
movslq -0x20(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x80(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x88(%rbp),%xmm1
ff
mulsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x140(%rbp),%xmm0
ff
addsd  -0x188(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
subsd  -0x180(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  -0xd8(%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
movslq -0x30(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0xc8(%rbp),%xmm1
ff
mulsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x30(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x110(%rbp),%xmm0
ff
addsd  -0x150(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x118(%rbp),%xmm0
ff
addsd  -0x158(%rbp),%xmm0
ff
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x110(%rbp),%xmm0
ff
subsd  -0x150(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
subsd  -0x158(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  -0xd8(%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
movslq -0x24(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x98(%rbp),%xmm1
ff
mulsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x130(%rbp),%xmm0
ff
subsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
addsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
mulsd  -0xd8(%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
movslq -0x1c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x70(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0x78(%rbp),%xmm1
mulsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x130(%rbp),%xmm0
ff
addsd  -0x178(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
subsd  -0x170(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  -0xd8(%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
movslq -0x2c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0xb0(%rbp),%xmm0
ff
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0xb8(%rbp),%xmm1
ff
mulsd  -0xd0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x10(%rbp),%rax
mov    -0x2c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x14(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x14(%rbp)
jmp    23cd <cftmdl+0x12ad>
jmp    2dbf <cftmdl+0x1c9f>
mov    -0x40(%rbp),%eax
add    -0x34(%rbp),%eax
mov    %eax,-0x34(%rbp)
jmp    20e1 <cftmdl+0xfc1>
jmp    2dd2 <cftmdl+0x1cb2>
add    $0x190,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cftmdl>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x188,%rsp
lea    0x0(,%rsi,8),%r8d
mov    %rsi,(%rsp)
test   %esi,%esi
jle    1308 <cftmdl+0x1e8>
mov    (%rsp),%r9d
lea    (%rdx,%r9,8),%r10
mov    %r9,%r14
shl    $0x4,%r14
add    %rdx,%r14
lea    (%r9,%r9,2),%rbp
lea    (%rdx,%rbp,8),%r11
mov    %r9,%rcx
shl    $0x5,%rcx
add    %rdx,%rcx
lea    (%r9,%r9,4),%rax
lea    (%rdx,%rax,8),%rax
shl    $0x4,%rbp
add    %rdx,%rbp
imul   $0x38,%r9,%rsi
add    %rdx,%rsi
xor    %ebx,%ebx
movapd 0xe76(%rip),%xmm8
nopw   0x0(%rax,%rax,1)
movupd (%rdx,%rbx,8),%xmm4
movupd (%r10,%rbx,8),%xmm2
movapd %xmm4,%xmm9
addpd  %xmm2,%xmm9
subpd  %xmm2,%xmm4
movupd (%r14,%rbx,8),%xmm3
movupd (%r11,%rbx,8),%xmm2
movapd %xmm3,%xmm5
addpd  %xmm2,%xmm5
subpd  %xmm2,%xmm3
shufpd $0x1,%xmm3,%xmm3
movapd %xmm9,%xmm11
addpd  %xmm5,%xmm11
subpd  %xmm5,%xmm9
movapd %xmm4,%xmm6
subpd  %xmm3,%xmm6
addpd  %xmm4,%xmm3
movapd %xmm3,%xmm5
movsd  %xmm6,%xmm5
shufpd $0x2,%xmm6,%xmm3
movupd (%rcx,%rbx,8),%xmm6
movupd (%rax,%rbx,8),%xmm7
movapd %xmm6,%xmm4
addpd  %xmm7,%xmm4
subpd  %xmm7,%xmm6
movupd 0x0(%rbp,%rbx,8),%xmm1
movupd (%rsi,%rbx,8),%xmm10
movapd %xmm1,%xmm0
subpd  %xmm10,%xmm1
movapd %xmm1,%xmm7
unpckhpd %xmm1,%xmm7
movapd %xmm6,%xmm2
subsd  %xmm7,%xmm2
addsd  %xmm6,%xmm7
unpckhpd %xmm6,%xmm6
addpd  %xmm10,%xmm0
movapd %xmm4,%xmm10
addpd  %xmm0,%xmm10
subpd  %xmm0,%xmm4
shufpd $0x1,%xmm4,%xmm4
movapd %xmm6,%xmm0
addsd  %xmm1,%xmm0
subsd  %xmm1,%xmm6
movapd %xmm2,%xmm1
subsd  %xmm0,%xmm1
addsd  %xmm2,%xmm0
unpcklpd %xmm0,%xmm1
mulpd  %xmm8,%xmm1
movapd %xmm7,%xmm0
addsd  %xmm6,%xmm0
subsd  %xmm6,%xmm7
unpcklpd %xmm7,%xmm0
mulpd  %xmm8,%xmm0
movapd %xmm5,%xmm2
addpd  %xmm1,%xmm2
movupd %xmm2,(%r10,%rbx,8)
subpd  %xmm1,%xmm5
movupd %xmm5,(%rax,%rbx,8)
movapd %xmm3,%xmm1
subpd  %xmm0,%xmm1
addpd  %xmm3,%xmm0
movapd %xmm0,%xmm2
movsd  %xmm1,%xmm2
movupd %xmm2,(%r11,%rbx,8)
shufpd $0x2,%xmm1,%xmm0
movupd %xmm0,(%rsi,%rbx,8)
movapd %xmm11,%xmm0
addpd  %xmm10,%xmm0
movupd %xmm0,(%rdx,%rbx,8)
subpd  %xmm10,%xmm11
movupd %xmm11,(%rcx,%rbx,8)
movapd %xmm9,%xmm0
subpd  %xmm4,%xmm0
addpd  %xmm9,%xmm4
movapd %xmm4,%xmm1
movsd  %xmm0,%xmm1
movupd %xmm1,(%r14,%rbx,8)
shufpd $0x2,%xmm0,%xmm4
movupd %xmm4,0x0(%rbp,%rbx,8)
add    $0x2,%rbx
cmp    %r9,%rbx
jb     1190 <cftmdl+0x70>
cmp    %edi,%r8d
jge    1bf4 <cftmdl+0xad4>
mov    (%rsp),%rcx
lea    (%rcx,%rcx,8),%eax
movslq %r8d,%rsi
mov    %rsi,0x18(%rsp)
movslq %ecx,%rcx
mov    %rcx,0x8(%rsp)
cmp    %eax,%r8d
jge    15fb <cftmdl+0x4db>
movslq %eax,%r8
mov    0x8(%rsp),%rbx
lea    (%rdx,%rbx,8),%r9
mov    %rbx,%rax
shl    $0x4,%rax
lea    (%rax,%rdx,1),%rsi
add    $0x8,%rsi
lea    (%rbx,%rbx,2),%rax
lea    (%rdx,%rax,8),%r10
mov    %rbx,%rbp
shl    $0x5,%rbp
add    %rdx,%rbp
lea    (%rbx,%rbx,4),%rcx
lea    (%rdx,%rcx,8),%r11
shl    $0x4,%rax
add    %rdx,%rax
add    $0x8,%rax
imul   $0x38,%rbx,%rcx
add    %rdx,%rcx
movapd 0xcbf(%rip),%xmm12
movsd  0xce6(%rip),%xmm13
mov    0x18(%rsp),%rbx
nop
movsd  0x0(%rbp,%rbx,8),%xmm7
movsd  0x8(%rbp,%rbx,8),%xmm1
movsd  (%rdx,%rbx,8),%xmm4
movsd  0x8(%rdx,%rbx,8),%xmm15
movapd %xmm1,%xmm2
unpcklpd %xmm4,%xmm2
movsd  (%r11,%rbx,8),%xmm0
movsd  0x8(%r11,%rbx,8),%xmm8
movsd  (%r9,%rbx,8),%xmm5
movsd  0x8(%r9,%rbx,8),%xmm10
movapd %xmm8,%xmm3
unpcklpd %xmm5,%xmm3
addpd  %xmm2,%xmm3
movsd  -0x8(%rax,%rbx,8),%xmm6
movsd  (%rcx,%rbx,8),%xmm9
movapd %xmm15,%xmm2
unpcklpd %xmm7,%xmm2
movapd %xmm10,%xmm14
unpcklpd %xmm0,%xmm14
addpd  %xmm2,%xmm14
movsd  (%rsi,%rbx,8),%xmm2
unpcklpd %xmm2,%xmm1
unpcklpd %xmm6,%xmm2
movsd  0x8(%r10,%rbx,8),%xmm11
unpcklpd %xmm11,%xmm8
unpcklpd %xmm9,%xmm11
addpd  %xmm2,%xmm11
subpd  %xmm8,%xmm1
unpcklpd %xmm4,%xmm6
unpcklpd %xmm5,%xmm9
movsd  (%rax,%rbx,8),%xmm4
movhpd -0x8(%rsi,%rbx,8),%xmm4
subpd  %xmm9,%xmm6
movsd  0x8(%rcx,%rbx,8),%xmm2
movhpd (%r10,%rbx,8),%xmm2
unpcklpd %xmm15,%xmm7
movapd %xmm4,%xmm5
addpd  %xmm2,%xmm5
unpcklpd %xmm10,%xmm0
movapd %xmm3,%xmm8
subpd  %xmm5,%xmm8
subpd  %xmm0,%xmm7
movapd %xmm14,%xmm9
subpd  %xmm11,%xmm9
subpd  %xmm2,%xmm4
addpd  %xmm14,%xmm11
addpd  %xmm3,%xmm5
movapd %xmm7,%xmm3
subpd  %xmm4,%xmm3
addpd  %xmm7,%xmm4
movapd %xmm4,%xmm2
movsd  %xmm3,%xmm2
movapd %xmm6,%xmm7
addpd  %xmm1,%xmm7
subpd  %xmm1,%xmm6
movapd %xmm6,%xmm1
movsd  %xmm7,%xmm1
mulpd  0xb61(%rip),%xmm2
movapd 0xb68(%rip),%xmm10
mulpd  %xmm10,%xmm1
addpd  %xmm2,%xmm1
movapd %xmm6,%xmm2
shufpd $0x1,%xmm7,%xmm2
mulpd  0xb5e(%rip),%xmm2
movapd %xmm4,%xmm0
shufpd $0x1,%xmm3,%xmm0
mulpd  %xmm12,%xmm0
addpd  %xmm2,%xmm0
movapd %xmm0,%xmm2
addpd  %xmm1,%xmm2
shufpd $0x1,%xmm2,%xmm2
movupd %xmm2,(%r9,%rbx,8)
subpd  %xmm0,%xmm1
movapd %xmm3,%xmm0
movsd  %xmm4,%xmm0
movupd %xmm1,(%r11,%rbx,8)
movapd %xmm7,%xmm1
movsd  %xmm6,%xmm1
mulpd  0xb37(%rip),%xmm0
mulpd  %xmm12,%xmm1
addpd  %xmm0,%xmm1
shufpd $0x1,%xmm6,%xmm7
shufpd $0x1,%xmm4,%xmm3
mulpd  %xmm12,%xmm7
mulpd  %xmm10,%xmm3
addpd  %xmm7,%xmm3
movapd %xmm1,%xmm0
subpd  %xmm3,%xmm0
addpd  %xmm1,%xmm3
movapd %xmm0,%xmm1
shufpd $0x1,%xmm3,%xmm1
movupd %xmm1,(%r10,%rbx,8)
movapd %xmm8,%xmm1
unpckhpd %xmm8,%xmm1
movsd  %xmm0,%xmm3
movapd %xmm9,%xmm4
unpckhpd %xmm9,%xmm4
movupd %xmm3,(%rcx,%rbx,8)
movapd %xmm11,%xmm0
addpd  %xmm5,%xmm0
shufpd $0x1,%xmm0,%xmm0
movupd %xmm0,(%rdx,%rbx,8)
subpd  %xmm11,%xmm5
movupd %xmm5,0x0(%rbp,%rbx,8)
movapd %xmm1,%xmm0
subsd  %xmm8,%xmm0
movapd %xmm9,%xmm2
addsd  %xmm4,%xmm2
movapd %xmm0,%xmm3
subsd  %xmm2,%xmm3
mulsd  %xmm13,%xmm3
movsd  %xmm3,-0x8(%rsi,%rbx,8)
addsd  %xmm0,%xmm2
mulsd  %xmm13,%xmm2
movsd  %xmm2,(%rsi,%rbx,8)
subsd  %xmm9,%xmm4
addsd  %xmm8,%xmm1
movapd %xmm4,%xmm0
subsd  %xmm1,%xmm0
mulsd  %xmm13,%xmm0
movsd  %xmm0,-0x8(%rax,%rbx,8)
addsd  %xmm4,%xmm1
mulsd  %xmm13,%xmm1
movsd  %xmm1,(%rax,%rbx,8)
add    $0x2,%rbx
cmp    %r8,%rbx
jl     1390 <cftmdl+0x270>
mov    (%rsp),%rax
shl    $0x4,%eax
cmp    %edi,%eax
jge    1bf4 <cftmdl+0xad4>
mov    %edi,%r12d
xorps  %xmm0,%xmm0
cvtsi2sd %edi,%xmm0
movsd  0xa5c(%rip),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x68(%rsp)
movslq %eax,%r9
movslq %edi,%rax
mov    %rax,0x58(%rsp)
sar    $0x2,%r12d
lea    (%rdx,%r9,8),%r10
mov    0x8(%rsp),%r8
lea    (%r8,%r9,1),%rax
lea    (%rdx,%rax,8),%rdi
lea    (%r9,%r8,2),%rax
lea    (%rdx,%rax,8),%rbp
lea    (%r8,%r8,2),%rax
lea    (%rax,%r9,1),%rcx
lea    (%rdx,%rcx,8),%rbx
lea    (%r9,%r8,4),%rcx
lea    (%rdx,%rcx,8),%rsi
lea    (%r8,%r8,4),%rcx
add    %r9,%rcx
lea    (%rdx,%rcx,8),%r13
lea    (%r9,%rax,2),%rax
lea    (%rdx,%rax,8),%r15
lea    0x0(,%r8,8),%rax
sub    %r8,%rax
add    %r9,%rax
lea    (%rdx,%rax,8),%r14
xor    %r8d,%r8d
mov    %r9,%r11
mov    %r12d,0x14(%rsp)
mov    %r9,0x60(%rsp)
mov    %r10,0x50(%rsp)
mov    %rdi,0x48(%rsp)
mov    %rsi,0x40(%rsp)
jmp    16c6 <cftmdl+0x5a6>
nopl   0x0(%rax,%rax,1)
mov    0x18(%rsp),%rax
add    %rax,%r11
add    %rax,%r8
cmp    0x58(%rsp),%r11
jge    1bf4 <cftmdl+0xad4>
mov    %r11,0x70(%rsp)
mov    %r8,0x78(%rsp)
mov    0x14(%rsp),%ecx
mov    %ecx,%eax
cs nopw 0x0(%rax,%rax,1)
xor    %ecx,%r12d
sar    %eax
cmp    %r12d,%ecx
mov    %eax,%ecx
jg     16e0 <cftmdl+0x5c0>
xorps  %xmm0,%xmm0
cvtsi2sd %r12d,%xmm0
mulsd  0x68(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
call   1040 <cos@plt>
movapd %xmm0,0x30(%rsp)
movsd  0x20(%rsp),%xmm0
call   1030 <sin@plt>
cmpl   $0x0,(%rsp)
mov    0x60(%rsp),%r9
mov    0x50(%rsp),%r10
mov    0x48(%rsp),%rdi
mov    0x40(%rsp),%rsi
mov    0x78(%rsp),%r8
movapd 0x8c5(%rip),%xmm6
mov    0x70(%rsp),%r11
jle    16b0 <cftmdl+0x590>
mov    0x8(%rsp),%rax
add    %r11,%rax
movapd %xmm0,%xmm12
addsd  %xmm0,%xmm0
movapd 0x30(%rsp),%xmm14
movapd %xmm14,%xmm1
mulsd  %xmm0,%xmm1
mulsd  %xmm12,%xmm0
movsd  0x90b(%rip),%xmm9
subsd  %xmm0,%xmm9
movapd %xmm1,%xmm3
addsd  %xmm1,%xmm3
movapd %xmm3,%xmm2
movapd 0x8d1(%rip),%xmm10
xorpd  %xmm10,%xmm2
movapd %xmm3,%xmm0
mulsd  %xmm12,%xmm0
movapd %xmm14,%xmm13
subsd  %xmm0,%xmm13
movapd %xmm12,%xmm0
xorpd  %xmm10,%xmm0
movapd %xmm0,0x150(%rsp)
movapd %xmm9,%xmm15
mulsd  %xmm3,%xmm15
mulsd  %xmm14,%xmm3
subsd  %xmm12,%xmm3
movapd %xmm15,%xmm0
addsd  %xmm15,%xmm0
movapd %xmm0,%xmm5
xorpd  %xmm10,%xmm5
movapd %xmm0,%xmm8
mulsd  %xmm14,%xmm8
subsd  %xmm3,%xmm8
movapd %xmm5,%xmm4
mulsd  %xmm3,%xmm4
unpcklpd %xmm3,%xmm7
movapd %xmm7,0x100(%rsp)
movapd %xmm10,%xmm7
xorpd  %xmm10,%xmm3
movapd %xmm3,0xf0(%rsp)
movapd %xmm0,%xmm10
mulsd  %xmm9,%xmm10
subsd  %xmm1,%xmm10
movapd %xmm12,%xmm11
mulsd  %xmm5,%xmm11
mulsd  %xmm1,%xmm2
mulsd  %xmm1,%xmm5
unpcklpd %xmm1,%xmm3
movapd %xmm3,0xe0(%rsp)
xorpd  %xmm7,%xmm1
movapd %xmm1,0xd0(%rsp)
mulsd  %xmm13,%xmm0
subsd  %xmm12,%xmm0
addsd  %xmm13,%xmm11
addsd  %xmm14,%xmm4
addsd  0x811(%rip),%xmm2
addsd  %xmm9,%xmm5
unpcklpd %xmm8,%xmm1
movapd %xmm1,0xc0(%rsp)
xorpd  %xmm7,%xmm8
unpcklpd %xmm5,%xmm5
movapd %xmm5,0x120(%rsp)
unpcklpd %xmm10,%xmm1
movapd %xmm1,0xb0(%rsp)
xorpd  %xmm7,%xmm10
unpcklpd %xmm9,%xmm9
movapd %xmm9,0x20(%rsp)
unpcklpd %xmm2,%xmm2
movapd %xmm2,0x170(%rsp)
unpcklpd %xmm15,%xmm1
movapd %xmm1,0xa0(%rsp)
xorpd  %xmm7,%xmm15
movapd %xmm15,0x140(%rsp)
unpcklpd %xmm4,%xmm4
movapd %xmm4,0x110(%rsp)
unpcklpd %xmm0,%xmm1
movapd %xmm1,0x90(%rsp)
xorpd  %xmm7,%xmm0
movapd %xmm0,0x130(%rsp)
unpcklpd %xmm13,%xmm13
movapd %xmm13,0x160(%rsp)
unpcklpd %xmm11,%xmm11
unpcklpd %xmm14,%xmm14
movapd %xmm14,0x30(%rsp)
unpcklpd %xmm12,%xmm0
movapd %xmm0,0x80(%rsp)
mov    %r8,%rcx
cs nopw 0x0(%rax,%rax,1)
nop
movupd (%r10,%rcx,8),%xmm0
movupd (%rdi,%rcx,8),%xmm4
movapd %xmm0,%xmm14
addpd  %xmm4,%xmm14
subpd  %xmm4,%xmm0
movupd 0x0(%rbp,%rcx,8),%xmm4
movupd (%rbx,%rcx,8),%xmm7
movapd %xmm4,%xmm5
addpd  %xmm7,%xmm5
subpd  %xmm7,%xmm4
shufpd $0x1,%xmm4,%xmm4
movapd %xmm14,%xmm13
addpd  %xmm5,%xmm13
subpd  %xmm5,%xmm14
movapd %xmm0,%xmm5
subpd  %xmm4,%xmm5
addpd  %xmm0,%xmm4
movapd %xmm4,%xmm15
movsd  %xmm5,%xmm15
shufpd $0x2,%xmm5,%xmm4
movupd (%rsi,%rcx,8),%xmm12
movupd 0x0(%r13,%rcx,8),%xmm5
movapd %xmm12,%xmm7
addpd  %xmm5,%xmm7
subpd  %xmm5,%xmm12
movupd (%r15,%rcx,8),%xmm9
movupd (%r14,%rcx,8),%xmm1
movapd %xmm9,%xmm3
subpd  %xmm1,%xmm9
movapd %xmm9,%xmm5
unpckhpd %xmm9,%xmm5
movapd %xmm12,%xmm0
subsd  %xmm5,%xmm0
addsd  %xmm12,%xmm5
unpckhpd %xmm12,%xmm12
addpd  %xmm1,%xmm3
movapd %xmm7,%xmm1
addpd  %xmm3,%xmm1
subpd  %xmm3,%xmm7
movapd %xmm12,%xmm3
addsd  %xmm9,%xmm3
subsd  %xmm9,%xmm12
movapd %xmm0,%xmm2
subsd  %xmm3,%xmm2
addsd  %xmm0,%xmm3
unpcklpd %xmm3,%xmm2
mulpd  %xmm6,%xmm2
movapd %xmm5,%xmm0
addsd  %xmm12,%xmm0
subsd  %xmm12,%xmm5
unpcklpd %xmm5,%xmm0
movapd %xmm15,%xmm3
addpd  %xmm2,%xmm3
movapd %xmm3,%xmm5
unpckhpd 0x80(%rsp),%xmm5
movapd 0x150(%rsp),%xmm6
unpcklpd %xmm3,%xmm6
mulpd  %xmm5,%xmm6
mulpd  0x30(%rsp),%xmm3
addpd  %xmm6,%xmm3
movapd 0x595(%rip),%xmm6
mulpd  %xmm6,%xmm0
movupd %xmm3,(%rdi,%rcx,8)
subpd  %xmm2,%xmm15
movapd %xmm15,%xmm2
unpckhpd 0xc0(%rsp),%xmm2
movapd %xmm8,%xmm3
unpcklpd %xmm15,%xmm3
mulpd  %xmm2,%xmm3
mulpd  %xmm11,%xmm15
addpd  %xmm3,%xmm15
movupd %xmm15,0x0(%r13,%rcx,8)
movapd %xmm4,%xmm2
subpd  %xmm0,%xmm2
addpd  %xmm4,%xmm0
movapd %xmm0,%xmm3
unpckhpd 0x100(%rsp),%xmm3
movapd 0xf0(%rsp),%xmm4
unpcklpd %xmm2,%xmm4
mulpd  %xmm3,%xmm4
movapd %xmm2,%xmm3
movsd  %xmm0,%xmm3
movapd 0x130(%rsp),%xmm5
unpcklpd %xmm0,%xmm5
movsd  %xmm2,%xmm0
mulpd  0x160(%rsp),%xmm0
addpd  %xmm0,%xmm4
movupd %xmm4,(%rbx,%rcx,8)
unpckhpd 0x90(%rsp),%xmm2
mulpd  %xmm2,%xmm5
mulpd  0x110(%rsp),%xmm3
addpd  %xmm3,%xmm5
shufpd $0x1,%xmm7,%xmm7
movupd %xmm5,(%r14,%rcx,8)
movapd %xmm13,%xmm0
addpd  %xmm1,%xmm0
movupd %xmm0,(%r10,%rcx,8)
subpd  %xmm1,%xmm13
movapd %xmm13,%xmm0
unpckhpd 0xa0(%rsp),%xmm0
movapd 0x140(%rsp),%xmm1
unpcklpd %xmm13,%xmm1
mulpd  %xmm0,%xmm1
mulpd  0x170(%rsp),%xmm13
addpd  %xmm1,%xmm13
movupd %xmm13,(%rsi,%rcx,8)
movapd %xmm14,%xmm0
subpd  %xmm7,%xmm0
addpd  %xmm14,%xmm7
movapd %xmm7,%xmm1
unpckhpd 0xe0(%rsp),%xmm1
movapd 0xd0(%rsp),%xmm2
unpcklpd %xmm0,%xmm2
mulpd  %xmm1,%xmm2
movapd %xmm0,%xmm1
movsd  %xmm7,%xmm1
movapd %xmm10,%xmm3
unpcklpd %xmm7,%xmm3
movsd  %xmm0,%xmm7
mulpd  0x20(%rsp),%xmm7
addpd  %xmm7,%xmm2
movupd %xmm2,0x0(%rbp,%rcx,8)
unpckhpd 0xb0(%rsp),%xmm0
mulpd  %xmm0,%xmm3
mulpd  0x120(%rsp),%xmm1
addpd  %xmm1,%xmm3
movupd %xmm3,(%r15,%rcx,8)
lea    (%r9,%rcx,1),%rdx
add    $0x2,%rdx
add    $0x2,%rcx
cmp    %rax,%rdx
jl     1940 <cftmdl+0x820>
jmp    16b0 <cftmdl+0x590>
add    $0x188,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define void @cftmdl(i32 %0, i32 %1, double* %2) {
%4 = alloca i32
%5 = alloca i32
%6 = alloca double*
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
%44 = alloca double
%45 = alloca double
%46 = alloca double
%47 = alloca double
%48 = alloca double
%49 = alloca double
%50 = alloca double
%51 = alloca double
%52 = alloca double
%53 = alloca double
%54 = alloca double
%55 = alloca double
%56 = alloca double
%57 = alloca double
%58 = alloca double
%59 = alloca double
store i32 %0, i32* %4
store i32 %1, i32* %5
store double* %2, double** %6
%60 = load i32, i32* %5
%61 = shl i32 %60, 3
store i32 %61, i32* %18
store double 0x3FE6A09E667F3BCD, double* %20
store i32 0, i32* %7
br label %62
62: ; preds = %468, %3
%63 = load i32, i32* %7
%64 = load i32, i32* %5
%65 = icmp slt i32 %63, %64
br i1 %65, label %66, label %471
66: ; preds = %62
%67 = load i32, i32* %7
%68 = load i32, i32* %5
%69 = add nsw i32 %67, %68
store i32 %69, i32* %8
%70 = load i32, i32* %8
%71 = load i32, i32* %5
%72 = add nsw i32 %70, %71
store i32 %72, i32* %9
%73 = load i32, i32* %9
%74 = load i32, i32* %5
%75 = add nsw i32 %73, %74
store i32 %75, i32* %10
%76 = load i32, i32* %10
%77 = load i32, i32* %5
%78 = add nsw i32 %76, %77
store i32 %78, i32* %11
%79 = load i32, i32* %11
%80 = load i32, i32* %5
%81 = add nsw i32 %79, %80
store i32 %81, i32* %12
%82 = load i32, i32* %12
%83 = load i32, i32* %5
%84 = add nsw i32 %82, %83
store i32 %84, i32* %13
%85 = load i32, i32* %13
%86 = load i32, i32* %5
%87 = add nsw i32 %85, %86
store i32 %87, i32* %14
%88 = load double*, double** %6
%89 = load i32, i32* %7
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds double, double* %88, i64 %90
%92 = load double, double* %91
%93 = load double*, double** %6
%94 = load i32, i32* %8
%95 = sext i32 %94 to i64
%96 = getelementptr inbounds double, double* %93, i64 %95
%97 = load double, double* %96
%98 = fadd double %92, %97
store double %98, double* %36
%99 = load double*, double** %6
%100 = load i32, i32* %7
%101 = add nsw i32 %100, 1
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds double, double* %99, i64 %102
%104 = load double, double* %103
%105 = load double*, double** %6
%106 = load i32, i32* %8
%107 = add nsw i32 %106, 1
%108 = sext i32 %107 to i64
%109 = getelementptr inbounds double, double* %105, i64 %108
%110 = load double, double* %109
%111 = fadd double %104, %110
store double %111, double* %37
%112 = load double*, double** %6
%113 = load i32, i32* %7
%114 = sext i32 %113 to i64
%115 = getelementptr inbounds double, double* %112, i64 %114
%116 = load double, double* %115
%117 = load double*, double** %6
%118 = load i32, i32* %8
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds double, double* %117, i64 %119
%121 = load double, double* %120
%122 = fsub double %116, %121
store double %122, double* %38
%123 = load double*, double** %6
%124 = load i32, i32* %7
%125 = add nsw i32 %124, 1
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds double, double* %123, i64 %126
%128 = load double, double* %127
%129 = load double*, double** %6
%130 = load i32, i32* %8
%131 = add nsw i32 %130, 1
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds double, double* %129, i64 %132
%134 = load double, double* %133
%135 = fsub double %128, %134
store double %135, double* %39
%136 = load double*, double** %6
%137 = load i32, i32* %9
%138 = sext i32 %137 to i64
%139 = getelementptr inbounds double, double* %136, i64 %138
%140 = load double, double* %139
%141 = load double*, double** %6
%142 = load i32, i32* %10
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds double, double* %141, i64 %143
%145 = load double, double* %144
%146 = fadd double %140, %145
store double %146, double* %40
%147 = load double*, double** %6
%148 = load i32, i32* %9
%149 = add nsw i32 %148, 1
%150 = sext i32 %149 to i64
%151 = getelementptr inbounds double, double* %147, i64 %150
%152 = load double, double* %151
%153 = load double*, double** %6
%154 = load i32, i32* %10
%155 = add nsw i32 %154, 1
%156 = sext i32 %155 to i64
%157 = getelementptr inbounds double, double* %153, i64 %156
%158 = load double, double* %157
%159 = fadd double %152, %158
store double %159, double* %41
%160 = load double*, double** %6
%161 = load i32, i32* %9
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds double, double* %160, i64 %162
%164 = load double, double* %163
%165 = load double*, double** %6
%166 = load i32, i32* %10
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds double, double* %165, i64 %167
%169 = load double, double* %168
%170 = fsub double %164, %169
store double %170, double* %42
%171 = load double*, double** %6
%172 = load i32, i32* %9
%173 = add nsw i32 %172, 1
%174 = sext i32 %173 to i64
%175 = getelementptr inbounds double, double* %171, i64 %174
%176 = load double, double* %175
%177 = load double*, double** %6
%178 = load i32, i32* %10
%179 = add nsw i32 %178, 1
%180 = sext i32 %179 to i64
%181 = getelementptr inbounds double, double* %177, i64 %180
%182 = load double, double* %181
%183 = fsub double %176, %182
store double %183, double* %43
%184 = load double, double* %36
%185 = load double, double* %40
%186 = fadd double %184, %185
store double %186, double* %44
%187 = load double, double* %37
%188 = load double, double* %41
%189 = fadd double %187, %188
store double %189, double* %45
%190 = load double, double* %36
%191 = load double, double* %40
%192 = fsub double %190, %191
store double %192, double* %48
%193 = load double, double* %37
%194 = load double, double* %41
%195 = fsub double %193, %194
store double %195, double* %49
%196 = load double, double* %38
%197 = load double, double* %43
%198 = fsub double %196, %197
store double %198, double* %46
%199 = load double, double* %39
%200 = load double, double* %42
%201 = fadd double %199, %200
store double %201, double* %47
%202 = load double, double* %38
%203 = load double, double* %43
%204 = fadd double %202, %203
store double %204, double* %50
%205 = load double, double* %39
%206 = load double, double* %42
%207 = fsub double %205, %206
store double %207, double* %51
%208 = load double*, double** %6
%209 = load i32, i32* %11
%210 = sext i32 %209 to i64
%211 = getelementptr inbounds double, double* %208, i64 %210
%212 = load double, double* %211
%213 = load double*, double** %6
%214 = load i32, i32* %12
%215 = sext i32 %214 to i64
%216 = getelementptr inbounds double, double* %213, i64 %215
%217 = load double, double* %216
%218 = fadd double %212, %217
store double %218, double* %36
%219 = load double*, double** %6
%220 = load i32, i32* %11
%221 = add nsw i32 %220, 1
%222 = sext i32 %221 to i64
%223 = getelementptr inbounds double, double* %219, i64 %222
%224 = load double, double* %223
%225 = load double*, double** %6
%226 = load i32, i32* %12
%227 = add nsw i32 %226, 1
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds double, double* %225, i64 %228
%230 = load double, double* %229
%231 = fadd double %224, %230
store double %231, double* %37
%232 = load double*, double** %6
%233 = load i32, i32* %11
%234 = sext i32 %233 to i64
%235 = getelementptr inbounds double, double* %232, i64 %234
%236 = load double, double* %235
%237 = load double*, double** %6
%238 = load i32, i32* %12
%239 = sext i32 %238 to i64
%240 = getelementptr inbounds double, double* %237, i64 %239
%241 = load double, double* %240
%242 = fsub double %236, %241
store double %242, double* %38
%243 = load double*, double** %6
%244 = load i32, i32* %11
%245 = add nsw i32 %244, 1
%246 = sext i32 %245 to i64
%247 = getelementptr inbounds double, double* %243, i64 %246
%248 = load double, double* %247
%249 = load double*, double** %6
%250 = load i32, i32* %12
%251 = add nsw i32 %250, 1
%252 = sext i32 %251 to i64
%253 = getelementptr inbounds double, double* %249, i64 %252
%254 = load double, double* %253
%255 = fsub double %248, %254
store double %255, double* %39
%256 = load double*, double** %6
%257 = load i32, i32* %13
%258 = sext i32 %257 to i64
%259 = getelementptr inbounds double, double* %256, i64 %258
%260 = load double, double* %259
%261 = load double*, double** %6
%262 = load i32, i32* %14
%263 = sext i32 %262 to i64
%264 = getelementptr inbounds double, double* %261, i64 %263
%265 = load double, double* %264
%266 = fadd double %260, %265
store double %266, double* %40
%267 = load double*, double** %6
%268 = load i32, i32* %13
%269 = add nsw i32 %268, 1
%270 = sext i32 %269 to i64
%271 = getelementptr inbounds double, double* %267, i64 %270
%272 = load double, double* %271
%273 = load double*, double** %6
%274 = load i32, i32* %14
%275 = add nsw i32 %274, 1
%276 = sext i32 %275 to i64
%277 = getelementptr inbounds double, double* %273, i64 %276
%278 = load double, double* %277
%279 = fadd double %272, %278
store double %279, double* %41
%280 = load double*, double** %6
%281 = load i32, i32* %13
%282 = sext i32 %281 to i64
%283 = getelementptr inbounds double, double* %280, i64 %282
%284 = load double, double* %283
%285 = load double*, double** %6
%286 = load i32, i32* %14
%287 = sext i32 %286 to i64
%288 = getelementptr inbounds double, double* %285, i64 %287
%289 = load double, double* %288
%290 = fsub double %284, %289
store double %290, double* %42
%291 = load double*, double** %6
%292 = load i32, i32* %13
%293 = add nsw i32 %292, 1
%294 = sext i32 %293 to i64
%295 = getelementptr inbounds double, double* %291, i64 %294
%296 = load double, double* %295
%297 = load double*, double** %6
%298 = load i32, i32* %14
%299 = add nsw i32 %298, 1
%300 = sext i32 %299 to i64
%301 = getelementptr inbounds double, double* %297, i64 %300
%302 = load double, double* %301
%303 = fsub double %296, %302
store double %303, double* %43
%304 = load double, double* %36
%305 = load double, double* %40
%306 = fadd double %304, %305
store double %306, double* %52
%307 = load double, double* %37
%308 = load double, double* %41
%309 = fadd double %307, %308
store double %309, double* %53
%310 = load double, double* %36
%311 = load double, double* %40
%312 = fsub double %310, %311
store double %312, double* %56
%313 = load double, double* %37
%314 = load double, double* %41
%315 = fsub double %313, %314
store double %315, double* %57
%316 = load double, double* %38
%317 = load double, double* %43
%318 = fsub double %316, %317
store double %318, double* %36
%319 = load double, double* %39
%320 = load double, double* %42
%321 = fadd double %319, %320
store double %321, double* %37
%322 = load double, double* %38
%323 = load double, double* %43
%324 = fadd double %322, %323
store double %324, double* %40
%325 = load double, double* %39
%326 = load double, double* %42
%327 = fsub double %325, %326
store double %327, double* %41
%328 = load double, double* %20
%329 = load double, double* %36
%330 = load double, double* %37
%331 = fsub double %329, %330
%332 = fmul double %328, %331
store double %332, double* %54
%333 = load double, double* %20
%334 = load double, double* %36
%335 = load double, double* %37
%336 = fadd double %334, %335
%337 = fmul double %333, %336
store double %337, double* %55
%338 = load double, double* %20
%339 = load double, double* %40
%340 = load double, double* %41
%341 = fsub double %339, %340
%342 = fmul double %338, %341
store double %342, double* %58
%343 = load double, double* %20
%344 = load double, double* %40
%345 = load double, double* %41
%346 = fadd double %344, %345
%347 = fmul double %343, %346
store double %347, double* %59
%348 = load double, double* %46
%349 = load double, double* %54
%350 = fadd double %348, %349
%351 = load double*, double** %6
%352 = load i32, i32* %8
%353 = sext i32 %352 to i64
%354 = getelementptr inbounds double, double* %351, i64 %353
store double %350, double* %354
%355 = load double, double* %47
%356 = load double, double* %55
%357 = fadd double %355, %356
%358 = load double*, double** %6
%359 = load i32, i32* %8
%360 = add nsw i32 %359, 1
%361 = sext i32 %360 to i64
%362 = getelementptr inbounds double, double* %358, i64 %361
store double %357, double* %362
%363 = load double, double* %46
%364 = load double, double* %54
%365 = fsub double %363, %364
%366 = load double*, double** %6
%367 = load i32, i32* %12
%368 = sext i32 %367 to i64
%369 = getelementptr inbounds double, double* %366, i64 %368
store double %365, double* %369
%370 = load double, double* %47
%371 = load double, double* %55
%372 = fsub double %370, %371
%373 = load double*, double** %6
%374 = load i32, i32* %12
%375 = add nsw i32 %374, 1
%376 = sext i32 %375 to i64
%377 = getelementptr inbounds double, double* %373, i64 %376
store double %372, double* %377
%378 = load double, double* %50
%379 = load double, double* %59
%380 = fsub double %378, %379
%381 = load double*, double** %6
%382 = load i32, i32* %10
%383 = sext i32 %382 to i64
%384 = getelementptr inbounds double, double* %381, i64 %383
store double %380, double* %384
%385 = load double, double* %51
%386 = load double, double* %58
%387 = fadd double %385, %386
%388 = load double*, double** %6
%389 = load i32, i32* %10
%390 = add nsw i32 %389, 1
%391 = sext i32 %390 to i64
%392 = getelementptr inbounds double, double* %388, i64 %391
store double %387, double* %392
%393 = load double, double* %50
%394 = load double, double* %59
%395 = fadd double %393, %394
%396 = load double*, double** %6
%397 = load i32, i32* %14
%398 = sext i32 %397 to i64
%399 = getelementptr inbounds double, double* %396, i64 %398
store double %395, double* %399
%400 = load double, double* %51
%401 = load double, double* %58
%402 = fsub double %400, %401
%403 = load double*, double** %6
%404 = load i32, i32* %14
%405 = add nsw i32 %404, 1
%406 = sext i32 %405 to i64
%407 = getelementptr inbounds double, double* %403, i64 %406
store double %402, double* %407
%408 = load double, double* %44
%409 = load double, double* %52
%410 = fadd double %408, %409
%411 = load double*, double** %6
%412 = load i32, i32* %7
%413 = sext i32 %412 to i64
%414 = getelementptr inbounds double, double* %411, i64 %413
store double %410, double* %414
%415 = load double, double* %45
%416 = load double, double* %53
%417 = fadd double %415, %416
%418 = load double*, double** %6
%419 = load i32, i32* %7
%420 = add nsw i32 %419, 1
%421 = sext i32 %420 to i64
%422 = getelementptr inbounds double, double* %418, i64 %421
store double %417, double* %422
%423 = load double, double* %44
%424 = load double, double* %52
%425 = fsub double %423, %424
%426 = load double*, double** %6
%427 = load i32, i32* %11
%428 = sext i32 %427 to i64
%429 = getelementptr inbounds double, double* %426, i64 %428
store double %425, double* %429
%430 = load double, double* %45
%431 = load double, double* %53
%432 = fsub double %430, %431
%433 = load double*, double** %6
%434 = load i32, i32* %11
%435 = add nsw i32 %434, 1
%436 = sext i32 %435 to i64
%437 = getelementptr inbounds double, double* %433, i64 %436
store double %432, double* %437
%438 = load double, double* %48
%439 = load double, double* %57
%440 = fsub double %438, %439
%441 = load double*, double** %6
%442 = load i32, i32* %9
%443 = sext i32 %442 to i64
%444 = getelementptr inbounds double, double* %441, i64 %443
store double %440, double* %444
%445 = load double, double* %49
%446 = load double, double* %56
%447 = fadd double %445, %446
%448 = load double*, double** %6
%449 = load i32, i32* %9
%450 = add nsw i32 %449, 1
%451 = sext i32 %450 to i64
%452 = getelementptr inbounds double, double* %448, i64 %451
store double %447, double* %452
%453 = load double, double* %48
%454 = load double, double* %57
%455 = fadd double %453, %454
%456 = load double*, double** %6
%457 = load i32, i32* %13
%458 = sext i32 %457 to i64
%459 = getelementptr inbounds double, double* %456, i64 %458
store double %455, double* %459
%460 = load double, double* %49
%461 = load double, double* %56
%462 = fsub double %460, %461
%463 = load double*, double** %6
%464 = load i32, i32* %13
%465 = add nsw i32 %464, 1
%466 = sext i32 %465 to i64
%467 = getelementptr inbounds double, double* %463, i64 %466
store double %462, double* %467
br label %468
468: ; preds = %66
%469 = load i32, i32* %7
%470 = add nsw i32 %469, 2
store i32 %470, i32* %7
br label %62
471: ; preds = %62
%472 = load i32, i32* %18
%473 = load i32, i32* %4
%474 = icmp slt i32 %472, %473
br i1 %474, label %475, label %1545
475: ; preds = %471
store double 0x3FED906BCF328D46, double* %22
store double 0x3FD87DE2A6AEA963, double* %23
%476 = load i32, i32* %18
store i32 %476, i32* %7
br label %477
477: ; preds = %937, %475
%478 = load i32, i32* %7
%479 = load i32, i32* %5
%480 = load i32, i32* %18
%481 = add nsw i32 %479, %480
%482 = icmp slt i32 %478, %481
br i1 %482, label %483, label %940
483: ; preds = %477
%484 = load i32, i32* %7
%485 = load i32, i32* %5
%486 = add nsw i32 %484, %485
store i32 %486, i32* %8
%487 = load i32, i32* %8
%488 = load i32, i32* %5
%489 = add nsw i32 %487, %488
store i32 %489, i32* %9
%490 = load i32, i32* %9
%491 = load i32, i32* %5
%492 = add nsw i32 %490, %491
store i32 %492, i32* %10
%493 = load i32, i32* %10
%494 = load i32, i32* %5
%495 = add nsw i32 %493, %494
store i32 %495, i32* %11
%496 = load i32, i32* %11
%497 = load i32, i32* %5
%498 = add nsw i32 %496, %497
store i32 %498, i32* %12
%499 = load i32, i32* %12
%500 = load i32, i32* %5
%501 = add nsw i32 %499, %500
store i32 %501, i32* %13
%502 = load i32, i32* %13
%503 = load i32, i32* %5
%504 = add nsw i32 %502, %503
store i32 %504, i32* %14
%505 = load double*, double** %6
%506 = load i32, i32* %7
%507 = sext i32 %506 to i64
%508 = getelementptr inbounds double, double* %505, i64 %507
%509 = load double, double* %508
%510 = load double*, double** %6
%511 = load i32, i32* %8
%512 = sext i32 %511 to i64
%513 = getelementptr inbounds double, double* %510, i64 %512
%514 = load double, double* %513
%515 = fadd double %509, %514
store double %515, double* %36
%516 = load double*, double** %6
%517 = load i32, i32* %7
%518 = add nsw i32 %517, 1
%519 = sext i32 %518 to i64
%520 = getelementptr inbounds double, double* %516, i64 %519
%521 = load double, double* %520
%522 = load double*, double** %6
%523 = load i32, i32* %8
%524 = add nsw i32 %523, 1
%525 = sext i32 %524 to i64
%526 = getelementptr inbounds double, double* %522, i64 %525
%527 = load double, double* %526
%528 = fadd double %521, %527
store double %528, double* %37
%529 = load double*, double** %6
%530 = load i32, i32* %7
%531 = sext i32 %530 to i64
%532 = getelementptr inbounds double, double* %529, i64 %531
%533 = load double, double* %532
%534 = load double*, double** %6
%535 = load i32, i32* %8
%536 = sext i32 %535 to i64
%537 = getelementptr inbounds double, double* %534, i64 %536
%538 = load double, double* %537
%539 = fsub double %533, %538
store double %539, double* %38
%540 = load double*, double** %6
%541 = load i32, i32* %7
%542 = add nsw i32 %541, 1
%543 = sext i32 %542 to i64
%544 = getelementptr inbounds double, double* %540, i64 %543
%545 = load double, double* %544
%546 = load double*, double** %6
%547 = load i32, i32* %8
%548 = add nsw i32 %547, 1
%549 = sext i32 %548 to i64
%550 = getelementptr inbounds double, double* %546, i64 %549
%551 = load double, double* %550
%552 = fsub double %545, %551
store double %552, double* %39
%553 = load double*, double** %6
%554 = load i32, i32* %9
%555 = sext i32 %554 to i64
%556 = getelementptr inbounds double, double* %553, i64 %555
%557 = load double, double* %556
%558 = load double*, double** %6
%559 = load i32, i32* %10
%560 = sext i32 %559 to i64
%561 = getelementptr inbounds double, double* %558, i64 %560
%562 = load double, double* %561
%563 = fadd double %557, %562
store double %563, double* %40
%564 = load double*, double** %6
%565 = load i32, i32* %9
%566 = add nsw i32 %565, 1
%567 = sext i32 %566 to i64
%568 = getelementptr inbounds double, double* %564, i64 %567
%569 = load double, double* %568
%570 = load double*, double** %6
%571 = load i32, i32* %10
%572 = add nsw i32 %571, 1
%573 = sext i32 %572 to i64
%574 = getelementptr inbounds double, double* %570, i64 %573
%575 = load double, double* %574
%576 = fadd double %569, %575
store double %576, double* %41
%577 = load double*, double** %6
%578 = load i32, i32* %9
%579 = sext i32 %578 to i64
%580 = getelementptr inbounds double, double* %577, i64 %579
%581 = load double, double* %580
%582 = load double*, double** %6
%583 = load i32, i32* %10
%584 = sext i32 %583 to i64
%585 = getelementptr inbounds double, double* %582, i64 %584
%586 = load double, double* %585
%587 = fsub double %581, %586
store double %587, double* %42
%588 = load double*, double** %6
%589 = load i32, i32* %9
%590 = add nsw i32 %589, 1
%591 = sext i32 %590 to i64
%592 = getelementptr inbounds double, double* %588, i64 %591
%593 = load double, double* %592
%594 = load double*, double** %6
%595 = load i32, i32* %10
%596 = add nsw i32 %595, 1
%597 = sext i32 %596 to i64
%598 = getelementptr inbounds double, double* %594, i64 %597
%599 = load double, double* %598
%600 = fsub double %593, %599
store double %600, double* %43
%601 = load double, double* %36
%602 = load double, double* %40
%603 = fadd double %601, %602
store double %603, double* %44
%604 = load double, double* %37
%605 = load double, double* %41
%606 = fadd double %604, %605
store double %606, double* %45
%607 = load double, double* %36
%608 = load double, double* %40
%609 = fsub double %607, %608
store double %609, double* %48
%610 = load double, double* %37
%611 = load double, double* %41
%612 = fsub double %610, %611
store double %612, double* %49
%613 = load double, double* %38
%614 = load double, double* %43
%615 = fsub double %613, %614
store double %615, double* %46
%616 = load double, double* %39
%617 = load double, double* %42
%618 = fadd double %616, %617
store double %618, double* %47
%619 = load double, double* %38
%620 = load double, double* %43
%621 = fadd double %619, %620
store double %621, double* %50
%622 = load double, double* %39
%623 = load double, double* %42
%624 = fsub double %622, %623
store double %624, double* %51
%625 = load double*, double** %6
%626 = load i32, i32* %11
%627 = sext i32 %626 to i64
%628 = getelementptr inbounds double, double* %625, i64 %627
%629 = load double, double* %628
%630 = load double*, double** %6
%631 = load i32, i32* %12
%632 = sext i32 %631 to i64
%633 = getelementptr inbounds double, double* %630, i64 %632
%634 = load double, double* %633
%635 = fadd double %629, %634
store double %635, double* %36
%636 = load double*, double** %6
%637 = load i32, i32* %11
%638 = add nsw i32 %637, 1
%639 = sext i32 %638 to i64
%640 = getelementptr inbounds double, double* %636, i64 %639
%641 = load double, double* %640
%642 = load double*, double** %6
%643 = load i32, i32* %12
%644 = add nsw i32 %643, 1
%645 = sext i32 %644 to i64
%646 = getelementptr inbounds double, double* %642, i64 %645
%647 = load double, double* %646
%648 = fadd double %641, %647
store double %648, double* %37
%649 = load double*, double** %6
%650 = load i32, i32* %11
%651 = sext i32 %650 to i64
%652 = getelementptr inbounds double, double* %649, i64 %651
%653 = load double, double* %652
%654 = load double*, double** %6
%655 = load i32, i32* %12
%656 = sext i32 %655 to i64
%657 = getelementptr inbounds double, double* %654, i64 %656
%658 = load double, double* %657
%659 = fsub double %653, %658
store double %659, double* %38
%660 = load double*, double** %6
%661 = load i32, i32* %11
%662 = add nsw i32 %661, 1
%663 = sext i32 %662 to i64
%664 = getelementptr inbounds double, double* %660, i64 %663
%665 = load double, double* %664
%666 = load double*, double** %6
%667 = load i32, i32* %12
%668 = add nsw i32 %667, 1
%669 = sext i32 %668 to i64
%670 = getelementptr inbounds double, double* %666, i64 %669
%671 = load double, double* %670
%672 = fsub double %665, %671
store double %672, double* %39
%673 = load double*, double** %6
%674 = load i32, i32* %13
%675 = sext i32 %674 to i64
%676 = getelementptr inbounds double, double* %673, i64 %675
%677 = load double, double* %676
%678 = load double*, double** %6
%679 = load i32, i32* %14
%680 = sext i32 %679 to i64
%681 = getelementptr inbounds double, double* %678, i64 %680
%682 = load double, double* %681
%683 = fadd double %677, %682
store double %683, double* %40
%684 = load double*, double** %6
%685 = load i32, i32* %13
%686 = add nsw i32 %685, 1
%687 = sext i32 %686 to i64
%688 = getelementptr inbounds double, double* %684, i64 %687
%689 = load double, double* %688
%690 = load double*, double** %6
%691 = load i32, i32* %14
%692 = add nsw i32 %691, 1
%693 = sext i32 %692 to i64
%694 = getelementptr inbounds double, double* %690, i64 %693
%695 = load double, double* %694
%696 = fadd double %689, %695
store double %696, double* %41
%697 = load double*, double** %6
%698 = load i32, i32* %13
%699 = sext i32 %698 to i64
%700 = getelementptr inbounds double, double* %697, i64 %699
%701 = load double, double* %700
%702 = load double*, double** %6
%703 = load i32, i32* %14
%704 = sext i32 %703 to i64
%705 = getelementptr inbounds double, double* %702, i64 %704
%706 = load double, double* %705
%707 = fsub double %701, %706
store double %707, double* %42
%708 = load double*, double** %6
%709 = load i32, i32* %13
%710 = add nsw i32 %709, 1
%711 = sext i32 %710 to i64
%712 = getelementptr inbounds double, double* %708, i64 %711
%713 = load double, double* %712
%714 = load double*, double** %6
%715 = load i32, i32* %14
%716 = add nsw i32 %715, 1
%717 = sext i32 %716 to i64
%718 = getelementptr inbounds double, double* %714, i64 %717
%719 = load double, double* %718
%720 = fsub double %713, %719
store double %720, double* %43
%721 = load double, double* %36
%722 = load double, double* %40
%723 = fadd double %721, %722
store double %723, double* %52
%724 = load double, double* %37
%725 = load double, double* %41
%726 = fadd double %724, %725
store double %726, double* %53
%727 = load double, double* %36
%728 = load double, double* %40
%729 = fsub double %727, %728
store double %729, double* %56
%730 = load double, double* %37
%731 = load double, double* %41
%732 = fsub double %730, %731
store double %732, double* %57
%733 = load double, double* %38
%734 = load double, double* %43
%735 = fsub double %733, %734
store double %735, double* %36
%736 = load double, double* %39
%737 = load double, double* %42
%738 = fadd double %736, %737
store double %738, double* %37
%739 = load double, double* %38
%740 = load double, double* %43
%741 = fadd double %739, %740
store double %741, double* %40
%742 = load double, double* %42
%743 = load double, double* %39
%744 = fsub double %742, %743
store double %744, double* %41
%745 = load double, double* %23
%746 = load double, double* %36
%747 = load double, double* %22
%748 = load double, double* %37
%749 = fmul double %747, %748
%750 = fneg double %749
%751 = call double @llvm.fmuladd.f64(double %745, double %746, double %750)
store double %751, double* %54
%752 = load double, double* %23
%753 = load double, double* %37
%754 = load double, double* %22
%755 = load double, double* %36
%756 = fmul double %754, %755
%757 = call double @llvm.fmuladd.f64(double %752, double %753, double %756)
store double %757, double* %55
%758 = load double, double* %22
%759 = load double, double* %40
%760 = load double, double* %23
%761 = load double, double* %41
%762 = fmul double %760, %761
%763 = call double @llvm.fmuladd.f64(double %758, double %759, double %762)
store double %763, double* %58
%764 = load double, double* %22
%765 = load double, double* %41
%766 = load double, double* %23
%767 = load double, double* %40
%768 = fmul double %766, %767
%769 = fneg double %768
%770 = call double @llvm.fmuladd.f64(double %764, double %765, double %769)
store double %770, double* %59
%771 = load double, double* %22
%772 = load double, double* %46
%773 = load double, double* %23
%774 = load double, double* %47
%775 = fmul double %773, %774
%776 = fneg double %775
%777 = call double @llvm.fmuladd.f64(double %771, double %772, double %776)
store double %777, double* %36
%778 = load double, double* %22
%779 = load double, double* %47
%780 = load double, double* %23
%781 = load double, double* %46
%782 = fmul double %780, %781
%783 = call double @llvm.fmuladd.f64(double %778, double %779, double %782)
store double %783, double* %37
%784 = load double, double* %36
%785 = load double, double* %54
%786 = fadd double %784, %785
%787 = load double*, double** %6
%788 = load i32, i32* %8
%789 = sext i32 %788 to i64
%790 = getelementptr inbounds double, double* %787, i64 %789
store double %786, double* %790
%791 = load double, double* %37
%792 = load double, double* %55
%793 = fadd double %791, %792
%794 = load double*, double** %6
%795 = load i32, i32* %8
%796 = add nsw i32 %795, 1
%797 = sext i32 %796 to i64
%798 = getelementptr inbounds double, double* %794, i64 %797
store double %793, double* %798
%799 = load double, double* %55
%800 = load double, double* %37
%801 = fsub double %799, %800
%802 = load double*, double** %6
%803 = load i32, i32* %12
%804 = sext i32 %803 to i64
%805 = getelementptr inbounds double, double* %802, i64 %804
store double %801, double* %805
%806 = load double, double* %36
%807 = load double, double* %54
%808 = fsub double %806, %807
%809 = load double*, double** %6
%810 = load i32, i32* %12
%811 = add nsw i32 %810, 1
%812 = sext i32 %811 to i64
%813 = getelementptr inbounds double, double* %809, i64 %812
store double %808, double* %813
%814 = load double, double* %23
%815 = load double, double* %50
%816 = load double, double* %22
%817 = load double, double* %51
%818 = fmul double %816, %817
%819 = fneg double %818
%820 = call double @llvm.fmuladd.f64(double %814, double %815, double %819)
store double %820, double* %36
%821 = load double, double* %23
%822 = load double, double* %51
%823 = load double, double* %22
%824 = load double, double* %50
%825 = fmul double %823, %824
%826 = call double @llvm.fmuladd.f64(double %821, double %822, double %825)
store double %826, double* %37
%827 = load double, double* %36
%828 = load double, double* %58
%829 = fsub double %827, %828
%830 = load double*, double** %6
%831 = load i32, i32* %10
%832 = sext i32 %831 to i64
%833 = getelementptr inbounds double, double* %830, i64 %832
store double %829, double* %833
%834 = load double, double* %37
%835 = load double, double* %59
%836 = fadd double %834, %835
%837 = load double*, double** %6
%838 = load i32, i32* %10
%839 = add nsw i32 %838, 1
%840 = sext i32 %839 to i64
%841 = getelementptr inbounds double, double* %837, i64 %840
store double %836, double* %841
%842 = load double, double* %59
%843 = load double, double* %37
%844 = fsub double %842, %843
%845 = load double*, double** %6
%846 = load i32, i32* %14
%847 = sext i32 %846 to i64
%848 = getelementptr inbounds double, double* %845, i64 %847
store double %844, double* %848
%849 = load double, double* %36
%850 = load double, double* %58
%851 = fadd double %849, %850
%852 = load double*, double** %6
%853 = load i32, i32* %14
%854 = add nsw i32 %853, 1
%855 = sext i32 %854 to i64
%856 = getelementptr inbounds double, double* %852, i64 %855
store double %851, double* %856
%857 = load double, double* %44
%858 = load double, double* %52
%859 = fadd double %857, %858
%860 = load double*, double** %6
%861 = load i32, i32* %7
%862 = sext i32 %861 to i64
%863 = getelementptr inbounds double, double* %860, i64 %862
store double %859, double* %863
%864 = load double, double* %45
%865 = load double, double* %53
%866 = fadd double %864, %865
%867 = load double*, double** %6
%868 = load i32, i32* %7
%869 = add nsw i32 %868, 1
%870 = sext i32 %869 to i64
%871 = getelementptr inbounds double, double* %867, i64 %870
store double %866, double* %871
%872 = load double, double* %53
%873 = load double, double* %45
%874 = fsub double %872, %873
%875 = load double*, double** %6
%876 = load i32, i32* %11
%877 = sext i32 %876 to i64
%878 = getelementptr inbounds double, double* %875, i64 %877
store double %874, double* %878
%879 = load double, double* %44
%880 = load double, double* %52
%881 = fsub double %879, %880
%882 = load double*, double** %6
%883 = load i32, i32* %11
%884 = add nsw i32 %883, 1
%885 = sext i32 %884 to i64
%886 = getelementptr inbounds double, double* %882, i64 %885
store double %881, double* %886
%887 = load double, double* %48
%888 = load double, double* %57
%889 = fsub double %887, %888
store double %889, double* %36
%890 = load double, double* %49
%891 = load double, double* %56
%892 = fadd double %890, %891
store double %892, double* %37
%893 = load double, double* %20
%894 = load double, double* %36
%895 = load double, double* %37
%896 = fsub double %894, %895
%897 = fmul double %893, %896
%898 = load double*, double** %6
%899 = load i32, i32* %9
%900 = sext i32 %899 to i64
%901 = getelementptr inbounds double, double* %898, i64 %900
store double %897, double* %901
%902 = load double, double* %20
%903 = load double, double* %37
%904 = load double, double* %36
%905 = fadd double %903, %904
%906 = fmul double %902, %905
%907 = load double*, double** %6
%908 = load i32, i32* %9
%909 = add nsw i32 %908, 1
%910 = sext i32 %909 to i64
%911 = getelementptr inbounds double, double* %907, i64 %910
store double %906, double* %911
%912 = load double, double* %56
%913 = load double, double* %49
%914 = fsub double %912, %913
store double %914, double* %36
%915 = load double, double* %48
%916 = load double, double* %57
%917 = fadd double %915, %916
store double %917, double* %37
%918 = load double, double* %20
%919 = load double, double* %36
%920 = load double, double* %37
%921 = fsub double %919, %920
%922 = fmul double %918, %921
%923 = load double*, double** %6
%924 = load i32, i32* %13
%925 = sext i32 %924 to i64
%926 = getelementptr inbounds double, double* %923, i64 %925
store double %922, double* %926
%927 = load double, double* %20
%928 = load double, double* %37
%929 = load double, double* %36
%930 = fadd double %928, %929
%931 = fmul double %927, %930
%932 = load double*, double** %6
%933 = load i32, i32* %13
%934 = add nsw i32 %933, 1
%935 = sext i32 %934 to i64
%936 = getelementptr inbounds double, double* %932, i64 %935
store double %931, double* %936
br label %937
937: ; preds = %483
%938 = load i32, i32* %7
%939 = add nsw i32 %938, 2
store i32 %939, i32* %7
br label %477
940: ; preds = %477
%941 = load i32, i32* %4
%942 = sitofp i32 %941 to double
%943 = fdiv double 0x3FF921FB54442D18, %942
store double %943, double* %19
%944 = load i32, i32* %4
%945 = ashr i32 %944, 2
store i32 %945, i32* %17
%946 = load i32, i32* %18
%947 = mul nsw i32 2, %946
store i32 %947, i32* %15
br label %948
948: ; preds = %1540, %940
%949 = load i32, i32* %15
%950 = load i32, i32* %4
%951 = icmp slt i32 %949, %950
br i1 %951, label %952, label %1544
952: ; preds = %948
%953 = load i32, i32* %4
%954 = ashr i32 %953, 2
store i32 %954, i32* %16
br label %955
955: ; preds = %962, %952
%956 = load i32, i32* %16
%957 = load i32, i32* %16
%958 = load i32, i32* %17
%959 = xor i32 %958, %957
store i32 %959, i32* %17
%960 = icmp sgt i32 %956, %959
br i1 %960, label %961, label %965
961: ; preds = %955
br label %962
962: ; preds = %961
%963 = load i32, i32* %16
%964 = ashr i32 %963, 1
store i32 %964, i32* %16
br label %955
965: ; preds = %955
%966 = load double, double* %19
%967 = load i32, i32* %17
%968 = sitofp i32 %967 to double
%969 = fmul double %966, %968
%970 = call double @cos(double %969)
store double %970, double* %22
%971 = load double, double* %19
%972 = load i32, i32* %17
%973 = sitofp i32 %972 to double
%974 = fmul double %971, %973
%975 = call double @sin(double %974)
store double %975, double* %23
%976 = load double, double* %23
%977 = fmul double 2.000000e+00, %976
%978 = load double, double* %23
%979 = fneg double %977
%980 = call double @llvm.fmuladd.f64(double %979, double %978, double 1.000000e+00)
store double %980, double* %24
%981 = load double, double* %23
%982 = fmul double 2.000000e+00, %981
%983 = load double, double* %22
%984 = fmul double %982, %983
store double %984, double* %25
%985 = load double, double* %25
%986 = fmul double 2.000000e+00, %985
store double %986, double* %21
%987 = load double, double* %22
%988 = load double, double* %21
%989 = load double, double* %23
%990 = fneg double %988
%991 = call double @llvm.fmuladd.f64(double %990, double %989, double %987)
store double %991, double* %26
%992 = load double, double* %21
%993 = load double, double* %22
%994 = load double, double* %23
%995 = fneg double %994
%996 = call double @llvm.fmuladd.f64(double %992, double %993, double %995)
store double %996, double* %27
%997 = load double, double* %21
%998 = load double, double* %25
%999 = fneg double %997
%1000 = call double @llvm.fmuladd.f64(double %999, double %998, double 1.000000e+00)
store double %1000, double* %28
%1001 = load double, double* %21
%1002 = load double, double* %24
%1003 = fmul double %1001, %1002
store double %1003, double* %29
%1004 = load double, double* %29
%1005 = fmul double 2.000000e+00, %1004
store double %1005, double* %21
%1006 = load double, double* %26
%1007 = load double, double* %21
%1008 = load double, double* %23
%1009 = fneg double %1007
%1010 = call double @llvm.fmuladd.f64(double %1009, double %1008, double %1006)
store double %1010, double* %30
%1011 = load double, double* %21
%1012 = load double, double* %22
%1013 = load double, double* %27
%1014 = fneg double %1013
%1015 = call double @llvm.fmuladd.f64(double %1011, double %1012, double %1014)
store double %1015, double* %31
%1016 = load double, double* %24
%1017 = load double, double* %21
%1018 = load double, double* %25
%1019 = fneg double %1017
%1020 = call double @llvm.fmuladd.f64(double %1019, double %1018, double %1016)
store double %1020, double* %32
%1021 = load double, double* %21
%1022 = load double, double* %24
%1023 = load double, double* %25
%1024 = fneg double %1023
%1025 = call double @llvm.fmuladd.f64(double %1021, double %1022, double %1024)
store double %1025, double* %33
%1026 = load double, double* %22
%1027 = load double, double* %21
%1028 = load double, double* %27
%1029 = fneg double %1027
%1030 = call double @llvm.fmuladd.f64(double %1029, double %1028, double %1026)
store double %1030, double* %34
%1031 = load double, double* %21
%1032 = load double, double* %26
%1033 = load double, double* %23
%1034 = fneg double %1033
%1035 = call double @llvm.fmuladd.f64(double %1031, double %1032, double %1034)
store double %1035, double* %35
%1036 = load i32, i32* %15
store i32 %1036, i32* %7
br label %1037
1037: ; preds = %1536, %965
%1038 = load i32, i32* %7
%1039 = load i32, i32* %5
%1040 = load i32, i32* %15
%1041 = add nsw i32 %1039, %1040
%1042 = icmp slt i32 %1038, %1041
br i1 %1042, label %1043, label %1539
1043: ; preds = %1037
%1044 = load i32, i32* %7
%1045 = load i32, i32* %5
%1046 = add nsw i32 %1044, %1045
store i32 %1046, i32* %8
%1047 = load i32, i32* %8
%1048 = load i32, i32* %5
%1049 = add nsw i32 %1047, %1048
store i32 %1049, i32* %9
%1050 = load i32, i32* %9
%1051 = load i32, i32* %5
%1052 = add nsw i32 %1050, %1051
store i32 %1052, i32* %10
%1053 = load i32, i32* %10
%1054 = load i32, i32* %5
%1055 = add nsw i32 %1053, %1054
store i32 %1055, i32* %11
%1056 = load i32, i32* %11
%1057 = load i32, i32* %5
%1058 = add nsw i32 %1056, %1057
store i32 %1058, i32* %12
%1059 = load i32, i32* %12
%1060 = load i32, i32* %5
%1061 = add nsw i32 %1059, %1060
store i32 %1061, i32* %13
%1062 = load i32, i32* %13
%1063 = load i32, i32* %5
%1064 = add nsw i32 %1062, %1063
store i32 %1064, i32* %14
%1065 = load double*, double** %6
%1066 = load i32, i32* %7
%1067 = sext i32 %1066 to i64
%1068 = getelementptr inbounds double, double* %1065, i64 %1067
%1069 = load double, double* %1068
%1070 = load double*, double** %6
%1071 = load i32, i32* %8
%1072 = sext i32 %1071 to i64
%1073 = getelementptr inbounds double, double* %1070, i64 %1072
%1074 = load double, double* %1073
%1075 = fadd double %1069, %1074
store double %1075, double* %36
%1076 = load double*, double** %6
%1077 = load i32, i32* %7
%1078 = add nsw i32 %1077, 1
%1079 = sext i32 %1078 to i64
%1080 = getelementptr inbounds double, double* %1076, i64 %1079
%1081 = load double, double* %1080
%1082 = load double*, double** %6
%1083 = load i32, i32* %8
%1084 = add nsw i32 %1083, 1
%1085 = sext i32 %1084 to i64
%1086 = getelementptr inbounds double, double* %1082, i64 %1085
%1087 = load double, double* %1086
%1088 = fadd double %1081, %1087
store double %1088, double* %37
%1089 = load double*, double** %6
%1090 = load i32, i32* %7
%1091 = sext i32 %1090 to i64
%1092 = getelementptr inbounds double, double* %1089, i64 %1091
%1093 = load double, double* %1092
%1094 = load double*, double** %6
%1095 = load i32, i32* %8
%1096 = sext i32 %1095 to i64
%1097 = getelementptr inbounds double, double* %1094, i64 %1096
%1098 = load double, double* %1097
%1099 = fsub double %1093, %1098
store double %1099, double* %38
%1100 = load double*, double** %6
%1101 = load i32, i32* %7
%1102 = add nsw i32 %1101, 1
%1103 = sext i32 %1102 to i64
%1104 = getelementptr inbounds double, double* %1100, i64 %1103
%1105 = load double, double* %1104
%1106 = load double*, double** %6
%1107 = load i32, i32* %8
%1108 = add nsw i32 %1107, 1
%1109 = sext i32 %1108 to i64
%1110 = getelementptr inbounds double, double* %1106, i64 %1109
%1111 = load double, double* %1110
%1112 = fsub double %1105, %1111
store double %1112, double* %39
%1113 = load double*, double** %6
%1114 = load i32, i32* %9
%1115 = sext i32 %1114 to i64
%1116 = getelementptr inbounds double, double* %1113, i64 %1115
%1117 = load double, double* %1116
%1118 = load double*, double** %6
%1119 = load i32, i32* %10
%1120 = sext i32 %1119 to i64
%1121 = getelementptr inbounds double, double* %1118, i64 %1120
%1122 = load double, double* %1121
%1123 = fadd double %1117, %1122
store double %1123, double* %40
%1124 = load double*, double** %6
%1125 = load i32, i32* %9
%1126 = add nsw i32 %1125, 1
%1127 = sext i32 %1126 to i64
%1128 = getelementptr inbounds double, double* %1124, i64 %1127
%1129 = load double, double* %1128
%1130 = load double*, double** %6
%1131 = load i32, i32* %10
%1132 = add nsw i32 %1131, 1
%1133 = sext i32 %1132 to i64
%1134 = getelementptr inbounds double, double* %1130, i64 %1133
%1135 = load double, double* %1134
%1136 = fadd double %1129, %1135
store double %1136, double* %41
%1137 = load double*, double** %6
%1138 = load i32, i32* %9
%1139 = sext i32 %1138 to i64
%1140 = getelementptr inbounds double, double* %1137, i64 %1139
%1141 = load double, double* %1140
%1142 = load double*, double** %6
%1143 = load i32, i32* %10
%1144 = sext i32 %1143 to i64
%1145 = getelementptr inbounds double, double* %1142, i64 %1144
%1146 = load double, double* %1145
%1147 = fsub double %1141, %1146
store double %1147, double* %42
%1148 = load double*, double** %6
%1149 = load i32, i32* %9
%1150 = add nsw i32 %1149, 1
%1151 = sext i32 %1150 to i64
%1152 = getelementptr inbounds double, double* %1148, i64 %1151
%1153 = load double, double* %1152
%1154 = load double*, double** %6
%1155 = load i32, i32* %10
%1156 = add nsw i32 %1155, 1
%1157 = sext i32 %1156 to i64
%1158 = getelementptr inbounds double, double* %1154, i64 %1157
%1159 = load double, double* %1158
%1160 = fsub double %1153, %1159
store double %1160, double* %43
%1161 = load double, double* %36
%1162 = load double, double* %40
%1163 = fadd double %1161, %1162
store double %1163, double* %44
%1164 = load double, double* %37
%1165 = load double, double* %41
%1166 = fadd double %1164, %1165
store double %1166, double* %45
%1167 = load double, double* %36
%1168 = load double, double* %40
%1169 = fsub double %1167, %1168
store double %1169, double* %48
%1170 = load double, double* %37
%1171 = load double, double* %41
%1172 = fsub double %1170, %1171
store double %1172, double* %49
%1173 = load double, double* %38
%1174 = load double, double* %43
%1175 = fsub double %1173, %1174
store double %1175, double* %46
%1176 = load double, double* %39
%1177 = load double, double* %42
%1178 = fadd double %1176, %1177
store double %1178, double* %47
%1179 = load double, double* %38
%1180 = load double, double* %43
%1181 = fadd double %1179, %1180
store double %1181, double* %50
%1182 = load double, double* %39
%1183 = load double, double* %42
%1184 = fsub double %1182, %1183
store double %1184, double* %51
%1185 = load double*, double** %6
%1186 = load i32, i32* %11
%1187 = sext i32 %1186 to i64
%1188 = getelementptr inbounds double, double* %1185, i64 %1187
%1189 = load double, double* %1188
%1190 = load double*, double** %6
%1191 = load i32, i32* %12
%1192 = sext i32 %1191 to i64
%1193 = getelementptr inbounds double, double* %1190, i64 %1192
%1194 = load double, double* %1193
%1195 = fadd double %1189, %1194
store double %1195, double* %36
%1196 = load double*, double** %6
%1197 = load i32, i32* %11
%1198 = add nsw i32 %1197, 1
%1199 = sext i32 %1198 to i64
%1200 = getelementptr inbounds double, double* %1196, i64 %1199
%1201 = load double, double* %1200
%1202 = load double*, double** %6
%1203 = load i32, i32* %12
%1204 = add nsw i32 %1203, 1
%1205 = sext i32 %1204 to i64
%1206 = getelementptr inbounds double, double* %1202, i64 %1205
%1207 = load double, double* %1206
%1208 = fadd double %1201, %1207
store double %1208, double* %37
%1209 = load double*, double** %6
%1210 = load i32, i32* %11
%1211 = sext i32 %1210 to i64
%1212 = getelementptr inbounds double, double* %1209, i64 %1211
%1213 = load double, double* %1212
%1214 = load double*, double** %6
%1215 = load i32, i32* %12
%1216 = sext i32 %1215 to i64
%1217 = getelementptr inbounds double, double* %1214, i64 %1216
%1218 = load double, double* %1217
%1219 = fsub double %1213, %1218
store double %1219, double* %38
%1220 = load double*, double** %6
%1221 = load i32, i32* %11
%1222 = add nsw i32 %1221, 1
%1223 = sext i32 %1222 to i64
%1224 = getelementptr inbounds double, double* %1220, i64 %1223
%1225 = load double, double* %1224
%1226 = load double*, double** %6
%1227 = load i32, i32* %12
%1228 = add nsw i32 %1227, 1
%1229 = sext i32 %1228 to i64
%1230 = getelementptr inbounds double, double* %1226, i64 %1229
%1231 = load double, double* %1230
%1232 = fsub double %1225, %1231
store double %1232, double* %39
%1233 = load double*, double** %6
%1234 = load i32, i32* %13
%1235 = sext i32 %1234 to i64
%1236 = getelementptr inbounds double, double* %1233, i64 %1235
%1237 = load double, double* %1236
%1238 = load double*, double** %6
%1239 = load i32, i32* %14
%1240 = sext i32 %1239 to i64
%1241 = getelementptr inbounds double, double* %1238, i64 %1240
%1242 = load double, double* %1241
%1243 = fadd double %1237, %1242
store double %1243, double* %40
%1244 = load double*, double** %6
%1245 = load i32, i32* %13
%1246 = add nsw i32 %1245, 1
%1247 = sext i32 %1246 to i64
%1248 = getelementptr inbounds double, double* %1244, i64 %1247
%1249 = load double, double* %1248
%1250 = load double*, double** %6
%1251 = load i32, i32* %14
%1252 = add nsw i32 %1251, 1
%1253 = sext i32 %1252 to i64
%1254 = getelementptr inbounds double, double* %1250, i64 %1253
%1255 = load double, double* %1254
%1256 = fadd double %1249, %1255
store double %1256, double* %41
%1257 = load double*, double** %6
%1258 = load i32, i32* %13
%1259 = sext i32 %1258 to i64
%1260 = getelementptr inbounds double, double* %1257, i64 %1259
%1261 = load double, double* %1260
%1262 = load double*, double** %6
%1263 = load i32, i32* %14
%1264 = sext i32 %1263 to i64
%1265 = getelementptr inbounds double, double* %1262, i64 %1264
%1266 = load double, double* %1265
%1267 = fsub double %1261, %1266
store double %1267, double* %42
%1268 = load double*, double** %6
%1269 = load i32, i32* %13
%1270 = add nsw i32 %1269, 1
%1271 = sext i32 %1270 to i64
%1272 = getelementptr inbounds double, double* %1268, i64 %1271
%1273 = load double, double* %1272
%1274 = load double*, double** %6
%1275 = load i32, i32* %14
%1276 = add nsw i32 %1275, 1
%1277 = sext i32 %1276 to i64
%1278 = getelementptr inbounds double, double* %1274, i64 %1277
%1279 = load double, double* %1278
%1280 = fsub double %1273, %1279
store double %1280, double* %43
%1281 = load double, double* %36
%1282 = load double, double* %40
%1283 = fadd double %1281, %1282
store double %1283, double* %52
%1284 = load double, double* %37
%1285 = load double, double* %41
%1286 = fadd double %1284, %1285
store double %1286, double* %53
%1287 = load double, double* %36
%1288 = load double, double* %40
%1289 = fsub double %1287, %1288
store double %1289, double* %56
%1290 = load double, double* %37
%1291 = load double, double* %41
%1292 = fsub double %1290, %1291
store double %1292, double* %57
%1293 = load double, double* %38
%1294 = load double, double* %43
%1295 = fsub double %1293, %1294
store double %1295, double* %36
%1296 = load double, double* %39
%1297 = load double, double* %42
%1298 = fadd double %1296, %1297
store double %1298, double* %37
%1299 = load double, double* %38
%1300 = load double, double* %43
%1301 = fadd double %1299, %1300
store double %1301, double* %40
%1302 = load double, double* %39
%1303 = load double, double* %42
%1304 = fsub double %1302, %1303
store double %1304, double* %41
%1305 = load double, double* %20
%1306 = load double, double* %36
%1307 = load double, double* %37
%1308 = fsub double %1306, %1307
%1309 = fmul double %1305, %1308
store double %1309, double* %54
%1310 = load double, double* %20
%1311 = load double, double* %36
%1312 = load double, double* %37
%1313 = fadd double %1311, %1312
%1314 = fmul double %1310, %1313
store double %1314, double* %55
%1315 = load double, double* %20
%1316 = load double, double* %40
%1317 = load double, double* %41
%1318 = fsub double %1316, %1317
%1319 = fmul double %1315, %1318
store double %1319, double* %58
%1320 = load double, double* %20
%1321 = load double, double* %40
%1322 = load double, double* %41
%1323 = fadd double %1321, %1322
%1324 = fmul double %1320, %1323
store double %1324, double* %59
%1325 = load double, double* %46
%1326 = load double, double* %54
%1327 = fadd double %1325, %1326
store double %1327, double* %36
%1328 = load double, double* %47
%1329 = load double, double* %55
%1330 = fadd double %1328, %1329
store double %1330, double* %37
%1331 = load double, double* %22
%1332 = load double, double* %36
%1333 = load double, double* %23
%1334 = load double, double* %37
%1335 = fmul double %1333, %1334
%1336 = fneg double %1335
%1337 = call double @llvm.fmuladd.f64(double %1331, double %1332, double %1336)
%1338 = load double*, double** %6
%1339 = load i32, i32* %8
%1340 = sext i32 %1339 to i64
%1341 = getelementptr inbounds double, double* %1338, i64 %1340
store double %1337, double* %1341
%1342 = load double, double* %22
%1343 = load double, double* %37
%1344 = load double, double* %23
%1345 = load double, double* %36
%1346 = fmul double %1344, %1345
%1347 = call double @llvm.fmuladd.f64(double %1342, double %1343, double %1346)
%1348 = load double*, double** %6
%1349 = load i32, i32* %8
%1350 = add nsw i32 %1349, 1
%1351 = sext i32 %1350 to i64
%1352 = getelementptr inbounds double, double* %1348, i64 %1351
store double %1347, double* %1352
%1353 = load double, double* %46
%1354 = load double, double* %54
%1355 = fsub double %1353, %1354
store double %1355, double* %36
%1356 = load double, double* %47
%1357 = load double, double* %55
%1358 = fsub double %1356, %1357
store double %1358, double* %37
%1359 = load double, double* %30
%1360 = load double, double* %36
%1361 = load double, double* %31
%1362 = load double, double* %37
%1363 = fmul double %1361, %1362
%1364 = fneg double %1363
%1365 = call double @llvm.fmuladd.f64(double %1359, double %1360, double %1364)
%1366 = load double*, double** %6
%1367 = load i32, i32* %12
%1368 = sext i32 %1367 to i64
%1369 = getelementptr inbounds double, double* %1366, i64 %1368
store double %1365, double* %1369
%1370 = load double, double* %30
%1371 = load double, double* %37
%1372 = load double, double* %31
%1373 = load double, double* %36
%1374 = fmul double %1372, %1373
%1375 = call double @llvm.fmuladd.f64(double %1370, double %1371, double %1374)
%1376 = load double*, double** %6
%1377 = load i32, i32* %12
%1378 = add nsw i32 %1377, 1
%1379 = sext i32 %1378 to i64
%1380 = getelementptr inbounds double, double* %1376, i64 %1379
store double %1375, double* %1380
%1381 = load double, double* %50
%1382 = load double, double* %59
%1383 = fsub double %1381, %1382
store double %1383, double* %36
%1384 = load double, double* %51
%1385 = load double, double* %58
%1386 = fadd double %1384, %1385
store double %1386, double* %37
%1387 = load double, double* %26
%1388 = load double, double* %36
%1389 = load double, double* %27
%1390 = load double, double* %37
%1391 = fmul double %1389, %1390
%1392 = fneg double %1391
%1393 = call double @llvm.fmuladd.f64(double %1387, double %1388, double %1392)
%1394 = load double*, double** %6
%1395 = load i32, i32* %10
%1396 = sext i32 %1395 to i64
%1397 = getelementptr inbounds double, double* %1394, i64 %1396
store double %1393, double* %1397
%1398 = load double, double* %26
%1399 = load double, double* %37
%1400 = load double, double* %27
%1401 = load double, double* %36
%1402 = fmul double %1400, %1401
%1403 = call double @llvm.fmuladd.f64(double %1398, double %1399, double %1402)
%1404 = load double*, double** %6
%1405 = load i32, i32* %10
%1406 = add nsw i32 %1405, 1
%1407 = sext i32 %1406 to i64
%1408 = getelementptr inbounds double, double* %1404, i64 %1407
store double %1403, double* %1408
%1409 = load double, double* %50
%1410 = load double, double* %59
%1411 = fadd double %1409, %1410
store double %1411, double* %36
%1412 = load double, double* %51
%1413 = load double, double* %58
%1414 = fsub double %1412, %1413
store double %1414, double* %37
%1415 = load double, double* %34
%1416 = load double, double* %36
%1417 = load double, double* %35
%1418 = load double, double* %37
%1419 = fmul double %1417, %1418
%1420 = fneg double %1419
%1421 = call double @llvm.fmuladd.f64(double %1415, double %1416, double %1420)
%1422 = load double*, double** %6
%1423 = load i32, i32* %14
%1424 = sext i32 %1423 to i64
%1425 = getelementptr inbounds double, double* %1422, i64 %1424
store double %1421, double* %1425
%1426 = load double, double* %34
%1427 = load double, double* %37
%1428 = load double, double* %35
%1429 = load double, double* %36
%1430 = fmul double %1428, %1429
%1431 = call double @llvm.fmuladd.f64(double %1426, double %1427, double %1430)
%1432 = load double*, double** %6
%1433 = load i32, i32* %14
%1434 = add nsw i32 %1433, 1
%1435 = sext i32 %1434 to i64
%1436 = getelementptr inbounds double, double* %1432, i64 %1435
store double %1431, double* %1436
%1437 = load double, double* %44
%1438 = load double, double* %52
%1439 = fadd double %1437, %1438
%1440 = load double*, double** %6
%1441 = load i32, i32* %7
%1442 = sext i32 %1441 to i64
%1443 = getelementptr inbounds double, double* %1440, i64 %1442
store double %1439, double* %1443
%1444 = load double, double* %45
%1445 = load double, double* %53
%1446 = fadd double %1444, %1445
%1447 = load double*, double** %6
%1448 = load i32, i32* %7
%1449 = add nsw i32 %1448, 1
%1450 = sext i32 %1449 to i64
%1451 = getelementptr inbounds double, double* %1447, i64 %1450
store double %1446, double* %1451
%1452 = load double, double* %44
%1453 = load double, double* %52
%1454 = fsub double %1452, %1453
store double %1454, double* %36
%1455 = load double, double* %45
%1456 = load double, double* %53
%1457 = fsub double %1455, %1456
store double %1457, double* %37
%1458 = load double, double* %28
%1459 = load double, double* %36
%1460 = load double, double* %29
%1461 = load double, double* %37
%1462 = fmul double %1460, %1461
%1463 = fneg double %1462
%1464 = call double @llvm.fmuladd.f64(double %1458, double %1459, double %1463)
%1465 = load double*, double** %6
%1466 = load i32, i32* %11
%1467 = sext i32 %1466 to i64
%1468 = getelementptr inbounds double, double* %1465, i64 %1467
store double %1464, double* %1468
%1469 = load double, double* %28
%1470 = load double, double* %37
%1471 = load double, double* %29
%1472 = load double, double* %36
%1473 = fmul double %1471, %1472
%1474 = call double @llvm.fmuladd.f64(double %1469, double %1470, double %1473)
%1475 = load double*, double** %6
%1476 = load i32, i32* %11
%1477 = add nsw i32 %1476, 1
%1478 = sext i32 %1477 to i64
%1479 = getelementptr inbounds double, double* %1475, i64 %1478
store double %1474, double* %1479
%1480 = load double, double* %48
%1481 = load double, double* %57
%1482 = fsub double %1480, %1481
store double %1482, double* %36
%1483 = load double, double* %49
%1484 = load double, double* %56
%1485 = fadd double %1483, %1484
store double %1485, double* %37
%1486 = load double, double* %24
%1487 = load double, double* %36
%1488 = load double, double* %25
%1489 = load double, double* %37
%1490 = fmul double %1488, %1489
%1491 = fneg double %1490
%1492 = call double @llvm.fmuladd.f64(double %1486, double %1487, double %1491)
%1493 = load double*, double** %6
%1494 = load i32, i32* %9
%1495 = sext i32 %1494 to i64
%1496 = getelementptr inbounds double, double* %1493, i64 %1495
store double %1492, double* %1496
%1497 = load double, double* %24
%1498 = load double, double* %37
%1499 = load double, double* %25
%1500 = load double, double* %36
%1501 = fmul double %1499, %1500
%1502 = call double @llvm.fmuladd.f64(double %1497, double %1498, double %1501)
%1503 = load double*, double** %6
%1504 = load i32, i32* %9
%1505 = add nsw i32 %1504, 1
%1506 = sext i32 %1505 to i64
%1507 = getelementptr inbounds double, double* %1503, i64 %1506
store double %1502, double* %1507
%1508 = load double, double* %48
%1509 = load double, double* %57
%1510 = fadd double %1508, %1509
store double %1510, double* %36
%1511 = load double, double* %49
%1512 = load double, double* %56
%1513 = fsub double %1511, %1512
store double %1513, double* %37
%1514 = load double, double* %32
%1515 = load double, double* %36
%1516 = load double, double* %33
%1517 = load double, double* %37
%1518 = fmul double %1516, %1517
%1519 = fneg double %1518
%1520 = call double @llvm.fmuladd.f64(double %1514, double %1515, double %1519)
%1521 = load double*, double** %6
%1522 = load i32, i32* %13
%1523 = sext i32 %1522 to i64
%1524 = getelementptr inbounds double, double* %1521, i64 %1523
store double %1520, double* %1524
%1525 = load double, double* %32
%1526 = load double, double* %37
%1527 = load double, double* %33
%1528 = load double, double* %36
%1529 = fmul double %1527, %1528
%1530 = call double @llvm.fmuladd.f64(double %1525, double %1526, double %1529)
%1531 = load double*, double** %6
%1532 = load i32, i32* %13
%1533 = add nsw i32 %1532, 1
%1534 = sext i32 %1533 to i64
%1535 = getelementptr inbounds double, double* %1531, i64 %1534
store double %1530, double* %1535
br label %1536
1536: ; preds = %1043
%1537 = load i32, i32* %7
%1538 = add nsw i32 %1537, 2
store i32 %1538, i32* %7
br label %1037
1539: ; preds = %1037
br label %1540
1540: ; preds = %1539
%1541 = load i32, i32* %18
%1542 = load i32, i32* %15
%1543 = add nsw i32 %1542, %1541
store i32 %1543, i32* %15
br label %948
1544: ; preds = %948
br label %1545
1545: ; preds = %1544, %471
ret void
}

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