void cdflib_cdft(const int *which, double *p, double *q, double *t, double *df,
                 int *status, double *bound) {
  static const double tol = 1.0e-8;
  static const double atol = 1.0e-50;
  static const double zero = 1.0e-300;
  static const double inf = 1.0e30;
  static const double maxdf = 1.0e10;
  static const int K1 = 1;
  double K4 = 0.5e0;
  double K5 = 5.0e0;
  double fx, cum, ccum, pq;
  unsigned long qhi, qleft, qporq;
  double T2, T3, T6, T7, T8, T9, T10, T11;
  *status = 0;
  *bound = 0.0;
  if (!(*which < 1 || *which > 3)) {
    goto S30;
  }
  if (!(*which < 1)) {
    goto S10;
  }
  *bound = 1.0e0;
  goto S20;
S10:
  *bound = 3.0e0;
S20:
  *status = -1;
  return;
S30:
  if (*which == 1) {
    goto S70;
  }
  if (!(*p <= 0.0e0 || *p > 1.0e0)) {
    goto S60;
  }
  if (!(*p <= 0.0e0)) {
    goto S40;
  }
  *bound = 0.0e0;
  goto S50;
S40:
  *bound = 1.0e0;
S50:
  *status = -2;
  return;
S70:
S60:
  if (*which == 1) {
    goto S110;
  }
  if (!(*q <= 0.0e0 || *q > 1.0e0)) {
    goto S100;
  }
  if (!(*q <= 0.0e0)) {
    goto S80;
  }
  *bound = 0.0e0;
  goto S90;
S80:
  *bound = 1.0e0;
S90:
  *status = -3;
  return;
S110:
S100:
  if (*which == 3) {
    goto S130;
  }
  if (!(*df <= 0.0e0)) {
    goto S120;
  }
  *bound = 0.0e0;
  *status = -5;
  return;
S130:
S120:
  if (*which == 1) {
    goto S170;
  }
  pq = *p + *q;
  if (!(fabs(pq - 0.5e0 - 0.5e0) > 3.0e0 * dpmpar(K1))) {
    goto S160;
  }
  if (!(pq < 0.0e0)) {
    goto S140;
  }
  *bound = 0.0e0;
  goto S150;
S140:
  *bound = 1.0e0;
S150:
  *status = 3;
  return;
S170:
S160:
  if (!(*which == 1)) {
    qporq = *p <= *q;
  }
  if (1 == *which) {
    cdflib_cumt(t, df, p, q);
    *status = 0;
  } else if (2 == *which) {
    *t = cdflib_dt1(p, q, df);
    T2 = -inf;
    T3 = inf;
    T6 = atol;
    T7 = tol;
    cdflib_dstinv(&T2, &T3, &K4, &K4, &K5, &T6, &T7);
    *status = 0;
    cdflib_dinvr(status, t, &fx, &qleft, &qhi);
  S180:
    if (!(*status == 1)) {
      goto S210;
    }
    cdflib_cumt(t, df, &cum, &ccum);
    if (!qporq) {
      goto S190;
    }
    fx = cum - *p;
    goto S200;
  S190:
    fx = ccum - *q;
  S200:
    cdflib_dinvr(status, t, &fx, &qleft, &qhi);
    goto S180;
  S210:
    if (!(*status == -1)) {
      goto S240;
    }
    if (!qleft) {
      goto S220;
    }
    *status = 1;
    *bound = -inf;
    goto S230;
  S220:
    *status = 2;
    *bound = inf;
  S240:
  S230:;
  } else if (3 == *which) {
    *df = 5.0e0;
    T8 = zero;
    T9 = maxdf;
    T10 = atol;
    T11 = tol;
    cdflib_dstinv(&T8, &T9, &K4, &K4, &K5, &T10, &T11);
    *status = 0;
    cdflib_dinvr(status, df, &fx, &qleft, &qhi);
  S250:
    if (!(*status == 1)) {
      goto S280;
    }
    cdflib_cumt(t, df, &cum, &ccum);
    if (!qporq) {
      goto S260;
    }
    fx = cum - *p;
    goto S270;
  S260:
    fx = ccum - *q;
  S270:
    cdflib_dinvr(status, df, &fx, &qleft, &qhi);
    goto S250;
  S280:
    if (!(*status == -1)) {
      goto S310;
    }
    if (!qleft) {
      goto S290;
    }
    *status = 1;
    *bound = zero;
    goto S300;
  S290:
    *status = 2;
    *bound = maxdf;
  S300:;
  }
S310:
  return;
}


