#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*/ dstzr(double *, double *, double *, double *);
int /*<<< orphan*/ dzror(int *, double *, double *, double *, double *,
                         unsigned long *, unsigned long *);
double fabs(double);
double fifdmax1(double, double);
double fifdmin1(double, double);
int /*<<< orphan*/ ftnstop(char *);
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)
    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 = 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     11af <E0000+0x5f>
jmp    119e <E0000+0x4e>
mov    -0x34(%rbp),%eax
sub    $0x1,%eax
je     11b4 <E0000+0x64>
jmp    11b9 <E0000+0x69>
jmp    11be <E0000+0x6e>
jmp    19b6 <E0000+0x866>
jmp    11be <E0000+0x6e>
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
jle    11d0 <E0000+0x80>
jmp    1a3a <E0000+0x8ea>
movsd  0x2eb0(%rip),%xmm1
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
xor    %eax,%eax
ucomisd %xmm1,%xmm0
mov    %al,-0x35(%rbp)
jb     1209 <E0000+0xb9>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm1
movsd  0x2e61(%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,0x2ec4(%rip)
cmpq   $0x0,0x2ebc(%rip)
je     1236 <E0000+0xe6>
lea    0xdf7(%rip),%rdi
call   1070 <ftnstop@plt>
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2e72(%rip)
movsd  0x2e3a(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x1,0x2e70(%rip)
jmp    1a2b <E0000+0x8db>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2dfb(%rip)
movsd  0x2de3(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x2,0x2e41(%rip)
jmp    1a2b <E0000+0x8db>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2dc4(%rip)
movsd  0x2dbc(%rip),%xmm0
ucomisd 0x2dbc(%rip),%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,0x2e33(%rip)
cmpq   $0x0,0x2e2b(%rip)
jne    12d8 <E0000+0x188>
jmp    1357 <E0000+0x207>
xorps  %xmm0,%xmm0
ucomisd 0x2d8d(%rip),%xmm0
jb     12ee <E0000+0x19e>
jmp    1313 <E0000+0x1c3>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x30(%rbp),%rax
movq   $0x1,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x1,(%rax)
jmp    1a89 <E0000+0x939>
movsd  0x2d4d(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     132d <E0000+0x1dd>
jmp    1352 <E0000+0x202>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x30(%rbp),%rax
movq   $0x0,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x0,(%rax)
jmp    1a89 <E0000+0x939>
jmp    13d1 <E0000+0x281>
movsd  0x2d11(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1371 <E0000+0x221>
jmp    1396 <E0000+0x246>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x1,(%rax)
mov    -0x30(%rbp),%rax
movq   $0x0,(%rax)
jmp    1a89 <E0000+0x939>
xorps  %xmm0,%xmm0
ucomisd 0x2cc7(%rip),%xmm0
jb     13ac <E0000+0x25c>
jmp    13d6 <E0000+0x286>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x0,(%rax)
mov    -0x30(%rbp),%rax
movq   $0x1,(%rax)
jmp    1a89 <E0000+0x939>
jmp    13d6 <E0000+0x286>
movsd  0x2cda(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  0x2c62(%rip),%xmm0
movsd  0x2c82(%rip),%xmm1
mov    -0x18(%rbp),%rax
movsd  (%rax),%xmm2
movaps 0xbfb(%rip),%xmm3
pand   %xmm3,%xmm2
mulsd  %xmm2,%xmm1
call   1060 <fifdmax1@plt>
movsd  %xmm0,0x2c76(%rip)
movl   $0x3,0x2cac(%rip)
jmp    1a2b <E0000+0x8db>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2c8f(%rip)
movsd  0x2c87(%rip),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1459 <E0000+0x309>
jp     1459 <E0000+0x309>
jmp    145e <E0000+0x30e>
jmp    1478 <E0000+0x328>
mov    -0x10(%rbp),%rax
movl   $0x0,(%rax)
movq   $0x1,0x2c95(%rip)
jmp    1a89 <E0000+0x939>
cmpq   $0x0,0x2c78(%rip)
je     149c <E0000+0x34c>
mov    $0x1,%al
xorps  %xmm0,%xmm0
ucomisd 0x2c35(%rip),%xmm0
mov    %al,-0x36(%rbp)
ja     14ca <E0000+0x37a>
xor    %eax,%eax
cmpq   $0x0,0x2c52(%rip)
mov    %al,-0x37(%rbp)
jne    14c4 <E0000+0x374>
movsd  0x2c11(%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,0x2c35(%rip)
cmpq   $0x0,0x2c2d(%rip)
jne    14ee <E0000+0x39e>
jmp    16f6 <E0000+0x5a6>
movsd  0x2bc2(%rip),%xmm0
movsd  %xmm0,0x2baa(%rip)
movsd  0x2ba2(%rip),%xmm0
addsd  0x2b82(%rip),%xmm0
movsd  0x2b4a(%rip),%xmm1
call   1050 <fifdmin1@plt>
movsd  %xmm0,0x2b9d(%rip)
jmp    1540 <E0000+0x3f0>
cmpq   $0x0,0x2bb0(%rip)
je     153b <E0000+0x3eb>
jmp    168a <E0000+0x53a>
jmp    1540 <E0000+0x3f0>
movsd  0x2b78(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x4,0x2b76(%rip)
jmp    1a2b <E0000+0x8db>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2b59(%rip)
cmpq   $0x0,0x2b81(%rip)
je     1597 <E0000+0x447>
movsd  0x2b43(%rip),%xmm0
mov    $0x1,%al
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
mov    %al,-0x38(%rbp)
jae    15c1 <E0000+0x471>
xor    %eax,%eax
cmpq   $0x0,0x2b57(%rip)
mov    %al,-0x39(%rbp)
jne    15bb <E0000+0x46b>
xorps  %xmm0,%xmm0
ucomisd 0x2b13(%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,0x2b06(%rip)
movsd  0x2ae6(%rip),%xmm0
ucomisd 0x2a7e(%rip),%xmm0
setae  %al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,0x2b0d(%rip)
mov    $0x1,%al
cmpq   $0x0,0x2adb(%rip)
mov    %al,-0x3a(%rbp)
jne    1614 <E0000+0x4c4>
cmpq   $0x0,0x2af2(%rip)
setne  %al
mov    %al,-0x3a(%rbp)
mov    -0x3a(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,0x2abb(%rip)
cmpq   $0x0,0x2ab3(%rip)
je     1638 <E0000+0x4e8>
jmp    1685 <E0000+0x535>
movsd  0x2a58(%rip),%xmm0
mulsd  0x2a48(%rip),%xmm0
movsd  %xmm0,0x2a40(%rip)
movsd  0x2a68(%rip),%xmm0
movsd  %xmm0,0x2a48(%rip)
movsd  0x2a40(%rip),%xmm0
addsd  0x2a20(%rip),%xmm0
movsd  0x29e8(%rip),%xmm1
call   1050 <fifdmin1@plt>
movsd  %xmm0,0x2a3b(%rip)
jmp    1528 <E0000+0x3d8>
cmpq   $0x0,0x2a6e(%rip)
je     16a6 <E0000+0x556>
cmpq   $0x0,0x2a38(%rip)
je     16ab <E0000+0x55b>
jmp    16f1 <E0000+0x5a1>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x0,(%rax)
cmpq   $0x0,0x2a30(%rip)
setne  %al
xor    $0xff,%al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rcx
mov    -0x30(%rbp),%rax
mov    %rcx,(%rax)
movsd  0x297c(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1a89 <E0000+0x939>
jmp    18ef <E0000+0x79f>
movsd  0x29ba(%rip),%xmm0
movsd  %xmm0,0x29ba(%rip)
movsd  0x29b2(%rip),%xmm0
subsd  0x297a(%rip),%xmm0
movsd  0x296a(%rip),%xmm1
call   1060 <fifdmax1@plt>
movsd  %xmm0,0x297d(%rip)
jmp    1748 <E0000+0x5f8>
cmpq   $0x0,0x29a8(%rip)
je     1743 <E0000+0x5f3>
jmp    1896 <E0000+0x746>
jmp    1748 <E0000+0x5f8>
movsd  0x2958(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x5,0x296e(%rip)
jmp    1a2b <E0000+0x8db>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2951(%rip)
cmpq   $0x0,0x2979(%rip)
je     179b <E0000+0x64b>
mov    $0x1,%al
xorps  %xmm0,%xmm0
ucomisd 0x2936(%rip),%xmm0
mov    %al,-0x3b(%rbp)
jae    17c9 <E0000+0x679>
xor    %eax,%eax
cmpq   $0x0,0x2953(%rip)
mov    %al,-0x3c(%rbp)
jne    17c3 <E0000+0x673>
movsd  0x2912(%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,0x28fe(%rip)
movsd  0x28c6(%rip),%xmm1
movsd  0x289e(%rip),%xmm0
ucomisd %xmm1,%xmm0
setae  %al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,0x2901(%rip)
mov    $0x1,%al
cmpq   $0x0,0x28cf(%rip)
mov    %al,-0x3d(%rbp)
jne    1820 <E0000+0x6d0>
cmpq   $0x0,0x28e6(%rip)
setne  %al
mov    %al,-0x3d(%rbp)
mov    -0x3d(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,0x28af(%rip)
cmpq   $0x0,0x28a7(%rip)
je     1844 <E0000+0x6f4>
jmp    1891 <E0000+0x741>
movsd  0x284c(%rip),%xmm0
mulsd  0x283c(%rip),%xmm0
movsd  %xmm0,0x2834(%rip)
movsd  0x2844(%rip),%xmm0
movsd  %xmm0,0x2854(%rip)
movsd  0x284c(%rip),%xmm0
subsd  0x2814(%rip),%xmm0
movsd  0x2804(%rip),%xmm1
call   1060 <fifdmax1@plt>
movsd  %xmm0,0x2817(%rip)
jmp    1730 <E0000+0x5e0>
cmpq   $0x0,0x2862(%rip)
je     18b2 <E0000+0x762>
cmpq   $0x0,0x282c(%rip)
je     18b7 <E0000+0x767>
jmp    18f4 <E0000+0x7a4>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x28(%rbp),%rax
movq   $0x1,(%rax)
mov    0x2825(%rip),%rcx
mov    -0x30(%rbp),%rax
mov    %rcx,(%rax)
movsd  0x27a6(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1a89 <E0000+0x939>
jmp    18f4 <E0000+0x7a4>
lea    0x27ad(%rip),%rdi
lea    0x27be(%rip),%rsi
lea    0x274f(%rip),%rdx
lea    0x2770(%rip),%rcx
call   1040 <dstzr@plt>
mov    -0x10(%rbp),%rax
movl   $0x0,(%rax)
jmp    193b <E0000+0x7eb>
mov    -0x10(%rbp),%rax
cmpl   $0x1,(%rax)
je     1936 <E0000+0x7e6>
jmp    1997 <E0000+0x847>
jmp    193b <E0000+0x7eb>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%rdx
lea    0x2762(%rip),%rcx
lea    0x274b(%rip),%r8
lea    0x278c(%rip),%r9
lea    0x278d(%rip),%rax
mov    %rax,(%rsp)
call   1030 <dzror@plt>
mov    -0x10(%rbp),%rax
cmpl   $0x1,(%rax)
je     197e <E0000+0x82e>
jmp    198d <E0000+0x83d>
movl   $0x6,0x2748(%rip)
jmp    1a2b <E0000+0x8db>
jmp    1992 <E0000+0x842>
jmp    1924 <E0000+0x7d4>
movsd  0x2711(%rip),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x10(%rbp),%rax
movl   $0x0,(%rax)
jmp    1a89 <E0000+0x939>
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x26c2(%rip)
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x268a(%rip)
mov    0x10(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x266a(%rip)
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2682(%rip)
mov    0x40(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2692(%rip)
mov    0x18(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x2642(%rip)
mov    0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,0x265a(%rip)
jmp    1a89 <E0000+0x939>
mov    -0x10(%rbp),%rax
movl   $0x1,(%rax)
jmp    1a89 <E0000+0x939>
mov    0x2690(%rip),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x48(%rbp)
sub    $0x5,%eax
ja     1a84 <E0000+0x934>
mov    -0x48(%rbp),%rax
lea    0x5b3(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
jmp    1265 <E0000+0x115>
jmp    1294 <E0000+0x144>
jmp    1429 <E0000+0x2d9>
jmp    155f <E0000+0x40f>
jmp    1767 <E0000+0x617>
jmp    1992 <E0000+0x842>
jmp    1a89 <E0000+0x939>
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    11df <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,0x2eef(%rip)
movsd  (%rdi),%xmm0
movsd  %xmm0,0x2ec3(%rip)
movsd  (%rdx),%xmm0
movsd  %xmm0,0x2ea7(%rip)
movsd  (%rsi),%xmm0
movsd  %xmm0,0x2ebb(%rip)
movsd  (%rax),%xmm0
movsd  %xmm0,0x2ecf(%rip)
movsd  (%rbx),%xmm0
movsd  %xmm0,0x2e8b(%rip)
movsd  (%r8),%xmm0
movsd  %xmm0,0x2e9e(%rip)
jmp    12a2 <E0000+0x152>
mov    %rdx,%r14
mov    %rsi,%r13
mov    (%rsi),%eax
test   %eax,%eax
jle    1236 <E0000+0xe6>
mov    %rcx,%rbx
mov    0x2ecc(%rip),%ecx
add    $0xffffffff,%ecx
cmp    $0x5,%ecx
ja     12a2 <E0000+0x152>
mov    %r9,%r15
mov    %r8,%r12
lea    0xe03(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
movsd  (%rbx),%xmm0
movsd  %xmm0,0x2e46(%rip)
movsd  0x2e36(%rip),%xmm0
movsd  %xmm0,(%r14)
mov    $0x2,%eax
jmp    1294 <E0000+0x144>
movsd  0x2e42(%rip),%xmm0
movsd  (%r14),%xmm1
ucomisd %xmm0,%xmm1
setb   %al
movsd  0x2e0e(%rip),%xmm2
ucomisd %xmm1,%xmm2
setb   %cl
or     %al,%cl
movzbl %cl,%eax
mov    %rax,0x2e6b(%rip)
cmp    $0x1,%al
jne    1282 <E0000+0x132>
lea    0xdb8(%rip),%rdi
call   1070 <ftnstop@plt>
movsd  (%r14),%xmm1
movsd  0x2dfe(%rip),%xmm0
movsd  %xmm1,0x2e26(%rip)
movsd  %xmm0,(%r14)
mov    $0x1,%eax
mov    %eax,0x2e26(%rip)
movl   $0x1,0x0(%r13)
add    $0x10,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret
movsd  (%rbx),%xmm0
movsd  0x2dac(%rip),%xmm1
xor    %eax,%eax
ucomisd %xmm1,%xmm0
seta   %al
mov    %rax,0x2e1c(%rip)
xorpd  %xmm2,%xmm2
jbe    1579 <E0000+0x429>
ucomisd %xmm1,%xmm2
jae    1608 <E0000+0x4b8>
movl   $0xffffffff,0x0(%r13)
ff
movq   $0x1,(%r15)
movq   $0x1,(%r12)
jmp    12a2 <E0000+0x152>
movsd  (%rbx),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    159f <E0000+0x44f>
jp     159f <E0000+0x44f>
movl   $0x0,0x0(%r13)
jmp    12a2 <E0000+0x152>
movsd  (%rbx),%xmm0
xorpd  %xmm1,%xmm1
xor    %edx,%edx
ucomisd %xmm1,%xmm0
setae  %dl
xor    %eax,%eax
ucomisd %xmm0,%xmm1
setae  %al
cmpq   $0x0,0x2dab(%rip)
cmove  %eax,%edx
movzbl %dl,%esi
mov    %rsi,0x2d7e(%rip)
movsd  0x2d66(%rip),%xmm2
movsd  0x2d06(%rip),%xmm1
xor    %ecx,%ecx
ucomisd %xmm1,%xmm2
setae  %cl
mov    %rcx,0x2d86(%rip)
mov    %ecx,%eax
or     %dl,%al
movzbl %al,%eax
mov    %rax,0x2d58(%rip)
test   %al,%al
jne    13c9 <E0000+0x279>
movsd  0x2d0c(%rip),%xmm0
mulsd  0x2cfc(%rip),%xmm0
movsd  %xmm0,0x2cf4(%rip)
movsd  %xmm2,0x2d04(%rip)
addsd  %xmm2,%xmm0
call   1060 <fifdmin1@plt>
movsd  %xmm0,0x2d0b(%rip)
cmpq   $0x0,0x2d1b(%rip)
je     15f9 <E0000+0x4a9>
mov    0x2d2e(%rip),%rcx
mov    0x2cff(%rip),%rsi
test   %rcx,%rcx
je     14f8 <E0000+0x3a8>
test   %rsi,%rsi
jne    14f8 <E0000+0x3a8>
movl   $0xffffffff,0x0(%r13)
ff
movq   $0x0,(%r12)
xor    %eax,%eax
cmpq   $0x0,0x2cf3(%rip)
sete   %al
mov    %rax,(%r15)
movsd  0x2c5d(%rip),%xmm0
movsd  %xmm0,(%r14)
jmp    12a2 <E0000+0x152>
movsd  (%rbx),%xmm0
xorpd  %xmm1,%xmm1
xor    %edx,%edx
ucomisd %xmm0,%xmm1
setae  %dl
xor    %eax,%eax
ucomisd %xmm1,%xmm0
setae  %al
cmpq   $0x0,0x2cb9(%rip)
cmove  %eax,%edx
movzbl %dl,%esi
mov    %rsi,0x2c8c(%rip)
movsd  0x2c5c(%rip),%xmm0
movsd  0x2c34(%rip),%xmm1
xor    %ecx,%ecx
ucomisd %xmm0,%xmm1
setae  %cl
mov    %rcx,0x2c94(%rip)
mov    %ecx,%eax
or     %dl,%al
movzbl %al,%eax
mov    %rax,0x2c66(%rip)
test   %al,%al
jne    14bb <E0000+0x36b>
movsd  0x2c1a(%rip),%xmm2
mulsd  0x2c0a(%rip),%xmm2
movsd  %xmm2,0x2c02(%rip)
movsd  %xmm0,0x2c2a(%rip)
subsd  %xmm2,%xmm0
call   1050 <fifdmax1@plt>
movsd  %xmm0,0x2c01(%rip)
cmpq   $0x0,0x2c29(%rip)
je     16b5 <E0000+0x565>
mov    0x2c3c(%rip),%rcx
mov    0x2c0d(%rip),%rsi
test   %rcx,%rcx
je     14f8 <E0000+0x3a8>
test   %rsi,%rsi
jne    14f8 <E0000+0x3a8>
movl   $0xffffffff,0x0(%r13)
ff
movq   $0x1,(%r12)
mov    0x2c0c(%rip),%rax
mov    %rax,(%r15)
movsd  0x2b99(%rip),%xmm0
movsd  %xmm0,(%r14)
jmp    12a2 <E0000+0x152>
cmp    $0x1,%eax
je     1521 <E0000+0x3d1>
jmp    155f <E0000+0x40f>
lea    0x2ba1(%rip),%rdi
lea    0x2bb2(%rip),%rsi
lea    0x2b4b(%rip),%rdx
lea    0x2b64(%rip),%rcx
call   1040 <dstzr@plt>
movl   $0x0,0x0(%r13)
lea    0x2bb8(%rip),%rax
mov    %rax,(%rsp)
lea    0x2b75(%rip),%rcx
lea    0x2b5e(%rip),%r8
lea    0x2b97(%rip),%r9
mov    %r13,%rdi
mov    %r14,%rsi
mov    %rbx,%rdx
call   1030 <dzror@plt>
mov    $0x6,%eax
cmpl   $0x1,0x0(%r13)
je     1294 <E0000+0x144>
movsd  0x2b41(%rip),%xmm0
movsd  %xmm0,(%r14)
movl   $0x0,0x0(%r13)
jmp    12a2 <E0000+0x152>
ucomisd %xmm2,%xmm1
jae    162a <E0000+0x4da>
movl   $0xffffffff,0x0(%r13)
ff
movq   $0x1,(%r12)
movq   $0x0,(%r15)
jmp    12a2 <E0000+0x152>
mov    0x2b42(%rip),%rax
test   %rax,%rax
je     15b5 <E0000+0x465>
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
ja     15cc <E0000+0x47c>
test   %rax,%rax
jne    1688 <E0000+0x538>
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    1688 <E0000+0x538>
movsd  0x2adc(%rip),%xmm0
movsd  %xmm0,0x2ac4(%rip)
addsd  0x2aa4(%rip),%xmm0
movsd  0x2a74(%rip),%xmm1
call   1060 <fifdmin1@plt>
movsd  %xmm0,0x2abf(%rip)
movsd  %xmm0,(%r14)
mov    $0x4,%eax
jmp    1294 <E0000+0x144>
ucomisd %xmm2,%xmm0
jae    164c <E0000+0x4fc>
movl   $0xffffffff,0x0(%r13)
ff
movq   $0x0,(%r15)
movq   $0x0,(%r12)
jmp    12a2 <E0000+0x152>
ucomisd %xmm0,%xmm2
jae    164c <E0000+0x4fc>
movl   $0xffffffff,0x0(%r13)
ff
movq   $0x0,(%r12)
movq   $0x1,(%r15)
jmp    12a2 <E0000+0x152>
movsd  0x2a5c(%rip),%xmm1
movsd  %xmm1,(%r14)
movsd  0x29ef(%rip),%xmm0
andpd  0x997(%rip),%xmm1
mulsd  0x29ff(%rip),%xmm1
call   1050 <fifdmax1@plt>
movsd  %xmm0,0x2a0a(%rip)
mov    $0x3,%eax
jmp    1294 <E0000+0x144>
movsd  0x2a20(%rip),%xmm0
movsd  %xmm0,0x2a20(%rip)
subsd  0x29e8(%rip),%xmm0
movsd  0x29d8(%rip),%xmm1
call   1050 <fifdmax1@plt>
movsd  %xmm0,0x29eb(%rip)
movsd  %xmm0,(%r14)
mov    $0x5,%eax
jmp    1294 <E0000+0x144>

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