#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int DBL_EPSILON;
double DBL_MANT_DIG;
int /*<<< orphan*/ DBL_MAX_EXP;
int /*<<< orphan*/ DBL_MIN_EXP;
double FP_NAN;
double HUGE_VAL;
double M_PI;
double cos(double);
int exp(double);
double fabs(double);
double fmax(double, double);
double fmin(double, double);
int imin2(int /*<<< orphan*/, int /*<<< orphan*/);
double log(double);
int pow(double, double);
double sin(double);
void dpsifn(double x, int n, int kode, int m, double *ans, int *nz, int *ierr) {
  const static double bvalues[] = {
      1.00000000000000000e+00, -5.00000000000000000e-01,
      1.66666666666666667e-01, -3.33333333333333333e-02,
      2.38095238095238095e-02, -3.33333333333333333e-02,
      7.57575757575757576e-02, -2.53113553113553114e-01,
      1.16666666666666667e+00, -7.09215686274509804e+00,
      5.49711779448621554e+01, -5.29124242424242424e+02,
      6.19212318840579710e+03, -8.65802531135531136e+04,
      1.42551716666666667e+06, -2.72982310678160920e+07,
      6.01580873900642368e+08, -1.51163157670921569e+10,
      4.29614643061166667e+11, -1.37116552050883328e+13,
      4.88332318973593167e+14, -1.92965793419400681e+16};
  int i, j, k, mm, mx, nn, np, nx, fn;
  double arg, den, elim, eps, fln, fx, rln, rxsq, r1m4, r1m5, s, slope, t, ta,
      tk, tol, tols, tss, tst, tt, t1, t2, wdtol, xdmln, xdmy, xinc,
      xln = 0.0, xm, xmin, xq, yint;
  double trm[23], trmr[(100) + 1];
  *ierr = 0;
  if (n < 0 || kode < 1 || kode > 2 || m < 1) {
    *ierr = 1;
    return;
  }
  if (x <= 0.) {
    if (x == (long)x) {
      for (j = 0; j < m; j++)
        ans[j] = ((j + n) % 2) ? HUGE_VAL : FP_NAN;
      return;
    }
    dpsifn(1. - x, n, 1, m, ans, nz, ierr);
    if (m > 1 || n > 3) {
      *ierr = 4;
      return;
    }
    x *= M_PI;
    if (n == 0)
      tt = cos(x) / sin(x);
    else if (n == 1)
      tt = -1 / pow(sin(x), 2);
    else if (n == 2)
      tt = 2 * cos(x) / pow(sin(x), 3);
    else if (n == 3)
      tt = -2 * (2 * pow(cos(x), 2) + 1) / pow(sin(x), 4);
    else
      tt = FP_NAN;
    s = (n % 2) ? -1. : 1.;
    t1 = t2 = s = 1.;
    for (k = 0, j = k - n; j < m; k++, j++, s = -s) {
      t1 *= M_PI;
      if (k >= 2)
        t2 *= k;
      if (j >= 0)
        ans[j] = s * (ans[j] + t1 / t2 * tt);
    }
    if (n == 0 && kode == 2)
      ans[0] += xln;
    return;
  }
  *nz = 0;
  xln = log(x);
  if (kode == 1 && m == 1) {
    double lrg = 1 / (2. * DBL_EPSILON);
    if (n == 0 && x * xln > lrg) {
      ans[0] = -xln;
      return;
    } else if (n >= 1 && x > n * lrg) {
      ans[0] = exp(-n * xln) / n;
      return;
    }
  }
  mm = m;
  nx = imin2(-DBL_MIN_EXP, DBL_MAX_EXP);
  r1m5 = 0.301029995663981195213738894724;
  r1m4 = DBL_EPSILON * 0.5;
  wdtol = fmax(r1m4, 0.5e-18);
  elim = 2.302 * (nx * r1m5 - 3.0);
  for (;;) {
    nn = n + mm - 1;
    fn = nn;
    t = (fn + 1) * xln;
    if (fabs(t) > elim) {
      if (t <= 0.0) {
        *nz = 0;
        *ierr = 2;
        return;
      }
    } else {
      if (x < wdtol) {
        ans[0] = pow(x, -n - 1.0);
        if (mm != 1) {
          for (k = 1; k < mm; k++)
            ans[k] = ans[k - 1] / x;
        }
        if (n == 0 && kode == 2)
          ans[0] += xln;
        return;
      }
      rln = r1m5 * DBL_MANT_DIG;
      rln = fmin(rln, 18.06);
      fln = fmax(rln, 3.0) - 3.0;
      yint = 3.50 + 0.40 * fln;
      slope = 0.21 + fln * (0.0006038 * fln + 0.008677);
      xm = yint + slope * fn;
      mx = (int)xm + 1;
      xmin = mx;
      if (n != 0) {
        xm = -2.302 * rln - fmin(0.0, xln);
        arg = xm / n;
        arg = fmin(0.0, arg);
        eps = exp(arg);
        xm = 1.0 - eps;
        if (fabs(arg) < 1.0e-3)
          xm = -arg;
        fln = x * xm / eps;
        xm = xmin - x;
        if (xm > 7.0 && fln < 15.0)
          break;
      }
      xdmy = x;
      xdmln = xln;
      xinc = 0.0;
      if (x < xmin) {
        nx = (int)x;
        xinc = xmin - nx;
        xdmy = x + xinc;
        xdmln = log(xdmy);
      }
      t = fn * xdmln;
      t1 = xdmln + xdmln;
      t2 = t + xdmln;
      tk = fmax(fabs(t), fmax(fabs(t1), fabs(t2)));
      if (tk <= elim)
        goto L10;
    }
    nz++;
    mm--;
    ans[mm] = 0.;
    if (mm == 0)
      return;
  }
  nn = (int)fln + 1;
  np = n + 1;
  t1 = (n + 1) * xln;
  t = exp(-t1);
  s = t;
  den = x;
  for (i = 1; i <= nn; i++) {
    den += 1.;
    trm[i] = pow(den, (double)-np);
    s += trm[i];
  }
  ans[0] = s;
  if (n == 0 && kode == 2)
    ans[0] = s + xln;
  if (mm != 1) {
    tol = wdtol / 5.0;
    for (j = 1; j < mm; j++) {
      t /= x;
      s = t;
      tols = t * tol;
      den = x;
      for (i = 1; i <= nn; i++) {
        den += 1.;
        trm[i] /= den;
        s += trm[i];
        if (trm[i] < tols)
          break;
      }
      ans[j] = s;
    }
  }
  return;
L10:
  tss = exp(-t);
  tt = 0.5 / xdmy;
  t1 = tt;
  tst = wdtol * tt;
  if (nn != 0)
    t1 = tt + 1.0 / fn;
  rxsq = 1.0 / (xdmy * xdmy);
  ta = 0.5 * rxsq;
  t = (fn + 1) * ta;
  s = t * bvalues[2];
  if (fabs(s) >= tst) {
    tk = 2.0;
    for (k = 4; k <= 22; k++) {
      t = t * ((tk + fn + 1) / (tk + 1.0)) * ((tk + fn) / (tk + 2.0)) * rxsq;
      trm[k] = t * bvalues[k - 1];
      if (fabs(trm[k]) < tst)
        break;
      s += trm[k];
      tk += 2.;
    }
  }
  s = (s + t1) * tss;
  if (xinc != 0.0) {
    nx = (int)xinc;
    np = nn + 1;
    if (nx > (100)) {
      *nz = 0;
      *ierr = 3;
      return;
    } else {
      if (nn == 0)
        goto L20;
      xm = xinc - 1.0;
      fx = x + xm;
      for (i = 1; i <= nx; i++) {
        trmr[i] = pow(fx, (double)-np);
        s += trmr[i];
        xm -= 1.;
        fx = x + xm;
      }
    }
  }
  ans[mm - 1] = s;
  if (fn == 0)
    goto L30;
  for (j = 2; j <= mm; j++) {
    fn--;
    tss *= xdmy;
    t1 = tt;
    if (fn != 0)
      t1 = tt + 1.0 / fn;
    t = (fn + 1) * ta;
    s = t * bvalues[2];
    if (fabs(s) >= tst) {
      tk = 4 + fn;
      for (k = 4; k <= 22; k++) {
        trm[k] = trm[k] * (fn + 1) / tk;
        if (fabs(trm[k]) < tst)
          break;
        s += trm[k];
        tk += 2.;
      }
    }
    s = (s + t1) * tss;
    if (xinc != 0.0) {
      if (fn == 0)
        goto L20;
      xm = xinc - 1.0;
      fx = x + xm;
      for (i = 1; i <= nx; i++) {
        trmr[i] = trmr[i] * fx;
        s += trmr[i];
        xm -= 1.;
        fx = x + xm;
      }
    }
    ans[mm - j] = s;
    if (fn == 0)
      goto L30;
  }
  return;
L20:
  for (i = 1; i <= nx; i++)
    s += 1. / (x + (nx - i));
L30:
  if (kode != 2)
    ans[0] = s - xdmln;
  else if (xdmy != x) {
    xq = xdmy / x;
    ans[0] = s - log(xq);
  }
  return;
}


