double cdflib_beta_asym(const double *a, const double *b, const double *lambda,
                        const double *eps) {
  static const double e0 = 1.12837916709551e0;
  static const double e1 = .353553390593274e0;
  static const int num = 20;
  static const int K3 = 1;
  double value;
  double bsum, dsum, f, h, h2, hn, j0, j1, r, r0, r1, s, sum, t, t0, t1, u, w,
      w0, z, z0, z2, zn, znm1;
  int i, im1, imj, j, m, mm1, mmj, n, np1;
  double a0[21], b0[21], c[21], d[21], T1, T2;
  value = 0.0e0;
  if (*a >= *b) {
    goto S10;
  }
  h = *a / *b;
  r0 = 1.0e0 / (1.0e0 + h);
  r1 = (*b - *a) / *b;
  w0 = 1.0e0 / sqrt(*a * (1.0e0 + h));
  goto S20;
S10:
  h = *b / *a;
  r0 = 1.0e0 / (1.0e0 + h);
  r1 = (*b - *a) / *a;
  w0 = 1.0e0 / sqrt(*b * (1.0e0 + h));
S20:
  T1 = -(*lambda / *a);
  T2 = *lambda / *b;
  f = *a * cdflib_rlog1(&T1) + *b * cdflib_rlog1(&T2);
  t = exp(-f);
  if (t == 0.0e0) {
    return value;
  }
  z0 = sqrt(f);
  z = 0.5e0 * (z0 / e1);
  z2 = f + f;
  a0[0] = 2.0e0 / 3.0e0 * r1;
  c[0] = -(0.5e0 * a0[0]);
  d[0] = -c[0];
  j0 = 0.5e0 / e0 * cdflib_error_fc(&K3, &z0);
  j1 = e1;
  sum = j0 + d[0] * w0 * j1;
  s = 1.0e0;
  h2 = h * h;
  hn = 1.0e0;
  w = w0;
  znm1 = z;
  zn = z2;
  for (n = 2; n <= num; n += 2) {
    hn = h2 * hn;
    a0[n - 1] = 2.0e0 * r0 * (1.0e0 + h * hn) / ((double)n + 2.0e0);
    np1 = n + 1;
    s += hn;
    a0[np1 - 1] = 2.0e0 * r1 * s / ((double)n + 3.0e0);
    for (i = n; i <= np1; i++) {
      r = -(0.5e0 * ((double)i + 1.0e0));
      b0[0] = r * a0[0];
      for (m = 2; m <= i; m++) {
        bsum = 0.0e0;
        mm1 = m - 1;
        for (j = 1; j <= mm1; j++) {
          mmj = m - j;
          bsum += (((double)j * r - (double)mmj) * a0[j - 1] * b0[mmj - 1]);
        }
        b0[m - 1] = r * a0[m - 1] + bsum / (double)m;
      }
      c[i - 1] = b0[i - 1] / ((double)i + 1.0e0);
      dsum = 0.0e0;
      im1 = i - 1;
      for (j = 1; j <= im1; j++) {
        imj = i - j;
        dsum += (d[imj - 1] * c[j - 1]);
      }
      d[i - 1] = -(dsum + c[i - 1]);
    }
    j0 = e1 * znm1 + ((double)n - 1.0e0) * j0;
    j1 = e1 * zn + (double)n * j1;
    znm1 = z2 * znm1;
    zn = z2 * zn;
    w = w0 * w;
    t0 = d[n - 1] * w * j0;
    w = w0 * w;
    t1 = d[np1 - 1] * w * j1;
    sum += (t0 + t1);
    if (fabs(t0) + fabs(t1) <= *eps * sum) {
      goto S80;
    }
  }
S80:
  u = exp(-cdflib_bcorr(a, b));
  value = e0 * t * u * sum;
  return value;
}


