void cdflib_cdfpoi(const int *which, double *p, double *q, double *s,
                   double *xlam, int *status, double *bound) {
  static const double tol = 1.0e-8;
  static const double atol = 1.0e-50;
  static const double inf = 1.0e300;
  static const int K1 = 1;
  double K2 = 0.0e0;
  double K4 = 0.5e0;
  double K5 = 5.0e0;
  double fx, cum, ccum, pq;
  unsigned long qhi, qleft, qporq;
  double T3, T6, T7, T8, T9, T10;
  *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 == 2) {
    goto S130;
  }
  if (!(*s < 0.0e0)) {
    goto S120;
  }
  *bound = 0.0e0;
  *status = -4;
  return;
S130:
S120:
  if (*which == 3) {
    goto S150;
  }
  if (!(*xlam < 0.0e0)) {
    goto S140;
  }
  *bound = 0.0e0;
  *status = -5;
  return;
S150:
S140:
  if (*which == 1) {
    goto S190;
  }
  pq = *p + *q;
  if (!(fabs(pq - 0.5e0 - 0.5e0) > 3.0e0 * dpmpar(K1))) {
    goto S180;
  }
  if (!(pq < 0.0e0)) {
    goto S160;
  }
  *bound = 0.0e0;
  goto S170;
S160:
  *bound = 1.0e0;
S170:
  *status = 3;
  return;
S190:
S180:
  if (!(*which == 1)) {
    qporq = *p <= *q;
  }
  if (1 == *which) {
    cdflib_cumpoi(s, xlam, p, q);
    *status = 0;
  } else if (2 == *which) {
    *s = 5.0e0;
    T3 = inf;
    T6 = atol;
    T7 = tol;
    cdflib_dstinv(&K2, &T3, &K4, &K4, &K5, &T6, &T7);
    *status = 0;
    cdflib_dinvr(status, s, &fx, &qleft, &qhi);
  S200:
    if (!(*status == 1)) {
      goto S230;
    }
    cdflib_cumpoi(s, xlam, &cum, &ccum);
    if (!qporq) {
      goto S210;
    }
    fx = cum - *p;
    goto S220;
  S210:
    fx = ccum - *q;
  S220:
    cdflib_dinvr(status, s, &fx, &qleft, &qhi);
    goto S200;
  S230:
    if (!(*status == -1)) {
      goto S260;
    }
    if (!qleft) {
      goto S240;
    }
    *status = 1;
    *bound = 0.0e0;
    goto S250;
  S240:
    *status = 2;
    *bound = inf;
  S260:
  S250:;
  } else if (3 == *which) {
    *xlam = 5.0e0;
    T8 = inf;
    T9 = atol;
    T10 = tol;
    cdflib_dstinv(&K2, &T8, &K4, &K4, &K5, &T9, &T10);
    *status = 0;
    cdflib_dinvr(status, xlam, &fx, &qleft, &qhi);
  S270:
    if (!(*status == 1)) {
      goto S300;
    }
    cdflib_cumpoi(s, xlam, &cum, &ccum);
    if (!qporq) {
      goto S280;
    }
    fx = cum - *p;
    goto S290;
  S280:
    fx = ccum - *q;
  S290:
    cdflib_dinvr(status, xlam, &fx, &qleft, &qhi);
    goto S270;
  S300:
    if (!(*status == -1)) {
      goto S330;
    }
    if (!qleft) {
      goto S310;
    }
    *status = 1;
    *bound = 0.0e0;
    goto S320;
  S310:
    *status = 2;
    *bound = inf;
  S320:;
  }
S330:
  return;
}


