void cdflib_cdfchn(const int *which, double *p, double *q, double *x,
                   double *df, double *pnonc, int *status, double *bound) {
  static const double tent4 = 1.0e4;
  static const double tol = 1.0e-8;
  static const double atol = 1.0e-50;
  static const double zero = 1.0e-300;
  static const double one = 1.0e0 - 1.0e-16;
  static const double inf = 1.0e300;
  double K1 = 0.0e0;
  double K3 = 0.5e0;
  double K4 = 5.0e0;
  double fx, cum, ccum;
  unsigned long qhi, qleft;
  double T2, T5, T6, T7, T8, T9, T10, T11, T12, T13;
  *status = 0;
  *bound = 0.0;
  if (!(*which < 1 || *which > 4)) {
    goto S30;
  }
  if (!(*which < 1)) {
    goto S10;
  }
  *bound = 1.0e0;
  goto S20;
S10:
  *bound = 4.0e0;
S20:
  *status = -1;
  return;
S30:
  if (*which == 1) {
    goto S70;
  }
  if (!(*p < 0.0e0 || *p > one)) {
    goto S60;
  }
  if (!(*p < 0.0e0)) {
    goto S40;
  }
  *bound = 0.0e0;
  goto S50;
S40:
  *bound = one;
S50:
  *status = -2;
  return;
S70:
S60:
  if (*which == 2) {
    goto S90;
  }
  if (!(*x < 0.0e0)) {
    goto S80;
  }
  *bound = 0.0e0;
  *status = -4;
  return;
S90:
S80:
  if (*which == 3) {
    goto S110;
  }
  if (!(*df <= 0.0e0)) {
    goto S100;
  }
  *bound = 0.0e0;
  *status = -5;
  return;
S110:
S100:
  if (*which == 4) {
    goto S130;
  }
  if (!(*pnonc < 0.0e0)) {
    goto S120;
  }
  *bound = 0.0e0;
  *status = -6;
  return;
S130:
S120:
  if (1 == *which) {
    cdflib_cumchn(x, df, pnonc, p, q);
    *status = 0;
  } else if (2 == *which) {
    *x = 5.0e0;
    T2 = inf;
    T5 = atol;
    T6 = tol;
    cdflib_dstinv(&K1, &T2, &K3, &K3, &K4, &T5, &T6);
    *status = 0;
    cdflib_dinvr(status, x, &fx, &qleft, &qhi);
  S140:
    if (!(*status == 1)) {
      goto S150;
    }
    cdflib_cumchn(x, df, pnonc, &cum, &ccum);
    fx = cum - *p;
    cdflib_dinvr(status, x, &fx, &qleft, &qhi);
    goto S140;
  S150:
    if (!(*status == -1)) {
      goto S180;
    }
    if (!qleft) {
      goto S160;
    }
    *status = 1;
    *bound = 0.0e0;
    goto S170;
  S160:
    *status = 2;
    *bound = inf;
  S180:
  S170:;
  } else if (3 == *which) {
    *df = 5.0e0;
    T7 = zero;
    T8 = inf;
    T9 = atol;
    T10 = tol;
    cdflib_dstinv(&T7, &T8, &K3, &K3, &K4, &T9, &T10);
    *status = 0;
    cdflib_dinvr(status, df, &fx, &qleft, &qhi);
  S190:
    if (!(*status == 1)) {
      goto S200;
    }
    cdflib_cumchn(x, df, pnonc, &cum, &ccum);
    fx = cum - *p;
    cdflib_dinvr(status, df, &fx, &qleft, &qhi);
    goto S190;
  S200:
    if (!(*status == -1)) {
      goto S230;
    }
    if (!qleft) {
      goto S210;
    }
    *status = 1;
    *bound = zero;
    goto S220;
  S210:
    *status = 2;
    *bound = inf;
  S230:
  S220:;
  } else if (4 == *which) {
    *pnonc = 5.0e0;
    T11 = tent4;
    T12 = atol;
    T13 = tol;
    cdflib_dstinv(&K1, &T11, &K3, &K3, &K4, &T12, &T13);
    *status = 0;
    cdflib_dinvr(status, pnonc, &fx, &qleft, &qhi);
  S240:
    if (!(*status == 1)) {
      goto S250;
    }
    cdflib_cumchn(x, df, pnonc, &cum, &ccum);
    fx = cum - *p;
    cdflib_dinvr(status, pnonc, &fx, &qleft, &qhi);
    goto S240;
  S250:
    if (!(*status == -1)) {
      goto S280;
    }
    if (!qleft) {
      goto S260;
    }
    *status = 1;
    *bound = zero;
    goto S270;
  S260:
    *status = 2;
    *bound = tent4;
  S270:;
  }
S280:
  return;
}


