void cdflib_cdfbin(const int *which, double *p, double *q, double *s,
                   double *xn, double *pr, double *ompr, int *status,
                   double *bound) {
  static const double atol = 1.0e-50;
  static const double tol = 1.0e-8;
  static const double zero = 1.0e-300;
  static const double inf = 1.0e300;
  static const double one = 1.0e0;
  static const int K1 = 1;
  double K2 = 0.0e0;
  double K3 = 0.5e0;
  double K4 = 5.0e0;
  double K11 = 1.0e0;
  double fx, xhi, xlo, cum, ccum, pq, prompr;
  unsigned long qhi, qleft, qporq;
  double T5, T6, T7, T8, T9, T10, 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 > 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 (!(*xn <= 0.0e0)) {
    goto S120;
  }
  *bound = 0.0e0;
  *status = -5;
  return;
S130:
S120:
  if (*which == 2) {
    goto S170;
  }
  if (!(*s < 0.0e0 || (*which != 3 && *s > *xn))) {
    goto S160;
  }
  if (!(*s < 0.0e0)) {
    goto S140;
  }
  *bound = 0.0e0;
  goto S150;
S140:
  *bound = *xn;
S150:
  *status = -4;
  return;
S170:
S160:
  if (*which == 4) {
    goto S210;
  }
  if (!(*pr < 0.0e0 || *pr > 1.0e0)) {
    goto S200;
  }
  if (!(*pr < 0.0e0)) {
    goto S180;
  }
  *bound = 0.0e0;
  goto S190;
S180:
  *bound = 1.0e0;
S190:
  *status = -6;
  return;
S210:
S200:
  if (*which == 4) {
    goto S250;
  }
  if (!(*ompr < 0.0e0 || *ompr > 1.0e0)) {
    goto S240;
  }
  if (!(*ompr < 0.0e0)) {
    goto S220;
  }
  *bound = 0.0e0;
  goto S230;
S220:
  *bound = 1.0e0;
S230:
  *status = -7;
  return;
S250:
S240:
  if (*which == 1) {
    goto S290;
  }
  pq = *p + *q;
  if (!(fabs(pq - 0.5e0 - 0.5e0) > 3.0e0 * dpmpar(K1))) {
    goto S280;
  }
  if (!(pq < 0.0e0)) {
    goto S260;
  }
  *bound = 0.0e0;
  goto S270;
S260:
  *bound = 1.0e0;
S270:
  *status = 3;
  return;
S290:
S280:
  if (*which == 4) {
    goto S330;
  }
  prompr = *pr + *ompr;
  if (!(fabs(prompr - 0.5e0 - 0.5e0) > 3.0e0 * dpmpar(K1))) {
    goto S320;
  }
  if (!(prompr < 0.0e0)) {
    goto S300;
  }
  *bound = 0.0e0;
  goto S310;
S300:
  *bound = 1.0e0;
S310:
  *status = 4;
  return;
S330:
S320:
  if (!(*which == 1)) {
    qporq = *p <= *q;
  }
  if (1 == *which) {
    cdflib_cumbin(s, xn, pr, ompr, p, q);
    *status = 0;
  } else if (2 == *which) {
    *s = 5.0e0;
    T5 = atol;
    T6 = tol;
    cdflib_dstinv(&K2, xn, &K3, &K3, &K4, &T5, &T6);
    *status = 0;
    cdflib_dinvr(status, s, &fx, &qleft, &qhi);
  S340:
    if (!(*status == 1)) {
      goto S370;
    }
    cdflib_cumbin(s, xn, pr, ompr, &cum, &ccum);
    if (!qporq) {
      goto S350;
    }
    fx = cum - *p;
    goto S360;
  S350:
    fx = ccum - *q;
  S360:
    cdflib_dinvr(status, s, &fx, &qleft, &qhi);
    goto S340;
  S370:
    if (!(*status == -1)) {
      goto S400;
    }
    if (!qleft) {
      goto S380;
    }
    *status = 1;
    *bound = 0.0e0;
    goto S390;
  S380:
    *status = 2;
    *bound = *xn;
  S400:
  S390:;
  } else if (3 == *which) {
    *xn = 5.0e0;
    T7 = zero;
    T8 = inf;
    T9 = atol;
    T10 = tol;
    cdflib_dstinv(&T7, &T8, &K3, &K3, &K4, &T9, &T10);
    *status = 0;
    cdflib_dinvr(status, xn, &fx, &qleft, &qhi);
  S410:
    if (!(*status == 1)) {
      goto S440;
    }
    cdflib_cumbin(s, xn, pr, ompr, &cum, &ccum);
    if (!qporq) {
      goto S420;
    }
    fx = cum - *p;
    goto S430;
  S420:
    fx = ccum - *q;
  S430:
    cdflib_dinvr(status, xn, &fx, &qleft, &qhi);
    goto S410;
  S440:
    if (!(*status == -1)) {
      goto S470;
    }
    if (!qleft) {
      goto S450;
    }
    *status = 1;
    *bound = zero;
    goto S460;
  S450:
    *status = 2;
    *bound = inf;
  S470:
  S460:;
  } else if (4 == *which) {
    T12 = atol;
    T13 = tol;
    cdflib_dstzr(&K2, &K11, &T12, &T13);
    if (!qporq) {
      goto S500;
    }
    *status = 0;
    cdflib_dzror(status, pr, &fx, &xlo, &xhi, &qleft, &qhi);
    *ompr = one - *pr;
  S480:
    if (!(*status == 1)) {
      goto S490;
    }
    cdflib_cumbin(s, xn, pr, ompr, &cum, &ccum);
    fx = cum - *p;
    cdflib_dzror(status, pr, &fx, &xlo, &xhi, &qleft, &qhi);
    *ompr = one - *pr;
    goto S480;
  S490:
    goto S530;
  S500:
    *status = 0;
    cdflib_dzror(status, ompr, &fx, &xlo, &xhi, &qleft, &qhi);
    *pr = one - *ompr;
  S510:
    if (!(*status == 1)) {
      goto S520;
    }
    cdflib_cumbin(s, xn, pr, ompr, &cum, &ccum);
    fx = ccum - *q;
    cdflib_dzror(status, ompr, &fx, &xlo, &xhi, &qleft, &qhi);
    *pr = one - *ompr;
    goto S510;
  S530:
  S520:
    if (!(*status == -1)) {
      goto S560;
    }
    if (!qleft) {
      goto S540;
    }
    *status = 1;
    *bound = 0.0e0;
    goto S550;
  S540:
    *status = 2;
    *bound = 1.0e0;
  S550:;
  }
S560:
  return;
}


