void cdflib_E0000(int IENTRY, int *status, double *x, double *fx,
                  unsigned long *qleft, unsigned long *qhi, double *zabsst,
                  double *zabsto, double *zbig, double *zrelst, double *zrelto,
                  double *zsmall, double *zstpmu) {
  double absstp = 0;
  double abstol;
  double big = 0, fbig, fsmall = 0, relstp = 0, reltol, small = 0, step = 0,
         stpmul = 0, xhi, xlb = 0, xlo, xsave = 0, xub = 0, yy;
  int i99999 = 0;
  unsigned long qbdd, qcond, qdum1, qdum2, qincr = 0, qlim, qup;
  switch (IENTRY) {
  case 0:
    goto DINVR;
  case 1:
    goto DSTINV;
  }
DINVR:
  if (*status > 0) {
    goto S310;
  }
  qcond = !(int)((small) <= (*x) && (*x) <= (big));
  if (qcond) {
    cdflib_ftnstop(" SMALL, X, BIG not monotone in INVR");
  }
  xsave = *x;
  *x = small;
  i99999 = 1;
  goto S300;
S10:
  fsmall = *fx;
  *x = big;
  i99999 = 2;
  goto S300;
S20:
  fbig = *fx;
  qincr = fbig > fsmall;
  if (!qincr) {
    goto S50;
  }
  if (fsmall <= 0.0e0) {
    goto S30;
  }
  *status = -1;
  *qleft = *qhi = 1;
  return;
S30:
  if (fbig >= 0.0e0) {
    goto S40;
  }
  *status = -1;
  *qleft = *qhi = 0;
  return;
S40:
  goto S80;
S50:
  if (fsmall >= 0.0e0) {
    goto S60;
  }
  *status = -1;
  *qleft = 1;
  *qhi = 0;
  return;
S60:
  if (fbig <= 0.0e0) {
    goto S70;
  }
  *status = -1;
  *qleft = 0;
  *qhi = 1;
  return;
S80:
S70:
  *x = xsave;
  step = cdflib_fifdmax1(absstp, relstp * fabs(*x));
  i99999 = 3;
  goto S300;
S90:
  yy = *fx;
  if (!(yy == 0.0e0)) {
    goto S100;
  }
  *status = 0;
  return;
S100:
  qup = (qincr && yy < 0.0e0) || (!qincr && yy > 0.0e0);
  if (!qup) {
    goto S170;
  }
  xlb = xsave;
  xub = cdflib_fifdmin1(xlb + step, big);
  goto S120;
S110:
  if (qcond) {
    goto S150;
  }
S120:
  *x = xub;
  i99999 = 4;
  goto S300;
S130:
  yy = *fx;
  qbdd = (qincr && yy >= 0.0e0) || (!qincr && yy <= 0.0e0);
  qlim = xub >= big;
  qcond = qbdd || qlim;
  if (qcond) {
    goto S140;
  }
  step = stpmul * step;
  xlb = xub;
  xub = cdflib_fifdmin1(xlb + step, big);
S140:
  goto S110;
S150:
  if (!(qlim && !qbdd)) {
    goto S160;
  }
  *status = -1;
  *qleft = 0;
  *qhi = !qincr;
  *x = big;
  return;
S160:
  goto S240;
S170:
  xub = xsave;
  xlb = cdflib_fifdmax1(xub - step, small);
  goto S190;
S180:
  if (qcond) {
    goto S220;
  }
S190:
  *x = xlb;
  i99999 = 5;
  goto S300;
S200:
  yy = *fx;
  qbdd = (qincr && yy <= 0.0e0) || (!qincr && yy >= 0.0e0);
  qlim = xlb <= small;
  qcond = qbdd || qlim;
  if (qcond) {
    goto S210;
  }
  step = stpmul * step;
  xub = xlb;
  xlb = cdflib_fifdmax1(xub - step, small);
S210:
  goto S180;
S220:
  if (!(qlim && !qbdd)) {
    goto S230;
  }
  *status = -1;
  *qleft = 1;
  *qhi = qincr;
  *x = small;
  return;
S240:
S230:
  cdflib_dstzr(&xlb, &xub, &abstol, &reltol);
  *status = 0;
  goto S260;
S250:
  if (!(*status == 1)) {
    goto S290;
  }
S260:
  cdflib_dzror(status, x, fx, &xlo, &xhi, &qdum1, &qdum2);
  if (!(*status == 1)) {
    goto S280;
  }
  i99999 = 6;
  goto S300;
S280:
S270:
  goto S250;
S290:
  *x = xlo;
  *status = 0;
  return;
DSTINV:
  small = *zsmall;
  big = *zbig;
  absstp = *zabsst;
  relstp = *zrelst;
  stpmul = *zstpmu;
  abstol = *zabsto;
  reltol = *zrelto;
  return;
S300:
  *status = 1;
  return;
S310:
  switch ((int)i99999) {
  case 1:
    goto S10;
  case 2:
    goto S20;
  case 3:
    goto S90;
  case 4:
    goto S130;
  case 5:
    goto S200;
  case 6:
    goto S270;
  default:
    break;
  }
}