x86 assembly (clang, -O0):
<dpsifn>:
push   %rbp
mov    %rsp,%rbp
sub    $0x580,%rsp
movsd  %xmm0,-0x8(%rbp)
mov    %edi,-0xc(%rbp)
mov    %esi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
mov    -0x30(%rbp),%rax
movl   $0x0,(%rax)
cmpl   $0x0,-0xc(%rbp)
jl     11d2 <dpsifn+0x62>
cmpl   $0x1,-0x10(%rbp)
jl     11d2 <dpsifn+0x62>
cmpl   $0x2,-0x10(%rbp)
jg     11d2 <dpsifn+0x62>
cmpl   $0x1,-0x14(%rbp)
jge    11e1 <dpsifn+0x71>
mov    -0x30(%rbp),%rax
movl   $0x1,(%rax)
jmp    26de <dpsifn+0x156e>
xorps  %xmm0,%xmm0
ucomisd -0x8(%rbp),%xmm0
jb     15ec <dpsifn+0x47c>
movsd  -0x8(%rbp),%xmm0
cvttsd2si -0x8(%rbp),%rax
cvtsi2sd %rax,%xmm1
ucomisd %xmm1,%xmm0
jne    128c <dpsifn+0x11c>
jp     128c <dpsifn+0x11c>
movl   $0x0,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    1287 <dpsifn+0x117>
mov    -0x38(%rbp),%eax
add    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     1251 <dpsifn+0xe1>
mov    0x3d78(%rip),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x550(%rbp)
ff
jmp    1264 <dpsifn+0xf4>
mov    0x3d78(%rip),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x550(%rbp)
ff
movsd  -0x550(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1216 <dpsifn+0xa6>
jmp    26de <dpsifn+0x156e>
movsd  0x1d6c(%rip),%xmm0
subsd  -0x8(%rbp),%xmm0
mov    -0xc(%rbp),%edi
mov    -0x14(%rbp),%edx
mov    -0x20(%rbp),%rcx
mov    -0x28(%rbp),%r8
mov    -0x30(%rbp),%r9
mov    $0x1,%esi
call   1050 <dpsifn@plt>
cmpl   $0x1,-0x14(%rbp)
jg     12c9 <dpsifn+0x159>
cmpl   $0x3,-0xc(%rbp)
jle    12d8 <dpsifn+0x168>
mov    -0x30(%rbp),%rax
movl   $0x4,(%rax)
jmp    26de <dpsifn+0x156e>
mov    0x3d09(%rip),%rax
movsd  (%rax),%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
cmpl   $0x0,-0xc(%rbp)
jne    132f <dpsifn+0x1bf>
movsd  -0x8(%rbp),%xmm0
call   1060 <cos@plt>
movsd  %xmm0,-0x558(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
call   1030 <sin@plt>
movaps %xmm0,%xmm1
movsd  -0x558(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
jmp    1452 <dpsifn+0x2e2>
cmpl   $0x1,-0xc(%rbp)
jne    136b <dpsifn+0x1fb>
movsd  -0x8(%rbp),%xmm0
call   1030 <sin@plt>
movsd  0x1cbd(%rip),%xmm1
call   1080 <pow@plt>
mov    %eax,%ecx
mov    $0xffffffff,%eax
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
jmp    144d <dpsifn+0x2dd>
cmpl   $0x2,-0xc(%rbp)
jne    13ca <dpsifn+0x25a>
movsd  -0x8(%rbp),%xmm0
call   1060 <cos@plt>
movaps %xmm0,%xmm1
movsd  0x1c7e(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x560(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
call   1030 <sin@plt>
movsd  0x1cb8(%rip),%xmm1
call   1080 <pow@plt>
movsd  -0x560(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
jmp    1448 <dpsifn+0x2d8>
cmpl   $0x3,-0xc(%rbp)
jne    1430 <dpsifn+0x2c0>
movsd  -0x8(%rbp),%xmm0
call   1060 <cos@plt>
movsd  0x1c22(%rip),%xmm1
call   1080 <pow@plt>
shl    $0x1,%eax
add    $0x1,%eax
imul   $0xfffffffe,%eax,%eax
mov    %eax,-0x564(%rbp)
movsd  -0x8(%rbp),%xmm0
call   1030 <sin@plt>
movsd  0x1c89(%rip),%xmm1
call   1080 <pow@plt>
mov    %eax,%ecx
mov    -0x564(%rbp),%eax
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
jmp    1443 <dpsifn+0x2d3>
mov    0x3b99(%rip),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
jmp    1448 <dpsifn+0x2d8>
jmp    144d <dpsifn+0x2dd>
jmp    1452 <dpsifn+0x2e2>
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
movsd  0x1c3b(%rip),%xmm0
movsd  0x1b93(%rip),%xmm1
movsd  %xmm1,-0x578(%rbp)
ff
cmp    $0x0,%edx
movsd  %xmm0,-0x570(%rbp)
ff
jne    1496 <dpsifn+0x326>
movsd  -0x578(%rbp),%xmm0
ff
movsd  %xmm0,-0x570(%rbp)
ff
movsd  -0x570(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0x1b52(%rip),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0x1b42(%rip),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  0x1b32(%rip),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movl   $0x0,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
sub    -0xc(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    15bf <dpsifn+0x44f>
mov    0x3aef(%rip),%rax
movsd  (%rax),%xmm0
mulsd  -0x100(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
cmpl   $0x2,-0x3c(%rbp)
jl     152c <dpsifn+0x3bc>
cvtsi2sdl -0x3c(%rbp),%xmm0
mulsd  -0x108(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
cmpl   $0x0,-0x38(%rbp)
jl     157c <dpsifn+0x40c>
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  (%rax,%rcx,8),%xmm2
movsd  -0x100(%rbp),%xmm1
ff
divsd  -0x108(%rbp),%xmm1
ff
movsd  -0xf8(%rbp),%xmm3
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
jmp    1581 <dpsifn+0x411>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
movsd  -0xb0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    14e6 <dpsifn+0x376>
cmpl   $0x0,-0xc(%rbp)
jne    15e7 <dpsifn+0x477>
cmpl   $0x2,-0x10(%rbp)
jne    15e7 <dpsifn+0x477>
movsd  -0x130(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
jmp    26de <dpsifn+0x156e>
mov    -0x28(%rbp),%rax
movl   $0x0,(%rax)
movsd  -0x8(%rbp),%xmm0
call   1070 <log@plt>
movsd  %xmm0,-0x130(%rbp)
ff
cmpl   $0x1,-0x10(%rbp)
jne    16f3 <dpsifn+0x583>
cmpl   $0x1,-0x14(%rbp)
jne    16f3 <dpsifn+0x583>
mov    0x399d(%rip),%rax
cvtsi2sdl (%rax),%xmm0
movsd  0x19d9(%rip),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x19c5(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x548(%rbp)
ff
cmpl   $0x0,-0xc(%rbp)
jne    1698 <dpsifn+0x528>
movsd  -0x8(%rbp),%xmm0
mulsd  -0x130(%rbp),%xmm0
ff
ucomisd -0x548(%rbp),%xmm0
ff
jbe    1698 <dpsifn+0x528>
movsd  -0x130(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    26de <dpsifn+0x156e>
cmpl   $0x1,-0xc(%rbp)
jl     16e9 <dpsifn+0x579>
movsd  -0x8(%rbp),%xmm0
cvtsi2sdl -0xc(%rbp),%xmm1
mulsd  -0x548(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jbe    16e9 <dpsifn+0x579>
xor    %eax,%eax
sub    -0xc(%rbp),%eax
cvtsi2sd %eax,%xmm0
mulsd  -0x130(%rbp),%xmm0
ff
call   1040 <exp@plt>
cltd
idivl  -0xc(%rbp)
cvtsi2sd %eax,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    26de <dpsifn+0x156e>
jmp    16ee <dpsifn+0x57e>
jmp    16f3 <dpsifn+0x583>
mov    -0x14(%rbp),%eax
mov    %eax,-0x40(%rbp)
xor    %edi,%edi
mov    0x38de(%rip),%rax
sub    (%rax),%edi
mov    0x38cd(%rip),%rax
mov    (%rax),%esi
call   1090 <imin2@plt>
mov    %eax,-0x50(%rbp)
movsd  0x1913(%rip),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
mov    0x3894(%rip),%rax
cvtsi2sdl (%rax),%xmm0
movsd  0x18f0(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  0x18cc(%rip),%xmm1
maxsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
cvtsi2sdl -0x50(%rbp),%xmm1
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  %xmm0,%xmm1
movsd  0x189f(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0x188b(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    -0xc(%rbp),%eax
add    -0x40(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x48(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x54(%rbp)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
cvtsi2sd %eax,%xmm0
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movaps 0x18e7(%rip),%xmm1
pand   %xmm1,%xmm0
ucomisd -0x70(%rbp),%xmm0
jbe    1807 <dpsifn+0x697>
xorps  %xmm0,%xmm0
ucomisd -0xc0(%rbp),%xmm0
ff
jb     1802 <dpsifn+0x692>
mov    -0x28(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x30(%rbp),%rax
movl   $0x2,(%rax)
jmp    26de <dpsifn+0x156e>
jmp    1c7a <dpsifn+0xb0a>
movsd  -0x8(%rbp),%xmm1
movsd  -0x110(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    18ca <dpsifn+0x75a>
movsd  -0x8(%rbp),%xmm0
xor    %eax,%eax
sub    -0xc(%rbp),%eax
cvtsi2sd %eax,%xmm1
movsd  0x17cc(%rip),%xmm2
subsd  %xmm2,%xmm1
call   1080 <pow@plt>
cvtsi2sd %eax,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x1,-0x40(%rbp)
je     189d <dpsifn+0x72d>
movl   $0x1,-0x3c(%rbp)
mov    -0x3c(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    1898 <dpsifn+0x728>
mov    -0x20(%rbp),%rax
mov    -0x3c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  (%rax,%rcx,8),%xmm0
divsd  -0x8(%rbp),%xmm0
mov    -0x20(%rbp),%rax
movslq -0x3c(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    185a <dpsifn+0x6ea>
jmp    189d <dpsifn+0x72d>
cmpl   $0x0,-0xc(%rbp)
jne    18c5 <dpsifn+0x755>
cmpl   $0x2,-0x10(%rbp)
jne    18c5 <dpsifn+0x755>
movsd  -0x130(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
jmp    26de <dpsifn+0x156e>
movsd  -0xa8(%rbp),%xmm0
ff
mov    0x36ef(%rip),%rax
mulsd  (%rax),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  0x1773(%rip),%xmm1
minsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
movsd  0x174f(%rip),%xmm1
maxsd  %xmm1,%xmm0
movsd  0x1743(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  0x171d(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x1719(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm1
movsd  0x16e3(%rip),%xmm2
mulsd  %xmm2,%xmm1
movsd  0x16df(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  0x16bf(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x150(%rbp),%xmm1
ff
movsd  -0xb8(%rbp),%xmm0
ff
cvtsi2sdl -0x54(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
cvttsd2si -0x138(%rbp),%eax
ff
add    $0x1,%eax
mov    %eax,-0x44(%rbp)
cvtsi2sdl -0x44(%rbp),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
cmpl   $0x0,-0xc(%rbp)
je     1b0d <dpsifn+0x99d>
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x130(%rbp),%xmm1
ff
xorps  %xmm2,%xmm2
minsd  %xmm2,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  0x1673(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
cvtsi2sdl -0xc(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
xorps  %xmm1,%xmm1
minsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
call   1040 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0x15a9(%rip),%xmm0
subsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x60(%rbp),%xmm1
movaps 0x1640(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  0x15f4(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1aaa <dpsifn+0x93a>
movsd  -0x60(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
mulsd  -0x138(%rbp),%xmm0
ff
divsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x140(%rbp),%xmm0
ff
subsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  0x159a(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1b08 <dpsifn+0x998>
movsd  0x1590(%rip),%xmm0
ucomisd -0x80(%rbp),%xmm0
jbe    1b08 <dpsifn+0x998>
jmp    1cb3 <dpsifn+0xb43>
jmp    1b0d <dpsifn+0x99d>
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x8(%rbp),%xmm1
movsd  -0x140(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1b97 <dpsifn+0xa27>
cvttsd2si -0x8(%rbp),%eax
mov    %eax,-0x50(%rbp)
movsd  -0x140(%rbp),%xmm0
ff
cvtsi2sdl -0x50(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
addsd  -0x128(%rbp),%xmm0
ff
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x120(%rbp),%xmm0
ff
call   1070 <log@plt>
movsd  %xmm0,-0x118(%rbp)
ff
cvtsi2sdl -0x54(%rbp),%xmm0
mulsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x118(%rbp),%xmm0
ff
addsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0x118(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0xc0(%rbp),%xmm3
ff
movaps 0x14c5(%rip),%xmm0
pand   %xmm0,%xmm3
movsd  -0x100(%rbp),%xmm4
ff
movaps 0x14b2(%rip),%xmm0
pand   %xmm0,%xmm4
movsd  -0x108(%rbp),%xmm1
ff
movaps 0x149f(%rip),%xmm0
pand   %xmm0,%xmm1
movaps %xmm1,%xmm5
movaps %xmm4,%xmm2
cmpunordsd %xmm2,%xmm2
movaps %xmm2,%xmm0
pand   %xmm5,%xmm0
maxsd  %xmm4,%xmm1
pandn  %xmm1,%xmm2
por    %xmm0,%xmm2
movaps %xmm2,%xmm4
movaps %xmm3,%xmm0
cmpunordsd %xmm0,%xmm0
movaps %xmm0,%xmm1
pand   %xmm4,%xmm1
maxsd  %xmm3,%xmm2
pandn  %xmm2,%xmm0
por    %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm1
ff
movsd  -0x70(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     1c75 <dpsifn+0xb05>
jmp    1f24 <dpsifn+0xdb4>
jmp    1c7a <dpsifn+0xb0a>
mov    -0x28(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x28(%rbp)
mov    -0x40(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x40(%rbp)
mov    -0x20(%rbp),%rax
movslq -0x40(%rbp),%rcx
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax,%rcx,8)
cmpl   $0x0,-0x40(%rbp)
jne    1cae <dpsifn+0xb3e>
jmp    26de <dpsifn+0x156e>
jmp    178e <dpsifn+0x61e>
cvttsd2si -0x80(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
cvtsi2sd %eax,%xmm0
mulsd  -0x130(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x100(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x48(%rbp),%eax
jg     1d9f <dpsifn+0xc2f>
movsd  0x12ba(%rip),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
xor    %eax,%eax
sub    -0x4c(%rbp),%eax
cvtsi2sd %eax,%xmm1
call   1080 <pow@plt>
cvtsi2sd %eax,%xmm0
movslq -0x34(%rbp),%rax
movsd  %xmm0,-0x210(%rbp,%rax,8)
ff ff
movslq -0x34(%rbp),%rax
movsd  -0x210(%rbp,%rax,8),%xmm0
ff ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1d32 <dpsifn+0xbc2>
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x0,-0xc(%rbp)
jne    1ddb <dpsifn+0xc6b>
cmpl   $0x2,-0x10(%rbp)
jne    1ddb <dpsifn+0xc6b>
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x130(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
cmpl   $0x1,-0x40(%rbp)
je     1f1f <dpsifn+0xdaf>
movsd  -0x110(%rbp),%xmm0
ff
movsd  0x129b(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
movl   $0x1,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x40(%rbp),%eax
jge    1f1a <dpsifn+0xdaa>
movsd  -0x8(%rbp),%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x48(%rbp),%eax
jg     1ef7 <dpsifn+0xd87>
movsd  0x1186(%rip),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm1
movslq -0x34(%rbp),%rax
movsd  -0x210(%rbp,%rax,8),%xmm0
ff ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x210(%rbp,%rax,8)
ff ff
movslq -0x34(%rbp),%rax
movsd  -0x210(%rbp,%rax,8),%xmm0
ff ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movslq -0x34(%rbp),%rax
movsd  -0x210(%rbp,%rax,8),%xmm1
ff ff
movsd  -0xe0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1ee4 <dpsifn+0xd74>
jmp    1ef7 <dpsifn+0xd87>
jmp    1ee9 <dpsifn+0xd79>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1e66 <dpsifn+0xcf6>
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movslq -0x38(%rbp),%rcx
movsd  %xmm0,(%rax,%rcx,8)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    1e08 <dpsifn+0xc98>
jmp    1f1f <dpsifn+0xdaf>
jmp    26de <dpsifn+0x156e>
movsd  -0xc0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0x10cc(%rip),%xmm0
divsd  -0x120(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x110(%rbp),%xmm0
ff
mulsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
cmpl   $0x0,-0x48(%rbp)
je     1fc3 <dpsifn+0xe53>
movsd  -0xf8(%rbp),%xmm0
ff
cvtsi2sdl -0x54(%rbp),%xmm2
movsd  0x104d(%rip),%xmm1
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x120(%rbp),%xmm1
ff
mulsd  -0x120(%rbp),%xmm1
ff
movsd  0x1025(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0x1039(%rip),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x54(%rbp),%eax
add    $0x1,%eax
cvtsi2sd %eax,%xmm0
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  0x10a7(%rip),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movaps 0x1070(%rip),%xmm1
pand   %xmm1,%xmm0
ucomisd -0xf0(%rbp),%xmm0
ff
jb     218a <dpsifn+0x101a>
movsd  0xfae(%rip),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movl   $0x4,-0x3c(%rbp)
cmpl   $0x16,-0x3c(%rbp)
jg     2185 <dpsifn+0x1015>
movsd  -0xc0(%rbp),%xmm0
ff
movsd  -0xd0(%rbp),%xmm1
ff
cvtsi2sdl -0x54(%rbp),%xmm2
addsd  %xmm2,%xmm1
movsd  0xf6c(%rip),%xmm2
addsd  %xmm2,%xmm1
movsd  0xf60(%rip),%xmm2
addsd  -0xd0(%rbp),%xmm2
ff
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0xd0(%rbp),%xmm1
ff
cvtsi2sdl -0x54(%rbp),%xmm2
addsd  %xmm2,%xmm1
movsd  0xf3f(%rip),%xmm2
addsd  -0xd0(%rbp),%xmm2
ff
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mov    -0x3c(%rbp),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    0xfbf(%rip),%rax
mulsd  (%rax,%rcx,8),%xmm0
movslq -0x3c(%rbp),%rax
movsd  %xmm0,-0x210(%rbp,%rax,8)
ff ff
movslq -0x3c(%rbp),%rax
movsd  -0x210(%rbp,%rax,8),%xmm1
ff ff
movaps 0xf89(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  -0xf0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    2142 <dpsifn+0xfd2>
jmp    2185 <dpsifn+0x1015>
movslq -0x3c(%rbp),%rax
movsd  -0x210(%rbp,%rax,8),%xmm0
ff ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0xea1(%rip),%xmm0
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    2069 <dpsifn+0xef9>
jmp    218a <dpsifn+0x101a>
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    21ca <dpsifn+0x105a>
jp     21ca <dpsifn+0x105a>
jmp    22e1 <dpsifn+0x1171>
cvttsd2si -0x128(%rbp),%eax
ff
mov    %eax,-0x50(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x4c(%rbp)
cmpl   $0x64,-0x50(%rbp)
jle    2201 <dpsifn+0x1091>
mov    -0x28(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x30(%rbp),%rax
movl   $0x3,(%rax)
jmp    26de <dpsifn+0x156e>
cmpl   $0x0,-0x48(%rbp)
jne    2210 <dpsifn+0x10a0>
jmp    25f1 <dpsifn+0x1481>
movsd  -0x128(%rbp),%xmm0
ff
movsd  0xde0(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
addsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x50(%rbp),%eax
jg     22d7 <dpsifn+0x1167>
movsd  -0x88(%rbp),%xmm0
ff
xor    %eax,%eax
sub    -0x4c(%rbp),%eax
cvtsi2sd %eax,%xmm1
call   1080 <pow@plt>
cvtsi2sd %eax,%xmm0
movslq -0x34(%rbp),%rax
movsd  %xmm0,-0x540(%rbp,%rax,8)
ff ff
movslq -0x34(%rbp),%rax
movsd  -0x540(%rbp,%rax,8),%xmm0
ff ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  0xd58(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
addsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    2248 <dpsifn+0x10d8>
jmp    22dc <dpsifn+0x116c>
jmp    22e1 <dpsifn+0x1171>
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
mov    -0x40(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpl   $0x0,-0x54(%rbp)
jne    230a <dpsifn+0x119a>
jmp    2646 <dpsifn+0x14d6>
movl   $0x2,-0x38(%rbp)
mov    -0x38(%rbp),%eax
cmp    -0x40(%rbp),%eax
jg     25ec <dpsifn+0x147c>
mov    -0x54(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x54(%rbp)
movsd  -0x120(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xf8(%rbp),%xmm0
ff
movsd  %xmm0,-0x100(%rbp)
ff
cmpl   $0x0,-0x54(%rbp)
je     237d <dpsifn+0x120d>
movsd  -0xf8(%rbp),%xmm0
ff
cvtsi2sdl -0x54(%rbp),%xmm2
movsd  0xc93(%rip),%xmm1
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
mov    -0x54(%rbp),%eax
add    $0x1,%eax
cvtsi2sd %eax,%xmm0
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  0xd29(%rip),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movaps 0xcf2(%rip),%xmm1
pand   %xmm1,%xmm0
ucomisd -0xf0(%rbp),%xmm0
ff
jb     249a <dpsifn+0x132a>
mov    -0x54(%rbp),%eax
add    $0x4,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movl   $0x4,-0x3c(%rbp)
cmpl   $0x16,-0x3c(%rbp)
jg     2495 <dpsifn+0x1325>
movslq -0x3c(%rbp),%rax
movsd  -0x210(%rbp,%rax,8),%xmm0
ff ff
mov    -0x54(%rbp),%eax
add    $0x1,%eax
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
divsd  -0xd0(%rbp),%xmm0
ff
movslq -0x3c(%rbp),%rax
movsd  %xmm0,-0x210(%rbp,%rax,8)
ff ff
movslq -0x3c(%rbp),%rax
movsd  -0x210(%rbp,%rax,8),%xmm1
ff ff
movaps 0xc79(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  -0xf0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    2452 <dpsifn+0x12e2>
jmp    2495 <dpsifn+0x1325>
movslq -0x3c(%rbp),%rax
movsd  -0x210(%rbp,%rax,8),%xmm0
ff ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0xb91(%rip),%xmm0
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    23e9 <dpsifn+0x1279>
jmp    249a <dpsifn+0x132a>
movsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x100(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x128(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    24da <dpsifn+0x136a>
jp     24da <dpsifn+0x136a>
jmp    25b0 <dpsifn+0x1440>
cmpl   $0x0,-0x54(%rbp)
jne    24e9 <dpsifn+0x1379>
jmp    25f1 <dpsifn+0x1481>
movsd  -0x128(%rbp),%xmm0
ff
movsd  0xb07(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
addsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x50(%rbp),%eax
jg     25ab <dpsifn+0x143b>
movslq -0x34(%rbp),%rax
movsd  -0x540(%rbp,%rax,8),%xmm0
ff ff
mulsd  -0x88(%rbp),%xmm0
ff
movslq -0x34(%rbp),%rax
movsd  %xmm0,-0x540(%rbp,%rax,8)
ff ff
movslq -0x34(%rbp),%rax
movsd  -0x540(%rbp,%rax,8),%xmm0
ff ff
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x138(%rbp),%xmm0
ff
movsd  0xa84(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
addsd  -0x138(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    2521 <dpsifn+0x13b1>
jmp    25b0 <dpsifn+0x1440>
movsd  -0xb0(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
mov    -0x40(%rbp),%ecx
sub    -0x38(%rbp),%ecx
movslq %ecx,%rcx
movsd  %xmm0,(%rax,%rcx,8)
cmpl   $0x0,-0x54(%rbp)
jne    25d9 <dpsifn+0x1469>
jmp    2646 <dpsifn+0x14d6>
jmp    25de <dpsifn+0x146e>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    2311 <dpsifn+0x11a1>
jmp    26de <dpsifn+0x156e>
movl   $0x1,-0x34(%rbp)
mov    -0x34(%rbp),%eax
cmp    -0x50(%rbp),%eax
jg     2641 <dpsifn+0x14d1>
movsd  -0x8(%rbp),%xmm1
mov    -0x50(%rbp),%eax
sub    -0x34(%rbp),%eax
cvtsi2sd %eax,%xmm0
addsd  %xmm0,%xmm1
movsd  0x9e1(%rip),%xmm0
divsd  %xmm1,%xmm0
addsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    25f8 <dpsifn+0x1488>
jmp    2646 <dpsifn+0x14d6>
cmpl   $0x2,-0x10(%rbp)
je     266d <dpsifn+0x14fd>
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0x118(%rbp),%xmm0
ff
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    26d9 <dpsifn+0x1569>
movsd  -0x120(%rbp),%xmm0
ff
ucomisd -0x8(%rbp),%xmm0
jne    268b <dpsifn+0x151b>
jp     268b <dpsifn+0x151b>
jmp    26d4 <dpsifn+0x1564>
movsd  -0x120(%rbp),%xmm0
ff
divsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x580(%rbp)
ff
movsd  -0x148(%rbp),%xmm0
ff
call   1070 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x580(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    26d9 <dpsifn+0x1569>
jmp    26de <dpsifn+0x156e>
add    $0x580,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dpsifn>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x4c8,%rsp
mov    %r9,%rbp
movl   $0x0,(%r9)
test   %edx,%edx
jle    1241 <dpsifn+0xd1>
mov    %edi,%r15d
test   %edi,%edi
js     1241 <dpsifn+0xd1>
mov    %esi,%r14d
lea    -0x3(%r14),%eax
cmp    $0xfffffffd,%eax
jbe    1241 <dpsifn+0xd1>
mov    %r8,%r12
mov    %rcx,%r13
mov    %edx,%ebx
movapd %xmm0,%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
movapd %xmm1,0x10(%rsp)
jae    125a <dpsifn+0xea>
movl   $0x0,(%r12)
movapd %xmm1,%xmm0
call   1070 <log@plt>
cmp    $0x1,%r14d
jne    14ac <dpsifn+0x33c>
cmp    $0x1,%ebx
jne    14ac <dpsifn+0x33c>
mov    0x3dc7(%rip),%rax
xorps  %xmm1,%xmm1
cvtsi2sdl (%rax),%xmm1
addsd  %xmm1,%xmm1
movsd  0x1df4(%rip),%xmm2
divsd  %xmm1,%xmm2
test   %r15d,%r15d
jne    1464 <dpsifn+0x2f4>
movapd %xmm0,%xmm1
mulsd  0x10(%rsp),%xmm1
ucomisd %xmm2,%xmm1
jbe    1464 <dpsifn+0x2f4>
movapd 0x1e8b(%rip),%xmm1
xorpd  %xmm0,%xmm1
movlpd %xmm1,0x0(%r13)
jmp    1248 <dpsifn+0xd8>
movl   $0x1,0x0(%rbp)
add    $0x4c8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
cvttsd2si %xmm1,%rax
xorps  %xmm0,%xmm0
cvtsi2sd %rax,%xmm0
ucomisd %xmm1,%xmm0
jne    12a0 <dpsifn+0x130>
jp     12a0 <dpsifn+0x130>
mov    %ebx,%eax
cmp    $0x4,%ebx
jae    1328 <dpsifn+0x1b8>
xor    %ecx,%ecx
mov    %rcx,%rdx
not    %rdx
test   $0x1,%al
je     189e <dpsifn+0x72e>
test   $0x1,%r15b
jne    1888 <dpsifn+0x718>
mov    0x3d35(%rip),%rsi
jmp    188f <dpsifn+0x71f>
movsd  0x1d58(%rip),%xmm0
subsd  %xmm1,%xmm0
mov    %r15d,%edi
mov    $0x1,%esi
mov    %ebx,%edx
mov    %r13,%rcx
mov    %r12,%r8
mov    %rbp,%r9
call   1050 <dpsifn@plt>
cmp    $0x3,%r15d
ja     187c <dpsifn+0x70c>
cmp    $0x2,%ebx
jae    187c <dpsifn+0x70c>
mov    0x3d0a(%rip),%r12
movapd 0x10(%rsp),%xmm0
mulsd  (%r12),%xmm0
mov    %r14,%rbp
test   %r15d,%r15d
je     1bf8 <dpsifn+0xa88>
cmp    $0x2,%r15d
je     1d0b <dpsifn+0xb9b>
cmp    $0x1,%r15d
jne    1d48 <dpsifn+0xbd8>
call   1030 <sin@plt>
movsd  0x1cf9(%rip),%xmm1
call   1080 <pow@plt>
mov    %eax,%ecx
mov    $0xffffffff,%eax
jmp    1d88 <dpsifn+0xc18>
lea    0x0(,%rax,8),%rcx
add    %r13,%rcx
mov    0x3c7e(%rip),%rdi
lea    0x8(%rdi),%rdx
cmp    %rdx,%r13
setb   %r9b
cmp    %rdi,%rcx
seta   %r10b
mov    0x3c7d(%rip),%rsi
lea    0x8(%rsi),%rdx
cmp    %rdx,%r13
setb   %dl
cmp    %rsi,%rcx
seta   %r8b
xor    %ecx,%ecx
test   %r10b,%r9b
jne    127c <dpsifn+0x10c>
and    %r8b,%dl
jne    127c <dpsifn+0x10c>
mov    %eax,%ecx
and    $0xfffffffc,%ecx
movd   %r15d,%xmm0
pshufd $0x50,%xmm0,%xmm9
lea    0x2(%r15),%edx
movd   %edx,%xmm1
pshufd $0x50,%xmm1,%xmm10
movq   (%rdi),%xmm2
punpcklqdq %xmm2,%xmm2
movq   (%rsi),%xmm3
punpcklqdq %xmm3,%xmm3
lea    0x0(,%rax,8),%rdx
and    $0xffffffffffffffe0,%rdx
movdqa 0x1d16(%rip),%xmm7
xor    %esi,%esi
movdqa 0x1d1c(%rip),%xmm5
pxor   %xmm6,%xmm6
movdqa 0x1d1f(%rip),%xmm8
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movdqa %xmm7,%xmm4
paddd  %xmm9,%xmm4
movdqa %xmm10,%xmm1
paddd  %xmm7,%xmm1
pand   %xmm5,%xmm4
pand   %xmm5,%xmm1
pcmpeqd %xmm6,%xmm4
pxor   %xmm0,%xmm0
pcmpgtd %xmm4,%xmm0
punpckldq %xmm0,%xmm4
pcmpeqd %xmm6,%xmm1
pxor   %xmm0,%xmm0
pcmpgtd %xmm1,%xmm0
punpckldq %xmm0,%xmm1
movdqa %xmm3,%xmm0
pand   %xmm4,%xmm0
pandn  %xmm2,%xmm4
por    %xmm0,%xmm4
movdqa %xmm3,%xmm0
pand   %xmm1,%xmm0
pandn  %xmm2,%xmm1
por    %xmm0,%xmm1
movdqu %xmm4,0x0(%r13,%rsi,1)
movdqu %xmm1,0x10(%r13,%rsi,1)
paddd  %xmm8,%xmm7
add    $0x20,%rsi
cmp    %rsi,%rdx
jne    13e0 <dpsifn+0x270>
cmp    %rax,%rcx
je     1248 <dpsifn+0xd8>
jmp    127c <dpsifn+0x10c>
test   %r15d,%r15d
je     14ac <dpsifn+0x33c>
xorps  %xmm1,%xmm1
cvtsi2sd %r15d,%xmm1
mulsd  %xmm1,%xmm2
movapd 0x10(%rsp),%xmm1
ucomisd %xmm2,%xmm1
jbe    14ac <dpsifn+0x33c>
mov    %r15d,%eax
neg    %eax
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
call   1040 <exp@plt>
cltd
idiv   %r15d
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x0(%r13)
jmp    1248 <dpsifn+0xd8>
mov    %rbp,0xa8(%rsp)
mov    %r14,0xa0(%rsp)
mov    0x3b1d(%rip),%rax
xor    %r14d,%r14d
xor    %edi,%edi
sub    (%rax),%edi
mov    0x3b07(%rip),%rax
mov    (%rax),%esi
movapd %xmm0,0x40(%rsp)
call   1090 <imin2@plt>
movapd 0x40(%rsp),%xmm11
mov    0x3ad4(%rip),%rcx
xorps  %xmm0,%xmm0
cvtsi2sdl (%rcx),%xmm0
mulsd  0x1b25(%rip),%xmm0
maxsd  0x1b25(%rip),%xmm0
movsd  %xmm0,0x30(%rsp)
mov    %rax,0x58(%rsp)
cvtsi2sd %eax,%xmm3
mulsd  0x1b16(%rip),%xmm3
addsd  0x1b16(%rip),%xmm3
mulsd  0x1b16(%rip),%xmm3
xorpd  %xmm0,%xmm0
movapd %xmm11,%xmm1
minsd  %xmm0,%xmm1
xorpd  0x1b81(%rip),%xmm1
movapd %xmm1,0x90(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %r15d,%xmm0
movsd  %xmm0,0x80(%rsp)
movapd 0x10(%rsp),%xmm12
cvttsd2si %xmm12,%eax
mov    %eax,0x78(%rsp)
cvttpd2dq %xmm12,%xmm0
cvtdq2pd %xmm0,%xmm0
movapd %xmm0,0xb0(%rsp)
lea    -0x1(%rbx),%eax
mov    %rax,0x70(%rsp)
lea    0x0(%r13,%rax,8),%rbp
mov    %ebx,%ecx
mov    %rbx,%rax
add    %r15d,%ebx
mov    %rax,0xc8(%rsp)
lea    -0x1(%rax,%r15,1),%eax
mov    %rax,0x38(%rsp)
movapd 0x1b55(%rip),%xmm9
mov    %rcx,0x28(%rsp)
movsd  %xmm3,0x88(%rsp)
jmp    15ea <dpsifn+0x47a>
nopl   0x0(%rax,%rax,1)
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
jae    18f6 <dpsifn+0x786>
add    $0x4,%r12
movq   $0x0,0x0(%rbp,%r14,8)
add    $0xffffffffffffffff,%r14
mov    %ecx,%eax
add    %r14d,%eax
je     1248 <dpsifn+0xd8>
lea    (%rbx,%r14,1),%eax
xorps  %xmm2,%xmm2
cvtsi2sd %eax,%xmm2
movapd %xmm11,%xmm0
mulsd  %xmm2,%xmm0
movapd %xmm0,%xmm1
andpd  %xmm9,%xmm1
ucomisd %xmm3,%xmm1
ja     15c0 <dpsifn+0x450>
movsd  0x30(%rsp),%xmm0
ucomisd %xmm12,%xmm0
ja     1911 <dpsifn+0x7a1>
movapd %xmm2,0xd0(%rsp)
mov    0x38(%rsp),%rax
add    %r14,%rax
mov    0x3992(%rip),%rdx
movsd  (%rdx),%xmm2
mulsd  0x19ee(%rip),%xmm2
minsd  0x19fe(%rip),%xmm2
movapd %xmm2,%xmm0
maxsd  0x19b2(%rip),%xmm0
addsd  0x19da(%rip),%xmm0
movapd %xmm0,%xmm1
mulsd  0x19f6(%rip),%xmm1
addsd  0x19f6(%rip),%xmm1
mulsd  %xmm0,%xmm1
mulsd  0x19d2(%rip),%xmm0
addsd  0x19d2(%rip),%xmm0
addsd  0x19e2(%rip),%xmm1
cvtsi2sd %eax,%xmm6
mulsd  %xmm6,%xmm1
addsd  %xmm0,%xmm1
cvttsd2si %xmm1,%eax
add    $0x1,%eax
xorps  %xmm4,%xmm4
cvtsi2sd %eax,%xmm4
test   %r15d,%r15d
movsd  %xmm6,(%rsp)
je     1781 <dpsifn+0x611>
mulsd  0x19ba(%rip),%xmm2
addsd  0x90(%rsp),%xmm2
divsd  0x80(%rsp),%xmm2
minsd  0x19d8(%rip),%xmm2
movapd %xmm2,0x60(%rsp)
movapd %xmm2,%xmm0
movsd  %xmm4,0x8(%rsp)
call   1040 <exp@plt>
movsd  0x8(%rsp),%xmm4
movapd 0x60(%rsp),%xmm3
movsd  (%rsp),%xmm6
movapd 0x40(%rsp),%xmm11
mov    0x28(%rsp),%rcx
movapd 0x19ed(%rip),%xmm9
movapd 0x10(%rsp),%xmm12
movapd %xmm3,%xmm0
andpd  %xmm9,%xmm0
cmpltsd 0x1954(%rip),%xmm0
movapd %xmm4,%xmm1
subsd  %xmm12,%xmm1
ucomisd 0x194b(%rip),%xmm1
jbe    1781 <dpsifn+0x611>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movsd  0x18b2(%rip),%xmm2
subsd  %xmm1,%xmm2
xorpd  0x1966(%rip),%xmm3
andpd  %xmm0,%xmm3
andnpd %xmm2,%xmm0
orpd   %xmm3,%xmm0
mulsd  %xmm12,%xmm0
divsd  %xmm1,%xmm0
movsd  0x1919(%rip),%xmm1
ucomisd %xmm0,%xmm1
ja     1ab9 <dpsifn+0x949>
xorpd  %xmm10,%xmm10
ucomisd %xmm12,%xmm4
movapd %xmm11,%xmm7
movapd %xmm12,%xmm8
jbe    17f6 <dpsifn+0x686>
subsd  0xb0(%rsp),%xmm4
movsd  %xmm4,0x8(%rsp)
movapd %xmm4,%xmm0
addsd  %xmm12,%xmm0
movsd  %xmm0,0x60(%rsp)
call   1070 <log@plt>
movsd  (%rsp),%xmm6
movapd 0x40(%rsp),%xmm11
movsd  0x60(%rsp),%xmm8
mov    0x28(%rsp),%rcx
movapd 0x1925(%rip),%xmm9
movapd 0x10(%rsp),%xmm12
movapd %xmm0,%xmm7
mov    0x78(%rsp),%eax
mov    %rax,0x58(%rsp)
movsd  0x8(%rsp),%xmm10
movapd %xmm7,%xmm0
mulsd  %xmm6,%xmm0
movapd %xmm7,%xmm1
addsd  %xmm7,%xmm1
movapd %xmm7,%xmm2
addsd  %xmm0,%xmm2
movapd %xmm0,%xmm3
movapd 0x18e6(%rip),%xmm4
andpd  %xmm4,%xmm3
andpd  %xmm4,%xmm1
andpd  %xmm4,%xmm2
movapd %xmm1,%xmm4
cmpunordsd %xmm1,%xmm4
movapd %xmm4,%xmm5
andpd  %xmm2,%xmm5
maxsd  %xmm1,%xmm2
andnpd %xmm2,%xmm4
orpd   %xmm5,%xmm4
movapd %xmm4,%xmm1
maxsd  %xmm3,%xmm1
cmpunordsd %xmm3,%xmm3
movapd %xmm3,%xmm2
andpd  %xmm4,%xmm2
andnpd %xmm1,%xmm3
orpd   %xmm2,%xmm3
movsd  0x88(%rsp),%xmm1
ucomisd %xmm3,%xmm1
jae    19bd <dpsifn+0x84d>
movapd %xmm1,%xmm3
jmp    15ce <dpsifn+0x45e>
movl   $0x4,0x0(%rbp)
jmp    1248 <dpsifn+0xd8>
mov    0x3729(%rip),%rsi
movsd  (%rsi),%xmm0
movsd  %xmm0,0x0(%r13,%rcx,8)
or     $0x1,%rcx
add    %rax,%rdx
je     1248 <dpsifn+0xd8>
xor    %cl,%r15b
mov    0x3707(%rip),%rdx
mov    0x3718(%rip),%rsi
nopl   0x0(%rax,%rax,1)
test   $0x1,%r15b
mov    %rsi,%rdi
cmovne %rdx,%rdi
movsd  (%rdi),%xmm0
movsd  %xmm0,0x0(%r13,%rcx,8)
mov    %rdx,%rdi
cmovne %rsi,%rdi
movsd  (%rdi),%xmm0
movsd  %xmm0,0x8(%r13,%rcx,8)
add    $0x2,%rcx
cmp    %rcx,%rax
jne    18c0 <dpsifn+0x750>
jmp    1248 <dpsifn+0xd8>
movl   $0x0,(%r12)
mov    0xa8(%rsp),%rax
movl   $0x2,(%rax)
jmp    1248 <dpsifn+0xd8>
mov    %r15d,%eax
neg    %eax
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
addsd  0x1783(%rip),%xmm1
movapd %xmm12,%xmm0
call   1080 <pow@plt>
movapd 0x40(%rsp),%xmm3
mov    0x28(%rsp),%rdx
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x0(%r13)
lea    (%rdx,%r14,1),%rcx
cmp    $0x2,%ecx
jl     1ead <dpsifn+0xd3d>
add    %r14,%rdx
add    $0xfffffffffffffffe,%rdx
mov    %ecx,%eax
add    $0xffffffffffffffff,%rax
test   %edx,%edx
je     1e93 <dpsifn+0xd23>
mov    %ecx,%edx
add    $0xffffffffffffffff,%rdx
and    $0xfffffffffffffffe,%rdx
neg    %rdx
mov    $0x1,%ecx
movapd %xmm0,%xmm1
movapd 0x10(%rsp),%xmm2
cs nopw 0x0(%rax,%rax,1)
nop
divsd  %xmm2,%xmm1
movsd  %xmm1,0x0(%r13,%rcx,8)
divsd  %xmm2,%xmm1
movsd  %xmm1,0x8(%r13,%rcx,8)
lea    (%rdx,%rcx,1),%rsi
add    $0x2,%rsi
add    $0x2,%rcx
cmp    $0x1,%rsi
jne    1990 <dpsifn+0x820>
jmp    1e9c <dpsifn+0xd2c>
movsd  %xmm10,0x90(%rsp)
movsd  %xmm7,0x80(%rsp)
xorpd  0x16e8(%rip),%xmm0
movsd  %xmm8,0x60(%rsp)
call   1040 <exp@plt>
movsd  0x60(%rsp),%xmm12
movsd  0x162c(%rip),%xmm15
divsd  %xmm12,%xmm15
movsd  0x30(%rsp),%xmm0
mulsd  %xmm15,%xmm0
movsd  %xmm0,0x30(%rsp)
mov    $0x1,%esi
sub    %ebx,%esi
movapd %xmm15,%xmm14
cmp    %r14d,%esi
movsd  0x15de(%rip),%xmm10
je     1a34 <dpsifn+0x8c4>
movapd %xmm10,%xmm14
divsd  (%rsp),%xmm14
addsd  %xmm15,%xmm14
xorps  %xmm9,%xmm9
cvtsi2sd %eax,%xmm9
movapd %xmm12,%xmm0
mulsd  %xmm12,%xmm0
movapd %xmm10,%xmm1
divsd  %xmm0,%xmm1
movsd  0x15c8(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,0x88(%rsp)
movapd 0xd0(%rsp),%xmm7
mulsd  %xmm0,%xmm7
movsd  0x1626(%rip),%xmm0
mulsd  %xmm7,%xmm0
movapd 0x167a(%rip),%xmm2
andpd  %xmm0,%xmm2
ucomisd 0x30(%rsp),%xmm2
movapd 0x1668(%rip),%xmm3
movsd  0x90(%rsp),%xmm13
jae    1c21 <dpsifn+0xab1>
movapd 0x10(%rsp),%xmm11
mov    0x28(%rsp),%rdx
jmp    1cba <dpsifn+0xb4a>
cvttsd2si %xmm0,%r12d
lea    0x1(%r15),%eax
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
movapd 0x15ef(%rip),%xmm0
xorpd  %xmm11,%xmm0
mulsd  %xmm1,%xmm0
call   1040 <exp@plt>
mov    0x28(%rsp),%rcx
xorps  %xmm6,%xmm6
cvtsi2sd %eax,%xmm6
lea    (%rcx,%r14,1),%rbx
add    $0xffffffffffffffff,%rbx
movapd %xmm6,%xmm2
test   %r12d,%r12d
js     1f2d <dpsifn+0xdbd>
mov    %rbx,0x38(%rsp)
not    %r15d
xorps  %xmm1,%xmm1
cvtsi2sd %r15d,%xmm1
lea    0x1(%r12),%ebx
test   %r12d,%r12d
movapd 0x10(%rsp),%xmm3
movsd  %xmm6,0x60(%rsp)
je     1ed3 <dpsifn+0xd63>
mov    %ebx,%r15d
and    $0xfffffffe,%r15d
neg    %r15
mov    $0x1,%ebp
movapd %xmm6,%xmm2
movsd  %xmm1,0x40(%rsp)
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  %xmm2,0x8(%rsp)
movsd  0x14a2(%rip),%xmm0
addsd  %xmm0,%xmm3
movsd  %xmm3,(%rsp)
movapd %xmm3,%xmm0
movsd  0x40(%rsp),%xmm1
call   1080 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0xe0(%rsp,%rbp,8)
movsd  0x8(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  (%rsp),%xmm0
addsd  0x145d(%rip),%xmm0
movsd  %xmm0,(%rsp)
movsd  (%rsp),%xmm0
movsd  0x40(%rsp),%xmm1
call   1080 <pow@plt>
movsd  (%rsp),%xmm3
movsd  0x8(%rsp),%xmm2
movsd  0x40(%rsp),%xmm1
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0xe8(%rsp,%rbp,8)
addsd  %xmm0,%xmm2
lea    (%r15,%rbp,1),%rax
add    $0x2,%rax
add    $0x2,%rbp
cmp    $0x1,%rax
jne    1b50 <dpsifn+0x9e0>
jmp    1edc <dpsifn+0xd6c>
movapd %xmm0,0x10(%rsp)
call   1060 <cos@plt>
movsd  %xmm0,(%rsp)
movapd 0x10(%rsp),%xmm0
call   1030 <sin@plt>
movsd  (%rsp),%xmm6
divsd  %xmm0,%xmm6
jmp    1d8f <dpsifn+0xc1f>
movsd  0x13e7(%rip),%xmm2
xor    %eax,%eax
movapd 0x14dc(%rip),%xmm8
lea    0x14e5(%rip),%rcx
movapd 0x10(%rsp),%xmm11
mov    0x28(%rsp),%rdx
movsd  0x30(%rsp),%xmm6
nopl   (%rax)
movapd %xmm2,%xmm4
addsd  (%rsp),%xmm4
movapd %xmm4,%xmm5
addsd  %xmm10,%xmm5
unpcklpd %xmm2,%xmm2
addpd  %xmm8,%xmm2
unpcklpd %xmm5,%xmm4
divpd  %xmm2,%xmm4
movapd %xmm4,%xmm5
unpckhpd %xmm4,%xmm5
mulsd  %xmm7,%xmm5
mulsd  %xmm4,%xmm5
movapd %xmm5,%xmm7
mulsd  %xmm1,%xmm7
movsd  0x18(%rcx,%rax,8),%xmm4
mulsd  %xmm7,%xmm4
movsd  %xmm4,0x100(%rsp,%rax,8)
movapd %xmm4,%xmm5
andpd  %xmm3,%xmm5
ucomisd %xmm5,%xmm6
ja     1cba <dpsifn+0xb4a>
addsd  %xmm4,%xmm0
add    $0x1,%rax
cmp    $0x13,%rax
jne    1c50 <dpsifn+0xae0>
addsd  %xmm0,%xmm14
mulsd  %xmm9,%xmm14
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm13
jne    1cd1 <dpsifn+0xb61>
jnp    1cfa <dpsifn+0xb8a>
cvttsd2si %xmm13,%ebp
cmp    $0x65,%ebp
jl     1e40 <dpsifn+0xcd0>
movl   $0x0,(%r12)
mov    0xa8(%rsp),%rax
movl   $0x3,(%rax)
jmp    1248 <dpsifn+0xd8>
movsd  %xmm9,0x40(%rsp)
mov    0x70(%rsp),%rax
jmp    2140 <dpsifn+0xfd0>
movapd %xmm0,0x10(%rsp)
call   1060 <cos@plt>
addsd  %xmm0,%xmm0
movsd  %xmm0,(%rsp)
movaps 0x10(%rsp),%xmm0
call   1030 <sin@plt>
movsd  0x12d7(%rip),%xmm1
call   1080 <pow@plt>
movsd  (%rsp),%xmm6
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
divsd  %xmm0,%xmm6
jmp    1d8f <dpsifn+0xc1f>
movapd %xmm0,0x10(%rsp)
call   1060 <cos@plt>
movsd  0x12b5(%rip),%xmm1
call   1080 <pow@plt>
mov    %eax,%r14d
shl    $0x2,%r14d
xor    $0xfffffffe,%r14d
movapd 0x10(%rsp),%xmm0
call   1030 <sin@plt>
movsd  0x129a(%rip),%xmm1
call   1080 <pow@plt>
mov    %eax,%ecx
mov    %r14d,%eax
cltd
idiv   %ecx
cvtsi2sd %eax,%xmm6
movsd  0x1269(%rip),%xmm5
mov    %r15d,%eax
neg    %eax
movsd  (%r12),%xmm3
xor    %ecx,%ecx
movapd 0x1314(%rip),%xmm0
movapd %xmm5,%xmm1
movapd %xmm5,%xmm2
jmp    1dd2 <dpsifn+0xc62>
cs nopw 0x0(%rax,%rax,1)
xorpd  %xmm0,%xmm2
lea    (%rax,%rcx,1),%edx
add    $0x1,%edx
add    $0x1,%ecx
cmp    $0x1,%edx
je     1e19 <dpsifn+0xca9>
movapd %xmm5,%xmm4
mulsd  %xmm3,%xmm1
test   %ecx,%ecx
mov    $0x1,%edx
cmovne %ecx,%edx
xorps  %xmm5,%xmm5
cvtsi2sd %edx,%xmm5
mulsd  %xmm4,%xmm5
mov    %eax,%edx
add    %ecx,%edx
js     1dc0 <dpsifn+0xc50>
movapd %xmm1,%xmm3
divsd  %xmm5,%xmm3
mulsd  %xmm6,%xmm3
addsd  0x0(%r13),%xmm3
mulsd  %xmm2,%xmm3
movsd  %xmm3,0x0(%r13)
movsd  (%r12),%xmm3
jmp    1dc0 <dpsifn+0xc50>
test   %r15d,%r15d
jne    1248 <dpsifn+0xd8>
cmp    $0x2,%ebp
jne    1248 <dpsifn+0xd8>
xorpd  %xmm0,%xmm0
addsd  0x0(%r13),%xmm0
movsd  %xmm0,0x0(%r13)
jmp    1248 <dpsifn+0xd8>
cmp    %r14d,%esi
je     239a <dpsifn+0x122a>
test   %ebp,%ebp
mov    %rbp,0x58(%rsp)
movsd  %xmm9,0x40(%rsp)
jle    1fe2 <dpsifn+0xe72>
add    %r14d,%ebx
neg    %ebx
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
mov    %ebp,%r12d
cmp    $0x1,%ebp
movsd  %xmm15,0x78(%rsp)
mov    %esi,0xb0(%rsp)
movsd  %xmm0,0x38(%rsp)
jne    1ffd <dpsifn+0xe8d>
mov    $0x1,%ebp
jmp    20c1 <dpsifn+0xf51>
mov    $0x1,%ecx
movapd %xmm0,%xmm1
test   $0x1,%al
je     1ead <dpsifn+0xd3d>
divsd  0x10(%rsp),%xmm1
movsd  %xmm1,0x0(%r13,%rcx,8)
test   %r15d,%r15d
jne    1248 <dpsifn+0xd8>
cmpl   $0x2,0xa0(%rsp)
02
jne    1248 <dpsifn+0xd8>
addsd  %xmm0,%xmm3
movsd  %xmm3,0x0(%r13)
jmp    1248 <dpsifn+0xd8>
mov    $0x1,%ebp
movapd %xmm6,%xmm2
test   $0x1,%bl
mov    0x28(%rsp),%rcx
movsd  0x60(%rsp),%xmm6
mov    0x38(%rsp),%rbx
je     1f2d <dpsifn+0xdbd>
addsd  0x1107(%rip),%xmm3
movapd %xmm3,%xmm0
movsd  %xmm2,0x8(%rsp)
call   1080 <pow@plt>
movsd  0x8(%rsp),%xmm2
movsd  0x60(%rsp),%xmm6
mov    0x28(%rsp),%rcx
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0xe0(%rsp,%rbp,8)
addsd  %xmm0,%xmm2
movsd  %xmm2,0x0(%r13)
test   %ebx,%ebx
movapd 0x10(%rsp),%xmm4
je     1248 <dpsifn+0xd8>
add    %r14,%rcx
cmp    $0x2,%ecx
jl     1248 <dpsifn+0xd8>
movsd  0x30(%rsp),%xmm0
divsd  0x113d(%rip),%xmm0
movsd  %xmm0,0x30(%rsp)
movslq %r12d,%rax
mov    %ecx,%ecx
mov    $0x1,%edx
movsd  0x108d(%rip),%xmm5
jmp    1f89 <dpsifn+0xe19>
movsd  %xmm0,0x0(%r13,%rdx,8)
add    $0x1,%rdx
cmp    %rcx,%rdx
je     1248 <dpsifn+0xd8>
divsd  %xmm4,%xmm6
movapd %xmm6,%xmm0
test   %r12d,%r12d
js     1f75 <dpsifn+0xe05>
movsd  0x30(%rsp),%xmm1
mulsd  %xmm6,%xmm1
mov    $0x1,%esi
movapd %xmm6,%xmm0
movapd %xmm4,%xmm2
nopl   (%rax)
addsd  %xmm5,%xmm2
movsd  0xe0(%rsp,%rsi,8),%xmm3
divsd  %xmm2,%xmm3
movsd  %xmm3,0xe0(%rsp,%rsi,8)
addsd  %xmm3,%xmm0
ucomisd %xmm3,%xmm1
ja     1f75 <dpsifn+0xe05>
lea    0x1(%rsi),%rdi
cmp    %rax,%rsi
mov    %rdi,%rsi
jle    1fb0 <dpsifn+0xe40>
jmp    1f75 <dpsifn+0xe05>
mov    0x70(%rsp),%rax
lea    0x0(,%rax,8),%rax
add    %r13,%rax
movsd  %xmm14,(%rax,%r14,8)
jmp    215a <dpsifn+0xfea>
mov    %r12d,%ebx
and    $0xfffffffe,%ebx
neg    %rbx
mov    $0x1,%ebp
movsd  %xmm14,0x8(%rsp)
movsd  0x108e(%rip),%xmm0
addsd  %xmm0,%xmm13
movsd  %xmm13,(%rsp)
movapd %xmm13,%xmm0
addsd  %xmm11,%xmm0
movsd  0x38(%rsp),%xmm1
call   1080 <pow@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x1a0(%rsp,%rbp,8)
movsd  0x8(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  %xmm1,0x8(%rsp)
movsd  (%rsp),%xmm0
addsd  0x1041(%rip),%xmm0
movsd  %xmm0,(%rsp)
movsd  (%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  0x38(%rsp),%xmm1
call   1080 <pow@plt>
movsd  (%rsp),%xmm13
movsd  0x8(%rsp),%xmm14
movapd 0x10(%rsp),%xmm11
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x1a8(%rsp,%rbp,8)
addsd  %xmm0,%xmm14
lea    (%rbx,%rbp,1),%rax
add    $0x2,%rax
add    $0x2,%rbp
cmp    $0x1,%rax
jne    200b <dpsifn+0xe9b>
movsd  0x38(%rsp),%xmm1
test   $0x1,%r12b
je     210f <dpsifn+0xf9f>
addsd  0xfd2(%rip),%xmm13
addsd  %xmm11,%xmm13
movapd %xmm13,%xmm0
movsd  %xmm14,0x8(%rsp)
call   1080 <pow@plt>
movsd  0x8(%rsp),%xmm14
movapd 0x10(%rsp),%xmm11
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x1a0(%rsp,%rbp,8)
addsd  %xmm0,%xmm14
movapd 0xfe9(%rip),%xmm3
mov    0x28(%rsp),%rdx
movsd  0x60(%rsp),%xmm12
movsd  0x90(%rsp),%xmm13
movsd  0x78(%rsp),%xmm15
mov    0x70(%rsp),%rax
mov    0xb0(%rsp),%esi
lea    0x0(,%rax,8),%rax
add    %r13,%rax
movsd  %xmm14,(%rax,%r14,8)
cmp    %r14d,%esi
je     2432 <dpsifn+0x12c2>
add    %r14,%rdx
cmp    $0x2,%edx
jl     1248 <dpsifn+0xd8>
mov    0xc8(%rsp),%rdi
lea    (%rdi,%r15,1),%eax
add    $0xffffffff,%eax
add    %r14,%rax
mov    0x58(%rsp),%rcx
lea    0x1(%rcx),%r8d
mov    %edx,%esi
lea    (%rdi,%r14,1),%r10d
add    $0x1,%r10d
lea    -0x1(%r8),%r9
mov    %r9,%rdi
and    $0xfffffffffffffffe,%rdi
neg    %rdi
mov    $0x2,%ecx
movsd  0xef9(%rip),%xmm8
xorpd  %xmm9,%xmm9
movsd  0xef4(%rip),%xmm2
movsd  0xe53(%rip),%xmm10
movsd  0x30(%rsp),%xmm1
jmp    21e7 <dpsifn+0x1077>
mov    %rsi,%rdx
sub    %rcx,%rdx
movsd  %xmm14,0x0(%r13,%rdx,8)
test   %eax,%eax
je     2432 <dpsifn+0x12c2>
add    $0x1,%rcx
cmp    %r10,%rcx
je     1248 <dpsifn+0xd8>
mov    %eax,%ebp
movapd %xmm15,%xmm14
add    $0xffffffff,%eax
je     220d <dpsifn+0x109d>
xorps  %xmm4,%xmm4
cvtsi2sd %eax,%xmm4
movsd  0xdfd(%rip),%xmm14
divsd  %xmm4,%xmm14
addsd  %xmm15,%xmm14
xorps  %xmm5,%xmm5
cvtsi2sd %ebp,%xmm5
movsd  0x88(%rsp),%xmm4
mulsd  %xmm5,%xmm4
mulsd  %xmm8,%xmm4
movapd %xmm4,%xmm6
andpd  %xmm3,%xmm6
ucomisd 0x30(%rsp),%xmm6
jb     228b <dpsifn+0x111b>
add    $0x3,%ebp
xorps  %xmm6,%xmm6
cvtsi2sd %ebp,%xmm6
mov    $0x4,%ebp
cs nopw 0x0(%rax,%rax,1)
nop
movsd  0xe0(%rsp,%rbp,8),%xmm0
mulsd  %xmm5,%xmm0
divsd  %xmm6,%xmm0
movsd  %xmm0,0xe0(%rsp,%rbp,8)
movapd %xmm0,%xmm7
andpd  %xmm3,%xmm7
ucomisd %xmm7,%xmm1
ja     228b <dpsifn+0x111b>
addsd  %xmm0,%xmm4
addsd  %xmm10,%xmm6
add    $0x1,%rbp
cmp    $0x17,%rbp
jne    2250 <dpsifn+0x10e0>
addsd  %xmm4,%xmm14
movsd  0x40(%rsp),%xmm0
mulsd  %xmm12,%xmm0
ucomisd %xmm9,%xmm13
movsd  %xmm0,0x40(%rsp)
mulsd  %xmm0,%xmm14
jne    22b3 <dpsifn+0x1143>
jnp    21c5 <dpsifn+0x1055>
test   %eax,%eax
je     238c <dpsifn+0x121c>
cmpl   $0x0,0x58(%rsp)
jle    22d7 <dpsifn+0x1167>
mov    $0x1,%ebp
cmp    $0x2,%r8d
jne    22e9 <dpsifn+0x1179>
movapd %xmm13,%xmm4
jmp    235d <dpsifn+0x11ed>
mov    %rsi,%rdx
sub    %rcx,%rdx
movsd  %xmm14,0x0(%r13,%rdx,8)
jmp    21da <dpsifn+0x106a>
mov    $0x1,%ebp
movapd %xmm13,%xmm4
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
addsd  %xmm2,%xmm4
movapd %xmm4,%xmm0
addsd  %xmm11,%xmm0
mulsd  0x1a0(%rsp,%rbp,8),%xmm0
movsd  %xmm0,0x1a0(%rsp,%rbp,8)
addsd  %xmm14,%xmm0
addsd  %xmm2,%xmm4
movapd %xmm4,%xmm14
addsd  %xmm11,%xmm14
mulsd  0x1a8(%rsp,%rbp,8),%xmm14
movsd  %xmm14,0x1a8(%rsp,%rbp,8)
addsd  %xmm0,%xmm14
lea    (%rdi,%rbp,1),%rdx
add    $0x2,%rdx
add    $0x2,%rbp
cmp    $0x1,%rdx
jne    2300 <dpsifn+0x1190>
test   $0x1,%r9b
je     21c5 <dpsifn+0x1055>
addsd  %xmm2,%xmm4
addsd  %xmm11,%xmm4
mulsd  0x1a0(%rsp,%rbp,8),%xmm4
movsd  %xmm4,0x1a0(%rsp,%rbp,8)
addsd  %xmm4,%xmm14
jmp    21c5 <dpsifn+0x1055>
movsd  0xc6b(%rip),%xmm10
mov    0x58(%rsp),%rbp
test   %ebp,%ebp
jle    2432 <dpsifn+0x12c2>
cmp    $0x1,%ebp
jne    23ae <dpsifn+0x123e>
mov    $0x1,%esi
jmp    240a <dpsifn+0x129a>
lea    -0x2(%rbp),%eax
mov    %ebp,%ecx
and    $0xfffffffe,%ecx
neg    %ecx
mov    $0x1,%edx
lea    0x1(%rax),%esi
xorps  %xmm0,%xmm0
cvtsi2sd %esi,%xmm0
addsd  %xmm11,%xmm0
movapd %xmm10,%xmm1
divsd  %xmm0,%xmm1
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  %xmm14,%xmm1
addsd  %xmm11,%xmm0
movapd %xmm10,%xmm14
divsd  %xmm0,%xmm14
addsd  %xmm1,%xmm14
add    $0xfffffffe,%eax
mov    %edx,%esi
add    $0x2,%esi
lea    (%rcx,%rdx,1),%edi
add    $0x2,%edi
mov    %esi,%edx
cmp    $0x1,%edi
jne    23bd <dpsifn+0x124d>
test   $0x1,%bpl
je     2432 <dpsifn+0x12c2>
mov    %rbp,%rax
sub    %esi,%eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
addsd  %xmm11,%xmm0
movsd  0xbd7(%rip),%xmm1
divsd  %xmm0,%xmm1
addsd  %xmm1,%xmm14
cmpl   $0x2,0xa0(%rsp)
02
jne    2474 <dpsifn+0x1304>
ucomisd %xmm11,%xmm12
jne    2449 <dpsifn+0x12d9>
jnp    1248 <dpsifn+0xd8>
divsd  %xmm11,%xmm12
movapd %xmm12,%xmm0
movsd  %xmm14,0x8(%rsp)
call   1070 <log@plt>
movsd  0x8(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x0(%r13)
jmp    1248 <dpsifn+0xd8>
subsd  0x80(%rsp),%xmm14
movsd  %xmm14,0x0(%r13)
jmp    1248 <dpsifn+0xd8>

LLVM IR (-O0):
@dpsifn.bvalues = internal constant [22 x double] [double 1.000000e+00, double -5.000000e-01, double 0x3FC5555555555555, double 0xBFA1111111111111, double 0x3F98618618618618, double 0xBFA1111111111111, double 0x3FB364D9364D9365, double 0xBFD0330330330330, double 0x3FF2AAAAAAAAAAAB, double 0xC01C5E5E5E5E5E5E, double 0x404B7C4F8F13E3C5, double 0xC08088FE72CFE72D, double 0x40B8301F89467E25, double 0xC0F523440CC0CC0D, double 0x4135C06D2AAAAAAB, double 0xC17A089B7115C654, double 0x41C1EDB2A4F34840, double 0xC20C280563B8BCBD, double 0x425901C1CDDD4AAB, double 0xC2A8F0FCACF1C0AA, double 0x42FBC22BA679E993, double 0xC3512388BF439D59]
@HUGE_VAL = global double 0.000000e+00
@FP_NAN = global double 0.000000e+00
@M_PI = global double 0.000000e+00
@DBL_EPSILON = global i32 0
@DBL_MIN_EXP = global i32 0
@DBL_MAX_EXP = global i32 0
@DBL_MANT_DIG = global double 0.000000e+00
define void @dpsifn(double %0, i32 %1, i32 %2, i32 %3, double* %4, i32* %5, i32* %6) {
%8 = alloca double
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca double*
%13 = alloca i32*
%14 = alloca i32*
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca double
%31 = alloca double
%32 = alloca double
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
%41 = alloca double
%42 = alloca double
%43 = alloca double
%44 = alloca double
%45 = alloca double
%46 = alloca double
%47 = alloca double
%48 = alloca double
%49 = alloca double
%50 = alloca double
%51 = alloca double
%52 = alloca double
%53 = alloca double
%54 = alloca double
%55 = alloca [23 x double]
%56 = alloca [101 x double]
%57 = alloca double
store double %0, double* %8
store i32 %1, i32* %9
store i32 %2, i32* %10
store i32 %3, i32* %11
store double* %4, double** %12
store i32* %5, i32** %13
store i32* %6, i32** %14
store double 0.000000e+00, double* %50
%58 = load i32*, i32** %14
store i32 0, i32* %58
%59 = load i32, i32* %9
%60 = icmp slt i32 %59, 0
br i1 %60, label %70, label %61
61: ; preds = %7
%62 = load i32, i32* %10
%63 = icmp slt i32 %62, 1
br i1 %63, label %70, label %64
64: ; preds = %61
%65 = load i32, i32* %10
%66 = icmp sgt i32 %65, 2
br i1 %66, label %70, label %67
67: ; preds = %64
%68 = load i32, i32* %11
%69 = icmp slt i32 %68, 1
br i1 %69, label %70, label %72
70: ; preds = %67, %64, %61, %7
%71 = load i32*, i32** %14
store i32 1, i32* %71
br label %961
72: ; preds = %67
%73 = load double, double* %8
%74 = fcmp ole double %73, 0.000000e+00
br i1 %74, label %75, label %239
75: ; preds = %72
%76 = load double, double* %8
%77 = load double, double* %8
%78 = fptosi double %77 to i64
%79 = sitofp i64 %78 to double
%80 = fcmp oeq double %76, %79
br i1 %80, label %81, label %106
81: ; preds = %75
store i32 0, i32* %16
br label %82
82: ; preds = %102, %81
%83 = load i32, i32* %16
%84 = load i32, i32* %11
%85 = icmp slt i32 %83, %84
br i1 %85, label %86, label %105
86: ; preds = %82
%87 = load i32, i32* %16
%88 = load i32, i32* %9
%89 = add nsw i32 %87, %88
%90 = srem i32 %89, 2
%91 = icmp ne i32 %90, 0
br i1 %91, label %92, label %94
92: ; preds = %86
%93 = load double, double* @HUGE_VAL
br label %96
94: ; preds = %86
%95 = load double, double* @FP_NAN
br label %96
96: ; preds = %94, %92
%97 = phi double [ %93, %92 ], [ %95, %94 ]
%98 = load double*, double** %12
%99 = load i32, i32* %16
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds double, double* %98, i64 %100
store double %97, double* %101
br label %102
102: ; preds = %96
%103 = load i32, i32* %16
%104 = add nsw i32 %103, 1
store i32 %104, i32* %16
br label %82
105: ; preds = %82
br label %961
106: ; preds = %75
%107 = load double, double* %8
%108 = fsub double 1.000000e+00, %107
%109 = load i32, i32* %9
%110 = load i32, i32* %11
%111 = load double*, double** %12
%112 = load i32*, i32** %13
%113 = load i32*, i32** %14
%114 = load i32, i32* %11
%115 = icmp sgt i32 %114, 1
br i1 %115, label %119, label %116
116: ; preds = %106
%117 = load i32, i32* %9
%118 = icmp sgt i32 %117, 3
br i1 %118, label %119, label %121
119: ; preds = %116, %106
%120 = load i32*, i32** %14
store i32 4, i32* %120
br label %961
121: ; preds = %116
%122 = load double, double* @M_PI
%123 = load double, double* %8
%124 = fmul double %123, %122
store double %124, double* %8
%125 = load i32, i32* %9
%126 = icmp eq i32 %125, 0
br i1 %126, label %127, label %133
127: ; preds = %121
%128 = load double, double* %8
%129 = call double @cos(double %128)
%130 = load double, double* %8
%131 = call double @sin(double %130)
%132 = fdiv double %129, %131
store double %132, double* %43
br label %174
133: ; preds = %121
%134 = load i32, i32* %9
%135 = icmp eq i32 %134, 1
br i1 %135, label %136, label %142
136: ; preds = %133
%137 = load double, double* %8
%138 = call double @sin(double %137)
%139 = call i32 @pow(double %138, double 2.000000e+00)
%140 = sdiv i32 -1, %139
%141 = sitofp i32 %140 to double
store double %141, double* %43
br label %173
142: ; preds = %133
%143 = load i32, i32* %9
%144 = icmp eq i32 %143, 2
br i1 %144, label %145, label %154
145: ; preds = %142
%146 = load double, double* %8
%147 = call double @cos(double %146)
%148 = fmul double 2.000000e+00, %147
%149 = load double, double* %8
%150 = call double @sin(double %149)
%151 = call i32 @pow(double %150, double 3.000000e+00)
%152 = sitofp i32 %151 to double
%153 = fdiv double %148, %152
store double %153, double* %43
br label %172
154: ; preds = %142
%155 = load i32, i32* %9
%156 = icmp eq i32 %155, 3
br i1 %156, label %157, label %169
157: ; preds = %154
%158 = load double, double* %8
%159 = call double @cos(double %158)
%160 = call i32 @pow(double %159, double 2.000000e+00)
%161 = mul nsw i32 2, %160
%162 = add nsw i32 %161, 1
%163 = mul nsw i32 -2, %162
%164 = load double, double* %8
%165 = call double @sin(double %164)
%166 = call i32 @pow(double %165, double 4.000000e+00)
%167 = sdiv i32 %163, %166
%168 = sitofp i32 %167 to double
store double %168, double* %43
br label %171
169: ; preds = %154
%170 = load double, double* @FP_NAN
store double %170, double* %43
br label %171
171: ; preds = %169, %157
br label %172
172: ; preds = %171, %145
br label %173
173: ; preds = %172, %136
br label %174
174: ; preds = %173, %127
%175 = load i32, i32* %9
%176 = srem i32 %175, 2
%177 = icmp ne i32 %176, 0
%178 = zext i1 %177 to i64
%179 = select i1 %177, double -1.000000e+00, double 1.000000e+00
store double %179, double* %34
store double 1.000000e+00, double* %34
store double 1.000000e+00, double* %45
store double 1.000000e+00, double* %44
store i32 0, i32* %17
%180 = load i32, i32* %17
%181 = load i32, i32* %9
%182 = sub nsw i32 %180, %181
store i32 %182, i32* %16
br label %183
183: ; preds = %219, %174
%184 = load i32, i32* %16
%185 = load i32, i32* %11
%186 = icmp slt i32 %184, %185
br i1 %186, label %187, label %226
187: ; preds = %183
%188 = load double, double* @M_PI
%189 = load double, double* %44
%190 = fmul double %189, %188
store double %190, double* %44
%191 = load i32, i32* %17
%192 = icmp sge i32 %191, 2
br i1 %192, label %193, label %198
193: ; preds = %187
%194 = load i32, i32* %17
%195 = sitofp i32 %194 to double
%196 = load double, double* %45
%197 = fmul double %196, %195
store double %197, double* %45
br label %198
198: ; preds = %193, %187
%199 = load i32, i32* %16
%200 = icmp sge i32 %199, 0
br i1 %200, label %201, label %218
201: ; preds = %198
%202 = load double, double* %34
%203 = load double*, double** %12
%204 = load i32, i32* %16
%205 = sext i32 %204 to i64
%206 = getelementptr inbounds double, double* %203, i64 %205
%207 = load double, double* %206
%208 = load double, double* %44
%209 = load double, double* %45
%210 = fdiv double %208, %209
%211 = load double, double* %43
%212 = call double @llvm.fmuladd.f64(double %210, double %211, double %207)
%213 = fmul double %202, %212
%214 = load double*, double** %12
%215 = load i32, i32* %16
%216 = sext i32 %215 to i64
%217 = getelementptr inbounds double, double* %214, i64 %216
store double %213, double* %217
br label %218
218: ; preds = %201, %198
br label %219
219: ; preds = %218
%220 = load i32, i32* %17
%221 = add nsw i32 %220, 1
store i32 %221, i32* %17
%222 = load i32, i32* %16
%223 = add nsw i32 %222, 1
store i32 %223, i32* %16
%224 = load double, double* %34
%225 = fneg double %224
store double %225, double* %34
br label %183
226: ; preds = %183
%227 = load i32, i32* %9
%228 = icmp eq i32 %227, 0
br i1 %228, label %229, label %238
229: ; preds = %226
%230 = load i32, i32* %10
%231 = icmp eq i32 %230, 2
br i1 %231, label %232, label %238
232: ; preds = %229
%233 = load double, double* %50
%234 = load double*, double** %12
%235 = getelementptr inbounds double, double* %234, i64 0
%236 = load double, double* %235
%237 = fadd double %236, %233
store double %237, double* %235
br label %238
238: ; preds = %232, %229, %226
br label %961
239: ; preds = %72
%240 = load i32*, i32** %13
store i32 0, i32* %240
%241 = load double, double* %8
%242 = call double @log(double %241)
store double %242, double* %50
%243 = load i32, i32* %10
%244 = icmp eq i32 %243, 1
br i1 %244, label %245, label %290
245: ; preds = %239
%246 = load i32, i32* %11
%247 = icmp eq i32 %246, 1
br i1 %247, label %248, label %290
248: ; preds = %245
%249 = load i32, i32* @DBL_EPSILON
%250 = sitofp i32 %249 to double
%251 = fmul double 2.000000e+00, %250
%252 = fdiv double 1.000000e+00, %251
store double %252, double* %57
%253 = load i32, i32* %9
%254 = icmp eq i32 %253, 0
br i1 %254, label %255, label %266
255: ; preds = %248
%256 = load double, double* %8
%257 = load double, double* %50
%258 = fmul double %256, %257
%259 = load double, double* %57
%260 = fcmp ogt double %258, %259
br i1 %260, label %261, label %266
261: ; preds = %255
%262 = load double, double* %50
%263 = fneg double %262
%264 = load double*, double** %12
%265 = getelementptr inbounds double, double* %264, i64 0
store double %263, double* %265
br label %961
266: ; preds = %255, %248
%267 = load i32, i32* %9
%268 = icmp sge i32 %267, 1
br i1 %268, label %269, label %288
269: ; preds = %266
%270 = load double, double* %8
%271 = load i32, i32* %9
%272 = sitofp i32 %271 to double
%273 = load double, double* %57
%274 = fmul double %272, %273
%275 = fcmp ogt double %270, %274
br i1 %275, label %276, label %288
276: ; preds = %269
%277 = load i32, i32* %9
%278 = sub nsw i32 0, %277
%279 = sitofp i32 %278 to double
%280 = load double, double* %50
%281 = fmul double %279, %280
%282 = call i32 @exp(double %281)
%283 = load i32, i32* %9
%284 = sdiv i32 %282, %283
%285 = sitofp i32 %284 to double
%286 = load double*, double** %12
%287 = getelementptr inbounds double, double* %286, i64 0
store double %285, double* %287
br label %961
288: ; preds = %269, %266
br label %289
289: ; preds = %288
br label %290
290: ; preds = %289, %245, %239
%291 = load i32, i32* %11
store i32 %291, i32* %18
%292 = load i32, i32* @DBL_MIN_EXP
%293 = sub nsw i32 0, %292
%294 = load i32, i32* @DBL_MAX_EXP
%295 = call i32 @imin2(i32 %293, i32 %294)
store i32 %295, i32* %22
store double 0x3FD34413509F79FF, double* %33
%296 = load i32, i32* @DBL_EPSILON
%297 = sitofp i32 %296 to double
%298 = fmul double %297, 5.000000e-01
store double %298, double* %32
%299 = load double, double* %32
%300 = call double @llvm.maxnum.f64(double %299, double 5.000000e-19)
store double %300, double* %46
%301 = load i32, i32* %22
%302 = sitofp i32 %301 to double
%303 = load double, double* %33
%304 = call double @llvm.fmuladd.f64(double %302, double %303, double -3.000000e+00)
%305 = fmul double 2.302000e+00, %304
store double %305, double* %26
br label %306
306: ; preds = %499, %290
%307 = load i32, i32* %9
%308 = load i32, i32* %18
%309 = add nsw i32 %307, %308
%310 = sub nsw i32 %309, 1
store i32 %310, i32* %20
%311 = load i32, i32* %20
store i32 %311, i32* %23
%312 = load i32, i32* %23
%313 = add nsw i32 %312, 1
%314 = sitofp i32 %313 to double
%315 = load double, double* %50
%316 = fmul double %314, %315
store double %316, double* %36
%317 = load double, double* %36
%318 = call double @llvm.fabs.f64(double %317)
%319 = load double, double* %26
%320 = fcmp ogt double %318, %319
br i1 %320, label %321, label %328
321: ; preds = %306
%322 = load double, double* %36
%323 = fcmp ole double %322, 0.000000e+00
br i1 %323, label %324, label %327
324: ; preds = %321
%325 = load i32*, i32** %13
store i32 0, i32* %325
%326 = load i32*, i32** %14
store i32 2, i32* %326
br label %961
327: ; preds = %321
br label %487
328: ; preds = %306
%329 = load double, double* %8
%330 = load double, double* %46
%331 = fcmp olt double %329, %330
br i1 %331, label %332, label %379
332: ; preds = %328
%333 = load double, double* %8
%334 = load i32, i32* %9
%335 = sub nsw i32 0, %334
%336 = sitofp i32 %335 to double
%337 = fsub double %336, 1.000000e+00
%338 = call i32 @pow(double %333, double %337)
%339 = sitofp i32 %338 to double
%340 = load double*, double** %12
%341 = getelementptr inbounds double, double* %340, i64 0
store double %339, double* %341
%342 = load i32, i32* %18
%343 = icmp ne i32 %342, 1
br i1 %343, label %344, label %366
344: ; preds = %332
store i32 1, i32* %17
br label %345
345: ; preds = %362, %344
%346 = load i32, i32* %17
%347 = load i32, i32* %18
%348 = icmp slt i32 %346, %347
br i1 %348, label %349, label %365
349: ; preds = %345
%350 = load double*, double** %12
%351 = load i32, i32* %17
%352 = sub nsw i32 %351, 1
%353 = sext i32 %352 to i64
%354 = getelementptr inbounds double, double* %350, i64 %353
%355 = load double, double* %354
%356 = load double, double* %8
%357 = fdiv double %355, %356
%358 = load double*, double** %12
%359 = load i32, i32* %17
%360 = sext i32 %359 to i64
%361 = getelementptr inbounds double, double* %358, i64 %360
store double %357, double* %361
br label %362
362: ; preds = %349
%363 = load i32, i32* %17
%364 = add nsw i32 %363, 1
store i32 %364, i32* %17
br label %345
365: ; preds = %345
br label %366
366: ; preds = %365, %332
%367 = load i32, i32* %9
%368 = icmp eq i32 %367, 0
br i1 %368, label %369, label %378
369: ; preds = %366
%370 = load i32, i32* %10
%371 = icmp eq i32 %370, 2
br i1 %371, label %372, label %378
372: ; preds = %369
%373 = load double, double* %50
%374 = load double*, double** %12
%375 = getelementptr inbounds double, double* %374, i64 0
%376 = load double, double* %375
%377 = fadd double %376, %373
store double %377, double* %375
br label %378
378: ; preds = %372, %369, %366
br label %961
379: ; preds = %328
%380 = load double, double* %33
%381 = load double, double* @DBL_MANT_DIG
%382 = fmul double %380, %381
store double %382, double* %30
%383 = load double, double* %30
%384 = call double @llvm.minnum.f64(double %383, double 1.806000e+01)
store double %384, double* %30
%385 = load double, double* %30
%386 = call double @llvm.maxnum.f64(double %385, double 3.000000e+00)
%387 = fsub double %386, 3.000000e+00
store double %387, double* %28
%388 = load double, double* %28
%389 = call double @llvm.fmuladd.f64(double 4.000000e-01, double %388, double 3.500000e+00)
store double %389, double* %54
%390 = load double, double* %28
%391 = load double, double* %28
%392 = call double @llvm.fmuladd.f64(double 6.038000e-04, double %391, double 8.677000e-03)
%393 = call double @llvm.fmuladd.f64(double %390, double %392, double 2.100000e-01)
store double %393, double* %35
%394 = load double, double* %54
%395 = load double, double* %35
%396 = load i32, i32* %23
%397 = sitofp i32 %396 to double
%398 = call double @llvm.fmuladd.f64(double %395, double %397, double %394)
store double %398, double* %51
%399 = load double, double* %51
%400 = fptosi double %399 to i32
%401 = add nsw i32 %400, 1
store i32 %401, i32* %19
%402 = load i32, i32* %19
%403 = sitofp i32 %402 to double
store double %403, double* %52
%404 = load i32, i32* %9
%405 = icmp ne i32 %404, 0
br i1 %405, label %406, label %445
406: ; preds = %379
%407 = load double, double* %30
%408 = load double, double* %50
%409 = call double @llvm.minnum.f64(double 0.000000e+00, double %408)
%410 = fneg double %409
%411 = call double @llvm.fmuladd.f64(double -2.302000e+00, double %407, double %410)
store double %411, double* %51
%412 = load double, double* %51
%413 = load i32, i32* %9
%414 = sitofp i32 %413 to double
%415 = fdiv double %412, %414
store double %415, double* %24
%416 = load double, double* %24
%417 = call double @llvm.minnum.f64(double 0.000000e+00, double %416)
store double %417, double* %24
%418 = load double, double* %24
%419 = call i32 @exp(double %418)
%420 = sitofp i32 %419 to double
store double %420, double* %27
%421 = load double, double* %27
%422 = fsub double 1.000000e+00, %421
store double %422, double* %51
%423 = load double, double* %24
%424 = call double @llvm.fabs.f64(double %423)
%425 = fcmp olt double %424, 1.000000e-03
br i1 %425, label %426, label %429
426: ; preds = %406
%427 = load double, double* %24
%428 = fneg double %427
store double %428, double* %51
br label %429
429: ; preds = %426, %406
%430 = load double, double* %8
%431 = load double, double* %51
%432 = fmul double %430, %431
%433 = load double, double* %27
%434 = fdiv double %432, %433
store double %434, double* %28
%435 = load double, double* %52
%436 = load double, double* %8
%437 = fsub double %435, %436
store double %437, double* %51
%438 = load double, double* %51
%439 = fcmp ogt double %438, 7.000000e+00
br i1 %439, label %440, label %444
440: ; preds = %429
%441 = load double, double* %28
%442 = fcmp olt double %441, 1.500000e+01
br i1 %442, label %443, label %444
443: ; preds = %440
br label %500
444: ; preds = %440, %429
br label %445
445: ; preds = %444, %379
%446 = load double, double* %8
store double %446, double* %48
%447 = load double, double* %50
store double %447, double* %47
store double 0.000000e+00, double* %49
%448 = load double, double* %8
%449 = load double, double* %52
%450 = fcmp olt double %448, %449
br i1 %450, label %451, label %463
451: ; preds = %445
%452 = load double, double* %8
%453 = fptosi double %452 to i32
store i32 %453, i32* %22
%454 = load double, double* %52
%455 = load i32, i32* %22
%456 = sitofp i32 %455 to double
%457 = fsub double %454, %456
store double %457, double* %49
%458 = load double, double* %8
%459 = load double, double* %49
%460 = fadd double %458, %459
store double %460, double* %48
%461 = load double, double* %48
%462 = call double @log(double %461)
store double %462, double* %47
br label %463
463: ; preds = %451, %445
%464 = load i32, i32* %23
%465 = sitofp i32 %464 to double
%466 = load double, double* %47
%467 = fmul double %465, %466
store double %467, double* %36
%468 = load double, double* %47
%469 = load double, double* %47
%470 = fadd double %468, %469
store double %470, double* %44
%471 = load double, double* %36
%472 = load double, double* %47
%473 = fadd double %471, %472
store double %473, double* %45
%474 = load double, double* %36
%475 = call double @llvm.fabs.f64(double %474)
%476 = load double, double* %44
%477 = call double @llvm.fabs.f64(double %476)
%478 = load double, double* %45
%479 = call double @llvm.fabs.f64(double %478)
%480 = call double @llvm.maxnum.f64(double %477, double %479)
%481 = call double @llvm.maxnum.f64(double %475, double %480)
store double %481, double* %38
%482 = load double, double* %38
%483 = load double, double* %26
%484 = fcmp ole double %482, %483
br i1 %484, label %485, label %486
485: ; preds = %463
br label %617
486: ; preds = %463
br label %487
487: ; preds = %486, %327
%488 = load i32*, i32** %13
%489 = getelementptr inbounds i32, i32* %488, i32 1
store i32* %489, i32** %13
%490 = load i32, i32* %18
%491 = add nsw i32 %490, -1
store i32 %491, i32* %18
%492 = load double*, double** %12
%493 = load i32, i32* %18
%494 = sext i32 %493 to i64
%495 = getelementptr inbounds double, double* %492, i64 %494
store double 0.000000e+00, double* %495
%496 = load i32, i32* %18
%497 = icmp eq i32 %496, 0
br i1 %497, label %498, label %499
498: ; preds = %487
br label %961
499: ; preds = %487
br label %306
500: ; preds = %443
%501 = load double, double* %28
%502 = fptosi double %501 to i32
%503 = add nsw i32 %502, 1
store i32 %503, i32* %20
%504 = load i32, i32* %9
%505 = add nsw i32 %504, 1
store i32 %505, i32* %21
%506 = load i32, i32* %9
%507 = add nsw i32 %506, 1
%508 = sitofp i32 %507 to double
%509 = load double, double* %50
%510 = fmul double %508, %509
store double %510, double* %44
%511 = load double, double* %44
%512 = fneg double %511
%513 = call i32 @exp(double %512)
%514 = sitofp i32 %513 to double
store double %514, double* %36
%515 = load double, double* %36
store double %515, double* %34
%516 = load double, double* %8
store double %516, double* %25
store i32 1, i32* %15
br label %517
517: ; preds = %539, %500
%518 = load i32, i32* %15
%519 = load i32, i32* %20
%520 = icmp sle i32 %518, %519
br i1 %520, label %521, label %542
521: ; preds = %517
%522 = load double, double* %25
%523 = fadd double %522, 1.000000e+00
store double %523, double* %25
%524 = load double, double* %25
%525 = load i32, i32* %21
%526 = sub nsw i32 0, %525
%527 = sitofp i32 %526 to double
%528 = call i32 @pow(double %524, double %527)
%529 = sitofp i32 %528 to double
%530 = load i32, i32* %15
%531 = sext i32 %530 to i64
%532 = getelementptr inbounds [23 x double], [23 x double]* %55, i64 0, i64 %531
store double %529, double* %532
%533 = load i32, i32* %15
%534 = sext i32 %533 to i64
%535 = getelementptr inbounds [23 x double], [23 x double]* %55, i64 0, i64 %534
%536 = load double, double* %535
%537 = load double, double* %34
%538 = fadd double %537, %536
store double %538, double* %34
br label %539
539: ; preds = %521
%540 = load i32, i32* %15
%541 = add nsw i32 %540, 1
store i32 %541, i32* %15
br label %517
542: ; preds = %517
%543 = load double, double* %34
%544 = load double*, double** %12
%545 = getelementptr inbounds double, double* %544, i64 0
store double %543, double* %545
%546 = load i32, i32* %9
%547 = icmp eq i32 %546, 0
br i1 %547, label %548, label %557
548: ; preds = %542
%549 = load i32, i32* %10
%550 = icmp eq i32 %549, 2
br i1 %550, label %551, label %557
551: ; preds = %548
%552 = load double, double* %34
%553 = load double, double* %50
%554 = fadd double %552, %553
%555 = load double*, double** %12
%556 = getelementptr inbounds double, double* %555, i64 0
store double %554, double* %556
br label %557
557: ; preds = %551, %548, %542
%558 = load i32, i32* %18
%559 = icmp ne i32 %558, 1
br i1 %559, label %560, label %616
560: ; preds = %557
%561 = load double, double* %46
%562 = fdiv double %561, 5.000000e+00
store double %562, double* %39
store i32 1, i32* %16
br label %563
563: ; preds = %612, %560
%564 = load i32, i32* %16
%565 = load i32, i32* %18
%566 = icmp slt i32 %564, %565
br i1 %566, label %567, label %615
567: ; preds = %563
%568 = load double, double* %8
%569 = load double, double* %36
%570 = fdiv double %569, %568
store double %570, double* %36
%571 = load double, double* %36
store double %571, double* %34
%572 = load double, double* %36
%573 = load double, double* %39
%574 = fmul double %572, %573
store double %574, double* %40
%575 = load double, double* %8
store double %575, double* %25
store i32 1, i32* %15
br label %576
576: ; preds = %603, %567
%577 = load i32, i32* %15
%578 = load i32, i32* %20
%579 = icmp sle i32 %577, %578
br i1 %579, label %580, label %606
580: ; preds = %576
%581 = load double, double* %25
%582 = fadd double %581, 1.000000e+00
store double %582, double* %25
%583 = load double, double* %25
%584 = load i32, i32* %15
%585 = sext i32 %584 to i64
%586 = getelementptr inbounds [23 x double], [23 x double]* %55, i64 0, i64 %585
%587 = load double, double* %586
%588 = fdiv double %587, %583
store double %588, double* %586
%589 = load i32, i32* %15
%590 = sext i32 %589 to i64
%591 = getelementptr inbounds [23 x double], [23 x double]* %55, i64 0, i64 %590
%592 = load double, double* %591
%593 = load double, double* %34
%594 = fadd double %593, %592
store double %594, double* %34
%595 = load i32, i32* %15
%596 = sext i32 %595 to i64
%597 = getelementptr inbounds [23 x double], [23 x double]* %55, i64 0, i64 %596
%598 = load double, double* %597
%599 = load double, double* %40
%600 = fcmp olt double %598, %599
br i1 %600, label %601, label %602
601: ; preds = %580
br label %606
602: ; preds = %580
br label %603
603: ; preds = %602
%604 = load i32, i32* %15
%605 = add nsw i32 %604, 1
store i32 %605, i32* %15
br label %576
606: ; preds = %601, %576
%607 = load double, double* %34
%608 = load double*, double** %12
%609 = load i32, i32* %16
%610 = sext i32 %609 to i64
%611 = getelementptr inbounds double, double* %608, i64 %610
store double %607, double* %611
br label %612
612: ; preds = %606
%613 = load i32, i32* %16
%614 = add nsw i32 %613, 1
store i32 %614, i32* %16
br label %563
615: ; preds = %563
br label %616
616: ; preds = %615, %557
br label %961
617: ; preds = %485
%618 = load double, double* %36
%619 = fneg double %618
%620 = call i32 @exp(double %619)
%621 = sitofp i32 %620 to double
store double %621, double* %41
%622 = load double, double* %48
%623 = fdiv double 5.000000e-01, %622
store double %623, double* %43
%624 = load double, double* %43
store double %624, double* %44
%625 = load double, double* %46
%626 = load double, double* %43
%627 = fmul double %625, %626
store double %627, double* %42
%628 = load i32, i32* %20
%629 = icmp ne i32 %628, 0
br i1 %629, label %630, label %636
630: ; preds = %617
%631 = load double, double* %43
%632 = load i32, i32* %23
%633 = sitofp i32 %632 to double
%634 = fdiv double 1.000000e+00, %633
%635 = fadd double %631, %634
store double %635, double* %44
br label %636
636: ; preds = %630, %617
%637 = load double, double* %48
%638 = load double, double* %48
%639 = fmul double %637, %638
%640 = fdiv double 1.000000e+00, %639
store double %640, double* %31
%641 = load double, double* %31
%642 = fmul double 5.000000e-01, %641
store double %642, double* %37
%643 = load i32, i32* %23
%644 = add nsw i32 %643, 1
%645 = sitofp i32 %644 to double
%646 = load double, double* %37
%647 = fmul double %645, %646
store double %647, double* %36
%648 = load double, double* %36
%649 = load double, double* getelementptr inbounds ([22 x double], [22 x double]* @dpsifn.bvalues, i64 0, i64 2)
%650 = fmul double %648, %649
store double %650, double* %34
%651 = load double, double* %34
%652 = call double @llvm.fabs.f64(double %651)
%653 = load double, double* %42
%654 = fcmp oge double %652, %653
br i1 %654, label %655, label %711
655: ; preds = %636
store double 2.000000e+00, double* %38
store i32 4, i32* %17
br label %656
656: ; preds = %707, %655
%657 = load i32, i32* %17
%658 = icmp sle i32 %657, 22
br i1 %658, label %659, label %710
659: ; preds = %656
%660 = load double, double* %36
%661 = load double, double* %38
%662 = load i32, i32* %23
%663 = sitofp i32 %662 to double
%664 = fadd double %661, %663
%665 = fadd double %664, 1.000000e+00
%666 = load double, double* %38
%667 = fadd double %666, 1.000000e+00
%668 = fdiv double %665, %667
%669 = fmul double %660, %668
%670 = load double, double* %38
%671 = load i32, i32* %23
%672 = sitofp i32 %671 to double
%673 = fadd double %670, %672
%674 = load double, double* %38
%675 = fadd double %674, 2.000000e+00
%676 = fdiv double %673, %675
%677 = fmul double %669, %676
%678 = load double, double* %31
%679 = fmul double %677, %678
store double %679, double* %36
%680 = load double, double* %36
%681 = load i32, i32* %17
%682 = sub nsw i32 %681, 1
%683 = sext i32 %682 to i64
%684 = getelementptr inbounds [22 x double], [22 x double]* @dpsifn.bvalues, i64 0, i64 %683
%685 = load double, double* %684
%686 = fmul double %680, %685
%687 = load i32, i32* %17
%688 = sext i32 %687 to i64
%689 = getelementptr inbounds [23 x double], [23 x double]* %55, i64 0, i64 %688
store double %686, double* %689
%690 = load i32, i32* %17
%691 = sext i32 %690 to i64
%692 = getelementptr inbounds [23 x double], [23 x double]* %55, i64 0, i64 %691
%693 = load double, double* %692
%694 = call double @llvm.fabs.f64(double %693)
%695 = load double, double* %42
%696 = fcmp olt double %694, %695
br i1 %696, label %697, label %698
697: ; preds = %659
br label %710
698: ; preds = %659
%699 = load i32, i32* %17
%700 = sext i32 %699 to i64
%701 = getelementptr inbounds [23 x double], [23 x double]* %55, i64 0, i64 %700
%702 = load double, double* %701
%703 = load double, double* %34
%704 = fadd double %703, %702
store double %704, double* %34
%705 = load double, double* %38
%706 = fadd double %705, 2.000000e+00
store double %706, double* %38
br label %707
707: ; preds = %698
%708 = load i32, i32* %17
%709 = add nsw i32 %708, 1
store i32 %709, i32* %17
br label %656
710: ; preds = %697, %656
br label %711
711: ; preds = %710, %636
%712 = load double, double* %34
%713 = load double, double* %44
%714 = fadd double %712, %713
%715 = load double, double* %41
%716 = fmul double %714, %715
store double %716, double* %34
%717 = load double, double* %49
%718 = fcmp une double %717, 0.000000e+00
br i1 %718, label %719, label %769
719: ; preds = %711
%720 = load double, double* %49
%721 = fptosi double %720 to i32
store i32 %721, i32* %22
%722 = load i32, i32* %20
%723 = add nsw i32 %722, 1
store i32 %723, i32* %21
%724 = load i32, i32* %22
%725 = icmp sgt i32 %724, 100
br i1 %725, label %726, label %729
726: ; preds = %719
%727 = load i32*, i32** %13
store i32 0, i32* %727
%728 = load i32*, i32** %14
store i32 3, i32* %728
br label %961
729: ; preds = %719
%730 = load i32, i32* %20
%731 = icmp eq i32 %730, 0
br i1 %731, label %732, label %733
732: ; preds = %729
br label %917
733: ; preds = %729
%734 = load double, double* %49
%735 = fsub double %734, 1.000000e+00
store double %735, double* %51
%736 = load double, double* %8
%737 = load double, double* %51
%738 = fadd double %736, %737
store double %738, double* %29
store i32 1, i32* %15
br label %739
739: ; preds = %764, %733
%740 = load i32, i32* %15
%741 = load i32, i32* %22
%742 = icmp sle i32 %740, %741
br i1 %742, label %743, label %767
743: ; preds = %739
%744 = load double, double* %29
%745 = load i32, i32* %21
%746 = sub nsw i32 0, %745
%747 = sitofp i32 %746 to double
%748 = call i32 @pow(double %744, double %747)
%749 = sitofp i32 %748 to double
%750 = load i32, i32* %15
%751 = sext i32 %750 to i64
%752 = getelementptr inbounds [101 x double], [101 x double]* %56, i64 0, i64 %751
store double %749, double* %752
%753 = load i32, i32* %15
%754 = sext i32 %753 to i64
%755 = getelementptr inbounds [101 x double], [101 x double]* %56, i64 0, i64 %754
%756 = load double, double* %755
%757 = load double, double* %34
%758 = fadd double %757, %756
store double %758, double* %34
%759 = load double, double* %51
%760 = fsub double %759, 1.000000e+00
store double %760, double* %51
%761 = load double, double* %8
%762 = load double, double* %51
%763 = fadd double %761, %762
store double %763, double* %29
br label %764
764: ; preds = %743
%765 = load i32, i32* %15
%766 = add nsw i32 %765, 1
store i32 %766, i32* %15
br label %739
767: ; preds = %739
br label %768
768: ; preds = %767
br label %769
769: ; preds = %768, %711
%770 = load double, double* %34
%771 = load double*, double** %12
%772 = load i32, i32* %18
%773 = sub nsw i32 %772, 1
%774 = sext i32 %773 to i64
%775 = getelementptr inbounds double, double* %771, i64 %774
store double %770, double* %775
%776 = load i32, i32* %23
%777 = icmp eq i32 %776, 0
br i1 %777, label %778, label %779
778: ; preds = %769
br label %936
779: ; preds = %769
store i32 2, i32* %16
br label %780
780: ; preds = %913, %779
%781 = load i32, i32* %16
%782 = load i32, i32* %18
%783 = icmp sle i32 %781, %782
br i1 %783, label %784, label %916
784: ; preds = %780
%785 = load i32, i32* %23
%786 = add nsw i32 %785, -1
store i32 %786, i32* %23
%787 = load double, double* %48
%788 = load double, double* %41
%789 = fmul double %788, %787
store double %789, double* %41
%790 = load double, double* %43
store double %790, double* %44
%791 = load i32, i32* %23
%792 = icmp ne i32 %791, 0
br i1 %792, label %793, label %799
793: ; preds = %784
%794 = load double, double* %43
%795 = load i32, i32* %23
%796 = sitofp i32 %795 to double
%797 = fdiv double 1.000000e+00, %796
%798 = fadd double %794, %797
store double %798, double* %44
br label %799
799: ; preds = %793, %784
%800 = load i32, i32* %23
%801 = add nsw i32 %800, 1
%802 = sitofp i32 %801 to double
%803 = load double, double* %37
%804 = fmul double %802, %803
store double %804, double* %36
%805 = load double, double* %36
%806 = load double, double* getelementptr inbounds ([22 x double], [22 x double]* @dpsifn.bvalues, i64 0, i64 2)
%807 = fmul double %805, %806
store double %807, double* %34
%808 = load double, double* %34
%809 = call double @llvm.fabs.f64(double %808)
%810 = load double, double* %42
%811 = fcmp oge double %809, %810
br i1 %811, label %812, label %854
812: ; preds = %799
%813 = load i32, i32* %23
%814 = add nsw i32 4, %813
%815 = sitofp i32 %814 to double
store double %815, double* %38
store i32 4, i32* %17
br label %816
816: ; preds = %850, %812
%817 = load i32, i32* %17
%818 = icmp sle i32 %817, 22
br i1 %818, label %819, label %853
819: ; preds = %816
%820 = load i32, i32* %17
%821 = sext i32 %820 to i64
%822 = getelementptr inbounds [23 x double], [23 x double]* %55, i64 0, i64 %821
%823 = load double, double* %822
%824 = load i32, i32* %23
%825 = add nsw i32 %824, 1
%826 = sitofp i32 %825 to double
%827 = fmul double %823, %826
%828 = load double, double* %38
%829 = fdiv double %827, %828
%830 = load i32, i32* %17
%831 = sext i32 %830 to i64
%832 = getelementptr inbounds [23 x double], [23 x double]* %55, i64 0, i64 %831
store double %829, double* %832
%833 = load i32, i32* %17
%834 = sext i32 %833 to i64
%835 = getelementptr inbounds [23 x double], [23 x double]* %55, i64 0, i64 %834
%836 = load double, double* %835
%837 = call double @llvm.fabs.f64(double %836)
%838 = load double, double* %42
%839 = fcmp olt double %837, %838
br i1 %839, label %840, label %841
840: ; preds = %819
br label %853
841: ; preds = %819
%842 = load i32, i32* %17
%843 = sext i32 %842 to i64
%844 = getelementptr inbounds [23 x double], [23 x double]* %55, i64 0, i64 %843
%845 = load double, double* %844
%846 = load double, double* %34
%847 = fadd double %846, %845
store double %847, double* %34
%848 = load double, double* %38
%849 = fadd double %848, 2.000000e+00
store double %849, double* %38
br label %850
850: ; preds = %841
%851 = load i32, i32* %17
%852 = add nsw i32 %851, 1
store i32 %852, i32* %17
br label %816
853: ; preds = %840, %816
br label %854
854: ; preds = %853, %799
%855 = load double, double* %34
%856 = load double, double* %44
%857 = fadd double %855, %856
%858 = load double, double* %41
%859 = fmul double %857, %858
store double %859, double* %34
%860 = load double, double* %49
%861 = fcmp une double %860, 0.000000e+00
br i1 %861, label %862, label %901
862: ; preds = %854
%863 = load i32, i32* %23
%864 = icmp eq i32 %863, 0
br i1 %864, label %865, label %866
865: ; preds = %862
br label %917
866: ; preds = %862
%867 = load double, double* %49
%868 = fsub double %867, 1.000000e+00
store double %868, double* %51
%869 = load double, double* %8
%870 = load double, double* %51
%871 = fadd double %869, %870
store double %871, double* %29
store i32 1, i32* %15
br label %872
872: ; preds = %897, %866
%873 = load i32, i32* %15
%874 = load i32, i32* %22
%875 = icmp sle i32 %873, %874
br i1 %875, label %876, label %900
876: ; preds = %872
%877 = load i32, i32* %15
%878 = sext i32 %877 to i64
%879 = getelementptr inbounds [101 x double], [101 x double]* %56, i64 0, i64 %878
%880 = load double, double* %879
%881 = load double, double* %29
%882 = fmul double %880, %881
%883 = load i32, i32* %15
%884 = sext i32 %883 to i64
%885 = getelementptr inbounds [101 x double], [101 x double]* %56, i64 0, i64 %884
store double %882, double* %885
%886 = load i32, i32* %15
%887 = sext i32 %886 to i64
%888 = getelementptr inbounds [101 x double], [101 x double]* %56, i64 0, i64 %887
%889 = load double, double* %888
%890 = load double, double* %34
%891 = fadd double %890, %889
store double %891, double* %34
%892 = load double, double* %51
%893 = fsub double %892, 1.000000e+00
store double %893, double* %51
%894 = load double, double* %8
%895 = load double, double* %51
%896 = fadd double %894, %895
store double %896, double* %29
br label %897
897: ; preds = %876
%898 = load i32, i32* %15
%899 = add nsw i32 %898, 1
store i32 %899, i32* %15
br label %872
900: ; preds = %872
br label %901
901: ; preds = %900, %854
%902 = load double, double* %34
%903 = load double*, double** %12
%904 = load i32, i32* %18
%905 = load i32, i32* %16
%906 = sub nsw i32 %904, %905
%907 = sext i32 %906 to i64
%908 = getelementptr inbounds double, double* %903, i64 %907
store double %902, double* %908
%909 = load i32, i32* %23
%910 = icmp eq i32 %909, 0
br i1 %910, label %911, label %912
911: ; preds = %901
br label %936
912: ; preds = %901
br label %913
913: ; preds = %912
%914 = load i32, i32* %16
%915 = add nsw i32 %914, 1
store i32 %915, i32* %16
br label %780
916: ; preds = %780
br label %961
917: ; preds = %865, %732
store i32 1, i32* %15
br label %918
918: ; preds = %932, %917
%919 = load i32, i32* %15
%920 = load i32, i32* %22
%921 = icmp sle i32 %919, %920
br i1 %921, label %922, label %935
922: ; preds = %918
%923 = load double, double* %8
%924 = load i32, i32* %22
%925 = load i32, i32* %15
%926 = sub nsw i32 %924, %925
%927 = sitofp i32 %926 to double
%928 = fadd double %923, %927
%929 = fdiv double 1.000000e+00, %928
%930 = load double, double* %34
%931 = fadd double %930, %929
store double %931, double* %34
br label %932
932: ; preds = %922
%933 = load i32, i32* %15
%934 = add nsw i32 %933, 1
store i32 %934, i32* %15
br label %918
935: ; preds = %918
br label %936
936: ; preds = %935, %911, %778
%937 = load i32, i32* %10
%938 = icmp ne i32 %937, 2
br i1 %938, label %939, label %945
939: ; preds = %936
%940 = load double, double* %34
%941 = load double, double* %47
%942 = fsub double %940, %941
%943 = load double*, double** %12
%944 = getelementptr inbounds double, double* %943, i64 0
store double %942, double* %944
br label %960
945: ; preds = %936
%946 = load double, double* %48
%947 = load double, double* %8
%948 = fcmp une double %946, %947
br i1 %948, label %949, label %959
949: ; preds = %945
%950 = load double, double* %48
%951 = load double, double* %8
%952 = fdiv double %950, %951
store double %952, double* %53
%953 = load double, double* %34
%954 = load double, double* %53
%955 = call double @log(double %954)
%956 = fsub double %953, %955
%957 = load double*, double** %12
%958 = getelementptr inbounds double, double* %957, i64 0
store double %956, double* %958
br label %959
959: ; preds = %949, %945
br label %960
960: ; preds = %959, %939
br label %961
961: ; preds = %960, %916, %726, %616, %498, %378, %324, %276, %261, %238, %119, %105, %70
ret void
}

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