#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ EXIT_FAILURE;
int /*<<< orphan*/ dstzr(double *, double *, double *, double *);
int /*<<< orphan*/ dzror(int *, double *, double *, double *, double *,
                         unsigned long *, unsigned long *);
int /*<<< orphan*/ exit(int /*<<< orphan*/);
double fabs(double);
double fifdmax1(double, double);
double fifdmin1(double, double);
int /*<<< orphan*/ fprintf(int /*<<< orphan*/, char *);
int /*<<< orphan*/ stderr;
void 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) {
  static double absstp, abstol, big, fbig, fsmall, relstp, reltol, small, step,
      stpmul, xhi, xlb, xlo, xsave, xub, yy;
  static int i99999;
  static unsigned long qbdd, qcond, qdum1, qdum2, qincr, qlim, qok, 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) {
    fprintf(stderr, " SMALL, X, BIG not monotone in INVR\n");
    exit(EXIT_FAILURE);
  }
  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 = fifdmax1(absstp, relstp * fabs(*x));
  i99999 = 3;
  goto S300;
S90:
  yy = *fx;
  if (!(yy == 0.0e0))
    goto S100;
  *status = 0;
  qok = 1;
  return;
S100:
  qup = (qincr && yy < 0.0e0) || (!qincr && yy > 0.0e0);
  if (!qup)
    goto S170;
  xlb = xsave;
  xub = 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 = 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 = 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 = fifdmax1(xub - step, small);
S210:
  goto S180;
S220:
  if (!(qlim && !qbdd))
    goto S230;
  *status = -1;
  *qleft = 1;
  *qhi = qincr;
  *x = small;
  return;
S240:
S230:
  dstzr(&xlb, &xub, &abstol, &reltol);
  *status = 0;
  goto S260;
S250:
  if (!(*status == 1))
    goto S290;
S260:
  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    $0x50,%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)
