#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 */
float fabs(float);
int /*<<< orphan*/ nrerror(char *);
float stub1(float);
float stub2(float);
float brent(float ax, float bx, float cx, float (*f)(float), float tol,
            float *xmin) {
  int iter;
  float a, b, d, etemp, fu, fv, fw, fx, p, q, r, tol1, tol2, u, v, w, x, xm;
  float e = 0.0;
  a = (ax < cx ? ax : cx);
  b = (ax > cx ? ax : cx);
  x = w = v = bx;
  fw = fv = fx = (*f)(x);
  for (iter = 1; iter <= 100; iter++) {
    xm = 0.5 * (a + b);
    tol2 = 2.0 * (tol1 = tol * fabs(x) + 1.0e-10);
    if (fabs(x - xm) <= (tol2 - 0.5 * (b - a))) {
      *xmin = x;
      return fx;
    }
    if (fabs(e) > tol1) {
      r = (x - w) * (fx - fv);
      q = (x - v) * (fx - fw);
      p = (x - v) * q - (x - w) * r;
      q = 2.0 * (q - r);
      if (q > 0.0)
        p = -p;
      q = fabs(q);
      etemp = e;
      e = d;
      if (fabs(p) >= fabs(0.5 * q * etemp) || p <= q * (a - x) ||
          p >= q * (b - x))
        d = 0.3819660 * (e = (x >= xm ? a - x : b - x));
      else {
        d = p / q;
        u = x + d;
        if (u - a < tol2 || b - u < tol2)
          d = ((xm - x) >= 0.0 ? fabs(tol1) : -fabs(tol1));
      }
    } else {
      d = 0.3819660 * (e = (x >= xm ? a - x : b - x));
    }
    u = (fabs(d) >= tol1 ? x + d : x + ((d) >= 0.0 ? fabs(tol1) : -fabs(tol1)));
    fu = (*f)(u);
    if (fu <= fx) {
      if (u >= x)
        a = x;
      else
        b = x;
      (v) = (w);
      (w) = (x);
      (x) = (u);
      (fv) = (fw);
      (fw) = (fx);
      (fx) = (fu);
    } else {
      if (u < x)
        a = u;
      else
        b = u;
      if (fu <= fw || w == x) {
        v = w;
        w = u;
        fv = fw;
        fw = fu;
      } else if (fu <= fv || v == x || v == w) {
        v = u;
        fv = fu;
      }
    }
  }
  nrerror("Too many iterations in brent");
  *xmin = x;
  return fx;
}


