int fft(real, imag, ntot, n, nspan, isn)
double *real;
double *imag;
long ntot;
long n;
long nspan;
int isn;
{
  int nfac[13], *nfacm1;
  union {
    int i;
    int ii;
  } i_ii;
  int j, k, m, kspan, maxf;
  int kspnn, k1, k2, k3, k4;
  int jc, jf, jj, kk, nn, ks, kt, nt, inc;
  int np[209], *npm1;
  if (n < 2)
    return (0);
  nfacm1 = nfac - 1;
  npm1 = np - 1;
  {
    double radf, *a, *b;
    double c1, c2, c3;
    double s1, s2, s3, aa, bb, cd, aj, c72;
    double ck[23], ak, *ckm1;
    double bk;
    double bj;
    double at[23], bt[23], sd, *atm1, *btm1;
    double s72;
    double sk[23], *skm1;
    double s120, rad, ajm, akm;
    double ajp, akp, bkp, bkm, bjp, bjm;
    a = ((double *)real) - 1;
    b = ((double *)imag) - 1;
    ckm1 = ck - 1;
    atm1 = at - 1;
    btm1 = bt - 1;
    skm1 = sk - 1;
    maxf = 23;
    inc = isn;
    c72 = 0.30901699437494742;
    s72 = 0.95105651629515357;
    s120 = 0.86602540378443865;
    rad = 6.2831853071796;
    if (isn < 0) {
      s72 = -s72;
      s120 = -s120;
      rad = -rad;
      inc = -inc;
    }
    nt = (int)(inc * ntot);
    ks = (int)(inc * nspan);
    kspan = ks;
    nn = nt - inc;
    jc = (int)(ks / n);
    radf = rad * jc * 0.5;
    i_ii.i = -1;
    jf = 0;
    m = 0;
    k = (int)n;
    while ((k & 15) == 0) {
      nfac[m++] = 4;
      k >>= 4;
    }
    j = 3;
    jj = 9;
  L30:
    while (k % jj == 0) {
      nfac[m++] = j;
      k /= jj;
    }
    j += 2;
    jj = j * j;
    if (jj <= k)
      goto L30;
    if (k <= 4) {
      kt = m;
      nfac[m] = k;
      if (k != 1)
        ++m;
    } else {
      if ((k & 3) == 0) {
        nfac[m++] = 2;
        k >>= 2;
      }
      kt = m;
      j = 2;
      do {
        if (k % j == 0) {
          nfac[m++] = j;
          k /= j;
        }
        j = 1 + (((++j) >> 1) << 1);
      } while (j <= k);
    }
    if (kt != 0) {
      j = kt;
      do {
        nfac[m++] = nfac[--j];
      } while (j != 0);
    }
  L100:
    sd = radf / (double)kspan;
    cd = sin(sd);
    cd = cd * cd * 2.0;
    sd = sin(sd + sd);
    kk = 1;
    if (nfac[++i_ii.i] != 2)
      goto L400;
    kspan >>= 1;
    k1 = kspan + 2;
    do {
      do {
        k2 = kk + kspan;
        ak = a[k2];
        bk = b[k2];
        a[k2] = a[kk] - ak;
        b[k2] = b[kk] - bk;
        a[kk] += ak;
        b[kk] += bk;
        kk = k2 + kspan;
      } while (kk <= nn);
      kk -= nn;
    } while (kk <= jc);
    if (kk > kspan)
      goto L800;
    do {
      c1 = 1.0 - cd;
      s1 = sd;
      do {
        do {
          do {
            k2 = kk + kspan;
            ak = a[kk] - a[k2];
            bk = b[kk] - b[k2];
            a[kk] += a[k2];
            b[kk] += b[k2];
            a[k2] = c1 * ak - s1 * bk;
            b[k2] = s1 * ak + c1 * bk;
            kk = k2 + kspan;
          } while (kk < nt);
          k2 = kk - nt;
          c1 = -c1;
          kk = k1 - k2;
        } while (kk > k2);
        ak = c1 - (cd * c1 + sd * s1);
        s1 = sd * c1 - cd * s1 + s1;
        c1 = 2.0 - (ak * ak + s1 * s1);
        s1 *= c1;
        c1 *= ak;
        kk += jc;
      } while (kk < k2);
      k1 += (inc << 1);
      kk = (k1 - kspan) / 2 + jc;
    } while (kk <= (jc << 1));
    goto L100;
  L320:
    k1 = kk + kspan;
    k2 = k1 + kspan;
    ak = a[kk];
    bk = b[kk];
    aj = a[k1] + a[k2];
    bj = b[k1] + b[k2];
    a[kk] = ak + aj;
    b[kk] = bk + bj;
    ak += (aj * -0.5);
    bk += (bj * -0.5);
    aj = (a[k1] - a[k2]) * s120;
    bj = (b[k1] - b[k2]) * s120;
    a[k1] = ak - bj;
    b[k1] = bk + aj;
    a[k2] = ak + bj;
    b[k2] = bk - aj;
    kk = k2 + kspan;
    if (kk < nn)
      goto L320;
    kk -= nn;
    if (kk <= kspan)
      goto L320;
    goto L700;
  L400:
    if (nfac[i_ii.i] != 4)
      goto L600;
    kspnn = kspan;
    kspan >>= 2;
  L410:
    c1 = 1.0;
    s1 = 0.0;
  L420:
    k1 = kk + kspan;
    k2 = k1 + kspan;
    k3 = k2 + kspan;
    akp = a[kk] + a[k2];
    akm = a[kk] - a[k2];
    ajp = a[k1] + a[k3];
    ajm = a[k1] - a[k3];
    a[kk] = akp + ajp;
    ajp = akp - ajp;
    bkp = b[kk] + b[k2];
    bkm = b[kk] - b[k2];
    bjp = b[k1] + b[k3];
    bjm = b[k1] - b[k3];
    b[kk] = bkp + bjp;
    bjp = bkp - bjp;
    if (isn < 0)
      goto L450;
    akp = akm - bjm;
    akm += bjm;
    bkp = bkm + ajm;
    bkm -= ajm;
    if (s1 == 0.0)
      goto L460;
  L430:
    a[k1] = akp * c1 - bkp * s1;
    b[k1] = akp * s1 + bkp * c1;
    a[k2] = ajp * c2 - bjp * s2;
    b[k2] = ajp * s2 + bjp * c2;
    a[k3] = akm * c3 - bkm * s3;
    b[k3] = akm * s3 + bkm * c3;
    kk = k3 + kspan;
    if (kk <= nt)
      goto L420;
  L440:
    c2 = c1 - (cd * c1 + sd * s1);
    s1 = sd * c1 - cd * s1 + s1;
    c1 = 2.0 - (c2 * c2 + s1 * s1);
    s1 *= c1;
    c1 *= c2;
    c2 = c1 * c1 - s1 * s1;
    s2 = c1 * 2.0 * s1;
    c3 = c2 * c1 - s2 * s1;
    s3 = c2 * s1 + s2 * c1;
    kk += (jc - nt);
    if (kk <= kspan)
      goto L420;
    kk += (inc - kspan);
    if (kk <= jc)
      goto L410;
    if (kspan == jc)
      goto L800;
    goto L100;
  L450:
    akp = akm + bjm;
    akm -= bjm;
    bkp = bkm - ajm;
    bkm += ajm;
    if (s1 != 0.0)
      goto L430;
  L460:
    a[k1] = akp;
    b[k1] = bkp;
    a[k2] = ajp;
    b[k2] = bjp;
    a[k3] = akm;
    b[k3] = bkm;
    kk = k3 + kspan;
    if (kk <= nt)
      goto L420;
    goto L440;
  L510:
    c2 = c72 * c72 - s72 * s72;
    s2 = c72 * 2.0 * s72;
    do {
      do {
        k1 = kk + kspan;
        k2 = k1 + kspan;
        k3 = k2 + kspan;
        k4 = k3 + kspan;
        akp = a[k1] + a[k4];
        akm = a[k1] - a[k4];
        bkp = b[k1] + b[k4];
        bkm = b[k1] - b[k4];
        ajp = a[k2] + a[k3];
        ajm = a[k2] - a[k3];
        bjp = b[k2] + b[k3];
        bjm = b[k2] - b[k3];
        aa = a[kk];
        bb = b[kk];
        a[kk] = aa + akp + ajp;
        b[kk] = bb + bkp + bjp;
        ak = akp * c72 + ajp * c2 + aa;
        bk = bkp * c72 + bjp * c2 + bb;
        aj = akm * s72 + ajm * s2;
        bj = bkm * s72 + bjm * s2;
        a[k1] = ak - bj;
        a[k4] = ak + bj;
        b[k1] = bk + aj;
        b[k4] = bk - aj;
        ak = akp * c2 + ajp * c72 + aa;
        bk = bkp * c2 + bjp * c72 + bb;
        aj = akm * s2 - ajm * s72;
        bj = bkm * s2 - bjm * s72;
        a[k2] = ak - bj;
        a[k3] = ak + bj;
        b[k2] = bk + aj;
        b[k3] = bk - aj;
        kk = k4 + kspan;
      } while (kk < nn);
      kk -= nn;
    } while (kk <= kspan);
    goto L700;
  L600:
    k = nfac[i_ii.i];
    kspnn = kspan;
    kspan /= k;
    if (k == 3)
      goto L320;
    if (k == 5)
      goto L510;
    if (k == jf)
      goto L640;
    jf = k;
    s1 = rad / (double)k;
    c1 = cos(s1);
    s1 = sin(s1);
    if (jf > maxf)
      return (1);
    ckm1[jf] = 1.0;
    skm1[jf] = 0.0;
    j = 1;
    do {
      ckm1[j] = ckm1[k] * c1 + skm1[k] * s1;
      skm1[j] = ckm1[k] * s1 - skm1[k] * c1;
      --k;
      ckm1[k] = ckm1[j];
      skm1[k] = -skm1[j];
      ++j;
    } while (j < k);
  L640:
    k1 = kk;
    k2 = kk + kspnn;
    aa = a[kk];
    bb = b[kk];
    ak = aa;
    bk = bb;
    j = 1;
    k1 += kspan;
    do {
      k2 -= kspan;
      ++j;
      atm1[j] = a[k1] + a[k2];
      ak += atm1[j];
      btm1[j] = b[k1] + b[k2];
      bk += btm1[j];
      ++j;
      atm1[j] = a[k1] - a[k2];
      btm1[j] = b[k1] - b[k2];
      k1 += kspan;
    } while (k1 < k2);
    a[kk] = ak;
    b[kk] = bk;
    k1 = kk;
    k2 = kk + kspnn;
    j = 1;
  L660:
    k1 += kspan;
    k2 -= kspan;
    jj = j;
    ak = aa;
    bk = bb;
    aj = 0.0;
    bj = 0.0;
    k = 1;
    do {
      ++k;
      ak += (atm1[k] * ckm1[jj]);
      bk += (btm1[k] * ckm1[jj]);
      ++k;
      aj += (atm1[k] * skm1[jj]);
      bj += (btm1[k] * skm1[jj]);
      jj += j;
      if (jj > jf)
        jj -= jf;
    } while (k < jf);
    k = jf - j;
    a[k1] = ak - bj;
    b[k1] = bk + aj;
    a[k2] = ak + bj;
    b[k2] = bk - aj;
    ++j;
    if (j < k)
      goto L660;
    kk += kspnn;
    if (kk <= nn)
      goto L640;
    kk -= nn;
    if (kk <= kspan)
      goto L640;
  L700:
    if (i_ii.i == m - 1)
      goto L800;
    kk = jc + 1;
  L710:
    c2 = 1.0 - cd;
    s1 = sd;
  L720:
    c1 = c2;
    s2 = s1;
    kk += kspan;
  L730:
    ak = a[kk];
    a[kk] = c2 * ak - s2 * b[kk];
    b[kk] = s2 * ak + c2 * b[kk];
    kk += kspnn;
    if (kk <= nt)
      goto L730;
    ak = s1 * s2;
    s2 = s1 * c2 + c1 * s2;
    c2 = c1 * c2 - ak;
    kk += (kspan - nt);
    if (kk <= kspnn)
      goto L730;
    c2 = c1 - (cd * c1 + sd * s1);
    s1 += sd * c1 - cd * s1;
    c1 = 2.0 - (c2 * c2 + s1 * s1);
    s1 *= c1;
    c2 *= c1;
    kk += (jc - kspnn);
    if (kk <= kspan)
      goto L720;
    kk += (jc + inc - kspan);
    if (kk <= (jc << 1))
      goto L710;
    goto L100;
  L800:
    np[0] = ks;
    if (kt == 0)
      goto L890;
    k = (kt << 1) + 1;
    if (m < k)
      --k;
    j = 1;
    np[k] = jc;
    do {
      np[j] = npm1[j] / nfacm1[j];
      npm1[k] = np[k] * nfacm1[j];
      ++j;
      --k;
    } while (j < k);
    k3 = np[k];
    kspan = np[1];
    kk = jc + 1;
    k2 = kspan + 1;
    j = 1;
    if (n != ntot)
      goto L850;
  L820:
    ak = a[kk];
    a[kk] = a[k2];
    a[k2] = ak;
    bk = b[kk];
    b[kk] = b[k2];
    b[k2] = bk;
    kk += inc;
    k2 += kspan;
    if (k2 < ks)
      goto L820;
  L830:
    k2 -= npm1[j];
    ++j;
    k2 += np[j];
    if (k2 > npm1[j])
      goto L830;
    j = 1;
  L840:
    if (kk < k2)
      goto L820;
    kk += inc;
    k2 += kspan;
    if (k2 < ks)
      goto L840;
    if (kk < ks)
      goto L830;
    jc = k3;
    goto L890;
  L850:
    k = kk + jc;
    do {
      ak = a[kk];
      a[kk] = a[k2];
      a[k2] = ak;
      bk = b[kk];
      b[kk] = b[k2];
      b[k2] = bk;
      kk += inc;
      k2 += inc;
    } while (kk < k);
    kk += (ks - jc);
    k2 += (ks - jc);
    if (kk < nt)
      goto L850;
    k2 += (kspan - nt);
    kk += (jc - nt);
    if (k2 < ks)
      goto L850;
  L870:
    k2 -= npm1[j];
    ++j;
    k2 += np[j];
    if (k2 > npm1[j])
      goto L870;
    j = 1;
    do {
      if (kk < k2)
        goto L850;
      kk += jc;
      k2 += kspan;
    } while (k2 < ks);
    if (kk < ks)
      goto L870;
    jc = k3;
  L890:
    if ((kt << 1) + 1 >= m)
      goto L1000;
    kspnn = np[kt];
    j = m - kt;
    nfac[j] = 1;
    do {
      nfacm1[j] *= nfac[j];
      --j;
    } while (j != kt);
    ++kt;
    nn = nfacm1[kt] - 1;
    if (nn > 209)
      return (1);
    jj = 0;
    j = 0;
    goto L906;
  L902:
    jj -= k2;
    k2 = kk;
    ++k;
    kk = nfacm1[k];
  L904:
    jj += kk;
    if (jj >= k2)
      goto L902;
    npm1[j] = jj;
  L906:
    k2 = nfacm1[kt];
    k = kt + 1;
    kk = nfacm1[k];
    ++j;
    if (j <= nn)
      goto L904;
    j = 0;
    goto L914;
  L910:
    k = kk;
    kk = npm1[k];
    npm1[k] = -kk;
    if (kk != j)
      goto L910;
    k3 = kk;
  L914:
    ++j;
    kk = npm1[j];
    if (kk < 0)
      goto L914;
    if (kk != j)
      goto L910;
    npm1[j] = -j;
    if (j != nn)
      goto L914;
    maxf *= inc;
    goto L950;
  L924:
    --j;
    if (npm1[j] < 0)
      goto L924;
    jj = jc;
  L926:
    kspan = jj;
    if (jj > maxf)
      kspan = maxf;
    jj -= kspan;
    k = npm1[j];
    kk = jc * k + i_ii.ii + jj;
    k1 = kk + kspan;
    k2 = 0;
    do {
      ++k2;
      atm1[k2] = a[k1];
      btm1[k2] = b[k1];
      k1 -= inc;
    } while (k1 != kk);
    do {
      k1 = kk + kspan;
      k2 = k1 - jc * (k + npm1[k]);
      k = -npm1[k];
      do {
        a[k1] = a[k2];
        b[k1] = b[k2];
        k1 -= inc;
        k2 -= inc;
      } while (k1 != kk);
      kk = k2;
    } while (k != j);
    k1 = kk + kspan;
    k2 = 0;
    do {
      ++k2;
      a[k1] = atm1[k2];
      b[k1] = btm1[k2];
      k1 -= inc;
    } while (k1 != kk);
    if (jj != 0)
      goto L926;
    if (j != 1)
      goto L924;
  L950:
    j = k3 + 1;
    nt -= kspnn;
    i_ii.ii = nt - inc + 1;
    if (nt >= 0)
      goto L924;
  L1000:
    if (isn < 0) {
      j = (int)(-ntot - 1);
      while (++j < 0) {
        *(++a) /= (double)n;
        *(++b) /= (double)n;
      }
    }
    return (0);
  }
}