mov    -0x4(%rbp),%eax
mov    %eax,-0x34(%rbp)
test   %eax,%eax
je     11bf <E0000+0x5f>
jmp    11ae <E0000+0x4e>
mov    -0x34(%rbp),%eax
sub    $0x1,%eax
je     11c4 <E0000+0x64>
jmp    11c9 <E0000+0x69>
jmp    11ce <E0000+0x6e>
jmp    19dd <E0000+0x87d>
jmp    11ce <E0000+0x6e>
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
jle    11e0 <E0000+0x80>
jmp    1a61 <E0000+0x901>
movsd  0x2ea8(%rip),%xmm1
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
xor    %eax,%eax
ucomisd %xmm1,%xmm0
mov    %al,-0x35(%rbp)
jb     1219 <E0000+0xb9>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0x2e59(%rip),%xmm0
ucomisd %xmm1,%xmm0
setae  %al
mov    %al,-0x35(%rbp)
mov    -0x35(%rbp),%al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,0x2ebc(%rip)
cmpq   $0x0,0x2eb4(%rip)
je     125d <E0000+0xfd>
mov    0x2d9f(%rip),%rax
mov    (%rax),%edi
lea    0xdde(%rip),%rsi
call   1050 <fprintf@plt>
mov    0x2d82(%rip),%rax
mov    (%rax),%edi
call   1080 <exit@plt>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2e53(%rip)
movsd  0x2e1b(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x1,0x2e51(%rip)
jmp    1a52 <E0000+0x8f2>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2ddc(%rip)
movsd  0x2dc4(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x2,0x2e22(%rip)
jmp    1a52 <E0000+0x8f2>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2da5(%rip)
movsd  0x2d9d(%rip),%xmm0
ucomisd 0x2d9d(%rip),%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,0x2e14(%rip)
cmpq   $0x0,0x2e0c(%rip)
jne    12ff <E0000+0x19f>
jmp    137e <E0000+0x21e>
xorps  %xmm0,%xmm0
ucomisd 0x2d6e(%rip),%xmm0
jb     1315 <E0000+0x1b5>
jmp    133a <E0000+0x1da>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x30(%rbp),%rax
movq   $0x1,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x1,(%rax)
jmp    1ab0 <E0000+0x950>
movsd  0x2d2e(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1354 <E0000+0x1f4>
jmp    1379 <E0000+0x219>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x30(%rbp),%rax
movq   $0x0,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x0,(%rax)
jmp    1ab0 <E0000+0x950>
jmp    13f8 <E0000+0x298>
movsd  0x2cf2(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1398 <E0000+0x238>
jmp    13bd <E0000+0x25d>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x1,(%rax)
mov    -0x30(%rbp),%rax
movq   $0x0,(%rax)
jmp    1ab0 <E0000+0x950>
xorps  %xmm0,%xmm0
ucomisd 0x2ca8(%rip),%xmm0
jb     13d3 <E0000+0x273>
jmp    13fd <E0000+0x29d>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x0,(%rax)
mov    -0x30(%rbp),%rax
movq   $0x1,(%rax)
jmp    1ab0 <E0000+0x950>
jmp    13fd <E0000+0x29d>
movsd  0x2cbb(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  0x2c43(%rip),%xmm0
movsd  0x2c63(%rip),%xmm1
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm2
movaps 0xbd4(%rip),%xmm3
pand   %xmm3,%xmm2
mulsd  %xmm2,%xmm1
call   1070 <fifdmax1@plt>
movsd  %xmm0,0x2c57(%rip)
movl   $0x3,0x2c8d(%rip)
jmp    1a52 <E0000+0x8f2>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2c70(%rip)
movsd  0x2c68(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1480 <E0000+0x320>
jp     1480 <E0000+0x320>
jmp    1485 <E0000+0x325>
jmp    149f <E0000+0x33f>
mov    -0x10(%rbp),%rax
movl   $0x0,(%rax)
movq   $0x1,0x2c76(%rip)
jmp    1ab0 <E0000+0x950>
cmpq   $0x0,0x2c59(%rip)
je     14c3 <E0000+0x363>
mov    $0x1,%al
xorps  %xmm0,%xmm0
ucomisd 0x2c16(%rip),%xmm0
mov    %al,-0x36(%rbp)
ja     14f1 <E0000+0x391>
xor    %eax,%eax
cmpq   $0x0,0x2c33(%rip)
mov    %al,-0x37(%rbp)
jne    14eb <E0000+0x38b>
movsd  0x2bf2(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
seta   %al
mov    %al,-0x37(%rbp)
mov    -0x37(%rbp),%al
mov    %al,-0x36(%rbp)
mov    -0x36(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,0x2c16(%rip)
cmpq   $0x0,0x2c0e(%rip)
jne    1515 <E0000+0x3b5>
jmp    171d <E0000+0x5bd>
movsd  0x2ba3(%rip),%xmm0
movsd  %xmm0,0x2b8b(%rip)
movsd  0x2b83(%rip),%xmm0
addsd  0x2b63(%rip),%xmm0
movsd  0x2b2b(%rip),%xmm1
call   1060 <fifdmin1@plt>
movsd  %xmm0,0x2b7e(%rip)
jmp    1567 <E0000+0x407>
cmpq   $0x0,0x2b91(%rip)
je     1562 <E0000+0x402>
jmp    16b1 <E0000+0x551>
jmp    1567 <E0000+0x407>
movsd  0x2b59(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x4,0x2b57(%rip)
jmp    1a52 <E0000+0x8f2>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2b3a(%rip)
cmpq   $0x0,0x2b62(%rip)
je     15be <E0000+0x45e>
movsd  0x2b24(%rip),%xmm0
mov    $0x1,%al
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
mov    %al,-0x38(%rbp)
jae    15e8 <E0000+0x488>
xor    %eax,%eax
cmpq   $0x0,0x2b38(%rip)
mov    %al,-0x39(%rbp)
jne    15e2 <E0000+0x482>
xorps  %xmm0,%xmm0
ucomisd 0x2af4(%rip),%xmm0
setae  %al
mov    %al,-0x39(%rbp)
mov    -0x39(%rbp),%al
mov    %al,-0x38(%rbp)
mov    -0x38(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,0x2ae7(%rip)
movsd  0x2ac7(%rip),%xmm0
ucomisd 0x2a5f(%rip),%xmm0
setae  %al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,0x2aee(%rip)
mov    $0x1,%al
cmpq   $0x0,0x2abc(%rip)
mov    %al,-0x3a(%rbp)
jne    163b <E0000+0x4db>
cmpq   $0x0,0x2ad3(%rip)
setne  %al
mov    %al,-0x3a(%rbp)
mov    -0x3a(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,0x2a9c(%rip)
cmpq   $0x0,0x2a94(%rip)
je     165f <E0000+0x4ff>
jmp    16ac <E0000+0x54c>
movsd  0x2a39(%rip),%xmm0
mulsd  0x2a29(%rip),%xmm0
movsd  %xmm0,0x2a21(%rip)
movsd  0x2a49(%rip),%xmm0
movsd  %xmm0,0x2a29(%rip)
movsd  0x2a21(%rip),%xmm0
addsd  0x2a01(%rip),%xmm0
movsd  0x29c9(%rip),%xmm1
call   1060 <fifdmin1@plt>
movsd  %xmm0,0x2a1c(%rip)
jmp    154f <E0000+0x3ef>
cmpq   $0x0,0x2a4f(%rip)
je     16cd <E0000+0x56d>
cmpq   $0x0,0x2a19(%rip)
je     16d2 <E0000+0x572>
jmp    1718 <E0000+0x5b8>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x0,(%rax)
cmpq   $0x0,0x2a11(%rip)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rcx
mov    -0x30(%rbp),%rax
mov    %rcx,(%rax)
movsd  0x295d(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1ab0 <E0000+0x950>
jmp    1916 <E0000+0x7b6>
movsd  0x299b(%rip),%xmm0
movsd  %xmm0,0x299b(%rip)
movsd  0x2993(%rip),%xmm0
subsd  0x295b(%rip),%xmm0
movsd  0x294b(%rip),%xmm1
call   1070 <fifdmax1@plt>
movsd  %xmm0,0x295e(%rip)
jmp    176f <E0000+0x60f>
cmpq   $0x0,0x2989(%rip)
je     176a <E0000+0x60a>
jmp    18bd <E0000+0x75d>
jmp    176f <E0000+0x60f>
movsd  0x2939(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x5,0x294f(%rip)
jmp    1a52 <E0000+0x8f2>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2932(%rip)
cmpq   $0x0,0x295a(%rip)
je     17c2 <E0000+0x662>
mov    $0x1,%al
xorps  %xmm0,%xmm0
ucomisd 0x2917(%rip),%xmm0
mov    %al,-0x3b(%rbp)
jae    17f0 <E0000+0x690>
xor    %eax,%eax
cmpq   $0x0,0x2934(%rip)
mov    %al,-0x3c(%rbp)
jne    17ea <E0000+0x68a>
movsd  0x28f3(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
setae  %al
mov    %al,-0x3c(%rbp)
mov    -0x3c(%rbp),%al
mov    %al,-0x3b(%rbp)
mov    -0x3b(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,0x28df(%rip)
movsd  0x28a7(%rip),%xmm1
movsd  0x287f(%rip),%xmm0
ucomisd %xmm1,%xmm0
setae  %al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,0x28e2(%rip)
mov    $0x1,%al
cmpq   $0x0,0x28b0(%rip)
mov    %al,-0x3d(%rbp)
jne    1847 <E0000+0x6e7>
cmpq   $0x0,0x28c7(%rip)
setne  %al
mov    %al,-0x3d(%rbp)
mov    -0x3d(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,0x2890(%rip)
cmpq   $0x0,0x2888(%rip)
je     186b <E0000+0x70b>
jmp    18b8 <E0000+0x758>
movsd  0x282d(%rip),%xmm0
mulsd  0x281d(%rip),%xmm0
movsd  %xmm0,0x2815(%rip)
movsd  0x2825(%rip),%xmm0
movsd  %xmm0,0x2835(%rip)
movsd  0x282d(%rip),%xmm0
subsd  0x27f5(%rip),%xmm0
movsd  0x27e5(%rip),%xmm1
call   1070 <fifdmax1@plt>
movsd  %xmm0,0x27f8(%rip)
jmp    1757 <E0000+0x5f7>
cmpq   $0x0,0x2843(%rip)
je     18d9 <E0000+0x779>
cmpq   $0x0,0x280d(%rip)
je     18de <E0000+0x77e>
jmp    191b <E0000+0x7bb>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x1,(%rax)
mov    0x2806(%rip),%rcx
mov    -0x30(%rbp),%rax
mov    %rcx,(%rax)
movsd  0x2787(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1ab0 <E0000+0x950>
jmp    191b <E0000+0x7bb>
lea    0x278e(%rip),%rdi
lea    0x279f(%rip),%rsi
lea    0x2730(%rip),%rdx
lea    0x2751(%rip),%rcx
call   1040 <dstzr@plt>
mov    -0x10(%rbp),%rax
movl   $0x0,(%rax)
jmp    1962 <E0000+0x802>
mov    -0x10(%rbp),%rax
cmpl   $0x1,(%rax)
je     195d <E0000+0x7fd>
jmp    19be <E0000+0x85e>
jmp    1962 <E0000+0x802>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%rdx
lea    0x2743(%rip),%rcx
lea    0x272c(%rip),%r8
lea    0x276d(%rip),%r9
lea    0x276e(%rip),%rax
mov    %rax,(%rsp)
call   1030 <dzror@plt>
mov    -0x10(%rbp),%rax
cmpl   $0x1,(%rax)
je     19a5 <E0000+0x845>
jmp    19b4 <E0000+0x854>
movl   $0x6,0x2729(%rip)
jmp    1a52 <E0000+0x8f2>
jmp    19b9 <E0000+0x859>
jmp    194b <E0000+0x7eb>
movsd  0x26f2(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movl   $0x0,(%rax)
jmp    1ab0 <E0000+0x950>
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x26a3(%rip)
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x266b(%rip)
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x264b(%rip)
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2663(%rip)
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2673(%rip)
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2623(%rip)
mov    0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x263b(%rip)
jmp    1ab0 <E0000+0x950>
mov    -0x10(%rbp),%rax
movl   $0x1,(%rax)
jmp    1ab0 <E0000+0x950>
mov    0x2671(%rip),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x48(%rbp)
sub    $0x5,%eax
ja     1aab <E0000+0x94b>
mov    -0x48(%rbp),%rax
lea    0x58c(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
jmp    128c <E0000+0x12c>
jmp    12bb <E0000+0x15b>
jmp    1450 <E0000+0x2f0>
jmp    1586 <E0000+0x426>
jmp    178e <E0000+0x62e>
jmp    19b9 <E0000+0x859>
jmp    1ab0 <E0000+0x950>
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x10,%rsp
cmp    $0x1,%edi
jne    11ef <E0000+0x8f>
mov    0x70(%rsp),%rax
mov    0x68(%rsp),%rcx
mov    0x60(%rsp),%r8
mov    0x58(%rsp),%rsi
mov    0x50(%rsp),%rdi
mov    0x48(%rsp),%rbx
mov    0x40(%rsp),%rdx
movsd  (%rcx),%xmm0
movsd  %xmm0,0x2ee7(%rip)
movsd  (%rdi),%xmm0
movsd  %xmm0,0x2ebb(%rip)
movsd  (%rdx),%xmm0
movsd  %xmm0,0x2e9f(%rip)
movsd  (%rsi),%xmm0
movsd  %xmm0,0x2eb3(%rip)
movsd  (%rax),%xmm0
movsd  %xmm0,0x2ec7(%rip)
movsd  (%rbx),%xmm0
movsd  %xmm0,0x2e83(%rip)
movsd  (%r8),%xmm0
movsd  %xmm0,0x2e96(%rip)
jmp    129d <E0000+0x13d>
mov    %rdx,%r14
mov    %rsi,%r13
mov    (%rsi),%eax
test   %eax,%eax
jle    1246 <E0000+0xe6>
mov    %rcx,%rbx
mov    0x2ec4(%rip),%ecx
add    $0xffffffff,%ecx
cmp    $0x5,%ecx
ja     129d <E0000+0x13d>
mov    %r9,%r15
mov    %r8,%r12
lea    0xdf3(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
movsd  (%rbx),%xmm0
movsd  %xmm0,0x2e3e(%rip)
movsd  0x2e2e(%rip),%xmm0
movsd  %xmm0,(%r14)
mov    $0x2,%eax
jmp    128f <E0000+0x12f>
movsd  0x2e3a(%rip),%xmm0
movsd  (%r14),%xmm1
ucomisd %xmm0,%xmm1
setb   %al
movsd  0x2e06(%rip),%xmm2
ucomisd %xmm1,%xmm2
setb   %cl
or     %al,%cl
movzbl %cl,%eax
mov    %rax,0x2e63(%rip)
cmp    $0x1,%al
je     16bf <E0000+0x55f>
movsd  %xmm1,0x2e33(%rip)
movsd  %xmm0,(%r14)
mov    $0x1,%eax
mov    %eax,0x2e33(%rip)
movl   $0x1,0x0(%r13)
add    $0x10,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret
movsd  (%rbx),%xmm0
movsd  0x2db9(%rip),%xmm1
xor    %eax,%eax
ucomisd %xmm1,%xmm0
seta   %al
mov    %rax,0x2e29(%rip)
xorpd  %xmm2,%xmm2
jbe    1574 <E0000+0x414>
ucomisd %xmm1,%xmm2
jae    1603 <E0000+0x4a3>
movl   $0xffffffff,0x0(%r13)
ff
movq   $0x1,(%r15)
movq   $0x1,(%r12)
jmp    129d <E0000+0x13d>
movsd  (%rbx),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    159a <E0000+0x43a>
jp     159a <E0000+0x43a>
movl   $0x0,0x0(%r13)
jmp    129d <E0000+0x13d>
movsd  (%rbx),%xmm0
xorpd  %xmm1,%xmm1
xor    %edx,%edx
ucomisd %xmm1,%xmm0
setae  %dl
xor    %eax,%eax
ucomisd %xmm0,%xmm1
setae  %al
cmpq   $0x0,0x2db8(%rip)
cmove  %eax,%edx
movzbl %dl,%esi
mov    %rsi,0x2d8b(%rip)
movsd  0x2d73(%rip),%xmm2
movsd  0x2d13(%rip),%xmm1
xor    %ecx,%ecx
ucomisd %xmm1,%xmm2
setae  %cl
mov    %rcx,0x2d93(%rip)
mov    %ecx,%eax
or     %dl,%al
movzbl %al,%eax
mov    %rax,0x2d65(%rip)
test   %al,%al
jne    13c4 <E0000+0x264>
movsd  0x2d19(%rip),%xmm0
mulsd  0x2d09(%rip),%xmm0
movsd  %xmm0,0x2d01(%rip)
movsd  %xmm2,0x2d11(%rip)
addsd  %xmm2,%xmm0
call   1070 <fifdmin1@plt>
movsd  %xmm0,0x2d18(%rip)
cmpq   $0x0,0x2d28(%rip)
je     15f4 <E0000+0x494>
mov    0x2d3b(%rip),%rcx
mov    0x2d0c(%rip),%rsi
test   %rcx,%rcx
je     14f3 <E0000+0x393>
test   %rsi,%rsi
jne    14f3 <E0000+0x393>
movl   $0xffffffff,0x0(%r13)
ff
movq   $0x0,(%r12)
xor    %eax,%eax
cmpq   $0x0,0x2d00(%rip)
sete   %al
mov    %rax,(%r15)
movsd  0x2c6a(%rip),%xmm0
movsd  %xmm0,(%r14)
jmp    129d <E0000+0x13d>
movsd  (%rbx),%xmm0
xorpd  %xmm1,%xmm1
xor    %edx,%edx
ucomisd %xmm0,%xmm1
setae  %dl
xor    %eax,%eax
ucomisd %xmm1,%xmm0
setae  %al
cmpq   $0x0,0x2cc6(%rip)
cmove  %eax,%edx
movzbl %dl,%esi
mov    %rsi,0x2c99(%rip)
movsd  0x2c69(%rip),%xmm0
movsd  0x2c41(%rip),%xmm1
xor    %ecx,%ecx
ucomisd %xmm0,%xmm1
setae  %cl
mov    %rcx,0x2ca1(%rip)
mov    %ecx,%eax
or     %dl,%al
movzbl %al,%eax
mov    %rax,0x2c73(%rip)
test   %al,%al
jne    14b6 <E0000+0x356>
movsd  0x2c27(%rip),%xmm2
mulsd  0x2c17(%rip),%xmm2
movsd  %xmm2,0x2c0f(%rip)
movsd  %xmm0,0x2c37(%rip)
subsd  %xmm2,%xmm0
call   1060 <fifdmax1@plt>
movsd  %xmm0,0x2c0e(%rip)
cmpq   $0x0,0x2c36(%rip)
je     16b0 <E0000+0x550>
mov    0x2c49(%rip),%rcx
mov    0x2c1a(%rip),%rsi
test   %rcx,%rcx
je     14f3 <E0000+0x393>
test   %rsi,%rsi
jne    14f3 <E0000+0x393>
movl   $0xffffffff,0x0(%r13)
ff
movq   $0x1,(%r12)
mov    0x2c19(%rip),%rax
mov    %rax,(%r15)
movsd  0x2ba6(%rip),%xmm0
movsd  %xmm0,(%r14)
jmp    129d <E0000+0x13d>
cmp    $0x1,%eax
je     151c <E0000+0x3bc>
jmp    155a <E0000+0x3fa>
lea    0x2bae(%rip),%rdi
lea    0x2bbf(%rip),%rsi
lea    0x2b58(%rip),%rdx
lea    0x2b71(%rip),%rcx
call   1040 <dstzr@plt>
movl   $0x0,0x0(%r13)
lea    0x2bc5(%rip),%rax
mov    %rax,(%rsp)
lea    0x2b82(%rip),%rcx
lea    0x2b6b(%rip),%r8
lea    0x2ba4(%rip),%r9
mov    %r13,%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
call   1030 <dzror@plt>
mov    $0x6,%eax
cmpl   $0x1,0x0(%r13)
je     128f <E0000+0x12f>
movsd  0x2b4e(%rip),%xmm0
movsd  %xmm0,(%r14)
movl   $0x0,0x0(%r13)
jmp    129d <E0000+0x13d>
ucomisd %xmm2,%xmm1
jae    1625 <E0000+0x4c5>
movl   $0xffffffff,0x0(%r13)
ff
movq   $0x1,(%r12)
movq   $0x0,(%r15)
jmp    129d <E0000+0x13d>
mov    0x2b4f(%rip),%rax
test   %rax,%rax
je     15b0 <E0000+0x450>
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
ja     15c7 <E0000+0x467>
test   %rax,%rax
jne    1683 <E0000+0x523>
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1683 <E0000+0x523>
movsd  0x2ae9(%rip),%xmm0
movsd  %xmm0,0x2ad1(%rip)
addsd  0x2ab1(%rip),%xmm0
movsd  0x2a81(%rip),%xmm1
call   1070 <fifdmin1@plt>
movsd  %xmm0,0x2acc(%rip)
movsd  %xmm0,(%r14)
mov    $0x4,%eax
jmp    128f <E0000+0x12f>
ucomisd %xmm2,%xmm0
jae    1647 <E0000+0x4e7>
movl   $0xffffffff,0x0(%r13)
ff
movq   $0x0,(%r15)
movq   $0x0,(%r12)
jmp    129d <E0000+0x13d>
ucomisd %xmm0,%xmm2
jae    1647 <E0000+0x4e7>
movl   $0xffffffff,0x0(%r13)
ff
movq   $0x0,(%r12)
movq   $0x1,(%r15)
jmp    129d <E0000+0x13d>
movsd  0x2a69(%rip),%xmm1
movsd  %xmm1,(%r14)
movsd  0x29fc(%rip),%xmm0
andpd  0x99c(%rip),%xmm1
mulsd  0x2a0c(%rip),%xmm1
call   1060 <fifdmax1@plt>
movsd  %xmm0,0x2a17(%rip)
mov    $0x3,%eax
jmp    128f <E0000+0x12f>
movsd  0x2a2d(%rip),%xmm0
movsd  %xmm0,0x2a2d(%rip)
subsd  0x29f5(%rip),%xmm0
movsd  0x29e5(%rip),%xmm1
call   1060 <fifdmax1@plt>
movsd  %xmm0,0x29f8(%rip)
movsd  %xmm0,(%r14)
mov    $0x5,%eax
jmp    128f <E0000+0x12f>
mov    0x291a(%rip),%rax
mov    (%rax),%edi
lea    0x959(%rip),%rsi
call   1050 <fprintf@plt>
mov    0x28fd(%rip),%rax
mov    (%rax),%edi
call   1080 <exit@plt>

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

LLVM IR (-O2):
@E0000.absstp = internal unnamed_addr global double 0.000000e+00
@E0000.abstol = internal global double 0.000000e+00
@E0000.big = internal unnamed_addr global double 0.000000e+00
@E0000.fsmall = internal unnamed_addr global double 0.000000e+00
@E0000.relstp = internal unnamed_addr global double 0.000000e+00
@E0000.reltol = internal global double 0.000000e+00
@E0000.small = internal unnamed_addr global double 0.000000e+00
@E0000.step = internal unnamed_addr global double 0.000000e+00
@E0000.stpmul = internal unnamed_addr global double 0.000000e+00
@E0000.xhi = internal global double 0.000000e+00
@E0000.xlb = internal global double 0.000000e+00
@E0000.xlo = internal global double 0.000000e+00
@E0000.xsave = internal unnamed_addr global double 0.000000e+00
@E0000.xub = internal global double 0.000000e+00
@E0000.i99999 = internal unnamed_addr global i32 0
@E0000.qbdd = internal unnamed_addr global i64 0
@E0000.qcond = internal unnamed_addr global i64 0
@E0000.qdum1 = internal global i64 0
@E0000.qdum2 = internal global i64 0
@E0000.qincr = internal unnamed_addr global i64 0
@E0000.qlim = internal unnamed_addr global i64 0
@stderr = global i32 0
@.str = [37 x i8] c" SMALL, X, BIG not monotone in INVR\0A\00"
@EXIT_FAILURE = global i32 0
define void @E0000(i32 %0, i32* %1, double* %2, double* %3, i64* nocapture writeonly %4, i64* nocapture writeonly %5, double* nocapture %6, double* nocapture %7, double* nocapture %8, double* nocapture %9, double* nocapture %10, double* nocapture %11, double* nocapture %12) {
%14 = icmp eq i32 %0, 1
br i1 %14, label %129, label %15
15: ; preds = %13
%16 = load i32, i32* %1
%17 = icmp sgt i32 %16, 0
br i1 %17, label %139, label %18
18: ; preds = %15
%19 = load double, double* @E0000.small
%20 = load double, double* %2
%21 = fcmp ugt double %19, %20
%22 = load double, double* @E0000.big
%23 = fcmp ugt double %20, %22
%24 = select i1 %21, i1 true, i1 %23
%25 = zext i1 %24 to i64
store i64 %25, i64* @E0000.qcond
br i1 %24, label %26, label %31
26: ; preds = %18
%27 = load i32, i32* @stderr
%28 = tail call i32 @fprintf(i32 %27, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str, i64 0, i64 0))
%29 = load i32, i32* @EXIT_FAILURE
%30 = tail call i32 @exit(i32 %29)
unreachable
31: ; preds = %18
store double %20, double* @E0000.xsave
store double %19, double* %2
br label %137
32: ; preds = %144
%33 = fcmp ugt double %146, 0.000000e+00
br i1 %33, label %34, label %35
34: ; preds = %32
store i32 -1, i32* %1
store i64 1, i64* %5
store i64 1, i64* %4
br label %180
35: ; preds = %32
%36 = fcmp ult double %145, 0.000000e+00
br i1 %36, label %37, label %44
37: ; preds = %35
store i32 -1, i32* %1
store i64 0, i64* %5
store i64 0, i64* %4
br label %180
38: ; preds = %144
%39 = fcmp ult double %146, 0.000000e+00
br i1 %39, label %40, label %41
40: ; preds = %38
store i32 -1, i32* %1
store i64 1, i64* %4
store i64 0, i64* %5
br label %180
41: ; preds = %38
%42 = fcmp ugt double %145, 0.000000e+00
br i1 %42, label %43, label %44
43: ; preds = %41
store i32 -1, i32* %1
store i64 0, i64* %4
store i64 1, i64* %5
br label %180
44: ; preds = %35, %41
%45 = load double, double* @E0000.xsave
store double %45, double* %2
%46 = load double, double* @E0000.absstp
%47 = load double, double* @E0000.relstp
%48 = tail call double @llvm.fabs.f64(double %45)
%49 = fmul double %48, %47
%50 = tail call double @fifdmax1(double %46, double %49)
store double %50, double* @E0000.step
br label %137
51: ; preds = %149
store i32 0, i32* %1
br label %180
52: ; preds = %149
%53 = load i64, i64* @E0000.qincr
%54 = icmp ne i64 %53, 0
%55 = fcmp olt double %150, 0.000000e+00
%56 = select i1 %54, i1 %55, i1 false
br i1 %56, label %61, label %57
57: ; preds = %52
%58 = fcmp ogt double %150, 0.000000e+00
%59 = xor i1 %54, true
%60 = select i1 %59, i1 %58, i1 false
br i1 %60, label %61, label %91
61: ; preds = %52, %57
%62 = load double, double* @E0000.xsave
store double %62, double* @E0000.xlb
%63 = load double, double* @E0000.step
%64 = fadd double %62, %63
%65 = load double, double* @E0000.big
%66 = tail call double @fifdmin1(double %64, double %65)
store double %66, double* @E0000.xub
br label %67
67: ; preds = %69, %61
%68 = phi double [ %74, %69 ], [ %66, %61 ]
store double %68, double* %2
br label %137
69: ; preds = %152
%70 = load double, double* @E0000.stpmul
%71 = load double, double* @E0000.step
%72 = fmul double %70, %71
store double %72, double* @E0000.step
store double %160, double* @E0000.xlb
%73 = fadd double %160, %72
%74 = tail call double @fifdmin1(double %73, double %161)
store double %74, double* @E0000.xub
%75 = load i64, i64* @E0000.qcond
%76 = icmp eq i64 %75, 0
br i1 %76, label %67, label %77
77: ; preds = %69
%78 = load i64, i64* @E0000.qlim
%79 = load i64, i64* @E0000.qbdd
br label %80
80: ; preds = %77, %152
%81 = phi i64 [ %79, %77 ], [ %159, %152 ]
%82 = phi i64 [ %78, %77 ], [ %163, %152 ]
%83 = icmp eq i64 %82, 0
%84 = icmp ne i64 %81, 0
%85 = select i1 %83, i1 true, i1 %84
br i1 %85, label %119, label %86
86: ; preds = %80
store i32 -1, i32* %1
store i64 0, i64* %4
%87 = load i64, i64* @E0000.qincr
%88 = icmp eq i64 %87, 0
%89 = zext i1 %88 to i64
store i64 %89, i64* %5
%90 = load double, double* @E0000.big
store double %90, double* %2
br label %180
91: ; preds = %57
%92 = load double, double* @E0000.xsave
store double %92, double* @E0000.xub
%93 = load double, double* @E0000.step
%94 = fsub double %92, %93
%95 = load double, double* @E0000.small
%96 = tail call double @fifdmax1(double %94, double %95)
store double %96, double* @E0000.xlb
br label %97
97: ; preds = %99, %91
%98 = phi double [ %104, %99 ], [ %96, %91 ]
store double %98, double* %2
br label %137
99: ; preds = %166
%100 = load double, double* @E0000.stpmul
%101 = load double, double* @E0000.step
%102 = fmul double %100, %101
store double %102, double* @E0000.step
store double %174, double* @E0000.xub
%103 = fsub double %174, %102
%104 = tail call double @fifdmax1(double %103, double %175)
store double %104, double* @E0000.xlb
%105 = load i64, i64* @E0000.qcond
%106 = icmp eq i64 %105, 0
br i1 %106, label %97, label %107
107: ; preds = %99
%108 = load i64, i64* @E0000.qlim
%109 = load i64, i64* @E0000.qbdd
br label %110
110: ; preds = %107, %166
%111 = phi i64 [ %109, %107 ], [ %173, %166 ]
%112 = phi i64 [ %108, %107 ], [ %177, %166 ]
%113 = icmp eq i64 %112, 0
%114 = icmp ne i64 %111, 0
%115 = select i1 %113, i1 true, i1 %114
br i1 %115, label %119, label %116
116: ; preds = %110
store i32 -1, i32* %1
store i64 1, i64* %4
%117 = load i64, i64* @E0000.qincr
store i64 %117, i64* %5
%118 = load double, double* @E0000.small
store double %118, double* %2
br label %180
119: ; preds = %80, %110
%120 = tail call i32 @dstzr(double* @E0000.xlb, double* @E0000.xub, double* @E0000.abstol, double* @E0000.reltol)
store i32 0, i32* %1
br label %121
121: ; preds = %125, %119
%122 = tail call i32 @dzror(i32* %1, double* %2, double* %3, double* @E0000.xlo, double* @E0000.xhi, i64* @E0000.qdum1, i64* @E0000.qdum2)
%123 = load i32, i32* %1
%124 = icmp eq i32 %123, 1
br i1 %124, label %137, label %127
125: ; preds = %139
%126 = icmp eq i32 %16, 1
br i1 %126, label %121, label %127
127: ; preds = %121, %125
%128 = load double, double* @E0000.xlo
store double %128, double* %2
store i32 0, i32* %1
br label %180
129: ; preds = %13
%130 = load double, double* %11
store double %130, double* @E0000.small
%131 = load double, double* %8
store double %131, double* @E0000.big
%132 = load double, double* %6
store double %132, double* @E0000.absstp
%133 = load double, double* %9
store double %133, double* @E0000.relstp
%134 = load double, double* %12
store double %134, double* @E0000.stpmul
%135 = load double, double* %7
store double %135, double* @E0000.abstol
%136 = load double, double* %10
store double %136, double* @E0000.reltol
br label %180
137: ; preds = %121, %97, %67, %44, %141, %31
%138 = phi i32 [ 5, %97 ], [ 4, %67 ], [ 3, %44 ], [ 2, %141 ], [ 1, %31 ], [ 6, %121 ]
store i32 %138, i32* @E0000.i99999
store i32 1, i32* %1
br label %180
139: ; preds = %15
%140 = load i32, i32* @E0000.i99999
switch i32 %140, label %180 [
i32 1, label %141
i32 2, label %144
i32 3, label %149
i32 4, label %152
i32 5, label %166
i32 6, label %125
]
141: ; preds = %139
%142 = load double, double* %3
store double %142, double* @E0000.fsmall
%143 = load double, double* @E0000.big
store double %143, double* %2
br label %137
144: ; preds = %139
%145 = load double, double* %3
%146 = load double, double* @E0000.fsmall
%147 = fcmp ogt double %145, %146
%148 = zext i1 %147 to i64
store i64 %148, i64* @E0000.qincr
br i1 %147, label %32, label %38
149: ; preds = %139
%150 = load double, double* %3
%151 = fcmp oeq double %150, 0.000000e+00
br i1 %151, label %51, label %52
152: ; preds = %139
%153 = load double, double* %3
%154 = load i64, i64* @E0000.qincr
%155 = icmp eq i64 %154, 0
%156 = fcmp oge double %153, 0.000000e+00
%157 = fcmp ole double %153, 0.000000e+00
%158 = select i1 %155, i1 %157, i1 %156
%159 = zext i1 %158 to i64
store i64 %159, i64* @E0000.qbdd
%160 = load double, double* @E0000.xub
%161 = load double, double* @E0000.big
%162 = fcmp oge double %160, %161
%163 = zext i1 %162 to i64
store i64 %163, i64* @E0000.qlim
%164 = select i1 %158, i1 true, i1 %162
%165 = zext i1 %164 to i64
store i64 %165, i64* @E0000.qcond
br i1 %164, label %80, label %69
166: ; preds = %139
%167 = load double, double* %3
%168 = load i64, i64* @E0000.qincr
%169 = icmp eq i64 %168, 0
%170 = fcmp ole double %167, 0.000000e+00
%171 = fcmp oge double %167, 0.000000e+00
%172 = select i1 %169, i1 %171, i1 %170
%173 = zext i1 %172 to i64
store i64 %173, i64* @E0000.qbdd
%174 = load double, double* @E0000.xlb
%175 = load double, double* @E0000.small
%176 = fcmp ole double %174, %175
%177 = zext i1 %176 to i64
store i64 %177, i64* @E0000.qlim
%178 = select i1 %172, i1 true, i1 %176
%179 = zext i1 %178 to i64
store i64 %179, i64* @E0000.qcond
br i1 %178, label %110, label %99
180: ; preds = %139, %34, %37, %40, %43, %51, %86, %116, %127, %129, %137
ret void
}