x86 assembly (clang, -O0):
<cdflib_cdfpoi>:
push   %rbp
mov    %rsp,%rbp
sub    $0xc0,%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)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe91(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xe7c(%rip),%xmm0
movsd  %xmm0,-0x48(%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     11bd <cdflib_cdfpoi+0x7d>
mov    -0x8(%rbp),%rax
cmpl   $0x3,(%rax)
jg     11bd <cdflib_cdfpoi+0x7d>
jmp    1203 <cdflib_cdfpoi+0xc3>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jl     11cf <cdflib_cdfpoi+0x8f>
jmp    11e4 <cdflib_cdfpoi+0xa4>
mov    0x10(%rbp),%rax
movsd  0xe35(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    11f4 <cdflib_cdfpoi+0xb4>
mov    0x10(%rbp),%rax
movsd  0xe28(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movl   $0xffffffff,(%rax)
jmp    17fd <cdflib_cdfpoi+0x6bd>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jne    1215 <cdflib_cdfpoi+0xd5>
jmp    128a <cdflib_cdfpoi+0x14a>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     1245 <cdflib_cdfpoi+0x105>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xdda(%rip),%xmm1
ucomisd %xmm1,%xmm0
ja     1245 <cdflib_cdfpoi+0x105>
jmp    128f <cdflib_cdfpoi+0x14f>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     125b <cdflib_cdfpoi+0x11b>
jmp    126b <cdflib_cdfpoi+0x12b>
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    127b <cdflib_cdfpoi+0x13b>
mov    0x10(%rbp),%rax
movsd  0xd99(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movl   $0xfffffffe,(%rax)
jmp    17fd <cdflib_cdfpoi+0x6bd>
jmp    128f <cdflib_cdfpoi+0x14f>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jne    12a1 <cdflib_cdfpoi+0x161>
jmp    1316 <cdflib_cdfpoi+0x1d6>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jae    12d1 <cdflib_cdfpoi+0x191>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xd4e(%rip),%xmm1
ucomisd %xmm1,%xmm0
ja     12d1 <cdflib_cdfpoi+0x191>
jmp    131b <cdflib_cdfpoi+0x1db>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jae    12e7 <cdflib_cdfpoi+0x1a7>
jmp    12f7 <cdflib_cdfpoi+0x1b7>
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1307 <cdflib_cdfpoi+0x1c7>
mov    0x10(%rbp),%rax
movsd  0xd0d(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movl   $0xfffffffd,(%rax)
jmp    17fd <cdflib_cdfpoi+0x6bd>
jmp    131b <cdflib_cdfpoi+0x1db>
mov    -0x8(%rbp),%rax
cmpl   $0x2,(%rax)
jne    132d <cdflib_cdfpoi+0x1ed>
jmp    135d <cdflib_cdfpoi+0x21d>
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     1343 <cdflib_cdfpoi+0x203>
jmp    1362 <cdflib_cdfpoi+0x222>
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movl   $0xfffffffc,(%rax)
jmp    17fd <cdflib_cdfpoi+0x6bd>
jmp    1362 <cdflib_cdfpoi+0x222>
mov    -0x8(%rbp),%rax
cmpl   $0x3,(%rax)
jne    1374 <cdflib_cdfpoi+0x234>
jmp    13a4 <cdflib_cdfpoi+0x264>
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     138a <cdflib_cdfpoi+0x24a>
jmp    13a9 <cdflib_cdfpoi+0x269>
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movl   $0xfffffffb,(%rax)
jmp    17fd <cdflib_cdfpoi+0x6bd>
jmp    13a9 <cdflib_cdfpoi+0x269>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jne    13bb <cdflib_cdfpoi+0x27b>
jmp    1475 <cdflib_cdfpoi+0x335>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  0xc2b(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xc1f(%rip),%xmm1
subsd  %xmm1,%xmm0
movaps 0xc4c(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <dpmpar@plt>
movsd  -0xb8(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm2
movsd  0xbf8(%rip),%xmm1
mulsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     1433 <cdflib_cdfpoi+0x2f3>
jmp    147a <cdflib_cdfpoi+0x33a>
xorps  %xmm0,%xmm0
ucomisd -0x68(%rbp),%xmm0
ja     1446 <cdflib_cdfpoi+0x306>
jmp    1456 <cdflib_cdfpoi+0x316>
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1466 <cdflib_cdfpoi+0x326>
mov    0x10(%rbp),%rax
movsd  0xbae(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movl   $0x3,(%rax)
jmp    17fd <cdflib_cdfpoi+0x6bd>
jmp    147a <cdflib_cdfpoi+0x33a>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
je     14a9 <cdflib_cdfpoi+0x369>
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,-0x80(%rbp)
mov    -0x8(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jne    14e0 <cdflib_cdfpoi+0x3a0>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x10(%rbp),%rdx
mov    -0x18(%rbp),%rcx
mov    $0x0,%al
call   1050 <cdflib_cumpoi@plt>
mov    -0x30(%rbp),%rax
movl   $0x0,(%rax)
jmp    17f3 <cdflib_cdfpoi+0x6b3>
mov    -0x8(%rbp),%rcx
mov    $0x2,%eax
cmp    (%rcx),%eax
jne    1667 <cdflib_cdfpoi+0x527>
mov    -0x20(%rbp),%rax
movsd  0xb03(%rip),%xmm0
movsd  %xmm0,(%rax)
movsd  0xb27(%rip),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xb0f(%rip),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0xaf7(%rip),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
lea    -0x38(%rbp),%rdi
lea    -0x88(%rbp),%rsi
lea    -0x40(%rbp),%rcx
lea    -0x48(%rbp),%r8
lea    -0x90(%rbp),%r9
lea    -0x98(%rbp),%rax
mov    %rcx,%rdx
mov    %rax,(%rsp)
mov    $0x0,%al
call   1040 <cdflib_dstinv@plt>
mov    -0x30(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x30(%rbp),%rdi
mov    -0x20(%rbp),%rsi
lea    -0x50(%rbp),%rdx
lea    -0x78(%rbp),%rcx
lea    -0x70(%rbp),%r8
mov    $0x0,%al
call   1060 <cdflib_dinvr@plt>
mov    -0x30(%rbp),%rax
cmpl   $0x1,(%rax)
je     1597 <cdflib_cdfpoi+0x457>
jmp    1607 <cdflib_cdfpoi+0x4c7>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
lea    -0x58(%rbp),%rdx
lea    -0x60(%rbp),%rcx
mov    $0x0,%al
call   1050 <cdflib_cumpoi@plt>
cmpq   $0x0,-0x80(%rbp)
jne    15be <cdflib_cdfpoi+0x47e>
jmp    15d5 <cdflib_cdfpoi+0x495>
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    15e7 <cdflib_cdfpoi+0x4a7>
movsd  -0x60(%rbp),%xmm0
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x30(%rbp),%rdi
mov    -0x20(%rbp),%rsi
lea    -0x50(%rbp),%rdx
lea    -0x78(%rbp),%rcx
lea    -0x70(%rbp),%r8
mov    $0x0,%al
call   1060 <cdflib_dinvr@plt>
jmp    1585 <cdflib_cdfpoi+0x445>
mov    -0x30(%rbp),%rax
cmpl   $0xffffffff,(%rax)
je     1619 <cdflib_cdfpoi+0x4d9>
jmp    165d <cdflib_cdfpoi+0x51d>
cmpq   $0x0,-0x78(%rbp)
jne    1629 <cdflib_cdfpoi+0x4e9>
jmp    1643 <cdflib_cdfpoi+0x503>
mov    -0x30(%rbp),%rax
movl   $0x1,(%rax)
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1662 <cdflib_cdfpoi+0x522>
mov    -0x30(%rbp),%rax
movl   $0x2,(%rax)
mov    0x10(%rbp),%rax
movsd  0x9d7(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1662 <cdflib_cdfpoi+0x522>
jmp    17ee <cdflib_cdfpoi+0x6ae>
mov    -0x8(%rbp),%rcx
mov    $0x3,%eax
cmp    (%rcx),%eax
jne    17e9 <cdflib_cdfpoi+0x6a9>
mov    -0x28(%rbp),%rax
movsd  0x97c(%rip),%xmm0
movsd  %xmm0,(%rax)
movsd  0x9a0(%rip),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0x988(%rip),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0x970(%rip),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
lea    -0x38(%rbp),%rdi
lea    -0xa0(%rbp),%rsi
lea    -0x40(%rbp),%rcx
lea    -0x48(%rbp),%r8
lea    -0xa8(%rbp),%r9
lea    -0xb0(%rbp),%rax
mov    %rcx,%rdx
mov    %rax,(%rsp)
mov    $0x0,%al
call   1040 <cdflib_dstinv@plt>
mov    -0x30(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x30(%rbp),%rdi
mov    -0x28(%rbp),%rsi
lea    -0x50(%rbp),%rdx
lea    -0x78(%rbp),%rcx
lea    -0x70(%rbp),%r8
mov    $0x0,%al
call   1060 <cdflib_dinvr@plt>
mov    -0x30(%rbp),%rax
cmpl   $0x1,(%rax)
je     171e <cdflib_cdfpoi+0x5de>
jmp    178e <cdflib_cdfpoi+0x64e>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
lea    -0x58(%rbp),%rdx
lea    -0x60(%rbp),%rcx
mov    $0x0,%al
call   1050 <cdflib_cumpoi@plt>
cmpq   $0x0,-0x80(%rbp)
jne    1745 <cdflib_cdfpoi+0x605>
jmp    175c <cdflib_cdfpoi+0x61c>
movsd  -0x58(%rbp),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    176e <cdflib_cdfpoi+0x62e>
movsd  -0x60(%rbp),%xmm0
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x30(%rbp),%rdi
mov    -0x28(%rbp),%rsi
lea    -0x50(%rbp),%rdx
lea    -0x78(%rbp),%rcx
lea    -0x70(%rbp),%r8
mov    $0x0,%al
call   1060 <cdflib_dinvr@plt>
jmp    170c <cdflib_cdfpoi+0x5cc>
mov    -0x30(%rbp),%rax
cmpl   $0xffffffff,(%rax)
je     17a0 <cdflib_cdfpoi+0x660>
jmp    17f8 <cdflib_cdfpoi+0x6b8>
cmpq   $0x0,-0x78(%rbp)
jne    17b0 <cdflib_cdfpoi+0x670>
jmp    17ca <cdflib_cdfpoi+0x68a>
mov    -0x30(%rbp),%rax
movl   $0x1,(%rax)
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    17e4 <cdflib_cdfpoi+0x6a4>
mov    -0x30(%rbp),%rax
movl   $0x2,(%rax)
mov    0x10(%rbp),%rax
movsd  0x850(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    17e9 <cdflib_cdfpoi+0x6a9>
jmp    17ee <cdflib_cdfpoi+0x6ae>
jmp    17f3 <cdflib_cdfpoi+0x6b3>
jmp    17f8 <cdflib_cdfpoi+0x6b8>
jmp    17fd <cdflib_cdfpoi+0x6bd>
add    $0xc0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cdflib_cdfpoi>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x88,%rsp
mov    %r9,%rbx
mov    %r8,%r15
mov    %rcx,%r12
mov    %rdx,%r8
mov    0xc0(%rsp),%rdx
movq   $0x0,0x60(%rsp)
movabs $0x3fe0000000000000,%rax
mov    %rax,0x58(%rsp)
movabs $0x4014000000000000,%r14
mov    %r14,0x50(%rsp)
movl   $0x0,(%r9)
movq   $0x0,(%rdx)
mov    (%rdi),%eax
lea    -0x4(%rax),%ecx
cmp    $0xfffffffc,%ecx
ja     11c6 <cdflib_cdfpoi+0x86>
xor    %ecx,%ecx
test   %eax,%eax
setle  %cl
lea    0xe7e(%rip),%rax
movsd  (%rax,%rcx,8),%xmm0
movsd  %xmm0,(%rdx)
movl   $0xffffffff,(%rbx)
jmp    1338 <cdflib_cdfpoi+0x1f8>
mov    %rsi,%r13
cmp    $0x1,%eax
jne    11e5 <cdflib_cdfpoi+0xa5>
xorpd  %xmm0,%xmm0
ucomisd (%r12),%xmm0
jbe    122d <cdflib_cdfpoi+0xed>
movl   $0xfffffffc,(%rbx)
jmp    1338 <cdflib_cdfpoi+0x1f8>
movsd  0x0(%r13),%xmm2
xorpd  %xmm0,%xmm0
ucomisd %xmm2,%xmm0
ja     1243 <cdflib_cdfpoi+0x103>
ucomisd 0xe03(%rip),%xmm2
ja     1243 <cdflib_cdfpoi+0x103>
movsd  (%r8),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
jae    1263 <cdflib_cdfpoi+0x123>
ucomisd 0xdea(%rip),%xmm0
ja     1263 <cdflib_cdfpoi+0x123>
mov    %rdi,%rbp
xorpd  %xmm1,%xmm1
cmp    $0x2,%eax
jne    1283 <cdflib_cdfpoi+0x143>
ucomisd (%r15),%xmm1
ja     1238 <cdflib_cdfpoi+0xf8>
jmp    128f <cdflib_cdfpoi+0x14f>
ucomisd (%r15),%xmm0
jbe    131f <cdflib_cdfpoi+0x1df>
movl   $0xfffffffb,(%rbx)
jmp    1338 <cdflib_cdfpoi+0x1f8>
cmpltsd %xmm0,%xmm2
movsd  0xdb0(%rip),%xmm0
andnpd %xmm0,%xmm2
movlpd %xmm2,(%rdx)
movl   $0xfffffffe,(%rbx)
jmp    1338 <cdflib_cdfpoi+0x1f8>
cmpnlesd %xmm1,%xmm0
movsd  0xd90(%rip),%xmm1
andpd  %xmm0,%xmm1
movlpd %xmm1,(%rdx)
movl   $0xfffffffd,(%rbx)
jmp    1338 <cdflib_cdfpoi+0x1f8>
ucomisd (%r12),%xmm1
ja     11da <cdflib_cdfpoi+0x9a>
mov    %r8,0x68(%rsp)
addsd  %xmm0,%xmm2
movapd %xmm2,0x30(%rsp)
movsd  0xd62(%rip),%xmm0
addsd  %xmm0,%xmm2
addsd  %xmm0,%xmm2
andpd  0xd6a(%rip),%xmm2
movapd %xmm2,0x40(%rsp)
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <dpmpar@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xd39(%rip),%xmm0
movapd 0x40(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jbe    1312 <cdflib_cdfpoi+0x1d2>
xorpd  %xmm0,%xmm0
movapd 0x30(%rsp),%xmm1
cmpltsd %xmm0,%xmm1
movsd  0xd06(%rip),%xmm0
andnpd %xmm0,%xmm1
mov    0xc0(%rsp),%rax
movlpd %xmm1,(%rax)
movl   $0x3,(%rbx)
jmp    1338 <cdflib_cdfpoi+0x1f8>
mov    0x0(%rbp),%eax
cmp    $0x1,%eax
mov    0x68(%rsp),%r8
jne    134a <cdflib_cdfpoi+0x20a>
mov    %r12,%rdi
mov    %r15,%rsi
mov    %r13,%rdx
mov    %r8,%rcx
xor    %eax,%eax
call   1050 <cdflib_cumpoi@plt>
movl   $0x0,(%rbx)
add    $0x88,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
movsd  0x0(%r13),%xmm0
movsd  %xmm0,0x40(%rsp)
movsd  (%r8),%xmm0
movsd  %xmm0,0x30(%rsp)
cmp    $0x2,%eax
je     144f <cdflib_cdfpoi+0x30f>
cmp    $0x3,%eax
jne    1338 <cdflib_cdfpoi+0x1f8>
mov    %r14,(%r15)
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    0x60(%rsp),%rdi
lea    0x18(%rsp),%rsi
lea    0x58(%rsp),%rcx
mov    %r8,%r14
lea    0x50(%rsp),%r8
lea    0x10(%rsp),%r9
mov    %rcx,%rdx
xor    %eax,%eax
call   1040 <cdflib_dstinv@plt>
movsd  0x30(%rsp),%xmm0
ucomisd 0x40(%rsp),%xmm0
movl   $0x0,(%rbx)
cmovae %r13,%r14
lea    0x80(%rsp),%rbp
lea    0x78(%rsp),%r13
mov    %rbx,%rdi
mov    %r15,%rsi
lea    0x28(%rsp),%rdx
lea    0x20(%rsp),%rcx
lea    0x70(%rsp),%r8
xor    %eax,%eax
call   1060 <cdflib_dinvr@plt>
mov    (%rbx),%eax
cmp    $0x1,%eax
jne    152c <cdflib_cdfpoi+0x3ec>
mov    %r12,%rdi
mov    %r15,%rsi
mov    %rbp,%rdx
mov    %r13,%rcx
xor    %eax,%eax
call   1050 <cdflib_cumpoi@plt>
movsd  0x30(%rsp),%xmm0
ucomisd 0x40(%rsp),%xmm0
mov    %r13,%rax
cmovae %rbp,%rax
movsd  (%rax),%xmm0
subsd  (%r14),%xmm0
movsd  %xmm0,0x28(%rsp)
jmp    13f1 <cdflib_cdfpoi+0x2b1>
mov    %r14,(%r12)
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    0x60(%rsp),%rdi
lea    0x18(%rsp),%rsi
lea    0x58(%rsp),%rcx
mov    %r8,%r14
lea    0x50(%rsp),%r8
lea    0x10(%rsp),%r9
mov    %rcx,%rdx
xor    %eax,%eax
call   1040 <cdflib_dstinv@plt>
movsd  0x30(%rsp),%xmm0
ucomisd 0x40(%rsp),%xmm0
movl   $0x0,(%rbx)
cmovae %r13,%r14
lea    0x80(%rsp),%rbp
lea    0x78(%rsp),%r13
mov    %rbx,%rdi
mov    %r12,%rsi
lea    0x28(%rsp),%rdx
lea    0x20(%rsp),%rcx
lea    0x70(%rsp),%r8
xor    %eax,%eax
call   1060 <cdflib_dinvr@plt>
mov    (%rbx),%eax
cmp    $0x1,%eax
jne    152c <cdflib_cdfpoi+0x3ec>
mov    %r12,%rdi
mov    %r15,%rsi
mov    %rbp,%rdx
mov    %r13,%rcx
xor    %eax,%eax
call   1050 <cdflib_cumpoi@plt>
movsd  0x30(%rsp),%xmm0
ucomisd 0x40(%rsp),%xmm0
mov    %r13,%rax
cmovae %rbp,%rax
movsd  (%rax),%xmm0
subsd  (%r14),%xmm0
movsd  %xmm0,0x28(%rsp)
jmp    14d2 <cdflib_cdfpoi+0x392>
cmp    $0xffffffff,%eax
jne    1338 <cdflib_cdfpoi+0x1f8>
cmpq   $0x0,0x20(%rsp)
mov    0xc0(%rsp),%rax
je     1557 <cdflib_cdfpoi+0x417>
movl   $0x1,(%rbx)
movq   $0x0,(%rax)
jmp    1338 <cdflib_cdfpoi+0x1f8>
movl   $0x2,(%rbx)
movabs $0x7e37e43c8800759c,%rcx
e4 37 7e
mov    %rcx,(%rax)
jmp    1338 <cdflib_cdfpoi+0x1f8>

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

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