x86 assembly (clang, -O0):
<cdflib_cdft>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    0x10(%rbp),%rax
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movsd  0xe89(%rip),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe74(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x30(%rbp),%rax
movl   $0x0,(%rax)
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jl     11c5 <cdflib_cdft+0x75>
mov    -0x8(%rbp),%rax
cmpl   $0x3,(%rax)
jg     11c5 <cdflib_cdft+0x75>
jmp    120b <cdflib_cdft+0xbb>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jl     11d7 <cdflib_cdft+0x87>
jmp    11ec <cdflib_cdft+0x9c>
mov    0x10(%rbp),%rax
movsd  0xe2d(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    11fc <cdflib_cdft+0xac>
mov    0x10(%rbp),%rax
movsd  0xe20(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movl   $0xffffffff,(%rax)
jmp    17f7 <cdflib_cdft+0x6a7>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jne    121d <cdflib_cdft+0xcd>
jmp    1292 <cdflib_cdft+0x142>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jae    124d <cdflib_cdft+0xfd>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xdd2(%rip),%xmm1
ucomisd %xmm1,%xmm0
ja     124d <cdflib_cdft+0xfd>
jmp    1297 <cdflib_cdft+0x147>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jae    1263 <cdflib_cdft+0x113>
jmp    1273 <cdflib_cdft+0x123>
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1283 <cdflib_cdft+0x133>
mov    0x10(%rbp),%rax
movsd  0xd91(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movl   $0xfffffffe,(%rax)
jmp    17f7 <cdflib_cdft+0x6a7>
jmp    1297 <cdflib_cdft+0x147>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jne    12a9 <cdflib_cdft+0x159>
jmp    131e <cdflib_cdft+0x1ce>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jae    12d9 <cdflib_cdft+0x189>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xd46(%rip),%xmm1
ucomisd %xmm1,%xmm0
ja     12d9 <cdflib_cdft+0x189>
jmp    1323 <cdflib_cdft+0x1d3>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jae    12ef <cdflib_cdft+0x19f>
jmp    12ff <cdflib_cdft+0x1af>
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    130f <cdflib_cdft+0x1bf>
mov    0x10(%rbp),%rax
movsd  0xd05(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movl   $0xfffffffd,(%rax)
jmp    17f7 <cdflib_cdft+0x6a7>
jmp    1323 <cdflib_cdft+0x1d3>
mov    -0x8(%rbp),%rax
cmpl   $0x3,(%rax)
jne    1335 <cdflib_cdft+0x1e5>
jmp    1365 <cdflib_cdft+0x215>
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jae    134b <cdflib_cdft+0x1fb>
jmp    136a <cdflib_cdft+0x21a>
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movl   $0xfffffffb,(%rax)
jmp    17f7 <cdflib_cdft+0x6a7>
jmp    136a <cdflib_cdft+0x21a>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jne    137c <cdflib_cdft+0x22c>
jmp    1436 <cdflib_cdft+0x2e6>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  0xc6a(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xc5e(%rip),%xmm1
subsd  %xmm1,%xmm0
movaps 0xc9b(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
mov    $0x1,%edi
mov    $0x0,%al
call   1040 <dpmpar@plt>
movsd  -0xc0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm2
movsd  0xc37(%rip),%xmm1
mulsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     13f4 <cdflib_cdft+0x2a4>
jmp    143b <cdflib_cdft+0x2eb>
xorps  %xmm0,%xmm0
ucomisd -0x60(%rbp),%xmm0
ja     1407 <cdflib_cdft+0x2b7>
jmp    1417 <cdflib_cdft+0x2c7>
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1427 <cdflib_cdft+0x2d7>
mov    0x10(%rbp),%rax
movsd  0xbed(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movl   $0x3,(%rax)
jmp    17f7 <cdflib_cdft+0x6a7>
jmp    143b <cdflib_cdft+0x2eb>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
je     146a <cdflib_cdft+0x31a>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm1
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd %xmm1,%xmm0
setae  %al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,-0x78(%rbp)
mov    -0x8(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jne    14a1 <cdflib_cdft+0x351>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    $0x0,%al
call   1030 <cdflib_cumt@plt>
mov    -0x30(%rbp),%rax
movl   $0x0,(%rax)
jmp    17ed <cdflib_cdft+0x69d>
mov    -0x8(%rbp),%rcx
mov    $0x2,%eax
cmp    (%rcx),%eax
jne    1649 <cdflib_cdft+0x4f9>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x28(%rbp),%rdx
mov    $0x0,%al
call   1060 <cdflib_dt1@plt>
cvtsi2sd %eax,%xmm0
mov    -0x20(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  0xb6f(%rip),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  0xb5a(%rip),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xb32(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xb1a(%rip),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
lea    -0x80(%rbp),%rdi
lea    -0x88(%rbp),%rsi
lea    -0x38(%rbp),%rcx
lea    -0x40(%rbp),%r8
lea    -0x90(%rbp),%r9
lea    -0x98(%rbp),%rax
mov    %rcx,%rdx
mov    %rax,(%rsp)
mov    $0x0,%al
call   1050 <cdflib_dstinv@plt>
mov    -0x30(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x30(%rbp),%rdi
mov    -0x20(%rbp),%rsi
lea    -0x48(%rbp),%rdx
lea    -0x70(%rbp),%rcx
lea    -0x68(%rbp),%r8
mov    $0x0,%al
call   1070 <cdflib_dinvr@plt>
mov    -0x30(%rbp),%rax
cmpl   $0x1,(%rax)
je     1574 <cdflib_cdft+0x424>
jmp    15e4 <cdflib_cdft+0x494>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
lea    -0x50(%rbp),%rdx
lea    -0x58(%rbp),%rcx
mov    $0x0,%al
call   1030 <cdflib_cumt@plt>
cmpq   $0x0,-0x78(%rbp)
jne    159b <cdflib_cdft+0x44b>
jmp    15b2 <cdflib_cdft+0x462>
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    15c4 <cdflib_cdft+0x474>
movsd  -0x58(%rbp),%xmm0
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x30(%rbp),%rdi
mov    -0x20(%rbp),%rsi
lea    -0x48(%rbp),%rdx
lea    -0x70(%rbp),%rcx
lea    -0x68(%rbp),%r8
mov    $0x0,%al
call   1070 <cdflib_dinvr@plt>
jmp    1562 <cdflib_cdft+0x412>
mov    -0x30(%rbp),%rax
cmpl   $0xffffffff,(%rax)
je     15f6 <cdflib_cdft+0x4a6>
jmp    163f <cdflib_cdft+0x4ef>
cmpq   $0x0,-0x70(%rbp)
jne    1606 <cdflib_cdft+0x4b6>
jmp    1625 <cdflib_cdft+0x4d5>
mov    -0x30(%rbp),%rax
movl   $0x1,(%rax)
mov    0x10(%rbp),%rax
movsd  0xa2c(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1644 <cdflib_cdft+0x4f4>
mov    -0x30(%rbp),%rax
movl   $0x2,(%rax)
mov    0x10(%rbp),%rax
movsd  0xa05(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1644 <cdflib_cdft+0x4f4>
jmp    17e8 <cdflib_cdft+0x698>
mov    -0x8(%rbp),%rcx
mov    $0x3,%eax
cmp    (%rcx),%eax
jne    17e3 <cdflib_cdft+0x693>
mov    -0x28(%rbp),%rax
movsd  0x99a(%rip),%xmm0
movsd  %xmm0,(%rax)
movsd  0x9c6(%rip),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0x9ae(%rip),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0x996(%rip),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0x97e(%rip),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
lea    -0xa0(%rbp),%rdi
lea    -0xa8(%rbp),%rsi
lea    -0x38(%rbp),%rcx
lea    -0x40(%rbp),%r8
lea    -0xb0(%rbp),%r9
lea    -0xb8(%rbp),%rax
mov    %rcx,%rdx
mov    %rax,(%rsp)
mov    $0x0,%al
call   1050 <cdflib_dstinv@plt>
mov    -0x30(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x30(%rbp),%rdi
mov    -0x28(%rbp),%rsi
lea    -0x48(%rbp),%rdx
lea    -0x70(%rbp),%rcx
lea    -0x68(%rbp),%r8
mov    $0x0,%al
call   1070 <cdflib_dinvr@plt>
mov    -0x30(%rbp),%rax
cmpl   $0x1,(%rax)
je     1713 <cdflib_cdft+0x5c3>
jmp    1783 <cdflib_cdft+0x633>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
lea    -0x50(%rbp),%rdx
lea    -0x58(%rbp),%rcx
mov    $0x0,%al
call   1030 <cdflib_cumt@plt>
cmpq   $0x0,-0x78(%rbp)
jne    173a <cdflib_cdft+0x5ea>
jmp    1751 <cdflib_cdft+0x601>
movsd  -0x50(%rbp),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
jmp    1763 <cdflib_cdft+0x613>
movsd  -0x58(%rbp),%xmm0
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0x30(%rbp),%rdi
mov    -0x28(%rbp),%rsi
lea    -0x48(%rbp),%rdx
lea    -0x70(%rbp),%rcx
lea    -0x68(%rbp),%r8
mov    $0x0,%al
call   1070 <cdflib_dinvr@plt>
jmp    1701 <cdflib_cdft+0x5b1>
mov    -0x30(%rbp),%rax
cmpl   $0xffffffff,(%rax)
je     1795 <cdflib_cdft+0x645>
jmp    17f2 <cdflib_cdft+0x6a2>
cmpq   $0x0,-0x70(%rbp)
jne    17a5 <cdflib_cdft+0x655>
jmp    17c4 <cdflib_cdft+0x674>
mov    -0x30(%rbp),%rax
movl   $0x1,(%rax)
mov    0x10(%rbp),%rax
movsd  0x87d(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    17de <cdflib_cdft+0x68e>
mov    -0x30(%rbp),%rax
movl   $0x2,(%rax)
mov    0x10(%rbp),%rax
movsd  0x856(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    17e3 <cdflib_cdft+0x693>
jmp    17e8 <cdflib_cdft+0x698>
jmp    17ed <cdflib_cdft+0x69d>
jmp    17f2 <cdflib_cdft+0x6a2>
jmp    17f7 <cdflib_cdft+0x6a7>
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cdflib_cdft>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x88,%rsp
mov    %r9,%rbx
mov    %rdx,%r14
mov    %rsi,%r13
mov    0xc0(%rsp),%rdx
movabs $0x3fe0000000000000,%rax
mov    %rax,0x68(%rsp)
movabs $0x4014000000000000,%r12
mov    %r12,0x60(%rsp)
movl   $0x0,(%r9)
movq   $0x0,(%rdx)
mov    (%rdi),%eax
lea    -0x4(%rax),%esi
cmp    $0xfffffffc,%esi
ja     11ca <cdflib_cdft+0x7a>
xor    %ecx,%ecx
test   %eax,%eax
setle  %cl
lea    0xe7a(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rdx)
movl   $0xffffffff,(%rbx)
jmp    1320 <cdflib_cdft+0x1d0>
mov    %r8,%r15
cmp    $0x1,%eax
jne    11ff <cdflib_cdft+0xaf>
xorpd  %xmm0,%xmm0
ucomisd (%r15),%xmm0
jae    12e0 <cdflib_cdft+0x190>
mov    %rcx,%rdi
mov    %r15,%rsi
mov    %r13,%rdx
mov    %r14,%rcx
xor    %eax,%eax
call   1030 <cdflib_cumt@plt>
movl   $0x0,(%rbx)
jmp    1320 <cdflib_cdft+0x1d0>
movsd  0x0(%r13),%xmm2
xorpd  %xmm0,%xmm0
ucomisd %xmm2,%xmm0
jae    12e8 <cdflib_cdft+0x198>
ucomisd 0xde5(%rip),%xmm2
ja     12e8 <cdflib_cdft+0x198>
movsd  (%r14),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
jae    1305 <cdflib_cdft+0x1b5>
ucomisd 0xdc4(%rip),%xmm0
ja     1305 <cdflib_cdft+0x1b5>
mov    %rdi,%rbp
cmp    $0x3,%eax
je     1259 <cdflib_cdft+0x109>
xorpd  %xmm1,%xmm1
ucomisd (%r15),%xmm1
jae    12e0 <cdflib_cdft+0x190>
mov    %rcx,0x8(%rsp)
addsd  %xmm0,%xmm2
movapd %xmm2,0x40(%rsp)
movsd  0xd98(%rip),%xmm0
addsd  %xmm0,%xmm2
addsd  %xmm0,%xmm2
andpd  0xda0(%rip),%xmm2
movapd %xmm2,0x50(%rsp)
mov    $0x1,%edi
xor    %eax,%eax
call   1040 <dpmpar@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xd6f(%rip),%xmm0
movapd 0x50(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jbe    1332 <cdflib_cdft+0x1e2>
xorpd  %xmm0,%xmm0
movapd 0x40(%rsp),%xmm1
cmpltsd %xmm0,%xmm1
movsd  0xd38(%rip),%xmm0
andnpd %xmm0,%xmm1
mov    0xc0(%rsp),%rax
movlpd %xmm1,(%rax)
movl   $0x3,(%rbx)
jmp    1320 <cdflib_cdft+0x1d0>
movl   $0xfffffffb,(%rbx)
jmp    1320 <cdflib_cdft+0x1d0>
cmpnlesd %xmm0,%xmm2
movsd  0xd0b(%rip),%xmm0
andpd  %xmm2,%xmm0
movlpd %xmm0,(%rdx)
movl   $0xfffffffe,(%rbx)
jmp    1320 <cdflib_cdft+0x1d0>
cmpnlesd %xmm1,%xmm0
movsd  0xcee(%rip),%xmm1
andpd  %xmm0,%xmm1
movlpd %xmm1,(%rdx)
movl   $0xfffffffd,(%rbx)
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    0x0(%rbp),%eax
cmp    $0x1,%eax
mov    0x8(%rsp),%rcx
je     11e1 <cdflib_cdft+0x91>
movsd  0x0(%r13),%xmm0
movsd  %xmm0,0x50(%rsp)
movsd  (%r14),%xmm0
movsd  %xmm0,0x40(%rsp)
cmp    $0x2,%eax
je     1456 <cdflib_cdft+0x306>
cmp    $0x3,%eax
jne    1320 <cdflib_cdft+0x1d0>
mov    %r12,(%r15)
movabs $0x1a56e1fc2f8f359,%r12
6e a5 01
mov    %r12,0x28(%rsp)
movabs $0x4202a05f20000000,%rax
a0 02 42
mov    %rax,0x20(%rsp)
movabs $0x358dee7a4ad4b81f,%rax
ee 8d 35
mov    %rax,0x18(%rsp)
movabs $0x3e45798ee2308c3a,%rax
79 45 3e
mov    %rax,0x10(%rsp)
lea    0x10(%rsp),%rax
mov    %rax,(%rsp)
lea    0x28(%rsp),%rdi
lea    0x20(%rsp),%rsi
lea    0x68(%rsp),%rcx
lea    0x60(%rsp),%r8
lea    0x18(%rsp),%r9
mov    %rcx,%rdx
xor    %eax,%eax
call   1050 <cdflib_dstinv@plt>
movsd  0x40(%rsp),%xmm0
ucomisd 0x50(%rsp),%xmm0
movl   $0x0,(%rbx)
cmovae %r13,%r14
lea    0x80(%rsp),%rbp
lea    0x78(%rsp),%r13
mov    %rbx,%rdi
mov    %r15,%rsi
lea    0x38(%rsp),%rdx
lea    0x30(%rsp),%rcx
lea    0x70(%rsp),%r8
xor    %eax,%eax
call   1070 <cdflib_dinvr@plt>
mov    (%rbx),%eax
cmp    $0x1,%eax
jne    1560 <cdflib_cdft+0x410>
mov    0x8(%rsp),%rdi
mov    %r15,%rsi
mov    %rbp,%rdx
mov    %r13,%rcx
xor    %eax,%eax
call   1030 <cdflib_cumt@plt>
movsd  0x40(%rsp),%xmm0
ucomisd 0x50(%rsp),%xmm0
mov    %r13,%rax
cmovae %rbp,%rax
movsd  (%rax),%xmm0
subsd  (%r14),%xmm0
movsd  %xmm0,0x38(%rsp)
jmp    13f6 <cdflib_cdft+0x2a6>
mov    %r13,%rdi
mov    %r14,%rsi
mov    %r15,%rdx
xor    %eax,%eax
call   1060 <cdflib_dt1@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mov    0x8(%rsp),%rax
movsd  %xmm0,(%rax)
movabs $0xc6293e5939a08cea,%rax
3e 29 c6
mov    %rax,0x28(%rsp)
movabs $0x46293e5939a08cea,%rax
3e 29 46
mov    %rax,0x20(%rsp)
movabs $0x358dee7a4ad4b81f,%rax
ee 8d 35
mov    %rax,0x18(%rsp)
movabs $0x3e45798ee2308c3a,%rax
79 45 3e
mov    %rax,0x10(%rsp)
lea    0x10(%rsp),%rax
mov    %rax,(%rsp)
lea    0x28(%rsp),%rdi
lea    0x20(%rsp),%rsi
lea    0x68(%rsp),%rcx
lea    0x60(%rsp),%r8
lea    0x18(%rsp),%r9
mov    %rcx,%rdx
xor    %eax,%eax
call   1050 <cdflib_dstinv@plt>
mov    0x8(%rsp),%r12
movsd  0x40(%rsp),%xmm0
ucomisd 0x50(%rsp),%xmm0
movl   $0x0,(%rbx)
cmovae %r13,%r14
lea    0x80(%rsp),%rbp
lea    0x78(%rsp),%r13
mov    %rbx,%rdi
mov    %r12,%rsi
lea    0x38(%rsp),%rdx
lea    0x30(%rsp),%rcx
lea    0x70(%rsp),%r8
xor    %eax,%eax
call   1070 <cdflib_dinvr@plt>
mov    (%rbx),%eax
cmp    $0x1,%eax
jne    1587 <cdflib_cdft+0x437>
mov    %r12,%rdi
mov    %r15,%rsi
mov    %rbp,%rdx
mov    %r13,%rcx
xor    %eax,%eax
call   1030 <cdflib_cumt@plt>
movsd  0x40(%rsp),%xmm0
ucomisd 0x50(%rsp),%xmm0
mov    %r13,%rax
cmovae %rbp,%rax
movsd  (%rax),%xmm0
subsd  (%r14),%xmm0
movsd  %xmm0,0x38(%rsp)
jmp    1506 <cdflib_cdft+0x3b6>
cmp    $0xffffffff,%eax
jne    1320 <cdflib_cdft+0x1d0>
cmpq   $0x0,0x30(%rsp)
je     15b2 <cdflib_cdft+0x462>
movl   $0x1,(%rbx)
mov    0xc0(%rsp),%rax
mov    %r12,(%rax)
jmp    1320 <cdflib_cdft+0x1d0>
cmp    $0xffffffff,%eax
jne    1320 <cdflib_cdft+0x1d0>
cmpq   $0x0,0x30(%rsp)
je     15cc <cdflib_cdft+0x47c>
movl   $0x1,(%rbx)
mov    0xc0(%rsp),%rax
movabs $0xc6293e5939a08cea,%rcx
3e 29 c6
jmp    15e4 <cdflib_cdft+0x494>
movl   $0x2,(%rbx)
mov    0xc0(%rsp),%rax
movabs $0x4202a05f20000000,%rcx
a0 02 42
jmp    15e4 <cdflib_cdft+0x494>
movl   $0x2,(%rbx)
mov    0xc0(%rsp),%rax
movabs $0x46293e5939a08cea,%rcx
3e 29 46
mov    %rcx,(%rax)
jmp    1320 <cdflib_cdft+0x1d0>

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

LLVM IR (-O2):
define void @cdflib_cdft(i32* nocapture %0, double* %1, double* %2, double* %3, double* %4, i32* %5, double* nocapture writeonly %6) {
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca i64
%14 = alloca i64
%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 = bitcast double* %8 to i8*
store double 5.000000e-01, double* %8
%24 = bitcast double* %9 to i8*
store double 5.000000e+00, double* %9
%25 = bitcast double* %10 to i8*
%26 = bitcast double* %11 to i8*
%27 = bitcast double* %12 to i8*
%28 = bitcast i64* %13 to i8*
%29 = bitcast i64* %14 to i8*
%30 = bitcast double* %15 to i8*
%31 = bitcast double* %16 to i8*
%32 = bitcast double* %17 to i8*
%33 = bitcast double* %18 to i8*
%34 = bitcast double* %19 to i8*
%35 = bitcast double* %20 to i8*
%36 = bitcast double* %21 to i8*
%37 = bitcast double* %22 to i8*
store i32 0, i32* %5
store double 0.000000e+00, double* %6
%38 = load i32, i32* %0
%39 = add i32 %38, -4
%40 = icmp ult i32 %39, -3
br i1 %40, label %41, label %44
41: ; preds = %7
%42 = icmp slt i32 %38, 1
%43 = select i1 %42, double 1.000000e+00, double 3.000000e+00
store double %43, double* %6
store i32 -1, i32* %5
br label %130
44: ; preds = %7
%45 = icmp eq i32 %38, 1
br i1 %45, label %64, label %46
46: ; preds = %44
%47 = load double, double* %1
%48 = fcmp ole double %47, 0.000000e+00
%49 = fcmp ogt double %47, 1.000000e+00
%50 = or i1 %48, %49
br i1 %50, label %51, label %54
51: ; preds = %46
%52 = fcmp ugt double %47, 0.000000e+00
%53 = select i1 %52, double 1.000000e+00, double 0.000000e+00
store double %53, double* %6
store i32 -2, i32* %5
br label %130
54: ; preds = %46
%55 = load double, double* %2
%56 = fcmp ole double %55, 0.000000e+00
%57 = fcmp ogt double %55, 1.000000e+00
%58 = or i1 %56, %57
br i1 %58, label %59, label %62
59: ; preds = %54
%60 = fcmp ugt double %55, 0.000000e+00
%61 = select i1 %60, double 1.000000e+00, double 0.000000e+00
store double %61, double* %6
store i32 -3, i32* %5
br label %130
62: ; preds = %54
%63 = icmp eq i32 %38, 3
br i1 %63, label %71, label %67
64: ; preds = %44
%65 = load double, double* %4
%66 = fcmp ugt double %65, 0.000000e+00
br i1 %66, label %90, label %70
67: ; preds = %62
%68 = load double, double* %4
%69 = fcmp ugt double %68, 0.000000e+00
br i1 %69, label %71, label %70
70: ; preds = %67, %64
store i32 -5, i32* %5
br label %130
71: ; preds = %67, %62
%72 = fadd double %47, %55
%73 = fadd double %72, -5.000000e-01
%74 = fadd double %73, -5.000000e-01
%75 = tail call double @llvm.fabs.f64(double %74)
%76 = tail call i32 (i32, ...) bitcast (i32 (...)* @dpmpar to i32 (i32, ...)*)(i32 1)
%77 = sitofp i32 %76 to double
%78 = fmul double %77, 3.000000e+00
%79 = fcmp ogt double %75, %78
br i1 %79, label %80, label %83
80: ; preds = %71
%81 = fcmp olt double %72, 0.000000e+00
%82 = select i1 %81, double 0.000000e+00, double 1.000000e+00
store double %82, double* %6
store i32 3, i32* %5
br label %130
83: ; preds = %71
%84 = load i32, i32* %0
%85 = icmp eq i32 %84, 1
br i1 %85, label %90, label %86
86: ; preds = %83
%87 = load double, double* %1
%88 = load double, double* %2
%89 = fcmp ole double %87, %88
switch i32 %84, label %130 [
i32 3, label %112
i32 2, label %92
]
90: ; preds = %64, %83
%91 = tail call i32 (double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_cumt to i32 (double*, double*, double*, double*, ...)*)(double* %3, double* %4, double* %1, double* %2)
store i32 0, i32* %5
br label %130
92: ; preds = %86
%93 = tail call i32 (double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_dt1 to i32 (double*, double*, double*, ...)*)(double* %1, double* %2, double* %4)
%94 = sitofp i32 %93 to double
store double %94, double* %3
store double -1.000000e+30, double* %15
store double 1.000000e+30, double* %16
store double 1.000000e-50, double* %17
store double 1.000000e-08, double* %18
%95 = call i32 (double*, double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_dstinv to i32 (double*, double*, double*, double*, double*, double*, double*, ...)*)(double* %15, double* %16, double* %8, double* %8, double* %9, double* %17, double* %18)
store i32 0, i32* %5
%96 = select i1 %89, double* %1, double* %2
br label %97
97: ; preds = %100, %92
%98 = call i32 (i32*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dinvr to i32 (i32*, double*, double*, i64*, i64*, ...)*)(i32* %5, double* %3, double* %10, i64* %14, i64* %13)
%99 = load i32, i32* %5
switch i32 %99, label %130 [
i32 1, label %100
i32 -1, label %107
]
100: ; preds = %97
%101 = call i32 (double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_cumt to i32 (double*, double*, double*, double*, ...)*)(double* %3, double* %4, double* %11, double* %12)
%102 = load double, double* %12
%103 = load double, double* %11
%104 = select i1 %89, double %103, double %102
%105 = load double, double* %96
%106 = fsub double %104, %105
store double %106, double* %10
br label %97
107: ; preds = %97
%108 = load i64, i64* %14
%109 = icmp eq i64 %108, 0
br i1 %109, label %111, label %110
110: ; preds = %107
store i32 1, i32* %5
store double -1.000000e+30, double* %6
br label %130
111: ; preds = %107
store i32 2, i32* %5
store double 1.000000e+30, double* %6
br label %130
112: ; preds = %86
store double 5.000000e+00, double* %4
store double 1.000000e-300, double* %19
store double 1.000000e+10, double* %20
store double 1.000000e-50, double* %21
store double 1.000000e-08, double* %22
%113 = call i32 (double*, double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_dstinv to i32 (double*, double*, double*, double*, double*, double*, double*, ...)*)(double* %19, double* %20, double* %8, double* %8, double* %9, double* %21, double* %22)
store i32 0, i32* %5
%114 = select i1 %89, double* %1, double* %2
br label %115
115: ; preds = %118, %112
%116 = call i32 (i32*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dinvr to i32 (i32*, double*, double*, i64*, i64*, ...)*)(i32* %5, double* %4, double* %10, i64* %14, i64* %13)
%117 = load i32, i32* %5
switch i32 %117, label %130 [
i32 1, label %118
i32 -1, label %125
]
118: ; preds = %115
%119 = call i32 (double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_cumt to i32 (double*, double*, double*, double*, ...)*)(double* %3, double* %4, double* %11, double* %12)
%120 = load double, double* %12
%121 = load double, double* %11
%122 = select i1 %89, double %121, double %120
%123 = load double, double* %114
%124 = fsub double %122, %123
store double %124, double* %10
br label %115
125: ; preds = %115
%126 = load i64, i64* %14
%127 = icmp eq i64 %126, 0
br i1 %127, label %129, label %128
128: ; preds = %125
store i32 1, i32* %5
store double 1.000000e-300, double* %6
br label %130
129: ; preds = %125
store i32 2, i32* %5
store double 1.000000e+10, double* %6
br label %130
130: ; preds = %97, %115, %111, %110, %128, %129, %90, %86, %80, %70, %59, %51, %41
ret void
}