#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(int);
float fabs(float);
int /*<<< orphan*/ printf(char *, ...);
float stub1(float);
float stub2(float);
float stub3(float);
float k_zbrent(float (*func)(float), float x1, float x2, float tol) {
  int iter;
  float a = x1, b = x2, c = x2, d = 0., e = 0., min1, min2;
  float fa = (*func)(a), fb = (*func)(b), fc, p, q, r, s, tol1, xm;
  if ((fa > 0.0 && fb > 0.0) || (fa < 0.0 && fb < 0.0)) {
    printf("%le %le ; %le %le\n", a, fa, b, fb);
    printf("Root must be bracketed in zbrent\n");
    if (fa < 0.)
      return (-1.);
    else
      return (-2.);
  }
  fc = fb;
  for (iter = 1; iter <= 100; iter++) {
    if ((fb > 0.0 && fc > 0.0) || (fb < 0.0 && fc < 0.0)) {
      c = a;
      fc = fa;
      e = d = b - a;
    }
    if (fabs(fc) < fabs(fb)) {
      a = b;
      b = c;
      c = a;
      fa = fb;
      fb = fc;
      fc = fa;
    }
    tol1 = 2.0 * 3.0e-8 * fabs(b) + 0.5 * tol;
    xm = 0.5 * (c - b);
    if (fabs(xm) <= tol1 || fb == 0.0)
      return b;
    if (fabs(e) >= tol1 && fabs(fa) > fabs(fb)) {
      s = fb / fa;
      if (a == c) {
        p = 2.0 * xm * s;
        q = 1.0 - s;
      } else {
        q = fa / fc;
        r = fb / fc;
        p = s * (2.0 * xm * q * (q - r) - (b - a) * (r - 1.0));
        q = (q - 1.0) * (r - 1.0) * (s - 1.0);
      }
      if (p > 0.0)
        q = -q;
      p = fabs(p);
      min1 = 3.0 * xm * q - fabs(tol1 * q);
      min2 = fabs(e * q);
      if (2.0 * p < (min1 < min2 ? min1 : min2)) {
        e = d;
        d = p / q;
      } else {
        d = xm;
        e = d;
      }
    } else {
      d = xm;
      e = d;
    }
    a = b;
    fa = fb;
    if (fabs(d) > tol1)
      b += d;
    else
      b += ((xm) >= 0.0 ? fabs(tol1) : -fabs(tol1));
    fb = (*func)(b);
  }
  printf("Maximum number of iterations exceeded in zbrent");
  exit(1);
  return 0.0;
}


