void cdflib_E0001(int IENTRY, int *status, double *x, double *fx, double *xlo,
                  double *xhi, unsigned long *qleft, unsigned long *qhi,
                  double *zabstl, double *zreltl, double *zxhi, double *zxlo) {
  double a = 0, abstol = 0, b = 0, c, d, fa = 0, fb = 0, fc = 0, fd, fda;
  double fdb, m, mb = 0, p, q, reltol = 0, tol, w = 0, xxhi = 0, xxlo = 0;
  int ext = 0, i99999 = 0;
  unsigned long first, qrzero;
  switch (IENTRY) {
  case 0:
    goto DZROR;
  case 1:
    goto DSTZR;
  }
DZROR:
  if (*status > 0) {
    goto S280;
  }
  *xlo = xxlo;
  *xhi = xxhi;
  b = *x = *xlo;
  i99999 = 1;
  goto S270;
S10:
  fb = *fx;
  *xlo = *xhi;
  a = *x = *xlo;
  i99999 = 2;
  goto S270;
S20:
  if (!(fb < 0.0e0)) {
    goto S40;
  }
  if (!(*fx < 0.0e0)) {
    goto S30;
  }
  *status = -1;
  *qleft = *fx < fb;
  *qhi = 0;
  return;
S40:
S30:
  if (!(fb > 0.0e0)) {
    goto S60;
  }
  if (!(*fx > 0.0e0)) {
    goto S50;
  }
  *status = -1;
  *qleft = *fx > fb;
  *qhi = 1;
  return;
S60:
S50:
  fa = *fx;
  first = 1;
S70:
  c = a;
  fc = fa;
  ext = 0;
S80:
  if (!(fabs(fc) < fabs(fb))) {
    goto S100;
  }
  if (!(c != a)) {
    goto S90;
  }
  d = a;
  fd = fa;
S90:
  a = b;
  fa = fb;
  *xlo = c;
  b = *xlo;
  fb = fc;
  c = a;
  fc = fa;
S100:
  tol = (0.5e0 * cdflib_fifdmax1(abstol, reltol * fabs((*xlo))));
  m = (c + b) * .5e0;
  mb = m - b;
  if (!(fabs(mb) > tol)) {
    goto S240;
  }
  if (!(ext > 3)) {
    goto S110;
  }
  w = mb;
  goto S190;
S110:
  tol = cdflib_fifdsign(tol, mb);
  p = (b - a) * fb;
  if (!first) {
    goto S120;
  }
  q = fa - fb;
  first = 0;
  goto S130;
S120:
  fdb = (fd - fb) / (d - b);
  fda = (fd - fa) / (d - a);
  p = fda * p;
  q = fdb * fa - fda * fb;
S130:
  if (!(p < 0.0e0)) {
    goto S140;
  }
  p = -p;
  q = -q;
S140:
  if (ext == 3) {
    p *= 2.0e0;
  }
  if (!(p * 1.0e0 == 0.0e0 || p <= q * tol)) {
    goto S150;
  }
  w = tol;
  goto S180;
S150:
  if (!(p < mb * q)) {
    goto S160;
  }
  w = p / q;
  goto S170;
S160:
  w = mb;
S190:
S180:
S170:
  d = a;
  fd = fa;
  a = b;
  fa = fb;
  b += w;
  *xlo = b;
  *x = *xlo;
  i99999 = 3;
  goto S270;
S200:
  fb = *fx;
  if (!(fc * fb >= 0.0e0)) {
    goto S210;
  }
  goto S70;
S210:
  if (!(w == mb)) {
    goto S220;
  }
  ext = 0;
  goto S230;
S220:
  ext += 1;
S230:
  goto S80;
S240:
  *xhi = c;
  qrzero = (fc >= 0.0e0 && fb <= 0.0e0) || (fc < 0.0e0 && fb >= 0.0e0);
  if (!qrzero) {
    goto S250;
  }
  *status = 0;
  goto S260;
S250:
  *status = -1;
S260:
  return;
DSTZR:
  xxlo = *zxlo;
  xxhi = *zxhi;
  abstol = *zabstl;
  reltol = *zreltl;
  return;
S270:
  *status = 1;
  return;
S280:
  switch ((int)i99999) {
  case 1:
    goto S10;
  case 2:
    goto S20;
  case 3:
    goto S200;
  default:
    break;
  }
}