x86 assembly (clang, -O0):
<cdflib_beta_asym>:
push   %rbp
mov    %rsp,%rbp
sub    $0x400,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %rcx,-0x28(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x30(%rbp)
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
ucomisd (%rax),%xmm0
jb     118e <cdflib_beta_asym+0x3e>
jmp    121b <cdflib_beta_asym+0xcb>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
divsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xe55(%rip),%xmm1
addsd  -0x50(%rbp),%xmm1
movsd  0xe48(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
divsd  (%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xe0f(%rip),%xmm1
addsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  0xdf6(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
jmp    12a3 <cdflib_beta_asym+0x153>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
divsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0xdc8(%rip),%xmm1
addsd  -0x50(%rbp),%xmm1
movsd  0xdbb(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
divsd  (%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xd82(%rip),%xmm1
addsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
call   1060 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  0xd69(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x10(%rbp),%rax
divsd  (%rax),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x3d8(%rbp)
ff
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
divsd  (%rax),%xmm0
movsd  %xmm0,-0x3e0(%rbp)
ff
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x3f0(%rbp)
ff
lea    -0x3d8(%rbp),%rdi
mov    $0x0,%al
call   1030 <cdflib_rlog1@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x3e8(%rbp)
ff
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x3f8(%rbp)
ff
lea    -0x3e0(%rbp),%rdi
mov    $0x0,%al
call   1030 <cdflib_rlog1@plt>
movsd  -0x3f8(%rbp),%xmm1
ff
movsd  -0x3f0(%rbp),%xmm0
ff
movsd  -0x3e8(%rbp),%xmm2
ff
cvtsi2sd %eax,%xmm3
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1050 <exp@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    13b2 <cdflib_beta_asym+0x262>
jp     13b2 <cdflib_beta_asym+0x262>
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1ad3 <cdflib_beta_asym+0x983>
movsd  -0x48(%rbp),%xmm0
call   1060 <sqrt@plt>
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm1
ff
movsd  0xc34(%rip),%xmm0
divsd  %xmm0,%xmm1
movsd  0xc38(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
addsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  0xc1a(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  0xbfa(%rip),%xmm0
mulsd  -0x1c0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x320(%rbp)
ff
movsd  -0x320(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x3d0(%rbp)
ff
lea    0xbf1(%rip),%rdi
lea    -0xd8(%rbp),%rsi
mov    $0x0,%al
call   1070 <cdflib_error_fc@plt>
cvtsi2sd %eax,%xmm1
movsd  0xb83(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  0xb6a(%rip),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x68(%rbp),%xmm1
movsd  -0x3d0(%rbp),%xmm0
ff
mulsd  -0xc8(%rbp),%xmm0
ff
movsd  -0x70(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0xb2b(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  0xb0c(%rip),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0xc8(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movl   $0x2,-0x110(%rbp)
cmpl   $0x14,-0x110(%rbp)
jg     1a79 <cdflib_beta_asym+0x929>
movsd  -0x58(%rbp),%xmm0
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0xad9(%rip),%xmm0
mulsd  -0x80(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm1
movsd  -0x60(%rbp),%xmm2
mulsd  %xmm2,%xmm1
movsd  0xa8e(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsi2sdl -0x110(%rbp),%xmm1
ff
movsd  0xaa6(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x110(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x1c0(%rbp,%rax,8)
ff ff
mov    -0x110(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x114(%rbp)
movsd  -0x60(%rbp),%xmm0
addsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xa5e(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x90(%rbp),%xmm0
ff
cvtsi2sdl -0x110(%rbp),%xmm1
ff
movsd  0xa36(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0x114(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x1c0(%rbp,%rax,8)
ff ff
mov    -0x110(%rbp),%eax
mov    %eax,-0xf4(%rbp)
mov    -0xf4(%rbp),%eax
cmp    -0x114(%rbp),%eax
jg     18e5 <cdflib_beta_asym+0x795>
cvtsi2sdl -0xf4(%rbp),%xmm1
ff
movsd  0x9c4(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  0x9d0(%rip),%xmm0
mulsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
mulsd  -0x1c0(%rbp),%xmm0
ff
movsd  %xmm0,-0x270(%rbp)
ff
movl   $0x2,-0x104(%rbp)
mov    -0x104(%rbp),%eax
cmp    -0xf4(%rbp),%eax
jg     17ba <cdflib_beta_asym+0x66a>
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x104(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x108(%rbp)
movl   $0x1,-0x100(%rbp)
mov    -0x100(%rbp),%eax
cmp    -0x108(%rbp),%eax
jg     1760 <cdflib_beta_asym+0x610>
mov    -0x104(%rbp),%eax
sub    -0x100(%rbp),%eax
mov    %eax,-0x10c(%rbp)
cvtsi2sdl -0x100(%rbp),%xmm0
ff
movsd  -0x78(%rbp),%xmm2
cvtsi2sdl -0x10c(%rbp),%xmm1
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x100(%rbp),%eax
sub    $0x1,%eax
cltq
mulsd  -0x1c0(%rbp,%rax,8),%xmm0
ff ff
mov    -0x10c(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x270(%rbp,%rax,8),%xmm2
ff ff
movsd  -0x38(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    -0x100(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x100(%rbp)
jmp    16ba <cdflib_beta_asym+0x56a>
movsd  -0x78(%rbp),%xmm0
mov    -0x104(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x1c0(%rbp,%rax,8),%xmm2
ff ff
movsd  -0x38(%rbp),%xmm1
cvtsi2sdl -0x104(%rbp),%xmm3
ff
divsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mov    -0x104(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x270(%rbp,%rax,8)
ff ff
mov    -0x104(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x104(%rbp)
jmp    1687 <cdflib_beta_asym+0x537>
mov    -0xf4(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x270(%rbp,%rax,8),%xmm0
ff ff
cvtsi2sdl -0xf4(%rbp),%xmm1
ff
movsd  0x822(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
mov    -0xf4(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x320(%rbp,%rax,8)
ff ff
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0xf4(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0xf8(%rbp)
movl   $0x1,-0x100(%rbp)
mov    -0x100(%rbp),%eax
cmp    -0xf8(%rbp),%eax
jg     188d <cdflib_beta_asym+0x73d>
mov    -0xf4(%rbp),%eax
sub    -0x100(%rbp),%eax
mov    %eax,-0xfc(%rbp)
mov    -0xfc(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x3d0(%rbp,%rax,8),%xmm0
ff ff
mov    -0x100(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x320(%rbp,%rax,8),%xmm2
ff ff
movsd  -0x40(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x100(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x100(%rbp)
jmp    181b <cdflib_beta_asym+0x6cb>
movsd  -0x40(%rbp),%xmm0
mov    -0xf4(%rbp),%eax
sub    $0x1,%eax
cltq
addsd  -0x320(%rbp,%rax,8),%xmm0
ff ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mov    -0xf4(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  %xmm0,-0x3d0(%rbp,%rax,8)
ff ff
mov    -0xf4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf4(%rbp)
jmp    161a <cdflib_beta_asym+0x4ca>
movsd  -0xf0(%rbp),%xmm0
ff
cvtsi2sdl -0x110(%rbp),%xmm1
ff
movsd  0x703(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  -0x68(%rbp),%xmm1
movsd  0x6fa(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0xe8(%rbp),%xmm0
ff
cvtsi2sdl -0x110(%rbp),%xmm1
ff
mulsd  -0x70(%rbp),%xmm1
movsd  0x6d0(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xf0(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  -0xe8(%rbp),%xmm0
ff
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x110(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x3d0(%rbp,%rax,8),%xmm0
ff ff
mulsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
mov    -0x114(%rbp),%eax
sub    $0x1,%eax
cltq
movsd  -0x3d0(%rbp,%rax,8),%xmm0
ff ff
mulsd  -0xc0(%rbp),%xmm0
ff
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0xb0(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0xa8(%rbp),%xmm1
ff
movaps 0x61a(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  -0xb0(%rbp),%xmm0
ff
movaps 0x607(%rip),%xmm2
pand   %xmm2,%xmm0
addsd  %xmm0,%xmm1
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
mulsd  -0x98(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jb     1a60 <cdflib_beta_asym+0x910>
jmp    1a7e <cdflib_beta_asym+0x92e>
jmp    1a65 <cdflib_beta_asym+0x915>
mov    -0x110(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x110(%rbp)
jmp    1533 <cdflib_beta_asym+0x3e3>
jmp    1a7e <cdflib_beta_asym+0x92e>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    $0x0,%al
call   1040 <cdflib_bcorr@plt>
mov    %eax,%ecx
xor    %eax,%eax
sub    %ecx,%eax
cvtsi2sd %eax,%xmm0
call   1050 <exp@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0x58c(%rip),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
mulsd  -0xb8(%rbp),%xmm0
ff
mulsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x30(%rbp)
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x400,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cdflib_beta_asym>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x350,%rsp
mov    %rcx,%r15
mov    %rdx,%rbx
mov    %rsi,%r12
mov    %rdi,%r14
movsd  (%rdi),%xmm0
movsd  (%rsi),%xmm1
ucomisd %xmm1,%xmm0
jae    11b2 <cdflib_beta_asym+0x62>
movapd %xmm0,%xmm2
divsd  %xmm1,%xmm2
movsd  0xe76(%rip),%xmm3
movsd  %xmm2,0x28(%rsp)
addsd  %xmm2,%xmm3
movapd %xmm1,%xmm2
subsd  %xmm0,%xmm2
divsd  %xmm1,%xmm2
movapd %xmm2,0x50(%rsp)
movsd  %xmm3,0x40(%rsp)
mulsd  %xmm3,%xmm0
jmp    11ec <cdflib_beta_asym+0x9c>
movapd %xmm1,%xmm2
divsd  %xmm0,%xmm2
movsd  0xe3e(%rip),%xmm3
movsd  %xmm2,0x28(%rsp)
addsd  %xmm2,%xmm3
movapd %xmm1,%xmm2
subsd  %xmm0,%xmm2
divsd  %xmm0,%xmm2
movapd %xmm2,0x50(%rsp)
movsd  %xmm3,0x40(%rsp)
mulsd  %xmm3,%xmm1
movapd %xmm1,%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     11fc <cdflib_beta_asym+0xac>
sqrtsd %xmm0,%xmm0
jmp    1201 <cdflib_beta_asym+0xb1>
call   1060 <sqrt@plt>
movsd  %xmm0,0x8(%rsp)
movsd  (%rbx),%xmm0
movsd  (%r14),%xmm2
movsd  %xmm2,0x20(%rsp)
movapd %xmm0,%xmm1
xorpd  0xe1e(%rip),%xmm1
divsd  %xmm2,%xmm1
movsd  %xmm1,0x70(%rsp)
divsd  (%r12),%xmm0
movsd  %xmm0,0x68(%rsp)
lea    0x70(%rsp),%rdi
xor    %eax,%eax
call   1030 <cdflib_rlog1@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movapd %xmm0,0x10(%rsp)
movsd  (%r12),%xmm0
movsd  %xmm0,0x30(%rsp)
lea    0x68(%rsp),%rdi
xor    %eax,%eax
call   1030 <cdflib_rlog1@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x30(%rsp),%xmm0
movapd 0x10(%rsp),%xmm1
mulsd  0x20(%rsp),%xmm1
addsd  %xmm0,%xmm1
movapd %xmm1,0x10(%rsp)
movapd 0xdac(%rip),%xmm0
xorpd  %xmm1,%xmm0
call   1050 <exp@plt>
movapd %xmm0,%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jne    12b1 <cdflib_beta_asym+0x161>
jnp    1838 <cdflib_beta_asym+0x6e8>
movsd  0xd47(%rip),%xmm0
movapd %xmm0,%xmm2
divsd  0x8(%rsp),%xmm2
movsd  %xmm2,0x8(%rsp)
divsd  0x40(%rsp),%xmm0
movapd %xmm0,0x40(%rsp)
xorpd  %xmm0,%xmm0
movapd 0x10(%rsp),%xmm2
ucomisd %xmm0,%xmm2
movsd  %xmm1,0x60(%rsp)
jb     12f4 <cdflib_beta_asym+0x1a4>
xorps  %xmm0,%xmm0
sqrtsd %xmm2,%xmm0
jmp    1303 <cdflib_beta_asym+0x1b3>
movapd %xmm2,%xmm0
call   1060 <sqrt@plt>
movapd 0x10(%rsp),%xmm2
movsd  %xmm0,0x78(%rsp)
divsd  0xcf7(%rip),%xmm0
movapd %xmm0,%xmm1
unpcklpd %xmm2,%xmm1
movsd  0xcef(%rip),%xmm4
movapd %xmm4,%xmm3
unpcklpd %xmm2,%xmm3
addpd  %xmm1,%xmm3
movapd %xmm3,0x30(%rsp)
mulsd  %xmm4,%xmm0
shufpd $0x2,%xmm3,%xmm0
movapd %xmm0,0x80(%rsp)
movsd  0xccb(%rip),%xmm0
mulsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x2a0(%rsp)
movsd  %xmm0,0x20(%rsp)
mulsd  %xmm0,%xmm4
movapd %xmm4,0x10(%rsp)
movapd 0xccc(%rip),%xmm0
xorpd  %xmm4,%xmm0
movlpd %xmm0,0x90(%rsp)
movsd  %xmm4,0x1f0(%rsp)
lea    0xcff(%rip),%rdi
xor    %r13d,%r13d
lea    0x78(%rsp),%rsi
xor    %eax,%eax
call   1070 <cdflib_error_fc@plt>
movapd 0x80(%rsp),%xmm12
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xc67(%rip),%xmm0
movsd  0x8(%rsp),%xmm7
movapd 0x10(%rsp),%xmm1
mulsd  %xmm7,%xmm1
mulsd  0xc37(%rip),%xmm1
addsd  %xmm0,%xmm1
movapd %xmm1,0x10(%rsp)
movsd  0x28(%rsp),%xmm15
mulsd  %xmm15,%xmm15
movapd 0x40(%rsp),%xmm11
unpcklpd 0x50(%rsp),%xmm11
addpd  %xmm11,%xmm11
shufpd $0x2,0xc4d(%rip),%xmm0
movsd  (%r15),%xmm14
movapd 0x30(%rsp),%xmm1
unpckhpd %xmm1,%xmm1
movapd %xmm1,0x30(%rsp)
lea    0x1f8(%rsp),%r8
mov    $0x3,%ecx
mov    $0x2,%r10d
movapd 0xc3c(%rip),%xmm13
xor    %r9d,%r9d
movsd  0xbc0(%rip),%xmm9
movapd %xmm9,%xmm10
cs nopw 0x0(%rax,%rax,1)
nop
mulsd  %xmm15,%xmm10
movsd  0x28(%rsp),%xmm1
mulsd  %xmm10,%xmm1
movsd  0xb98(%rip),%xmm3
addsd  %xmm3,%xmm1
xorps  %xmm2,%xmm2
cvtsi2sd %r10d,%xmm2
addsd  %xmm10,%xmm9
unpcklpd %xmm9,%xmm1
mulpd  %xmm11,%xmm1
movapd %xmm2,%xmm4
unpcklpd %xmm2,%xmm4
addpd  0xbcd(%rip),%xmm4
divpd  %xmm4,%xmm1
movupd %xmm1,0x298(%rsp,%r10,8)
movapd %xmm2,%xmm4
addsd  %xmm3,%xmm4
movapd %xmm4,%xmm5
mulsd  0xb73(%rip),%xmm5
movapd %xmm5,%xmm1
mulsd  0x20(%rsp),%xmm1
movsd  %xmm1,0x140(%rsp)
mov    $0x1,%eax
mov    $0x2,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
xorpd  %xmm1,%xmm1
mov    %rax,%rdi
xor    %esi,%esi
nopl   0x0(%rax)
lea    0x1(%rsi),%rdx
xorps  %xmm3,%xmm3
cvtsi2sd %edx,%xmm3
xorps  %xmm6,%xmm6
cvtsi2sd %edi,%xmm6
mulsd  %xmm5,%xmm3
subsd  %xmm6,%xmm3
mulsd  0x2a0(%rsp,%rsi,8),%xmm3
mulsd  0x138(%rsp,%rdi,8),%xmm3
addsd  %xmm3,%xmm1
mov    %rdx,%rsi
add    $0xffffffffffffffff,%rdi
jne    14f0 <cdflib_beta_asym+0x3a0>
xorps  %xmm3,%xmm3
cvtsi2sd %ebx,%xmm3
divsd  %xmm3,%xmm1
movsd  0x298(%rsp,%rbx,8),%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm1,%xmm3
movsd  %xmm3,0x138(%rsp,%rbx,8)
add    $0x1,%rbx
add    $0x1,%rax
cmp    %rcx,%rbx
jne    14e0 <cdflib_beta_asym+0x390>
movsd  0x138(%rsp,%r10,8),%xmm5
divsd  %xmm4,%xmm5
movsd  %xmm5,0x88(%rsp,%r10,8)
mov    $0x1,%edi
test   %r9,%r9
je     15d0 <cdflib_beta_asym+0x480>
xorpd  %xmm4,%xmm4
mov    $0x1,%ebx
mov    %r13,%rax
nopl   0x0(%rax)
movsd  0x1e8(%rsp,%rax,8),%xmm1
movsd  0x1f0(%rsp,%rax,8),%xmm3
mulsd  0x88(%rsp,%rbx,8),%xmm3
mulsd  0x90(%rsp,%rbx,8),%xmm1
addsd  %xmm4,%xmm3
addsd  %xmm3,%xmm1
add    $0x2,%rbx
movapd %xmm1,%xmm4
add    $0xfffffffffffffffe,%rax
jne    1590 <cdflib_beta_asym+0x440>
jmp    15d9 <cdflib_beta_asym+0x489>
nopl   0x0(%rax)
xorpd  %xmm1,%xmm1
mov    $0x1,%ebx
mov    %rbx,%rax
not    %rax
add    %r10,%rax
movsd  0x1f0(%rsp,%rax,8),%xmm3
mulsd  0x88(%rsp,%rbx,8),%xmm3
addsd  %xmm1,%xmm3
addsd  %xmm3,%xmm5
xorpd  0xa3c(%rip),%xmm5
movlpd %xmm5,0x1e8(%rsp,%r10,8)
mov    %r10d,%eax
or     $0x1,%eax
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
addsd  0x9dd(%rip),%xmm1
movapd %xmm1,%xmm4
mulsd  0x9f9(%rip),%xmm4
movapd %xmm4,%xmm3
mulsd  0x20(%rsp),%xmm3
movsd  %xmm3,0x140(%rsp)
mov    $0x2,%ebx
nopw   0x0(%rax,%rax,1)
xorpd  %xmm8,%xmm8
xor    %esi,%esi
mov    %rdi,%rax
nopw   0x0(%rax,%rax,1)
lea    0x1(%rsi),%rdx
xorps  %xmm3,%xmm3
cvtsi2sd %edx,%xmm3
xorps  %xmm6,%xmm6
cvtsi2sd %eax,%xmm6
mulsd  %xmm4,%xmm3
subsd  %xmm6,%xmm3
mulsd  0x2a0(%rsp,%rsi,8),%xmm3
mulsd  0x138(%rsp,%rax,8),%xmm3
addsd  %xmm3,%xmm8
mov    %rdx,%rsi
add    $0xffffffffffffffff,%rax
jne    1660 <cdflib_beta_asym+0x510>
xorps  %xmm3,%xmm3
cvtsi2sd %ebx,%xmm3
divsd  %xmm3,%xmm8
movsd  0x298(%rsp,%rbx,8),%xmm3
mulsd  %xmm4,%xmm3
addsd  %xmm8,%xmm3
movsd  %xmm3,0x138(%rsp,%rbx,8)
lea    0x1(%rbx),%rax
add    $0x1,%rdi
cmp    %rcx,%rbx
mov    %rax,%rbx
jne    1650 <cdflib_beta_asym+0x500>
movsd  0x140(%rsp,%r10,8),%xmm4
divsd  %xmm1,%xmm4
movsd  %xmm4,0x90(%rsp,%r10,8)
xorpd  %xmm1,%xmm1
mov    %r8,%rax
xor    %edi,%edi
cs nopw 0x0(%rax,%rax,1)
movsd  (%rax),%xmm3
mulsd  0x90(%rsp,%rdi,8),%xmm3
addsd  %xmm1,%xmm3
movsd  -0x8(%rax),%xmm1
mulsd  0x98(%rsp,%rdi,8),%xmm1
addsd  %xmm3,%xmm1
add    $0x2,%rdi
add    $0xfffffffffffffff0,%rax
cmp    %rdi,%r10
jne    1700 <cdflib_beta_asym+0x5b0>
addsd  %xmm1,%xmm4
xorpd  0x904(%rip),%xmm4
movlpd %xmm4,0x1f0(%rsp,%r10,8)
movapd %xmm2,%xmm1
addsd  0x8de(%rip),%xmm1
unpcklpd %xmm2,%xmm1
mulpd  %xmm1,%xmm0
movapd %xmm12,%xmm1
mulpd  %xmm13,%xmm1
addpd  %xmm0,%xmm1
movapd %xmm7,%xmm2
movsd  0x8(%rsp),%xmm7
mulsd  %xmm7,%xmm2
mulsd  %xmm2,%xmm7
unpcklpd %xmm7,%xmm2
unpcklpd %xmm4,%xmm5
mulpd  %xmm2,%xmm5
mulpd  %xmm1,%xmm5
movapd %xmm5,%xmm1
unpckhpd %xmm5,%xmm1
addsd  %xmm5,%xmm1
movapd 0x10(%rsp),%xmm3
addsd  %xmm1,%xmm3
andpd  0x8d8(%rip),%xmm5
pshufd $0xee,%xmm5,%xmm1
addsd  %xmm5,%xmm1
movapd %xmm14,%xmm2
movapd %xmm3,0x10(%rsp)
mulsd  %xmm3,%xmm2
ucomisd %xmm1,%xmm2
jae    1801 <cdflib_beta_asym+0x6b1>
movapd 0x30(%rsp),%xmm1
mulpd  %xmm12,%xmm1
mulpd  %xmm13,%xmm12
addpd  %xmm12,%xmm0
lea    0x2(%r10),%rax
add    $0x2,%rcx
add    $0x1,%r9
add    $0x2,%r13
add    $0x10,%r8
movapd %xmm1,%xmm12
cmp    $0x13,%r10
mov    %rax,%r10
jb     1450 <cdflib_beta_asym+0x300>
mov    %r14,%rdi
mov    %r12,%rsi
xor    %eax,%eax
call   1040 <cdflib_bcorr@plt>
neg    %eax
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
call   1050 <exp@plt>
movsd  0x60(%rsp),%xmm1
mulsd  0x80e(%rip),%xmm1
mulsd  %xmm0,%xmm1
movapd 0x10(%rsp),%xmm0
mulsd  %xmm1,%xmm0
add    $0x350,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret

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

LLVM IR (-O2):
@cdflib_beta_asym.K3 = internal constant i32 1
define double @cdflib_beta_asym(double* %0, double* %1, double* nocapture %2, double* nocapture %3) {
%5 = alloca double
%6 = alloca [21 x double]
%7 = alloca [21 x double]
%8 = alloca [21 x double]
%9 = alloca [21 x double]
%10 = alloca double
%11 = alloca double
%12 = bitcast double* %5 to i8*
%13 = bitcast [21 x double]* %6 to i8*
%14 = bitcast [21 x double]* %7 to i8*
%15 = bitcast [21 x double]* %8 to i8*
%16 = bitcast [21 x double]* %9 to i8*
%17 = bitcast double* %10 to i8*
%18 = bitcast double* %11 to i8*
%19 = load double, double* %0
%20 = load double, double* %1
%21 = fcmp ult double %19, %20
br i1 %21, label %22, label %28
22: ; preds = %4
%23 = fdiv double %19, %20
%24 = fadd double %23, 1.000000e+00
%25 = fsub double %20, %19
%26 = fdiv double %25, %20
%27 = fmul double %19, %24
br label %34
28: ; preds = %4
%29 = fdiv double %20, %19
%30 = fadd double %29, 1.000000e+00
%31 = fsub double %20, %19
%32 = fdiv double %31, %19
%33 = fmul double %20, %30
br label %34
34: ; preds = %28, %22
%35 = phi double [ %33, %28 ], [ %27, %22 ]
%36 = phi double [ %32, %28 ], [ %26, %22 ]
%37 = phi double [ %30, %28 ], [ %24, %22 ]
%38 = phi double [ %29, %28 ], [ %23, %22 ]
%39 = tail call double @sqrt(double %35)
%40 = fdiv double 1.000000e+00, %39
%41 = load double, double* %2
%42 = load double, double* %0
%43 = fneg double %41
%44 = fdiv double %43, %42
store double %44, double* %10
%45 = load double, double* %1
%46 = fdiv double %41, %45
store double %46, double* %11
%47 = call i32 (double*, ...) bitcast (i32 (...)* @cdflib_rlog1 to i32 (double*, ...)*)(double* %10)
%48 = sitofp i32 %47 to double
%49 = load double, double* %1
%50 = call i32 (double*, ...) bitcast (i32 (...)* @cdflib_rlog1 to i32 (double*, ...)*)(double* %11)
%51 = sitofp i32 %50 to double
%52 = fmul double %49, %51
%53 = call double @llvm.fmuladd.f64(double %42, double %48, double %52)
%54 = fneg double %53
%55 = call double @exp(double %54)
%56 = fcmp oeq double %55, 0.000000e+00
br i1 %56, label %297, label %57
57: ; preds = %34
%58 = fdiv double 1.000000e+00, %37
%59 = call double @sqrt(double %53)
store double %59, double* %5
%60 = fdiv double %59, 0x3FD6A09E667F3BD1
%61 = insertelement <2 x double> poison, double %60, i64 0
%62 = insertelement <2 x double> %61, double %53, i64 1
%63 = insertelement <2 x double> <double 5.000000e-01, double poison>, double %53, i64 1
%64 = fmul <2 x double> %62, %63
%65 = fadd <2 x double> %62, %63
%66 = shufflevector <2 x double> %64, <2 x double> %65, <2 x i32> <i32 0, i32 3>
%67 = fmul double %36, 0x3FE5555555555555
%68 = getelementptr inbounds [21 x double], [21 x double]* %6, i64 0, i64 0
store double %67, double* %68
%69 = fmul double %67, 5.000000e-01
%70 = fneg double %69
%71 = getelementptr inbounds [21 x double], [21 x double]* %8, i64 0, i64 0
store double %70, double* %71
%72 = getelementptr inbounds [21 x double], [21 x double]* %9, i64 0, i64 0
store double %69, double* %72
%73 = call i32 (i32*, double*, ...) bitcast (i32 (...)* @cdflib_error_fc to i32 (i32*, double*, ...)*)(i32* @cdflib_beta_asym.K3, double* %5)
%74 = sitofp i32 %73 to double
%75 = fmul double %74, 0x3FDC5BF891B4EF7E
%76 = fmul double %69, %40
%77 = call double @llvm.fmuladd.f64(double %76, double 0x3FD6A09E667F3BD1, double %75)
%78 = fmul double %38, %38
%79 = insertelement <2 x double> poison, double %58, i64 0
%80 = insertelement <2 x double> %79, double %36, i64 1
%81 = fmul <2 x double> %80, <double 2.000000e+00, double 2.000000e+00>
%82 = getelementptr inbounds [21 x double], [21 x double]* %7, i64 0, i64 0
%83 = load double, double* %3
%84 = insertelement <2 x double> <double poison, double 0x3FD6A09E667F3BD1>, double %75, i64 0
%85 = shufflevector <2 x double> %65, <2 x double> undef, <2 x i32> <i32 1, i32 1>
br label %86
86: ; preds = %282, %57
%87 = phi i64 [ %288, %282 ], [ 0, %57 ]
%88 = phi i64 [ %285, %282 ], [ 2, %57 ]
%89 = phi i64 [ %287, %282 ], [ 3, %57 ]
%90 = phi double [ %97, %282 ], [ 1.000000e+00, %57 ]
%91 = phi double [ %265, %282 ], [ %40, %57 ]
%92 = phi double [ %103, %282 ], [ 1.000000e+00, %57 ]
%93 = phi double [ %275, %282 ], [ %77, %57 ]
%94 = phi <2 x double> [ %284, %282 ], [ %66, %57 ]
%95 = phi <2 x double> [ %283, %282 ], [ %84, %57 ]
%96 = shl nuw nsw i64 %87, 1
%97 = fmul double %78, %90
%98 = call double @llvm.fmuladd.f64(double %38, double %97, double 1.000000e+00)
%99 = trunc i64 %88 to i32
%100 = sitofp i32 %99 to double
%101 = add nsw i64 %88, -1
%102 = getelementptr inbounds [21 x double], [21 x double]* %6, i64 0, i64 %101
%103 = fadd double %92, %97
%104 = insertelement <2 x double> poison, double %98, i64 0
%105 = insertelement <2 x double> %104, double %103, i64 1
%106 = fmul <2 x double> %81, %105
%107 = insertelement <2 x double> poison, double %100, i64 0
%108 = shufflevector <2 x double> %107, <2 x double> poison, <2 x i32> zeroinitializer
%109 = fadd <2 x double> %108, <double 2.000000e+00, double 3.000000e+00>
%110 = fdiv <2 x double> %106, %109
%111 = bitcast double* %102 to <2 x double>*
store <2 x double> %110, <2 x double>* %111
%112 = fadd double %100, 1.000000e+00
%113 = fmul double %112, -5.000000e-01
%114 = fmul double %113, %67
store double %114, double* %82
br label %115
115: ; preds = %86, %137
%116 = phi i64 [ 2, %86 ], [ %146, %137 ]
br label %117
117: ; preds = %115, %117
%118 = phi i64 [ 1, %115 ], [ %135, %117 ]
%119 = phi double [ 0.000000e+00, %115 ], [ %134, %117 ]
%120 = sub nsw i64 %116, %118
%121 = trunc i64 %118 to i32
%122 = sitofp i32 %121 to double
%123 = trunc i64 %120 to i32
%124 = sitofp i32 %123 to double
%125 = fneg double %124
%126 = call double @llvm.fmuladd.f64(double %122, double %113, double %125)
%127 = add nsw i64 %118, -1
%128 = getelementptr inbounds [21 x double], [21 x double]* %6, i64 0, i64 %127
%129 = load double, double* %128
%130 = fmul double %126, %129
%131 = add nsw i64 %120, -1
%132 = getelementptr inbounds [21 x double], [21 x double]* %7, i64 0, i64 %131
%133 = load double, double* %132
%134 = call double @llvm.fmuladd.f64(double %130, double %133, double %119)
%135 = add nuw nsw i64 %118, 1
%136 = icmp eq i64 %135, %116
br i1 %136, label %137, label %117
137: ; preds = %117
%138 = add nsw i64 %116, -1
%139 = getelementptr inbounds [21 x double], [21 x double]* %6, i64 0, i64 %138
%140 = load double, double* %139
%141 = trunc i64 %116 to i32
%142 = sitofp i32 %141 to double
%143 = fdiv double %134, %142
%144 = call double @llvm.fmuladd.f64(double %113, double %140, double %143)
%145 = getelementptr inbounds [21 x double], [21 x double]* %7, i64 0, i64 %138
store double %144, double* %145
%146 = add nuw nsw i64 %116, 1
%147 = icmp eq i64 %146, %89
br i1 %147, label %148, label %115
148: ; preds = %137
%149 = getelementptr inbounds [21 x double], [21 x double]* %7, i64 0, i64 %101
%150 = load double, double* %149
%151 = fdiv double %150, %112
%152 = getelementptr inbounds [21 x double], [21 x double]* %8, i64 0, i64 %101
store double %151, double* %152
%153 = icmp eq i64 %87, 0
br i1 %153, label %176, label %154
154: ; preds = %148, %154
%155 = phi i64 [ %173, %154 ], [ 1, %148 ]
%156 = phi double [ %172, %154 ], [ 0.000000e+00, %148 ]
%157 = phi i64 [ %174, %154 ], [ 0, %148 ]
%158 = xor i64 %155, -1
%159 = add nsw i64 %88, %158
%160 = getelementptr inbounds [21 x double], [21 x double]* %9, i64 0, i64 %159
%161 = load double, double* %160
%162 = add nsw i64 %155, -1
%163 = getelementptr inbounds [21 x double], [21 x double]* %8, i64 0, i64 %162
%164 = load double, double* %163
%165 = call double @llvm.fmuladd.f64(double %161, double %164, double %156)
%166 = sub nuw i64 -2, %155
%167 = add nsw i64 %88, %166
%168 = getelementptr inbounds [21 x double], [21 x double]* %9, i64 0, i64 %167
%169 = load double, double* %168
%170 = getelementptr inbounds [21 x double], [21 x double]* %8, i64 0, i64 %155
%171 = load double, double* %170
%172 = call double @llvm.fmuladd.f64(double %169, double %171, double %165)
%173 = add nuw nsw i64 %155, 2
%174 = add i64 %157, 2
%175 = icmp eq i64 %174, %96
br i1 %175, label %176, label %154
176: ; preds = %154, %148
%177 = phi double [ undef, %148 ], [ %172, %154 ]
%178 = phi i64 [ 1, %148 ], [ %173, %154 ]
%179 = phi double [ 0.000000e+00, %148 ], [ %172, %154 ]
%180 = xor i64 %178, -1
%181 = add nsw i64 %88, %180
%182 = getelementptr inbounds [21 x double], [21 x double]* %9, i64 0, i64 %181
%183 = load double, double* %182
%184 = add nsw i64 %178, -1
%185 = getelementptr inbounds [21 x double], [21 x double]* %8, i64 0, i64 %184
%186 = load double, double* %185
%187 = call double @llvm.fmuladd.f64(double %183, double %186, double %179)
%188 = fadd double %151, %187
%189 = fneg double %188
%190 = getelementptr inbounds [21 x double], [21 x double]* %9, i64 0, i64 %101
store double %189, double* %190
%191 = or i64 %88, 1
%192 = trunc i64 %191 to i32
%193 = sitofp i32 %192 to double
%194 = fadd double %193, 1.000000e+00
%195 = fmul double %194, -5.000000e-01
%196 = fmul double %195, %67
store double %196, double* %82
br label %197
197: ; preds = %219, %176
%198 = phi i64 [ 2, %176 ], [ %228, %219 ]
br label %199
199: ; preds = %199, %197
%200 = phi i64 [ 1, %197 ], [ %217, %199 ]
%201 = phi double [ 0.000000e+00, %197 ], [ %216, %199 ]
%202 = sub nsw i64 %198, %200
%203 = trunc i64 %200 to i32
%204 = sitofp i32 %203 to double
%205 = trunc i64 %202 to i32
%206 = sitofp i32 %205 to double
%207 = fneg double %206
%208 = call double @llvm.fmuladd.f64(double %204, double %195, double %207)
%209 = add nsw i64 %200, -1
%210 = getelementptr inbounds [21 x double], [21 x double]* %6, i64 0, i64 %209
%211 = load double, double* %210
%212 = fmul double %208, %211
%213 = add nsw i64 %202, -1
%214 = getelementptr inbounds [21 x double], [21 x double]* %7, i64 0, i64 %213
%215 = load double, double* %214
%216 = call double @llvm.fmuladd.f64(double %212, double %215, double %201)
%217 = add nuw nsw i64 %200, 1
%218 = icmp eq i64 %217, %198
br i1 %218, label %219, label %199
219: ; preds = %199
%220 = add nsw i64 %198, -1
%221 = getelementptr inbounds [21 x double], [21 x double]* %6, i64 0, i64 %220
%222 = load double, double* %221
%223 = trunc i64 %198 to i32
%224 = sitofp i32 %223 to double
%225 = fdiv double %216, %224
%226 = call double @llvm.fmuladd.f64(double %195, double %222, double %225)
%227 = getelementptr inbounds [21 x double], [21 x double]* %7, i64 0, i64 %220
store double %226, double* %227
%228 = add nuw nsw i64 %198, 1
%229 = icmp eq i64 %198, %89
br i1 %229, label %230, label %197
230: ; preds = %219
%231 = getelementptr inbounds [21 x double], [21 x double]* %7, i64 0, i64 %88
%232 = load double, double* %231
%233 = fdiv double %232, %194
%234 = getelementptr inbounds [21 x double], [21 x double]* %8, i64 0, i64 %88
store double %233, double* %234
br label %235
235: ; preds = %235, %230
%236 = phi i64 [ 1, %230 ], [ %253, %235 ]
%237 = phi double [ 0.000000e+00, %230 ], [ %252, %235 ]
%238 = xor i64 %236, -1
%239 = add nsw i64 %191, %238
%240 = getelementptr inbounds [21 x double], [21 x double]* %9, i64 0, i64 %239
%241 = load double, double* %240
%242 = add nsw i64 %236, -1
%243 = getelementptr inbounds [21 x double], [21 x double]* %8, i64 0, i64 %242
%244 = load double, double* %243
%245 = call double @llvm.fmuladd.f64(double %241, double %244, double %237)
%246 = sub nuw i64 -2, %236
%247 = add nsw i64 %191, %246
%248 = getelementptr inbounds [21 x double], [21 x double]* %9, i64 0, i64 %247
%249 = load double, double* %248
%250 = getelementptr inbounds [21 x double], [21 x double]* %8, i64 0, i64 %236
%251 = load double, double* %250
%252 = call double @llvm.fmuladd.f64(double %249, double %251, double %245)
%253 = add nuw nsw i64 %236, 2
%254 = icmp eq i64 %253, %191
br i1 %254, label %255, label %235
255: ; preds = %235
%256 = fadd double %233, %252
%257 = fneg double %256
%258 = getelementptr inbounds [21 x double], [21 x double]* %9, i64 0, i64 %88
store double %257, double* %258
%259 = fadd double %100, -1.000000e+00
%260 = insertelement <2 x double> poison, double %259, i64 0
%261 = insertelement <2 x double> %260, double %100, i64 1
%262 = fmul <2 x double> %95, %261
%263 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %94, <2 x double> <double 0x3FD6A09E667F3BD1, double 0x3FD6A09E667F3BD1>, <2 x double> %262)
%264 = fmul double %40, %91
%265 = fmul double %40, %264
%266 = insertelement <2 x double> poison, double %264, i64 0
%267 = insertelement <2 x double> %266, double %265, i64 1
%268 = insertelement <2 x double> poison, double %189, i64 0
%269 = insertelement <2 x double> %268, double %257, i64 1
%270 = fmul <2 x double> %267, %269
%271 = fmul <2 x double> %263, %270
%272 = shufflevector <2 x double> %271, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%273 = fadd <2 x double> %271, %272
%274 = extractelement <2 x double> %273, i64 0
%275 = fadd double %93, %274
%276 = call <2 x double> @llvm.fabs.v2f64(<2 x double> %271)
%277 = shufflevector <2 x double> %276, <2 x double> poison, <2 x i32> <i32 1, i32 undef>
%278 = fadd <2 x double> %276, %277
%279 = extractelement <2 x double> %278, i64 0
%280 = fmul double %83, %275
%281 = fcmp ugt double %279, %280
br i1 %281, label %282, label %289
282: ; preds = %255
%283 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %94, <2 x double> <double 0x3FD6A09E667F3BD1, double 0x3FD6A09E667F3BD1>, <2 x double> %262)
%284 = fmul <2 x double> %85, %94
%285 = add nuw nsw i64 %88, 2
%286 = icmp ult i64 %88, 19
%287 = add nuw nsw i64 %89, 2
%288 = add i64 %87, 1
br i1 %286, label %86, label %289
289: ; preds = %282, %255
%290 = call i32 (double*, double*, ...) bitcast (i32 (...)* @cdflib_bcorr to i32 (double*, double*, ...)*)(double* %0, double* %1)
%291 = sub nsw i32 0, %290
%292 = sitofp i32 %291 to double
%293 = call double @exp(double %292)
%294 = fmul double %55, 0x3FF20DD750429B61
%295 = fmul double %294, %293
%296 = fmul double %275, %295
br label %297
297: ; preds = %34, %289
%298 = phi double [ %296, %289 ], [ 0.000000e+00, %34 ]
ret double %298
}