x86 assembly (clang, -O0):
<brent>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa0,%rsp
movss  %xmm0,-0x8(%rbp)
movss  %xmm1,-0xc(%rbp)
movss  %xmm2,-0x10(%rbp)
mov    %rdi,-0x18(%rbp)
movss  %xmm3,-0x1c(%rbp)
mov    %rsi,-0x28(%rbp)
xorps  %xmm0,%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x8(%rbp),%xmm1
movss  -0x10(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    1171 <brent+0x51>
movss  -0x8(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
jmp    117b <brent+0x5b>
movss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x7c(%rbp)
movss  -0x7c(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
movss  -0x8(%rbp),%xmm0
ucomiss -0x10(%rbp),%xmm0
jbe    11a3 <brent+0x83>
movss  -0x8(%rbp),%xmm0
movss  %xmm0,-0x80(%rbp)
jmp    11ad <brent+0x8d>
movss  -0x10(%rbp),%xmm0
movss  %xmm0,-0x80(%rbp)
movss  -0x80(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0xc(%rbp),%xmm0
movss  %xmm0,-0x68(%rbp)
movss  %xmm0,-0x6c(%rbp)
movss  %xmm0,-0x70(%rbp)
mov    -0x18(%rbp),%rax
movss  -0x70(%rbp),%xmm0
call   *%rax
movss  %xmm0,-0x4c(%rbp)
movss  %xmm0,-0x44(%rbp)
movss  %xmm0,-0x48(%rbp)
movl   $0x1,-0x2c(%rbp)
cmpl   $0x64,-0x2c(%rbp)
jg     1801 <brent+0x6e1>
movss  -0x30(%rbp),%xmm0
addss  -0x34(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xe0c(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x74(%rbp)
movss  -0x1c(%rbp),%xmm0
movss  %xmm0,-0x84(%rbp)
ff
movss  -0x70(%rbp),%xmm0
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movss  -0x84(%rbp),%xmm0
ff
mulss  %xmm1,%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xdc5(%rip),%xmm1
addsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x5c(%rbp)
cvtss2sd %xmm0,%xmm1
movsd  0xda4(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x60(%rbp)
movss  -0x70(%rbp),%xmm0
subss  -0x74(%rbp),%xmm0
call   1040 <fabs@plt>
cvtss2sd %xmm0,%xmm1
movss  -0x60(%rbp),%xmm0
cvtss2sd %xmm0,%xmm2
movss  -0x34(%rbp),%xmm0
subss  -0x30(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
movsd  0xd5d(%rip),%xmm3
mulsd  %xmm3,%xmm0
addsd  %xmm2,%xmm0
ucomisd %xmm1,%xmm0
jb     12d1 <brent+0x1b1>
movss  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x4c(%rbp),%xmm0
movss  %xmm0,-0x4(%rbp)
jmp    1824 <brent+0x704>
movss  -0x78(%rbp),%xmm0
call   1040 <fabs@plt>
ucomiss -0x5c(%rbp),%xmm0
jbe    1576 <brent+0x456>
movss  -0x70(%rbp),%xmm0
subss  -0x6c(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm1
subss  -0x44(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x58(%rbp)
movss  -0x70(%rbp),%xmm0
subss  -0x68(%rbp),%xmm0
movss  -0x4c(%rbp),%xmm1
subss  -0x48(%rbp),%xmm1
mulss  %xmm1,%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x70(%rbp),%xmm0
subss  -0x68(%rbp),%xmm0
movss  -0x54(%rbp),%xmm2
movss  -0x70(%rbp),%xmm1
subss  -0x6c(%rbp),%xmm1
mulss  -0x58(%rbp),%xmm1
movd   %xmm1,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm1
mulss  %xmm2,%xmm0
addss  %xmm1,%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x54(%rbp),%xmm0
subss  -0x58(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xc9b(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x54(%rbp)
movss  -0x54(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jbe    13a7 <brent+0x287>
movss  -0x50(%rbp),%xmm0
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  %xmm0,-0x50(%rbp)
movss  -0x54(%rbp),%xmm0
call   1040 <fabs@plt>
movss  %xmm0,-0x54(%rbp)
movss  -0x78(%rbp),%xmm0
movss  %xmm0,-0x3c(%rbp)
movss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x78(%rbp)
movss  -0x50(%rbp),%xmm0
call   1040 <fabs@plt>
movss  %xmm0,-0x88(%rbp)
ff
movss  -0x54(%rbp),%xmm0
cvtss2sd %xmm0,%xmm1
movsd  0xc2b(%rip),%xmm0
mulsd  %xmm1,%xmm0
movss  -0x3c(%rbp),%xmm1
cvtss2sd %xmm1,%xmm1
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
call   1040 <fabs@plt>
movaps %xmm0,%xmm1
movss  -0x88(%rbp),%xmm0
ff
ucomiss %xmm1,%xmm0
jae    145d <brent+0x33d>
movss  -0x50(%rbp),%xmm1
movss  -0x54(%rbp),%xmm0
movss  -0x30(%rbp),%xmm2
subss  -0x70(%rbp),%xmm2
mulss  %xmm2,%xmm0
ucomiss %xmm1,%xmm0
jae    145d <brent+0x33d>
movss  -0x50(%rbp),%xmm0
movss  -0x54(%rbp),%xmm1
movss  -0x34(%rbp),%xmm2
subss  -0x70(%rbp),%xmm2
mulss  %xmm2,%xmm1
ucomiss %xmm1,%xmm0
jb     14c0 <brent+0x3a0>
movss  -0x70(%rbp),%xmm0
ucomiss -0x74(%rbp),%xmm0
jb     1483 <brent+0x363>
movss  -0x30(%rbp),%xmm0
subss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
jmp    1495 <brent+0x375>
movss  -0x34(%rbp),%xmm0
subss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x8c(%rbp)
ff
movss  -0x8c(%rbp),%xmm0
ff
movss  %xmm0,-0x78(%rbp)
cvtss2sd %xmm0,%xmm1
movsd  0xb72(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
jmp    1571 <brent+0x451>
movss  -0x50(%rbp),%xmm0
divss  -0x54(%rbp),%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x70(%rbp),%xmm0
addss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x64(%rbp)
movss  -0x64(%rbp),%xmm1
subss  -0x30(%rbp),%xmm1
movss  -0x60(%rbp),%xmm0
ucomiss %xmm1,%xmm0
ja     150e <brent+0x3ee>
movss  -0x34(%rbp),%xmm1
subss  -0x64(%rbp),%xmm1
movss  -0x60(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    156c <brent+0x44c>
movss  -0x74(%rbp),%xmm0
subss  -0x70(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1540 <brent+0x420>
movss  -0x5c(%rbp),%xmm0
call   1040 <fabs@plt>
movss  %xmm0,-0x90(%rbp)
ff
jmp    155f <brent+0x43f>
movss  -0x5c(%rbp),%xmm0
call   1040 <fabs@plt>
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  %xmm0,-0x90(%rbp)
ff
movss  -0x90(%rbp),%xmm0
ff
movss  %xmm0,-0x38(%rbp)
jmp    1571 <brent+0x451>
jmp    15d4 <brent+0x4b4>
movss  -0x70(%rbp),%xmm0
ucomiss -0x74(%rbp),%xmm0
jb     159c <brent+0x47c>
movss  -0x30(%rbp),%xmm0
subss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x94(%rbp)
ff
jmp    15ae <brent+0x48e>
movss  -0x34(%rbp),%xmm0
subss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x94(%rbp)
ff
movss  -0x94(%rbp),%xmm0
ff
movss  %xmm0,-0x78(%rbp)
cvtss2sd %xmm0,%xmm1
movsd  0xa59(%rip),%xmm0
mulsd  %xmm1,%xmm0
cvtsd2ss %xmm0,%xmm0
movss  %xmm0,-0x38(%rbp)
movss  -0x38(%rbp),%xmm0
call   1040 <fabs@plt>
ucomiss -0x5c(%rbp),%xmm0
jb     15ff <brent+0x4df>
movss  -0x70(%rbp),%xmm0
addss  -0x38(%rbp),%xmm0
movss  %xmm0,-0x98(%rbp)
ff
jmp    1674 <brent+0x554>
movss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x9c(%rbp)
ff
movss  -0x38(%rbp),%xmm0
cvtss2sd %xmm0,%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     1639 <brent+0x519>
movss  -0x5c(%rbp),%xmm0
call   1040 <fabs@plt>
movss  %xmm0,-0xa0(%rbp)
ff
jmp    1658 <brent+0x538>
movss  -0x5c(%rbp),%xmm0
call   1040 <fabs@plt>
movd   %xmm0,%eax
xor    $0x80000000,%eax
movd   %eax,%xmm0
movss  %xmm0,-0xa0(%rbp)
ff
movss  -0x9c(%rbp),%xmm0
ff
movss  -0xa0(%rbp),%xmm1
ff
addss  %xmm1,%xmm0
movss  %xmm0,-0x98(%rbp)
ff
movss  -0x98(%rbp),%xmm0
ff
movss  %xmm0,-0x64(%rbp)
mov    -0x18(%rbp),%rax
movss  -0x64(%rbp),%xmm0
call   *%rax
movss  %xmm0,-0x40(%rbp)
movss  -0x40(%rbp),%xmm1
movss  -0x4c(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jb     170d <brent+0x5ed>
movss  -0x64(%rbp),%xmm0
ucomiss -0x70(%rbp),%xmm0
jb     16c2 <brent+0x5a2>
movss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
jmp    16cc <brent+0x5ac>
movss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x70(%rbp),%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x64(%rbp),%xmm0
movss  %xmm0,-0x70(%rbp)
movss  -0x48(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x4c(%rbp),%xmm0
movss  %xmm0,-0x48(%rbp)
movss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x4c(%rbp)
jmp    17ee <brent+0x6ce>
movss  -0x64(%rbp),%xmm1
movss  -0x70(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jbe    172f <brent+0x60f>
movss  -0x64(%rbp),%xmm0
movss  %xmm0,-0x30(%rbp)
jmp    1739 <brent+0x619>
movss  -0x64(%rbp),%xmm0
movss  %xmm0,-0x34(%rbp)
movss  -0x40(%rbp),%xmm1
movss  -0x48(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jae    1761 <brent+0x641>
movss  -0x6c(%rbp),%xmm0
ucomiss -0x70(%rbp),%xmm0
jne    178e <brent+0x66e>
jp     178e <brent+0x66e>
movss  -0x6c(%rbp),%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x64(%rbp),%xmm0
movss  %xmm0,-0x6c(%rbp)
movss  -0x48(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
movss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x48(%rbp)
jmp    17e9 <brent+0x6c9>
movss  -0x40(%rbp),%xmm1
movss  -0x44(%rbp),%xmm0
ucomiss %xmm1,%xmm0
jae    17d0 <brent+0x6b0>
movss  -0x68(%rbp),%xmm0
ucomiss -0x70(%rbp),%xmm0
jne    17bb <brent+0x69b>
jp     17bb <brent+0x69b>
jmp    17d0 <brent+0x6b0>
movss  -0x68(%rbp),%xmm0
ucomiss -0x6c(%rbp),%xmm0
jne    17e4 <brent+0x6c4>
jp     17e4 <brent+0x6c4>
movss  -0x64(%rbp),%xmm0
movss  %xmm0,-0x68(%rbp)
movss  -0x40(%rbp),%xmm0
movss  %xmm0,-0x44(%rbp)
jmp    17e9 <brent+0x6c9>
jmp    17ee <brent+0x6ce>
jmp    17f3 <brent+0x6d3>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    11ec <brent+0xcc>
lea    0x820(%rip),%rdi
call   1030 <nrerror@plt>
movss  -0x70(%rbp),%xmm0
mov    -0x28(%rbp),%rax
movss  %xmm0,(%rax)
movss  -0x4c(%rbp),%xmm0
movss  %xmm0,-0x4(%rbp)
movss  -0x4(%rbp),%xmm0
add    $0xa0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<brent>:
push   %rbp
push   %r15
push   %r14
push   %rbx
sub    $0x88,%rsp
mov    %rsi,%r14
movss  %xmm3,0x18(%rsp)
mov    %rdi,%r15
movaps %xmm1,0x20(%rsp)
movaps %xmm0,%xmm3
minss  %xmm2,%xmm3
movaps %xmm3,0x30(%rsp)
maxss  %xmm2,%xmm0
movaps %xmm0,0x40(%rsp)
movaps %xmm1,%xmm0
call   *%rdi
movaps 0x30(%rsp),%xmm7
movaps 0x40(%rsp),%xmm12
movaps 0x20(%rsp),%xmm10
movaps %xmm0,%xmm15
mov    $0x64,%ebp
movaps 0xea6(%rip),%xmm13
xorps  %xmm0,%xmm0
movaps %xmm0,0x70(%rsp)
movaps %xmm10,%xmm2
movaps %xmm10,%xmm9
movaps %xmm15,%xmm11
movss  %xmm15,0x8(%rsp)
jmp    11e6 <brent+0xd6>
nopw   0x0(%rax,%rax,1)
movaps %xmm3,%xmm1
cmpnless %xmm10,%xmm1
movaps %xmm1,%xmm2
andps  %xmm3,%xmm2
andnps 0x40(%rsp),%xmm1
orps   %xmm2,%xmm1
movss  0x14(%rsp),%xmm2
movss  %xmm2,0x8(%rsp)
movaps %xmm15,%xmm11
movaps %xmm0,%xmm15
movaps %xmm1,%xmm12
movaps %xmm4,%xmm1
movss  0x10(%rsp),%xmm9
movaps %xmm3,%xmm2
movaps 0xe3c(%rip),%xmm13
movaps 0x60(%rsp),%xmm8
movaps %xmm1,%xmm7
add    $0xffffffff,%ebp
je     1533 <brent+0x423>
movaps %xmm12,%xmm1
addss  %xmm7,%xmm1
movaps %xmm10,%xmm0
andps  %xmm13,%xmm0
mulss  0x18(%rsp),%xmm0
cvtss2sd %xmm0,%xmm0
addsd  0xe28(%rip),%xmm0
xorps  %xmm14,%xmm14
cvtsd2ss %xmm0,%xmm14
mulss  0xde7(%rip),%xmm1
movaps %xmm14,%xmm3
addss  %xmm14,%xmm3
movaps %xmm10,%xmm4
subss  %xmm1,%xmm4
andps  %xmm13,%xmm4
cvtss2sd %xmm4,%xmm4
xorps  %xmm5,%xmm5
cvtss2sd %xmm3,%xmm5
movaps %xmm12,%xmm6
subss  %xmm7,%xmm6
cvtss2sd %xmm6,%xmm6
mulsd  0xdeb(%rip),%xmm6
addsd  %xmm5,%xmm6
ucomisd %xmm4,%xmm6
jae    1559 <brent+0x449>
movss  %xmm15,0xc(%rsp)
movaps 0x70(%rsp),%xmm15
movaps %xmm15,%xmm4
andps  %xmm13,%xmm4
ucomiss %xmm14,%xmm4
movss  %xmm9,0x1c(%rsp)
movaps %xmm7,0x30(%rsp)
movss  %xmm2,0x10(%rsp)
jbe    13a0 <brent+0x290>
movaps %xmm10,%xmm4
subss  %xmm2,%xmm4
movss  0xc(%rsp),%xmm6
movaps %xmm6,%xmm7
subss  0x8(%rsp),%xmm7
mulss  %xmm4,%xmm7
movaps %xmm10,%xmm5
subss  %xmm9,%xmm5
subss  %xmm11,%xmm6
mulss  %xmm5,%xmm6
mulss  %xmm7,%xmm4
mulss  %xmm6,%xmm5
subss  %xmm4,%xmm5
subss  %xmm7,%xmm6
addss  %xmm6,%xmm6
movaps %xmm6,%xmm9
andps  %xmm13,%xmm9
movaps %xmm5,%xmm7
xorps  %xmm2,%xmm2
cvtss2sd %xmm9,%xmm2
mulsd  0xd60(%rip),%xmm2
xorps  %xmm4,%xmm4
cvtss2sd %xmm15,%xmm4
mulsd  %xmm2,%xmm4
xorps  %xmm2,%xmm2
cvtsd2ss %xmm4,%xmm2
andps  %xmm13,%xmm7
andps  %xmm13,%xmm2
ucomiss %xmm2,%xmm7
movaps 0x30(%rsp),%xmm7
jae    13a0 <brent+0x290>
movaps %xmm5,%xmm2
xorps  0xd05(%rip),%xmm2
xorps  %xmm4,%xmm4
cmpltss %xmm6,%xmm4
andps  %xmm4,%xmm2
andnps %xmm5,%xmm4
orps   %xmm2,%xmm4
movaps %xmm7,%xmm2
subss  %xmm10,%xmm2
mulss  %xmm9,%xmm2
ucomiss %xmm4,%xmm2
jae    13a0 <brent+0x290>
movaps %xmm12,%xmm2
subss  %xmm10,%xmm2
mulss  %xmm9,%xmm2
ucomiss %xmm2,%xmm4
jae    13a0 <brent+0x290>
divss  %xmm9,%xmm4
movaps %xmm10,%xmm0
addss  %xmm4,%xmm0
movaps %xmm0,%xmm2
subss  %xmm7,%xmm2
ucomiss %xmm2,%xmm3
ja     1377 <brent+0x267>
movaps %xmm12,%xmm2
subss  %xmm0,%xmm2
ucomiss %xmm2,%xmm3
jbe    13d2 <brent+0x2c2>
subss  %xmm10,%xmm1
ucomiss 0xc81(%rip),%xmm1
movaps %xmm14,%xmm4
andps  %xmm13,%xmm4
jae    13d2 <brent+0x2c2>
xorps  0xc8c(%rip),%xmm4
jmp    13d2 <brent+0x2c2>
cs nopw 0x0(%rax,%rax,1)
cmpnless %xmm10,%xmm1
movaps %xmm1,%xmm2
andps  %xmm12,%xmm2
andnps %xmm7,%xmm1
orps   %xmm2,%xmm1
subss  %xmm10,%xmm1
xorps  %xmm2,%xmm2
cvtss2sd %xmm1,%xmm2
mulsd  0xc79(%rip),%xmm2
xorps  %xmm4,%xmm4
cvtsd2ss %xmm2,%xmm4
movaps %xmm1,%xmm8
movss  %xmm11,0x14(%rsp)
movaps %xmm4,%xmm1
andps  %xmm13,%xmm1
ucomiss %xmm14,%xmm1
movaps %xmm4,%xmm0
jae    1401 <brent+0x2f1>
ucomiss 0xc14(%rip),%xmm4
andps  %xmm13,%xmm14
movaps %xmm14,%xmm0
jae    1401 <brent+0x2f1>
xorps  0xc1f(%rip),%xmm0
movaps %xmm4,0x60(%rsp)
movaps %xmm8,0x70(%rsp)
movaps %xmm12,0x40(%rsp)
addss  %xmm10,%xmm0
movaps %xmm0,0x50(%rsp)
movaps %xmm10,0x20(%rsp)
call   *%r15
movss  0xc(%rsp),%xmm15
ucomiss %xmm0,%xmm15
jae    14e0 <brent+0x3d0>
movaps 0x50(%rsp),%xmm5
movaps 0x20(%rsp),%xmm10
ucomiss %xmm5,%xmm10
movaps %xmm5,%xmm1
movss  0x8(%rsp),%xmm3
movss  0x1c(%rsp),%xmm4
ja     145b <brent+0x34b>
movaps 0x30(%rsp),%xmm1
movaps %xmm5,%xmm2
cmpltss %xmm10,%xmm2
movaps 0x40(%rsp),%xmm12
andps  %xmm2,%xmm12
andnps %xmm5,%xmm2
orps   %xmm2,%xmm12
movss  0x14(%rsp),%xmm11
ucomiss %xmm0,%xmm11
movaps 0xb88(%rip),%xmm13
movaps 0x60(%rsp),%xmm8
jae    1519 <brent+0x409>
movss  0x10(%rsp),%xmm2
ucomiss %xmm10,%xmm2
jne    14a2 <brent+0x392>
jnp    1502 <brent+0x3f2>
ucomiss %xmm0,%xmm3
setae  %al
ucomiss %xmm10,%xmm4
setnp  %cl
sete   %dl
and    %cl,%dl
ucomiss %xmm2,%xmm4
setnp  %cl
sete   %bl
and    %cl,%bl
or     %dl,%bl
or     %al,%bl
jne    14cb <brent+0x3bb>
movaps %xmm3,%xmm0
movaps %xmm4,%xmm5
movss  %xmm0,0x8(%rsp)
movaps %xmm5,%xmm9
jmp    11da <brent+0xca>
nopw   0x0(%rax,%rax,1)
movaps 0x50(%rsp),%xmm10
movaps 0x20(%rsp),%xmm3
ucomiss %xmm3,%xmm10
movaps 0x30(%rsp),%xmm4
jb     1190 <brent+0x80>
movaps %xmm3,%xmm4
jmp    1190 <brent+0x80>
movss  %xmm11,0x8(%rsp)
movaps %xmm0,%xmm11
movaps %xmm2,%xmm9
movaps %xmm5,%xmm2
jmp    11da <brent+0xca>
movss  %xmm11,0x8(%rsp)
movaps %xmm0,%xmm11
movss  0x10(%rsp),%xmm9
movaps %xmm5,%xmm2
jmp    11da <brent+0xca>
lea    0xb16(%rip),%rdi
movaps %xmm10,0x20(%rsp)
movss  %xmm15,0xc(%rsp)
call   1030 <nrerror@plt>
movss  0xc(%rsp),%xmm15
movaps 0x20(%rsp),%xmm10
movss  %xmm10,(%r14)
movaps %xmm15,%xmm0
add    $0x88,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

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

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