x86 assembly (clang, -O0):
push   %rbp
mov    %rsp,%rbp
sub    $0x110,%rsp
mov    0x40(%rbp),%rax
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movq   $0x0,-0x38(%rbp)
movq   $0x0,-0x48(%rbp)
movq   $0x0,-0x58(%rbp)
movq   $0x0,-0x60(%rbp)
movq   $0x0,-0x70(%rbp)
movq   $0x0,-0x78(%rbp)
movq   $0x0,-0x80(%rbp)
movq   $0x0,-0x90(%rbp)
movq   $0x0,-0xa0(%rbp)
movq   $0x0,-0xa8(%rbp)
movl   $0x0,-0xb4(%rbp)
movq   $0x0,-0xe0(%rbp)
mov    -0x4(%rbp),%eax
mov    %eax,-0xf4(%rbp)
test   %eax,%eax
je     1226 <cdflib_E0000+0xd6>
jmp    1212 <cdflib_E0000+0xc2>
mov    -0xf4(%rbp),%eax
sub    $0x1,%eax
je     122b <cdflib_E0000+0xdb>
jmp    1230 <cdflib_E0000+0xe0>
jmp    1235 <cdflib_E0000+0xe5>
jmp    1a2e <cdflib_E0000+0x8de>
jmp    1235 <cdflib_E0000+0xe5>
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
jle    1247 <cdflib_E0000+0xf7>
jmp    1a9d <cdflib_E0000+0x94d>
movsd  -0x70(%rbp),%xmm1
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
xor    %eax,%eax
ucomisd %xmm1,%xmm0
mov    %al,-0xf5(%rbp)
jb     1280 <cdflib_E0000+0x130>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x48(%rbp),%xmm0
ucomisd %xmm1,%xmm0
setae  %al
mov    %al,-0xf5(%rbp)
mov    -0xf5(%rbp),%al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,-0xc8(%rbp)
cmpq   $0x0,-0xc8(%rbp)
je     12b2 <cdflib_E0000+0x162>
lea    0xd7d(%rip),%rdi
mov    $0x0,%al
call   1060 <cdflib_ftnstop@plt>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x1,-0xb4(%rbp)
jmp    1a8e <cdflib_E0000+0x93e>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x48(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x2,-0xb4(%rbp)
jmp    1a8e <cdflib_E0000+0x93e>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
ucomisd -0x58(%rbp),%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,-0xe0(%rbp)
cmpq   $0x0,-0xe0(%rbp)
jne    1342 <cdflib_E0000+0x1f2>
jmp    13bb <cdflib_E0000+0x26b>
xorps  %xmm0,%xmm0
ucomisd -0x58(%rbp),%xmm0
jb     1355 <cdflib_E0000+0x205>
jmp    137a <cdflib_E0000+0x22a>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x30(%rbp),%rax
movq   $0x1,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x1,(%rax)
jmp    1af2 <cdflib_E0000+0x9a2>
movsd  -0x50(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1391 <cdflib_E0000+0x241>
jmp    13b6 <cdflib_E0000+0x266>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x30(%rbp),%rax
movq   $0x0,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x0,(%rax)
jmp    1af2 <cdflib_E0000+0x9a2>
jmp    142f <cdflib_E0000+0x2df>
movsd  -0x58(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     13d2 <cdflib_E0000+0x282>
jmp    13f7 <cdflib_E0000+0x2a7>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x1,(%rax)
mov    -0x30(%rbp),%rax
movq   $0x0,(%rax)
jmp    1af2 <cdflib_E0000+0x9a2>
xorps  %xmm0,%xmm0
ucomisd -0x50(%rbp),%xmm0
jb     140a <cdflib_E0000+0x2ba>
jmp    1434 <cdflib_E0000+0x2e4>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x0,(%rax)
mov    -0x30(%rbp),%rax
movq   $0x1,(%rax)
jmp    1af2 <cdflib_E0000+0x9a2>
jmp    1434 <cdflib_E0000+0x2e4>
movsd  -0xa0(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x38(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm2
movaps 0xba3(%rip),%xmm3
pand   %xmm3,%xmm2
mulsd  %xmm2,%xmm1
mov    $0x2,%al
call   1050 <cdflib_fifdmax1@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x78(%rbp)
movl   $0x3,-0xb4(%rbp)
jmp    1a8e <cdflib_E0000+0x93e>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    14b4 <cdflib_E0000+0x364>
jp     14b4 <cdflib_E0000+0x364>
jmp    14b9 <cdflib_E0000+0x369>
jmp    14c8 <cdflib_E0000+0x378>
mov    -0x10(%rbp),%rax
movl   $0x0,(%rax)
jmp    1af2 <cdflib_E0000+0x9a2>
cmpq   $0x0,-0xe0(%rbp)
je     14ef <cdflib_E0000+0x39f>
mov    $0x1,%al
xorps  %xmm0,%xmm0
ucomisd -0xb0(%rbp),%xmm0
ff
mov    %al,-0xf6(%rbp)
ja     1529 <cdflib_E0000+0x3d9>
xor    %eax,%eax
cmpq   $0x0,-0xe0(%rbp)
mov    %al,-0xf7(%rbp)
jne    151d <cdflib_E0000+0x3cd>
movsd  -0xb0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
seta   %al
mov    %al,-0xf7(%rbp)
mov    -0xf7(%rbp),%al
mov    %al,-0xf6(%rbp)
mov    -0xf6(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,-0xf0(%rbp)
cmpq   $0x0,-0xf0(%rbp)
jne    1550 <cdflib_E0000+0x400>
jmp    1764 <cdflib_E0000+0x614>
movsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
addsd  -0x78(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
mov    $0x2,%al
call   1030 <cdflib_fifdmin1@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
jmp    15a2 <cdflib_E0000+0x452>
cmpq   $0x0,-0xc8(%rbp)
je     159d <cdflib_E0000+0x44d>
jmp    16fb <cdflib_E0000+0x5ab>
jmp    15a2 <cdflib_E0000+0x452>
movsd  -0xa8(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x4,-0xb4(%rbp)
jmp    1a8e <cdflib_E0000+0x93e>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
cmpq   $0x0,-0xe0(%rbp)
je     15fc <cdflib_E0000+0x4ac>
movsd  -0xb0(%rbp),%xmm0
ff
mov    $0x1,%al
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
mov    %al,-0xf8(%rbp)
jae    1632 <cdflib_E0000+0x4e2>
xor    %eax,%eax
cmpq   $0x0,-0xe0(%rbp)
mov    %al,-0xf9(%rbp)
jne    1626 <cdflib_E0000+0x4d6>
xorps  %xmm0,%xmm0
ucomisd -0xb0(%rbp),%xmm0
ff
setae  %al
mov    %al,-0xf9(%rbp)
mov    -0xf9(%rbp),%al
mov    %al,-0xf8(%rbp)
mov    -0xf8(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,-0xc0(%rbp)
movsd  -0xa8(%rbp),%xmm0
ff
ucomisd -0x48(%rbp),%xmm0
setae  %al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,-0xe8(%rbp)
mov    $0x1,%al
cmpq   $0x0,-0xc0(%rbp)
mov    %al,-0xfa(%rbp)
jne    168b <cdflib_E0000+0x53b>
cmpq   $0x0,-0xe8(%rbp)
setne  %al
mov    %al,-0xfa(%rbp)
mov    -0xfa(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,-0xc8(%rbp)
cmpq   $0x0,-0xc8(%rbp)
je     16b2 <cdflib_E0000+0x562>
jmp    16f6 <cdflib_E0000+0x5a6>
movsd  -0x80(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
addsd  -0x78(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm1
mov    $0x2,%al
call   1030 <cdflib_fifdmin1@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
jmp    158a <cdflib_E0000+0x43a>
cmpq   $0x0,-0xe8(%rbp)
je     1717 <cdflib_E0000+0x5c7>
cmpq   $0x0,-0xc0(%rbp)
je     171c <cdflib_E0000+0x5cc>
jmp    175f <cdflib_E0000+0x60f>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x0,(%rax)
cmpq   $0x0,-0xe0(%rbp)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rcx
mov    -0x30(%rbp),%rax
mov    %rcx,(%rax)
movsd  -0x48(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1af2 <cdflib_E0000+0x9a2>
jmp    1969 <cdflib_E0000+0x819>
movsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
subsd  -0x78(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm1
mov    $0x2,%al
call   1050 <cdflib_fifdmax1@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
jmp    17b6 <cdflib_E0000+0x666>
cmpq   $0x0,-0xc8(%rbp)
je     17b1 <cdflib_E0000+0x661>
jmp    1913 <cdflib_E0000+0x7c3>
jmp    17b6 <cdflib_E0000+0x666>
movsd  -0x90(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x5,-0xb4(%rbp)
jmp    1a8e <cdflib_E0000+0x93e>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
cmpq   $0x0,-0xe0(%rbp)
je     180c <cdflib_E0000+0x6bc>
mov    $0x1,%al
xorps  %xmm0,%xmm0
ucomisd -0xb0(%rbp),%xmm0
ff
mov    %al,-0xfb(%rbp)
jae    1846 <cdflib_E0000+0x6f6>
xor    %eax,%eax
cmpq   $0x0,-0xe0(%rbp)
mov    %al,-0xfc(%rbp)
jne    183a <cdflib_E0000+0x6ea>
movsd  -0xb0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
setae  %al
mov    %al,-0xfc(%rbp)
mov    -0xfc(%rbp),%al
mov    %al,-0xfb(%rbp)
mov    -0xfb(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,-0xc0(%rbp)
movsd  -0x90(%rbp),%xmm1
ff
movsd  -0x70(%rbp),%xmm0
ucomisd %xmm1,%xmm0
setae  %al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,-0xe8(%rbp)
mov    $0x1,%al
cmpq   $0x0,-0xc0(%rbp)
mov    %al,-0xfd(%rbp)
jne    18a3 <cdflib_E0000+0x753>
cmpq   $0x0,-0xe8(%rbp)
setne  %al
mov    %al,-0xfd(%rbp)
mov    -0xfd(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,-0xc8(%rbp)
cmpq   $0x0,-0xc8(%rbp)
je     18ca <cdflib_E0000+0x77a>
jmp    190e <cdflib_E0000+0x7be>
movsd  -0x80(%rbp),%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
subsd  -0x78(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm1
mov    $0x2,%al
call   1050 <cdflib_fifdmax1@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
jmp    179e <cdflib_E0000+0x64e>
cmpq   $0x0,-0xe8(%rbp)
je     192f <cdflib_E0000+0x7df>
cmpq   $0x0,-0xc0(%rbp)
je     1934 <cdflib_E0000+0x7e4>
jmp    196e <cdflib_E0000+0x81e>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x1,(%rax)
mov    -0xe0(%rbp),%rcx
mov    -0x30(%rbp),%rax
mov    %rcx,(%rax)
movsd  -0x70(%rbp),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1af2 <cdflib_E0000+0x9a2>
jmp    196e <cdflib_E0000+0x81e>
lea    -0x90(%rbp),%rdi
lea    -0xa8(%rbp),%rsi
lea    -0x40(%rbp),%rdx
lea    -0x68(%rbp),%rcx
mov    $0x0,%al
call   1070 <cdflib_dstzr@plt>
mov    -0x10(%rbp),%rax
movl   $0x0,(%rax)
jmp    19b1 <cdflib_E0000+0x861>
mov    -0x10(%rbp),%rax
cmpl   $0x1,(%rax)
je     19ac <cdflib_E0000+0x85c>
jmp    1a0f <cdflib_E0000+0x8bf>
jmp    19b1 <cdflib_E0000+0x861>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%rdx
lea    -0x98(%rbp),%rcx
lea    -0x88(%rbp),%r8
lea    -0xd0(%rbp),%r9
lea    -0xd8(%rbp),%rax
mov    %rax,(%rsp)
mov    $0x0,%al
call   1040 <cdflib_dzror@plt>
mov    -0x10(%rbp),%rax
cmpl   $0x1,(%rax)
je     19f6 <cdflib_E0000+0x8a6>
jmp    1a05 <cdflib_E0000+0x8b5>
movl   $0x6,-0xb4(%rbp)
jmp    1a8e <cdflib_E0000+0x93e>
jmp    1a0a <cdflib_E0000+0x8ba>
jmp    199a <cdflib_E0000+0x84a>
movsd  -0x98(%rbp),%xmm0
ff
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movl   $0x0,(%rax)
jmp    1af2 <cdflib_E0000+0x9a2>
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x70(%rbp)
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x38(%rbp)
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x80(%rbp)
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    1af2 <cdflib_E0000+0x9a2>
mov    -0x10(%rbp),%rax
movl   $0x1,(%rax)
jmp    1af2 <cdflib_E0000+0x9a2>
mov    -0xb4(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x108(%rbp)
sub    $0x5,%eax
ja     1aed <cdflib_E0000+0x99d>
mov    -0x108(%rbp),%rax
lea    0x54a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
jmp    12de <cdflib_E0000+0x18e>
jmp    1307 <cdflib_E0000+0x1b7>
jmp    1484 <cdflib_E0000+0x334>
jmp    15c1 <cdflib_E0000+0x471>
jmp    17d5 <cdflib_E0000+0x685>
jmp    1a0a <cdflib_E0000+0x8ba>
jmp    1af2 <cdflib_E0000+0x9a2>
add    $0x110,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
push   %r14
push   %rbx
push   %rax
cmp    $0x1,%edi
je     114f <cdflib_E0000+0x3f>
mov    %rsi,%rbx
cmpl   $0x0,(%rsi)
jg     114f <cdflib_E0000+0x3f>
mov    %rdx,%r14
movsd  (%rdx),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1134 <cdflib_E0000+0x24>
jnp    1142 <cdflib_E0000+0x32>
lea    0xec5(%rip),%rdi
xor    %eax,%eax
call   1030 <cdflib_ftnstop@plt>
movq   $0x0,(%r14)
movl   $0x1,(%rbx)
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
@.str = [36 x i8] c" SMALL, X, BIG not monotone in INVR\00"
define void @cdflib_E0000(i32 %0, i32* nocapture %1, double* nocapture %2, double* nocapture readnone %3, i64* nocapture readnone %4, i64* nocapture readnone %5, double* nocapture readnone %6, double* nocapture readnone %7, double* nocapture readnone %8, double* nocapture readnone %9, double* nocapture readnone %10, double* nocapture readnone %11, double* nocapture readnone %12) {
%14 = icmp eq i32 %0, 1
br i1 %14, label %24, label %15
15: ; preds = %13
%16 = load i32, i32* %1
%17 = icmp sgt i32 %16, 0
br i1 %17, label %24, label %18
18: ; preds = %15
%19 = load double, double* %2
%20 = fcmp une double %19, 0.000000e+00
br i1 %20, label %21, label %23
21: ; preds = %18
%22 = tail call i32 (i8*, ...) bitcast (i32 (...)* @cdflib_ftnstop to i32 (i8*, ...)*)(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str, i64 0, i64 0))
br label %23
23: ; preds = %21, %18
store double 0.000000e+00, double* %2
store i32 1, i32* %1
br label %24
24: ; preds = %15, %13, %23
ret void
}