x86 assembly (clang, -O0):
<k_zbrent>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
mov    %rdi,-0x10(%rbp)
movss  %xmm0,-0x14(%rbp)
movss  %xmm1,-0x18(%rbp)
movss  %xmm2,-0x1c(%rbp)
movss  -0x14(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  -0x18(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x30(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x34(%rbp)
mov    -0x10(%rbp),%rax
movss  -0x24(%rbp),%xmm0
call   *%rax
movss  %xmm0,-0x40(%rbp)
mov    -0x10(%rbp),%rax
movss  -0x28(%rbp),%xmm0
call   *%rax
movss  %xmm0,-0x44(%rbp)
movss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    11c8 <k_zbrent+0x98>
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
ja     11f4 <k_zbrent+0xc4>
movss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    126e <k_zbrent+0x13e>
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    126e <k_zbrent+0x13e>
movss  -0x24(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x40(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movss  -0x28(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
movss  -0x44(%rbp),%xmm3
cvtss2sd %xmm3,%xmm3
lea    0xe11(%rip),%rdi
mov    $0x4,%al
call   1030 <printf@plt>
lea    0xe16(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movss  -0x40(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    125c <k_zbrent+0x12c>
movss  0xdda(%rip),%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    17fd <k_zbrent+0x6cd>
movss  0xdc4(%rip),%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    17fd <k_zbrent+0x6cd>
movss  -0x44(%rbp),%xmm0
movss  %xmm0,-0x48(%rbp)
movl   $0x1,-0x20(%rbp)
cmpl   $0x64,-0x20(%rbp)
jg     17e5 <k_zbrent+0x6b5>
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    12b5 <k_zbrent+0x185>
movss  -0x48(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
ja     12e1 <k_zbrent+0x1b1>
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    1309 <k_zbrent+0x1d9>
movss  -0x48(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
xorps  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    1309 <k_zbrent+0x1d9>
movss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x28(%rbp),%xmm0
subss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  %xmm0,-0x34(%rbp)
movss  -0x48(%rbp),%xmm0
call   1040 <fabs@plt>
movss  %xmm0,-0x64(%rbp)
movss  -0x44(%rbp),%xmm0
call   1040 <fabs@plt>
movss  -0x64(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jbe    136c <k_zbrent+0x23c>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x2c(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
movss  -0x24(%rbp),%xmm0
movss  %xmm0,-0x2c(%rbp)
movss  -0x44(%rbp),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x48(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x28(%rbp),%xmm0
call   1040 <fabs@plt>
cvtss2sd %xmm0,%xmm0
movss  -0x1c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xc75(%rip),%xmm1
mulsd  %xmm2,%xmm1
movsd  0xc71(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
movss  -0x2c(%rbp),%xmm0
subss  -0x28(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xc42(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x60(%rbp),%xmm0
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movss  -0x5c(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jae    1402 <k_zbrent+0x2d2>
movss  -0x44(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1411 <k_zbrent+0x2e1>
jp     1411 <k_zbrent+0x2e1>
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    17fd <k_zbrent+0x6cd>
movss  -0x34(%rbp),%xmm0
call   1040 <fabs@plt>
ucomiss -0x5c(%rbp),%xmm0
jb     1719 <k_zbrent+0x5e9>
movss  -0x40(%rbp),%xmm0
call   1040 <fabs@plt>
movss  %xmm0,-0x68(%rbp)
movss  -0x44(%rbp),%xmm0
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movss  -0x68(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1719 <k_zbrent+0x5e9>
movss  -0x44(%rbp),%xmm0
divss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x24(%rbp),%xmm0
ucomiss -0x2c(%rbp),%xmm0
jne    14c1 <k_zbrent+0x391>
jp     14c1 <k_zbrent+0x391>
movss  -0x60(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xb94(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x58(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x58(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xb61(%rip),%xmm0
subsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x50(%rbp)
jmp    15bb <k_zbrent+0x48b>
movss  -0x40(%rbp),%xmm0
divss  -0x48(%rbp),%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x44(%rbp),%xmm0
divss  -0x48(%rbp),%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x58(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movss  -0x60(%rbp),%xmm1
cvtss2sd %xmm1,%xmm2
movsd  0xb1f(%rip),%xmm1
mulsd  %xmm2,%xmm1
movss  -0x50(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  %xmm2,%xmm1
movss  -0x50(%rbp),%xmm2
subss  -0x54(%rbp),%xmm2
cvtss2sd %xmm2,%xmm3
movss  -0x28(%rbp),%xmm2
subss  -0x24(%rbp),%xmm2
cvtss2sd %xmm2,%xmm2
movss  -0x54(%rbp),%xmm4
cvtss2sd %xmm4,%xmm4
movsd  0xad9(%rip),%xmm5
subsd  %xmm5,%xmm4
mulsd  %xmm4,%xmm2
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x4c(%rbp)
movss  -0x50(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xa94(%rip),%xmm1
subsd  %xmm1,%xmm0
movss  -0x54(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xa7f(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movss  -0x58(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
movsd  0xa66(%rip),%xmm2
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    15e8 <k_zbrent+0x4b8>
movss  -0x50(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x4c(%rbp),%xmm0
call   1040 <fabs@plt>
movss  %xmm0,-0x4c(%rbp)
movss  -0x60(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xa18(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movss  -0x50(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  %xmm0,-0x80(%rbp)
movss  -0x5c(%rbp),%xmm0
mulss  -0x50(%rbp),%xmm0
call   1040 <fabs@plt>
movsd  -0x80(%rbp),%xmm2
movaps %xmm0,%xmm1
movsd  -0x78(%rbp),%xmm0
cvtss2sd %xmm1,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x34(%rbp),%xmm0
mulss  -0x50(%rbp),%xmm0
call   1040 <fabs@plt>
movss  %xmm0,-0x3c(%rbp)
movss  -0x4c(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0x98c(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movss  -0x38(%rbp),%xmm1
movss  -0x3c(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    16ba <k_zbrent+0x58a>
movss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x84(%rbp)
ff
jmp    16c7 <k_zbrent+0x597>
movss  -0x3c(%rbp),%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movsd  -0x70(%rbp),%xmm1
movss  -0x84(%rbp),%xmm0
ff
cvtss2sd %xmm0,%xmm0
ucomisd %xmm1,%xmm0
jbe    1700 <k_zbrent+0x5d0>
movss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x4c(%rbp),%xmm0
divss  -0x50(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
jmp    1714 <k_zbrent+0x5e4>
movss  -0x60(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
jmp    172d <k_zbrent+0x5fd>
movss  -0x60(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x30(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x24(%rbp)
movss  -0x44(%rbp),%xmm0
movss  %xmm0,-0x40(%rbp)
movss  -0x30(%rbp),%xmm0
call   1040 <fabs@plt>
ucomiss -0x5c(%rbp),%xmm0
jbe    1769 <k_zbrent+0x639>
movss  -0x30(%rbp),%xmm0
addss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
jmp    17c7 <k_zbrent+0x697>
movss  -0x60(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1796 <k_zbrent+0x666>
movss  -0x5c(%rbp),%xmm0
call   1040 <fabs@plt>
movss  %xmm0,-0x88(%rbp)
ff
jmp    17b5 <k_zbrent+0x685>
movss  -0x5c(%rbp),%xmm0
call   1040 <fabs@plt>
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x88(%rbp),%xmm0
ff
addss  -0x28(%rbp),%xmm0
movss  %xmm0,-0x28(%rbp)
mov    -0x10(%rbp),%rax
movss  -0x28(%rbp),%xmm0
call   *%rax
movss  %xmm0,-0x44(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    127f <k_zbrent+0x14f>
lea    0x879(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    $0x1,%edi
call   1050 <exit@plt>
movss  -0x4(%rbp),%xmm0
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<k_zbrent>:
push   %rbp
push   %rbx
sub    $0x88,%rsp
movss  %xmm2,0x40(%rsp)
movaps %xmm1,0x10(%rsp)
mov    %rdi,%rbx
movaps %xmm0,0x50(%rsp)
call   *%rdi
movaps %xmm0,0x30(%rsp)
movaps 0x10(%rsp),%xmm0
call   *%rbx
movaps 0x30(%rsp),%xmm9
movaps %xmm0,%xmm13
xorps  %xmm0,%xmm0
ucomiss %xmm0,%xmm9
jbe    1173 <k_zbrent+0x43>
ucomiss %xmm0,%xmm13
ja     1182 <k_zbrent+0x52>
ucomiss %xmm9,%xmm0
jbe    11de <k_zbrent+0xae>
xorps  %xmm0,%xmm0
ucomiss %xmm13,%xmm0
jbe    11de <k_zbrent+0xae>
xorps  %xmm1,%xmm1
cvtss2sd %xmm9,%xmm1
movaps 0x50(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
movaps 0x10(%rsp),%xmm2
cvtss2sd %xmm2,%xmm2
cvtss2sd %xmm13,%xmm3
lea    0xebc(%rip),%rdi
mov    $0x4,%al
call   1040 <printf@plt>
lea    0xef1(%rip),%rdi
call   1030 <puts@plt>
xorps  %xmm0,%xmm0
xor    %eax,%eax
ucomiss 0x30(%rsp),%xmm0
seta   %al
lea    0xe59(%rip),%rcx
movss  (%rcx,%rax,4),%xmm0
add    $0x88,%rsp
pop    %rbx
pop    %rbp
ret
movss  0x40(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
mulsd  0xe10(%rip),%xmm0
movsd  %xmm0,0x68(%rsp)
xorps  %xmm14,%xmm14
mov    $0x64,%ebp
movaps 0xe29(%rip),%xmm15
movaps %xmm13,%xmm0
movaps 0x10(%rsp),%xmm1
movaps %xmm1,%xmm2
xorps  %xmm3,%xmm3
movss  %xmm3,0xc(%rsp)
xorps  %xmm10,%xmm10
jmp    127b <k_zbrent+0x14b>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movss  %xmm5,0xc(%rsp)
movaps %xmm0,0x50(%rsp)
addss  %xmm0,%xmm1
movaps %xmm1,0x10(%rsp)
movaps %xmm1,%xmm0
call   *%rbx
movaps 0x10(%rsp),%xmm1
movaps 0xdda(%rip),%xmm15
xorps  %xmm14,%xmm14
add    $0xffffffff,%ebp
movaps 0x30(%rsp),%xmm9
movaps 0x70(%rsp),%xmm13
movaps 0x40(%rsp),%xmm10
movss  0x2c(%rsp),%xmm2
je     153d <k_zbrent+0x40d>
ucomiss %xmm14,%xmm0
movaps 0x50(%rsp),%xmm6
jbe    128c <k_zbrent+0x15c>
ucomiss %xmm14,%xmm13
ja     12a3 <k_zbrent+0x173>
ucomiss %xmm0,%xmm14
jbe    13f0 <k_zbrent+0x2c0>
ucomiss %xmm13,%xmm14
movss  0xc(%rsp),%xmm8
jbe    12b7 <k_zbrent+0x187>
movaps %xmm1,%xmm10
subss  %xmm6,%xmm10
movaps %xmm10,%xmm8
movaps %xmm6,%xmm2
movaps %xmm9,%xmm13
movaps %xmm13,%xmm3
andps  %xmm15,%xmm3
movaps %xmm0,%xmm4
andps  %xmm15,%xmm4
ucomiss %xmm3,%xmm4
jbe    12e0 <k_zbrent+0x1b0>
movaps %xmm1,%xmm7
movaps %xmm0,%xmm9
movaps %xmm13,%xmm11
movaps %xmm0,%xmm13
jmp    12ed <k_zbrent+0x1bd>
nopl   0x0(%rax)
movaps %xmm2,%xmm7
movaps %xmm0,%xmm11
movaps %xmm1,%xmm2
movaps %xmm6,%xmm1
movaps %xmm2,%xmm0
andps  %xmm15,%xmm2
cvtss2sd %xmm2,%xmm2
mulsd  0xd08(%rip),%xmm2
addsd  0x68(%rsp),%xmm2
xorps  %xmm4,%xmm4
cvtsd2ss %xmm2,%xmm4
movaps %xmm7,%xmm2
subss  %xmm0,%xmm2
mulss  0xd44(%rip),%xmm2
movaps %xmm2,%xmm3
andps  %xmm15,%xmm3
ucomiss %xmm3,%xmm4
jae    11d4 <k_zbrent+0xa4>
ucomiss %xmm14,%xmm11
jne    1338 <k_zbrent+0x208>
jnp    11d4 <k_zbrent+0xa4>
movaps %xmm10,%xmm5
andps  %xmm15,%xmm5
ucomiss %xmm4,%xmm5
movss  %xmm7,0x2c(%rsp)
jb     13b0 <k_zbrent+0x280>
movaps %xmm9,%xmm5
andps  %xmm15,%xmm5
movaps %xmm11,%xmm6
andps  %xmm15,%xmm6
ucomiss %xmm6,%xmm5
jbe    13b0 <k_zbrent+0x280>
movss  %xmm8,0x30(%rsp)
movaps %xmm11,%xmm8
divss  %xmm9,%xmm8
ucomiss %xmm7,%xmm1
jne    13fc <k_zbrent+0x2cc>
jp     13fc <k_zbrent+0x2cc>
cvtss2sd %xmm2,%xmm12
movaps %xmm12,%xmm1
addsd  %xmm12,%xmm1
xorps  %xmm7,%xmm7
cvtss2sd %xmm8,%xmm7
mulsd  %xmm7,%xmm1
movsd  0xc77(%rip),%xmm6
subsd  %xmm7,%xmm6
jmp    1494 <k_zbrent+0x364>
nopw   0x0(%rax,%rax,1)
movaps %xmm2,%xmm1
movaps %xmm2,%xmm5
movaps %xmm1,0x40(%rsp)
movaps %xmm13,0x70(%rsp)
movaps %xmm11,0x30(%rsp)
ucomiss %xmm4,%xmm3
movaps %xmm5,%xmm1
ja     1230 <k_zbrent+0x100>
ucomiss %xmm14,%xmm2
andps  %xmm15,%xmm4
movaps %xmm4,%xmm1
jae    1230 <k_zbrent+0x100>
xorps  0xc65(%rip),%xmm1
jmp    1230 <k_zbrent+0x100>
movss  0xc(%rsp),%xmm8
jmp    12b7 <k_zbrent+0x187>
divss  %xmm13,%xmm9
movaps %xmm1,0x10(%rsp)
movaps %xmm11,%xmm7
divss  %xmm13,%xmm7
cvtss2sd %xmm2,%xmm12
movaps %xmm12,%xmm5
addsd  %xmm12,%xmm5
xorps  %xmm6,%xmm6
cvtss2sd %xmm9,%xmm6
mulsd  %xmm6,%xmm5
subss  %xmm7,%xmm9
xorps  %xmm1,%xmm1
cvtss2sd %xmm9,%xmm1
mulsd  %xmm5,%xmm1
movaps %xmm0,%xmm5
subss  0x10(%rsp),%xmm5
movaps %xmm10,0x40(%rsp)
xorps  %xmm10,%xmm10
cvtss2sd %xmm5,%xmm10
unpcklps %xmm7,%xmm8
cvtps2pd %xmm8,%xmm9
movapd %xmm9,%xmm5
addpd  0xbd9(%rip),%xmm5
movapd %xmm5,%xmm7
unpckhpd %xmm5,%xmm7
mulsd  %xmm7,%xmm10
subsd  %xmm10,%xmm1
movaps 0x40(%rsp),%xmm10
mulsd  %xmm9,%xmm1
addsd  0xb84(%rip),%xmm6
mulsd  %xmm7,%xmm6
mulsd  %xmm5,%xmm6
xorps  %xmm5,%xmm5
cvtsd2ss %xmm6,%xmm5
xorps  %xmm9,%xmm9
cvtsd2ss %xmm1,%xmm9
movaps %xmm5,%xmm7
xorps  0xba2(%rip),%xmm7
xorps  %xmm6,%xmm6
cmpltss %xmm9,%xmm6
andps  %xmm6,%xmm7
andnps %xmm5,%xmm6
orps   %xmm7,%xmm6
andps  %xmm15,%xmm9
mulsd  0xb53(%rip),%xmm12
xorps  %xmm5,%xmm5
cvtss2sd %xmm6,%xmm5
mulsd  %xmm12,%xmm5
movaps %xmm6,%xmm1
mulss  %xmm4,%xmm1
andps  %xmm15,%xmm1
cvtss2sd %xmm1,%xmm1
subsd  %xmm1,%xmm5
xorps  %xmm1,%xmm1
cvtsd2ss %xmm5,%xmm1
mulss  %xmm6,%xmm10
andps  %xmm15,%xmm10
xorps  %xmm5,%xmm5
cvtss2sd %xmm9,%xmm5
addsd  %xmm5,%xmm5
minss  %xmm10,%xmm1
cvtss2sd %xmm1,%xmm1
ucomisd %xmm5,%xmm1
movaps %xmm2,%xmm1
movaps %xmm2,%xmm5
jbe    13b6 <k_zbrent+0x286>
divss  %xmm6,%xmm9
movaps %xmm9,%xmm3
andps  %xmm15,%xmm3
movss  0x30(%rsp),%xmm1
movaps %xmm9,%xmm5
jmp    13b6 <k_zbrent+0x286>
lea    0xb33(%rip),%rdi
xor    %eax,%eax
call   1040 <printf@plt>
mov    $0x1,%edi
call   1050 <exit@plt>

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

LLVM IR (-O2):
@.str = [19 x i8] c"%le %le ; %le %le\0A\00"
@.str.2 = [48 x i8] c"Maximum number of iterations exceeded in zbrent\00"
@str = [33 x i8] c"Root must be bracketed in zbrent\00"
define float @k_zbrent(float (float)* nocapture %0, float %1, float %2, float %3) {
%5 = tail call float %0(float %1)
%6 = tail call float %0(float %2)
%7 = fpext float %5 to double
%8 = fcmp ogt float %5, 0.000000e+00
%9 = fcmp ogt float %6, 0.000000e+00
%10 = select i1 %8, i1 %9, i1 false
br i1 %10, label %18, label %11
11: ; preds = %4
%12 = fcmp olt float %5, 0.000000e+00
%13 = fcmp olt float %6, 0.000000e+00
%14 = select i1 %12, i1 %13, i1 false
br i1 %14, label %18, label %15
15: ; preds = %11
%16 = fpext float %3 to double
%17 = fmul double %16, 5.000000e-01
br label %26
18: ; preds = %11, %4
%19 = fpext float %1 to double
%20 = fpext float %2 to double
%21 = fpext float %6 to double
%22 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([19 x i8], [19 x i8]* @.str, i64 0, i64 0), double %19, double %7, double %20, double %21)
%23 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([33 x i8], [33 x i8]* @str, i64 0, i64 0))
%24 = fcmp olt float %5, 0.000000e+00
%25 = select i1 %24, float -1.000000e+00, float -2.000000e+00
br label %160
26: ; preds = %15, %151
%27 = phi i32 [ 1, %15 ], [ %155, %151 ]
%28 = phi float [ %1, %15 ], [ %59, %151 ]
%29 = phi float [ %2, %15 ], [ %153, %151 ]
%30 = phi float [ %6, %15 ], [ %58, %151 ]
%31 = phi float [ %6, %15 ], [ %154, %151 ]
%32 = phi float [ %5, %15 ], [ %57, %151 ]
%33 = phi float [ %2, %15 ], [ %55, %151 ]
%34 = phi float [ 0.000000e+00, %15 ], [ %144, %151 ]
%35 = phi float [ 0.000000e+00, %15 ], [ %143, %151 ]
%36 = fcmp ogt float %31, 0.000000e+00
%37 = fcmp ogt float %30, 0.000000e+00
%38 = select i1 %36, i1 %37, i1 false
br i1 %38, label %43, label %39
39: ; preds = %26
%40 = fcmp olt float %31, 0.000000e+00
%41 = fcmp olt float %30, 0.000000e+00
%42 = select i1 %40, i1 %41, i1 false
br i1 %42, label %43, label %45
43: ; preds = %39, %26
%44 = fsub float %29, %28
br label %45
45: ; preds = %43, %39
%46 = phi float [ %44, %43 ], [ %35, %39 ]
%47 = phi float [ %44, %43 ], [ %34, %39 ]
%48 = phi float [ %28, %43 ], [ %33, %39 ]
%49 = phi float [ %32, %43 ], [ %30, %39 ]
%50 = tail call float @llvm.fabs.f32(float %49)
%51 = tail call float @llvm.fabs.f32(float %31)
%52 = fcmp olt float %50, %51
br i1 %52, label %53, label %54
53: ; preds = %45
br label %54
54: ; preds = %53, %45
%55 = phi float [ %29, %53 ], [ %48, %45 ]
%56 = phi float [ %31, %53 ], [ %32, %45 ]
%57 = phi float [ %49, %53 ], [ %31, %45 ]
%58 = phi float [ %31, %53 ], [ %49, %45 ]
%59 = phi float [ %48, %53 ], [ %29, %45 ]
%60 = phi float [ %29, %53 ], [ %28, %45 ]
%61 = tail call float @llvm.fabs.f32(float %59)
%62 = fpext float %61 to double
%63 = tail call double @llvm.fmuladd.f64(double %62, double 6.000000e-08, double %17)
%64 = fptrunc double %63 to float
%65 = fsub float %55, %59
%66 = fmul float %65, 5.000000e-01
%67 = tail call float @llvm.fabs.f32(float %66)
%68 = fcmp ole float %67, %64
%69 = fcmp oeq float %57, 0.000000e+00
%70 = select i1 %68, i1 true, i1 %69
br i1 %70, label %160, label %71
71: ; preds = %54
%72 = tail call float @llvm.fabs.f32(float %46)
%73 = fcmp ult float %72, %64
br i1 %73, label %141, label %74
74: ; preds = %71
%75 = tail call float @llvm.fabs.f32(float %56)
%76 = tail call float @llvm.fabs.f32(float %57)
%77 = fcmp ogt float %75, %76
br i1 %77, label %78, label %141
78: ; preds = %74
%79 = fdiv float %57, %56
%80 = fcmp oeq float %60, %55
br i1 %80, label %81, label %87
81: ; preds = %78
%82 = fpext float %66 to double
%83 = fmul double %82, 2.000000e+00
%84 = fpext float %79 to double
%85 = fmul double %83, %84
%86 = fsub double 1.000000e+00, %84
br label %112
87: ; preds = %78
%88 = fdiv float %56, %58
%89 = fdiv float %57, %58
%90 = fpext float %66 to double
%91 = fmul double %90, 2.000000e+00
%92 = fpext float %88 to double
%93 = fmul double %91, %92
%94 = fsub float %88, %89
%95 = fpext float %94 to double
%96 = fsub float %59, %60
%97 = fpext float %96 to double
%98 = insertelement <2 x float> poison, float %79, i64 0
%99 = insertelement <2 x float> %98, float %89, i64 1
%100 = fpext <2 x float> %99 to <2 x double>
%101 = fadd <2 x double> %100, <double -1.000000e+00, double -1.000000e+00>
%102 = extractelement <2 x double> %101, i64 1
%103 = fneg double %102
%104 = fmul double %103, %97
%105 = tail call double @llvm.fmuladd.f64(double %93, double %95, double %104)
%106 = extractelement <2 x double> %100, i64 0
%107 = fmul double %105, %106
%108 = fadd double %92, -1.000000e+00
%109 = fmul double %108, %102
%110 = extractelement <2 x double> %101, i64 0
%111 = fmul double %110, %109
br label %112
112: ; preds = %87, %81
%113 = phi double [ %90, %87 ], [ %82, %81 ]
%114 = phi double [ %107, %87 ], [ %85, %81 ]
%115 = phi double [ %111, %87 ], [ %86, %81 ]
%116 = fptrunc double %115 to float
%117 = fptrunc double %114 to float
%118 = fcmp ogt float %117, 0.000000e+00
%119 = fneg float %116
%120 = select i1 %118, float %119, float %116
%121 = tail call float @llvm.fabs.f32(float %117)
%122 = fmul double %113, 3.000000e+00
%123 = fpext float %120 to double
%124 = fmul float %120, %64
%125 = tail call float @llvm.fabs.f32(float %124)
%126 = fpext float %125 to double
%127 = fneg double %126
%128 = tail call double @llvm.fmuladd.f64(double %122, double %123, double %127)
%129 = fptrunc double %128 to float
%130 = fmul float %46, %120
%131 = tail call float @llvm.fabs.f32(float %130)
%132 = fpext float %121 to double
%133 = fmul double %132, 2.000000e+00
%134 = fcmp ogt float %131, %129
%135 = select i1 %134, float %129, float %131
%136 = fpext float %135 to double
%137 = fcmp olt double %133, %136
br i1 %137, label %138, label %141
138: ; preds = %112
%139 = fdiv float %121, %120
%140 = tail call float @llvm.fabs.f32(float %139)
br label %141
141: ; preds = %71, %74, %112, %138
%142 = phi float [ %67, %71 ], [ %67, %74 ], [ %67, %112 ], [ %140, %138 ]
%143 = phi float [ %66, %71 ], [ %66, %74 ], [ %66, %112 ], [ %47, %138 ]
%144 = phi float [ %66, %71 ], [ %66, %74 ], [ %66, %112 ], [ %139, %138 ]
%145 = fcmp ogt float %142, %64
br i1 %145, label %151, label %146
146: ; preds = %141
%147 = fcmp ult float %66, 0.000000e+00
%148 = tail call float @llvm.fabs.f32(float %64)
br i1 %147, label %149, label %151
149: ; preds = %146
%150 = fneg float %148
br label %151
151: ; preds = %146, %149, %141
%152 = phi float [ %144, %141 ], [ %150, %149 ], [ %148, %146 ]
%153 = fadd float %59, %152
%154 = tail call float %0(float %153)
%155 = add nuw nsw i32 %27, 1
%156 = icmp eq i32 %155, 101
br i1 %156, label %157, label %26
157: ; preds = %151
%158 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([48 x i8], [48 x i8]* @.str.2, i64 0, i64 0))
%159 = tail call i32 @exit(i32 1)
unreachable
160: ; preds = %54, %18
%161 = phi float [ %25, %18 ], [ %59, %54 ]
ret float %161
}