x86 assembly (clang, -O0):
<cdflib_cdfbin>:
push   %rbp
mov    %rsp,%rbp
sub    $0x100,%rsp
mov    0x20(%rbp),%rax
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  0xe71(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  0xe5c(%rip),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  0xe47(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    0x18(%rbp),%rax
movl   $0x0,(%rax)
mov    0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jge    11ed <cdflib_cdfbin+0x8d>
mov    -0x8(%rbp),%rax
cmpl   $0x4,(%rax)
jg     11f2 <cdflib_cdfbin+0x92>
jmp    1238 <cdflib_cdfbin+0xd8>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jl     1204 <cdflib_cdfbin+0xa4>
jmp    1219 <cdflib_cdfbin+0xb9>
mov    0x20(%rbp),%rax
movsd  0xdf0(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1229 <cdflib_cdfbin+0xc9>
mov    0x20(%rbp),%rax
movsd  0xe1b(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
movl   $0xffffffff,(%rax)
jmp    1d41 <cdflib_cdfbin+0xbe1>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jne    124a <cdflib_cdfbin+0xea>
jmp    12bf <cdflib_cdfbin+0x15f>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     127a <cdflib_cdfbin+0x11a>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xd95(%rip),%xmm1
ucomisd %xmm1,%xmm0
ja     127a <cdflib_cdfbin+0x11a>
jmp    12c4 <cdflib_cdfbin+0x164>
mov    -0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     1290 <cdflib_cdfbin+0x130>
jmp    12a0 <cdflib_cdfbin+0x140>
mov    0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    12b0 <cdflib_cdfbin+0x150>
mov    0x20(%rbp),%rax
movsd  0xd54(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
movl   $0xfffffffe,(%rax)
jmp    1d41 <cdflib_cdfbin+0xbe1>
jmp    12c4 <cdflib_cdfbin+0x164>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jne    12d6 <cdflib_cdfbin+0x176>
jmp    134b <cdflib_cdfbin+0x1eb>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     1306 <cdflib_cdfbin+0x1a6>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xd09(%rip),%xmm1
ucomisd %xmm1,%xmm0
ja     1306 <cdflib_cdfbin+0x1a6>
jmp    1350 <cdflib_cdfbin+0x1f0>
mov    -0x18(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     131c <cdflib_cdfbin+0x1bc>
jmp    132c <cdflib_cdfbin+0x1cc>
mov    0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    133c <cdflib_cdfbin+0x1dc>
mov    0x20(%rbp),%rax
movsd  0xcc8(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
movl   $0xfffffffd,(%rax)
jmp    1d41 <cdflib_cdfbin+0xbe1>
jmp    1350 <cdflib_cdfbin+0x1f0>
mov    -0x8(%rbp),%rax
cmpl   $0x3,(%rax)
jne    1362 <cdflib_cdfbin+0x202>
jmp    1392 <cdflib_cdfbin+0x232>
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
jae    1378 <cdflib_cdfbin+0x218>
jmp    1397 <cdflib_cdfbin+0x237>
mov    0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
movl   $0xfffffffb,(%rax)
jmp    1d41 <cdflib_cdfbin+0xbe1>
jmp    1397 <cdflib_cdfbin+0x237>
mov    -0x8(%rbp),%rax
cmpl   $0x2,(%rax)
jne    13a9 <cdflib_cdfbin+0x249>
jmp    1427 <cdflib_cdfbin+0x2c7>
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     13e2 <cdflib_cdfbin+0x282>
mov    -0x8(%rbp),%rax
cmpl   $0x3,(%rax)
je     13dd <cdflib_cdfbin+0x27d>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x28(%rbp),%rax
ucomisd (%rax),%xmm0
ja     13e2 <cdflib_cdfbin+0x282>
jmp    142c <cdflib_cdfbin+0x2cc>
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     13f8 <cdflib_cdfbin+0x298>
jmp    1408 <cdflib_cdfbin+0x2a8>
mov    0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1418 <cdflib_cdfbin+0x2b8>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
movl   $0xfffffffc,(%rax)
jmp    1d41 <cdflib_cdfbin+0xbe1>
jmp    142c <cdflib_cdfbin+0x2cc>
mov    -0x8(%rbp),%rax
cmpl   $0x4,(%rax)
jne    143e <cdflib_cdfbin+0x2de>
jmp    14b3 <cdflib_cdfbin+0x353>
mov    -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     146e <cdflib_cdfbin+0x30e>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xba1(%rip),%xmm1
ucomisd %xmm1,%xmm0
ja     146e <cdflib_cdfbin+0x30e>
jmp    14b8 <cdflib_cdfbin+0x358>
mov    -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     1484 <cdflib_cdfbin+0x324>
jmp    1494 <cdflib_cdfbin+0x334>
mov    0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    14a4 <cdflib_cdfbin+0x344>
mov    0x20(%rbp),%rax
movsd  0xb60(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
movl   $0xfffffffa,(%rax)
jmp    1d41 <cdflib_cdfbin+0xbe1>
jmp    14b8 <cdflib_cdfbin+0x358>
mov    -0x8(%rbp),%rax
cmpl   $0x4,(%rax)
jne    14ca <cdflib_cdfbin+0x36a>
jmp    153f <cdflib_cdfbin+0x3df>
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     14fa <cdflib_cdfbin+0x39a>
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  0xb15(%rip),%xmm1
ucomisd %xmm1,%xmm0
ja     14fa <cdflib_cdfbin+0x39a>
jmp    1544 <cdflib_cdfbin+0x3e4>
mov    0x10(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     1510 <cdflib_cdfbin+0x3b0>
jmp    1520 <cdflib_cdfbin+0x3c0>
mov    0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1530 <cdflib_cdfbin+0x3d0>
mov    0x20(%rbp),%rax
movsd  0xad4(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
movl   $0xfffffff9,(%rax)
jmp    1d41 <cdflib_cdfbin+0xbe1>
jmp    1544 <cdflib_cdfbin+0x3e4>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
jne    1556 <cdflib_cdfbin+0x3f6>
jmp    1610 <cdflib_cdfbin+0x4b0>
mov    -0x10(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  0xa98(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xa8c(%rip),%xmm1
subsd  %xmm1,%xmm0
movaps 0xac1(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <dpmpar@plt>
movsd  -0xe8(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm2
movsd  0xa5d(%rip),%xmm1
mulsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     15ce <cdflib_cdfbin+0x46e>
jmp    1615 <cdflib_cdfbin+0x4b5>
xorps  %xmm0,%xmm0
ucomisd -0x80(%rbp),%xmm0
ja     15e1 <cdflib_cdfbin+0x481>
jmp    15f1 <cdflib_cdfbin+0x491>
mov    0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1601 <cdflib_cdfbin+0x4a1>
mov    0x20(%rbp),%rax
movsd  0xa03(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
movl   $0x3,(%rax)
jmp    1d41 <cdflib_cdfbin+0xbe1>
jmp    1615 <cdflib_cdfbin+0x4b5>
mov    -0x8(%rbp),%rax
cmpl   $0x4,(%rax)
jne    1627 <cdflib_cdfbin+0x4c7>
jmp    16ea <cdflib_cdfbin+0x58a>
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x10(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  0x9c1(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0x9b5(%rip),%xmm1
subsd  %xmm1,%xmm0
movaps 0x9ea(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
mov    $0x1,%edi
mov    $0x0,%al
call   1030 <dpmpar@plt>
movsd  -0xf0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm2
movsd  0x986(%rip),%xmm1
mulsd  %xmm2,%xmm1
ucomisd %xmm1,%xmm0
ja     16a5 <cdflib_cdfbin+0x545>
jmp    16ef <cdflib_cdfbin+0x58f>
xorps  %xmm0,%xmm0
ucomisd -0x88(%rbp),%xmm0
ff
ja     16bb <cdflib_cdfbin+0x55b>
jmp    16cb <cdflib_cdfbin+0x56b>
mov    0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    16db <cdflib_cdfbin+0x57b>
mov    0x20(%rbp),%rax
movsd  0x929(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
movl   $0x4,(%rax)
jmp    1d41 <cdflib_cdfbin+0xbe1>
jmp    16ef <cdflib_cdfbin+0x58f>
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
je     1721 <cdflib_cdfbin+0x5c1>
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,-0xa0(%rbp)
mov    -0x8(%rbp),%rcx
mov    $0x1,%eax
cmp    (%rcx),%eax
jne    1760 <cdflib_cdfbin+0x600>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x30(%rbp),%rdx
mov    0x10(%rbp),%rcx
mov    -0x10(%rbp),%r8
mov    -0x18(%rbp),%r9
mov    $0x0,%al
call   1070 <cdflib_cumbin@plt>
mov    0x18(%rbp),%rax
movl   $0x0,(%rax)
jmp    1d37 <cdflib_cdfbin+0xbd7>
mov    -0x8(%rbp),%rcx
mov    $0x2,%eax
cmp    (%rcx),%eax
jne    18ee <cdflib_cdfbin+0x78e>
mov    -0x20(%rbp),%rax
movsd  0x88b(%rip),%xmm0
movsd  %xmm0,(%rax)
movsd  0x89f(%rip),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  0x887(%rip),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
mov    -0x28(%rbp),%rsi
lea    -0x38(%rbp),%rdi
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    0x18(%rbp),%rax
movl   $0x0,(%rax)
mov    0x18(%rbp),%rdi
mov    -0x20(%rbp),%rsi
lea    -0x58(%rbp),%rdx
lea    -0x98(%rbp),%rcx
lea    -0x90(%rbp),%r8
mov    $0x0,%al
call   1060 <cdflib_dinvr@plt>
mov    0x18(%rbp),%rax
cmpl   $0x1,(%rax)
je     180a <cdflib_cdfbin+0x6aa>
jmp    188b <cdflib_cdfbin+0x72b>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x30(%rbp),%rdx
mov    0x10(%rbp),%rcx
lea    -0x70(%rbp),%r8
lea    -0x78(%rbp),%r9
mov    $0x0,%al
call   1070 <cdflib_cumbin@plt>
cmpq   $0x0,-0xa0(%rbp)
jne    183c <cdflib_cdfbin+0x6dc>
jmp    1853 <cdflib_cdfbin+0x6f3>
movsd  -0x70(%rbp),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    1865 <cdflib_cdfbin+0x705>
movsd  -0x78(%rbp),%xmm0
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x18(%rbp),%rdi
mov    -0x20(%rbp),%rsi
lea    -0x58(%rbp),%rdx
lea    -0x98(%rbp),%rcx
lea    -0x90(%rbp),%r8
mov    $0x0,%al
call   1060 <cdflib_dinvr@plt>
jmp    17f8 <cdflib_cdfbin+0x698>
mov    0x18(%rbp),%rax
cmpl   $0xffffffff,(%rax)
je     189d <cdflib_cdfbin+0x73d>
jmp    18e4 <cdflib_cdfbin+0x784>
cmpq   $0x0,-0x98(%rbp)
jne    18b0 <cdflib_cdfbin+0x750>
jmp    18ca <cdflib_cdfbin+0x76a>
mov    0x18(%rbp),%rax
movl   $0x1,(%rax)
mov    0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    18e9 <cdflib_cdfbin+0x789>
mov    0x18(%rbp),%rax
movl   $0x2,(%rax)
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
mov    0x20(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    18e9 <cdflib_cdfbin+0x789>
jmp    1d32 <cdflib_cdfbin+0xbd2>
mov    -0x8(%rbp),%rcx
mov    $0x3,%eax
cmp    (%rcx),%eax
jne    1aa7 <cdflib_cdfbin+0x947>
mov    -0x28(%rbp),%rax
movsd  0x6fd(%rip),%xmm0
movsd  %xmm0,(%rax)
movsd  0x721(%rip),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  0x709(%rip),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0x6f1(%rip),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0x6d9(%rip),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
lea    -0xb8(%rbp),%rdi
lea    -0xc0(%rbp),%rsi
lea    -0x40(%rbp),%rcx
lea    -0x48(%rbp),%r8
lea    -0xc8(%rbp),%r9
lea    -0xd0(%rbp),%rax
mov    %rcx,%rdx
mov    %rax,(%rsp)
mov    $0x0,%al
call   1040 <cdflib_dstinv@plt>
mov    0x18(%rbp),%rax
movl   $0x0,(%rax)
mov    0x18(%rbp),%rdi
mov    -0x28(%rbp),%rsi
lea    -0x58(%rbp),%rdx
lea    -0x98(%rbp),%rcx
lea    -0x90(%rbp),%r8
mov    $0x0,%al
call   1060 <cdflib_dinvr@plt>
mov    0x18(%rbp),%rax
cmpl   $0x1,(%rax)
je     19be <cdflib_cdfbin+0x85e>
jmp    1a3f <cdflib_cdfbin+0x8df>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x30(%rbp),%rdx
mov    0x10(%rbp),%rcx
lea    -0x70(%rbp),%r8
lea    -0x78(%rbp),%r9
mov    $0x0,%al
call   1070 <cdflib_cumbin@plt>
cmpq   $0x0,-0xa0(%rbp)
jne    19f0 <cdflib_cdfbin+0x890>
jmp    1a07 <cdflib_cdfbin+0x8a7>
movsd  -0x70(%rbp),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
jmp    1a19 <cdflib_cdfbin+0x8b9>
movsd  -0x78(%rbp),%xmm0
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x18(%rbp),%rdi
mov    -0x28(%rbp),%rsi
lea    -0x58(%rbp),%rdx
lea    -0x98(%rbp),%rcx
lea    -0x90(%rbp),%r8
mov    $0x0,%al
call   1060 <cdflib_dinvr@plt>
jmp    19ac <cdflib_cdfbin+0x84c>
mov    0x18(%rbp),%rax
cmpl   $0xffffffff,(%rax)
je     1a51 <cdflib_cdfbin+0x8f1>
jmp    1a9d <cdflib_cdfbin+0x93d>
cmpq   $0x0,-0x98(%rbp)
jne    1a64 <cdflib_cdfbin+0x904>
jmp    1a83 <cdflib_cdfbin+0x923>
mov    0x18(%rbp),%rax
movl   $0x1,(%rax)
mov    0x20(%rbp),%rax
movsd  0x5be(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1aa2 <cdflib_cdfbin+0x942>
mov    0x18(%rbp),%rax
movl   $0x2,(%rax)
mov    0x20(%rbp),%rax
movsd  0x597(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1aa2 <cdflib_cdfbin+0x942>
jmp    1d2d <cdflib_cdfbin+0xbcd>
mov    -0x8(%rbp),%rcx
mov    $0x4,%eax
cmp    (%rcx),%eax
jne    1d28 <cdflib_cdfbin+0xbc8>
movsd  0x568(%rip),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  0x550(%rip),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
lea    -0x38(%rbp),%rdi
lea    -0x50(%rbp),%rsi
lea    -0xd8(%rbp),%rdx
lea    -0xe0(%rbp),%rcx
mov    $0x0,%al
call   1080 <cdflib_dstzr@plt>
cmpq   $0x0,-0xa0(%rbp)
jne    1b08 <cdflib_cdfbin+0x9a8>
jmp    1be9 <cdflib_cdfbin+0xa89>
mov    0x18(%rbp),%rax
movl   $0x0,(%rax)
mov    0x18(%rbp),%rdi
mov    -0x30(%rbp),%rsi
lea    -0x58(%rbp),%rdx
lea    -0x68(%rbp),%rcx
lea    -0x60(%rbp),%r8
lea    -0x98(%rbp),%r9
lea    -0x90(%rbp),%rax
mov    %rax,(%rsp)
mov    $0x0,%al
call   1050 <cdflib_dzror@plt>
mov    -0x30(%rbp),%rax
movsd  0x4b5(%rip),%xmm0
subsd  (%rax),%xmm0
mov    0x10(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
cmpl   $0x1,(%rax)
je     1b69 <cdflib_cdfbin+0xa09>
jmp    1be4 <cdflib_cdfbin+0xa84>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x30(%rbp),%rdx
mov    0x10(%rbp),%rcx
lea    -0x70(%rbp),%r8
lea    -0x78(%rbp),%r9
mov    $0x0,%al
call   1070 <cdflib_cumbin@plt>
movsd  -0x70(%rbp),%xmm0
mov    -0x10(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x18(%rbp),%rdi
mov    -0x30(%rbp),%rsi
lea    -0x58(%rbp),%rdx
lea    -0x68(%rbp),%rcx
lea    -0x60(%rbp),%r8
lea    -0x98(%rbp),%r9
lea    -0x90(%rbp),%rax
mov    %rax,(%rsp)
mov    $0x0,%al
call   1050 <cdflib_dzror@plt>
mov    -0x30(%rbp),%rax
movsd  0x42d(%rip),%xmm0
subsd  (%rax),%xmm0
mov    0x10(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1b57 <cdflib_cdfbin+0x9f7>
jmp    1cc5 <cdflib_cdfbin+0xb65>
mov    0x18(%rbp),%rax
movl   $0x0,(%rax)
mov    0x18(%rbp),%rdi
mov    0x10(%rbp),%rsi
lea    -0x58(%rbp),%rdx
lea    -0x68(%rbp),%rcx
lea    -0x60(%rbp),%r8
lea    -0x98(%rbp),%r9
lea    -0x90(%rbp),%rax
mov    %rax,(%rsp)
mov    $0x0,%al
call   1050 <cdflib_dzror@plt>
mov    0x10(%rbp),%rax
movsd  0x3d4(%rip),%xmm0
subsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    0x18(%rbp),%rax
cmpl   $0x1,(%rax)
je     1c4a <cdflib_cdfbin+0xaea>
jmp    1cca <cdflib_cdfbin+0xb6a>
mov    -0x20(%rbp),%rdi
mov    -0x28(%rbp),%rsi
mov    -0x30(%rbp),%rdx
mov    0x10(%rbp),%rcx
lea    -0x70(%rbp),%r8
lea    -0x78(%rbp),%r9
mov    $0x0,%al
call   1070 <cdflib_cumbin@plt>
movsd  -0x78(%rbp),%xmm0
mov    -0x18(%rbp),%rax
subsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
mov    0x18(%rbp),%rdi
mov    0x10(%rbp),%rsi
lea    -0x58(%rbp),%rdx
lea    -0x68(%rbp),%rcx
lea    -0x60(%rbp),%r8
lea    -0x98(%rbp),%r9
lea    -0x90(%rbp),%rax
mov    %rax,(%rsp)
mov    $0x0,%al
call   1050 <cdflib_dzror@plt>
mov    0x10(%rbp),%rax
movsd  0x34c(%rip),%xmm0
subsd  (%rax),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1c38 <cdflib_cdfbin+0xad8>
jmp    1cca <cdflib_cdfbin+0xb6a>
mov    0x18(%rbp),%rax
cmpl   $0xffffffff,(%rax)
je     1cdc <cdflib_cdfbin+0xb7c>
jmp    1d3c <cdflib_cdfbin+0xbdc>
cmpq   $0x0,-0x98(%rbp)
jne    1cef <cdflib_cdfbin+0xb8f>
jmp    1d09 <cdflib_cdfbin+0xba9>
mov    0x18(%rbp),%rax
movl   $0x1,(%rax)
mov    0x20(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1d23 <cdflib_cdfbin+0xbc3>
mov    0x18(%rbp),%rax
movl   $0x2,(%rax)
mov    0x20(%rbp),%rax
movsd  0x2e1(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1d28 <cdflib_cdfbin+0xbc8>
jmp    1d2d <cdflib_cdfbin+0xbcd>
jmp    1d32 <cdflib_cdfbin+0xbd2>
jmp    1d37 <cdflib_cdfbin+0xbd7>
jmp    1d3c <cdflib_cdfbin+0xbdc>
jmp    1d41 <cdflib_cdfbin+0xbe1>
add    $0x100,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<cdflib_cdfbin>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x98,%rsp
mov    %r8,%rbx
mov    %rcx,%rbp
mov    %rdx,%r12
mov    %rsi,%r13
mov    %rdi,%r14
mov    0xe0(%rsp),%rdx
mov    0xd8(%rsp),%rcx
mov    0xd0(%rsp),%rsi
movq   $0x0,0x78(%rsp)
movabs $0x3fe0000000000000,%rax
mov    %rax,0x90(%rsp)
movabs $0x4014000000000000,%r15
mov    %r15,0x88(%rsp)
movabs $0x3ff0000000000000,%rax
mov    %rax,0x80(%rsp)
movl   $0x0,(%rcx)
movq   $0x0,(%rdx)
mov    (%rdi),%eax
cmp    $0x1,%eax
jne    1220 <cdflib_cdfbin+0xc0>
xorpd  %xmm0,%xmm0
ucomisd (%rbx),%xmm0
jae    13a4 <cdflib_cdfbin+0x244>
movsd  0x0(%rbp),%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
ja     1264 <cdflib_cdfbin+0x104>
movsd  (%rbx),%xmm0
ucomisd %xmm0,%xmm1
ja     1264 <cdflib_cdfbin+0x104>
cmp    $0x4,%eax
jne    12c6 <cdflib_cdfbin+0x166>
jmp    1307 <cdflib_cdfbin+0x1a7>
movsd  0x0(%r13),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
ja     1273 <cdflib_cdfbin+0x113>
ucomisd 0xdc8(%rip),%xmm0
ja     1273 <cdflib_cdfbin+0x113>
movsd  (%r12),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
ja     1293 <cdflib_cdfbin+0x133>
ucomisd 0xdae(%rip),%xmm0
ja     1293 <cdflib_cdfbin+0x133>
xorpd  %xmm0,%xmm0
cmp    $0x3,%eax
jne    12b3 <cdflib_cdfbin+0x153>
ucomisd 0x0(%rbp),%xmm0
jbe    12c6 <cdflib_cdfbin+0x166>
movsd  %xmm0,(%rdx)
movl   $0xfffffffc,(%rcx)
jmp    13aa <cdflib_cdfbin+0x24a>
cmpltsd %xmm1,%xmm0
movsd  0xd80(%rip),%xmm1
andnpd %xmm1,%xmm0
movlpd %xmm0,(%rdx)
movl   $0xfffffffe,(%rcx)
jmp    13aa <cdflib_cdfbin+0x24a>
cmpltsd %xmm1,%xmm0
movsd  0xd60(%rip),%xmm1
andnpd %xmm1,%xmm0
movlpd %xmm0,(%rdx)
movl   $0xfffffffd,(%rcx)
jmp    13aa <cdflib_cdfbin+0x24a>
ucomisd (%rbx),%xmm0
jae    13a4 <cdflib_cdfbin+0x244>
cmp    $0x2,%eax
jne    11f9 <cdflib_cdfbin+0x99>
movsd  (%r9),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
ja     13bc <cdflib_cdfbin+0x25c>
ucomisd 0xd1f(%rip),%xmm0
ja     13bc <cdflib_cdfbin+0x25c>
movsd  (%rsi),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
ja     146e <cdflib_cdfbin+0x30e>
ucomisd 0xcff(%rip),%xmm0
ja     146e <cdflib_cdfbin+0x30e>
cmp    $0x1,%eax
mov    %r9,0x8(%rsp)
jne    13d9 <cdflib_cdfbin+0x279>
movsd  (%r9),%xmm1
addsd  (%rsi),%xmm1
movsd  0xce2(%rip),%xmm0
movapd %xmm1,0x30(%rsp)
addsd  %xmm0,%xmm1
addsd  %xmm0,%xmm1
andpd  0xce4(%rip),%xmm1
movapd %xmm1,0x40(%rsp)
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <dpmpar@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xcb3(%rip),%xmm0
movapd 0x40(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jbe    148e <cdflib_cdfbin+0x32e>
xorpd  %xmm0,%xmm0
movapd 0x30(%rsp),%xmm1
cmpltsd %xmm0,%xmm1
movsd  0xc7c(%rip),%xmm0
andnpd %xmm0,%xmm1
mov    0xe0(%rsp),%rax
movlpd %xmm1,(%rax)
mov    0xd8(%rsp),%rax
movl   $0x4,(%rax)
jmp    13aa <cdflib_cdfbin+0x24a>
movl   $0xfffffffb,(%rcx)
add    $0x98,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
cmpltsd %xmm1,%xmm0
movsd  0xc37(%rip),%xmm1
andnpd %xmm1,%xmm0
movlpd %xmm0,(%rdx)
movl   $0xfffffffa,(%rcx)
jmp    13aa <cdflib_cdfbin+0x24a>
movsd  0x0(%r13),%xmm1
addsd  (%r12),%xmm1
movsd  0xc1b(%rip),%xmm0
movapd %xmm1,0x30(%rsp)
addsd  %xmm0,%xmm1
addsd  %xmm0,%xmm1
andpd  0xc1d(%rip),%xmm1
movapd %xmm1,0x40(%rsp)
mov    $0x1,%edi
xor    %eax,%eax
call   1030 <dpmpar@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xbec(%rip),%xmm0
movapd 0x40(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jbe    14cd <cdflib_cdfbin+0x36d>
xorpd  %xmm0,%xmm0
movapd 0x30(%rsp),%xmm1
cmpltsd %xmm0,%xmm1
movsd  0xbb5(%rip),%xmm0
andnpd %xmm0,%xmm1
mov    0xe0(%rsp),%rax
movlpd %xmm1,(%rax)
mov    0xd8(%rsp),%rax
movl   $0x3,(%rax)
jmp    13aa <cdflib_cdfbin+0x24a>
cmpltsd %xmm1,%xmm0
movsd  0xb85(%rip),%xmm1
andnpd %xmm1,%xmm0
movlpd %xmm0,(%rdx)
movl   $0xfffffff9,(%rcx)
jmp    13aa <cdflib_cdfbin+0x24a>
mov    (%r14),%eax
cmp    $0x1,%eax
jne    164f <cdflib_cdfbin+0x4ef>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    0x8(%rsp),%rdx
mov    0xd0(%rsp),%rcx
mov    %r13,%r8
mov    %r12,%r9
xor    %eax,%eax
call   1070 <cdflib_cumbin@plt>
mov    0xd8(%rsp),%rax
movl   $0x0,(%rax)
jmp    13aa <cdflib_cdfbin+0x24a>
cmpl   $0x4,(%r14)
mov    0x8(%rsp),%r9
mov    0xd0(%rsp),%rsi
jne    1315 <cdflib_cdfbin+0x1b5>
mov    %rbp,%r15
movsd  (%r12),%xmm0
movsd  %xmm0,0x40(%rsp)
movsd  0x0(%r13),%xmm0
movsd  %xmm0,0x30(%rsp)
movabs $0x358dee7a4ad4b81f,%rax
ee 8d 35
mov    %rax,0x58(%rsp)
movabs $0x3e45798ee2308c3a,%rax
79 45 3e
mov    %rax,0x50(%rsp)
lea    0x78(%rsp),%rdi
lea    0x80(%rsp),%rsi
lea    0x58(%rsp),%rdx
lea    0x50(%rsp),%rcx
xor    %eax,%eax
call   1080 <cdflib_dstzr@plt>
movsd  0x40(%rsp),%xmm0
ucomisd 0x30(%rsp),%xmm0
jae    16d3 <cdflib_cdfbin+0x573>
mov    0xd8(%rsp),%r14
movl   $0x0,(%r14)
lea    0x60(%rsp),%rax
mov    %rax,(%rsp)
lea    0x10(%rsp),%rdx
lea    0x20(%rsp),%rcx
lea    0x28(%rsp),%r8
lea    0x18(%rsp),%r9
mov    %r14,%rdi
mov    0xd0(%rsp),%rbp
mov    %rbp,%rsi
xor    %eax,%eax
call   1050 <cdflib_dzror@plt>
mov    %r14,%rcx
movsd  0xa67(%rip),%xmm0
subsd  0x0(%rbp),%xmm0
mov    0x8(%rsp),%rdx
movsd  %xmm0,(%rdx)
mov    (%r14),%eax
cmp    $0x1,%eax
jne    17d1 <cdflib_cdfbin+0x671>
lea    0x28(%rsp),%r14
lea    0x18(%rsp),%r13
mov    %r15,%rdi
mov    %rbx,%rsi
mov    %rbp,%rcx
lea    0x70(%rsp),%r8
lea    0x68(%rsp),%r9
xor    %eax,%eax
call   1070 <cdflib_cumbin@plt>
movsd  0x68(%rsp),%xmm0
subsd  (%r12),%xmm0
movsd  %xmm0,0x10(%rsp)
lea    0x60(%rsp),%rax
mov    %rax,(%rsp)
mov    0xd8(%rsp),%rdi
mov    0xd0(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0x20(%rsp),%rcx
mov    %r14,%r8
mov    %r13,%r9
xor    %eax,%eax
call   1050 <cdflib_dzror@plt>
movsd  0x9df(%rip),%xmm0
mov    0xd0(%rsp),%rbp
mov    0x8(%rsp),%rdx
mov    0xd8(%rsp),%rcx
subsd  0x0(%rbp),%xmm0
movsd  %xmm0,(%rdx)
mov    (%rcx),%eax
cmp    $0x1,%eax
je     15bd <cdflib_cdfbin+0x45d>
jmp    17d1 <cdflib_cdfbin+0x671>
movsd  0x0(%r13),%xmm0
movsd  %xmm0,0x40(%rsp)
movsd  (%r12),%xmm0
movsd  %xmm0,0x30(%rsp)
cmp    $0x2,%eax
je     1803 <cdflib_cdfbin+0x6a3>
cmp    $0x3,%eax
je     18f9 <cdflib_cdfbin+0x799>
cmp    $0x4,%eax
jne    13aa <cdflib_cdfbin+0x24a>
mov    %rbp,%r15
movabs $0x358dee7a4ad4b81f,%rax
ee 8d 35
mov    %rax,0x58(%rsp)
movabs $0x3e45798ee2308c3a,%rax
79 45 3e
mov    %rax,0x50(%rsp)
lea    0x78(%rsp),%rdi
lea    0x80(%rsp),%rsi
lea    0x58(%rsp),%rdx
lea    0x50(%rsp),%rcx
xor    %eax,%eax
call   1080 <cdflib_dstzr@plt>
movsd  0x30(%rsp),%xmm0
ucomisd 0x40(%rsp),%xmm0
jb     154d <cdflib_cdfbin+0x3ed>
mov    0xd8(%rsp),%r14
movl   $0x0,(%r14)
lea    0x60(%rsp),%rax
mov    %rax,(%rsp)
lea    0x10(%rsp),%rdx
lea    0x20(%rsp),%rcx
lea    0x28(%rsp),%r8
lea    0x18(%rsp),%r9
mov    %r14,%rdi
mov    0x8(%rsp),%rbp
mov    %rbp,%rsi
xor    %eax,%eax
call   1050 <cdflib_dzror@plt>
mov    %rbp,%rdx
mov    %r14,%rcx
movsd  0x8e1(%rip),%xmm0
subsd  0x0(%rbp),%xmm0
mov    0xd0(%rsp),%rbp
movsd  %xmm0,0x0(%rbp)
mov    (%r14),%eax
cmp    $0x1,%eax
jne    17d1 <cdflib_cdfbin+0x671>
lea    0x28(%rsp),%r14
lea    0x18(%rsp),%r12
mov    %r15,%rdi
mov    %rbx,%rsi
mov    %rbp,%rcx
lea    0x70(%rsp),%r8
lea    0x68(%rsp),%r9
xor    %eax,%eax
call   1070 <cdflib_cumbin@plt>
movsd  0x70(%rsp),%xmm0
subsd  0x0(%r13),%xmm0
movsd  %xmm0,0x10(%rsp)
lea    0x60(%rsp),%rax
mov    %rax,(%rsp)
mov    0xd8(%rsp),%rdi
mov    0x8(%rsp),%rsi
lea    0x10(%rsp),%rdx
lea    0x20(%rsp),%rcx
mov    %r14,%r8
mov    %r12,%r9
xor    %eax,%eax
call   1050 <cdflib_dzror@plt>
movsd  0x858(%rip),%xmm0
mov    0xd0(%rsp),%rbp
mov    0x8(%rsp),%rdx
mov    0xd8(%rsp),%rcx
subsd  (%rdx),%xmm0
movsd  %xmm0,0x0(%rbp)
mov    (%rcx),%eax
cmp    $0x1,%eax
je     1747 <cdflib_cdfbin+0x5e7>
cmp    $0xffffffff,%eax
jne    13aa <cdflib_cdfbin+0x24a>
cmpq   $0x0,0x18(%rsp)
jne    1a18 <cdflib_cdfbin+0x8b8>
movl   $0x2,(%rcx)
mov    0xe0(%rsp),%rax
movabs $0x3ff0000000000000,%rcx
jmp    1a71 <cdflib_cdfbin+0x911>
mov    %r15,0x0(%rbp)
movabs $0x358dee7a4ad4b81f,%rax
ee 8d 35
mov    %rax,0x28(%rsp)
movabs $0x3e45798ee2308c3a,%rax
79 45 3e
mov    %rax,0x20(%rsp)
lea    0x20(%rsp),%rax
mov    %rax,(%rsp)
lea    0x78(%rsp),%rdi
lea    0x90(%rsp),%rcx
lea    0x88(%rsp),%r8
lea    0x28(%rsp),%r9
mov    %rbx,%rsi
mov    %rcx,%rdx
xor    %eax,%eax
call   1040 <cdflib_dstinv@plt>
movsd  0x30(%rsp),%xmm0
ucomisd 0x40(%rsp),%xmm0
mov    0xd8(%rsp),%rax
movl   $0x0,(%rax)
cmovae %r13,%r12
lea    0x10(%rsp),%r15
lea    0x70(%rsp),%r13
lea    0x68(%rsp),%r14
mov    0xd8(%rsp),%rdi
mov    %rbp,%rsi
mov    %r15,%rdx
lea    0x18(%rsp),%rcx
lea    0x60(%rsp),%r8
xor    %eax,%eax
call   1060 <cdflib_dinvr@plt>
mov    0xd8(%rsp),%rcx
mov    (%rcx),%eax
cmp    $0x1,%eax
jne    1a07 <cdflib_cdfbin+0x8a7>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    0x8(%rsp),%rdx
mov    0xd0(%rsp),%rcx
mov    %r13,%r8
mov    %r14,%r9
xor    %eax,%eax
call   1070 <cdflib_cumbin@plt>
movsd  0x30(%rsp),%xmm0
ucomisd 0x40(%rsp),%xmm0
mov    %r14,%rax
cmovae %r13,%rax
movsd  (%rax),%xmm0
subsd  (%r12),%xmm0
movsd  %xmm0,0x10(%rsp)
jmp    1882 <cdflib_cdfbin+0x722>
mov    %r15,(%rbx)
movabs $0x1a56e1fc2f8f359,%r15
6e a5 01
mov    %r15,0x28(%rsp)
movabs $0x7e37e43c8800759c,%rax
e4 37 7e
mov    %rax,0x20(%rsp)
movabs $0x358dee7a4ad4b81f,%rax
ee 8d 35
mov    %rax,0x58(%rsp)
movabs $0x3e45798ee2308c3a,%rax
79 45 3e
mov    %rax,0x50(%rsp)
lea    0x50(%rsp),%rax
mov    %rax,(%rsp)
lea    0x28(%rsp),%rdi
lea    0x20(%rsp),%rsi
lea    0x90(%rsp),%rcx
lea    0x88(%rsp),%r8
lea    0x58(%rsp),%r9
mov    %rcx,%rdx
xor    %eax,%eax
call   1040 <cdflib_dstinv@plt>
movsd  0x30(%rsp),%xmm0
ucomisd 0x40(%rsp),%xmm0
mov    0xd8(%rsp),%rax
movl   $0x0,(%rax)
cmovae %r13,%r12
lea    0x70(%rsp),%r13
lea    0x68(%rsp),%r14
mov    0xd8(%rsp),%rdi
mov    %rbx,%rsi
lea    0x10(%rsp),%rdx
lea    0x18(%rsp),%rcx
lea    0x60(%rsp),%r8
xor    %eax,%eax
call   1060 <cdflib_dinvr@plt>
mov    0xd8(%rsp),%rcx
mov    (%rcx),%eax
cmp    $0x1,%eax
jne    1a32 <cdflib_cdfbin+0x8d2>
mov    %rbp,%rdi
mov    %rbx,%rsi
mov    0x8(%rsp),%rdx
mov    0xd0(%rsp),%rcx
mov    %r13,%r8
mov    %r14,%r9
xor    %eax,%eax
call   1070 <cdflib_cumbin@plt>
movsd  0x30(%rsp),%xmm0
ucomisd 0x40(%rsp),%xmm0
mov    %r14,%rax
cmovae %r13,%rax
movsd  (%rax),%xmm0
subsd  (%r12),%xmm0
movsd  %xmm0,0x10(%rsp)
jmp    1992 <cdflib_cdfbin+0x832>
cmp    $0xffffffff,%eax
jne    13aa <cdflib_cdfbin+0x24a>
cmpq   $0x0,0x18(%rsp)
je     1a79 <cdflib_cdfbin+0x919>
movl   $0x1,(%rcx)
mov    0xe0(%rsp),%rax
movq   $0x0,(%rax)
jmp    13aa <cdflib_cdfbin+0x24a>
cmp    $0xffffffff,%eax
jne    13aa <cdflib_cdfbin+0x24a>
cmpq   $0x0,0x18(%rsp)
je     1a59 <cdflib_cdfbin+0x8f9>
movl   $0x1,(%rcx)
mov    0xe0(%rsp),%rax
mov    %r15,(%rax)
jmp    13aa <cdflib_cdfbin+0x24a>
movl   $0x2,(%rcx)
mov    0xe0(%rsp),%rax
movabs $0x7e37e43c8800759c,%rcx
e4 37 7e
mov    %rcx,(%rax)
jmp    13aa <cdflib_cdfbin+0x24a>
movl   $0x2,(%rcx)
movsd  (%rbx),%xmm0
mov    0xe0(%rsp),%rax
movsd  %xmm0,(%rax)
jmp    13aa <cdflib_cdfbin+0x24a>

LLVM IR (-O0):
@cdflib_cdfbin.atol = internal constant double 1.000000e-50
@cdflib_cdfbin.tol = internal constant double 1.000000e-08
@cdflib_cdfbin.zero = internal constant double 1.000000e-300
@cdflib_cdfbin.inf = internal constant double 1.000000e+300
@cdflib_cdfbin.one = internal constant double 1.000000e+00
@cdflib_cdfbin.K1 = internal constant i32 1
define void @cdflib_cdfbin(i32* %0, double* %1, double* %2, double* %3, double* %4, double* %5, double* %6, i32* %7, double* %8) {
%10 = alloca i32*
%11 = alloca double*
%12 = alloca double*
%13 = alloca double*
%14 = alloca double*
%15 = alloca double*
%16 = alloca double*
%17 = alloca i32*
%18 = alloca double*
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = alloca double
%30 = alloca i64
%31 = alloca i64
%32 = alloca i64
%33 = alloca double
%34 = alloca double
%35 = alloca double
%36 = alloca double
%37 = alloca double
%38 = alloca double
%39 = alloca double
%40 = alloca double
store i32* %0, i32** %10
store double* %1, double** %11
store double* %2, double** %12
store double* %3, double** %13
store double* %4, double** %14
store double* %5, double** %15
store double* %6, double** %16
store i32* %7, i32** %17
store double* %8, double** %18
store double 0.000000e+00, double* %19
store double 5.000000e-01, double* %20
store double 5.000000e+00, double* %21
store double 1.000000e+00, double* %22
%41 = load i32*, i32** %17
store i32 0, i32* %41
%42 = load double*, double** %18
store double 0.000000e+00, double* %42
%43 = load i32*, i32** %10
%44 = load i32, i32* %43
%45 = icmp slt i32 %44, 1
br i1 %45, label %46, label %50
46: ; preds = %9
%47 = load i32*, i32** %10
%48 = load i32, i32* %47
%49 = icmp sgt i32 %48, 4
br i1 %49, label %51, label %50
50: ; preds = %46, %9
br label %62
51: ; preds = %46
%52 = load i32*, i32** %10
%53 = load i32, i32* %52
%54 = icmp slt i32 %53, 1
br i1 %54, label %56, label %55
55: ; preds = %51
br label %58
56: ; preds = %51
%57 = load double*, double** %18
store double 1.000000e+00, double* %57
br label %60
58: ; preds = %55
%59 = load double*, double** %18
store double 4.000000e+00, double* %59
br label %60
60: ; preds = %58, %56
%61 = load i32*, i32** %17
store i32 -1, i32* %61
br label %510
62: ; preds = %50
%63 = load i32*, i32** %10
%64 = load i32, i32* %63
%65 = icmp eq i32 %64, 1
br i1 %65, label %66, label %67
66: ; preds = %62
br label %87
67: ; preds = %62
%68 = load double*, double** %11
%69 = load double, double* %68
%70 = fcmp olt double %69, 0.000000e+00
br i1 %70, label %76, label %71
71: ; preds = %67
%72 = load double*, double** %11
%73 = load double, double* %72
%74 = fcmp ogt double %73, 1.000000e+00
br i1 %74, label %76, label %75
75: ; preds = %71
br label %88
76: ; preds = %71, %67
%77 = load double*, double** %11
%78 = load double, double* %77
%79 = fcmp olt double %78, 0.000000e+00
br i1 %79, label %81, label %80
80: ; preds = %76
br label %83
81: ; preds = %76
%82 = load double*, double** %18
store double 0.000000e+00, double* %82
br label %85
83: ; preds = %80
%84 = load double*, double** %18
store double 1.000000e+00, double* %84
br label %85
85: ; preds = %83, %81
%86 = load i32*, i32** %17
store i32 -2, i32* %86
br label %510
87: ; preds = %66
br label %88
88: ; preds = %87, %75
%89 = load i32*, i32** %10
%90 = load i32, i32* %89
%91 = icmp eq i32 %90, 1
br i1 %91, label %92, label %93
92: ; preds = %88
br label %113
93: ; preds = %88
%94 = load double*, double** %12
%95 = load double, double* %94
%96 = fcmp olt double %95, 0.000000e+00
br i1 %96, label %102, label %97
97: ; preds = %93
%98 = load double*, double** %12
%99 = load double, double* %98
%100 = fcmp ogt double %99, 1.000000e+00
br i1 %100, label %102, label %101
101: ; preds = %97
br label %114
102: ; preds = %97, %93
%103 = load double*, double** %12
%104 = load double, double* %103
%105 = fcmp olt double %104, 0.000000e+00
br i1 %105, label %107, label %106
106: ; preds = %102
br label %109
107: ; preds = %102
%108 = load double*, double** %18
store double 0.000000e+00, double* %108
br label %111
109: ; preds = %106
%110 = load double*, double** %18
store double 1.000000e+00, double* %110
br label %111
111: ; preds = %109, %107
%112 = load i32*, i32** %17
store i32 -3, i32* %112
br label %510
113: ; preds = %92
br label %114
114: ; preds = %113, %101
%115 = load i32*, i32** %10
%116 = load i32, i32* %115
%117 = icmp eq i32 %116, 3
br i1 %117, label %118, label %119
118: ; preds = %114
br label %127
119: ; preds = %114
%120 = load double*, double** %14
%121 = load double, double* %120
%122 = fcmp ole double %121, 0.000000e+00
br i1 %122, label %124, label %123
123: ; preds = %119
br label %128
124: ; preds = %119
%125 = load double*, double** %18
store double 0.000000e+00, double* %125
%126 = load i32*, i32** %17
store i32 -5, i32* %126
br label %510
127: ; preds = %118
br label %128
128: ; preds = %127, %123
%129 = load i32*, i32** %10
%130 = load i32, i32* %129
%131 = icmp eq i32 %130, 2
br i1 %131, label %132, label %133
132: ; preds = %128
br label %161
133: ; preds = %128
%134 = load double*, double** %13
%135 = load double, double* %134
%136 = fcmp olt double %135, 0.000000e+00
br i1 %136, label %148, label %137
137: ; preds = %133
%138 = load i32*, i32** %10
%139 = load i32, i32* %138
%140 = icmp ne i32 %139, 3
br i1 %140, label %141, label %147
141: ; preds = %137
%142 = load double*, double** %13
%143 = load double, double* %142
%144 = load double*, double** %14
%145 = load double, double* %144
%146 = fcmp ogt double %143, %145
br i1 %146, label %148, label %147
147: ; preds = %141, %137
br label %162
148: ; preds = %141, %133
%149 = load double*, double** %13
%150 = load double, double* %149
%151 = fcmp olt double %150, 0.000000e+00
br i1 %151, label %153, label %152
152: ; preds = %148
br label %155
153: ; preds = %148
%154 = load double*, double** %18
store double 0.000000e+00, double* %154
br label %159
155: ; preds = %152
%156 = load double*, double** %14
%157 = load double, double* %156
%158 = load double*, double** %18
store double %157, double* %158
br label %159
159: ; preds = %155, %153
%160 = load i32*, i32** %17
store i32 -4, i32* %160
br label %510
161: ; preds = %132
br label %162
162: ; preds = %161, %147
%163 = load i32*, i32** %10
%164 = load i32, i32* %163
%165 = icmp eq i32 %164, 4
br i1 %165, label %166, label %167
166: ; preds = %162
br label %187
167: ; preds = %162
%168 = load double*, double** %15
%169 = load double, double* %168
%170 = fcmp olt double %169, 0.000000e+00
br i1 %170, label %176, label %171
171: ; preds = %167
%172 = load double*, double** %15
%173 = load double, double* %172
%174 = fcmp ogt double %173, 1.000000e+00
br i1 %174, label %176, label %175
175: ; preds = %171
br label %188
176: ; preds = %171, %167
%177 = load double*, double** %15
%178 = load double, double* %177
%179 = fcmp olt double %178, 0.000000e+00
br i1 %179, label %181, label %180
180: ; preds = %176
br label %183
181: ; preds = %176
%182 = load double*, double** %18
store double 0.000000e+00, double* %182
br label %185
183: ; preds = %180
%184 = load double*, double** %18
store double 1.000000e+00, double* %184
br label %185
185: ; preds = %183, %181
%186 = load i32*, i32** %17
store i32 -6, i32* %186
br label %510
187: ; preds = %166
br label %188
188: ; preds = %187, %175
%189 = load i32*, i32** %10
%190 = load i32, i32* %189
%191 = icmp eq i32 %190, 4
br i1 %191, label %192, label %193
192: ; preds = %188
br label %213
193: ; preds = %188
%194 = load double*, double** %16
%195 = load double, double* %194
%196 = fcmp olt double %195, 0.000000e+00
br i1 %196, label %202, label %197
197: ; preds = %193
%198 = load double*, double** %16
%199 = load double, double* %198
%200 = fcmp ogt double %199, 1.000000e+00
br i1 %200, label %202, label %201
201: ; preds = %197
br label %214
202: ; preds = %197, %193
%203 = load double*, double** %16
%204 = load double, double* %203
%205 = fcmp olt double %204, 0.000000e+00
br i1 %205, label %207, label %206
206: ; preds = %202
br label %209
207: ; preds = %202
%208 = load double*, double** %18
store double 0.000000e+00, double* %208
br label %211
209: ; preds = %206
%210 = load double*, double** %18
store double 1.000000e+00, double* %210
br label %211
211: ; preds = %209, %207
%212 = load i32*, i32** %17
store i32 -7, i32* %212
br label %510
213: ; preds = %192
br label %214
214: ; preds = %213, %201
%215 = load i32*, i32** %10
%216 = load i32, i32* %215
%217 = icmp eq i32 %216, 1
br i1 %217, label %218, label %219
218: ; preds = %214
br label %244
219: ; preds = %214
%220 = load double*, double** %11
%221 = load double, double* %220
%222 = load double*, double** %12
%223 = load double, double* %222
%224 = fadd double %221, %223
store double %224, double* %28
%225 = load double, double* %28
%226 = fsub double %225, 5.000000e-01
%227 = fsub double %226, 5.000000e-01
%228 = call double @llvm.fabs.f64(double %227)
%229 = call i32 (i32, ...) bitcast (i32 (...)* @dpmpar to i32 (i32, ...)*)(i32 1)
%230 = sitofp i32 %229 to double
%231 = fmul double 3.000000e+00, %230
%232 = fcmp ogt double %228, %231
br i1 %232, label %234, label %233
233: ; preds = %219
br label %245
234: ; preds = %219
%235 = load double, double* %28
%236 = fcmp olt double %235, 0.000000e+00
br i1 %236, label %238, label %237
237: ; preds = %234
br label %240
238: ; preds = %234
%239 = load double*, double** %18
store double 0.000000e+00, double* %239
br label %242
240: ; preds = %237
%241 = load double*, double** %18
store double 1.000000e+00, double* %241
br label %242
242: ; preds = %240, %238
%243 = load i32*, i32** %17
store i32 3, i32* %243
br label %510
244: ; preds = %218
br label %245
245: ; preds = %244, %233
%246 = load i32*, i32** %10
%247 = load i32, i32* %246
%248 = icmp eq i32 %247, 4
br i1 %248, label %249, label %250
249: ; preds = %245
br label %275
250: ; preds = %245
%251 = load double*, double** %15
%252 = load double, double* %251
%253 = load double*, double** %16
%254 = load double, double* %253
%255 = fadd double %252, %254
store double %255, double* %29
%256 = load double, double* %29
%257 = fsub double %256, 5.000000e-01
%258 = fsub double %257, 5.000000e-01
%259 = call double @llvm.fabs.f64(double %258)
%260 = call i32 (i32, ...) bitcast (i32 (...)* @dpmpar to i32 (i32, ...)*)(i32 1)
%261 = sitofp i32 %260 to double
%262 = fmul double 3.000000e+00, %261
%263 = fcmp ogt double %259, %262
br i1 %263, label %265, label %264
264: ; preds = %250
br label %276
265: ; preds = %250
%266 = load double, double* %29
%267 = fcmp olt double %266, 0.000000e+00
br i1 %267, label %269, label %268
268: ; preds = %265
br label %271
269: ; preds = %265
%270 = load double*, double** %18
store double 0.000000e+00, double* %270
br label %273
271: ; preds = %268
%272 = load double*, double** %18
store double 1.000000e+00, double* %272
br label %273
273: ; preds = %271, %269
%274 = load i32*, i32** %17
store i32 4, i32* %274
br label %510
275: ; preds = %249
br label %276
276: ; preds = %275, %264
%277 = load i32*, i32** %10
%278 = load i32, i32* %277
%279 = icmp eq i32 %278, 1
br i1 %279, label %288, label %280
280: ; preds = %276
%281 = load double*, double** %11
%282 = load double, double* %281
%283 = load double*, double** %12
%284 = load double, double* %283
%285 = fcmp ole double %282, %284
%286 = zext i1 %285 to i32
%287 = sext i32 %286 to i64
store i64 %287, i64* %32
br label %288
288: ; preds = %280, %276
%289 = load i32*, i32** %10
%290 = load i32, i32* %289
%291 = icmp eq i32 1, %290
br i1 %291, label %292, label %301
292: ; preds = %288
%293 = load double*, double** %13
%294 = load double*, double** %14
%295 = load double*, double** %15
%296 = load double*, double** %16
%297 = load double*, double** %11
%298 = load double*, double** %12
%299 = call i32 (double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_cumbin to i32 (double*, double*, double*, double*, double*, double*, ...)*)(double* %293, double* %294, double* %295, double* %296, double* %297, double* %298)
%300 = load i32*, i32** %17
store i32 0, i32* %300
br label %508
301: ; preds = %288
%302 = load i32*, i32** %10
%303 = load i32, i32* %302
%304 = icmp eq i32 2, %303
br i1 %304, label %305, label %360
305: ; preds = %301
%306 = load double*, double** %13
store double 5.000000e+00, double* %306
store double 1.000000e-50, double* %33
store double 1.000000e-08, double* %34
%307 = load double*, double** %14
%308 = 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* %307, double* %20, double* %20, double* %21, double* %33, double* %34)
%309 = load i32*, i32** %17
store i32 0, i32* %309
%310 = load i32*, i32** %17
%311 = load double*, double** %13
%312 = call i32 (i32*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dinvr to i32 (i32*, double*, double*, i64*, i64*, ...)*)(i32* %310, double* %311, double* %23, i64* %31, i64* %30)
br label %313
313: ; preds = %337, %305
%314 = load i32*, i32** %17
%315 = load i32, i32* %314
%316 = icmp eq i32 %315, 1
br i1 %316, label %318, label %317
317: ; preds = %313
br label %341
318: ; preds = %313
%319 = load double*, double** %13
%320 = load double*, double** %14
%321 = load double*, double** %15
%322 = load double*, double** %16
%323 = call i32 (double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_cumbin to i32 (double*, double*, double*, double*, double*, double*, ...)*)(double* %319, double* %320, double* %321, double* %322, double* %26, double* %27)
%324 = load i64, i64* %32
%325 = icmp ne i64 %324, 0
br i1 %325, label %327, label %326
326: ; preds = %318
br label %332
327: ; preds = %318
%328 = load double, double* %26
%329 = load double*, double** %11
%330 = load double, double* %329
%331 = fsub double %328, %330
store double %331, double* %23
br label %337
332: ; preds = %326
%333 = load double, double* %27
%334 = load double*, double** %12
%335 = load double, double* %334
%336 = fsub double %333, %335
store double %336, double* %23
br label %337
337: ; preds = %332, %327
%338 = load i32*, i32** %17
%339 = load double*, double** %13
%340 = call i32 (i32*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dinvr to i32 (i32*, double*, double*, i64*, i64*, ...)*)(i32* %338, double* %339, double* %23, i64* %31, i64* %30)
br label %313
341: ; preds = %317
%342 = load i32*, i32** %17
%343 = load i32, i32* %342
%344 = icmp eq i32 %343, -1
br i1 %344, label %346, label %345
345: ; preds = %341
br label %358
346: ; preds = %341
%347 = load i64, i64* %31
%348 = icmp ne i64 %347, 0
br i1 %348, label %350, label %349
349: ; preds = %346
br label %353
350: ; preds = %346
%351 = load i32*, i32** %17
store i32 1, i32* %351
%352 = load double*, double** %18
store double 0.000000e+00, double* %352
br label %359
353: ; preds = %349
%354 = load i32*, i32** %17
store i32 2, i32* %354
%355 = load double*, double** %14
%356 = load double, double* %355
%357 = load double*, double** %18
store double %356, double* %357
br label %358
358: ; preds = %353, %345
br label %359
359: ; preds = %358, %350
br label %507
360: ; preds = %301
%361 = load i32*, i32** %10
%362 = load i32, i32* %361
%363 = icmp eq i32 3, %362
br i1 %363, label %364, label %416
364: ; preds = %360
%365 = load double*, double** %14
store double 5.000000e+00, double* %365
store double 1.000000e-300, double* %35
store double 1.000000e+300, double* %36
store double 1.000000e-50, double* %37
store double 1.000000e-08, double* %38
%366 = call i32 (double*, double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_dstinv to i32 (double*, double*, double*, double*, double*, double*, double*, ...)*)(double* %35, double* %36, double* %20, double* %20, double* %21, double* %37, double* %38)
%367 = load i32*, i32** %17
store i32 0, i32* %367
%368 = load i32*, i32** %17
%369 = load double*, double** %14
%370 = call i32 (i32*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dinvr to i32 (i32*, double*, double*, i64*, i64*, ...)*)(i32* %368, double* %369, double* %23, i64* %31, i64* %30)
br label %371
371: ; preds = %395, %364
%372 = load i32*, i32** %17
%373 = load i32, i32* %372
%374 = icmp eq i32 %373, 1
br i1 %374, label %376, label %375
375: ; preds = %371
br label %399
376: ; preds = %371
%377 = load double*, double** %13
%378 = load double*, double** %14
%379 = load double*, double** %15
%380 = load double*, double** %16
%381 = call i32 (double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_cumbin to i32 (double*, double*, double*, double*, double*, double*, ...)*)(double* %377, double* %378, double* %379, double* %380, double* %26, double* %27)
%382 = load i64, i64* %32
%383 = icmp ne i64 %382, 0
br i1 %383, label %385, label %384
384: ; preds = %376
br label %390
385: ; preds = %376
%386 = load double, double* %26
%387 = load double*, double** %11
%388 = load double, double* %387
%389 = fsub double %386, %388
store double %389, double* %23
br label %395
390: ; preds = %384
%391 = load double, double* %27
%392 = load double*, double** %12
%393 = load double, double* %392
%394 = fsub double %391, %393
store double %394, double* %23
br label %395
395: ; preds = %390, %385
%396 = load i32*, i32** %17
%397 = load double*, double** %14
%398 = call i32 (i32*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dinvr to i32 (i32*, double*, double*, i64*, i64*, ...)*)(i32* %396, double* %397, double* %23, i64* %31, i64* %30)
br label %371
399: ; preds = %375
%400 = load i32*, i32** %17
%401 = load i32, i32* %400
%402 = icmp eq i32 %401, -1
br i1 %402, label %404, label %403
403: ; preds = %399
br label %414
404: ; preds = %399
%405 = load i64, i64* %31
%406 = icmp ne i64 %405, 0
br i1 %406, label %408, label %407
407: ; preds = %404
br label %411
408: ; preds = %404
%409 = load i32*, i32** %17
store i32 1, i32* %409
%410 = load double*, double** %18
store double 1.000000e-300, double* %410
br label %415
411: ; preds = %407
%412 = load i32*, i32** %17
store i32 2, i32* %412
%413 = load double*, double** %18
store double 1.000000e+300, double* %413
br label %414
414: ; preds = %411, %403
br label %415
415: ; preds = %414, %408
br label %506
416: ; preds = %360
%417 = load i32*, i32** %10
%418 = load i32, i32* %417
%419 = icmp eq i32 4, %418
br i1 %419, label %420, label %505
420: ; preds = %416
store double 1.000000e-50, double* %39
store double 1.000000e-08, double* %40
%421 = call i32 (double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_dstzr to i32 (double*, double*, double*, double*, ...)*)(double* %19, double* %22, double* %39, double* %40)
%422 = load i64, i64* %32
%423 = icmp ne i64 %422, 0
br i1 %423, label %425, label %424
424: ; preds = %420
br label %457
425: ; preds = %420
%426 = load i32*, i32** %17
store i32 0, i32* %426
%427 = load i32*, i32** %17
%428 = load double*, double** %15
%429 = call i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dzror to i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...)*)(i32* %427, double* %428, double* %23, double* %25, double* %24, i64* %31, i64* %30)
%430 = load double*, double** %15
%431 = load double, double* %430
%432 = fsub double 1.000000e+00, %431
%433 = load double*, double** %16
store double %432, double* %433
br label %434
434: ; preds = %439, %425
%435 = load i32*, i32** %17
%436 = load i32, i32* %435
%437 = icmp eq i32 %436, 1
br i1 %437, label %439, label %438
438: ; preds = %434
br label %456
439: ; preds = %434
%440 = load double*, double** %13
%441 = load double*, double** %14
%442 = load double*, double** %15
%443 = load double*, double** %16
%444 = call i32 (double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_cumbin to i32 (double*, double*, double*, double*, double*, double*, ...)*)(double* %440, double* %441, double* %442, double* %443, double* %26, double* %27)
%445 = load double, double* %26
%446 = load double*, double** %11
%447 = load double, double* %446
%448 = fsub double %445, %447
store double %448, double* %23
%449 = load i32*, i32** %17
%450 = load double*, double** %15
%451 = call i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dzror to i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...)*)(i32* %449, double* %450, double* %23, double* %25, double* %24, i64* %31, i64* %30)
%452 = load double*, double** %15
%453 = load double, double* %452
%454 = fsub double 1.000000e+00, %453
%455 = load double*, double** %16
store double %454, double* %455
br label %434
456: ; preds = %438
br label %488
457: ; preds = %424
%458 = load i32*, i32** %17
store i32 0, i32* %458
%459 = load i32*, i32** %17
%460 = load double*, double** %16
%461 = call i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dzror to i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...)*)(i32* %459, double* %460, double* %23, double* %25, double* %24, i64* %31, i64* %30)
%462 = load double*, double** %16
%463 = load double, double* %462
%464 = fsub double 1.000000e+00, %463
%465 = load double*, double** %15
store double %464, double* %465
br label %466
466: ; preds = %471, %457
%467 = load i32*, i32** %17
%468 = load i32, i32* %467
%469 = icmp eq i32 %468, 1
br i1 %469, label %471, label %470
470: ; preds = %466
br label %489
471: ; preds = %466
%472 = load double*, double** %13
%473 = load double*, double** %14
%474 = load double*, double** %15
%475 = load double*, double** %16
%476 = call i32 (double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_cumbin to i32 (double*, double*, double*, double*, double*, double*, ...)*)(double* %472, double* %473, double* %474, double* %475, double* %26, double* %27)
%477 = load double, double* %27
%478 = load double*, double** %12
%479 = load double, double* %478
%480 = fsub double %477, %479
store double %480, double* %23
%481 = load i32*, i32** %17
%482 = load double*, double** %16
%483 = call i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dzror to i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...)*)(i32* %481, double* %482, double* %23, double* %25, double* %24, i64* %31, i64* %30)
%484 = load double*, double** %16
%485 = load double, double* %484
%486 = fsub double 1.000000e+00, %485
%487 = load double*, double** %15
store double %486, double* %487
br label %466
488: ; preds = %456
br label %489
489: ; preds = %488, %470
%490 = load i32*, i32** %17
%491 = load i32, i32* %490
%492 = icmp eq i32 %491, -1
br i1 %492, label %494, label %493
493: ; preds = %489
br label %509
494: ; preds = %489
%495 = load i64, i64* %31
%496 = icmp ne i64 %495, 0
br i1 %496, label %498, label %497
497: ; preds = %494
br label %501
498: ; preds = %494
%499 = load i32*, i32** %17
store i32 1, i32* %499
%500 = load double*, double** %18
store double 0.000000e+00, double* %500
br label %504
501: ; preds = %497
%502 = load i32*, i32** %17
store i32 2, i32* %502
%503 = load double*, double** %18
store double 1.000000e+00, double* %503
br label %504
504: ; preds = %501, %498
br label %505
505: ; preds = %504, %416
br label %506
506: ; preds = %505, %415
br label %507
507: ; preds = %506, %359
br label %508
508: ; preds = %507, %292
br label %509
509: ; preds = %508, %493
br label %510
510: ; preds = %509, %273, %242, %211, %185, %159, %124, %111, %85, %60
ret void
}

LLVM IR (-O2):
define void @cdflib_cdfbin(i32* nocapture %0, double* %1, double* %2, double* %3, double* %4, double* %5, double* %6, i32* %7, double* nocapture writeonly %8) {
%10 = alloca double
%11 = alloca double
%12 = alloca double
%13 = alloca double
%14 = alloca double
%15 = alloca double
%16 = alloca double
%17 = alloca double
%18 = alloca double
%19 = alloca i64
%20 = alloca i64
%21 = alloca double
%22 = alloca double
%23 = alloca double
%24 = alloca double
%25 = alloca double
%26 = alloca double
%27 = alloca double
%28 = alloca double
%29 = bitcast double* %10 to i8*
store double 0.000000e+00, double* %10
%30 = bitcast double* %11 to i8*
store double 5.000000e-01, double* %11
%31 = bitcast double* %12 to i8*
store double 5.000000e+00, double* %12
%32 = bitcast double* %13 to i8*
store double 1.000000e+00, double* %13
%33 = bitcast double* %14 to i8*
%34 = bitcast double* %15 to i8*
%35 = bitcast double* %16 to i8*
%36 = bitcast double* %17 to i8*
%37 = bitcast double* %18 to i8*
%38 = bitcast i64* %19 to i8*
%39 = bitcast i64* %20 to i8*
%40 = bitcast double* %21 to i8*
%41 = bitcast double* %22 to i8*
%42 = bitcast double* %23 to i8*
%43 = bitcast double* %24 to i8*
%44 = bitcast double* %25 to i8*
%45 = bitcast double* %26 to i8*
%46 = bitcast double* %27 to i8*
%47 = bitcast double* %28 to i8*
store i32 0, i32* %7
store double 0.000000e+00, double* %8
%48 = load i32, i32* %0
%49 = icmp eq i32 %48, 1
br i1 %49, label %69, label %50
50: ; preds = %9
%51 = load double, double* %1
%52 = fcmp olt double %51, 0.000000e+00
%53 = fcmp ogt double %51, 1.000000e+00
%54 = or i1 %52, %53
br i1 %54, label %55, label %57
55: ; preds = %50
%56 = select i1 %52, double 0.000000e+00, double 1.000000e+00
store double %56, double* %8
store i32 -2, i32* %7
br label %227
57: ; preds = %50
%58 = load double, double* %2
%59 = fcmp olt double %58, 0.000000e+00
%60 = fcmp ogt double %58, 1.000000e+00
%61 = or i1 %59, %60
br i1 %61, label %62, label %64
62: ; preds = %57
%63 = select i1 %59, double 0.000000e+00, double 1.000000e+00
store double %63, double* %8
store i32 -3, i32* %7
br label %227
64: ; preds = %57
%65 = icmp eq i32 %48, 3
br i1 %65, label %78, label %66
66: ; preds = %64
%67 = load double, double* %4
%68 = fcmp ugt double %67, 0.000000e+00
br i1 %68, label %73, label %72
69: ; preds = %9
%70 = load double, double* %4
%71 = fcmp ugt double %70, 0.000000e+00
br i1 %71, label %75, label %72
72: ; preds = %69, %66
store i32 -5, i32* %7
br label %227
73: ; preds = %66
%74 = icmp eq i32 %48, 2
br i1 %74, label %88, label %75
75: ; preds = %69, %73
%76 = load double, double* %3
%77 = fcmp olt double %76, 0.000000e+00
br i1 %77, label %84, label %81
78: ; preds = %64
%79 = load double, double* %3
%80 = fcmp olt double %79, 0.000000e+00
br i1 %80, label %84, label %88
81: ; preds = %75
%82 = load double, double* %4
%83 = fcmp ogt double %76, %82
br i1 %83, label %84, label %86
84: ; preds = %81, %78, %75
%85 = phi double [ 0.000000e+00, %75 ], [ 0.000000e+00, %78 ], [ %82, %81 ]
store double %85, double* %8
store i32 -4, i32* %7
br label %227
86: ; preds = %81
%87 = icmp eq i32 %48, 4
br i1 %87, label %102, label %88
88: ; preds = %78, %73, %86
%89 = load double, double* %5
%90 = fcmp olt double %89, 0.000000e+00
%91 = fcmp ogt double %89, 1.000000e+00
%92 = or i1 %90, %91
br i1 %92, label %93, label %95
93: ; preds = %88
%94 = select i1 %90, double 0.000000e+00, double 1.000000e+00
store double %94, double* %8
store i32 -6, i32* %7
br label %227
95: ; preds = %88
%96 = load double, double* %6
%97 = fcmp olt double %96, 0.000000e+00
%98 = fcmp ogt double %96, 1.000000e+00
%99 = or i1 %97, %98
br i1 %99, label %100, label %102
100: ; preds = %95
%101 = select i1 %97, double 0.000000e+00, double 1.000000e+00
store double %101, double* %8
store i32 -7, i32* %7
br label %227
102: ; preds = %86, %95
br i1 %49, label %125, label %103
103: ; preds = %102
%104 = load double, double* %1
%105 = load double, double* %2
%106 = fadd double %104, %105
%107 = fadd double %106, -5.000000e-01
%108 = fadd double %107, -5.000000e-01
%109 = tail call double @llvm.fabs.f64(double %108)
%110 = tail call i32 (i32, ...) bitcast (i32 (...)* @dpmpar to i32 (i32, ...)*)(i32 1)
%111 = sitofp i32 %110 to double
%112 = fmul double %111, 3.000000e+00
%113 = fcmp ogt double %109, %112
br i1 %113, label %114, label %117
114: ; preds = %103
%115 = fcmp olt double %106, 0.000000e+00
%116 = select i1 %115, double 0.000000e+00, double 1.000000e+00
store double %116, double* %8
store i32 3, i32* %7
br label %227
117: ; preds = %103
%118 = load i32, i32* %0
%119 = icmp eq i32 %118, 4
br i1 %119, label %120, label %125
120: ; preds = %117
%121 = load double, double* %1
%122 = load double, double* %2
%123 = fcmp ugt double %121, %122
store double 1.000000e-50, double* %27
store double 1.000000e-08, double* %28
%124 = call i32 (double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_dstzr to i32 (double*, double*, double*, double*, ...)*)(double* %10, double* %13, double* %27, double* %28)
br i1 %123, label %203, label %187
125: ; preds = %102, %117
%126 = load double, double* %5
%127 = load double, double* %6
%128 = fadd double %126, %127
%129 = fadd double %128, -5.000000e-01
%130 = fadd double %129, -5.000000e-01
%131 = tail call double @llvm.fabs.f64(double %130)
%132 = tail call i32 (i32, ...) bitcast (i32 (...)* @dpmpar to i32 (i32, ...)*)(i32 1)
%133 = sitofp i32 %132 to double
%134 = fmul double %133, 3.000000e+00
%135 = fcmp ogt double %131, %134
br i1 %135, label %136, label %139
136: ; preds = %125
%137 = fcmp olt double %128, 0.000000e+00
%138 = select i1 %137, double 0.000000e+00, double 1.000000e+00
store double %138, double* %8
store i32 4, i32* %7
br label %227
139: ; preds = %125
%140 = load i32, i32* %0
%141 = icmp eq i32 %140, 1
br i1 %141, label %146, label %142
142: ; preds = %139
%143 = load double, double* %1
%144 = load double, double* %2
%145 = fcmp ole double %143, %144
switch i32 %140, label %227 [
i32 4, label %185
i32 2, label %148
i32 3, label %167
]
146: ; preds = %139
%147 = tail call i32 (double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_cumbin to i32 (double*, double*, double*, double*, double*, double*, ...)*)(double* %3, double* %4, double* %5, double* %6, double* %1, double* %2)
store i32 0, i32* %7
br label %227
148: ; preds = %142
store double 5.000000e+00, double* %3
store double 1.000000e-50, double* %21
store double 1.000000e-08, double* %22
%149 = call i32 (double*, double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_dstinv to i32 (double*, double*, double*, double*, double*, double*, double*, ...)*)(double* %10, double* %4, double* %11, double* %11, double* %12, double* %21, double* %22)
store i32 0, i32* %7
%150 = select i1 %145, double* %1, double* %2
br label %151
151: ; preds = %154, %148
%152 = call i32 (i32*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dinvr to i32 (i32*, double*, double*, i64*, i64*, ...)*)(i32* %7, double* %3, double* %14, i64* %20, i64* %19)
%153 = load i32, i32* %7
switch i32 %153, label %227 [
i32 1, label %154
i32 -1, label %161
]
154: ; preds = %151
%155 = call i32 (double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_cumbin to i32 (double*, double*, double*, double*, double*, double*, ...)*)(double* %3, double* %4, double* %5, double* %6, double* %17, double* %18)
%156 = load double, double* %18
%157 = load double, double* %17
%158 = select i1 %145, double %157, double %156
%159 = load double, double* %150
%160 = fsub double %158, %159
store double %160, double* %14
br label %151
161: ; preds = %151
%162 = load i64, i64* %20
%163 = icmp eq i64 %162, 0
br i1 %163, label %165, label %164
164: ; preds = %161
store i32 1, i32* %7
store double 0.000000e+00, double* %8
br label %227
165: ; preds = %161
store i32 2, i32* %7
%166 = load double, double* %4
store double %166, double* %8
br label %227
167: ; preds = %142
store double 5.000000e+00, double* %4
store double 1.000000e-300, double* %23
store double 1.000000e+300, double* %24
store double 1.000000e-50, double* %25
store double 1.000000e-08, double* %26
%168 = call i32 (double*, double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_dstinv to i32 (double*, double*, double*, double*, double*, double*, double*, ...)*)(double* %23, double* %24, double* %11, double* %11, double* %12, double* %25, double* %26)
store i32 0, i32* %7
%169 = select i1 %145, double* %1, double* %2
br label %170
170: ; preds = %173, %167
%171 = call i32 (i32*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dinvr to i32 (i32*, double*, double*, i64*, i64*, ...)*)(i32* %7, double* %4, double* %14, i64* %20, i64* %19)
%172 = load i32, i32* %7
switch i32 %172, label %227 [
i32 1, label %173
i32 -1, label %180
]
173: ; preds = %170
%174 = call i32 (double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_cumbin to i32 (double*, double*, double*, double*, double*, double*, ...)*)(double* %3, double* %4, double* %5, double* %6, double* %17, double* %18)
%175 = load double, double* %18
%176 = load double, double* %17
%177 = select i1 %145, double %176, double %175
%178 = load double, double* %169
%179 = fsub double %177, %178
store double %179, double* %14
br label %170
180: ; preds = %170
%181 = load i64, i64* %20
%182 = icmp eq i64 %181, 0
br i1 %182, label %184, label %183
183: ; preds = %180
store i32 1, i32* %7
store double 1.000000e-300, double* %8
br label %227
184: ; preds = %180
store i32 2, i32* %7
store double 1.000000e+300, double* %8
br label %227
185: ; preds = %142
store double 1.000000e-50, double* %27
store double 1.000000e-08, double* %28
%186 = call i32 (double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_dstzr to i32 (double*, double*, double*, double*, ...)*)(double* %10, double* %13, double* %27, double* %28)
br i1 %145, label %187, label %203
187: ; preds = %120, %185
store i32 0, i32* %7
%188 = call i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dzror to i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...)*)(i32* %7, double* %5, double* %14, double* %16, double* %15, i64* %20, i64* %19)
%189 = load double, double* %5
%190 = fsub double 1.000000e+00, %189
store double %190, double* %6
%191 = load i32, i32* %7
%192 = icmp eq i32 %191, 1
br i1 %192, label %193, label %219
193: ; preds = %187, %193
%194 = call i32 (double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_cumbin to i32 (double*, double*, double*, double*, double*, double*, ...)*)(double* %3, double* %4, double* %5, double* %6, double* %17, double* %18)
%195 = load double, double* %17
%196 = load double, double* %1
%197 = fsub double %195, %196
store double %197, double* %14
%198 = call i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dzror to i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...)*)(i32* %7, double* %5, double* %14, double* %16, double* %15, i64* %20, i64* %19)
%199 = load double, double* %5
%200 = fsub double 1.000000e+00, %199
store double %200, double* %6
%201 = load i32, i32* %7
%202 = icmp eq i32 %201, 1
br i1 %202, label %193, label %219
203: ; preds = %120, %185
store i32 0, i32* %7
%204 = call i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dzror to i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...)*)(i32* %7, double* %6, double* %14, double* %16, double* %15, i64* %20, i64* %19)
%205 = load double, double* %6
%206 = fsub double 1.000000e+00, %205
store double %206, double* %5
%207 = load i32, i32* %7
%208 = icmp eq i32 %207, 1
br i1 %208, label %209, label %219
209: ; preds = %203, %209
%210 = call i32 (double*, double*, double*, double*, double*, double*, ...) bitcast (i32 (...)* @cdflib_cumbin to i32 (double*, double*, double*, double*, double*, double*, ...)*)(double* %3, double* %4, double* %5, double* %6, double* %17, double* %18)
%211 = load double, double* %18
%212 = load double, double* %2
%213 = fsub double %211, %212
store double %213, double* %14
%214 = call i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...) bitcast (i32 (...)* @cdflib_dzror to i32 (i32*, double*, double*, double*, double*, i64*, i64*, ...)*)(i32* %7, double* %6, double* %14, double* %16, double* %15, i64* %20, i64* %19)
%215 = load double, double* %6
%216 = fsub double 1.000000e+00, %215
store double %216, double* %5
%217 = load i32, i32* %7
%218 = icmp eq i32 %217, 1
br i1 %218, label %209, label %219
219: ; preds = %209, %193, %203, %187
%220 = phi i32 [ %191, %187 ], [ %207, %203 ], [ %201, %193 ], [ %217, %209 ]
%221 = icmp eq i32 %220, -1
br i1 %221, label %222, label %227
222: ; preds = %219
%223 = load i64, i64* %20
%224 = icmp eq i64 %223, 0
br i1 %224, label %226, label %225
225: ; preds = %222
store i32 1, i32* %7
store double 0.000000e+00, double* %8
br label %227
226: ; preds = %222
store i32 2, i32* %7
store double 1.000000e+00, double* %8
br label %227
227: ; preds = %170, %151, %219, %165, %164, %226, %225, %183, %184, %146, %142, %136, %114, %100, %93, %84, %72, %62, %55
ret void
}