x86 assembly (clang, -O0):
<cdflib_cdfchn>:
push   %rbp
mov    %rsp,%rbp
sub    $0xd0,%rsp
mov    0x18(%rbp),%rax
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)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe9d(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xe88(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x10(%rbp),%rax
movl   $0x0,(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jl     11b1 <cdflib_cdfchn+0x81>
mov    -0x8(%rbp),%rax
cmpl   $0x4,(%rax)
jg     11b1 <cdflib_cdfchn+0x81>
jmp    11f7 <cdflib_cdfchn+0xc7>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jl     11c3 <cdflib_cdfchn+0x93>
jmp    11d8 <cdflib_cdfchn+0xa8>
mov    0x18(%rbp),%rax
movsd  0xe79(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    11e8 <cdflib_cdfchn+0xb8>
mov    0x18(%rbp),%rax
movsd  0xe5c(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
jmp    17e4 <cdflib_cdfchn+0x6b4>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jne    1209 <cdflib_cdfchn+0xd9>
jmp    127e <cdflib_cdfchn+0x14e>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     1239 <cdflib_cdfchn+0x109>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xde6(%rip),%xmm1
ucomisd %xmm1,%xmm0
ja     1239 <cdflib_cdfchn+0x109>
jmp    1283 <cdflib_cdfchn+0x153>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     124f <cdflib_cdfchn+0x11f>
jmp    125f <cdflib_cdfchn+0x12f>
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    126f <cdflib_cdfchn+0x13f>
mov    0x18(%rbp),%rax
movsd  0xda5(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    0x10(%rbp),%rax
movl   $0xfffffffe,(%rax)
jmp    17e4 <cdflib_cdfchn+0x6b4>
jmp    1283 <cdflib_cdfchn+0x153>
mov    -0x8(%rbp),%rax
cmpl   $0x2,(%rax)
jne    1295 <cdflib_cdfchn+0x165>
jmp    12c5 <cdflib_cdfchn+0x195>
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     12ab <cdflib_cdfchn+0x17b>
jmp    12ca <cdflib_cdfchn+0x19a>
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    0x10(%rbp),%rax
movl   $0xfffffffc,(%rax)
jmp    17e4 <cdflib_cdfchn+0x6b4>
jmp    12ca <cdflib_cdfchn+0x19a>
mov    -0x8(%rbp),%rax
cmpl   $0x3,(%rax)
jne    12dc <cdflib_cdfchn+0x1ac>
jmp    130c <cdflib_cdfchn+0x1dc>
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jae    12f2 <cdflib_cdfchn+0x1c2>
jmp    1311 <cdflib_cdfchn+0x1e1>
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    0x10(%rbp),%rax
movl   $0xfffffffb,(%rax)
jmp    17e4 <cdflib_cdfchn+0x6b4>
jmp    1311 <cdflib_cdfchn+0x1e1>
mov    -0x8(%rbp),%rax
cmpl   $0x4,(%rax)
jne    1323 <cdflib_cdfchn+0x1f3>
jmp    1353 <cdflib_cdfchn+0x223>
mov    -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     1339 <cdflib_cdfchn+0x209>
jmp    1358 <cdflib_cdfchn+0x228>
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    0x10(%rbp),%rax
movl   $0xfffffffa,(%rax)
jmp    17e4 <cdflib_cdfchn+0x6b4>
jmp    1358 <cdflib_cdfchn+0x228>
mov    -0x8(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jne    1393 <cdflib_cdfchn+0x263>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x30(%rbp),%rdx
mov    -0x10(%rbp),%rcx
mov    -0x18(%rbp),%r8
mov    $0x0,%al
call   1040 <cdflib_cumchn@plt>
mov    0x10(%rbp),%rax
movl   $0x0,(%rax)
jmp    17da <cdflib_cdfchn+0x6aa>
mov    -0x8(%rbp),%rcx
mov    $0x2,%eax
cmp    (%rcx),%eax
jne    14eb <cdflib_cdfchn+0x3bb>
mov    -0x20(%rbp),%rax
movsd  0xc50(%rip),%xmm0
movsd  %xmm0,(%rax)
movsd  0xc7c(%rip),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0xc57(%rip),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  0xc42(%rip),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
lea    -0x38(%rbp),%rdi
lea    -0x78(%rbp),%rsi
lea    -0x40(%rbp),%rcx
lea    -0x48(%rbp),%r8
lea    -0x80(%rbp),%r9
lea    -0x88(%rbp),%rax
mov    %rcx,%rdx
mov    %rax,(%rsp)
mov    $0x0,%al
call   1030 <cdflib_dstinv@plt>
mov    0x10(%rbp),%rax
movl   $0x0,(%rax)
mov    0x10(%rbp),%rdi
mov    -0x20(%rbp),%rsi
lea    -0x50(%rbp),%rdx
lea    -0x70(%rbp),%rcx
lea    -0x68(%rbp),%r8
mov    $0x0,%al
call   1050 <cdflib_dinvr@plt>
mov    0x10(%rbp),%rax
cmpl   $0x1,(%rax)
je     143e <cdflib_cdfchn+0x30e>
jmp    148b <cdflib_cdfchn+0x35b>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x30(%rbp),%rdx
lea    -0x58(%rbp),%rcx
lea    -0x60(%rbp),%r8
mov    $0x0,%al
call   1040 <cdflib_cumchn@plt>
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x10(%rbp),%rdi
mov    -0x20(%rbp),%rsi
lea    -0x50(%rbp),%rdx
lea    -0x70(%rbp),%rcx
lea    -0x68(%rbp),%r8
mov    $0x0,%al
call   1050 <cdflib_dinvr@plt>
jmp    142c <cdflib_cdfchn+0x2fc>
mov    0x10(%rbp),%rax
cmpl   $0xffffffff,(%rax)
je     149d <cdflib_cdfchn+0x36d>
jmp    14e1 <cdflib_cdfchn+0x3b1>
cmpq   $0x0,-0x70(%rbp)
jne    14ad <cdflib_cdfchn+0x37d>
jmp    14c7 <cdflib_cdfchn+0x397>
mov    0x10(%rbp),%rax
movl   $0x1,(%rax)
mov    0x18(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    14e6 <cdflib_cdfchn+0x3b6>
mov    0x10(%rbp),%rax
movl   $0x2,(%rax)
mov    0x18(%rbp),%rax
movsd  0xb5b(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    14e6 <cdflib_cdfchn+0x3b6>
jmp    17d5 <cdflib_cdfchn+0x6a5>
mov    -0x8(%rbp),%rcx
mov    $0x3,%eax
cmp    (%rcx),%eax
jne    1667 <cdflib_cdfchn+0x537>
mov    -0x28(%rbp),%rax
movsd  0xaf8(%rip),%xmm0
movsd  %xmm0,(%rax)
movsd  0xb1c(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xb14(%rip),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0xaec(%rip),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0xad4(%rip),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
lea    -0x90(%rbp),%rdi
lea    -0x98(%rbp),%rsi
lea    -0x40(%rbp),%rcx
lea    -0x48(%rbp),%r8
lea    -0xa0(%rbp),%r9
lea    -0xa8(%rbp),%rax
mov    %rcx,%rdx
mov    %rax,(%rsp)
mov    $0x0,%al
call   1030 <cdflib_dstinv@plt>
mov    0x10(%rbp),%rax
movl   $0x0,(%rax)
mov    0x10(%rbp),%rdi
mov    -0x28(%rbp),%rsi
lea    -0x50(%rbp),%rdx
lea    -0x70(%rbp),%rcx
lea    -0x68(%rbp),%r8
mov    $0x0,%al
call   1050 <cdflib_dinvr@plt>
mov    0x10(%rbp),%rax
cmpl   $0x1,(%rax)
je     15b5 <cdflib_cdfchn+0x485>
jmp    1602 <cdflib_cdfchn+0x4d2>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x30(%rbp),%rdx
lea    -0x58(%rbp),%rcx
lea    -0x60(%rbp),%r8
mov    $0x0,%al
call   1040 <cdflib_cumchn@plt>
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x10(%rbp),%rdi
mov    -0x28(%rbp),%rsi
lea    -0x50(%rbp),%rdx
lea    -0x70(%rbp),%rcx
lea    -0x68(%rbp),%r8
mov    $0x0,%al
call   1050 <cdflib_dinvr@plt>
jmp    15a3 <cdflib_cdfchn+0x473>
mov    0x10(%rbp),%rax
cmpl   $0xffffffff,(%rax)
je     1614 <cdflib_cdfchn+0x4e4>
jmp    165d <cdflib_cdfchn+0x52d>
cmpq   $0x0,-0x70(%rbp)
jne    1624 <cdflib_cdfchn+0x4f4>
jmp    1643 <cdflib_cdfchn+0x513>
mov    0x10(%rbp),%rax
movl   $0x1,(%rax)
mov    0x18(%rbp),%rax
movsd  0x9f6(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1662 <cdflib_cdfchn+0x532>
mov    0x10(%rbp),%rax
movl   $0x2,(%rax)
mov    0x18(%rbp),%rax
movsd  0x9df(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1662 <cdflib_cdfchn+0x532>
jmp    17d0 <cdflib_cdfchn+0x6a0>
mov    -0x8(%rbp),%rcx
mov    $0x4,%eax
cmp    (%rcx),%eax
jne    17cb <cdflib_cdfchn+0x69b>
mov    -0x30(%rbp),%rax
movsd  0x97c(%rip),%xmm0
movsd  %xmm0,(%rax)
movsd  0x998(%rip),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  0x980(%rip),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0x968(%rip),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
lea    -0x38(%rbp),%rdi
lea    -0xb0(%rbp),%rsi
lea    -0x40(%rbp),%rcx
lea    -0x48(%rbp),%r8
lea    -0xb8(%rbp),%r9
lea    -0xc0(%rbp),%rax
mov    %rcx,%rdx
mov    %rax,(%rsp)
mov    $0x0,%al
call   1030 <cdflib_dstinv@plt>
mov    0x10(%rbp),%rax
movl   $0x0,(%rax)
mov    0x10(%rbp),%rdi
mov    -0x30(%rbp),%rsi
lea    -0x50(%rbp),%rdx
lea    -0x70(%rbp),%rcx
lea    -0x68(%rbp),%r8
mov    $0x0,%al
call   1050 <cdflib_dinvr@plt>
mov    0x10(%rbp),%rax
cmpl   $0x1,(%rax)
je     171e <cdflib_cdfchn+0x5ee>
jmp    176b <cdflib_cdfchn+0x63b>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x30(%rbp),%rdx
lea    -0x58(%rbp),%rcx
lea    -0x60(%rbp),%r8
mov    $0x0,%al
call   1040 <cdflib_cumchn@plt>
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x10(%rbp),%rdi
mov    -0x30(%rbp),%rsi
lea    -0x50(%rbp),%rdx
lea    -0x70(%rbp),%rcx
lea    -0x68(%rbp),%r8
mov    $0x0,%al
call   1050 <cdflib_dinvr@plt>
jmp    170c <cdflib_cdfchn+0x5dc>
mov    0x10(%rbp),%rax
cmpl   $0xffffffff,(%rax)
je     177d <cdflib_cdfchn+0x64d>
jmp    17df <cdflib_cdfchn+0x6af>
cmpq   $0x0,-0x70(%rbp)
jne    178d <cdflib_cdfchn+0x65d>
jmp    17ac <cdflib_cdfchn+0x67c>
mov    0x10(%rbp),%rax
movl   $0x1,(%rax)
mov    0x18(%rbp),%rax
movsd  0x88d(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    17c6 <cdflib_cdfchn+0x696>
mov    0x10(%rbp),%rax
movl   $0x2,(%rax)
mov    0x18(%rbp),%rax
movsd  0x866(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    17cb <cdflib_cdfchn+0x69b>
jmp    17d0 <cdflib_cdfchn+0x6a0>
jmp    17d5 <cdflib_cdfchn+0x6a5>
jmp    17da <cdflib_cdfchn+0x6aa>
jmp    17df <cdflib_cdfchn+0x6af>
jmp    17e4 <cdflib_cdfchn+0x6b4>
add    $0xd0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cdflib_cdfchn>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
mov    %r8,%r13
mov    %rcx,%rbx
mov    %rdx,%r8
mov    0xa8(%rsp),%rbp
mov    0xa0(%rsp),%r14
movq   $0x0,0x58(%rsp)
movabs $0x3fe0000000000000,%rax
mov    %rax,0x40(%rsp)
movabs $0x4014000000000000,%rax
mov    %rax,0x38(%rsp)
movl   $0x0,(%r14)
movq   $0x0,0x0(%rbp)
mov    (%rdi),%ecx
lea    -0x5(%rcx),%edx
cmp    $0xfffffffb,%edx
ja     11bb <cdflib_cdfchn+0x8b>
xor    %eax,%eax
test   %ecx,%ecx
setle  %al
lea    0xe63(%rip),%rcx
movsd  (%rcx,%rax,8),%xmm0
movsd  %xmm0,0x0(%rbp)
movl   $0xffffffff,(%r14)
jmp    132b <cdflib_cdfchn+0x1fb>
mov    %r9,%r15
mov    %rsi,%r12
cmp    $0x1,%ecx
jne    11dc <cdflib_cdfchn+0xac>
xorpd  %xmm0,%xmm0
ucomisd (%rbx),%xmm0
jbe    11fb <cdflib_cdfchn+0xcb>
movl   $0xfffffffc,(%r14)
jmp    132b <cdflib_cdfchn+0x1fb>
movsd  (%r12),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
ja     1226 <cdflib_cdfchn+0xf6>
ucomisd 0xe0c(%rip),%xmm0
ja     1226 <cdflib_cdfchn+0xf6>
cmp    $0x2,%ecx
jne    1248 <cdflib_cdfchn+0x118>
xorpd  %xmm0,%xmm0
ucomisd 0x0(%r13),%xmm0
jae    1324 <cdflib_cdfchn+0x1f4>
xorpd  %xmm0,%xmm0
ucomisd (%r15),%xmm0
jbe    133a <cdflib_cdfchn+0x20a>
movl   $0xfffffffa,(%r14)
jmp    132b <cdflib_cdfchn+0x1fb>
cmpltsd %xmm1,%xmm0
movsd  0xdcd(%rip),%xmm1
andnpd %xmm1,%xmm0
movlpd %xmm0,0x0(%rbp)
movl   $0xfffffffe,(%r14)
jmp    132b <cdflib_cdfchn+0x1fb>
xorpd  %xmm0,%xmm0
ucomisd (%rbx),%xmm0
ja     11d0 <cdflib_cdfchn+0xa0>
cmp    $0x3,%ecx
je     120b <cdflib_cdfchn+0xdb>
xorpd  %xmm0,%xmm0
ucomisd 0x0(%r13),%xmm0
jae    1324 <cdflib_cdfchn+0x1f4>
mov    %rax,(%r15)
movabs $0x40c3880000000000,%rax
88 c3 40
mov    %rax,0x18(%rsp)
movabs $0x358dee7a4ad4b81f,%rax
ee 8d 35
mov    %rax,0x10(%rsp)
movabs $0x3e45798ee2308c3a,%rax
79 45 3e
mov    %rax,0x8(%rsp)
lea    0x8(%rsp),%rax
mov    %rax,(%rsp)
lea    0x58(%rsp),%rdi
lea    0x18(%rsp),%rsi
lea    0x40(%rsp),%rcx
lea    0x38(%rsp),%r8
lea    0x10(%rsp),%r9
mov    %rcx,%rdx
xor    %eax,%eax
call   1030 <cdflib_dstinv@plt>
movl   $0x0,(%r14)
mov    %r14,%rdi
mov    %r15,%rsi
lea    0x30(%rsp),%rdx
lea    0x20(%rsp),%rcx
lea    0x48(%rsp),%r8
xor    %eax,%eax
call   1050 <cdflib_dinvr@plt>
mov    (%r14),%eax
cmp    $0x1,%eax
jne    152a <cdflib_cdfchn+0x3fa>
mov    %rbx,%rdi
mov    %r13,%rsi
mov    %r15,%rdx
lea    0x28(%rsp),%rcx
lea    0x50(%rsp),%r8
xor    %eax,%eax
call   1040 <cdflib_cumchn@plt>
movsd  0x28(%rsp),%xmm0
subsd  (%r12),%xmm0
movsd  %xmm0,0x30(%rsp)
jmp    12ce <cdflib_cdfchn+0x19e>
movl   $0xfffffffb,(%r14)
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
cmp    $0x3,%ecx
je     1369 <cdflib_cdfchn+0x239>
cmp    $0x2,%ecx
je     1436 <cdflib_cdfchn+0x306>
cmp    $0x1,%ecx
jne    132b <cdflib_cdfchn+0x1fb>
mov    %rbx,%rdi
mov    %r13,%rsi
mov    %r15,%rdx
mov    %r12,%rcx
xor    %eax,%eax
call   1040 <cdflib_cumchn@plt>
movl   $0x0,(%r14)
jmp    132b <cdflib_cdfchn+0x1fb>
mov    %rax,0x0(%r13)
movabs $0x1a56e1fc2f8f359,%rax
6e a5 01
mov    %rax,0x18(%rsp)
movabs $0x7e37e43c8800759c,%rax
e4 37 7e
mov    %rax,0x10(%rsp)
movabs $0x358dee7a4ad4b81f,%rax
ee 8d 35
mov    %rax,0x8(%rsp)
movabs $0x3e45798ee2308c3a,%rax
79 45 3e
mov    %rax,0x60(%rsp)
lea    0x60(%rsp),%rax
mov    %rax,(%rsp)
lea    0x18(%rsp),%rdi
lea    0x10(%rsp),%rsi
lea    0x40(%rsp),%rcx
lea    0x38(%rsp),%r8
lea    0x8(%rsp),%r9
mov    %rcx,%rdx
xor    %eax,%eax
call   1030 <cdflib_dstinv@plt>
movl   $0x0,(%r14)
nopl   0x0(%rax)
mov    %r14,%rdi
mov    %r13,%rsi
lea    0x30(%rsp),%rdx
lea    0x20(%rsp),%rcx
lea    0x48(%rsp),%r8
xor    %eax,%eax
call   1050 <cdflib_dinvr@plt>
mov    (%r14),%eax
cmp    $0x1,%eax
jne    14f2 <cdflib_cdfchn+0x3c2>
mov    %rbx,%rdi
mov    %r13,%rsi
mov    %r15,%rdx
lea    0x28(%rsp),%rcx
lea    0x50(%rsp),%r8
xor    %eax,%eax
call   1040 <cdflib_cumchn@plt>
movsd  0x28(%rsp),%xmm0
subsd  (%r12),%xmm0
movsd  %xmm0,0x30(%rsp)
jmp    13e0 <cdflib_cdfchn+0x2b0>
mov    %rax,(%rbx)
movabs $0x7e37e43c8800759c,%rax
e4 37 7e
mov    %rax,0x18(%rsp)
movabs $0x358dee7a4ad4b81f,%rax
ee 8d 35
mov    %rax,0x10(%rsp)
movabs $0x3e45798ee2308c3a,%rax
79 45 3e
mov    %rax,0x8(%rsp)
lea    0x8(%rsp),%rax
mov    %rax,(%rsp)
lea    0x58(%rsp),%rdi
lea    0x18(%rsp),%rsi
lea    0x40(%rsp),%rcx
lea    0x38(%rsp),%r8
lea    0x10(%rsp),%r9
mov    %rcx,%rdx
xor    %eax,%eax
call   1030 <cdflib_dstinv@plt>
movl   $0x0,(%r14)
nopl   0x0(%rax)
mov    %r14,%rdi
mov    %rbx,%rsi
lea    0x30(%rsp),%rdx
lea    0x20(%rsp),%rcx
lea    0x48(%rsp),%r8
xor    %eax,%eax
call   1050 <cdflib_dinvr@plt>
mov    (%r14),%eax
cmp    $0x1,%eax
jne    1505 <cdflib_cdfchn+0x3d5>
mov    %rbx,%rdi
mov    %r13,%rsi
mov    %r15,%rdx
lea    0x28(%rsp),%rcx
lea    0x50(%rsp),%r8
xor    %eax,%eax
call   1040 <cdflib_cumchn@plt>
movsd  0x28(%rsp),%xmm0
subsd  (%r12),%xmm0
movsd  %xmm0,0x30(%rsp)
jmp    14a0 <cdflib_cdfchn+0x370>
cmp    $0xffffffff,%eax
jne    132b <cdflib_cdfchn+0x1fb>
cmpq   $0x0,0x20(%rsp)
jne    153b <cdflib_cdfchn+0x40b>
jmp    154e <cdflib_cdfchn+0x41e>
cmp    $0xffffffff,%eax
jne    132b <cdflib_cdfchn+0x1fb>
cmpq   $0x0,0x20(%rsp)
je     154e <cdflib_cdfchn+0x41e>
movl   $0x1,(%r14)
movq   $0x0,0x0(%rbp)
jmp    132b <cdflib_cdfchn+0x1fb>
cmp    $0xffffffff,%eax
jne    132b <cdflib_cdfchn+0x1fb>
cmpq   $0x0,0x20(%rsp)
je     1561 <cdflib_cdfchn+0x431>
movl   $0x1,(%r14)
movabs $0x1a56e1fc2f8f359,%rax
6e a5 01
jmp    1572 <cdflib_cdfchn+0x442>
movl   $0x2,(%r14)
movabs $0x7e37e43c8800759c,%rax
e4 37 7e
jmp    1572 <cdflib_cdfchn+0x442>
movl   $0x2,(%r14)
movabs $0x40c3880000000000,%rax
88 c3 40
mov    %rax,0x0(%rbp)
jmp    132b <cdflib_cdfchn+0x1fb>

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

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