x86 assembly (clang, -O0):
push   %rbp
mov    %rsp,%rbp
sub    $0x100,%rsp
mov    0x38(%rbp),%rax
mov    0x30(%rbp),%rax
mov    0x28(%rbp),%rax
mov    0x20(%rbp),%rax
mov    0x18(%rbp),%rax
mov    0x10(%rbp),%rax
mov    %edi,-0x4(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %rdx,-0x18(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    %r9,-0x30(%rbp)
movq   $0x0,-0x38(%rbp)
movq   $0x0,-0x40(%rbp)
movq   $0x0,-0x48(%rbp)
movq   $0x0,-0x60(%rbp)
movq   $0x0,-0x68(%rbp)
movq   $0x0,-0x70(%rbp)
movq   $0x0,-0x98(%rbp)
movq   $0x0,-0xb0(%rbp)
movq   $0x0,-0xc0(%rbp)
movq   $0x0,-0xc8(%rbp)
movq   $0x0,-0xd0(%rbp)
movl   $0x0,-0xd4(%rbp)
movl   $0x0,-0xd8(%rbp)
mov    -0x4(%rbp),%eax
mov    %eax,-0xec(%rbp)
test   %eax,%eax
je     11ff <cdflib_E0001+0xdf>
jmp    11eb <cdflib_E0001+0xcb>
mov    -0xec(%rbp),%eax
sub    $0x1,%eax
je     1204 <cdflib_E0001+0xe4>
jmp    1209 <cdflib_E0001+0xe9>
jmp    120e <cdflib_E0001+0xee>
jmp    18fa <cdflib_E0001+0x7da>
jmp    120e <cdflib_E0001+0xee>
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
jle    1220 <cdflib_E0001+0x100>
jmp    194b <cdflib_E0001+0x82b>
movsd  -0xd0(%rbp),%xmm0
ff
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0xc8(%rbp),%xmm0
ff
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  %xmm0,-0x48(%rbp)
movl   $0x1,-0xd8(%rbp)
jmp    193c <cdflib_E0001+0x81c>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  %xmm0,-0x38(%rbp)
movl   $0x2,-0xd8(%rbp)
jmp    193c <cdflib_E0001+0x81c>
xorps  %xmm0,%xmm0
ucomisd -0x68(%rbp),%xmm0
ja     12b8 <cdflib_E0001+0x198>
jmp    130b <cdflib_E0001+0x1eb>
mov    -0x20(%rbp),%rax
xorps  %xmm0,%xmm0
ucomisd (%rax),%xmm0
ja     12ce <cdflib_E0001+0x1ae>
jmp    1310 <cdflib_E0001+0x1f0>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm1
movsd  -0x68(%rbp),%xmm0
ucomisd %xmm1,%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rcx
mov    0x10(%rbp),%rax
mov    %rcx,(%rax)
mov    0x18(%rbp),%rax
movq   $0x0,(%rax)
jmp    19a1 <cdflib_E0001+0x881>
jmp    1310 <cdflib_E0001+0x1f0>
movsd  -0x68(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
ja     1327 <cdflib_E0001+0x207>
jmp    137a <cdflib_E0001+0x25a>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
ja     1341 <cdflib_E0001+0x221>
jmp    137f <cdflib_E0001+0x25f>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
ucomisd -0x68(%rbp),%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
movslq %eax,%rcx
mov    0x10(%rbp),%rax
mov    %rcx,(%rax)
mov    0x18(%rbp),%rax
movq   $0x1,(%rax)
jmp    19a1 <cdflib_E0001+0x881>
jmp    137f <cdflib_E0001+0x25f>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x60(%rbp)
movq   $0x1,-0xe0(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movl   $0x0,-0xd4(%rbp)
movsd  -0x70(%rbp),%xmm1
movaps 0xc3f(%rip),%xmm0
pand   %xmm0,%xmm1
movsd  -0x68(%rbp),%xmm0
movaps 0xc2f(%rip),%xmm2
pand   %xmm2,%xmm0
ucomisd %xmm1,%xmm0
ja     13e4 <cdflib_E0001+0x2c4>
jmp    145f <cdflib_E0001+0x33f>
movsd  -0x50(%rbp),%xmm0
ucomisd -0x38(%rbp),%xmm0
jne    13ff <cdflib_E0001+0x2df>
jp     13ff <cdflib_E0001+0x2df>
jmp    1413 <cdflib_E0001+0x2f3>
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x50(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0xb0(%rbp),%xmm1
ff
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm2
movaps 0xb85(%rip),%xmm3
pand   %xmm3,%xmm2
mulsd  %xmm2,%xmm1
mov    $0x2,%al
call   1040 <cdflib_fifdmax1@plt>
cvtsi2sd %eax,%xmm1
movsd  0xb7a(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
addsd  -0x48(%rbp),%xmm0
movsd  0xb5c(%rip),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
subsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movaps 0xb1c(%rip),%xmm1
pand   %xmm1,%xmm0
ucomisd -0xb8(%rbp),%xmm0
ff
ja     14fb <cdflib_E0001+0x3db>
jmp    1849 <cdflib_E0001+0x729>
cmpl   $0x3,-0xd4(%rbp)
jg     150d <cdflib_E0001+0x3ed>
jmp    1522 <cdflib_E0001+0x402>
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
jmp    1762 <cdflib_E0001+0x642>
movsd  -0xb8(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm1
ff
mov    $0x2,%al
call   1030 <cdflib_fifdsign@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
cmpq   $0x0,-0xe0(%rbp)
jne    156f <cdflib_E0001+0x44f>
jmp    1591 <cdflib_E0001+0x471>
movsd  -0x60(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movq   $0x0,-0xe0(%rbp)
jmp    1621 <cdflib_E0001+0x501>
movsd  -0x78(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
subsd  -0x48(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
subsd  -0x60(%rbp),%xmm0
movsd  -0x58(%rbp),%xmm1
subsd  -0x38(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x60(%rbp),%xmm2
movsd  -0x80(%rbp),%xmm1
mulsd  -0x68(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
xorps  %xmm0,%xmm0
ucomisd -0xa0(%rbp),%xmm0
ff
ja     1637 <cdflib_E0001+0x517>
jmp    1685 <cdflib_E0001+0x565>
movsd  -0xa0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
cmpl   $0x3,-0xd4(%rbp)
jne    16aa <cdflib_E0001+0x58a>
movsd  0x97e(%rip),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0x96e(%rip),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    16d2 <cdflib_E0001+0x5b2>
jp     16d2 <cdflib_E0001+0x5b2>
jmp    16f9 <cdflib_E0001+0x5d9>
movsd  -0xa0(%rbp),%xmm1
ff
movsd  -0xa8(%rbp),%xmm0
ff
mulsd  -0xb8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jae    16f9 <cdflib_E0001+0x5d9>
jmp    170e <cdflib_E0001+0x5ee>
movsd  -0xb8(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
jmp    1767 <cdflib_E0001+0x647>
movsd  -0xa0(%rbp),%xmm1
ff
movsd  -0x98(%rbp),%xmm0
ff
mulsd  -0xa8(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
ja     1735 <cdflib_E0001+0x615>
jmp    1752 <cdflib_E0001+0x632>
movsd  -0xa0(%rbp),%xmm0
ff
divsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
jmp    176c <cdflib_E0001+0x64c>
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
jmp    1767 <cdflib_E0001+0x647>
jmp    176c <cdflib_E0001+0x64c>
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0xc0(%rbp),%xmm0
ff
addsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x18(%rbp),%rax
movsd  %xmm0,(%rax)
movl   $0x3,-0xd8(%rbp)
jmp    193c <cdflib_E0001+0x81c>
mov    -0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x70(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jae    17fb <cdflib_E0001+0x6db>
jmp    1800 <cdflib_E0001+0x6e0>
jmp    1397 <cdflib_E0001+0x277>
movsd  -0xc0(%rbp),%xmm0
ff
ucomisd -0x98(%rbp),%xmm0
ff
jne    1821 <cdflib_E0001+0x701>
jp     1821 <cdflib_E0001+0x701>
jmp    1826 <cdflib_E0001+0x706>
jmp    1835 <cdflib_E0001+0x715>
movl   $0x0,-0xd4(%rbp)
jmp    1844 <cdflib_E0001+0x724>
mov    -0xd4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xd4(%rbp)
jmp    13b5 <cdflib_E0001+0x295>
movsd  -0x50(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x70(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     187e <cdflib_E0001+0x75e>
mov    $0x1,%al
xorps  %xmm0,%xmm0
ucomisd -0x68(%rbp),%xmm0
mov    %al,-0xed(%rbp)
jae    18b5 <cdflib_E0001+0x795>
xor    %eax,%eax
xorps  %xmm0,%xmm0
ucomisd -0x70(%rbp),%xmm0
mov    %al,-0xee(%rbp)
jbe    18a9 <cdflib_E0001+0x789>
movsd  -0x68(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
setae  %al
mov    %al,-0xee(%rbp)
mov    -0xee(%rbp),%al
mov    %al,-0xed(%rbp)
mov    -0xed(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
cltq
mov    %rax,-0xe8(%rbp)
cmpq   $0x0,-0xe8(%rbp)
jne    18dc <cdflib_E0001+0x7bc>
jmp    18eb <cdflib_E0001+0x7cb>
mov    -0x10(%rbp),%rax
movl   $0x0,(%rax)
jmp    18f5 <cdflib_E0001+0x7d5>
mov    -0x10(%rbp),%rax
movl   $0xffffffff,(%rax)
jmp    19a1 <cdflib_E0001+0x881>
mov    0x38(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
mov    0x30(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
mov    0x20(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    19a1 <cdflib_E0001+0x881>
mov    -0x10(%rbp),%rax
movl   $0x1,(%rax)
jmp    19a1 <cdflib_E0001+0x881>
mov    -0xd8(%rbp),%eax
mov    %eax,-0xf4(%rbp)
sub    $0x1,%eax
je     198d <cdflib_E0001+0x86d>
jmp    1965 <cdflib_E0001+0x845>
mov    -0xf4(%rbp),%eax
sub    $0x2,%eax
je     1992 <cdflib_E0001+0x872>
jmp    1979 <cdflib_E0001+0x859>
mov    -0xf4(%rbp),%eax
sub    $0x3,%eax
je     1997 <cdflib_E0001+0x877>
jmp    199c <cdflib_E0001+0x87c>
jmp    1264 <cdflib_E0001+0x144>
jmp    12a5 <cdflib_E0001+0x185>
jmp    17d2 <cdflib_E0001+0x6b2>
jmp    19a1 <cdflib_E0001+0x881>
add    $0x100,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
cmp    $0x1,%edi
je     110a <cdflib_E0001+0xa>
cmpl   $0x0,(%rsi)
jle    110b <cdflib_E0001+0xb>
ret
movq   $0x0,(%r8)
movq   $0x0,(%r9)
movsd  (%r8),%xmm0
movsd  %xmm0,(%rdx)
movl   $0x1,(%rsi)
ret

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

LLVM IR (-O2):
define void @cdflib_E0001(i32 %0, i32* nocapture %1, double* nocapture writeonly %2, double* nocapture readnone %3, double* nocapture %4, double* nocapture writeonly %5, i64* nocapture readnone %6, i64* nocapture readnone %7, double* nocapture readnone %8, double* nocapture readnone %9, double* nocapture readnone %10, double* nocapture readnone %11) {
%13 = icmp eq i32 %0, 1
br i1 %13, label %19, label %14
14: ; preds = %12
%15 = load i32, i32* %1
%16 = icmp sgt i32 %15, 0
br i1 %16, label %19, label %17
17: ; preds = %14
store double 0.000000e+00, double* %4
store double 0.000000e+00, double* %5
%18 = load double, double* %4
store double %18, double* %2
store i32 1, i32* %1
br label %19
19: ; preds = %14, %12, %17
ret void
}