x86 assembly (clang, -O0):
<fft>:
push   %rbp
mov    %rsp,%rbp
sub    $0x820,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
mov    %r8,-0x30(%rbp)
mov    %r9d,-0x34(%rbp)
cmpq   $0x2,-0x28(%rbp)
jge    115a <fft+0x3a>
movl   $0x0,-0x4(%rbp)
jmp    43f1 <fft+0x32d1>
lea    -0x70(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x78(%rbp)
lea    -0x410(%rbp),%rax
add    $0xfffffffffffffffc,%rax
mov    %rax,-0x418(%rbp)
mov    -0x10(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x428(%rbp)
mov    -0x18(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x430(%rbp)
lea    -0x540(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x550(%rbp)
lea    -0x620(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x6f0(%rbp)
lea    -0x6e0(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x6f8(%rbp)
lea    -0x7c0(%rbp),%rax
add    $0xfffffffffffffff8,%rax
mov    %rax,-0x7c8(%rbp)
movl   $0x17,-0x94(%rbp)
mov    -0x34(%rbp),%eax
mov    %eax,-0xcc(%rbp)
movsd  0x3e1f(%rip),%xmm0
movsd  %xmm0,-0x488(%rbp)
movsd  0x3e07(%rip),%xmm0
movsd  %xmm0,-0x700(%rbp)
ff
movsd  0x3def(%rip),%xmm0
movsd  %xmm0,-0x7d0(%rbp)
ff
movsd  0x3dd7(%rip),%xmm0
movsd  %xmm0,-0x7d8(%rbp)
ff
cmpl   $0x0,-0x34(%rbp)
jge    12be <fft+0x19e>
movsd  -0x700(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x700(%rbp)
ff
movsd  -0x7d0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x7d0(%rbp)
ff
movsd  -0x7d8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x7d8(%rbp)
ff
xor    %eax,%eax
sub    -0xcc(%rbp),%eax
mov    %eax,-0xcc(%rbp)
movslq -0xcc(%rbp),%rax
imul   -0x20(%rbp),%rax
mov    %eax,-0xc8(%rbp)
movslq -0xcc(%rbp),%rax
imul   -0x30(%rbp),%rax
mov    %eax,-0xc0(%rbp)
mov    -0xc0(%rbp),%eax
mov    %eax,-0x90(%rbp)
mov    -0xc8(%rbp),%eax
sub    -0xcc(%rbp),%eax
mov    %eax,-0xbc(%rbp)
movslq -0xc0(%rbp),%rax
cqto
idivq  -0x28(%rbp)
mov    %eax,-0xac(%rbp)
movsd  -0x7d8(%rbp),%xmm0
ff
cvtsi2sdl -0xac(%rbp),%xmm1
ff
mulsd  %xmm1,%xmm0
movsd  0x3cf1(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x420(%rbp)
ff
movl   $0xffffffff,-0x80(%rbp)
movl   $0x0,-0xb0(%rbp)
movl   $0x0,-0x8c(%rbp)
mov    -0x28(%rbp),%rax
mov    %eax,-0x88(%rbp)
mov    -0x88(%rbp),%eax
and    $0xf,%eax
cmp    $0x0,%eax
jne    13a1 <fft+0x281>
mov    -0x8c(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x8c(%rbp)
cltq
movl   $0x4,-0x70(%rbp,%rax,4)
mov    -0x88(%rbp),%eax
sar    $0x4,%eax
mov    %eax,-0x88(%rbp)
jmp    1360 <fft+0x240>
movl   $0x3,-0x84(%rbp)
movl   $0x9,-0xb4(%rbp)
jmp    13ba <fft+0x29a>
mov    -0x88(%rbp),%eax
cltd
idivl  -0xb4(%rbp)
cmp    $0x0,%edx
jne    1407 <fft+0x2e7>
mov    -0x84(%rbp),%ecx
mov    -0x8c(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x8c(%rbp)
cltq
mov    %ecx,-0x70(%rbp,%rax,4)
mov    -0xb4(%rbp),%ecx
mov    -0x88(%rbp),%eax
cltd
idiv   %ecx
mov    %eax,-0x88(%rbp)
jmp    13ba <fft+0x29a>
mov    -0x84(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
imul   -0x84(%rbp),%eax
mov    %eax,-0xb4(%rbp)
mov    -0xb4(%rbp),%eax
cmp    -0x88(%rbp),%eax
jg     1440 <fft+0x320>
jmp    13b5 <fft+0x295>
cmpl   $0x4,-0x88(%rbp)
jg     148b <fft+0x36b>
mov    -0x8c(%rbp),%eax
mov    %eax,-0xc4(%rbp)
mov    -0x88(%rbp),%ecx
movslq -0x8c(%rbp),%rax
mov    %ecx,-0x70(%rbp,%rax,4)
cmpl   $0x1,-0x88(%rbp)
je     1486 <fft+0x366>
mov    -0x8c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8c(%rbp)
jmp    155a <fft+0x43a>
mov    -0x88(%rbp),%eax
and    $0x3,%eax
cmp    $0x0,%eax
jne    14c7 <fft+0x3a7>
mov    -0x8c(%rbp),%eax
mov    %eax,%ecx
add    $0x1,%ecx
mov    %ecx,-0x8c(%rbp)
cltq
movl   $0x2,-0x70(%rbp,%rax,4)
mov    -0x88(%rbp),%eax
sar    $0x2,%eax
mov    %eax,-0x88(%rbp)
mov    -0x8c(%rbp),%eax
mov    %eax,-0xc4(%rbp)
movl   $0x2,-0x84(%rbp)
mov    -0x88(%rbp),%eax
cltd
idivl  -0x84(%rbp)
cmp    $0x0,%edx
jne    1525 <fft+0x405>
mov    -0x84(%rbp),%ecx
mov    -0x8c(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x8c(%rbp)
cltq
mov    %ecx,-0x70(%rbp,%rax,4)
mov    -0x84(%rbp),%ecx
mov    -0x88(%rbp),%eax
cltd
idiv   %ecx
mov    %eax,-0x88(%rbp)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
sar    $0x1,%eax
shl    $0x1,%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
cmp    -0x88(%rbp),%eax
jle    14dd <fft+0x3bd>
jmp    155a <fft+0x43a>
cmpl   $0x0,-0xc4(%rbp)
je     15b1 <fft+0x491>
mov    -0xc4(%rbp),%eax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x84(%rbp)
cltq
mov    -0x70(%rbp,%rax,4),%ecx
mov    -0x8c(%rbp),%eax
mov    %eax,%edx
add    $0x1,%edx
mov    %edx,-0x8c(%rbp)
cltq
mov    %ecx,-0x70(%rbp,%rax,4)
cmpl   $0x0,-0x84(%rbp)
jne    1573 <fft+0x453>
jmp    15b1 <fft+0x491>
jmp    15b6 <fft+0x496>
movsd  -0x420(%rbp),%xmm0
ff
cvtsi2sdl -0x90(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x6e8(%rbp)
ff
movsd  -0x6e8(%rbp),%xmm0
ff
call   1030 <sin@plt>
movsd  %xmm0,-0x478(%rbp)
ff
movsd  -0x478(%rbp),%xmm0
ff
mulsd  -0x478(%rbp),%xmm0
ff
movsd  0x3a29(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x478(%rbp)
ff
movsd  -0x6e8(%rbp),%xmm0
ff
addsd  -0x6e8(%rbp),%xmm0
ff
call   1030 <sin@plt>
movsd  %xmm0,-0x6e8(%rbp)
ff
movl   $0x1,-0xb8(%rbp)
mov    -0x80(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x80(%rbp)
cltq
cmpl   $0x2,-0x70(%rbp,%rax,4)
je     164d <fft+0x52d>
jmp    1dc7 <fft+0xca7>
mov    -0x90(%rbp),%eax
sar    $0x1,%eax
mov    %eax,-0x90(%rbp)
mov    -0x90(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x9c(%rbp)
jmp    1670 <fft+0x550>
mov    -0xb8(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x548(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x558(%rbp)
ff
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  -0x548(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
subsd  -0x558(%rbp),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x548(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x558(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xa0(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xbc(%rbp),%eax
jle    1670 <fft+0x550>
mov    -0xbc(%rbp),%ecx
mov    -0xb8(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xac(%rbp),%eax
jle    166b <fft+0x54b>
mov    -0xb8(%rbp),%eax
cmp    -0x90(%rbp),%eax
jle    17b5 <fft+0x695>
jmp    3778 <fft+0x2658>
jmp    17ba <fft+0x69a>
movsd  0x386e(%rip),%xmm0
subsd  -0x478(%rbp),%xmm0
ff
movsd  %xmm0,-0x438(%rbp)
ff
movsd  -0x6e8(%rbp),%xmm0
ff
movsd  %xmm0,-0x450(%rbp)
ff
jmp    17e7 <fft+0x6c7>
jmp    17ec <fft+0x6cc>
mov    -0xb8(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x548(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x558(%rbp)
ff
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x438(%rbp),%xmm0
ff
movsd  -0x548(%rbp),%xmm2
ff
movsd  -0x450(%rbp),%xmm1
ff
mulsd  -0x558(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x450(%rbp),%xmm0
ff
movsd  -0x548(%rbp),%xmm2
ff
movsd  -0x438(%rbp),%xmm1
ff
mulsd  -0x558(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xa0(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xc8(%rbp),%eax
jl     17ec <fft+0x6cc>
mov    -0xb8(%rbp),%eax
sub    -0xc8(%rbp),%eax
mov    %eax,-0xa0(%rbp)
movsd  -0x438(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x438(%rbp)
ff
mov    -0x9c(%rbp),%eax
sub    -0xa0(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xa0(%rbp),%eax
jg     17e7 <fft+0x6c7>
movsd  -0x438(%rbp),%xmm0
ff
movsd  -0x478(%rbp),%xmm1
ff
movsd  -0x438(%rbp),%xmm3
ff
movsd  -0x6e8(%rbp),%xmm2
ff
mulsd  -0x450(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x548(%rbp)
ff
movsd  -0x6e8(%rbp),%xmm0
ff
movsd  -0x438(%rbp),%xmm2
ff
movsd  -0x478(%rbp),%xmm1
ff
mulsd  -0x450(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x450(%rbp),%xmm0
ff
movsd  %xmm0,-0x450(%rbp)
ff
movsd  -0x548(%rbp),%xmm1
ff
movsd  -0x548(%rbp),%xmm2
ff
movsd  -0x450(%rbp),%xmm0
ff
mulsd  -0x450(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x35af(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x438(%rbp)
ff
movsd  -0x438(%rbp),%xmm0
ff
mulsd  -0x450(%rbp),%xmm0
ff
movsd  %xmm0,-0x450(%rbp)
ff
movsd  -0x548(%rbp),%xmm0
ff
mulsd  -0x438(%rbp),%xmm0
ff
movsd  %xmm0,-0x438(%rbp)
ff
mov    -0xac(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xa0(%rbp),%eax
jl     17e2 <fft+0x6c2>
mov    -0xcc(%rbp),%eax
shl    $0x1,%eax
add    -0x9c(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
sub    -0x90(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
add    -0xac(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
mov    -0xac(%rbp),%ecx
shl    $0x1,%ecx
cmp    %ecx,%eax
jle    17ba <fft+0x69a>
jmp    15b6 <fft+0x496>
mov    -0xb8(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x548(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x558(%rbp)
ff
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x480(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x560(%rbp)
ff
movsd  -0x548(%rbp),%xmm0
ff
addsd  -0x480(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x558(%rbp),%xmm0
ff
addsd  -0x560(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x480(%rbp),%xmm0
ff
movsd  -0x548(%rbp),%xmm1
ff
movsd  0x33fa(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x548(%rbp)
ff
movsd  -0x560(%rbp),%xmm0
ff
movsd  -0x558(%rbp),%xmm1
ff
movsd  0x33d2(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x558(%rbp)
ff
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x7d0(%rbp),%xmm0
ff
movsd  %xmm0,-0x480(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mulsd  -0x7d0(%rbp),%xmm0
ff
movsd  %xmm0,-0x560(%rbp)
ff
movsd  -0x548(%rbp),%xmm0
ff
subsd  -0x560(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x558(%rbp),%xmm0
ff
addsd  -0x480(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x548(%rbp),%xmm0
ff
addsd  -0x560(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x558(%rbp),%xmm0
ff
subsd  -0x480(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xa0(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xbc(%rbp),%eax
jge    1d97 <fft+0xc77>
jmp    1b2a <fft+0xa0a>
mov    -0xbc(%rbp),%ecx
mov    -0xb8(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0x90(%rbp),%eax
jg     1dc2 <fft+0xca2>
jmp    1b2a <fft+0xa0a>
jmp    33f4 <fft+0x22d4>
movslq -0x80(%rbp),%rax
cmpl   $0x4,-0x70(%rbp,%rax,4)
je     1ddb <fft+0xcbb>
jmp    2c2c <fft+0x1b0c>
mov    -0x90(%rbp),%eax
mov    %eax,-0x98(%rbp)
mov    -0x90(%rbp),%eax
sar    $0x2,%eax
mov    %eax,-0x90(%rbp)
movsd  0x3232(%rip),%xmm0
movsd  %xmm0,-0x438(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x450(%rbp)
ff
mov    -0xb8(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0xa4(%rbp)
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x7f8(%rbp)
ff
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x7e8(%rbp)
ff
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa4(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x7f0(%rbp)
ff
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa4(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x7e0(%rbp)
ff
movsd  -0x7f8(%rbp),%xmm0
ff
addsd  -0x7f0(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x7f8(%rbp),%xmm0
ff
subsd  -0x7f0(%rbp),%xmm0
ff
movsd  %xmm0,-0x7f0(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x800(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x808(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa4(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x810(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa4(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x818(%rbp)
ff
movsd  -0x800(%rbp),%xmm0
ff
addsd  -0x810(%rbp),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x800(%rbp),%xmm0
ff
subsd  -0x810(%rbp),%xmm0
ff
movsd  %xmm0,-0x810(%rbp)
ff
cmpl   $0x0,-0x34(%rbp)
jge    203c <fft+0xf1c>
jmp    24e9 <fft+0x13c9>
movsd  -0x7e8(%rbp),%xmm0
ff
subsd  -0x818(%rbp),%xmm0
ff
movsd  %xmm0,-0x7f8(%rbp)
ff
movsd  -0x818(%rbp),%xmm0
ff
addsd  -0x7e8(%rbp),%xmm0
ff
movsd  %xmm0,-0x7e8(%rbp)
ff
movsd  -0x808(%rbp),%xmm0
ff
addsd  -0x7e0(%rbp),%xmm0
ff
movsd  %xmm0,-0x800(%rbp)
ff
movsd  -0x7e0(%rbp),%xmm1
ff
movsd  -0x808(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x808(%rbp)
ff
movsd  -0x450(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    20c0 <fft+0xfa0>
jp     20c0 <fft+0xfa0>
jmp    2577 <fft+0x1457>
jmp    20c5 <fft+0xfa5>
movsd  -0x7f8(%rbp),%xmm0
ff
movsd  -0x438(%rbp),%xmm2
ff
movsd  -0x800(%rbp),%xmm1
ff
mulsd  -0x450(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x7f8(%rbp),%xmm0
ff
movsd  -0x450(%rbp),%xmm2
ff
movsd  -0x800(%rbp),%xmm1
ff
mulsd  -0x438(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x7f0(%rbp),%xmm0
ff
movsd  -0x440(%rbp),%xmm2
ff
movsd  -0x810(%rbp),%xmm1
ff
mulsd  -0x458(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x7f0(%rbp),%xmm0
ff
movsd  -0x458(%rbp),%xmm2
ff
movsd  -0x810(%rbp),%xmm1
ff
mulsd  -0x440(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x7e8(%rbp),%xmm0
ff
movsd  -0x448(%rbp),%xmm2
ff
movsd  -0x808(%rbp),%xmm1
ff
mulsd  -0x460(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa4(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x7e8(%rbp),%xmm0
ff
movsd  -0x460(%rbp),%xmm2
ff
movsd  -0x808(%rbp),%xmm1
ff
mulsd  -0x448(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa4(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xa4(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xc8(%rbp),%eax
jg     2295 <fft+0x1175>
jmp    1e11 <fft+0xcf1>
jmp    229a <fft+0x117a>
movsd  -0x438(%rbp),%xmm0
ff
movsd  -0x478(%rbp),%xmm1
ff
movsd  -0x438(%rbp),%xmm3
ff
movsd  -0x6e8(%rbp),%xmm2
ff
mulsd  -0x450(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x440(%rbp)
ff
movsd  -0x6e8(%rbp),%xmm0
ff
movsd  -0x438(%rbp),%xmm2
ff
movsd  -0x478(%rbp),%xmm1
ff
mulsd  -0x450(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x450(%rbp),%xmm0
ff
movsd  %xmm0,-0x450(%rbp)
ff
movsd  -0x440(%rbp),%xmm1
ff
movsd  -0x440(%rbp),%xmm2
ff
movsd  -0x450(%rbp),%xmm0
ff
mulsd  -0x450(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x2cd3(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x438(%rbp)
ff
movsd  -0x438(%rbp),%xmm0
ff
mulsd  -0x450(%rbp),%xmm0
ff
movsd  %xmm0,-0x450(%rbp)
ff
movsd  -0x440(%rbp),%xmm0
ff
mulsd  -0x438(%rbp),%xmm0
ff
movsd  %xmm0,-0x438(%rbp)
ff
movsd  -0x438(%rbp),%xmm0
ff
movsd  -0x438(%rbp),%xmm2
ff
movsd  -0x450(%rbp),%xmm1
ff
mulsd  -0x450(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x440(%rbp)
ff
movsd  0x2c48(%rip),%xmm0
mulsd  -0x438(%rbp),%xmm0
ff
mulsd  -0x450(%rbp),%xmm0
ff
movsd  %xmm0,-0x458(%rbp)
ff
movsd  -0x440(%rbp),%xmm0
ff
movsd  -0x438(%rbp),%xmm2
ff
movsd  -0x458(%rbp),%xmm1
ff
mulsd  -0x450(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x448(%rbp)
ff
movsd  -0x440(%rbp),%xmm0
ff
movsd  -0x450(%rbp),%xmm2
ff
movsd  -0x458(%rbp),%xmm1
ff
mulsd  -0x438(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x460(%rbp)
ff
mov    -0xac(%rbp),%eax
sub    -0xc8(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0x90(%rbp),%eax
jg     249e <fft+0x137e>
jmp    1e11 <fft+0xcf1>
mov    -0xcc(%rbp),%eax
sub    -0x90(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xac(%rbp),%eax
jg     24cd <fft+0x13ad>
jmp    1df6 <fft+0xcd6>
mov    -0x90(%rbp),%eax
cmp    -0xac(%rbp),%eax
jne    24e4 <fft+0x13c4>
jmp    3778 <fft+0x2658>
jmp    15b6 <fft+0x496>
movsd  -0x7e8(%rbp),%xmm0
ff
addsd  -0x818(%rbp),%xmm0
ff
movsd  %xmm0,-0x7f8(%rbp)
movsd  -0x818(%rbp),%xmm1
ff
movsd  -0x7e8(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x7e8(%rbp)
ff
movsd  -0x808(%rbp),%xmm0
ff
subsd  -0x7e0(%rbp),%xmm0
ff
movsd  %xmm0,-0x800(%rbp)
ff
movsd  -0x7e0(%rbp),%xmm0
ff
addsd  -0x808(%rbp),%xmm0
ff
movsd  %xmm0,-0x808(%rbp)
ff
movsd  -0x450(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    256d <fft+0x144d>
jp     256d <fft+0x144d>
jmp    2572 <fft+0x1452>
jmp    20c5 <fft+0xfa5>
jmp    2577 <fft+0x1457>
movsd  -0x7f8(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x800(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x7f0(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x810(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x7e8(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xa4(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x808(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0xa4(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xa4(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xc8(%rbp),%eax
jg     2642 <fft+0x1522>
jmp    1e11 <fft+0xcf1>
jmp    229a <fft+0x117a>
movsd  -0x488(%rbp),%xmm0
ff
movsd  -0x488(%rbp),%xmm2
ff
movsd  -0x700(%rbp),%xmm1
ff
mulsd  -0x700(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x440(%rbp)
ff
movsd  0x2992(%rip),%xmm0
mulsd  -0x488(%rbp),%xmm0
ff
mulsd  -0x700(%rbp),%xmm0
ff
movsd  %xmm0,-0x458(%rbp)
ff
jmp    26b3 <fft+0x1593>
mov    -0xb8(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0xa4(%rbp)
mov    -0xa4(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0xa8(%rbp)
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa8(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x7f8(%rbp)
ff
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa8(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x7e8(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa8(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x800(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa8(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x808(%rbp)
ff
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa4(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x7f0(%rbp)
ff
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa4(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x7e0(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa4(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x810(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa4(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x818(%rbp)
ff
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x468(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x470(%rbp)
ff
movsd  -0x468(%rbp),%xmm0
ff
addsd  -0x7f8(%rbp),%xmm0
ff
addsd  -0x7f0(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x470(%rbp),%xmm0
ff
addsd  -0x800(%rbp),%xmm0
ff
addsd  -0x810(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x7f8(%rbp),%xmm0
ff
movsd  -0x488(%rbp),%xmm2
ff
movsd  -0x7f0(%rbp),%xmm1
ff
mulsd  -0x440(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x468(%rbp),%xmm0
ff
movsd  %xmm0,-0x548(%rbp)
ff
movsd  -0x800(%rbp),%xmm0
ff
movsd  -0x488(%rbp),%xmm2
ff
movsd  -0x810(%rbp),%xmm1
ff
mulsd  -0x440(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x470(%rbp),%xmm0
ff
movsd  %xmm0,-0x558(%rbp)
ff
movsd  -0x7e8(%rbp),%xmm0
ff
movsd  -0x700(%rbp),%xmm2
ff
movsd  -0x7e0(%rbp),%xmm1
ff
mulsd  -0x458(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x480(%rbp)
ff
movsd  -0x808(%rbp),%xmm0
ff
movsd  -0x700(%rbp),%xmm2
ff
movsd  -0x818(%rbp),%xmm1
ff
mulsd  -0x458(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x560(%rbp)
ff
movsd  -0x548(%rbp),%xmm0
ff
subsd  -0x560(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x548(%rbp),%xmm0
ff
addsd  -0x560(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xa8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x558(%rbp),%xmm0
ff
addsd  -0x480(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x558(%rbp),%xmm0
ff
subsd  -0x480(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0xa8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x7f8(%rbp),%xmm0
ff
movsd  -0x440(%rbp),%xmm2
ff
movsd  -0x7f0(%rbp),%xmm1
ff
mulsd  -0x488(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x468(%rbp),%xmm0
ff
movsd  %xmm0,-0x548(%rbp)
ff
movsd  -0x800(%rbp),%xmm0
ff
movsd  -0x440(%rbp),%xmm2
ff
movsd  -0x810(%rbp),%xmm1
ff
mulsd  -0x488(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x470(%rbp),%xmm0
ff
movsd  %xmm0,-0x558(%rbp)
ff
movsd  -0x7e8(%rbp),%xmm0
ff
movsd  -0x458(%rbp),%xmm2
ff
movsd  -0x7e0(%rbp),%xmm1
ff
mulsd  -0x700(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x480(%rbp)
ff
movsd  -0x808(%rbp),%xmm0
ff
movsd  -0x458(%rbp),%xmm2
ff
movsd  -0x818(%rbp),%xmm1
ff
mulsd  -0x700(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x560(%rbp)
ff
movsd  -0x548(%rbp),%xmm0
ff
subsd  -0x560(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x548(%rbp),%xmm0
ff
addsd  -0x560(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xa4(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x558(%rbp),%xmm0
ff
addsd  -0x480(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x558(%rbp),%xmm0
ff
subsd  -0x480(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0xa4(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xa8(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xbc(%rbp),%eax
jl     26b3 <fft+0x1593>
mov    -0xbc(%rbp),%ecx
mov    -0xb8(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0x90(%rbp),%eax
jle    26ae <fft+0x158e>
jmp    33f4 <fft+0x22d4>
movslq -0x80(%rbp),%rax
mov    -0x70(%rbp,%rax,4),%eax
mov    %eax,-0x88(%rbp)
mov    -0x90(%rbp),%eax
mov    %eax,-0x98(%rbp)
mov    -0x88(%rbp),%ecx
mov    -0x90(%rbp),%eax
cltd
idiv   %ecx
mov    %eax,-0x90(%rbp)
cmpl   $0x3,-0x88(%rbp)
jne    2c6d <fft+0x1b4d>
jmp    1b2a <fft+0xa0a>
cmpl   $0x5,-0x88(%rbp)
jne    2c7f <fft+0x1b5f>
jmp    2647 <fft+0x1527>
mov    -0x88(%rbp),%eax
cmp    -0xb0(%rbp),%eax
jne    2c96 <fft+0x1b76>
jmp    2e92 <fft+0x1d72>
mov    -0x88(%rbp),%eax
mov    %eax,-0xb0(%rbp)
movsd  -0x7d8(%rbp),%xmm0
ff
cvtsi2sdl -0x88(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x450(%rbp)
ff
movsd  -0x450(%rbp),%xmm0
ff
call   1040 <cos@plt>
movsd  %xmm0,-0x438(%rbp)
ff
movsd  -0x450(%rbp),%xmm0
ff
call   1030 <sin@plt>
movsd  %xmm0,-0x450(%rbp)
ff
mov    -0xb0(%rbp),%eax
cmp    -0x94(%rbp),%eax
jle    2d06 <fft+0x1be6>
movl   $0x1,-0x4(%rbp)
jmp    43f1 <fft+0x32d1>
mov    -0x550(%rbp),%rax
movslq -0xb0(%rbp),%rcx
movsd  0x2314(%rip),%xmm0
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x7c8(%rbp),%rax
movslq -0xb0(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
movl   $0x1,-0x84(%rbp)
mov    -0x550(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x438(%rbp),%xmm2
ff
mov    -0x7c8(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x450(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x550(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x550(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  -0x450(%rbp),%xmm2
ff
mov    -0x7c8(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm1
mulsd  -0x438(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x7c8(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x88(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x88(%rbp)
mov    -0x550(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x550(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x7c8(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x7c8(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
cmp    -0x88(%rbp),%eax
jl     2d41 <fft+0x1c21>
jmp    2e92 <fft+0x1d72>
mov    -0xb8(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0xb8(%rbp),%eax
add    -0x98(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x468(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x470(%rbp)
ff
movsd  -0x468(%rbp),%xmm0
ff
movsd  %xmm0,-0x548(%rbp)
ff
movsd  -0x470(%rbp),%xmm0
ff
movsd  %xmm0,-0x558(%rbp)
ff
movl   $0x1,-0x84(%rbp)
mov    -0x90(%rbp),%eax
add    -0x9c(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x90(%rbp),%ecx
mov    -0xa0(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xa0(%rbp)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x6f0(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x6f0(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0x548(%rbp),%xmm0
ff
movsd  %xmm0,-0x548(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
addsd  (%rax,%rcx,8),%xmm0
mov    -0x6f8(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x6f8(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
addsd  -0x558(%rbp),%xmm0
ff
movsd  %xmm0,-0x558(%rbp)
ff
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x6f0(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
subsd  (%rax,%rcx,8),%xmm0
mov    -0x6f8(%rbp),%rax
movslq -0x84(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x90(%rbp),%eax
add    -0x9c(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
cmp    -0xa0(%rbp),%eax
jl     2f22 <fft+0x1e02>
movsd  -0x548(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x558(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xb8(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0xb8(%rbp),%eax
add    -0x98(%rbp),%eax
mov    %eax,-0xa0(%rbp)
movl   $0x1,-0x84(%rbp)
mov    -0x90(%rbp),%eax
add    -0x9c(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x90(%rbp),%ecx
mov    -0xa0(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xa0(%rbp)
mov    -0x84(%rbp),%eax
mov    %eax,-0xb4(%rbp)
movsd  -0x468(%rbp),%xmm0
ff
movsd  %xmm0,-0x548(%rbp)
ff
movsd  -0x470(%rbp),%xmm0
ff
movsd  %xmm0,-0x558(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x480(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x560(%rbp)
ff
movl   $0x1,-0x88(%rbp)
mov    -0x88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
mov    -0x6f0(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x550(%rbp),%rax
movslq -0xb4(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x548(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x548(%rbp)
ff
mov    -0x6f8(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x550(%rbp),%rax
movslq -0xb4(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x558(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x558(%rbp)
ff
mov    -0x88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
mov    -0x6f0(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x7c8(%rbp),%rax
movslq -0xb4(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x480(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x480(%rbp)
ff
mov    -0x6f8(%rbp),%rax
movslq -0x88(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x7c8(%rbp),%rax
movslq -0xb4(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x560(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x560(%rbp)
ff
mov    -0x84(%rbp),%eax
add    -0xb4(%rbp),%eax
mov    %eax,-0xb4(%rbp)
mov    -0xb4(%rbp),%eax
cmp    -0xb0(%rbp),%eax
jle    32c0 <fft+0x21a0>
mov    -0xb0(%rbp),%ecx
mov    -0xb4(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xb4(%rbp)
jmp    32c5 <fft+0x21a5>
mov    -0x88(%rbp),%eax
cmp    -0xb0(%rbp),%eax
jl     3172 <fft+0x2052>
mov    -0xb0(%rbp),%eax
sub    -0x84(%rbp),%eax
mov    %eax,-0x88(%rbp)
movsd  -0x548(%rbp),%xmm0
ff
subsd  -0x560(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x558(%rbp),%xmm0
ff
addsd  -0x480(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x548(%rbp),%xmm0
ff
addsd  -0x560(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x558(%rbp),%xmm0
ff
subsd  -0x480(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
cmp    -0x88(%rbp),%eax
jge    339b <fft+0x227b>
jmp    3100 <fft+0x1fe0>
mov    -0x98(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xbc(%rbp),%eax
jg     33c4 <fft+0x22a4>
jmp    2e92 <fft+0x1d72>
mov    -0xbc(%rbp),%ecx
mov    -0xb8(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0x90(%rbp),%eax
jg     33ef <fft+0x22cf>
jmp    2e92 <fft+0x1d72>
jmp    33f4 <fft+0x22d4>
mov    -0x80(%rbp),%eax
mov    -0x8c(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    340d <fft+0x22ed>
jmp    3778 <fft+0x2658>
mov    -0xac(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
movsd  0x1c0c(%rip),%xmm0
subsd  -0x478(%rbp),%xmm0
ff
movsd  %xmm0,-0x440(%rbp)
ff
movsd  -0x6e8(%rbp),%xmm0
ff
movsd  %xmm0,-0x450(%rbp)
ff
movsd  -0x440(%rbp),%xmm0
ff
movsd  %xmm0,-0x438(%rbp)
ff
movsd  -0x450(%rbp),%xmm0
ff
movsd  %xmm0,-0x458(%rbp)
ff
mov    -0x90(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x548(%rbp)
ff
movsd  -0x440(%rbp),%xmm0
ff
movsd  -0x548(%rbp),%xmm2
ff
movsd  -0x458(%rbp),%xmm1
ff
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x458(%rbp),%xmm0
ff
movsd  -0x548(%rbp),%xmm2
ff
movsd  -0x440(%rbp),%xmm1
ff
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
mulsd  (%rax,%rcx,8),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x98(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xc8(%rbp),%eax
jg     355d <fft+0x243d>
jmp    3476 <fft+0x2356>
movsd  -0x450(%rbp),%xmm0
ff
mulsd  -0x458(%rbp),%xmm0
ff
movsd  %xmm0,-0x548(%rbp)
ff
movsd  -0x450(%rbp),%xmm0
ff
movsd  -0x440(%rbp),%xmm2
ff
movsd  -0x438(%rbp),%xmm1
ff
mulsd  -0x458(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x458(%rbp)
ff
movsd  -0x438(%rbp),%xmm0
ff
movsd  -0x440(%rbp),%xmm2
ff
movsd  -0x548(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x440(%rbp)
ff
mov    -0x90(%rbp),%eax
sub    -0xc8(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0x98(%rbp),%eax
jg     3613 <fft+0x24f3>
jmp    3476 <fft+0x2356>
movsd  -0x438(%rbp),%xmm0
ff
movsd  -0x478(%rbp),%xmm1
ff
movsd  -0x438(%rbp),%xmm3
ff
movsd  -0x6e8(%rbp),%xmm2
ff
mulsd  -0x450(%rbp),%xmm2
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x440(%rbp)
ff
movsd  -0x6e8(%rbp),%xmm0
ff
movsd  -0x438(%rbp),%xmm2
ff
movsd  -0x478(%rbp),%xmm1
ff
mulsd  -0x450(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  -0x450(%rbp),%xmm0
ff
movsd  %xmm0,-0x450(%rbp)
ff
movsd  -0x440(%rbp),%xmm1
ff
movsd  -0x440(%rbp),%xmm2
ff
movsd  -0x450(%rbp),%xmm0
ff
mulsd  -0x450(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
addsd  %xmm0,%xmm1
movsd  0x195a(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x438(%rbp)
ff
movsd  -0x438(%rbp),%xmm0
ff
mulsd  -0x450(%rbp),%xmm0
ff
movsd  %xmm0,-0x450(%rbp)
ff
movsd  -0x438(%rbp),%xmm0
ff
mulsd  -0x440(%rbp),%xmm0
ff
movsd  %xmm0,-0x440(%rbp)
ff
mov    -0xac(%rbp),%eax
sub    -0x98(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0x90(%rbp),%eax
jg     3739 <fft+0x2619>
jmp    3444 <fft+0x2324>
mov    -0xac(%rbp),%eax
add    -0xcc(%rbp),%eax
sub    -0x90(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
mov    -0xac(%rbp),%ecx
shl    $0x1,%ecx
cmp    %ecx,%eax
jg     3773 <fft+0x2653>
jmp    341c <fft+0x22fc>
jmp    15b6 <fft+0x496>
mov    -0xc0(%rbp),%eax
mov    %eax,-0x410(%rbp)
cmpl   $0x0,-0xc4(%rbp)
jne    3796 <fft+0x2676>
jmp    3d32 <fft+0x2c12>
mov    -0xc4(%rbp),%eax
shl    $0x1,%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
mov    -0x8c(%rbp),%eax
cmp    -0x88(%rbp),%eax
jge    37c9 <fft+0x26a9>
mov    -0x88(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x88(%rbp)
movl   $0x1,-0x84(%rbp)
mov    -0xac(%rbp),%ecx
movslq -0x88(%rbp),%rax
mov    %ecx,-0x410(%rbp,%rax,4)
mov    -0x418(%rbp),%rax
movslq -0x84(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    -0x78(%rbp),%rcx
movslq -0x84(%rbp),%rsi
cltd
idivl  (%rcx,%rsi,4)
mov    %eax,%ecx
movslq -0x84(%rbp),%rax
mov    %ecx,-0x410(%rbp,%rax,4)
movslq -0x88(%rbp),%rax
mov    -0x410(%rbp,%rax,4),%edx
mov    -0x78(%rbp),%rax
movslq -0x84(%rbp),%rcx
imul   (%rax,%rcx,4),%edx
mov    -0x418(%rbp),%rax
movslq -0x88(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
mov    -0x88(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x88(%rbp)
mov    -0x84(%rbp),%eax
cmp    -0x88(%rbp),%eax
jl     37e7 <fft+0x26c7>
movslq -0x88(%rbp),%rax
mov    -0x410(%rbp,%rax,4),%eax
mov    %eax,-0xa4(%rbp)
mov    -0x40c(%rbp),%eax
mov    %eax,-0x90(%rbp)
mov    -0xac(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xb8(%rbp)
mov    -0x90(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
movl   $0x1,-0x84(%rbp)
mov    -0x28(%rbp),%rax
cmp    -0x20(%rbp),%rax
je     38d0 <fft+0x27b0>
jmp    3abb <fft+0x299b>
jmp    38d5 <fft+0x27b5>
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x548(%rbp)
ff
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x548(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x558(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x558(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xcc(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0x90(%rbp),%eax
add    -0xa0(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
cmp    -0xc0(%rbp),%eax
jge    39c8 <fft+0x28a8>
jmp    38d5 <fft+0x27b5>
jmp    39cd <fft+0x28ad>
mov    -0x418(%rbp),%rax
movslq -0x84(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
mov    -0xa0(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xa0(%rbp)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
movslq -0x84(%rbp),%rax
mov    -0x410(%rbp,%rax,4),%eax
add    -0xa0(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
mov    -0x418(%rbp),%rcx
movslq -0x84(%rbp),%rdx
cmp    (%rcx,%rdx,4),%eax
jle    3a37 <fft+0x2917>
jmp    39cd <fft+0x28ad>
movl   $0x1,-0x84(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xa0(%rbp),%eax
jge    3a58 <fft+0x2938>
jmp    38d5 <fft+0x27b5>
mov    -0xcc(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0x90(%rbp),%eax
add    -0xa0(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
cmp    -0xc0(%rbp),%eax
jge    3a93 <fft+0x2973>
jmp    3a41 <fft+0x2921>
mov    -0xb8(%rbp),%eax
cmp    -0xc0(%rbp),%eax
jge    3aaa <fft+0x298a>
jmp    39cd <fft+0x28ad>
mov    -0xa4(%rbp),%eax
mov    %eax,-0xac(%rbp)
jmp    3d32 <fft+0x2c12>
mov    -0xb8(%rbp),%eax
add    -0xac(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x548(%rbp)
ff
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x548(%rbp),%xmm0
ff
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,-0x558(%rbp)
ff
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0xb8(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
movsd  -0x558(%rbp),%xmm0
ff
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xcc(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xcc(%rbp),%eax
add    -0xa0(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0x88(%rbp),%eax
jl     3acd <fft+0x29ad>
mov    -0xc0(%rbp),%eax
sub    -0xac(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xc0(%rbp),%eax
sub    -0xac(%rbp),%eax
add    -0xa0(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xc8(%rbp),%eax
jge    3c02 <fft+0x2ae2>
jmp    3abb <fft+0x299b>
mov    -0x90(%rbp),%eax
sub    -0xc8(%rbp),%eax
add    -0xa0(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xac(%rbp),%eax
sub    -0xc8(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xa0(%rbp),%eax
cmp    -0xc0(%rbp),%eax
jge    3c49 <fft+0x2b29>
jmp    3abb <fft+0x299b>
jmp    3c4e <fft+0x2b2e>
mov    -0x418(%rbp),%rax
movslq -0x84(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
mov    -0xa0(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xa0(%rbp)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
movslq -0x84(%rbp),%rax
mov    -0x410(%rbp,%rax,4),%eax
add    -0xa0(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
mov    -0x418(%rbp),%rcx
movslq -0x84(%rbp),%rdx
cmp    (%rcx,%rdx,4),%eax
jle    3cb8 <fft+0x2b98>
jmp    3c4e <fft+0x2b2e>
movl   $0x1,-0x84(%rbp)
mov    -0xb8(%rbp),%eax
cmp    -0xa0(%rbp),%eax
jge    3cd9 <fft+0x2bb9>
jmp    3abb <fft+0x299b>
mov    -0xac(%rbp),%eax
add    -0xb8(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0x90(%rbp),%eax
add    -0xa0(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
cmp    -0xc0(%rbp),%eax
jl     3cc2 <fft+0x2ba2>
mov    -0xb8(%rbp),%eax
cmp    -0xc0(%rbp),%eax
jge    3d26 <fft+0x2c06>
jmp    3c4e <fft+0x2b2e>
mov    -0xa4(%rbp),%eax
mov    %eax,-0xac(%rbp)
mov    -0xc4(%rbp),%eax
shl    $0x1,%eax
add    $0x1,%eax
cmp    -0x8c(%rbp),%eax
jl     3d4f <fft+0x2c2f>
jmp    435c <fft+0x323c>
movslq -0xc4(%rbp),%rax
mov    -0x410(%rbp,%rax,4),%eax
mov    %eax,-0x98(%rbp)
mov    -0x8c(%rbp),%eax
sub    -0xc4(%rbp),%eax
mov    %eax,-0x84(%rbp)
movslq -0x84(%rbp),%rax
movl   $0x1,-0x70(%rbp,%rax,4)
movslq -0x84(%rbp),%rax
mov    -0x70(%rbp,%rax,4),%edx
mov    -0x78(%rbp),%rax
movslq -0x84(%rbp),%rcx
imul   (%rax,%rcx,4),%edx
mov    %edx,(%rax,%rcx,4)
mov    -0x84(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
cmp    -0xc4(%rbp),%eax
jne    3d84 <fft+0x2c64>
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc4(%rbp)
mov    -0x78(%rbp),%rax
movslq -0xc4(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
sub    $0x1,%eax
mov    %eax,-0xbc(%rbp)
cmpl   $0xd1,-0xbc(%rbp)
jle    3e04 <fft+0x2ce4>
movl   $0x1,-0x4(%rbp)
jmp    43f1 <fft+0x32d1>
movl   $0x0,-0xb4(%rbp)
movl   $0x0,-0x84(%rbp)
jmp    3ea0 <fft+0x2d80>
mov    -0xa0(%rbp),%ecx
mov    -0xb4(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xb4(%rbp)
mov    -0xb8(%rbp),%eax
mov    %eax,-0xa0(%rbp)
mov    -0x88(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
mov    -0x78(%rbp),%rax
movslq -0x88(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
add    -0xb4(%rbp),%eax
mov    %eax,-0xb4(%rbp)
mov    -0xb4(%rbp),%eax
cmp    -0xa0(%rbp),%eax
jl     3e89 <fft+0x2d69>
jmp    3e1d <fft+0x2cfd>
mov    -0xb4(%rbp),%edx
mov    -0x418(%rbp),%rax
movslq -0x84(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x78(%rbp),%rax
movslq -0xc4(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xa0(%rbp)
mov    -0xc4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x88(%rbp)
mov    -0x78(%rbp),%rax
movslq -0x88(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xb8(%rbp)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
cmp    -0xbc(%rbp),%eax
jg     3efd <fft+0x2ddd>
jmp    3e60 <fft+0x2d40>
movl   $0x0,-0x84(%rbp)
jmp    3f6b <fft+0x2e4b>
mov    -0xb8(%rbp),%eax
mov    %eax,-0x88(%rbp)
mov    -0x418(%rbp),%rax
movslq -0x88(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xb8(%rbp)
xor    %edx,%edx
sub    -0xb8(%rbp),%edx
mov    -0x418(%rbp),%rax
movslq -0x88(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xb8(%rbp),%eax
cmp    -0x84(%rbp),%eax
je     3f5f <fft+0x2e3f>
jmp    3f0c <fft+0x2dec>
mov    -0xb8(%rbp),%eax
mov    %eax,-0xa4(%rbp)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
mov    -0x418(%rbp),%rax
movslq -0x84(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xb8(%rbp)
cmpl   $0x0,-0xb8(%rbp)
jge    3fa3 <fft+0x2e83>
jmp    3f6b <fft+0x2e4b>
mov    -0xb8(%rbp),%eax
cmp    -0x84(%rbp),%eax
je     3fba <fft+0x2e9a>
jmp    3f0c <fft+0x2dec>
xor    %edx,%edx
sub    -0x84(%rbp),%edx
mov    -0x418(%rbp),%rax
movslq -0x84(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0x84(%rbp),%eax
cmp    -0xbc(%rbp),%eax
je     3fea <fft+0x2eca>
jmp    3f6b <fft+0x2e4b>
mov    -0xcc(%rbp),%eax
imul   -0x94(%rbp),%eax
mov    %eax,-0x94(%rbp)
jmp    4310 <fft+0x31f0>
mov    -0x84(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x84(%rbp)
mov    -0x418(%rbp),%rax
movslq -0x84(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jge    402e <fft+0x2f0e>
jmp    4002 <fft+0x2ee2>
mov    -0xac(%rbp),%eax
mov    %eax,-0xb4(%rbp)
mov    -0xb4(%rbp),%eax
mov    %eax,-0x90(%rbp)
mov    -0xb4(%rbp),%eax
cmp    -0x94(%rbp),%eax
jle    4064 <fft+0x2f44>
mov    -0x94(%rbp),%eax
mov    %eax,-0x90(%rbp)
mov    -0x90(%rbp),%ecx
mov    -0xb4(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xb4(%rbp)
mov    -0x418(%rbp),%rax
movslq -0x84(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x88(%rbp)
mov    -0xac(%rbp),%eax
imul   -0x88(%rbp),%eax
add    -0x80(%rbp),%eax
add    -0xb4(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0xb8(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0x9c(%rbp)
movl   $0x0,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x6f0(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x6f8(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xcc(%rbp),%ecx
mov    -0x9c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
cmp    -0xb8(%rbp),%eax
jne    40c7 <fft+0x2fa7>
jmp    414d <fft+0x302d>
mov    -0xb8(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
mov    -0xac(%rbp),%ecx
mov    -0x88(%rbp),%edx
mov    -0x418(%rbp),%rsi
movslq -0x88(%rbp),%rdi
add    (%rsi,%rdi,4),%edx
imul   %edx,%ecx
sub    %ecx,%eax
mov    %eax,-0xa0(%rbp)
mov    -0x418(%rbp),%rcx
movslq -0x88(%rbp),%rdx
xor    %eax,%eax
sub    (%rcx,%rdx,4),%eax
mov    %eax,-0x88(%rbp)
mov    -0x428(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x430(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xcc(%rbp),%ecx
mov    -0x9c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x9c(%rbp)
mov    -0xcc(%rbp),%ecx
mov    -0xa0(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xa0(%rbp)
mov    -0x9c(%rbp),%eax
cmp    -0xb8(%rbp),%eax
jne    41a6 <fft+0x3086>
mov    -0xa0(%rbp),%eax
mov    %eax,-0xb8(%rbp)
mov    -0x88(%rbp),%eax
cmp    -0x84(%rbp),%eax
jne    414d <fft+0x302d>
mov    -0xb8(%rbp),%eax
add    -0x90(%rbp),%eax
mov    %eax,-0x9c(%rbp)
movl   $0x0,-0xa0(%rbp)
mov    -0xa0(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa0(%rbp)
mov    -0x6f0(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x428(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x6f8(%rbp),%rax
movslq -0xa0(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm0
mov    -0x430(%rbp),%rax
movslq -0x9c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0xcc(%rbp),%ecx
mov    -0x9c(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0x9c(%rbp)
mov    -0x9c(%rbp),%eax
cmp    -0xb8(%rbp),%eax
jne    4266 <fft+0x3146>
cmpl   $0x0,-0xb4(%rbp)
je     42f9 <fft+0x31d9>
jmp    403a <fft+0x2f1a>
cmpl   $0x1,-0x84(%rbp)
je     430b <fft+0x31eb>
jmp    4002 <fft+0x2ee2>
jmp    4310 <fft+0x31f0>
mov    -0xa4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
mov    -0x98(%rbp),%ecx
mov    -0xc8(%rbp),%eax
sub    %ecx,%eax
mov    %eax,-0xc8(%rbp)
mov    -0xc8(%rbp),%eax
sub    -0xcc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x80(%rbp)
cmpl   $0x0,-0xc8(%rbp)
jl     4357 <fft+0x3237>
jmp    4002 <fft+0x2ee2>
jmp    435c <fft+0x323c>
cmpl   $0x0,-0x34(%rbp)
jge    43ea <fft+0x32ca>
xor    %eax,%eax
sub    -0x20(%rbp),%rax
sub    $0x1,%rax
mov    %eax,-0x84(%rbp)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
cmp    $0x0,%eax
jge    43e5 <fft+0x32c5>
cvtsi2sdq -0x28(%rbp),%xmm1
mov    -0x428(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x428(%rbp)
movsd  0x8(%rax),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rax)
cvtsi2sdq -0x28(%rbp),%xmm1
mov    -0x430(%rbp),%rax
mov    %rax,%rcx
add    $0x8,%rcx
mov    %rcx,-0x430(%rbp)
movsd  0x8(%rax),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rax)
jmp    4376 <fft+0x3256>
jmp    43ea <fft+0x32ca>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x820,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<fft>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x7b8,%rsp
xor    %eax,%eax
cmp    $0x2,%rcx
jl     2c9e <fft+0x1b7e>
mov    %rdx,%r10
test   %r9d,%r9d
js     116b <fft+0x4b>
movsd  0x1eb3(%rip),%xmm0
movsd  0x1eb3(%rip),%xmm1
movsd  0x1eb3(%rip),%xmm2
movsd  %xmm2,0xf0(%rsp)
mov    %r9d,%r13d
jmp    1192 <fft+0x72>
mov    %r9d,%r13d
neg    %r13d
movsd  0x1e9f(%rip),%xmm0
movsd  0x1e9f(%rip),%xmm1
movsd  0x1e9f(%rip),%xmm2
movsd  %xmm2,0xf0(%rsp)
mov    %r13d,%ebp
imul   %r8d,%ebp
movslq %ebp,%rax
mov    %rax,%rdx
or     %rcx,%rdx
shr    $0x20,%rdx
mov    %ebp,0x24(%rsp)
je     11b6 <fft+0x96>
cqto
idiv   %rcx
mov    %rax,%r11
jmp    11bf <fft+0x9f>
mov    %ebp,%eax
xor    %edx,%edx
div    %ecx
mov    %eax,%r11d
mov    %r13d,%ebp
xorps  %xmm2,%xmm2
cvtsi2sd %r11d,%xmm2
imul   %r10d,%ebp
mulsd  %xmm0,%xmm2
movsd  %xmm2,0xf8(%rsp)
xor    %r14d,%r14d
test   $0xf,%cl
mov    %r9d,0x9c(%rsp)
mov    %rcx,0x128(%rsp)
mov    %r8,0x100(%rsp)
je     1200 <fft+0xe0>
mov    %ecx,%r9d
jmp    122b <fft+0x10b>
xor    %r14d,%r14d
mov    %ecx,%r9d
cs nopw 0x0(%rax,%rax,1)
mov    %r9d,%eax
movl   $0x4,0xa0(%rsp,%r14,4)
add    $0x1,%r14
sar    $0x4,%r9d
test   $0xf0,%al
je     1210 <fft+0xf0>
lea    -0x8(%rdi),%r15
lea    -0x8(%rsi),%r12
mov    %ebp,%eax
sub    %r13d,%eax
mov    %eax,0x88(%rsp)
movsd  0xf8(%rsp),%xmm2
mulsd  0x1de0(%rip),%xmm2
movsd  %xmm2,0xf8(%rsp)
mov    $0x3,%r8d
mov    $0x9,%ecx
jmp    1280 <fft+0x160>
cs nopw 0x0(%rax,%rax,1)
add    $0x2,%r8d
mov    %r8d,%ecx
imul   %r8d,%ecx
cmp    %r9d,%ecx
jg     12bd <fft+0x19d>
mov    %r9d,%eax
cltd
idiv   %ecx
test   %edx,%edx
jne    1270 <fft+0x150>
movslq %r14d,%rax
lea    (%rsp,%rax,4),%rbx
add    $0xa0,%rbx
nopl   0x0(%rax,%rax,1)
mov    %r8d,(%rbx)
mov    %r9d,%eax
cltd
idiv   %ecx
mov    %eax,%r9d
cltd
idiv   %ecx
add    $0x4,%rbx
add    $0x1,%r14d
test   %edx,%edx
je     12a0 <fft+0x180>
jmp    1270 <fft+0x150>
cmp    $0x4,%r9d
jg     13a6 <fft+0x286>
movslq %r14d,%rax
mov    %r9d,0xa0(%rsp,%rax,4)
xor    %r8d,%r8d
cmp    $0x1,%r9d
setne  %r8b
add    %r14d,%r8d
test   %r14d,%r14d
mov    %rsi,0x120(%rsp)
mov    %rdi,0x118(%rsp)
mov    %r14,0xe8(%rsp)
movsd  %xmm1,0x158(%rsp)
movsd  %xmm0,0x150(%rsp)
je     13fc <fft+0x2dc>
movslq %r14d,%rax
mov    %r8,%rdi
movslq %edi,%rdi
lea    -0x1(%r14),%ecx
mov    %r14d,%edx
and    $0x3,%edx
je     134b <fft+0x22b>
nopl   0x0(%rax,%rax,1)
mov    0x9c(%rsp,%rax,4),%esi
add    $0xffffffffffffffff,%rax
mov    %esi,0xa0(%rsp,%rdi,4)
add    $0x1,%rdi
add    $0xffffffff,%edx
jne    1330 <fft+0x210>
cmp    $0x3,%ecx
mov    0x24(%rsp),%edx
jb     1403 <fft+0x2e3>
nopl   0x0(%rax,%rax,1)
mov    0x9c(%rsp,%rax,4),%ecx
mov    %ecx,0xa0(%rsp,%rdi,4)
mov    0x98(%rsp,%rax,4),%ecx
mov    %ecx,0xa4(%rsp,%rdi,4)
mov    0x94(%rsp,%rax,4),%ecx
mov    %ecx,0xa8(%rsp,%rdi,4)
mov    0x90(%rsp,%rax,4),%ecx
add    $0xfffffffffffffffc,%rax
mov    %ecx,0xac(%rsp,%rdi,4)
add    $0x4,%rdi
test   %eax,%eax
jne    1360 <fft+0x240>
jmp    1403 <fft+0x2e3>
test   $0x3,%r9b
jne    13c2 <fft+0x2a2>
movslq %r14d,%rax
add    $0x1,%r14d
movl   $0x2,0xa0(%rsp,%rax,4)
shr    $0x2,%r9d
mov    $0x2,%ebx
mov    %r14d,%r8d
jmp    13df <fft+0x2bf>
nopl   0x0(%rax)
add    $0x1,%ebx
or     $0x1,%ebx
cmp    %r9d,%ebx
jg     12e0 <fft+0x1c0>
mov    %r9d,%eax
cltd
idiv   %ebx
test   %edx,%edx
jne    13d0 <fft+0x2b0>
movslq %r8d,%rcx
add    $0x1,%r8d
mov    %ebx,0xa0(%rsp,%rcx,4)
mov    %eax,%r9d
jmp    13d0 <fft+0x2b0>
mov    0x24(%rsp),%edx
mov    %r8,%rdi
lea    0x0(%r13,%r13,1),%eax
mov    %eax,0x114(%rsp)
lea    (%r11,%r11,1),%eax
mov    %eax,0x50(%rsp)
mov    %r11d,%ecx
sub    %ebp,%ecx
movsd  0xf0(%rsp),%xmm2
movapd %xmm2,%xmm0
mulsd  %xmm2,%xmm0
movsd  0x1c03(%rip),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x168(%rsp)
movsd  0x1bf6(%rip),%xmm0
mulsd  %xmm2,%xmm0
movsd  %xmm0,0x160(%rsp)
lea    -0x1(%rdi),%eax
mov    %eax,0x110(%rsp)
lea    0x1(%r11),%eax
mov    %rax,0x130(%rsp)
movslq %ebp,%rax
mov    %rax,0x90(%rsp)
mov    %ebp,%ebx
neg    %ebx
mov    $0x1,%eax
mov    %r10,0xd8(%rsp)
sub    %r10d,%eax
mov    %rcx,%r10
imul   %r13d,%eax
lea    (%rax,%r11,2),%eax
mov    %eax,0x10c(%rsp)
mov    $0xffffffffffffffff,%rax
xor    %ecx,%ecx
mov    %rcx,0x28(%rsp)
mov    %edx,%esi
mov    %r11,0x38(%rsp)
mov    %rdi,0xe0(%rsp)
mov    %r10,0x138(%rsp)
mov    %esi,%r14d
movapd %xmm2,0x40(%rsp)
movapd %xmm15,0x140(%rsp)
mov    %r9,0x18(%rsp)
cltq
mov    %rax,0x30(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
xorps  %xmm1,%xmm1
cvtsi2sd %r14d,%xmm1
movsd  0xf8(%rsp),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rsp)
call   1030 <sin@plt>
mulsd  %xmm0,%xmm0
addsd  %xmm0,%xmm0
movapd %xmm0,0x70(%rsp)
movsd  0x8(%rsp),%xmm0
addsd  %xmm0,%xmm0
call   1030 <sin@plt>
movapd %xmm0,%xmm14
mov    0x30(%rsp),%rsi
movslq 0xa4(%rsp,%rsi,4),%rcx
add    $0x1,%rsi
cmp    $0x2,%rcx
mov    %rsi,0x30(%rsp)
jne    1770 <fft+0x650>
sar    %r14d
mov    $0x1,%eax
mov    0x38(%rsp),%r11
mov    0x88(%rsp),%edx
movapd 0x1b02(%rip),%xmm1
movsd  0x1ad9(%rip),%xmm10
nopw   0x0(%rax,%rax,1)
lea    (%rax,%r14,1),%ecx
movslq %ecx,%rcx
movsd  (%r15,%rcx,8),%xmm0
movsd  (%r12,%rcx,8),%xmm3
cltq
movsd  (%r15,%rax,8),%xmm2
subsd  %xmm0,%xmm2
movsd  %xmm2,(%r15,%rcx,8)
movsd  (%r12,%rax,8),%xmm2
subsd  %xmm3,%xmm2
movsd  %xmm2,(%r12,%rcx,8)
addsd  (%r15,%rax,8),%xmm0
movsd  %xmm0,(%r15,%rax,8)
addsd  (%r12,%rax,8),%xmm3
movsd  %xmm3,(%r12,%rax,8)
add    %r14d,%ecx
mov    %ecx,%eax
sub    %edx,%ecx
jle    1580 <fft+0x460>
mov    %ecx,%eax
cmp    %r11d,%ecx
jle    1580 <fft+0x460>
cmp    %r14d,%ecx
mov    0x18(%rsp),%r9
movapd 0x70(%rsp),%xmm11
jg     23b6 <fft+0x1296>
lea    0x2(%r14),%eax
movsd  0x1a49(%rip),%xmm8
subsd  %xmm11,%xmm8
movapd %xmm11,%xmm9
xorpd  %xmm1,%xmm9
mov    0x114(%rsp),%esi
mov    0x50(%rsp),%edi
nopl   0x0(%rax)
movapd %xmm8,%xmm2
movapd %xmm14,%xmm3
nopw   0x0(%rax,%rax,1)
movapd %xmm3,%xmm4
xorpd  %xmm1,%xmm4
nopl   0x0(%rax,%rax,1)
mov    %ecx,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movslq %edx,%rcx
add    %r14d,%edx
movsd  (%r15,%rcx,8),%xmm5
movslq %edx,%rdx
movsd  (%r15,%rdx,8),%xmm6
movapd %xmm5,%xmm7
movsd  (%r12,%rcx,8),%xmm0
subsd  (%r12,%rdx,8),%xmm0
addsd  %xmm6,%xmm5
movsd  %xmm5,(%r15,%rcx,8)
movsd  (%r12,%rdx,8),%xmm5
addsd  (%r12,%rcx,8),%xmm5
subsd  %xmm6,%xmm7
movsd  %xmm5,(%r12,%rcx,8)
movapd %xmm2,%xmm5
mulsd  %xmm0,%xmm5
mulsd  %xmm4,%xmm0
movapd %xmm2,%xmm6
mulsd  %xmm7,%xmm6
addsd  %xmm0,%xmm6
movsd  %xmm6,(%r15,%rdx,8)
mulsd  %xmm3,%xmm7
addsd  %xmm5,%xmm7
movsd  %xmm7,(%r12,%rdx,8)
add    %r14d,%edx
cmp    %ebp,%edx
jl     1650 <fft+0x530>
add    %ebx,%edx
xorpd  %xmm1,%xmm2
mov    %eax,%ecx
sub    %edx,%ecx
cmp    %edx,%ecx
jg     1640 <fft+0x520>
movapd %xmm14,%xmm0
mulsd  %xmm3,%xmm0
movapd %xmm11,%xmm4
mulsd  %xmm2,%xmm4
addsd  %xmm0,%xmm4
movapd %xmm3,%xmm0
mulsd  %xmm9,%xmm0
movapd %xmm14,%xmm5
mulsd  %xmm2,%xmm5
subsd  %xmm4,%xmm2
addsd  %xmm0,%xmm5
addsd  %xmm3,%xmm5
movapd %xmm5,%xmm0
mulsd  %xmm5,%xmm0
movapd %xmm2,%xmm3
mulsd  %xmm2,%xmm3
addsd  %xmm0,%xmm3
movapd %xmm10,%xmm0
subsd  %xmm3,%xmm0
mulsd  %xmm0,%xmm5
mulsd  %xmm0,%xmm2
add    %r11d,%ecx
movapd %xmm5,%xmm3
cmp    %edx,%ecx
jl     1630 <fft+0x510>
add    %esi,%eax
mov    %eax,%edx
sub    %r14d,%edx
mov    %edx,%ecx
shr    $0x1f,%ecx
add    %edx,%ecx
sar    %ecx
add    %r11d,%ecx
cmp    %edi,%ecx
jle    1620 <fft+0x500>
jmp    14f0 <fft+0x3d0>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmp    $0x4,%ecx
mov    0x9c(%rsp),%eax
mov    0x38(%rsp),%r11
mov    0x18(%rsp),%r9
mov    0x88(%rsp),%r8d
mov    0x138(%rsp),%r10
movapd 0x18d3(%rip),%xmm11
movsd  0x18aa(%rip),%xmm10
movsd  0x1899(%rip),%xmm13
movapd 0x140(%rsp),%xmm15
jne    1ae0 <fft+0x9c0>
sar    $0x2,%r14d
mov    %r13d,%r8d
sub    %r14d,%r8d
movapd 0x70(%rsp),%xmm1
movapd %xmm1,%xmm0
xorpd  %xmm11,%xmm0
unpcklpd %xmm14,%xmm1
movapd %xmm1,0x70(%rsp)
unpcklpd %xmm0,%xmm14
movapd %xmm14,%xmm12
mov    $0x1,%ecx
movapd %xmm13,%xmm9
xorpd  %xmm14,%xmm14
nopl   0x0(%rax)
movapd %xmm10,%xmm13
movapd %xmm9,%xmm10
unpckhpd %xmm9,%xmm10
movapd %xmm15,%xmm8
unpckhpd %xmm15,%xmm8
jmp    18e8 <fft+0x7c8>
xchg   %ax,%ax
ucomisd %xmm14,%xmm10
movapd %xmm3,%xmm7
addsd  %xmm1,%xmm7
subsd  %xmm1,%xmm3
movapd %xmm0,%xmm5
subsd  %xmm2,%xmm5
addsd  %xmm2,%xmm0
jne    1845 <fft+0x725>
jnp    19b5 <fft+0x895>
movapd %xmm10,%xmm1
mulsd  %xmm5,%xmm1
movapd %xmm7,%xmm2
mulsd  %xmm9,%xmm2
subsd  %xmm1,%xmm2
movsd  %xmm2,(%r15,%rsi,8)
mulsd  %xmm9,%xmm5
mulsd  %xmm10,%xmm7
addsd  %xmm5,%xmm7
movsd  %xmm7,(%r12,%rsi,8)
movapd 0x40(%rsp),%xmm5
movapd %xmm5,%xmm1
mulsd  %xmm6,%xmm1
movapd %xmm4,%xmm2
movapd 0x60(%rsp),%xmm7
mulsd  %xmm7,%xmm2
subsd  %xmm1,%xmm2
movsd  %xmm2,(%r15,%rdx,8)
mulsd  %xmm7,%xmm6
mulsd  %xmm5,%xmm4
addsd  %xmm6,%xmm4
movsd  %xmm4,(%r12,%rdx,8)
movapd %xmm8,%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm3,%xmm2
mulsd  %xmm15,%xmm2
subsd  %xmm1,%xmm2
movsd  %xmm2,(%r15,%rcx,8)
mulsd  %xmm15,%xmm0
mulsd  %xmm8,%xmm3
addsd  %xmm0,%xmm3
movsd  %xmm3,(%r12,%rcx,8)
add    %r14d,%ecx
cmp    %ebp,%ecx
jg     19e0 <fft+0x8c0>
lea    (%rcx,%r14,1),%esi
lea    (%rsi,%r14,1),%edx
lea    (%rdx,%r14,1),%r9d
movslq %ecx,%rdi
movsd  (%r15,%rdi,8),%xmm3
movslq %edx,%rdx
movsd  (%r15,%rdx,8),%xmm0
movapd %xmm3,%xmm4
addsd  %xmm0,%xmm4
subsd  %xmm0,%xmm3
movslq %esi,%rsi
movsd  (%r15,%rsi,8),%xmm2
movslq %r9d,%rcx
movsd  (%r15,%rcx,8),%xmm0
movapd %xmm2,%xmm5
addsd  %xmm0,%xmm5
subsd  %xmm0,%xmm2
movapd %xmm4,%xmm0
addsd  %xmm5,%xmm0
movsd  %xmm0,(%r15,%rdi,8)
subsd  %xmm5,%xmm4
movsd  (%r12,%rdi,8),%xmm0
movsd  (%r12,%rdx,8),%xmm5
movapd %xmm0,%xmm6
addsd  %xmm5,%xmm6
subsd  %xmm5,%xmm0
movsd  (%r12,%rsi,8),%xmm1
movsd  (%r12,%rcx,8),%xmm7
movapd %xmm1,%xmm5
addsd  %xmm7,%xmm5
subsd  %xmm7,%xmm1
movapd %xmm6,%xmm7
addsd  %xmm5,%xmm7
movsd  %xmm7,(%r12,%rdi,8)
subsd  %xmm5,%xmm6
test   %eax,%eax
js     1820 <fft+0x700>
ucomisd %xmm14,%xmm10
movapd %xmm3,%xmm7
subsd  %xmm1,%xmm7
addsd  %xmm1,%xmm3
movapd %xmm2,%xmm5
addsd  %xmm0,%xmm5
subsd  %xmm2,%xmm0
jne    1845 <fft+0x725>
jp     1845 <fft+0x725>
movsd  %xmm7,(%r15,%rsi,8)
movsd  %xmm5,(%r12,%rsi,8)
movsd  %xmm4,(%r15,%rdx,8)
movsd  %xmm6,(%r12,%rdx,8)
movsd  %xmm3,(%r15,%rcx,8)
movsd  %xmm0,(%r12,%rcx,8)
jmp    18dd <fft+0x7bd>
xchg   %ax,%ax
mulpd  %xmm12,%xmm10
movapd %xmm9,%xmm0
unpcklpd %xmm9,%xmm0
mulpd  0x70(%rsp),%xmm0
addpd  %xmm10,%xmm0
movapd %xmm9,%xmm1
subpd  %xmm0,%xmm1
addpd  %xmm9,%xmm0
movapd %xmm0,%xmm2
movsd  %xmm1,%xmm2
mulpd  %xmm0,%xmm0
unpckhpd %xmm0,%xmm0
mulsd  %xmm1,%xmm1
addsd  %xmm0,%xmm1
movapd %xmm13,%xmm10
movapd %xmm13,%xmm9
subsd  %xmm1,%xmm9
unpcklpd %xmm9,%xmm9
mulpd  %xmm2,%xmm9
movapd %xmm9,%xmm0
unpckhpd %xmm9,%xmm0
movapd %xmm9,%xmm2
addsd  %xmm9,%xmm2
mulsd  %xmm0,%xmm2
mulsd  %xmm0,%xmm0
movapd %xmm9,%xmm15
mulsd  %xmm9,%xmm15
subsd  %xmm0,%xmm15
movapd %xmm2,%xmm0
xorpd  %xmm11,%xmm0
movapd %xmm9,%xmm1
shufpd $0x1,%xmm9,%xmm1
movapd %xmm2,0x40(%rsp)
unpcklpd %xmm2,%xmm0
mulpd  %xmm1,%xmm0
movapd %xmm15,0x60(%rsp)
unpcklpd %xmm15,%xmm15
mulpd  %xmm9,%xmm15
addpd  %xmm0,%xmm15
add    %r10d,%ecx
cmp    %r14d,%ecx
jle    1800 <fft+0x6e0>
add    %r8d,%ecx
movsd  0x1594(%rip),%xmm9
cmp    %r11d,%ecx
jle    1800 <fft+0x6e0>
cmp    %r11d,%r14d
mov    0x30(%rsp),%rax
movapd 0x40(%rsp),%xmm2
jne    14c6 <fft+0x3a6>
jmp    23b6 <fft+0x1296>
cs nopw 0x0(%rax,%rax,1)
mov    %r14d,%eax
cltd
idiv   %ecx
mov    %rax,0x10(%rsp)
cmp    $0x3,%ecx
movsd  0x158(%rsp),%xmm5
je     1d71 <fft+0xc51>
cmp    $0x5,%ecx
jne    1e68 <fft+0xd48>
movapd %xmm14,0x60(%rsp)
mov    $0x1,%edi
mov    0x10(%rsp),%rsi
nopw   0x0(%rax,%rax,1)
lea    (%rdi,%rsi,1),%eax
lea    (%rax,%rsi,1),%ecx
lea    (%rcx,%rsi,1),%r9d
lea    (%r9,%rsi,1),%edx
movslq %eax,%rsi
movsd  (%r15,%rsi,8),%xmm11
movslq %edx,%rax
movsd  (%r15,%rax,8),%xmm1
movapd %xmm11,%xmm0
addsd  %xmm1,%xmm0
subsd  %xmm1,%xmm11
movsd  (%r12,%rsi,8),%xmm7
movsd  (%r12,%rax,8),%xmm4
movapd %xmm7,%xmm3
addsd  %xmm4,%xmm3
subsd  %xmm4,%xmm7
movslq %ecx,%rdx
movsd  (%r15,%rdx,8),%xmm10
movslq %r9d,%rcx
movsd  (%r15,%rcx,8),%xmm5
movapd %xmm10,%xmm14
addsd  %xmm5,%xmm14
subsd  %xmm5,%xmm10
movsd  (%r12,%rdx,8),%xmm12
movsd  (%r12,%rcx,8),%xmm4
movapd %xmm12,%xmm13
addsd  %xmm4,%xmm13
subsd  %xmm4,%xmm12
movslq %edi,%rdi
movsd  (%r15,%rdi,8),%xmm2
movsd  (%r12,%rdi,8),%xmm1
movsd  %xmm1,0x8(%rsp)
movapd %xmm0,%xmm4
addsd  %xmm2,%xmm4
movapd %xmm2,%xmm5
movsd  %xmm2,0x40(%rsp)
addsd  %xmm14,%xmm4
movsd  %xmm4,(%r15,%rdi,8)
movapd %xmm3,%xmm4
addsd  %xmm1,%xmm4
addsd  %xmm13,%xmm4
movsd  %xmm4,(%r12,%rdi,8)
movsd  0x168(%rsp),%xmm15
movapd %xmm15,%xmm4
mulsd  %xmm14,%xmm4
movapd %xmm0,%xmm2
movsd  0x1451(%rip),%xmm6
mulsd  %xmm6,%xmm2
addsd  %xmm4,%xmm2
addsd  %xmm5,%xmm2
movapd %xmm15,%xmm4
mulsd  %xmm13,%xmm4
movapd %xmm3,%xmm1
mulsd  %xmm6,%xmm1
addsd  %xmm4,%xmm1
movsd  0x160(%rsp),%xmm9
movapd %xmm9,%xmm4
mulsd  %xmm10,%xmm4
movapd %xmm11,%xmm5
movsd  0xf0(%rsp),%xmm8
mulsd  %xmm8,%xmm5
addsd  %xmm4,%xmm5
movapd %xmm9,%xmm4
mulsd  %xmm12,%xmm4
movapd %xmm7,%xmm6
mulsd  %xmm8,%xmm6
addsd  %xmm4,%xmm6
movapd %xmm2,%xmm4
subsd  %xmm6,%xmm4
movsd  %xmm4,(%r15,%rsi,8)
addsd  %xmm2,%xmm6
movsd  0x8(%rsp),%xmm4
addsd  %xmm4,%xmm1
movsd  %xmm6,(%r15,%rax,8)
movapd %xmm5,%xmm2
addsd  %xmm1,%xmm2
movsd  %xmm2,(%r12,%rsi,8)
mov    0x10(%rsp),%rsi
subsd  %xmm5,%xmm1
movsd  %xmm1,(%r12,%rax,8)
movsd  0x13a5(%rip),%xmm1
mulsd  %xmm1,%xmm14
mulsd  %xmm15,%xmm0
addsd  %xmm14,%xmm0
addsd  0x40(%rsp),%xmm0
mulsd  %xmm1,%xmm13
mulsd  %xmm15,%xmm3
addsd  %xmm13,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm8,%xmm10
mulsd  %xmm9,%xmm11
subsd  %xmm10,%xmm11
mulsd  %xmm8,%xmm12
mulsd  %xmm9,%xmm7
subsd  %xmm12,%xmm7
movapd %xmm0,%xmm1
subsd  %xmm7,%xmm1
movsd  %xmm1,(%r15,%rdx,8)
addsd  %xmm0,%xmm7
movsd  %xmm7,(%r15,%rcx,8)
movapd %xmm11,%xmm0
addsd  %xmm3,%xmm0
movsd  %xmm0,(%r12,%rdx,8)
subsd  %xmm11,%xmm3
movsd  %xmm3,(%r12,%rcx,8)
add    %esi,%eax
mov    %eax,%edi
sub    %r8d,%eax
jl     1b20 <fft+0xa00>
mov    %eax,%edi
cmp    %esi,%eax
jle    1b20 <fft+0xa00>
movapd 0x1325(%rip),%xmm11
movsd  0x12fc(%rip),%xmm10
movapd 0x140(%rsp),%xmm15
movapd 0x70(%rsp),%xmm9
movapd 0x60(%rsp),%xmm14
jmp    21b1 <fft+0x1091>
mov    $0x1,%eax
movsd  0x12e2(%rip),%xmm6
mov    0x10(%rsp),%rsi
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    (%rax,%rsi,1),%edx
movslq %eax,%rsi
movsd  (%r15,%rsi,8),%xmm2
movsd  (%r12,%rsi,8),%xmm3
movslq %edx,%rcx
add    0x10(%rsp),%edx
movsd  (%r15,%rcx,8),%xmm0
movslq %edx,%rax
addsd  (%r15,%rax,8),%xmm0
movsd  (%r12,%rcx,8),%xmm1
addsd  (%r12,%rax,8),%xmm1
movapd %xmm2,%xmm4
addsd  %xmm0,%xmm4
movsd  %xmm4,(%r15,%rsi,8)
movapd %xmm3,%xmm4
addsd  %xmm1,%xmm4
movsd  %xmm4,(%r12,%rsi,8)
mov    0x10(%rsp),%rsi
mulsd  %xmm6,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm6,%xmm1
movsd  (%r15,%rcx,8),%xmm2
subsd  (%r15,%rax,8),%xmm2
addsd  %xmm3,%xmm1
movsd  (%r12,%rcx,8),%xmm3
subsd  (%r12,%rax,8),%xmm3
mulsd  %xmm5,%xmm2
mulsd  %xmm5,%xmm3
movapd %xmm0,%xmm4
subsd  %xmm3,%xmm4
movsd  %xmm4,(%r15,%rcx,8)
movapd %xmm1,%xmm4
addsd  %xmm2,%xmm4
movsd  %xmm4,(%r12,%rcx,8)
addsd  %xmm0,%xmm3
movsd  %xmm3,(%r15,%rax,8)
subsd  %xmm2,%xmm1
movsd  %xmm1,(%r12,%rax,8)
add    %esi,%eax
mov    %eax,%ecx
sub    %r8d,%ecx
jl     1d90 <fft+0xc70>
mov    %ecx,%eax
cmp    %esi,%ecx
jle    1d90 <fft+0xc70>
movapd 0x70(%rsp),%xmm9
jmp    21b1 <fft+0x1091>
mov    0x28(%rsp),%rax
cmp    %eax,%ecx
jne    1e84 <fft+0xd64>
cltq
mov    %rax,0x40(%rsp)
movapd 0x70(%rsp),%xmm9
jmp    1faa <fft+0xe8a>
movapd %xmm14,0x60(%rsp)
xorps  %xmm1,%xmm1
cvtsi2sd %ecx,%xmm1
movsd  0x150(%rsp),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rsp)
mov    %rcx,0x40(%rsp)
call   1040 <cos@plt>
movsd  %xmm0,0x28(%rsp)
movsd  0x8(%rsp),%xmm0
call   1030 <sin@plt>
mov    0x40(%rsp),%rdi
cmp    $0x17,%edi
jg     2cc1 <fft+0x1ba1>
movabs $0x3ff0000000000000,%rax
mov    %rax,0x2e8(%rsp,%rdi,8)
movq   $0x0,0x6f8(%rsp,%rdi,8)
lea    -0x1(%rdi),%rax
xorpd  %xmm2,%xmm2
xor    %ecx,%ecx
movsd  0x114a(%rip),%xmm1
movapd 0x1169(%rip),%xmm11
movapd 0x70(%rsp),%xmm9
movsd  0x28(%rsp),%xmm4
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
movapd %xmm0,%xmm3
mulsd  %xmm2,%xmm3
mulsd  %xmm4,%xmm1
addsd  %xmm3,%xmm1
movsd  %xmm1,0x2f0(%rsp,%rcx,8)
mulsd  %xmm4,%xmm2
movsd  0x2f0(%rsp,%rax,8),%xmm3
mulsd  %xmm0,%xmm3
subsd  %xmm2,%xmm3
movsd  %xmm3,0x700(%rsp,%rcx,8)
movsd  %xmm1,0x2e8(%rsp,%rax,8)
xorpd  %xmm11,%xmm3
movlpd %xmm3,0x6f8(%rsp,%rax,8)
lea    0x1(%rcx),%rdx
add    $0x2,%rcx
lea    -0x1(%rax),%rsi
movapd %xmm3,%xmm2
cmp    %rax,%rcx
mov    %rsi,%rax
mov    %rdx,%rcx
jl     1f20 <fft+0xe00>
mov    %edi,%eax
mov    %rax,0x28(%rsp)
movsd  0x10b7(%rip),%xmm10
movapd 0x140(%rsp),%xmm15
movapd 0x60(%rsp),%xmm14
mov    0x10(%rsp),%rsi
movslq %esi,%r10
mov    %r14d,%eax
sub    %esi,%eax
mov    %rax,0x60(%rsp)
mov    $0x1,%r8d
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movslq %r8d,%r11
add    %r14d,%r8d
movsd  (%r15,%r11,8),%xmm8
movsd  (%r12,%r11,8),%xmm1
lea    (%r11,%rsi,1),%eax
movslq %eax,%rdx
mov    0x60(%rsp),%rax
add    %r11d,%eax
mov    $0x2,%ecx
movapd %xmm8,%xmm2
movapd %xmm1,%xmm3
nop
movsd  (%r15,%rdx,8),%xmm4
movslq %eax,%rdi
movsd  (%r15,%rdi,8),%xmm5
movapd %xmm4,%xmm6
addsd  %xmm5,%xmm6
movsd  %xmm6,0x228(%rsp,%rcx,8)
addsd  %xmm6,%xmm2
movsd  (%r12,%rdx,8),%xmm0
movsd  (%r12,%rdi,8),%xmm7
movapd %xmm0,%xmm6
addsd  %xmm7,%xmm6
movsd  %xmm6,0x168(%rsp,%rcx,8)
addsd  %xmm6,%xmm3
subsd  %xmm5,%xmm4
movsd  %xmm4,0x230(%rsp,%rcx,8)
subsd  %xmm7,%xmm0
movsd  %xmm0,0x170(%rsp,%rcx,8)
add    %r10,%rdx
add    $0x2,%rcx
mov    %edi,%eax
sub    %esi,%eax
cmp    %rdi,%rdx
jl     2000 <fft+0xee0>
movsd  %xmm2,(%r15,%r11,8)
movsd  %xmm3,(%r12,%r11,8)
mov    $0x1,%edi
mov    %r8d,0x8(%rsp)
mov    %r8d,%edx
nopl   0x0(%rax,%rax,1)
add    %r10,%r11
xorpd  %xmm2,%xmm2
mov    $0x1,%eax
mov    %edi,%ecx
movapd %xmm8,%xmm4
movapd %xmm1,%xmm3
mov    0x28(%rsp),%r8
mov    0x40(%rsp),%r9
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movslq %ecx,%rcx
movsd  0x2e8(%rsp,%rcx,8),%xmm0
movsd  0x230(%rsp,%rax,8),%xmm5
mulsd  %xmm0,%xmm5
addsd  %xmm5,%xmm4
mulsd  0x170(%rsp,%rax,8),%xmm0
addsd  %xmm0,%xmm3
movsd  0x238(%rsp,%rax,8),%xmm0
movhpd 0x178(%rsp,%rax,8),%xmm0
lea    0x2(%rax),%rsi
movsd  0x6f8(%rsp,%rcx,8),%xmm5
unpcklpd %xmm5,%xmm5
mulpd  %xmm0,%xmm5
addpd  %xmm5,%xmm2
add    %edi,%ecx
cmp    %r8d,%ecx
mov    $0x0,%eax
cmovg  %r8d,%eax
sub    %eax,%ecx
mov    %rsi,%rax
cmp    %r9,%rsi
jl     20c0 <fft+0xfa0>
mov    0x10(%rsp),%rsi
sub    %esi,%edx
mov    %r8d,%eax
sub    %edi,%eax
movapd %xmm2,%xmm0
unpckhpd %xmm2,%xmm0
movapd %xmm4,%xmm5
subsd  %xmm0,%xmm5
movsd  %xmm5,(%r15,%r11,8)
movapd %xmm3,%xmm5
addsd  %xmm2,%xmm5
movsd  %xmm5,(%r12,%r11,8)
addsd  %xmm4,%xmm0
movslq %edx,%rcx
movsd  %xmm0,(%r15,%rcx,8)
subsd  %xmm2,%xmm3
movsd  %xmm3,(%r12,%rcx,8)
add    $0x1,%edi
cmp    %eax,%edi
jl     2090 <fft+0xf70>
mov    0x8(%rsp),%r8d
mov    %r8d,%eax
sub    0x88(%rsp),%eax
jle    1fd0 <fft+0xeb0>
mov    %eax,%r8d
cmp    %esi,%eax
jle    1fd0 <fft+0xeb0>
mov    0x38(%rsp),%r11
mov    0x18(%rsp),%r9
mov    0x138(%rsp),%r10
mov    0x30(%rsp),%rax
cmp    %eax,0x110(%rsp)
je     23b6 <fft+0x1296>
mov    %r9,0x18(%rsp)
movsd  0xe78(%rip),%xmm1
subsd  %xmm9,%xmm1
mov    %esi,%eax
sub    %ebp,%eax
mov    %eax,0x40(%rsp)
mov    %r11d,%eax
sub    %r14d,%eax
mov    %eax,0x58(%rsp)
movslq %r14d,%rdx
movapd %xmm14,%xmm8
unpcklpd %xmm1,%xmm8
movapd %xmm14,%xmm12
unpcklpd %xmm9,%xmm12
xorpd  %xmm11,%xmm9
unpcklpd %xmm14,%xmm9
lea    (%r10,%rsi,1),%eax
sub    %r14d,%eax
mov    %eax,0x70(%rsp)
mov    0x10c(%rsp),%eax
sub    %r14d,%eax
mov    %eax,0x8(%rsp)
lea    (%rbx,%rsi,1),%r11d
mov    0x130(%rsp),%rax
mov    %eax,%ecx
movapd %xmm8,%xmm3
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    %esi,%ecx
movapd %xmm3,%xmm4
xorpd  %xmm11,%xmm4
movapd %xmm3,%xmm1
shufpd $0x1,%xmm4,%xmm1
movapd %xmm3,%xmm2
nopl   0x0(%rax,%rax,1)
mov    %ecx,%eax
movapd %xmm2,%xmm5
xorpd  %xmm11,%xmm5
movslq %ecx,%r8
movapd %xmm2,%xmm0
unpckhpd %xmm2,%xmm0
xor    %r9d,%r9d
mov    %r11d,%esi
mov    0x8(%rsp),%edi
mov    0x70(%rsp),%r10d
mov    0x90(%rsp),%rcx
nopl   (%rax)
movsd  (%r15,%r8,8),%xmm6
movsd  (%r12,%r8,8),%xmm7
mulsd  %xmm5,%xmm7
movapd %xmm0,%xmm4
mulsd  %xmm6,%xmm4
addsd  %xmm7,%xmm4
movsd  %xmm4,(%r15,%r8,8)
movsd  (%r12,%r8,8),%xmm4
mulsd  %xmm0,%xmm4
mulsd  %xmm2,%xmm6
addsd  %xmm4,%xmm6
movsd  %xmm6,(%r12,%r8,8)
add    %rdx,%r8
add    %r14d,%r10d
add    %r14d,%edi
add    %r14d,%esi
add    %r14d,%r9d
cmp    %rcx,%r8
jle    2290 <fft+0x1170>
add    %eax,%r9d
add    0x40(%rsp),%r9d
unpcklpd %xmm2,%xmm2
movapd %xmm2,%xmm4
mulpd  %xmm1,%xmm4
mulpd  %xmm3,%xmm0
movapd %xmm0,%xmm2
addpd  %xmm4,%xmm2
lea    (%rax,%rsi,1),%ecx
cmp    %r14d,%r9d
jle    2260 <fft+0x1140>
movapd %xmm3,%xmm0
unpcklpd %xmm3,%xmm0
mulpd  %xmm9,%xmm0
movapd %xmm3,%xmm1
unpckhpd %xmm3,%xmm1
mulpd  %xmm12,%xmm1
addpd  %xmm0,%xmm1
movapd %xmm3,%xmm0
addpd  %xmm1,%xmm0
subpd  %xmm1,%xmm3
movapd %xmm3,%xmm1
movsd  %xmm0,%xmm1
mulsd  %xmm0,%xmm0
unpckhpd %xmm3,%xmm3
mulsd  %xmm3,%xmm3
addsd  %xmm0,%xmm3
movapd %xmm10,%xmm0
subsd  %xmm3,%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm1,%xmm0
add    %eax,%esi
add    0x58(%rsp),%esi
add    %eax,%r10d
mov    %r10d,%ecx
movapd %xmm0,0x60(%rsp)
movapd %xmm0,%xmm3
mov    0x10(%rsp),%r8
cmp    %r8d,%esi
mov    %r8,%rsi
jle    2240 <fft+0x1120>
add    %edi,%eax
mov    %eax,%ecx
movapd %xmm8,%xmm3
cmp    0x50(%rsp),%eax
jle    2240 <fft+0x1120>
movapd 0x60(%rsp),%xmm0
unpckhpd %xmm0,%xmm0
movapd %xmm0,0x60(%rsp)
mov    0x18(%rsp),%r9
mov    0x30(%rsp),%rax
jmp    14c3 <fft+0x3a3>
mov    %r9,0x18(%rsp)
mov    0x24(%rsp),%ecx
mov    %ecx,0x3b0(%rsp)
mov    0xe8(%rsp),%r9
test   %r9d,%r9d
mov    0xe0(%rsp),%rdx
je     2536 <fft+0x1416>
lea    (%r9,%r9,1),%eax
lea    (%r9,%r9,1),%esi
add    $0x1,%esi
cmp    %esi,%edx
mov    %esi,0x50(%rsp)
cmovge %esi,%eax
movslq %eax,%r10
mov    %r11d,0x3b0(%rsp,%r10,4)
lea    -0x1(%r10),%rsi
shl    $0x20,%r10
mov    $0x1,%edi
movabs $0xffffffff00000000,%r8
ff ff ff
cs nopw 0x0(%rax,%rax,1)
nop
mov    0x3ac(%rsp,%rdi,4),%eax
mov    0x9c(%rsp,%rdi,4),%ebx
cltd
idiv   %ebx
mov    %eax,0x3b0(%rsp,%rdi,4)
imul   0x3b4(%rsp,%rsi,4),%ebx
mov    %ebx,0x3b0(%rsp,%rsi,4)
add    $0x1,%rdi
lea    -0x1(%rsi),%rax
add    %r8,%r10
cmp    %rsi,%rdi
mov    %rax,%rsi
jl     2420 <fft+0x1300>
sar    $0x1e,%r10
mov    0x3b0(%rsp,%r10,1),%eax
mov    %rax,0x18(%rsp)
mov    0x3b4(%rsp),%edx
lea    0x1(%rdx),%ebx
mov    0xd8(%rsp),%rsi
cmp    %rsi,0x128(%rsp)
mov    0x120(%rsp),%r8
mov    0x118(%rsp),%r10
mov    0x130(%rsp),%rdi
jne    2548 <fft+0x1428>
mov    0x3b0(%rsp),%r10d
lea    0x3b8(%rsp),%r8
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movslq %edi,%rdi
movsd  (%r15,%rdi,8),%xmm0
movslq %ebx,%rbx
movsd  (%r15,%rbx,8),%xmm1
movsd  %xmm1,(%r15,%rdi,8)
movsd  %xmm0,(%r15,%rbx,8)
movsd  (%r12,%rdi,8),%xmm0
movsd  (%r12,%rbx,8),%xmm1
movsd  %xmm1,(%r12,%rdi,8)
movsd  %xmm0,(%r12,%rbx,8)
add    %r13d,%edi
add    %edx,%ebx
cmp    %ecx,%ebx
jl     24c0 <fft+0x13a0>
mov    %r8,%rax
mov    %r10d,%esi
cs nopw 0x0(%rax,%rax,1)
nop
sub    %esi,%ebx
add    (%rax),%ebx
mov    -0x4(%rax),%esi
add    $0x4,%rax
cmp    %esi,%ebx
jg     2510 <fft+0x13f0>
nop
cmp    %ebx,%edi
jl     24c0 <fft+0x13a0>
add    %r13d,%edi
add    %edx,%ebx
cmp    %ecx,%ebx
jl     2520 <fft+0x1400>
cmp    %ecx,%edi
jl     24ff <fft+0x13df>
jmp    26c7 <fft+0x15a7>
mov    $0x1,%eax
cmp    %edx,%eax
jl     26e0 <fft+0x15c0>
jmp    2ac8 <fft+0x19a8>
movslq %r13d,%rax
mov    %rax,0x70(%rsp)
mov    0x3b0(%rsp),%eax
mov    %eax,0x30(%rsp)
lea    -0x8(%r10),%rax
mov    %rax,0x8(%rsp)
lea    -0x8(%r8),%rax
mov    %rax,0x60(%rsp)
mov    %ecx,%eax
sub    %r11d,%eax
mov    %rax,0x10(%rsp)
mov    0x100(%rsp),%rax
sub    %esi,%eax
imul   %r13d,%eax
mov    %rax,0x100(%rsp)
mov    %rdx,0x58(%rsp)
add    %edx,%eax
sub    %r11d,%eax
mov    %eax,0x28(%rsp)
mov    0x70(%rsp),%r11
jmp    25b5 <fft+0x1495>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    %edx,%ebx
mov    %r8d,%edi
movslq %ebx,%rdx
movslq %edi,%rcx
add    0x38(%rsp),%edi
movslq %edi,%rax
mov    %rax,0x40(%rsp)
mov    0x8(%rsp),%r9
lea    (%r9,%rcx,8),%r10
mov    0x60(%rsp),%rsi
lea    (%rsi,%rcx,8),%r14
mov    0x10(%rsp),%rbx
lea    (%rbx,%rcx,1),%edi
mov    0x100(%rsp),%rax
mov    %rcx,0x90(%rsp)
lea    (%rax,%rcx,1),%r8d
lea    (%r9,%rdx,8),%rcx
lea    (%rsi,%rdx,8),%r9
add    %edx,%ebx
add    0x28(%rsp),%edx
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movsd  (%r10,%rax,8),%xmm0
movsd  (%rcx,%rax,8),%xmm1
movsd  %xmm1,(%r10,%rax,8)
movsd  %xmm0,(%rcx,%rax,8)
movsd  (%r14,%rax,8),%xmm0
movsd  (%r9,%rax,8),%xmm1
movsd  %xmm1,(%r14,%rax,8)
movsd  %xmm0,(%r9,%rax,8)
add    %r11,%rax
add    %r13d,%edi
add    %r13d,%r8d
mov    0x90(%rsp),%rsi
add    %rax,%rsi
add    %r13d,%ebx
add    %r13d,%edx
cmp    0x40(%rsp),%rsi
jl     2610 <fft+0x14f0>
cmp    %ebp,%edi
jl     25b5 <fft+0x1495>
mov    %edx,%ebx
mov    %r8d,%edi
cmp    0x24(%rsp),%edx
jl     25b5 <fft+0x1495>
mov    0x38(%rsp),%rsi
mov    0xe8(%rsp),%r9
mov    0x24(%rsp),%edi
mov    0x58(%rsp),%rbx
lea    0x3b8(%rsp),%rax
mov    0x30(%rsp),%ecx
nopl   0x0(%rax,%rax,1)
sub    %ecx,%edx
add    (%rax),%edx
mov    -0x4(%rax),%ecx
add    $0x4,%rax
cmp    %ecx,%edx
jg     26a0 <fft+0x1580>
nop
cmp    %edx,%r8d
jl     25b0 <fft+0x1490>
add    %esi,%r8d
add    %ebx,%edx
cmp    %edi,%edx
jl     26b0 <fft+0x1590>
cmp    %edi,%r8d
jl     268c <fft+0x156c>
mov    0x18(%rsp),%r11
mov    0xe0(%rsp),%rdx
mov    0x50(%rsp),%eax
cmp    %edx,%eax
jge    2ac8 <fft+0x19a8>
movslq %r9d,%rax
mov    0x3b0(%rsp,%rax,4),%ecx
mov    %ecx,0x58(%rsp)
mov    %edx,%ecx
sub    %r9d,%ecx
movslq %ecx,%rsi
movl   $0x1,0xa0(%rsp,%rsi,4)
lea    (%r9,%r9,1),%ebx
mov    %edx,%edi
sub    %ebx,%edi
not    %ebx
add    %edx,%ebx
mov    %edi,%ecx
and    $0x3,%ecx
mov    $0x1,%edx
cmp    $0x3,%ebx
jb     2775 <fft+0x1655>
and    $0xfffffffc,%edi
mov    $0x1,%edx
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
imul   0x9c(%rsp,%rsi,4),%edx
mov    %edx,0x9c(%rsp,%rsi,4)
imul   0x98(%rsp,%rsi,4),%edx
mov    %edx,0x98(%rsp,%rsi,4)
imul   0x94(%rsp,%rsi,4),%edx
mov    %edx,0x94(%rsp,%rsi,4)
imul   0x90(%rsp,%rsi,4),%edx
mov    %edx,0x90(%rsp,%rsi,4)
add    $0xfffffffffffffffc,%rsi
add    $0xfffffffc,%edi
jne    2730 <fft+0x1610>
test   %ecx,%ecx
je     279f <fft+0x167f>
lea    (%rsp,%rsi,4),%rsi
add    $0x9c,%rsi
neg    %ecx
xor    %edi,%edi
nopl   0x0(%rax,%rax,1)
imul   (%rsi,%rdi,4),%edx
mov    %edx,(%rsi,%rdi,4)
add    $0xffffffffffffffff,%rdi
cmp    %edi,%ecx
jne    2790 <fft+0x1670>
movslq 0xa0(%rsp,%rax,4),%r14
mov    $0x1,%eax
cmp    $0xd2,%r14
jg     2c9e <fft+0x1b7e>
mov    %r11,0x38(%rsp)
mov    %r14,%r8
add    $0xffffffffffffffff,%r8
cmp    $0x2,%r14d
jl     2844 <fft+0x1724>
mov    %r14d,%r10d
mov    0xe8(%rsp),%rax
add    $0x2,%eax
cltq
mov    0x9c(%rsp,%rax,4),%r11d
lea    (%rsp,%rax,4),%r9
add    $0xa0,%r9
xor    %ebx,%ebx
mov    $0x1,%eax
jmp    2810 <fft+0x16f0>
nopw   0x0(%rax,%rax,1)
mov    %ebx,0x3ac(%rsp,%rax,4)
add    $0x1,%rax
cmp    %r10,%rax
je     2844 <fft+0x1724>
add    %r11d,%ebx
cmp    %r14d,%ebx
jl     2800 <fft+0x16e0>
mov    %r9,%rdi
mov    %r11d,%esi
mov    %r14d,%edx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
sub    %edx,%ebx
mov    %esi,%ecx
mov    (%rdi),%esi
add    %esi,%ebx
add    $0x4,%rdi
mov    %ecx,%edx
cmp    %ecx,%ebx
jge    2830 <fft+0x1710>
jmp    2800 <fft+0x16e0>
neg    %r8
xor    %ecx,%ecx
movslq %ecx,%r9
lea    (%rsp,%r9,4),%rcx
add    $0x3b0,%rcx
mov    %r9d,%esi
not    %esi
lea    0x1(%r9),%r10d
lea    (%r9,%r8,1),%r11
add    $0x1,%r11
xor    %edi,%edi
jmp    2877 <fft+0x1757>
nopl   0x0(%rax)
add    $0x1,%rdi
add    $0xffffffff,%esi
mov    (%rcx,%rdi,4),%eax
test   %eax,%eax
js     2870 <fft+0x1750>
lea    (%r11,%rdi,1),%rdx
lea    (%r10,%rdi,1),%ebx
cmp    %eax,%ebx
jne    2894 <fft+0x1774>
mov    %esi,(%rcx,%rdi,4)
test   %rdx,%rdx
jne    2870 <fft+0x1750>
jmp    28c1 <fft+0x17a1>
lea    (%r9,%rdi,1),%rcx
add    $0x1,%rcx
add    %rdi,%r10
nop
movslq %eax,%rdx
mov    0x3ac(%rsp,%rdx,4),%eax
mov    %eax,%esi
neg    %esi
mov    %esi,0x3ac(%rsp,%rdx,4)
cmp    %eax,%r10d
jne    28a0 <fft+0x1780>
mov    %r10,0x18(%rsp)
jmp    2849 <fft+0x1729>
sub    0x58(%rsp),%ebp
mov    0x38(%rsp),%rdx
js     2ac8 <fft+0x19a8>
lea    0x0(%r13,%r13,2),%eax
shl    $0x3,%eax
sub    %r13d,%eax
mov    %eax,0x10(%rsp)
mov    0x18(%rsp),%rax
add    $0x1,%eax
mov    $0x1,%ecx
sub    %r13d,%ecx
mov    %rcx,0x50(%rsp)
cltq
mov    %rax,0x88(%rsp)
mov    0xd8(%rsp),%rax
add    $0xffffffff,%eax
imul   %r13d,%eax
sub    0x58(%rsp),%eax
add    $0x1,%eax
mov    %eax,0x28(%rsp)
mov    %edx,%eax
neg    %eax
mov    %eax,0x90(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x50(%rsp),%rax
add    %ebp,%eax
mov    %rax,0x30(%rsp)
mov    0x88(%rsp),%rsi
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    0x3a8(%rsp,%rsi,4),%r11d
add    $0xffffffffffffffff,%rsi
test   %r11d,%r11d
js     2950 <fft+0x1830>
mov    %r11d,%ecx
imul   %edx,%ecx
mov    0x30(%rsp),%rax
add    %ecx,%eax
mov    %rax,0x60(%rsp)
add    0x28(%rsp),%ecx
mov    %rcx,0x8(%rsp)
mov    %edx,%edi
mov    %r11d,0x70(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x10(%rsp),%eax
cmp    %eax,%edi
mov    %edi,%r8d
cmovg  %eax,%r8d
mov    0x8(%rsp),%rax
add    %edi,%eax
sub    %r8d,%edi
mov    0x60(%rsp),%rcx
mov    %rdi,0x40(%rsp)
lea    (%rdi,%rcx,1),%r14d
mov    %r8d,%r9d
neg    %r9d
xor    %ecx,%ecx
xor    %edx,%edx
nop
lea    (%rax,%rcx,1),%edi
movslq %edi,%rdi
movsd  (%r15,%rdi,8),%xmm0
movsd  %xmm0,0x230(%rsp,%rdx,1)
movsd  (%r12,%rdi,8),%xmm0
movsd  %xmm0,0x170(%rsp,%rdx,1)
add    $0x8,%rdx
sub    %r13d,%ecx
cmp    %ecx,%r9d
jne    29c0 <fft+0x18a0>
mov    %r14d,%edx
lea    (%rdx,%r8,1),%eax
movslq %r11d,%rdi
mov    0x3ac(%rsp,%rdi,4),%r10d
add    %r10d,%edi
mov    0x90(%rsp),%ecx
mov    %ecx,%r14d
imul   %edi,%r14d
xor    %ecx,%ecx
cs nopw 0x0(%rax,%rax,1)
nop
lea    (%r14,%rax,1),%ebx
movslq %ebx,%rbx
movsd  (%r15,%rbx,8),%xmm0
cltq
movsd  %xmm0,(%r15,%rax,8)
movsd  (%r12,%rbx,8),%xmm0
movsd  %xmm0,(%r12,%rax,8)
sub    %r13d,%eax
add    %r13d,%ecx
cmp    %ecx,%r8d
jne    2a20 <fft+0x1900>
mov    %r10d,%r11d
neg    %r11d
add    %eax,%r14d
cmp    %r11d,%esi
jne    29f0 <fft+0x18d0>
lea    (%rdx,%r8,2),%eax
mov    0x38(%rsp),%rdx
imul   %edx,%edi
sub    %edi,%eax
sub    %ecx,%eax
xor    %ecx,%ecx
nopl   0x0(%rax)
movsd  0x230(%rsp,%rcx,1),%xmm0
cltq
movsd  %xmm0,(%r15,%rax,8)
movsd  0x170(%rsp,%rcx,1),%xmm0
movsd  %xmm0,(%r12,%rax,8)
sub    %r13d,%eax
add    $0x8,%rcx
add    %r13d,%r9d
jne    2a70 <fft+0x1950>
mov    0x40(%rsp),%rdi
test   %edi,%edi
mov    0x70(%rsp),%r11d
jne    2990 <fft+0x1870>
cmp    $0xffffffff,%r10d
jne    2950 <fft+0x1830>
mov    0x58(%rsp),%eax
sub    %eax,0x28(%rsp)
sub    %eax,%ebp
jns    2930 <fft+0x1810>
cmpl   $0x0,0x9c(%rsp)
jns    2c9c <fft+0x1b7c>
mov    0xd8(%rsp),%rdi
test   %edi,%edi
jle    2c9c <fft+0x1b7c>
mov    $0xffffffff,%eax
mov    %edi,%ecx
not    %ecx
xorps  %xmm0,%xmm0
cvtsi2sdq 0x128(%rsp),%xmm0
mov    %edi,%edx
add    %eax,%edx
je     2b2e <fft+0x1a0e>
add    %eax,%edi
mov    0x120(%rsp),%rbx
lea    (%rbx,%rdi,8),%rax
add    $0x8,%rax
mov    0x118(%rsp),%rsi
cmp    %rsi,%rax
jbe    2b72 <fft+0x1a52>
lea    (%rsi,%rdi,8),%rax
add    $0x8,%rax
cmp    %rbx,%rax
jbe    2b72 <fft+0x1a52>
test   $0x1,%cl
jne    2c33 <fft+0x1b13>
lea    0x1(%rcx),%eax
movsd  0x8(%r15),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%r15)
add    $0x8,%r15
movsd  0x8(%r12),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%r12)
add    $0x8,%r12
cmp    $0xfffffffe,%ecx
jne    2c3a <fft+0x1b1a>
jmp    2c9c <fft+0x1b7c>
add    $0x1,%rdx
mov    %rdx,%r8
and    $0xfffffffffffffffe,%r8
movapd %xmm0,%xmm1
unpcklpd %xmm0,%xmm1
lea    -0x2(%r8),%rax
mov    %rax,%rbp
shr    %rbp
add    $0x1,%rbp
test   %rax,%rax
je     2cb0 <fft+0x1b90>
mov    %rbp,%rdi
and    $0xfffffffffffffffe,%rdi
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nop
movupd (%rsi,%rax,8),%xmm2
divpd  %xmm1,%xmm2
movupd %xmm2,(%rsi,%rax,8)
movupd (%rbx,%rax,8),%xmm2
divpd  %xmm1,%xmm2
movupd %xmm2,(%rbx,%rax,8)
movupd 0x10(%rsi,%rax,8),%xmm2
divpd  %xmm1,%xmm2
movupd %xmm2,0x10(%rsi,%rax,8)
movupd 0x10(%rbx,%rax,8),%xmm2
divpd  %xmm1,%xmm2
movupd %xmm2,0x10(%rbx,%rax,8)
add    $0x4,%rax
add    $0xfffffffffffffffe,%rdi
jne    2bb0 <fft+0x1a90>
test   $0x1,%bpl
je     2c18 <fft+0x1af8>
movupd (%rsi,%rax,8),%xmm2
divpd  %xmm1,%xmm2
movupd %xmm2,(%rsi,%rax,8)
movupd (%rbx,%rax,8),%xmm2
divpd  %xmm1,%xmm2
movupd %xmm2,(%rbx,%rax,8)
xor    %eax,%eax
cmp    %r8,%rdx
je     2c9e <fft+0x1b7e>
add    %r8d,%ecx
lea    (%r12,%r8,8),%r12
lea    (%r15,%r8,8),%r15
test   $0x1,%cl
je     2b37 <fft+0x1a17>
mov    %ecx,%eax
cmp    $0xfffffffe,%ecx
je     2c9c <fft+0x1b7c>
neg    %eax
mov    $0x1,%ecx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsd  (%r15,%rcx,8),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,(%r15,%rcx,8)
movsd  (%r12,%rcx,8),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,(%r12,%rcx,8)
movsd  0x8(%r15,%rcx,8),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%r15,%rcx,8)
movsd  0x8(%r12,%rcx,8),%xmm1
divsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%r12,%rcx,8)
add    $0x2,%rcx
cmp    %ecx,%eax
jne    2c50 <fft+0x1b30>
xor    %eax,%eax
add    $0x7b8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xor    %eax,%eax
test   $0x1,%bpl
jne    2bfc <fft+0x1adc>
jmp    2c18 <fft+0x1af8>
mov    $0x1,%eax
jmp    2c9e <fft+0x1b7e>

LLVM IR (-O0):
%union.anon = type { i32 }
define i32 @fft(double* %0, double* %1, i64 %2, i64 %3, i64 %4, i32 %5) {
%7 = alloca i32
%8 = alloca double*
%9 = alloca double*
%10 = alloca i64
%11 = alloca i64
%12 = alloca i64
%13 = alloca i32
%14 = alloca [13 x i32]
%15 = alloca i32*
%16 = alloca %union.anon
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
%28 = alloca i32
%29 = alloca i32
%30 = alloca i32
%31 = alloca i32
%32 = alloca i32
%33 = alloca i32
%34 = alloca i32
%35 = alloca i32
%36 = alloca [209 x i32]
%37 = alloca i32*
%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 [23 x double]
%53 = alloca double
%54 = alloca double*
%55 = alloca double
%56 = alloca double
%57 = alloca [23 x double]
%58 = alloca [23 x double]
%59 = alloca double
%60 = alloca double*
%61 = alloca double*
%62 = alloca double
%63 = alloca [23 x double]
%64 = alloca double*
%65 = alloca double
%66 = alloca double
%67 = alloca double
%68 = alloca double
%69 = alloca double
%70 = alloca double
%71 = alloca double
%72 = alloca double
%73 = alloca double
%74 = alloca double
store double* %0, double** %8
store double* %1, double** %9
store i64 %2, i64* %10
store i64 %3, i64* %11
store i64 %4, i64* %12
store i32 %5, i32* %13
%75 = load i64, i64* %11
%76 = icmp slt i64 %75, 2
br i1 %76, label %77, label %78
77: ; preds = %6
store i32 0, i32* %7
br label %2418
78: ; preds = %6
%79 = getelementptr inbounds [13 x i32], [13 x i32]* %14, i64 0, i64 0
%80 = getelementptr inbounds i32, i32* %79, i64 -1
store i32* %80, i32** %15
%81 = getelementptr inbounds [209 x i32], [209 x i32]* %36, i64 0, i64 0
%82 = getelementptr inbounds i32, i32* %81, i64 -1
store i32* %82, i32** %37
%83 = load double*, double** %8
%84 = getelementptr inbounds double, double* %83, i64 -1
store double* %84, double** %39
%85 = load double*, double** %9
%86 = getelementptr inbounds double, double* %85, i64 -1
store double* %86, double** %40
%87 = getelementptr inbounds [23 x double], [23 x double]* %52, i64 0, i64 0
%88 = getelementptr inbounds double, double* %87, i64 -1
store double* %88, double** %54
%89 = getelementptr inbounds [23 x double], [23 x double]* %57, i64 0, i64 0
%90 = getelementptr inbounds double, double* %89, i64 -1
store double* %90, double** %60
%91 = getelementptr inbounds [23 x double], [23 x double]* %58, i64 0, i64 0
%92 = getelementptr inbounds double, double* %91, i64 -1
store double* %92, double** %61
%93 = getelementptr inbounds [23 x double], [23 x double]* %63, i64 0, i64 0
%94 = getelementptr inbounds double, double* %93, i64 -1
store double* %94, double** %64
store i32 23, i32* %21
%95 = load i32, i32* %13
store i32 %95, i32* %35
store double 0x3FD3C6EF372FE94F, double* %51
store double 0x3FEE6F0E134454FF, double* %62
store double 0x3FEBB67AE8584CAA, double* %65
store double 0x401921FB54442D28, double* %66
%96 = load i32, i32* %13
%97 = icmp slt i32 %96, 0
br i1 %97, label %98, label %107
98: ; preds = %78
%99 = load double, double* %62
%100 = fneg double %99
store double %100, double* %62
%101 = load double, double* %65
%102 = fneg double %101
store double %102, double* %65
%103 = load double, double* %66
%104 = fneg double %103
store double %104, double* %66
%105 = load i32, i32* %35
%106 = sub nsw i32 0, %105
store i32 %106, i32* %35
br label %107
107: ; preds = %98, %78
%108 = load i32, i32* %35
%109 = sext i32 %108 to i64
%110 = load i64, i64* %10
%111 = mul nsw i64 %109, %110
%112 = trunc i64 %111 to i32
store i32 %112, i32* %34
%113 = load i32, i32* %35
%114 = sext i32 %113 to i64
%115 = load i64, i64* %12
%116 = mul nsw i64 %114, %115
%117 = trunc i64 %116 to i32
store i32 %117, i32* %32
%118 = load i32, i32* %32
store i32 %118, i32* %20
%119 = load i32, i32* %34
%120 = load i32, i32* %35
%121 = sub nsw i32 %119, %120
store i32 %121, i32* %31
%122 = load i32, i32* %32
%123 = sext i32 %122 to i64
%124 = load i64, i64* %11
%125 = sdiv i64 %123, %124
%126 = trunc i64 %125 to i32
store i32 %126, i32* %27
%127 = load double, double* %66
%128 = load i32, i32* %27
%129 = sitofp i32 %128 to double
%130 = fmul double %127, %129
%131 = fmul double %130, 5.000000e-01
store double %131, double* %38
%132 = bitcast %union.anon* %16 to i32*
store i32 -1, i32* %132
store i32 0, i32* %28
store i32 0, i32* %19
%133 = load i64, i64* %11
%134 = trunc i64 %133 to i32
store i32 %134, i32* %18
br label %135
135: ; preds = %139, %107
%136 = load i32, i32* %18
%137 = and i32 %136, 15
%138 = icmp eq i32 %137, 0
br i1 %138, label %139, label %146
139: ; preds = %135
%140 = load i32, i32* %19
%141 = add nsw i32 %140, 1
store i32 %141, i32* %19
%142 = sext i32 %140 to i64
%143 = getelementptr inbounds [13 x i32], [13 x i32]* %14, i64 0, i64 %142
store i32 4, i32* %143
%144 = load i32, i32* %18
%145 = ashr i32 %144, 4
store i32 %145, i32* %18
br label %135
146: ; preds = %135
store i32 3, i32* %17
store i32 9, i32* %29
br label %147
147: ; preds = %171, %146
br label %148
148: ; preds = %153, %147
%149 = load i32, i32* %18
%150 = load i32, i32* %29
%151 = srem i32 %149, %150
%152 = icmp eq i32 %151, 0
br i1 %152, label %153, label %162
153: ; preds = %148
%154 = load i32, i32* %17
%155 = load i32, i32* %19
%156 = add nsw i32 %155, 1
store i32 %156, i32* %19
%157 = sext i32 %155 to i64
%158 = getelementptr inbounds [13 x i32], [13 x i32]* %14, i64 0, i64 %157
store i32 %154, i32* %158
%159 = load i32, i32* %29
%160 = load i32, i32* %18
%161 = sdiv i32 %160, %159
store i32 %161, i32* %18
br label %148
162: ; preds = %148
%163 = load i32, i32* %17
%164 = add nsw i32 %163, 2
store i32 %164, i32* %17
%165 = load i32, i32* %17
%166 = load i32, i32* %17
%167 = mul nsw i32 %165, %166
store i32 %167, i32* %29
%168 = load i32, i32* %29
%169 = load i32, i32* %18
%170 = icmp sle i32 %168, %169
br i1 %170, label %171, label %172
171: ; preds = %162
br label %147
172: ; preds = %162
%173 = load i32, i32* %18
%174 = icmp sle i32 %173, 4
br i1 %174, label %175, label %187
175: ; preds = %172
%176 = load i32, i32* %19
store i32 %176, i32* %33
%177 = load i32, i32* %18
%178 = load i32, i32* %19
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds [13 x i32], [13 x i32]* %14, i64 0, i64 %179
store i32 %177, i32* %180
%181 = load i32, i32* %18
%182 = icmp ne i32 %181, 1
br i1 %182, label %183, label %186
183: ; preds = %175
%184 = load i32, i32* %19
%185 = add nsw i32 %184, 1
store i32 %185, i32* %19
br label %186
186: ; preds = %183, %175
br label %225
187: ; preds = %172
%188 = load i32, i32* %18
%189 = and i32 %188, 3
%190 = icmp eq i32 %189, 0
br i1 %190, label %191, label %198
191: ; preds = %187
%192 = load i32, i32* %19
%193 = add nsw i32 %192, 1
store i32 %193, i32* %19
%194 = sext i32 %192 to i64
%195 = getelementptr inbounds [13 x i32], [13 x i32]* %14, i64 0, i64 %194
store i32 2, i32* %195
%196 = load i32, i32* %18
%197 = ashr i32 %196, 2
store i32 %197, i32* %18
br label %198
198: ; preds = %191, %187
%199 = load i32, i32* %19
store i32 %199, i32* %33
store i32 2, i32* %17
br label %200
200: ; preds = %220, %198
%201 = load i32, i32* %18
%202 = load i32, i32* %17
%203 = srem i32 %201, %202
%204 = icmp eq i32 %203, 0
br i1 %204, label %205, label %214
205: ; preds = %200
%206 = load i32, i32* %17
%207 = load i32, i32* %19
%208 = add nsw i32 %207, 1
store i32 %208, i32* %19
%209 = sext i32 %207 to i64
%210 = getelementptr inbounds [13 x i32], [13 x i32]* %14, i64 0, i64 %209
store i32 %206, i32* %210
%211 = load i32, i32* %17
%212 = load i32, i32* %18
%213 = sdiv i32 %212, %211
store i32 %213, i32* %18
br label %214
214: ; preds = %205, %200
%215 = load i32, i32* %17
%216 = add nsw i32 %215, 1
store i32 %216, i32* %17
%217 = ashr i32 %216, 1
%218 = shl i32 %217, 1
%219 = add nsw i32 1, %218
store i32 %219, i32* %17
br label %220
220: ; preds = %214
%221 = load i32, i32* %17
%222 = load i32, i32* %18
%223 = icmp sle i32 %221, %222
br i1 %223, label %200, label %224
224: ; preds = %220
br label %225
225: ; preds = %224, %186
%226 = load i32, i32* %33
%227 = icmp ne i32 %226, 0
br i1 %227, label %228, label %244
228: ; preds = %225
%229 = load i32, i32* %33
store i32 %229, i32* %17
br label %230
230: ; preds = %240, %228
%231 = load i32, i32* %17
%232 = add nsw i32 %231, -1
store i32 %232, i32* %17
%233 = sext i32 %232 to i64
%234 = getelementptr inbounds [13 x i32], [13 x i32]* %14, i64 0, i64 %233
%235 = load i32, i32* %234
%236 = load i32, i32* %19
%237 = add nsw i32 %236, 1
store i32 %237, i32* %19
%238 = sext i32 %236 to i64
%239 = getelementptr inbounds [13 x i32], [13 x i32]* %14, i64 0, i64 %238
store i32 %235, i32* %239
br label %240
240: ; preds = %230
%241 = load i32, i32* %17
%242 = icmp ne i32 %241, 0
br i1 %242, label %230, label %243
243: ; preds = %240
br label %244
244: ; preds = %243, %225
br label %245
245: ; preds = %1762, %926, %494, %244
%246 = load double, double* %38
%247 = load i32, i32* %20
%248 = sitofp i32 %247 to double
%249 = fdiv double %246, %248
store double %249, double* %59
%250 = load double, double* %59
%251 = call double @sin(double %250)
store double %251, double* %49
%252 = load double, double* %49
%253 = load double, double* %49
%254 = fmul double %252, %253
%255 = fmul double %254, 2.000000e+00
store double %255, double* %49
%256 = load double, double* %59
%257 = load double, double* %59
%258 = fadd double %256, %257
%259 = call double @sin(double %258)
store double %259, double* %59
store i32 1, i32* %30
%260 = bitcast %union.anon* %16 to i32*
%261 = load i32, i32* %260
%262 = add nsw i32 %261, 1
store i32 %262, i32* %260
%263 = sext i32 %262 to i64
%264 = getelementptr inbounds [13 x i32], [13 x i32]* %14, i64 0, i64 %263
%265 = load i32, i32* %264
%266 = icmp ne i32 %265, 2
br i1 %266, label %267, label %268
267: ; preds = %245
br label %624
268: ; preds = %245
%269 = load i32, i32* %20
%270 = ashr i32 %269, 1
store i32 %270, i32* %20
%271 = load i32, i32* %20
%272 = add nsw i32 %271, 2
store i32 %272, i32* %23
br label %273
273: ; preds = %335, %268
br label %274
274: ; preds = %327, %273
%275 = load i32, i32* %30
%276 = load i32, i32* %20
%277 = add nsw i32 %275, %276
store i32 %277, i32* %24
%278 = load double*, double** %39
%279 = load i32, i32* %24
%280 = sext i32 %279 to i64
%281 = getelementptr inbounds double, double* %278, i64 %280
%282 = load double, double* %281
store double %282, double* %53
%283 = load double*, double** %40
%284 = load i32, i32* %24
%285 = sext i32 %284 to i64
%286 = getelementptr inbounds double, double* %283, i64 %285
%287 = load double, double* %286
store double %287, double* %55
%288 = load double*, double** %39
%289 = load i32, i32* %30
%290 = sext i32 %289 to i64
%291 = getelementptr inbounds double, double* %288, i64 %290
%292 = load double, double* %291
%293 = load double, double* %53
%294 = fsub double %292, %293
%295 = load double*, double** %39
%296 = load i32, i32* %24
%297 = sext i32 %296 to i64
%298 = getelementptr inbounds double, double* %295, i64 %297
store double %294, double* %298
%299 = load double*, double** %40
%300 = load i32, i32* %30
%301 = sext i32 %300 to i64
%302 = getelementptr inbounds double, double* %299, i64 %301
%303 = load double, double* %302
%304 = load double, double* %55
%305 = fsub double %303, %304
%306 = load double*, double** %40
%307 = load i32, i32* %24
%308 = sext i32 %307 to i64
%309 = getelementptr inbounds double, double* %306, i64 %308
store double %305, double* %309
%310 = load double, double* %53
%311 = load double*, double** %39
%312 = load i32, i32* %30
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds double, double* %311, i64 %313
%315 = load double, double* %314
%316 = fadd double %315, %310
store double %316, double* %314
%317 = load double, double* %55
%318 = load double*, double** %40
%319 = load i32, i32* %30
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds double, double* %318, i64 %320
%322 = load double, double* %321
%323 = fadd double %322, %317
store double %323, double* %321
%324 = load i32, i32* %24
%325 = load i32, i32* %20
%326 = add nsw i32 %324, %325
store i32 %326, i32* %30
br label %327
327: ; preds = %274
%328 = load i32, i32* %30
%329 = load i32, i32* %31
%330 = icmp sle i32 %328, %329
br i1 %330, label %274, label %331
331: ; preds = %327
%332 = load i32, i32* %31
%333 = load i32, i32* %30
%334 = sub nsw i32 %333, %332
store i32 %334, i32* %30
br label %335
335: ; preds = %331
%336 = load i32, i32* %30
%337 = load i32, i32* %27
%338 = icmp sle i32 %336, %337
br i1 %338, label %273, label %339
339: ; preds = %335
%340 = load i32, i32* %30
%341 = load i32, i32* %20
%342 = icmp sgt i32 %340, %341
br i1 %342, label %343, label %344
343: ; preds = %339
br label %1763
344: ; preds = %339
br label %345
345: ; preds = %489, %344
%346 = load double, double* %49
%347 = fsub double 1.000000e+00, %346
store double %347, double* %41
%348 = load double, double* %59
store double %348, double* %44
br label %349
349: ; preds = %474, %345
br label %350
350: ; preds = %436, %349
br label %351
351: ; preds = %423, %350
%352 = load i32, i32* %30
%353 = load i32, i32* %20
%354 = add nsw i32 %352, %353
store i32 %354, i32* %24
%355 = load double*, double** %39
%356 = load i32, i32* %30
%357 = sext i32 %356 to i64
%358 = getelementptr inbounds double, double* %355, i64 %357
%359 = load double, double* %358
%360 = load double*, double** %39
%361 = load i32, i32* %24
%362 = sext i32 %361 to i64
%363 = getelementptr inbounds double, double* %360, i64 %362
%364 = load double, double* %363
%365 = fsub double %359, %364
store double %365, double* %53
%366 = load double*, double** %40
%367 = load i32, i32* %30
%368 = sext i32 %367 to i64
%369 = getelementptr inbounds double, double* %366, i64 %368
%370 = load double, double* %369
%371 = load double*, double** %40
%372 = load i32, i32* %24
%373 = sext i32 %372 to i64
%374 = getelementptr inbounds double, double* %371, i64 %373
%375 = load double, double* %374
%376 = fsub double %370, %375
store double %376, double* %55
%377 = load double*, double** %39
%378 = load i32, i32* %24
%379 = sext i32 %378 to i64
%380 = getelementptr inbounds double, double* %377, i64 %379
%381 = load double, double* %380
%382 = load double*, double** %39
%383 = load i32, i32* %30
%384 = sext i32 %383 to i64
%385 = getelementptr inbounds double, double* %382, i64 %384
%386 = load double, double* %385
%387 = fadd double %386, %381
store double %387, double* %385
%388 = load double*, double** %40
%389 = load i32, i32* %24
%390 = sext i32 %389 to i64
%391 = getelementptr inbounds double, double* %388, i64 %390
%392 = load double, double* %391
%393 = load double*, double** %40
%394 = load i32, i32* %30
%395 = sext i32 %394 to i64
%396 = getelementptr inbounds double, double* %393, i64 %395
%397 = load double, double* %396
%398 = fadd double %397, %392
store double %398, double* %396
%399 = load double, double* %41
%400 = load double, double* %53
%401 = load double, double* %44
%402 = load double, double* %55
%403 = fmul double %401, %402
%404 = fneg double %403
%405 = call double @llvm.fmuladd.f64(double %399, double %400, double %404)
%406 = load double*, double** %39
%407 = load i32, i32* %24
%408 = sext i32 %407 to i64
%409 = getelementptr inbounds double, double* %406, i64 %408
store double %405, double* %409
%410 = load double, double* %44
%411 = load double, double* %53
%412 = load double, double* %41
%413 = load double, double* %55
%414 = fmul double %412, %413
%415 = call double @llvm.fmuladd.f64(double %410, double %411, double %414)
%416 = load double*, double** %40
%417 = load i32, i32* %24
%418 = sext i32 %417 to i64
%419 = getelementptr inbounds double, double* %416, i64 %418
store double %415, double* %419
%420 = load i32, i32* %24
%421 = load i32, i32* %20
%422 = add nsw i32 %420, %421
store i32 %422, i32* %30
br label %423
423: ; preds = %351
%424 = load i32, i32* %30
%425 = load i32, i32* %34
%426 = icmp slt i32 %424, %425
br i1 %426, label %351, label %427
427: ; preds = %423
%428 = load i32, i32* %30
%429 = load i32, i32* %34
%430 = sub nsw i32 %428, %429
store i32 %430, i32* %24
%431 = load double, double* %41
%432 = fneg double %431
store double %432, double* %41
%433 = load i32, i32* %23
%434 = load i32, i32* %24
%435 = sub nsw i32 %433, %434
store i32 %435, i32* %30
br label %436
436: ; preds = %427
%437 = load i32, i32* %30
%438 = load i32, i32* %24
%439 = icmp sgt i32 %437, %438
br i1 %439, label %350, label %440
440: ; preds = %436
%441 = load double, double* %41
%442 = load double, double* %49
%443 = load double, double* %41
%444 = load double, double* %59
%445 = load double, double* %44
%446 = fmul double %444, %445
%447 = call double @llvm.fmuladd.f64(double %442, double %443, double %446)
%448 = fsub double %441, %447
store double %448, double* %53
%449 = load double, double* %59
%450 = load double, double* %41
%451 = load double, double* %49
%452 = load double, double* %44
%453 = fmul double %451, %452
%454 = fneg double %453
%455 = call double @llvm.fmuladd.f64(double %449, double %450, double %454)
%456 = load double, double* %44
%457 = fadd double %455, %456
store double %457, double* %44
%458 = load double, double* %53
%459 = load double, double* %53
%460 = load double, double* %44
%461 = load double, double* %44
%462 = fmul double %460, %461
%463 = call double @llvm.fmuladd.f64(double %458, double %459, double %462)
%464 = fsub double 2.000000e+00, %463
store double %464, double* %41
%465 = load double, double* %41
%466 = load double, double* %44
%467 = fmul double %466, %465
store double %467, double* %44
%468 = load double, double* %53
%469 = load double, double* %41
%470 = fmul double %469, %468
store double %470, double* %41
%471 = load i32, i32* %27
%472 = load i32, i32* %30
%473 = add nsw i32 %472, %471
store i32 %473, i32* %30
br label %474
474: ; preds = %440
%475 = load i32, i32* %30
%476 = load i32, i32* %24
%477 = icmp slt i32 %475, %476
br i1 %477, label %349, label %478
478: ; preds = %474
%479 = load i32, i32* %35
%480 = shl i32 %479, 1
%481 = load i32, i32* %23
%482 = add nsw i32 %481, %480
store i32 %482, i32* %23
%483 = load i32, i32* %23
%484 = load i32, i32* %20
%485 = sub nsw i32 %483, %484
%486 = sdiv i32 %485, 2
%487 = load i32, i32* %27
%488 = add nsw i32 %486, %487
store i32 %488, i32* %30
br label %489
489: ; preds = %478
%490 = load i32, i32* %30
%491 = load i32, i32* %27
%492 = shl i32 %491, 1
%493 = icmp sle i32 %490, %492
br i1 %493, label %345, label %494
494: ; preds = %489
br label %245
495: ; preds = %1267, %622, %614
%496 = load i32, i32* %30
%497 = load i32, i32* %20
%498 = add nsw i32 %496, %497
store i32 %498, i32* %23
%499 = load i32, i32* %23
%500 = load i32, i32* %20
%501 = add nsw i32 %499, %500
store i32 %501, i32* %24
%502 = load double*, double** %39
%503 = load i32, i32* %30
%504 = sext i32 %503 to i64
%505 = getelementptr inbounds double, double* %502, i64 %504
%506 = load double, double* %505
store double %506, double* %53
%507 = load double*, double** %40
%508 = load i32, i32* %30
%509 = sext i32 %508 to i64
%510 = getelementptr inbounds double, double* %507, i64 %509
%511 = load double, double* %510
store double %511, double* %55
%512 = load double*, double** %39
%513 = load i32, i32* %23
%514 = sext i32 %513 to i64
%515 = getelementptr inbounds double, double* %512, i64 %514
%516 = load double, double* %515
%517 = load double*, double** %39
%518 = load i32, i32* %24
%519 = sext i32 %518 to i64
%520 = getelementptr inbounds double, double* %517, i64 %519
%521 = load double, double* %520
%522 = fadd double %516, %521
store double %522, double* %50
%523 = load double*, double** %40
%524 = load i32, i32* %23
%525 = sext i32 %524 to i64
%526 = getelementptr inbounds double, double* %523, i64 %525
%527 = load double, double* %526
%528 = load double*, double** %40
%529 = load i32, i32* %24
%530 = sext i32 %529 to i64
%531 = getelementptr inbounds double, double* %528, i64 %530
%532 = load double, double* %531
%533 = fadd double %527, %532
store double %533, double* %56
%534 = load double, double* %53
%535 = load double, double* %50
%536 = fadd double %534, %535
%537 = load double*, double** %39
%538 = load i32, i32* %30
%539 = sext i32 %538 to i64
%540 = getelementptr inbounds double, double* %537, i64 %539
store double %536, double* %540
%541 = load double, double* %55
%542 = load double, double* %56
%543 = fadd double %541, %542
%544 = load double*, double** %40
%545 = load i32, i32* %30
%546 = sext i32 %545 to i64
%547 = getelementptr inbounds double, double* %544, i64 %546
store double %543, double* %547
%548 = load double, double* %50
%549 = load double, double* %53
%550 = call double @llvm.fmuladd.f64(double %548, double -5.000000e-01, double %549)
store double %550, double* %53
%551 = load double, double* %56
%552 = load double, double* %55
%553 = call double @llvm.fmuladd.f64(double %551, double -5.000000e-01, double %552)
store double %553, double* %55
%554 = load double*, double** %39
%555 = load i32, i32* %23
%556 = sext i32 %555 to i64
%557 = getelementptr inbounds double, double* %554, i64 %556
%558 = load double, double* %557
%559 = load double*, double** %39
%560 = load i32, i32* %24
%561 = sext i32 %560 to i64
%562 = getelementptr inbounds double, double* %559, i64 %561
%563 = load double, double* %562
%564 = fsub double %558, %563
%565 = load double, double* %65
%566 = fmul double %564, %565
store double %566, double* %50
%567 = load double*, double** %40
%568 = load i32, i32* %23
%569 = sext i32 %568 to i64
%570 = getelementptr inbounds double, double* %567, i64 %569
%571 = load double, double* %570
%572 = load double*, double** %40
%573 = load i32, i32* %24
%574 = sext i32 %573 to i64
%575 = getelementptr inbounds double, double* %572, i64 %574
%576 = load double, double* %575
%577 = fsub double %571, %576
%578 = load double, double* %65
%579 = fmul double %577, %578
store double %579, double* %56
%580 = load double, double* %53
%581 = load double, double* %56
%582 = fsub double %580, %581
%583 = load double*, double** %39
%584 = load i32, i32* %23
%585 = sext i32 %584 to i64
%586 = getelementptr inbounds double, double* %583, i64 %585
store double %582, double* %586
%587 = load double, double* %55
%588 = load double, double* %50
%589 = fadd double %587, %588
%590 = load double*, double** %40
%591 = load i32, i32* %23
%592 = sext i32 %591 to i64
%593 = getelementptr inbounds double, double* %590, i64 %592
store double %589, double* %593
%594 = load double, double* %53
%595 = load double, double* %56
%596 = fadd double %594, %595
%597 = load double*, double** %39
%598 = load i32, i32* %24
%599 = sext i32 %598 to i64
%600 = getelementptr inbounds double, double* %597, i64 %599
store double %596, double* %600
%601 = load double, double* %55
%602 = load double, double* %50
%603 = fsub double %601, %602
%604 = load double*, double** %40
%605 = load i32, i32* %24
%606 = sext i32 %605 to i64
%607 = getelementptr inbounds double, double* %604, i64 %606
store double %603, double* %607
%608 = load i32, i32* %24
%609 = load i32, i32* %20
%610 = add nsw i32 %608, %609
store i32 %610, i32* %30
%611 = load i32, i32* %30
%612 = load i32, i32* %31
%613 = icmp slt i32 %611, %612
br i1 %613, label %614, label %615
614: ; preds = %495
br label %495
615: ; preds = %495
%616 = load i32, i32* %31
%617 = load i32, i32* %30
%618 = sub nsw i32 %617, %616
store i32 %618, i32* %30
%619 = load i32, i32* %30
%620 = load i32, i32* %20
%621 = icmp sle i32 %619, %620
br i1 %621, label %622, label %623
622: ; preds = %615
br label %495
623: ; preds = %615
br label %1623
624: ; preds = %267
%625 = bitcast %union.anon* %16 to i32*
%626 = load i32, i32* %625
%627 = sext i32 %626 to i64
%628 = getelementptr inbounds [13 x i32], [13 x i32]* %14, i64 0, i64 %627
%629 = load i32, i32* %628
%630 = icmp ne i32 %629, 4
br i1 %630, label %631, label %632
631: ; preds = %624
br label %1255
632: ; preds = %624
%633 = load i32, i32* %20
store i32 %633, i32* %22
%634 = load i32, i32* %20
%635 = ashr i32 %634, 2
store i32 %635, i32* %20
br label %636
636: ; preds = %920, %632
store double 1.000000e+00, double* %41
store double 0.000000e+00, double* %44
br label %637
637: ; preds = %981, %910, %845, %636
%638 = load i32, i32* %30
%639 = load i32, i32* %20
%640 = add nsw i32 %638, %639
store i32 %640, i32* %23
%641 = load i32, i32* %23
%642 = load i32, i32* %20
%643 = add nsw i32 %641, %642
store i32 %643, i32* %24
%644 = load i32, i32* %24
%645 = load i32, i32* %20
%646 = add nsw i32 %644, %645
store i32 %646, i32* %25
%647 = load double*, double** %39
%648 = load i32, i32* %30
%649 = sext i32 %648 to i64
%650 = getelementptr inbounds double, double* %647, i64 %649
%651 = load double, double* %650
%652 = load double*, double** %39
%653 = load i32, i32* %24
%654 = sext i32 %653 to i64
%655 = getelementptr inbounds double, double* %652, i64 %654
%656 = load double, double* %655
%657 = fadd double %651, %656
store double %657, double* %70
%658 = load double*, double** %39
%659 = load i32, i32* %30
%660 = sext i32 %659 to i64
%661 = getelementptr inbounds double, double* %658, i64 %660
%662 = load double, double* %661
%663 = load double*, double** %39
%664 = load i32, i32* %24
%665 = sext i32 %664 to i64
%666 = getelementptr inbounds double, double* %663, i64 %665
%667 = load double, double* %666
%668 = fsub double %662, %667
store double %668, double* %68
%669 = load double*, double** %39
%670 = load i32, i32* %23
%671 = sext i32 %670 to i64
%672 = getelementptr inbounds double, double* %669, i64 %671
%673 = load double, double* %672
%674 = load double*, double** %39
%675 = load i32, i32* %25
%676 = sext i32 %675 to i64
%677 = getelementptr inbounds double, double* %674, i64 %676
%678 = load double, double* %677
%679 = fadd double %673, %678
store double %679, double* %69
%680 = load double*, double** %39
%681 = load i32, i32* %23
%682 = sext i32 %681 to i64
%683 = getelementptr inbounds double, double* %680, i64 %682
%684 = load double, double* %683
%685 = load double*, double** %39
%686 = load i32, i32* %25
%687 = sext i32 %686 to i64
%688 = getelementptr inbounds double, double* %685, i64 %687
%689 = load double, double* %688
%690 = fsub double %684, %689
store double %690, double* %67
%691 = load double, double* %70
%692 = load double, double* %69
%693 = fadd double %691, %692
%694 = load double*, double** %39
%695 = load i32, i32* %30
%696 = sext i32 %695 to i64
%697 = getelementptr inbounds double, double* %694, i64 %696
store double %693, double* %697
%698 = load double, double* %70
%699 = load double, double* %69
%700 = fsub double %698, %699
store double %700, double* %69
%701 = load double*, double** %40
%702 = load i32, i32* %30
%703 = sext i32 %702 to i64
%704 = getelementptr inbounds double, double* %701, i64 %703
%705 = load double, double* %704
%706 = load double*, double** %40
%707 = load i32, i32* %24
%708 = sext i32 %707 to i64
%709 = getelementptr inbounds double, double* %706, i64 %708
%710 = load double, double* %709
%711 = fadd double %705, %710
store double %711, double* %71
%712 = load double*, double** %40
%713 = load i32, i32* %30
%714 = sext i32 %713 to i64
%715 = getelementptr inbounds double, double* %712, i64 %714
%716 = load double, double* %715
%717 = load double*, double** %40
%718 = load i32, i32* %24
%719 = sext i32 %718 to i64
%720 = getelementptr inbounds double, double* %717, i64 %719
%721 = load double, double* %720
%722 = fsub double %716, %721
store double %722, double* %72
%723 = load double*, double** %40
%724 = load i32, i32* %23
%725 = sext i32 %724 to i64
%726 = getelementptr inbounds double, double* %723, i64 %725
%727 = load double, double* %726
%728 = load double*, double** %40
%729 = load i32, i32* %25
%730 = sext i32 %729 to i64
%731 = getelementptr inbounds double, double* %728, i64 %730
%732 = load double, double* %731
%733 = fadd double %727, %732
store double %733, double* %73
%734 = load double*, double** %40
%735 = load i32, i32* %23
%736 = sext i32 %735 to i64
%737 = getelementptr inbounds double, double* %734, i64 %736
%738 = load double, double* %737
%739 = load double*, double** %40
%740 = load i32, i32* %25
%741 = sext i32 %740 to i64
%742 = getelementptr inbounds double, double* %739, i64 %741
%743 = load double, double* %742
%744 = fsub double %738, %743
store double %744, double* %74
%745 = load double, double* %71
%746 = load double, double* %73
%747 = fadd double %745, %746
%748 = load double*, double** %40
%749 = load i32, i32* %30
%750 = sext i32 %749 to i64
%751 = getelementptr inbounds double, double* %748, i64 %750
store double %747, double* %751
%752 = load double, double* %71
%753 = load double, double* %73
%754 = fsub double %752, %753
store double %754, double* %73
%755 = load i32, i32* %13
%756 = icmp slt i32 %755, 0
br i1 %756, label %757, label %758
757: ; preds = %637
br label %927
758: ; preds = %637
%759 = load double, double* %68
%760 = load double, double* %74
%761 = fsub double %759, %760
store double %761, double* %70
%762 = load double, double* %74
%763 = load double, double* %68
%764 = fadd double %763, %762
store double %764, double* %68
%765 = load double, double* %72
%766 = load double, double* %67
%767 = fadd double %765, %766
store double %767, double* %71
%768 = load double, double* %67
%769 = load double, double* %72
%770 = fsub double %769, %768
store double %770, double* %72
%771 = load double, double* %44
%772 = fcmp oeq double %771, 0.000000e+00
br i1 %772, label %773, label %774
773: ; preds = %758
br label %944
774: ; preds = %758
br label %775
775: ; preds = %942, %774
%776 = load double, double* %70
%777 = load double, double* %41
%778 = load double, double* %71
%779 = load double, double* %44
%780 = fmul double %778, %779
%781 = fneg double %780
%782 = call double @llvm.fmuladd.f64(double %776, double %777, double %781)
%783 = load double*, double** %39
%784 = load i32, i32* %23
%785 = sext i32 %784 to i64
%786 = getelementptr inbounds double, double* %783, i64 %785
store double %782, double* %786
%787 = load double, double* %70
%788 = load double, double* %44
%789 = load double, double* %71
%790 = load double, double* %41
%791 = fmul double %789, %790
%792 = call double @llvm.fmuladd.f64(double %787, double %788, double %791)
%793 = load double*, double** %40
%794 = load i32, i32* %23
%795 = sext i32 %794 to i64
%796 = getelementptr inbounds double, double* %793, i64 %795
store double %792, double* %796
%797 = load double, double* %69
%798 = load double, double* %42
%799 = load double, double* %73
%800 = load double, double* %45
%801 = fmul double %799, %800
%802 = fneg double %801
%803 = call double @llvm.fmuladd.f64(double %797, double %798, double %802)
%804 = load double*, double** %39
%805 = load i32, i32* %24
%806 = sext i32 %805 to i64
%807 = getelementptr inbounds double, double* %804, i64 %806
store double %803, double* %807
%808 = load double, double* %69
%809 = load double, double* %45
%810 = load double, double* %73
%811 = load double, double* %42
%812 = fmul double %810, %811
%813 = call double @llvm.fmuladd.f64(double %808, double %809, double %812)
%814 = load double*, double** %40
%815 = load i32, i32* %24
%816 = sext i32 %815 to i64
%817 = getelementptr inbounds double, double* %814, i64 %816
store double %813, double* %817
%818 = load double, double* %68
%819 = load double, double* %43
%820 = load double, double* %72
%821 = load double, double* %46
%822 = fmul double %820, %821
%823 = fneg double %822
%824 = call double @llvm.fmuladd.f64(double %818, double %819, double %823)
%825 = load double*, double** %39
%826 = load i32, i32* %25
%827 = sext i32 %826 to i64
%828 = getelementptr inbounds double, double* %825, i64 %827
store double %824, double* %828
%829 = load double, double* %68
%830 = load double, double* %46
%831 = load double, double* %72
%832 = load double, double* %43
%833 = fmul double %831, %832
%834 = call double @llvm.fmuladd.f64(double %829, double %830, double %833)
%835 = load double*, double** %40
%836 = load i32, i32* %25
%837 = sext i32 %836 to i64
%838 = getelementptr inbounds double, double* %835, i64 %837
store double %834, double* %838
%839 = load i32, i32* %25
%840 = load i32, i32* %20
%841 = add nsw i32 %839, %840
store i32 %841, i32* %30
%842 = load i32, i32* %30
%843 = load i32, i32* %34
%844 = icmp sle i32 %842, %843
br i1 %844, label %845, label %846
845: ; preds = %775
br label %637
846: ; preds = %775
br label %847
847: ; preds = %982, %846
%848 = load double, double* %41
%849 = load double, double* %49
%850 = load double, double* %41
%851 = load double, double* %59
%852 = load double, double* %44
%853 = fmul double %851, %852
%854 = call double @llvm.fmuladd.f64(double %849, double %850, double %853)
%855 = fsub double %848, %854
store double %855, double* %42
%856 = load double, double* %59
%857 = load double, double* %41
%858 = load double, double* %49
%859 = load double, double* %44
%860 = fmul double %858, %859
%861 = fneg double %860
%862 = call double @llvm.fmuladd.f64(double %856, double %857, double %861)
%863 = load double, double* %44
%864 = fadd double %862, %863
store double %864, double* %44
%865 = load double, double* %42
%866 = load double, double* %42
%867 = load double, double* %44
%868 = load double, double* %44
%869 = fmul double %867, %868
%870 = call double @llvm.fmuladd.f64(double %865, double %866, double %869)
%871 = fsub double 2.000000e+00, %870
store double %871, double* %41
%872 = load double, double* %41
%873 = load double, double* %44
%874 = fmul double %873, %872
store double %874, double* %44
%875 = load double, double* %42
%876 = load double, double* %41
%877 = fmul double %876, %875
store double %877, double* %41
%878 = load double, double* %41
%879 = load double, double* %41
%880 = load double, double* %44
%881 = load double, double* %44
%882 = fmul double %880, %881
%883 = fneg double %882
%884 = call double @llvm.fmuladd.f64(double %878, double %879, double %883)
store double %884, double* %42
%885 = load double, double* %41
%886 = fmul double %885, 2.000000e+00
%887 = load double, double* %44
%888 = fmul double %886, %887
store double %888, double* %45
%889 = load double, double* %42
%890 = load double, double* %41
%891 = load double, double* %45
%892 = load double, double* %44
%893 = fmul double %891, %892
%894 = fneg double %893
%895 = call double @llvm.fmuladd.f64(double %889, double %890, double %894)
store double %895, double* %43
%896 = load double, double* %42
%897 = load double, double* %44
%898 = load double, double* %45
%899 = load double, double* %41
%900 = fmul double %898, %899
%901 = call double @llvm.fmuladd.f64(double %896, double %897, double %900)
store double %901, double* %46
%902 = load i32, i32* %27
%903 = load i32, i32* %34
%904 = sub nsw i32 %902, %903
%905 = load i32, i32* %30
%906 = add nsw i32 %905, %904
store i32 %906, i32* %30
%907 = load i32, i32* %30
%908 = load i32, i32* %20
%909 = icmp sle i32 %907, %908
br i1 %909, label %910, label %911
910: ; preds = %847
br label %637
911: ; preds = %847
%912 = load i32, i32* %35
%913 = load i32, i32* %20
%914 = sub nsw i32 %912, %913
%915 = load i32, i32* %30
%916 = add nsw i32 %915, %914
store i32 %916, i32* %30
%917 = load i32, i32* %30
%918 = load i32, i32* %27
%919 = icmp sle i32 %917, %918
br i1 %919, label %920, label %921
920: ; preds = %911
br label %636
921: ; preds = %911
%922 = load i32, i32* %20
%923 = load i32, i32* %27
%924 = icmp eq i32 %922, %923
br i1 %924, label %925, label %926
925: ; preds = %921
br label %1763
926: ; preds = %921
br label %245
927: ; preds = %757
%928 = load double, double* %68
%929 = load double, double* %74
%930 = fadd double %928, %929
store double %930, double* %70
%931 = load double, double* %74
%932 = load double, double* %68
%933 = fsub double %932, %931
store double %933, double* %68
%934 = load double, double* %72
%935 = load double, double* %67
%936 = fsub double %934, %935
store double %936, double* %71
%937 = load double, double* %67
%938 = load double, double* %72
%939 = fadd double %938, %937
store double %939, double* %72
%940 = load double, double* %44
%941 = fcmp une double %940, 0.000000e+00
br i1 %941, label %942, label %943
942: ; preds = %927
br label %775
943: ; preds = %927
br label %944
944: ; preds = %943, %773
%945 = load double, double* %70
%946 = load double*, double** %39
%947 = load i32, i32* %23
%948 = sext i32 %947 to i64
%949 = getelementptr inbounds double, double* %946, i64 %948
store double %945, double* %949
%950 = load double, double* %71
%951 = load double*, double** %40
%952 = load i32, i32* %23
%953 = sext i32 %952 to i64
%954 = getelementptr inbounds double, double* %951, i64 %953
store double %950, double* %954
%955 = load double, double* %69
%956 = load double*, double** %39
%957 = load i32, i32* %24
%958 = sext i32 %957 to i64
%959 = getelementptr inbounds double, double* %956, i64 %958
store double %955, double* %959
%960 = load double, double* %73
%961 = load double*, double** %40
%962 = load i32, i32* %24
%963 = sext i32 %962 to i64
%964 = getelementptr inbounds double, double* %961, i64 %963
store double %960, double* %964
%965 = load double, double* %68
%966 = load double*, double** %39
%967 = load i32, i32* %25
%968 = sext i32 %967 to i64
%969 = getelementptr inbounds double, double* %966, i64 %968
store double %965, double* %969
%970 = load double, double* %72
%971 = load double*, double** %40
%972 = load i32, i32* %25
%973 = sext i32 %972 to i64
%974 = getelementptr inbounds double, double* %971, i64 %973
store double %970, double* %974
%975 = load i32, i32* %25
%976 = load i32, i32* %20
%977 = add nsw i32 %975, %976
store i32 %977, i32* %30
%978 = load i32, i32* %30
%979 = load i32, i32* %34
%980 = icmp sle i32 %978, %979
br i1 %980, label %981, label %982
981: ; preds = %944
br label %637
982: ; preds = %944
br label %847
983: ; preds = %1271
%984 = load double, double* %51
%985 = load double, double* %51
%986 = load double, double* %62
%987 = load double, double* %62
%988 = fmul double %986, %987
%989 = fneg double %988
%990 = call double @llvm.fmuladd.f64(double %984, double %985, double %989)
store double %990, double* %42
%991 = load double, double* %51
%992 = fmul double %991, 2.000000e+00
%993 = load double, double* %62
%994 = fmul double %992, %993
store double %994, double* %45
br label %995
995: ; preds = %1250, %983
br label %996
996: ; preds = %1242, %995
%997 = load i32, i32* %30
%998 = load i32, i32* %20
%999 = add nsw i32 %997, %998
store i32 %999, i32* %23
%1000 = load i32, i32* %23
%1001 = load i32, i32* %20
%1002 = add nsw i32 %1000, %1001
store i32 %1002, i32* %24
%1003 = load i32, i32* %24
%1004 = load i32, i32* %20
%1005 = add nsw i32 %1003, %1004
store i32 %1005, i32* %25
%1006 = load i32, i32* %25
%1007 = load i32, i32* %20
%1008 = add nsw i32 %1006, %1007
store i32 %1008, i32* %26
%1009 = load double*, double** %39
%1010 = load i32, i32* %23
%1011 = sext i32 %1010 to i64
%1012 = getelementptr inbounds double, double* %1009, i64 %1011
%1013 = load double, double* %1012
%1014 = load double*, double** %39
%1015 = load i32, i32* %26
%1016 = sext i32 %1015 to i64
%1017 = getelementptr inbounds double, double* %1014, i64 %1016
%1018 = load double, double* %1017
%1019 = fadd double %1013, %1018
store double %1019, double* %70
%1020 = load double*, double** %39
%1021 = load i32, i32* %23
%1022 = sext i32 %1021 to i64
%1023 = getelementptr inbounds double, double* %1020, i64 %1022
%1024 = load double, double* %1023
%1025 = load double*, double** %39
%1026 = load i32, i32* %26
%1027 = sext i32 %1026 to i64
%1028 = getelementptr inbounds double, double* %1025, i64 %1027
%1029 = load double, double* %1028
%1030 = fsub double %1024, %1029
store double %1030, double* %68
%1031 = load double*, double** %40
%1032 = load i32, i32* %23
%1033 = sext i32 %1032 to i64
%1034 = getelementptr inbounds double, double* %1031, i64 %1033
%1035 = load double, double* %1034
%1036 = load double*, double** %40
%1037 = load i32, i32* %26
%1038 = sext i32 %1037 to i64
%1039 = getelementptr inbounds double, double* %1036, i64 %1038
%1040 = load double, double* %1039
%1041 = fadd double %1035, %1040
store double %1041, double* %71
%1042 = load double*, double** %40
%1043 = load i32, i32* %23
%1044 = sext i32 %1043 to i64
%1045 = getelementptr inbounds double, double* %1042, i64 %1044
%1046 = load double, double* %1045
%1047 = load double*, double** %40
%1048 = load i32, i32* %26
%1049 = sext i32 %1048 to i64
%1050 = getelementptr inbounds double, double* %1047, i64 %1049
%1051 = load double, double* %1050
%1052 = fsub double %1046, %1051
store double %1052, double* %72
%1053 = load double*, double** %39
%1054 = load i32, i32* %24
%1055 = sext i32 %1054 to i64
%1056 = getelementptr inbounds double, double* %1053, i64 %1055
%1057 = load double, double* %1056
%1058 = load double*, double** %39
%1059 = load i32, i32* %25
%1060 = sext i32 %1059 to i64
%1061 = getelementptr inbounds double, double* %1058, i64 %1060
%1062 = load double, double* %1061
%1063 = fadd double %1057, %1062
store double %1063, double* %69
%1064 = load double*, double** %39
%1065 = load i32, i32* %24
%1066 = sext i32 %1065 to i64
%1067 = getelementptr inbounds double, double* %1064, i64 %1066
%1068 = load double, double* %1067
%1069 = load double*, double** %39
%1070 = load i32, i32* %25
%1071 = sext i32 %1070 to i64
%1072 = getelementptr inbounds double, double* %1069, i64 %1071
%1073 = load double, double* %1072
%1074 = fsub double %1068, %1073
store double %1074, double* %67
%1075 = load double*, double** %40
%1076 = load i32, i32* %24
%1077 = sext i32 %1076 to i64
%1078 = getelementptr inbounds double, double* %1075, i64 %1077
%1079 = load double, double* %1078
%1080 = load double*, double** %40
%1081 = load i32, i32* %25
%1082 = sext i32 %1081 to i64
%1083 = getelementptr inbounds double, double* %1080, i64 %1082
%1084 = load double, double* %1083
%1085 = fadd double %1079, %1084
store double %1085, double* %73
%1086 = load double*, double** %40
%1087 = load i32, i32* %24
%1088 = sext i32 %1087 to i64
%1089 = getelementptr inbounds double, double* %1086, i64 %1088
%1090 = load double, double* %1089
%1091 = load double*, double** %40
%1092 = load i32, i32* %25
%1093 = sext i32 %1092 to i64
%1094 = getelementptr inbounds double, double* %1091, i64 %1093
%1095 = load double, double* %1094
%1096 = fsub double %1090, %1095
store double %1096, double* %74
%1097 = load double*, double** %39
%1098 = load i32, i32* %30
%1099 = sext i32 %1098 to i64
%1100 = getelementptr inbounds double, double* %1097, i64 %1099
%1101 = load double, double* %1100
store double %1101, double* %47
%1102 = load double*, double** %40
%1103 = load i32, i32* %30
%1104 = sext i32 %1103 to i64
%1105 = getelementptr inbounds double, double* %1102, i64 %1104
%1106 = load double, double* %1105
store double %1106, double* %48
%1107 = load double, double* %47
%1108 = load double, double* %70
%1109 = fadd double %1107, %1108
%1110 = load double, double* %69
%1111 = fadd double %1109, %1110
%1112 = load double*, double** %39
%1113 = load i32, i32* %30
%1114 = sext i32 %1113 to i64
%1115 = getelementptr inbounds double, double* %1112, i64 %1114
store double %1111, double* %1115
%1116 = load double, double* %48
%1117 = load double, double* %71
%1118 = fadd double %1116, %1117
%1119 = load double, double* %73
%1120 = fadd double %1118, %1119
%1121 = load double*, double** %40
%1122 = load i32, i32* %30
%1123 = sext i32 %1122 to i64
%1124 = getelementptr inbounds double, double* %1121, i64 %1123
store double %1120, double* %1124
%1125 = load double, double* %70
%1126 = load double, double* %51
%1127 = load double, double* %69
%1128 = load double, double* %42
%1129 = fmul double %1127, %1128
%1130 = call double @llvm.fmuladd.f64(double %1125, double %1126, double %1129)
%1131 = load double, double* %47
%1132 = fadd double %1130, %1131
store double %1132, double* %53
%1133 = load double, double* %71
%1134 = load double, double* %51
%1135 = load double, double* %73
%1136 = load double, double* %42
%1137 = fmul double %1135, %1136
%1138 = call double @llvm.fmuladd.f64(double %1133, double %1134, double %1137)
%1139 = load double, double* %48
%1140 = fadd double %1138, %1139
store double %1140, double* %55
%1141 = load double, double* %68
%1142 = load double, double* %62
%1143 = load double, double* %67
%1144 = load double, double* %45
%1145 = fmul double %1143, %1144
%1146 = call double @llvm.fmuladd.f64(double %1141, double %1142, double %1145)
store double %1146, double* %50
%1147 = load double, double* %72
%1148 = load double, double* %62
%1149 = load double, double* %74
%1150 = load double, double* %45
%1151 = fmul double %1149, %1150
%1152 = call double @llvm.fmuladd.f64(double %1147, double %1148, double %1151)
store double %1152, double* %56
%1153 = load double, double* %53
%1154 = load double, double* %56
%1155 = fsub double %1153, %1154
%1156 = load double*, double** %39
%1157 = load i32, i32* %23
%1158 = sext i32 %1157 to i64
%1159 = getelementptr inbounds double, double* %1156, i64 %1158
store double %1155, double* %1159
%1160 = load double, double* %53
%1161 = load double, double* %56
%1162 = fadd double %1160, %1161
%1163 = load double*, double** %39
%1164 = load i32, i32* %26
%1165 = sext i32 %1164 to i64
%1166 = getelementptr inbounds double, double* %1163, i64 %1165
store double %1162, double* %1166
%1167 = load double, double* %55
%1168 = load double, double* %50
%1169 = fadd double %1167, %1168
%1170 = load double*, double** %40
%1171 = load i32, i32* %23
%1172 = sext i32 %1171 to i64
%1173 = getelementptr inbounds double, double* %1170, i64 %1172
store double %1169, double* %1173
%1174 = load double, double* %55
%1175 = load double, double* %50
%1176 = fsub double %1174, %1175
%1177 = load double*, double** %40
%1178 = load i32, i32* %26
%1179 = sext i32 %1178 to i64
%1180 = getelementptr inbounds double, double* %1177, i64 %1179
store double %1176, double* %1180
%1181 = load double, double* %70
%1182 = load double, double* %42
%1183 = load double, double* %69
%1184 = load double, double* %51
%1185 = fmul double %1183, %1184
%1186 = call double @llvm.fmuladd.f64(double %1181, double %1182, double %1185)
%1187 = load double, double* %47
%1188 = fadd double %1186, %1187
store double %1188, double* %53
%1189 = load double, double* %71
%1190 = load double, double* %42
%1191 = load double, double* %73
%1192 = load double, double* %51
%1193 = fmul double %1191, %1192
%1194 = call double @llvm.fmuladd.f64(double %1189, double %1190, double %1193)
%1195 = load double, double* %48
%1196 = fadd double %1194, %1195
store double %1196, double* %55
%1197 = load double, double* %68
%1198 = load double, double* %45
%1199 = load double, double* %67
%1200 = load double, double* %62
%1201 = fmul double %1199, %1200
%1202 = fneg double %1201
%1203 = call double @llvm.fmuladd.f64(double %1197, double %1198, double %1202)
store double %1203, double* %50
%1204 = load double, double* %72
%1205 = load double, double* %45
%1206 = load double, double* %74
%1207 = load double, double* %62
%1208 = fmul double %1206, %1207
%1209 = fneg double %1208
%1210 = call double @llvm.fmuladd.f64(double %1204, double %1205, double %1209)
store double %1210, double* %56
%1211 = load double, double* %53
%1212 = load double, double* %56
%1213 = fsub double %1211, %1212
%1214 = load double*, double** %39
%1215 = load i32, i32* %24
%1216 = sext i32 %1215 to i64
%1217 = getelementptr inbounds double, double* %1214, i64 %1216
store double %1213, double* %1217
%1218 = load double, double* %53
%1219 = load double, double* %56
%1220 = fadd double %1218, %1219
%1221 = load double*, double** %39
%1222 = load i32, i32* %25
%1223 = sext i32 %1222 to i64
%1224 = getelementptr inbounds double, double* %1221, i64 %1223
store double %1220, double* %1224
%1225 = load double, double* %55
%1226 = load double, double* %50
%1227 = fadd double %1225, %1226
%1228 = load double*, double** %40
%1229 = load i32, i32* %24
%1230 = sext i32 %1229 to i64
%1231 = getelementptr inbounds double, double* %1228, i64 %1230
store double %1227, double* %1231
%1232 = load double, double* %55
%1233 = load double, double* %50
%1234 = fsub double %1232, %1233
%1235 = load double*, double** %40
%1236 = load i32, i32* %25
%1237 = sext i32 %1236 to i64
%1238 = getelementptr inbounds double, double* %1235, i64 %1237
store double %1234, double* %1238
%1239 = load i32, i32* %26
%1240 = load i32, i32* %20
%1241 = add nsw i32 %1239, %1240
store i32 %1241, i32* %30
br label %1242
1242: ; preds = %996
%1243 = load i32, i32* %30
%1244 = load i32, i32* %31
%1245 = icmp slt i32 %1243, %1244
br i1 %1245, label %996, label %1246
1246: ; preds = %1242
%1247 = load i32, i32* %31
%1248 = load i32, i32* %30
%1249 = sub nsw i32 %1248, %1247
store i32 %1249, i32* %30
br label %1250
1250: ; preds = %1246
%1251 = load i32, i32* %30
%1252 = load i32, i32* %20
%1253 = icmp sle i32 %1251, %1252
br i1 %1253, label %995, label %1254
1254: ; preds = %1250
br label %1623
1255: ; preds = %631
%1256 = bitcast %union.anon* %16 to i32*
%1257 = load i32, i32* %1256
%1258 = sext i32 %1257 to i64
%1259 = getelementptr inbounds [13 x i32], [13 x i32]* %14, i64 0, i64 %1258
%1260 = load i32, i32* %1259
store i32 %1260, i32* %18
%1261 = load i32, i32* %20
store i32 %1261, i32* %22
%1262 = load i32, i32* %18
%1263 = load i32, i32* %20
%1264 = sdiv i32 %1263, %1262
store i32 %1264, i32* %20
%1265 = load i32, i32* %18
%1266 = icmp eq i32 %1265, 3
br i1 %1266, label %1267, label %1268
1267: ; preds = %1255
br label %495
1268: ; preds = %1255
%1269 = load i32, i32* %18
%1270 = icmp eq i32 %1269, 5
br i1 %1270, label %1271, label %1272
1271: ; preds = %1268
br label %983
1272: ; preds = %1268
%1273 = load i32, i32* %18
%1274 = load i32, i32* %28
%1275 = icmp eq i32 %1273, %1274
br i1 %1275, label %1276, label %1277
1276: ; preds = %1272
br label %1366
1277: ; preds = %1272
%1278 = load i32, i32* %18
store i32 %1278, i32* %28
%1279 = load double, double* %66
%1280 = load i32, i32* %18
%1281 = sitofp i32 %1280 to double
%1282 = fdiv double %1279, %1281
store double %1282, double* %44
%1283 = load double, double* %44
%1284 = call double @cos(double %1283)
store double %1284, double* %41
%1285 = load double, double* %44
%1286 = call double @sin(double %1285)
store double %1286, double* %44
%1287 = load i32, i32* %28
%1288 = load i32, i32* %21
%1289 = icmp sgt i32 %1287, %1288
br i1 %1289, label %1290, label %1291
1290: ; preds = %1277
store i32 1, i32* %7
br label %2418
1291: ; preds = %1277
%1292 = load double*, double** %54
%1293 = load i32, i32* %28
%1294 = sext i32 %1293 to i64
%1295 = getelementptr inbounds double, double* %1292, i64 %1294
store double 1.000000e+00, double* %1295
%1296 = load double*, double** %64
%1297 = load i32, i32* %28
%1298 = sext i32 %1297 to i64
%1299 = getelementptr inbounds double, double* %1296, i64 %1298
store double 0.000000e+00, double* %1299
store i32 1, i32* %17
br label %1300
1300: ; preds = %1361, %1291
%1301 = load double*, double** %54
%1302 = load i32, i32* %18
%1303 = sext i32 %1302 to i64
%1304 = getelementptr inbounds double, double* %1301, i64 %1303
%1305 = load double, double* %1304
%1306 = load double, double* %41
%1307 = load double*, double** %64
%1308 = load i32, i32* %18
%1309 = sext i32 %1308 to i64
%1310 = getelementptr inbounds double, double* %1307, i64 %1309
%1311 = load double, double* %1310
%1312 = load double, double* %44
%1313 = fmul double %1311, %1312
%1314 = call double @llvm.fmuladd.f64(double %1305, double %1306, double %1313)
%1315 = load double*, double** %54
%1316 = load i32, i32* %17
%1317 = sext i32 %1316 to i64
%1318 = getelementptr inbounds double, double* %1315, i64 %1317
store double %1314, double* %1318
%1319 = load double*, double** %54
%1320 = load i32, i32* %18
%1321 = sext i32 %1320 to i64
%1322 = getelementptr inbounds double, double* %1319, i64 %1321
%1323 = load double, double* %1322
%1324 = load double, double* %44
%1325 = load double*, double** %64
%1326 = load i32, i32* %18
%1327 = sext i32 %1326 to i64
%1328 = getelementptr inbounds double, double* %1325, i64 %1327
%1329 = load double, double* %1328
%1330 = load double, double* %41
%1331 = fmul double %1329, %1330
%1332 = fneg double %1331
%1333 = call double @llvm.fmuladd.f64(double %1323, double %1324, double %1332)
%1334 = load double*, double** %64
%1335 = load i32, i32* %17
%1336 = sext i32 %1335 to i64
%1337 = getelementptr inbounds double, double* %1334, i64 %1336
store double %1333, double* %1337
%1338 = load i32, i32* %18
%1339 = add nsw i32 %1338, -1
store i32 %1339, i32* %18
%1340 = load double*, double** %54
%1341 = load i32, i32* %17
%1342 = sext i32 %1341 to i64
%1343 = getelementptr inbounds double, double* %1340, i64 %1342
%1344 = load double, double* %1343
%1345 = load double*, double** %54
%1346 = load i32, i32* %18
%1347 = sext i32 %1346 to i64
%1348 = getelementptr inbounds double, double* %1345, i64 %1347
store double %1344, double* %1348
%1349 = load double*, double** %64
%1350 = load i32, i32* %17
%1351 = sext i32 %1350 to i64
%1352 = getelementptr inbounds double, double* %1349, i64 %1351
%1353 = load double, double* %1352
%1354 = fneg double %1353
%1355 = load double*, double** %64
%1356 = load i32, i32* %18
%1357 = sext i32 %1356 to i64
%1358 = getelementptr inbounds double, double* %1355, i64 %1357
store double %1354, double* %1358
%1359 = load i32, i32* %17
%1360 = add nsw i32 %1359, 1
store i32 %1360, i32* %17
br label %1361
1361: ; preds = %1300
%1362 = load i32, i32* %17
%1363 = load i32, i32* %18
%1364 = icmp slt i32 %1362, %1363
br i1 %1364, label %1300, label %1365
1365: ; preds = %1361
br label %1366
1366: ; preds = %1621, %1613, %1365, %1276
%1367 = load i32, i32* %30
store i32 %1367, i32* %23
%1368 = load i32, i32* %30
%1369 = load i32, i32* %22
%1370 = add nsw i32 %1368, %1369
store i32 %1370, i32* %24
%1371 = load double*, double** %39
%1372 = load i32, i32* %30
%1373 = sext i32 %1372 to i64
%1374 = getelementptr inbounds double, double* %1371, i64 %1373
%1375 = load double, double* %1374
store double %1375, double* %47
%1376 = load double*, double** %40
%1377 = load i32, i32* %30
%1378 = sext i32 %1377 to i64
%1379 = getelementptr inbounds double, double* %1376, i64 %1378
%1380 = load double, double* %1379
store double %1380, double* %48
%1381 = load double, double* %47
store double %1381, double* %53
%1382 = load double, double* %48
store double %1382, double* %55
store i32 1, i32* %17
%1383 = load i32, i32* %20
%1384 = load i32, i32* %23
%1385 = add nsw i32 %1384, %1383
store i32 %1385, i32* %23
br label %1386
1386: ; preds = %1471, %1366
%1387 = load i32, i32* %20
%1388 = load i32, i32* %24
%1389 = sub nsw i32 %1388, %1387
store i32 %1389, i32* %24
%1390 = load i32, i32* %17
%1391 = add nsw i32 %1390, 1
store i32 %1391, i32* %17
%1392 = load double*, double** %39
%1393 = load i32, i32* %23
%1394 = sext i32 %1393 to i64
%1395 = getelementptr inbounds double, double* %1392, i64 %1394
%1396 = load double, double* %1395
%1397 = load double*, double** %39
%1398 = load i32, i32* %24
%1399 = sext i32 %1398 to i64
%1400 = getelementptr inbounds double, double* %1397, i64 %1399
%1401 = load double, double* %1400
%1402 = fadd double %1396, %1401
%1403 = load double*, double** %60
%1404 = load i32, i32* %17
%1405 = sext i32 %1404 to i64
%1406 = getelementptr inbounds double, double* %1403, i64 %1405
store double %1402, double* %1406
%1407 = load double*, double** %60
%1408 = load i32, i32* %17
%1409 = sext i32 %1408 to i64
%1410 = getelementptr inbounds double, double* %1407, i64 %1409
%1411 = load double, double* %1410
%1412 = load double, double* %53
%1413 = fadd double %1412, %1411
store double %1413, double* %53
%1414 = load double*, double** %40
%1415 = load i32, i32* %23
%1416 = sext i32 %1415 to i64
%1417 = getelementptr inbounds double, double* %1414, i64 %1416
%1418 = load double, double* %1417
%1419 = load double*, double** %40
%1420 = load i32, i32* %24
%1421 = sext i32 %1420 to i64
%1422 = getelementptr inbounds double, double* %1419, i64 %1421
%1423 = load double, double* %1422
%1424 = fadd double %1418, %1423
%1425 = load double*, double** %61
%1426 = load i32, i32* %17
%1427 = sext i32 %1426 to i64
%1428 = getelementptr inbounds double, double* %1425, i64 %1427
store double %1424, double* %1428
%1429 = load double*, double** %61
%1430 = load i32, i32* %17
%1431 = sext i32 %1430 to i64
%1432 = getelementptr inbounds double, double* %1429, i64 %1431
%1433 = load double, double* %1432
%1434 = load double, double* %55
%1435 = fadd double %1434, %1433
store double %1435, double* %55
%1436 = load i32, i32* %17
%1437 = add nsw i32 %1436, 1
store i32 %1437, i32* %17
%1438 = load double*, double** %39
%1439 = load i32, i32* %23
%1440 = sext i32 %1439 to i64
%1441 = getelementptr inbounds double, double* %1438, i64 %1440
%1442 = load double, double* %1441
%1443 = load double*, double** %39
%1444 = load i32, i32* %24
%1445 = sext i32 %1444 to i64
%1446 = getelementptr inbounds double, double* %1443, i64 %1445
%1447 = load double, double* %1446
%1448 = fsub double %1442, %1447
%1449 = load double*, double** %60
%1450 = load i32, i32* %17
%1451 = sext i32 %1450 to i64
%1452 = getelementptr inbounds double, double* %1449, i64 %1451
store double %1448, double* %1452
%1453 = load double*, double** %40
%1454 = load i32, i32* %23
%1455 = sext i32 %1454 to i64
%1456 = getelementptr inbounds double, double* %1453, i64 %1455
%1457 = load double, double* %1456
%1458 = load double*, double** %40
%1459 = load i32, i32* %24
%1460 = sext i32 %1459 to i64
%1461 = getelementptr inbounds double, double* %1458, i64 %1460
%1462 = load double, double* %1461
%1463 = fsub double %1457, %1462
%1464 = load double*, double** %61
%1465 = load i32, i32* %17
%1466 = sext i32 %1465 to i64
%1467 = getelementptr inbounds double, double* %1464, i64 %1466
store double %1463, double* %1467
%1468 = load i32, i32* %20
%1469 = load i32, i32* %23
%1470 = add nsw i32 %1469, %1468
store i32 %1470, i32* %23
br label %1471
1471: ; preds = %1386
%1472 = load i32, i32* %23
%1473 = load i32, i32* %24
%1474 = icmp slt i32 %1472, %1473
br i1 %1474, label %1386, label %1475
1475: ; preds = %1471
%1476 = load double, double* %53
%1477 = load double*, double** %39
%1478 = load i32, i32* %30
%1479 = sext i32 %1478 to i64
%1480 = getelementptr inbounds double, double* %1477, i64 %1479
store double %1476, double* %1480
%1481 = load double, double* %55
%1482 = load double*, double** %40
%1483 = load i32, i32* %30
%1484 = sext i32 %1483 to i64
%1485 = getelementptr inbounds double, double* %1482, i64 %1484
store double %1481, double* %1485
%1486 = load i32, i32* %30
store i32 %1486, i32* %23
%1487 = load i32, i32* %30
%1488 = load i32, i32* %22
%1489 = add nsw i32 %1487, %1488
store i32 %1489, i32* %24
store i32 1, i32* %17
br label %1490
1490: ; preds = %1605, %1475
%1491 = load i32, i32* %20
%1492 = load i32, i32* %23
%1493 = add nsw i32 %1492, %1491
store i32 %1493, i32* %23
%1494 = load i32, i32* %20
%1495 = load i32, i32* %24
%1496 = sub nsw i32 %1495, %1494
store i32 %1496, i32* %24
%1497 = load i32, i32* %17
store i32 %1497, i32* %29
%1498 = load double, double* %47
store double %1498, double* %53
%1499 = load double, double* %48
store double %1499, double* %55
store double 0.000000e+00, double* %50
store double 0.000000e+00, double* %56
store i32 1, i32* %18
br label %1500
1500: ; preds = %1564, %1490
%1501 = load i32, i32* %18
%1502 = add nsw i32 %1501, 1
store i32 %1502, i32* %18
%1503 = load double*, double** %60
%1504 = load i32, i32* %18
%1505 = sext i32 %1504 to i64
%1506 = getelementptr inbounds double, double* %1503, i64 %1505
%1507 = load double, double* %1506
%1508 = load double*, double** %54
%1509 = load i32, i32* %29
%1510 = sext i32 %1509 to i64
%1511 = getelementptr inbounds double, double* %1508, i64 %1510
%1512 = load double, double* %1511
%1513 = load double, double* %53
%1514 = call double @llvm.fmuladd.f64(double %1507, double %1512, double %1513)
store double %1514, double* %53
%1515 = load double*, double** %61
%1516 = load i32, i32* %18
%1517 = sext i32 %1516 to i64
%1518 = getelementptr inbounds double, double* %1515, i64 %1517
%1519 = load double, double* %1518
%1520 = load double*, double** %54
%1521 = load i32, i32* %29
%1522 = sext i32 %1521 to i64
%1523 = getelementptr inbounds double, double* %1520, i64 %1522
%1524 = load double, double* %1523
%1525 = load double, double* %55
%1526 = call double @llvm.fmuladd.f64(double %1519, double %1524, double %1525)
store double %1526, double* %55
%1527 = load i32, i32* %18
%1528 = add nsw i32 %1527, 1
store i32 %1528, i32* %18
%1529 = load double*, double** %60
%1530 = load i32, i32* %18
%1531 = sext i32 %1530 to i64
%1532 = getelementptr inbounds double, double* %1529, i64 %1531
%1533 = load double, double* %1532
%1534 = load double*, double** %64
%1535 = load i32, i32* %29
%1536 = sext i32 %1535 to i64
%1537 = getelementptr inbounds double, double* %1534, i64 %1536
%1538 = load double, double* %1537
%1539 = load double, double* %50
%1540 = call double @llvm.fmuladd.f64(double %1533, double %1538, double %1539)
store double %1540, double* %50
%1541 = load double*, double** %61
%1542 = load i32, i32* %18
%1543 = sext i32 %1542 to i64
%1544 = getelementptr inbounds double, double* %1541, i64 %1543
%1545 = load double, double* %1544
%1546 = load double*, double** %64
%1547 = load i32, i32* %29
%1548 = sext i32 %1547 to i64
%1549 = getelementptr inbounds double, double* %1546, i64 %1548
%1550 = load double, double* %1549
%1551 = load double, double* %56
%1552 = call double @llvm.fmuladd.f64(double %1545, double %1550, double %1551)
store double %1552, double* %56
%1553 = load i32, i32* %17
%1554 = load i32, i32* %29
%1555 = add nsw i32 %1554, %1553
store i32 %1555, i32* %29
%1556 = load i32, i32* %29
%1557 = load i32, i32* %28
%1558 = icmp sgt i32 %1556, %1557
br i1 %1558, label %1559, label %1563
1559: ; preds = %1500
%1560 = load i32, i32* %28
%1561 = load i32, i32* %29
%1562 = sub nsw i32 %1561, %1560
store i32 %1562, i32* %29
br label %1563
1563: ; preds = %1559, %1500
br label %1564
1564: ; preds = %1563
%1565 = load i32, i32* %18
%1566 = load i32, i32* %28
%1567 = icmp slt i32 %1565, %1566
br i1 %1567, label %1500, label %1568
1568: ; preds = %1564
%1569 = load i32, i32* %28
%1570 = load i32, i32* %17
%1571 = sub nsw i32 %1569, %1570
store i32 %1571, i32* %18
%1572 = load double, double* %53
%1573 = load double, double* %56
%1574 = fsub double %1572, %1573
%1575 = load double*, double** %39
%1576 = load i32, i32* %23
%1577 = sext i32 %1576 to i64
%1578 = getelementptr inbounds double, double* %1575, i64 %1577
store double %1574, double* %1578
%1579 = load double, double* %55
%1580 = load double, double* %50
%1581 = fadd double %1579, %1580
%1582 = load double*, double** %40
%1583 = load i32, i32* %23
%1584 = sext i32 %1583 to i64
%1585 = getelementptr inbounds double, double* %1582, i64 %1584
store double %1581, double* %1585
%1586 = load double, double* %53
%1587 = load double, double* %56
%1588 = fadd double %1586, %1587
%1589 = load double*, double** %39
%1590 = load i32, i32* %24
%1591 = sext i32 %1590 to i64
%1592 = getelementptr inbounds double, double* %1589, i64 %1591
store double %1588, double* %1592
%1593 = load double, double* %55
%1594 = load double, double* %50
%1595 = fsub double %1593, %1594
%1596 = load double*, double** %40
%1597 = load i32, i32* %24
%1598 = sext i32 %1597 to i64
%1599 = getelementptr inbounds double, double* %1596, i64 %1598
store double %1595, double* %1599
%1600 = load i32, i32* %17
%1601 = add nsw i32 %1600, 1
store i32 %1601, i32* %17
%1602 = load i32, i32* %17
%1603 = load i32, i32* %18
%1604 = icmp slt i32 %1602, %1603
br i1 %1604, label %1605, label %1606
1605: ; preds = %1568
br label %1490
1606: ; preds = %1568
%1607 = load i32, i32* %22
%1608 = load i32, i32* %30
%1609 = add nsw i32 %1608, %1607
store i32 %1609, i32* %30
%1610 = load i32, i32* %30
%1611 = load i32, i32* %31
%1612 = icmp sle i32 %1610, %1611
br i1 %1612, label %1613, label %1614
1613: ; preds = %1606
br label %1366
1614: ; preds = %1606
%1615 = load i32, i32* %31
%1616 = load i32, i32* %30
%1617 = sub nsw i32 %1616, %1615
store i32 %1617, i32* %30
%1618 = load i32, i32* %30
%1619 = load i32, i32* %20
%1620 = icmp sle i32 %1618, %1619
br i1 %1620, label %1621, label %1622
1621: ; preds = %1614
br label %1366
1622: ; preds = %1614
br label %1623
1623: ; preds = %1622, %1254, %623
%1624 = bitcast %union.anon* %16 to i32*
%1625 = load i32, i32* %1624
%1626 = load i32, i32* %19
%1627 = sub nsw i32 %1626, 1
%1628 = icmp eq i32 %1625, %1627
br i1 %1628, label %1629, label %1630
1629: ; preds = %1623
br label %1763
1630: ; preds = %1623
%1631 = load i32, i32* %27
%1632 = add nsw i32 %1631, 1
store i32 %1632, i32* %30
br label %1633
1633: ; preds = %1761, %1630
%1634 = load double, double* %49
%1635 = fsub double 1.000000e+00, %1634
store double %1635, double* %42
%1636 = load double, double* %59
store double %1636, double* %44
br label %1637
1637: ; preds = %1748, %1633
%1638 = load double, double* %42
store double %1638, double* %41
%1639 = load double, double* %44
store double %1639, double* %45
%1640 = load i32, i32* %20
%1641 = load i32, i32* %30
%1642 = add nsw i32 %1641, %1640
store i32 %1642, i32* %30
br label %1643
1643: ; preds = %1708, %1684, %1637
%1644 = load double*, double** %39
%1645 = load i32, i32* %30
%1646 = sext i32 %1645 to i64
%1647 = getelementptr inbounds double, double* %1644, i64 %1646
%1648 = load double, double* %1647
store double %1648, double* %53
%1649 = load double, double* %42
%1650 = load double, double* %53
%1651 = load double, double* %45
%1652 = load double*, double** %40
%1653 = load i32, i32* %30
%1654 = sext i32 %1653 to i64
%1655 = getelementptr inbounds double, double* %1652, i64 %1654
%1656 = load double, double* %1655
%1657 = fmul double %1651, %1656
%1658 = fneg double %1657
%1659 = call double @llvm.fmuladd.f64(double %1649, double %1650, double %1658)
%1660 = load double*, double** %39
%1661 = load i32, i32* %30
%1662 = sext i32 %1661 to i64
%1663 = getelementptr inbounds double, double* %1660, i64 %1662
store double %1659, double* %1663
%1664 = load double, double* %45
%1665 = load double, double* %53
%1666 = load double, double* %42
%1667 = load double*, double** %40
%1668 = load i32, i32* %30
%1669 = sext i32 %1668 to i64
%1670 = getelementptr inbounds double, double* %1667, i64 %1669
%1671 = load double, double* %1670
%1672 = fmul double %1666, %1671
%1673 = call double @llvm.fmuladd.f64(double %1664, double %1665, double %1672)
%1674 = load double*, double** %40
%1675 = load i32, i32* %30
%1676 = sext i32 %1675 to i64
%1677 = getelementptr inbounds double, double* %1674, i64 %1676
store double %1673, double* %1677
%1678 = load i32, i32* %22
%1679 = load i32, i32* %30
%1680 = add nsw i32 %1679, %1678
store i32 %1680, i32* %30
%1681 = load i32, i32* %30
%1682 = load i32, i32* %34
%1683 = icmp sle i32 %1681, %1682
br i1 %1683, label %1684, label %1685
1684: ; preds = %1643
br label %1643
1685: ; preds = %1643
%1686 = load double, double* %44
%1687 = load double, double* %45
%1688 = fmul double %1686, %1687
store double %1688, double* %53
%1689 = load double, double* %44
%1690 = load double, double* %42
%1691 = load double, double* %41
%1692 = load double, double* %45
%1693 = fmul double %1691, %1692
%1694 = call double @llvm.fmuladd.f64(double %1689, double %1690, double %1693)
store double %1694, double* %45
%1695 = load double, double* %41
%1696 = load double, double* %42
%1697 = load double, double* %53
%1698 = fneg double %1697
%1699 = call double @llvm.fmuladd.f64(double %1695, double %1696, double %1698)
store double %1699, double* %42
%1700 = load i32, i32* %20
%1701 = load i32, i32* %34
%1702 = sub nsw i32 %1700, %1701
%1703 = load i32, i32* %30
%1704 = add nsw i32 %1703, %1702
store i32 %1704, i32* %30
%1705 = load i32, i32* %30
%1706 = load i32, i32* %22
%1707 = icmp sle i32 %1705, %1706
br i1 %1707, label %1708, label %1709
1708: ; preds = %1685
br label %1643
1709: ; preds = %1685
%1710 = load double, double* %41
%1711 = load double, double* %49
%1712 = load double, double* %41
%1713 = load double, double* %59
%1714 = load double, double* %44
%1715 = fmul double %1713, %1714
%1716 = call double @llvm.fmuladd.f64(double %1711, double %1712, double %1715)
%1717 = fsub double %1710, %1716
store double %1717, double* %42
%1718 = load double, double* %59
%1719 = load double, double* %41
%1720 = load double, double* %49
%1721 = load double, double* %44
%1722 = fmul double %1720, %1721
%1723 = fneg double %1722
%1724 = call double @llvm.fmuladd.f64(double %1718, double %1719, double %1723)
%1725 = load double, double* %44
%1726 = fadd double %1725, %1724
store double %1726, double* %44
%1727 = load double, double* %42
%1728 = load double, double* %42
%1729 = load double, double* %44
%1730 = load double, double* %44
%1731 = fmul double %1729, %1730
%1732 = call double @llvm.fmuladd.f64(double %1727, double %1728, double %1731)
%1733 = fsub double 2.000000e+00, %1732
store double %1733, double* %41
%1734 = load double, double* %41
%1735 = load double, double* %44
%1736 = fmul double %1735, %1734
store double %1736, double* %44
%1737 = load double, double* %41
%1738 = load double, double* %42
%1739 = fmul double %1738, %1737
store double %1739, double* %42
%1740 = load i32, i32* %27
%1741 = load i32, i32* %22
%1742 = sub nsw i32 %1740, %1741
%1743 = load i32, i32* %30
%1744 = add nsw i32 %1743, %1742
store i32 %1744, i32* %30
%1745 = load i32, i32* %30
%1746 = load i32, i32* %20
%1747 = icmp sle i32 %1745, %1746
br i1 %1747, label %1748, label %1749
1748: ; preds = %1709
br label %1637
1749: ; preds = %1709
%1750 = load i32, i32* %27
%1751 = load i32, i32* %35
%1752 = add nsw i32 %1750, %1751
%1753 = load i32, i32* %20
%1754 = sub nsw i32 %1752, %1753
%1755 = load i32, i32* %30
%1756 = add nsw i32 %1755, %1754
store i32 %1756, i32* %30
%1757 = load i32, i32* %30
%1758 = load i32, i32* %27
%1759 = shl i32 %1758, 1
%1760 = icmp sle i32 %1757, %1759
br i1 %1760, label %1761, label %1762
1761: ; preds = %1749
br label %1633
1762: ; preds = %1749
br label %245
1763: ; preds = %1629, %925, %343
%1764 = load i32, i32* %32
%1765 = getelementptr inbounds [209 x i32], [209 x i32]* %36, i64 0, i64 0
store i32 %1764, i32* %1765
%1766 = load i32, i32* %33
%1767 = icmp eq i32 %1766, 0
br i1 %1767, label %1768, label %1769
1768: ; preds = %1763
br label %2067
1769: ; preds = %1763
%1770 = load i32, i32* %33
%1771 = shl i32 %1770, 1
%1772 = add nsw i32 %1771, 1
store i32 %1772, i32* %18
%1773 = load i32, i32* %19
%1774 = load i32, i32* %18
%1775 = icmp slt i32 %1773, %1774
br i1 %1775, label %1776, label %1779
1776: ; preds = %1769
%1777 = load i32, i32* %18
%1778 = add nsw i32 %1777, -1
store i32 %1778, i32* %18
br label %1779
1779: ; preds = %1776, %1769
store i32 1, i32* %17
%1780 = load i32, i32* %27
%1781 = load i32, i32* %18
%1782 = sext i32 %1781 to i64
%1783 = getelementptr inbounds [209 x i32], [209 x i32]* %36, i64 0, i64 %1782
store i32 %1780, i32* %1783
br label %1784
1784: ; preds = %1817, %1779
%1785 = load i32*, i32** %37
%1786 = load i32, i32* %17
%1787 = sext i32 %1786 to i64
%1788 = getelementptr inbounds i32, i32* %1785, i64 %1787
%1789 = load i32, i32* %1788
%1790 = load i32*, i32** %15
%1791 = load i32, i32* %17
%1792 = sext i32 %1791 to i64
%1793 = getelementptr inbounds i32, i32* %1790, i64 %1792
%1794 = load i32, i32* %1793
%1795 = sdiv i32 %1789, %1794
%1796 = load i32, i32* %17
%1797 = sext i32 %1796 to i64
%1798 = getelementptr inbounds [209 x i32], [209 x i32]* %36, i64 0, i64 %1797
store i32 %1795, i32* %1798
%1799 = load i32, i32* %18
%1800 = sext i32 %1799 to i64
%1801 = getelementptr inbounds [209 x i32], [209 x i32]* %36, i64 0, i64 %1800
%1802 = load i32, i32* %1801
%1803 = load i32*, i32** %15
%1804 = load i32, i32* %17
%1805 = sext i32 %1804 to i64
%1806 = getelementptr inbounds i32, i32* %1803, i64 %1805
%1807 = load i32, i32* %1806
%1808 = mul nsw i32 %1802, %1807
%1809 = load i32*, i32** %37
%1810 = load i32, i32* %18
%1811 = sext i32 %1810 to i64
%1812 = getelementptr inbounds i32, i32* %1809, i64 %1811
store i32 %1808, i32* %1812
%1813 = load i32, i32* %17
%1814 = add nsw i32 %1813, 1
store i32 %1814, i32* %17
%1815 = load i32, i32* %18
%1816 = add nsw i32 %1815, -1
store i32 %1816, i32* %18
br label %1817
1817: ; preds = %1784
%1818 = load i32, i32* %17
%1819 = load i32, i32* %18
%1820 = icmp slt i32 %1818, %1819
br i1 %1820, label %1784, label %1821
1821: ; preds = %1817
%1822 = load i32, i32* %18
%1823 = sext i32 %1822 to i64
%1824 = getelementptr inbounds [209 x i32], [209 x i32]* %36, i64 0, i64 %1823
%1825 = load i32, i32* %1824
store i32 %1825, i32* %25
%1826 = getelementptr inbounds [209 x i32], [209 x i32]* %36, i64 0, i64 1
%1827 = load i32, i32* %1826
store i32 %1827, i32* %20
%1828 = load i32, i32* %27
%1829 = add nsw i32 %1828, 1
store i32 %1829, i32* %30
%1830 = load i32, i32* %20
%1831 = add nsw i32 %1830, 1
store i32 %1831, i32* %24
store i32 1, i32* %17
%1832 = load i64, i64* %11
%1833 = load i64, i64* %10
%1834 = icmp ne i64 %1832, %1833
br i1 %1834, label %1835, label %1836
1835: ; preds = %1821
br label %1935
1836: ; preds = %1821
br label %1837
1837: ; preds = %1916, %1885, %1836
%1838 = load double*, double** %39
%1839 = load i32, i32* %30
%1840 = sext i32 %1839 to i64
%1841 = getelementptr inbounds double, double* %1838, i64 %1840
%1842 = load double, double* %1841
store double %1842, double* %53
%1843 = load double*, double** %39
%1844 = load i32, i32* %24
%1845 = sext i32 %1844 to i64
%1846 = getelementptr inbounds double, double* %1843, i64 %1845
%1847 = load double, double* %1846
%1848 = load double*, double** %39
%1849 = load i32, i32* %30
%1850 = sext i32 %1849 to i64
%1851 = getelementptr inbounds double, double* %1848, i64 %1850
store double %1847, double* %1851
%1852 = load double, double* %53
%1853 = load double*, double** %39
%1854 = load i32, i32* %24
%1855 = sext i32 %1854 to i64
%1856 = getelementptr inbounds double, double* %1853, i64 %1855
store double %1852, double* %1856
%1857 = load double*, double** %40
%1858 = load i32, i32* %30
%1859 = sext i32 %1858 to i64
%1860 = getelementptr inbounds double, double* %1857, i64 %1859
%1861 = load double, double* %1860
store double %1861, double* %55
%1862 = load double*, double** %40
%1863 = load i32, i32* %24
%1864 = sext i32 %1863 to i64
%1865 = getelementptr inbounds double, double* %1862, i64 %1864
%1866 = load double, double* %1865
%1867 = load double*, double** %40
%1868 = load i32, i32* %30
%1869 = sext i32 %1868 to i64
%1870 = getelementptr inbounds double, double* %1867, i64 %1869
store double %1866, double* %1870
%1871 = load double, double* %55
%1872 = load double*, double** %40
%1873 = load i32, i32* %24
%1874 = sext i32 %1873 to i64
%1875 = getelementptr inbounds double, double* %1872, i64 %1874
store double %1871, double* %1875
%1876 = load i32, i32* %35
%1877 = load i32, i32* %30
%1878 = add nsw i32 %1877, %1876
store i32 %1878, i32* %30
%1879 = load i32, i32* %20
%1880 = load i32, i32* %24
%1881 = add nsw i32 %1880, %1879
store i32 %1881, i32* %24
%1882 = load i32, i32* %24
%1883 = load i32, i32* %32
%1884 = icmp slt i32 %1882, %1883
br i1 %1884, label %1885, label %1886
1885: ; preds = %1837
br label %1837
1886: ; preds = %1837
br label %1887
1887: ; preds = %1932, %1910, %1886
%1888 = load i32*, i32** %37
%1889 = load i32, i32* %17
%1890 = sext i32 %1889 to i64
%1891 = getelementptr inbounds i32, i32* %1888, i64 %1890
%1892 = load i32, i32* %1891
%1893 = load i32, i32* %24
%1894 = sub nsw i32 %1893, %1892
store i32 %1894, i32* %24
%1895 = load i32, i32* %17
%1896 = add nsw i32 %1895, 1
store i32 %1896, i32* %17
%1897 = load i32, i32* %17
%1898 = sext i32 %1897 to i64
%1899 = getelementptr inbounds [209 x i32], [209 x i32]* %36, i64 0, i64 %1898
%1900 = load i32, i32* %1899
%1901 = load i32, i32* %24
%1902 = add nsw i32 %1901, %1900
store i32 %1902, i32* %24
%1903 = load i32, i32* %24
%1904 = load i32*, i32** %37
%1905 = load i32, i32* %17
%1906 = sext i32 %1905 to i64
%1907 = getelementptr inbounds i32, i32* %1904, i64 %1906
%1908 = load i32, i32* %1907
%1909 = icmp sgt i32 %1903, %1908
br i1 %1909, label %1910, label %1911
1910: ; preds = %1887
br label %1887
1911: ; preds = %1887
store i32 1, i32* %17
br label %1912
1912: ; preds = %1927, %1911
%1913 = load i32, i32* %30
%1914 = load i32, i32* %24
%1915 = icmp slt i32 %1913, %1914
br i1 %1915, label %1916, label %1917
1916: ; preds = %1912
br label %1837
1917: ; preds = %1912
%1918 = load i32, i32* %35
%1919 = load i32, i32* %30
%1920 = add nsw i32 %1919, %1918
store i32 %1920, i32* %30
%1921 = load i32, i32* %20
%1922 = load i32, i32* %24
%1923 = add nsw i32 %1922, %1921
store i32 %1923, i32* %24
%1924 = load i32, i32* %24
%1925 = load i32, i32* %32
%1926 = icmp slt i32 %1924, %1925
br i1 %1926, label %1927, label %1928
1927: ; preds = %1917
br label %1912
1928: ; preds = %1917
%1929 = load i32, i32* %30
%1930 = load i32, i32* %32
%1931 = icmp slt i32 %1929, %1930
br i1 %1931, label %1932, label %1933
1932: ; preds = %1928
br label %1887
1933: ; preds = %1928
%1934 = load i32, i32* %25
store i32 %1934, i32* %27
br label %2067
1935: ; preds = %2048, %2017, %2002, %1835
%1936 = load i32, i32* %30
%1937 = load i32, i32* %27
%1938 = add nsw i32 %1936, %1937
store i32 %1938, i32* %18
br label %1939
1939: ; preds = %1984, %1935
%1940 = load double*, double** %39
%1941 = load i32, i32* %30
%1942 = sext i32 %1941 to i64
%1943 = getelementptr inbounds double, double* %1940, i64 %1942
%1944 = load double, double* %1943
store double %1944, double* %53
%1945 = load double*, double** %39
%1946 = load i32, i32* %24
%1947 = sext i32 %1946 to i64
%1948 = getelementptr inbounds double, double* %1945, i64 %1947
%1949 = load double, double* %1948
%1950 = load double*, double** %39
%1951 = load i32, i32* %30
%1952 = sext i32 %1951 to i64
%1953 = getelementptr inbounds double, double* %1950, i64 %1952
store double %1949, double* %1953
%1954 = load double, double* %53
%1955 = load double*, double** %39
%1956 = load i32, i32* %24
%1957 = sext i32 %1956 to i64
%1958 = getelementptr inbounds double, double* %1955, i64 %1957
store double %1954, double* %1958
%1959 = load double*, double** %40
%1960 = load i32, i32* %30
%1961 = sext i32 %1960 to i64
%1962 = getelementptr inbounds double, double* %1959, i64 %1961
%1963 = load double, double* %1962
store double %1963, double* %55
%1964 = load double*, double** %40
%1965 = load i32, i32* %24
%1966 = sext i32 %1965 to i64
%1967 = getelementptr inbounds double, double* %1964, i64 %1966
%1968 = load double, double* %1967
%1969 = load double*, double** %40
%1970 = load i32, i32* %30
%1971 = sext i32 %1970 to i64
%1972 = getelementptr inbounds double, double* %1969, i64 %1971
store double %1968, double* %1972
%1973 = load double, double* %55
%1974 = load double*, double** %40
%1975 = load i32, i32* %24
%1976 = sext i32 %1975 to i64
%1977 = getelementptr inbounds double, double* %1974, i64 %1976
store double %1973, double* %1977
%1978 = load i32, i32* %35
%1979 = load i32, i32* %30
%1980 = add nsw i32 %1979, %1978
store i32 %1980, i32* %30
%1981 = load i32, i32* %35
%1982 = load i32, i32* %24
%1983 = add nsw i32 %1982, %1981
store i32 %1983, i32* %24
br label %1984
1984: ; preds = %1939
%1985 = load i32, i32* %30
%1986 = load i32, i32* %18
%1987 = icmp slt i32 %1985, %1986
br i1 %1987, label %1939, label %1988
1988: ; preds = %1984
%1989 = load i32, i32* %32
%1990 = load i32, i32* %27
%1991 = sub nsw i32 %1989, %1990
%1992 = load i32, i32* %30
%1993 = add nsw i32 %1992, %1991
store i32 %1993, i32* %30
%1994 = load i32, i32* %32
%1995 = load i32, i32* %27
%1996 = sub nsw i32 %1994, %1995
%1997 = load i32, i32* %24
%1998 = add nsw i32 %1997, %1996
store i32 %1998, i32* %24
%1999 = load i32, i32* %30
%2000 = load i32, i32* %34
%2001 = icmp slt i32 %1999, %2000
br i1 %2001, label %2002, label %2003
2002: ; preds = %1988
br label %1935
2003: ; preds = %1988
%2004 = load i32, i32* %20
%2005 = load i32, i32* %34
%2006 = sub nsw i32 %2004, %2005
%2007 = load i32, i32* %24
%2008 = add nsw i32 %2007, %2006
store i32 %2008, i32* %24
%2009 = load i32, i32* %27
%2010 = load i32, i32* %34
%2011 = sub nsw i32 %2009, %2010
%2012 = load i32, i32* %30
%2013 = add nsw i32 %2012, %2011
store i32 %2013, i32* %30
%2014 = load i32, i32* %24
%2015 = load i32, i32* %32
%2016 = icmp slt i32 %2014, %2015
br i1 %2016, label %2017, label %2018
2017: ; preds = %2003
br label %1935
2018: ; preds = %2003
br label %2019
2019: ; preds = %2064, %2042, %2018
%2020 = load i32*, i32** %37
%2021 = load i32, i32* %17
%2022 = sext i32 %2021 to i64
%2023 = getelementptr inbounds i32, i32* %2020, i64 %2022
%2024 = load i32, i32* %2023
%2025 = load i32, i32* %24
%2026 = sub nsw i32 %2025, %2024
store i32 %2026, i32* %24
%2027 = load i32, i32* %17
%2028 = add nsw i32 %2027, 1
store i32 %2028, i32* %17
%2029 = load i32, i32* %17
%2030 = sext i32 %2029 to i64
%2031 = getelementptr inbounds [209 x i32], [209 x i32]* %36, i64 0, i64 %2030
%2032 = load i32, i32* %2031
%2033 = load i32, i32* %24
%2034 = add nsw i32 %2033, %2032
store i32 %2034, i32* %24
%2035 = load i32, i32* %24
%2036 = load i32*, i32** %37
%2037 = load i32, i32* %17
%2038 = sext i32 %2037 to i64
%2039 = getelementptr inbounds i32, i32* %2036, i64 %2038
%2040 = load i32, i32* %2039
%2041 = icmp sgt i32 %2035, %2040
br i1 %2041, label %2042, label %2043
2042: ; preds = %2019
br label %2019
2043: ; preds = %2019
store i32 1, i32* %17
br label %2044
2044: ; preds = %2056, %2043
%2045 = load i32, i32* %30
%2046 = load i32, i32* %24
%2047 = icmp slt i32 %2045, %2046
br i1 %2047, label %2048, label %2049
2048: ; preds = %2044
br label %1935
2049: ; preds = %2044
%2050 = load i32, i32* %27
%2051 = load i32, i32* %30
%2052 = add nsw i32 %2051, %2050
store i32 %2052, i32* %30
%2053 = load i32, i32* %20
%2054 = load i32, i32* %24
%2055 = add nsw i32 %2054, %2053
store i32 %2055, i32* %24
br label %2056
2056: ; preds = %2049
%2057 = load i32, i32* %24
%2058 = load i32, i32* %32
%2059 = icmp slt i32 %2057, %2058
br i1 %2059, label %2044, label %2060
2060: ; preds = %2056
%2061 = load i32, i32* %30
%2062 = load i32, i32* %32
%2063 = icmp slt i32 %2061, %2062
br i1 %2063, label %2064, label %2065
2064: ; preds = %2060
br label %2019
2065: ; preds = %2060
%2066 = load i32, i32* %25
store i32 %2066, i32* %27
br label %2067
2067: ; preds = %2065, %1933, %1768
%2068 = load i32, i32* %33
%2069 = shl i32 %2068, 1
%2070 = add nsw i32 %2069, 1
%2071 = load i32, i32* %19
%2072 = icmp sge i32 %2070, %2071
br i1 %2072, label %2073, label %2074
2073: ; preds = %2067
br label %2391
2074: ; preds = %2067
%2075 = load i32, i32* %33
%2076 = sext i32 %2075 to i64
%2077 = getelementptr inbounds [209 x i32], [209 x i32]* %36, i64 0, i64 %2076
%2078 = load i32, i32* %2077
store i32 %2078, i32* %22
%2079 = load i32, i32* %19
%2080 = load i32, i32* %33
%2081 = sub nsw i32 %2079, %2080
store i32 %2081, i32* %17
%2082 = load i32, i32* %17
%2083 = sext i32 %2082 to i64
%2084 = getelementptr inbounds [13 x i32], [13 x i32]* %14, i64 0, i64 %2083
store i32 1, i32* %2084
br label %2085
2085: ; preds = %2098, %2074
%2086 = load i32, i32* %17
%2087 = sext i32 %2086 to i64
%2088 = getelementptr inbounds [13 x i32], [13 x i32]* %14, i64 0, i64 %2087
%2089 = load i32, i32* %2088
%2090 = load i32*, i32** %15
%2091 = load i32, i32* %17
%2092 = sext i32 %2091 to i64
%2093 = getelementptr inbounds i32, i32* %2090, i64 %2092
%2094 = load i32, i32* %2093
%2095 = mul nsw i32 %2094, %2089
store i32 %2095, i32* %2093
%2096 = load i32, i32* %17
%2097 = add nsw i32 %2096, -1
store i32 %2097, i32* %17
br label %2098
2098: ; preds = %2085
%2099 = load i32, i32* %17
%2100 = load i32, i32* %33
%2101 = icmp ne i32 %2099, %2100
br i1 %2101, label %2085, label %2102
2102: ; preds = %2098
%2103 = load i32, i32* %33
%2104 = add nsw i32 %2103, 1
store i32 %2104, i32* %33
%2105 = load i32*, i32** %15
%2106 = load i32, i32* %33
%2107 = sext i32 %2106 to i64
%2108 = getelementptr inbounds i32, i32* %2105, i64 %2107
%2109 = load i32, i32* %2108
%2110 = sub nsw i32 %2109, 1
store i32 %2110, i32* %31
%2111 = load i32, i32* %31
%2112 = icmp sgt i32 %2111, 209
br i1 %2112, label %2113, label %2114
2113: ; preds = %2102
store i32 1, i32* %7
br label %2418
2114: ; preds = %2102
store i32 0, i32* %29
store i32 0, i32* %17
br label %2141
2115: ; preds = %2134
%2116 = load i32, i32* %24
%2117 = load i32, i32* %29
%2118 = sub nsw i32 %2117, %2116
store i32 %2118, i32* %29
%2119 = load i32, i32* %30
store i32 %2119, i32* %24
%2120 = load i32, i32* %18
%2121 = add nsw i32 %2120, 1
store i32 %2121, i32* %18
%2122 = load i32*, i32** %15
%2123 = load i32, i32* %18
%2124 = sext i32 %2123 to i64
%2125 = getelementptr inbounds i32, i32* %2122, i64 %2124
%2126 = load i32, i32* %2125
store i32 %2126, i32* %30
br label %2127
2127: ; preds = %2159, %2115
%2128 = load i32, i32* %30
%2129 = load i32, i32* %29
%2130 = add nsw i32 %2129, %2128
store i32 %2130, i32* %29
%2131 = load i32, i32* %29
%2132 = load i32, i32* %24
%2133 = icmp sge i32 %2131, %2132
br i1 %2133, label %2134, label %2135
2134: ; preds = %2127
br label %2115
2135: ; preds = %2127
%2136 = load i32, i32* %29
%2137 = load i32*, i32** %37
%2138 = load i32, i32* %17
%2139 = sext i32 %2138 to i64
%2140 = getelementptr inbounds i32, i32* %2137, i64 %2139
store i32 %2136, i32* %2140
br label %2141
2141: ; preds = %2135, %2114
%2142 = load i32*, i32** %15
%2143 = load i32, i32* %33
%2144 = sext i32 %2143 to i64
%2145 = getelementptr inbounds i32, i32* %2142, i64 %2144
%2146 = load i32, i32* %2145
store i32 %2146, i32* %24
%2147 = load i32, i32* %33
%2148 = add nsw i32 %2147, 1
store i32 %2148, i32* %18
%2149 = load i32*, i32** %15
%2150 = load i32, i32* %18
%2151 = sext i32 %2150 to i64
%2152 = getelementptr inbounds i32, i32* %2149, i64 %2151
%2153 = load i32, i32* %2152
store i32 %2153, i32* %30
%2154 = load i32, i32* %17
%2155 = add nsw i32 %2154, 1
store i32 %2155, i32* %17
%2156 = load i32, i32* %17
%2157 = load i32, i32* %31
%2158 = icmp sle i32 %2156, %2157
br i1 %2158, label %2159, label %2160
2159: ; preds = %2141
br label %2127
2160: ; preds = %2141
store i32 0, i32* %17
br label %2180
2161: ; preds = %2195, %2177
%2162 = load i32, i32* %30
store i32 %2162, i32* %18
%2163 = load i32*, i32** %37
%2164 = load i32, i32* %18
%2165 = sext i32 %2164 to i64
%2166 = getelementptr inbounds i32, i32* %2163, i64 %2165
%2167 = load i32, i32* %2166
store i32 %2167, i32* %30
%2168 = load i32, i32* %30
%2169 = sub nsw i32 0, %2168
%2170 = load i32*, i32** %37
%2171 = load i32, i32* %18
%2172 = sext i32 %2171 to i64
%2173 = getelementptr inbounds i32, i32* %2170, i64 %2172
store i32 %2169, i32* %2173
%2174 = load i32, i32* %30
%2175 = load i32, i32* %17
%2176 = icmp ne i32 %2174, %2175
br i1 %2176, label %2177, label %2178
2177: ; preds = %2161
br label %2161
2178: ; preds = %2161
%2179 = load i32, i32* %30
store i32 %2179, i32* %25
br label %2180
2180: ; preds = %2206, %2190, %2178, %2160
%2181 = load i32, i32* %17
%2182 = add nsw i32 %2181, 1
store i32 %2182, i32* %17
%2183 = load i32*, i32** %37
%2184 = load i32, i32* %17
%2185 = sext i32 %2184 to i64
%2186 = getelementptr inbounds i32, i32* %2183, i64 %2185
%2187 = load i32, i32* %2186
store i32 %2187, i32* %30
%2188 = load i32, i32* %30
%2189 = icmp slt i32 %2188, 0
br i1 %2189, label %2190, label %2191
2190: ; preds = %2180
br label %2180
2191: ; preds = %2180
%2192 = load i32, i32* %30
%2193 = load i32, i32* %17
%2194 = icmp ne i32 %2192, %2193
br i1 %2194, label %2195, label %2196
2195: ; preds = %2191
br label %2161
2196: ; preds = %2191
%2197 = load i32, i32* %17
%2198 = sub nsw i32 0, %2197
%2199 = load i32*, i32** %37
%2200 = load i32, i32* %17
%2201 = sext i32 %2200 to i64
%2202 = getelementptr inbounds i32, i32* %2199, i64 %2201
store i32 %2198, i32* %2202
%2203 = load i32, i32* %17
%2204 = load i32, i32* %31
%2205 = icmp ne i32 %2203, %2204
br i1 %2205, label %2206, label %2207
2206: ; preds = %2196
br label %2180
2207: ; preds = %2196
%2208 = load i32, i32* %35
%2209 = load i32, i32* %21
%2210 = mul nsw i32 %2209, %2208
store i32 %2210, i32* %21
br label %2376
2211: ; preds = %2389, %2374, %2220
%2212 = load i32, i32* %17
%2213 = add nsw i32 %2212, -1
store i32 %2213, i32* %17
%2214 = load i32*, i32** %37
%2215 = load i32, i32* %17
%2216 = sext i32 %2215 to i64
%2217 = getelementptr inbounds i32, i32* %2214, i64 %2216
%2218 = load i32, i32* %2217
%2219 = icmp slt i32 %2218, 0
br i1 %2219, label %2220, label %2221
2220: ; preds = %2211
br label %2211
2221: ; preds = %2211
%2222 = load i32, i32* %27
store i32 %2222, i32* %29
br label %2223
2223: ; preds = %2370, %2221
%2224 = load i32, i32* %29
store i32 %2224, i32* %20
%2225 = load i32, i32* %29
%2226 = load i32, i32* %21
%2227 = icmp sgt i32 %2225, %2226
br i1 %2227, label %2228, label %2230
2228: ; preds = %2223
%2229 = load i32, i32* %21
store i32 %2229, i32* %20
br label %2230
2230: ; preds = %2228, %2223
%2231 = load i32, i32* %20
%2232 = load i32, i32* %29
%2233 = sub nsw i32 %2232, %2231
store i32 %2233, i32* %29
%2234 = load i32*, i32** %37
%2235 = load i32, i32* %17
%2236 = sext i32 %2235 to i64
%2237 = getelementptr inbounds i32, i32* %2234, i64 %2236
%2238 = load i32, i32* %2237
store i32 %2238, i32* %18
%2239 = load i32, i32* %27
%2240 = load i32, i32* %18
%2241 = mul nsw i32 %2239, %2240
%2242 = bitcast %union.anon* %16 to i32*
%2243 = load i32, i32* %2242
%2244 = add nsw i32 %2241, %2243
%2245 = load i32, i32* %29
%2246 = add nsw i32 %2244, %2245
store i32 %2246, i32* %30
%2247 = load i32, i32* %30
%2248 = load i32, i32* %20
%2249 = add nsw i32 %2247, %2248
store i32 %2249, i32* %23
store i32 0, i32* %24
br label %2250
2250: ; preds = %2274, %2230
%2251 = load i32, i32* %24
%2252 = add nsw i32 %2251, 1
store i32 %2252, i32* %24
%2253 = load double*, double** %39
%2254 = load i32, i32* %23
%2255 = sext i32 %2254 to i64
%2256 = getelementptr inbounds double, double* %2253, i64 %2255
%2257 = load double, double* %2256
%2258 = load double*, double** %60
%2259 = load i32, i32* %24
%2260 = sext i32 %2259 to i64
%2261 = getelementptr inbounds double, double* %2258, i64 %2260
store double %2257, double* %2261
%2262 = load double*, double** %40
%2263 = load i32, i32* %23
%2264 = sext i32 %2263 to i64
%2265 = getelementptr inbounds double, double* %2262, i64 %2264
%2266 = load double, double* %2265
%2267 = load double*, double** %61
%2268 = load i32, i32* %24
%2269 = sext i32 %2268 to i64
%2270 = getelementptr inbounds double, double* %2267, i64 %2269
store double %2266, double* %2270
%2271 = load i32, i32* %35
%2272 = load i32, i32* %23
%2273 = sub nsw i32 %2272, %2271
store i32 %2273, i32* %23
br label %2274
2274: ; preds = %2250
%2275 = load i32, i32* %23
%2276 = load i32, i32* %30
%2277 = icmp ne i32 %2275, %2276
br i1 %2277, label %2250, label %2278
2278: ; preds = %2274
br label %2279
2279: ; preds = %2331, %2278
%2280 = load i32, i32* %30
%2281 = load i32, i32* %20
%2282 = add nsw i32 %2280, %2281
store i32 %2282, i32* %23
%2283 = load i32, i32* %23
%2284 = load i32, i32* %27
%2285 = load i32, i32* %18
%2286 = load i32*, i32** %37
%2287 = load i32, i32* %18
%2288 = sext i32 %2287 to i64
%2289 = getelementptr inbounds i32, i32* %2286, i64 %2288
%2290 = load i32, i32* %2289
%2291 = add nsw i32 %2285, %2290
%2292 = mul nsw i32 %2284, %2291
%2293 = sub nsw i32 %2283, %2292
store i32 %2293, i32* %24
%2294 = load i32*, i32** %37
%2295 = load i32, i32* %18
%2296 = sext i32 %2295 to i64
%2297 = getelementptr inbounds i32, i32* %2294, i64 %2296
%2298 = load i32, i32* %2297
%2299 = sub nsw i32 0, %2298
store i32 %2299, i32* %18
br label %2300
2300: ; preds = %2325, %2279
%2301 = load double*, double** %39
%2302 = load i32, i32* %24
%2303 = sext i32 %2302 to i64
%2304 = getelementptr inbounds double, double* %2301, i64 %2303
%2305 = load double, double* %2304
%2306 = load double*, double** %39
%2307 = load i32, i32* %23
%2308 = sext i32 %2307 to i64
%2309 = getelementptr inbounds double, double* %2306, i64 %2308
store double %2305, double* %2309
%2310 = load double*, double** %40
%2311 = load i32, i32* %24
%2312 = sext i32 %2311 to i64
%2313 = getelementptr inbounds double, double* %2310, i64 %2312
%2314 = load double, double* %2313
%2315 = load double*, double** %40
%2316 = load i32, i32* %23
%2317 = sext i32 %2316 to i64
%2318 = getelementptr inbounds double, double* %2315, i64 %2317
store double %2314, double* %2318
%2319 = load i32, i32* %35
%2320 = load i32, i32* %23
%2321 = sub nsw i32 %2320, %2319
store i32 %2321, i32* %23
%2322 = load i32, i32* %35
%2323 = load i32, i32* %24
%2324 = sub nsw i32 %2323, %2322
store i32 %2324, i32* %24
br label %2325
2325: ; preds = %2300
%2326 = load i32, i32* %23
%2327 = load i32, i32* %30
%2328 = icmp ne i32 %2326, %2327
br i1 %2328, label %2300, label %2329
2329: ; preds = %2325
%2330 = load i32, i32* %24
store i32 %2330, i32* %30
br label %2331
2331: ; preds = %2329
%2332 = load i32, i32* %18
%2333 = load i32, i32* %17
%2334 = icmp ne i32 %2332, %2333
br i1 %2334, label %2279, label %2335
2335: ; preds = %2331
%2336 = load i32, i32* %30
%2337 = load i32, i32* %20
%2338 = add nsw i32 %2336, %2337
store i32 %2338, i32* %23
store i32 0, i32* %24
br label %2339
2339: ; preds = %2363, %2335
%2340 = load i32, i32* %24
%2341 = add nsw i32 %2340, 1
store i32 %2341, i32* %24
%2342 = load double*, double** %60
%2343 = load i32, i32* %24
%2344 = sext i32 %2343 to i64
%2345 = getelementptr inbounds double, double* %2342, i64 %2344
%2346 = load double, double* %2345
%2347 = load double*, double** %39
%2348 = load i32, i32* %23
%2349 = sext i32 %2348 to i64
%2350 = getelementptr inbounds double, double* %2347, i64 %2349
store double %2346, double* %2350
%2351 = load double*, double** %61
%2352 = load i32, i32* %24
%2353 = sext i32 %2352 to i64
%2354 = getelementptr inbounds double, double* %2351, i64 %2353
%2355 = load double, double* %2354
%2356 = load double*, double** %40
%2357 = load i32, i32* %23
%2358 = sext i32 %2357 to i64
%2359 = getelementptr inbounds double, double* %2356, i64 %2358
store double %2355, double* %2359
%2360 = load i32, i32* %35
%2361 = load i32, i32* %23
%2362 = sub nsw i32 %2361, %2360
store i32 %2362, i32* %23
br label %2363
2363: ; preds = %2339
%2364 = load i32, i32* %23
%2365 = load i32, i32* %30
%2366 = icmp ne i32 %2364, %2365
br i1 %2366, label %2339, label %2367
2367: ; preds = %2363
%2368 = load i32, i32* %29
%2369 = icmp ne i32 %2368, 0
br i1 %2369, label %2370, label %2371
2370: ; preds = %2367
br label %2223
2371: ; preds = %2367
%2372 = load i32, i32* %17
%2373 = icmp ne i32 %2372, 1
br i1 %2373, label %2374, label %2375
2374: ; preds = %2371
br label %2211
2375: ; preds = %2371
br label %2376
2376: ; preds = %2375, %2207
%2377 = load i32, i32* %25
%2378 = add nsw i32 %2377, 1
store i32 %2378, i32* %17
%2379 = load i32, i32* %22
%2380 = load i32, i32* %34
%2381 = sub nsw i32 %2380, %2379
store i32 %2381, i32* %34
%2382 = load i32, i32* %34
%2383 = load i32, i32* %35
%2384 = sub nsw i32 %2382, %2383
%2385 = add nsw i32 %2384, 1
%2386 = bitcast %union.anon* %16 to i32*
store i32 %2385, i32* %2386
%2387 = load i32, i32* %34
%2388 = icmp sge i32 %2387, 0
br i1 %2388, label %2389, label %2390
2389: ; preds = %2376
br label %2211
2390: ; preds = %2376
br label %2391
2391: ; preds = %2390, %2073
%2392 = load i32, i32* %13
%2393 = icmp slt i32 %2392, 0
br i1 %2393, label %2394, label %2417
2394: ; preds = %2391
%2395 = load i64, i64* %10
%2396 = sub nsw i64 0, %2395
%2397 = sub nsw i64 %2396, 1
%2398 = trunc i64 %2397 to i32
store i32 %2398, i32* %17
br label %2399
2399: ; preds = %2403, %2394
%2400 = load i32, i32* %17
%2401 = add nsw i32 %2400, 1
store i32 %2401, i32* %17
%2402 = icmp slt i32 %2401, 0
br i1 %2402, label %2403, label %2416
2403: ; preds = %2399
%2404 = load i64, i64* %11
%2405 = sitofp i64 %2404 to double
%2406 = load double*, double** %39
%2407 = getelementptr inbounds double, double* %2406, i32 1
store double* %2407, double** %39
%2408 = load double, double* %2407
%2409 = fdiv double %2408, %2405
store double %2409, double* %2407
%2410 = load i64, i64* %11
%2411 = sitofp i64 %2410 to double
%2412 = load double*, double** %40
%2413 = getelementptr inbounds double, double* %2412, i32 1
store double* %2413, double** %40
%2414 = load double, double* %2413
%2415 = fdiv double %2414, %2411
store double %2415, double* %2413
br label %2399
2416: ; preds = %2399
br label %2417
2417: ; preds = %2416, %2391
store i32 0, i32* %7
br label %2418
2418: ; preds = %2417, %2113, %1290, %77
%2419 = load i32, i32* %7
ret i32 %2419
}

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