#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 */
double Rf_d1mach(int);
double apser(double, double, double, double);
double basym(double, double, double, double);
double bfrac(double, double, double, double, double, double);
int /*<<< orphan*/ bgrat(double, double, double, double, double *, int, int *);
double bpser(double, double, double, double);
double bup(double, double, double, double, int, double);
double fabs(double);
double fpser(double, double, double, double);
float pow(double, double);
void bratio(double a, double b, double x, double y, double *w, double *w1,
            int *ierr) {
  double d__1;
  int n;
  double t, z__, a0, b0, x0, y0;
  int ind;
  double eps;
  int ierr1;
  double lambda;
  eps = 2.0 * Rf_d1mach(3);
  *w = 0.0;
  *w1 = 0.0;
  if (a < 0.0 || b < 0.0) {
    goto L300;
  }
  if (a == 0.0 && b == 0.0) {
    goto L310;
  }
  if (x < 0.0 || x > 1.0) {
    goto L320;
  }
  if (y < 0.0 || y > 1.0) {
    goto L330;
  }
  z__ = x + y - 0.5 - 0.5;
  if (fabs(z__) > eps * 3.0) {
    goto L340;
  }
  *ierr = 0;
  if (x == 0.0) {
    goto L200;
  }
  if (y == 0.0) {
    goto L210;
  }
  if (a == 0.0) {
    goto L211;
  }
  if (b == 0.0) {
    goto L201;
  }
  eps = ((eps > 1e-15) ? eps : 1e-15);
  if (((a > b) ? a : b) < eps * .001) {
    goto L230;
  }
  ind = 0;
  a0 = a;
  b0 = b;
  x0 = x;
  y0 = y;
  if (((a0 < b0) ? a0 : b0) > 1.0) {
    goto L30;
  }
  if (x <= 0.5) {
    goto L10;
  }
  ind = 1;
  a0 = b;
  b0 = a;
  x0 = y;
  y0 = x;
L10:
  if (b0 < ((eps < eps * a0) ? eps : eps * a0)) {
    goto L80;
  }
  if (a0 < ((eps < eps * b0) ? eps : eps * b0) && b0 * x0 <= 1.0) {
    goto L90;
  }
  if (((a0 > b0) ? a0 : b0) > 1.0) {
    goto L20;
  }
  if (a0 >= ((.2 < b0) ? .2 : b0)) {
    goto L100;
  }
  if (pow(x0, a0) <= .9f) {
    goto L100;
  }
  if (x0 >= .3f) {
    goto L110;
  }
  n = 20;
  goto L130;
L20:
  if (b0 <= 1.0) {
    goto L100;
  }
  if (x0 >= .3f) {
    goto L110;
  }
  if (x0 >= .1f) {
    goto L21;
  }
  if (pow(x0 * b0, a0) <= .7f) {
    goto L100;
  }
L21:
  if (b0 > 15.0) {
    goto L131;
  }
  n = 20;
  goto L130;
L30:
  if (a > b) {
    goto L31;
  }
  lambda = a - (a + b) * x;
  goto L32;
L31:
  lambda = (a + b) * y - b;
L32:
  if (lambda >= 0.0) {
    goto L40;
  }
  ind = 1;
  a0 = b;
  b0 = a;
  x0 = y;
  y0 = x;
  lambda = fabs(lambda);
L40:
  if (b0 < 40.0 && b0 * x0 <= .7f) {
    goto L100;
  }
  if (b0 < 40.0) {
    goto L140;
  }
  if (a0 > b0) {
    goto L50;
  }
  if (a0 <= 100.0) {
    goto L120;
  }
  if (lambda > a0 * .03f) {
    goto L120;
  }
  goto L180;
L50:
  if (b0 <= 100.0) {
    goto L120;
  }
  if (lambda > b0 * .03f) {
    goto L120;
  }
  goto L180;
L80:
  *w = fpser(a0, b0, x0, eps);
  *w1 = 0.5 - *w + 0.5;
  goto L220;
L90:
  *w1 = apser(a0, b0, x0, eps);
  *w = 0.5 - *w1 + 0.5;
  goto L220;
L100:
  *w = bpser(a0, b0, x0, eps);
  *w1 = 0.5 - *w + 0.5;
  goto L220;
L110:
  *w1 = bpser(b0, a0, y0, eps);
  *w = 0.5 - *w1 + 0.5;
  goto L220;
L120:
  d__1 = eps * 15.0;
  *w = bfrac(a0, b0, x0, y0, lambda, d__1);
  *w1 = 0.5 - *w + 0.5;
  goto L220;
L130:
  *w1 = bup(b0, a0, y0, x0, n, eps);
  b0 += n;
L131:
  bgrat(b0, a0, y0, x0, w1, 15 * eps, &ierr1);
  *w = 0.5 - *w1 + 0.5;
  goto L220;
L140:
  n = (int)b0;
  b0 -= n;
  if (b0 != 0.0) {
    goto L141;
  }
  --n;
  b0 = 1.0;
L141:
  *w = bup(b0, a0, y0, x0, n, eps);
  if (x0 > .7f) {
    goto L150;
  }
  *w += bpser(a0, b0, x0, eps);
  *w1 = 0.5 - *w + 0.5;
  goto L220;
L150:
  if (a0 > 15.0) {
    goto L151;
  }
  n = 20;
  *w += bup(a0, b0, x0, y0, n, eps);
  a0 += n;
L151:
  bgrat(a0, b0, x0, y0, w, 15 * eps, &ierr1);
  *w1 = 0.5 - *w + 0.5;
  goto L220;
L180:
  d__1 = eps * 100.0;
  *w = basym(a0, b0, lambda, d__1);
  *w1 = 0.5 - *w + 0.5;
  goto L220;
L200:
  if (a == 0.0) {
    goto L350;
  }
L201:
  *w = 0.0;
  *w1 = 1.0;
  return;
L210:
  if (b == 0.0) {
    goto L360;
  }
L211:
  *w = 1.0;
  *w1 = 0.0;
  return;
L220:
  if (ind == 0) {
    return;
  }
  t = *w;
  *w = *w1;
  *w1 = t;
  return;
L230:
  *w = b / (a + b);
  *w1 = a / (a + b);
  return;
L300:
  *ierr = 1;
  return;
L310:
  *ierr = 2;
  return;
L320:
  *ierr = 3;
  return;
L330:
  *ierr = 4;
  return;
L340:
  *ierr = 5;
  return;
L350:
  *ierr = 6;
  return;
L360:
  *ierr = 7;
  return;
}


x86 assembly (clang, -O0):
<bratio>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
mov    %rdi,-0x28(%rbp)
mov    %rsi,-0x30(%rbp)
mov    %rdx,-0x38(%rbp)
mov    $0x3,%edi
call   1090 <Rf_d1mach@plt>
movaps %xmm0,%xmm1
movsd  0xe30(%rip),%xmm0
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
xorps  %xmm0,%xmm0
ucomisd -0x8(%rbp),%xmm0
ja     120e <bratio+0x7e>
xorps  %xmm0,%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    1213 <bratio+0x83>
jmp    1eb6 <bratio+0xd26>
movsd  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1248 <bratio+0xb8>
jp     1248 <bratio+0xb8>
movsd  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1248 <bratio+0xb8>
jp     1248 <bratio+0xb8>
jmp    1ec5 <bratio+0xd35>
xorps  %xmm0,%xmm0
ucomisd -0x18(%rbp),%xmm0
ja     126d <bratio+0xdd>
movsd  -0x18(%rbp),%xmm0
movsd  0xda5(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1272 <bratio+0xe2>
jmp    1ed4 <bratio+0xd44>
xorps  %xmm0,%xmm0
ucomisd -0x20(%rbp),%xmm0
ja     1297 <bratio+0x107>
movsd  -0x20(%rbp),%xmm0
movsd  0xd7b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    129c <bratio+0x10c>
jmp    1ee3 <bratio+0xd53>
movsd  -0x18(%rbp),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  0xd6a(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xd5e(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movaps 0xda1(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0xd35(%rip),%xmm1
mulsd  -0x88(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jbe    12f2 <bratio+0x162>
jmp    1ef2 <bratio+0xd62>
mov    -0x38(%rbp),%rax
movl   $0x0,(%rax)
movsd  -0x18(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1319 <bratio+0x189>
jp     1319 <bratio+0x189>
jmp    1db9 <bratio+0xc29>
movsd  -0x20(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1336 <bratio+0x1a6>
jp     1336 <bratio+0x1a6>
jmp    1dfb <bratio+0xc6b>
movsd  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1353 <bratio+0x1c3>
jp     1353 <bratio+0x1c3>
jmp    1e1d <bratio+0xc8d>
movsd  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1370 <bratio+0x1e0>
jp     1370 <bratio+0x1e0>
jmp    1ddb <bratio+0xc4b>
movsd  -0x88(%rbp),%xmm0
ff
movsd  0xca0(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    139f <bratio+0x20f>
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
jmp    13b4 <bratio+0x224>
movsd  0xc79(%rip),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
jmp    13b4 <bratio+0x224>
movsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    13e6 <bratio+0x256>
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
jmp    13f3 <bratio+0x263>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm1
ff
movsd  0xc25(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    141a <bratio+0x28a>
jmp    1e7b <bratio+0xceb>
movl   $0x0,-0x7c(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x60(%rbp),%xmm1
movsd  -0x68(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    146f <bratio+0x2df>
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    147c <bratio+0x2ec>
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0xb7c(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    149b <bratio+0x30b>
jmp    1795 <bratio+0x605>
movsd  0xb75(%rip),%xmm0
ucomisd -0x18(%rbp),%xmm0
jb     14b3 <bratio+0x323>
jmp    14e2 <bratio+0x352>
movl   $0x1,-0x7c(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x88(%rbp),%xmm1
ff
movsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x60(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1523 <bratio+0x393>
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
jmp    1538 <bratio+0x3a8>
movsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm1
ff
movsd  -0xc0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    1557 <bratio+0x3c7>
jmp    196c <bratio+0x7dc>
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x88(%rbp),%xmm1
ff
movsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x68(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1598 <bratio+0x408>
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xd0(%rbp)
ff
jmp    15ad <bratio+0x41d>
movsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc8(%rbp),%xmm1
ff
movsd  -0xd0(%rbp),%xmm0
ff
ucomisd %xmm1,%xmm0
jbe    15e8 <bratio+0x458>
movsd  -0x68(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
movsd  0xa2f(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     15e8 <bratio+0x458>
jmp    19b9 <bratio+0x829>
movsd  -0x60(%rbp),%xmm0
ucomisd -0x68(%rbp),%xmm0
jbe    160a <bratio+0x47a>
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
jmp    1617 <bratio+0x487>
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  0x9e1(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1636 <bratio+0x4a6>
jmp    16eb <bratio+0x55b>
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  0x9e0(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    166f <bratio+0x4df>
movsd  0x9ce(%rip),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
jmp    167c <bratio+0x4ec>
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0xe0(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
ucomisd %xmm1,%xmm0
jb     169b <bratio+0x50b>
jmp    1a06 <bratio+0x876>
movsd  -0x70(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
call   1080 <pow@plt>
movaps %xmm0,%xmm1
movss  0x9cb(%rip),%xmm0
ucomiss %xmm1,%xmm0
jb     16c3 <bratio+0x533>
jmp    1a06 <bratio+0x876>
movsd  -0x70(%rbp),%xmm0
movsd  0x968(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     16df <bratio+0x54f>
jmp    1a53 <bratio+0x8c3>
movl   $0x14,-0x44(%rbp)
jmp    1b0c <bratio+0x97c>
movsd  0x915(%rip),%xmm0
ucomisd -0x68(%rbp),%xmm0
jb     1703 <bratio+0x573>
jmp    1a06 <bratio+0x876>
movsd  -0x70(%rbp),%xmm0
movsd  0x928(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     171f <bratio+0x58f>
jmp    1a53 <bratio+0x8c3>
movsd  -0x70(%rbp),%xmm0
movsd  0x914(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     173b <bratio+0x5ab>
jmp    176d <bratio+0x5dd>
movsd  -0x70(%rbp),%xmm0
mulsd  -0x68(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
call   1080 <pow@plt>
movaps %xmm0,%xmm1
movss  0x92a(%rip),%xmm0
ucomiss %xmm1,%xmm0
jb     1768 <bratio+0x5d8>
jmp    1a06 <bratio+0x876>
jmp    176d <bratio+0x5dd>
movsd  -0x68(%rbp),%xmm0
movsd  0x8ce(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1789 <bratio+0x5f9>
jmp    1b47 <bratio+0x9b7>
movl   $0x14,-0x44(%rbp)
jmp    1b0c <bratio+0x97c>
movsd  -0x8(%rbp),%xmm0
ucomisd -0x10(%rbp),%xmm0
jbe    17aa <bratio+0x61a>
jmp    17ea <bratio+0x65a>
movsd  -0x8(%rbp),%xmm1
movsd  -0x8(%rbp),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
jmp    1825 <bratio+0x695>
movsd  -0x8(%rbp),%xmm0
addsd  -0x10(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm2
movsd  -0x10(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     183f <bratio+0x6af>
jmp    1889 <bratio+0x6f9>
movl   $0x1,-0x7c(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x98(%rbp),%xmm0
ff
movaps 0x7f3(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  0x7bf(%rip),%xmm0
ucomisd -0x68(%rbp),%xmm0
jbe    18bd <bratio+0x72d>
movsd  -0x68(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
movsd  0x7aa(%rip),%xmm0
ucomisd %xmm1,%xmm0
jb     18bd <bratio+0x72d>
jmp    1a06 <bratio+0x876>
movsd  0x78b(%rip),%xmm0
ucomisd -0x68(%rbp),%xmm0
jbe    18d5 <bratio+0x745>
jmp    1ba8 <bratio+0xa18>
movsd  -0x60(%rbp),%xmm0
ucomisd -0x68(%rbp),%xmm0
jbe    18ea <bratio+0x75a>
jmp    192b <bratio+0x79b>
movsd  0x76e(%rip),%xmm0
ucomisd -0x60(%rbp),%xmm0
jb     1902 <bratio+0x772>
jmp    1aa0 <bratio+0x910>
movsd  -0x98(%rbp),%xmm0
ff
movsd  0x756(%rip),%xmm1
mulsd  -0x60(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jbe    1926 <bratio+0x796>
jmp    1aa0 <bratio+0x910>
jmp    1d57 <bratio+0xbc7>
movsd  0x72d(%rip),%xmm0
ucomisd -0x68(%rbp),%xmm0
jb     1943 <bratio+0x7b3>
jmp    1aa0 <bratio+0x910>
movsd  -0x98(%rbp),%xmm0
ff
movsd  0x715(%rip),%xmm1
mulsd  -0x68(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jbe    1967 <bratio+0x7d7>
jmp    1aa0 <bratio+0x910>
jmp    1d57 <bratio+0xbc7>
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm3
ff
call   1060 <fpser@plt>
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
movsd  0x67c(%rip),%xmm0
subsd  (%rax),%xmm0
movsd  0x670(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1e3d <bratio+0xcad>
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm3
ff
call   10a0 <apser@plt>
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  0x62f(%rip),%xmm0
subsd  (%rax),%xmm0
movsd  0x623(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1e3d <bratio+0xcad>
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm3
ff
call   10b0 <bpser@plt>
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
movsd  0x5e2(%rip),%xmm0
subsd  (%rax),%xmm0
movsd  0x5d6(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1e3d <bratio+0xcad>
movsd  -0x68(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm3
ff
call   10b0 <bpser@plt>
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  0x595(%rip),%xmm0
subsd  (%rax),%xmm0
movsd  0x589(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1e3d <bratio+0xcad>
movsd  0x5a0(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x40(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm3
movsd  -0x98(%rbp),%xmm4
ff
movsd  -0x40(%rbp),%xmm5
call   1030 <bfrac@plt>
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
movsd  0x529(%rip),%xmm0
subsd  (%rax),%xmm0
movsd  0x51d(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1e3d <bratio+0xcad>
movsd  -0x68(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm3
mov    -0x44(%rbp),%edi
movsd  -0x88(%rbp),%xmm4
ff
call   1070 <bup@plt>
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
cvtsi2sdl -0x44(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm3
mov    -0x30(%rbp),%rdi
movsd  0x4e1(%rip),%xmm4
mulsd  -0x88(%rbp),%xmm4
ff
cvttsd2si %xmm4,%esi
lea    -0x8c(%rbp),%rdx
call   1050 <bgrat@plt>
mov    -0x30(%rbp),%rax
movsd  0x48d(%rip),%xmm0
subsd  (%rax),%xmm0
movsd  0x481(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1e3d <bratio+0xcad>
cvttsd2si -0x68(%rbp),%eax
mov    %eax,-0x44(%rbp)
cvtsi2sdl -0x44(%rbp),%xmm1
movsd  -0x68(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1be0 <bratio+0xa50>
jp     1be0 <bratio+0xa50>
jmp    1be5 <bratio+0xa55>
jmp    1bfb <bratio+0xa6b>
mov    -0x44(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x44(%rbp)
movsd  0x412(%rip),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  -0x60(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm2
movsd  -0x70(%rbp),%xmm3
mov    -0x44(%rbp),%edi
movsd  -0x88(%rbp),%xmm4
ff
call   1070 <bup@plt>
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x70(%rbp),%xmm0
movsd  0x424(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1c43 <bratio+0xab3>
jmp    1c94 <bratio+0xb04>
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm2
movsd  -0x88(%rbp),%xmm3
ff
call   10b0 <bpser@plt>
mov    -0x28(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
movsd  0x3a1(%rip),%xmm0
subsd  (%rax),%xmm0
movsd  0x395(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1e3d <bratio+0xcad>
movsd  -0x60(%rbp),%xmm0
movsd  0x3a7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1cb0 <bratio+0xb20>
jmp    1cf6 <bratio+0xb66>
movl   $0x14,-0x44(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm3
mov    -0x44(%rbp),%edi
movsd  -0x88(%rbp),%xmm4
ff
call   1070 <bup@plt>
mov    -0x28(%rbp),%rax
addsd  (%rax),%xmm0
movsd  %xmm0,(%rax)
cvtsi2sdl -0x44(%rbp),%xmm0
addsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm2
movsd  -0x78(%rbp),%xmm3
mov    -0x28(%rbp),%rdi
movsd  0x332(%rip),%xmm4
mulsd  -0x88(%rbp),%xmm4
ff
cvttsd2si %xmm4,%esi
lea    -0x8c(%rbp),%rdx
call   1050 <bgrat@plt>
mov    -0x28(%rbp),%rax
movsd  0x2de(%rip),%xmm0
subsd  (%rax),%xmm0
movsd  0x2d2(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1e3d <bratio+0xcad>
movsd  0x301(%rip),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x40(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x40(%rbp),%xmm3
call   1040 <basym@plt>
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
mov    -0x28(%rbp),%rax
movsd  0x27c(%rip),%xmm0
subsd  (%rax),%xmm0
movsd  0x270(%rip),%xmm1
addsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1e3d <bratio+0xcad>
movsd  -0x8(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1dd6 <bratio+0xc46>
jp     1dd6 <bratio+0xc46>
jmp    1f01 <bratio+0xd71>
jmp    1ddb <bratio+0xc4b>
mov    -0x28(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
movsd  0x216(%rip),%xmm0
movsd  %xmm0,(%rax)
jmp    1f1a <bratio+0xd8a>
movsd  -0x10(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1e18 <bratio+0xc88>
jp     1e18 <bratio+0xc88>
jmp    1f10 <bratio+0xd80>
jmp    1e1d <bratio+0xc8d>
mov    -0x28(%rbp),%rax
movsd  0x1df(%rip),%xmm0
movsd  %xmm0,(%rax)
mov    -0x30(%rbp),%rax
xorps  %xmm0,%xmm0
movsd  %xmm0,(%rax)
jmp    1f1a <bratio+0xd8a>
cmpl   $0x0,-0x7c(%rbp)
jne    1e4c <bratio+0xcbc>
jmp    1f1a <bratio+0xd8a>
mov    -0x28(%rbp),%rax
movsd  (%rax),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x30(%rbp),%rax
movsd  (%rax),%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x50(%rbp),%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1f1a <bratio+0xd8a>
movsd  -0x10(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
addsd  -0x10(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x28(%rbp),%rax
movsd  %xmm0,(%rax)
movsd  -0x8(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
addsd  -0x10(%rbp),%xmm1
divsd  %xmm1,%xmm0
mov    -0x30(%rbp),%rax
movsd  %xmm0,(%rax)
jmp    1f1a <bratio+0xd8a>
mov    -0x38(%rbp),%rax
movl   $0x1,(%rax)
jmp    1f1a <bratio+0xd8a>
mov    -0x38(%rbp),%rax
movl   $0x2,(%rax)
jmp    1f1a <bratio+0xd8a>
mov    -0x38(%rbp),%rax
movl   $0x3,(%rax)
jmp    1f1a <bratio+0xd8a>
mov    -0x38(%rbp),%rax
movl   $0x4,(%rax)
jmp    1f1a <bratio+0xd8a>
mov    -0x38(%rbp),%rax
movl   $0x5,(%rax)
jmp    1f1a <bratio+0xd8a>
mov    -0x38(%rbp),%rax
movl   $0x6,(%rax)
jmp    1f1a <bratio+0xd8a>
mov    -0x38(%rbp),%rax
movl   $0x7,(%rax)
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<bratio>:
push   %r15
push   %r14
push   %rbx
sub    $0x40,%rsp
mov    %rdx,%rbx
mov    %rsi,%r14
mov    %rdi,%r15
movsd  %xmm3,0x10(%rsp)
movsd  %xmm2,0x18(%rsp)
movsd  %xmm1,(%rsp)
movapd %xmm0,0x20(%rsp)
mov    $0x3,%edi
call   1090 <Rf_d1mach@plt>
movsd  (%rsp),%xmm6
movapd 0x20(%rsp),%xmm1
movapd %xmm0,%xmm5
movq   $0x0,(%r15)
movq   $0x0,(%r14)
xorpd  %xmm0,%xmm0
ucomisd %xmm1,%xmm0
ja     120f <bratio+0x7f>
ucomisd %xmm6,%xmm0
ja     120f <bratio+0x7f>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jne    1217 <bratio+0x87>
jp     1217 <bratio+0x87>
ucomisd %xmm0,%xmm6
jne    1217 <bratio+0x87>
jp     1217 <bratio+0x87>
movl   $0x2,(%rbx)
jmp    1293 <bratio+0x103>
movl   $0x1,(%rbx)
jmp    1293 <bratio+0x103>
movsd  0x18(%rsp),%xmm3
ucomisd %xmm3,%xmm0
ja     1285 <bratio+0xf5>
ucomisd 0xdd5(%rip),%xmm3
ja     1285 <bratio+0xf5>
xorpd  %xmm0,%xmm0
movsd  0x10(%rsp),%xmm7
ucomisd %xmm7,%xmm0
ja     128d <bratio+0xfd>
ucomisd 0xdbb(%rip),%xmm7
ja     128d <bratio+0xfd>
addsd  %xmm5,%xmm5
movapd %xmm3,%xmm0
addsd  %xmm7,%xmm0
movsd  0xdad(%rip),%xmm2
addsd  %xmm2,%xmm0
addsd  %xmm2,%xmm0
andpd  0xe15(%rip),%xmm0
movsd  0xd9d(%rip),%xmm2
mulsd  %xmm5,%xmm2
ucomisd %xmm2,%xmm0
jbe    129d <bratio+0x10d>
movl   $0x5,(%rbx)
jmp    1293 <bratio+0x103>
movl   $0x3,(%rbx)
jmp    1293 <bratio+0x103>
movl   $0x4,(%rbx)
add    $0x40,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret
movl   $0x0,(%rbx)
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm3
jne    12bf <bratio+0x12f>
jp     12bf <bratio+0x12f>
ucomisd %xmm0,%xmm1
jne    1305 <bratio+0x175>
jp     1305 <bratio+0x175>
movl   $0x6,(%rbx)
jmp    1293 <bratio+0x103>
ucomisd %xmm0,%xmm7
jne    12db <bratio+0x14b>
jp     12db <bratio+0x14b>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm6
jne    12e7 <bratio+0x157>
jp     12e7 <bratio+0x157>
movl   $0x7,(%rbx)
jmp    1293 <bratio+0x103>
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jne    12fd <bratio+0x16d>
jp     12fd <bratio+0x16d>
movabs $0x3ff0000000000000,%rax
mov    %rax,(%r15)
movq   $0x0,(%r14)
jmp    1293 <bratio+0x103>
ucomisd %xmm0,%xmm6
jne    131e <bratio+0x18e>
jp     131e <bratio+0x18e>
movq   $0x0,(%r15)
movabs $0x3ff0000000000000,%rax
mov    %rax,(%r14)
jmp    1293 <bratio+0x103>
maxsd  0xcf2(%rip),%xmm5
movapd %xmm1,%xmm0
maxsd  %xmm6,%xmm0
movsd  0xcea(%rip),%xmm2
mulsd  %xmm5,%xmm2
ucomisd %xmm0,%xmm2
jbe    135f <bratio+0x1cf>
movapd %xmm1,%xmm0
addsd  %xmm6,%xmm0
divsd  %xmm0,%xmm6
movsd  %xmm6,(%r15)
divsd  %xmm0,%xmm1
movsd  %xmm1,(%r14)
jmp    1293 <bratio+0x103>
movapd %xmm1,%xmm0
minsd  %xmm6,%xmm0
ucomisd 0xc91(%rip),%xmm0
jbe    138d <bratio+0x1fd>
ucomisd %xmm6,%xmm1
movapd %xmm1,%xmm0
addsd  %xmm6,%xmm0
jbe    13ad <bratio+0x21d>
mulsd  %xmm7,%xmm0
subsd  %xmm6,%xmm0
movapd %xmm0,%xmm4
jmp    13b9 <bratio+0x229>
xor    %ebx,%ebx
movsd  0xc91(%rip),%xmm0
ucomisd %xmm3,%xmm0
jae    13dd <bratio+0x24d>
mov    $0x1,%ebx
movapd %xmm6,%xmm8
movapd %xmm7,%xmm2
jmp    13ee <bratio+0x25e>
mulsd  %xmm3,%xmm0
movapd %xmm1,%xmm4
subsd  %xmm0,%xmm4
xor    %ebx,%ebx
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm4
jae    141c <bratio+0x28c>
andpd  0xcb3(%rip),%xmm4
mov    $0x1,%ebx
movapd %xmm6,%xmm8
movapd %xmm7,%xmm2
jmp    142d <bratio+0x29d>
movapd %xmm1,%xmm8
movapd %xmm6,%xmm1
movapd %xmm3,%xmm2
movapd %xmm7,%xmm3
movapd %xmm5,%xmm0
mulsd  %xmm8,%xmm0
movapd %xmm5,%xmm4
minsd  %xmm0,%xmm4
ucomisd %xmm1,%xmm4
jbe    1582 <bratio+0x3f2>
movapd %xmm8,%xmm0
movapd %xmm5,%xmm3
call   1060 <fpser@plt>
jmp    17ff <bratio+0x66f>
movapd %xmm1,%xmm8
movapd %xmm6,%xmm1
movapd %xmm3,%xmm2
movapd %xmm7,%xmm3
movsd  0xc23(%rip),%xmm0
ucomisd %xmm1,%xmm0
jbe    1455 <bratio+0x2c5>
movapd %xmm1,%xmm6
mulsd  %xmm2,%xmm6
movsd  0xc15(%rip),%xmm7
ucomisd %xmm6,%xmm7
jae    17f1 <bratio+0x661>
movsd  %xmm2,(%rsp)
movsd  %xmm3,0x18(%rsp)
movsd  %xmm5,0x10(%rsp)
ucomisd %xmm1,%xmm0
jbe    15da <bratio+0x44a>
cvttsd2si %xmm1,%eax
cvttpd2dq %xmm1,%xmm0
cvtdq2pd %xmm0,%xmm0
subsd  %xmm0,%xmm1
xorpd  %xmm0,%xmm0
movapd %xmm1,%xmm2
cmpeqsd %xmm0,%xmm2
movq   %xmm2,%rdi
add    %eax,%edi
cmpneqsd %xmm1,%xmm0
andpd  %xmm0,%xmm1
movsd  0xb5b(%rip),%xmm2
andnpd %xmm2,%xmm0
orpd   %xmm1,%xmm0
movapd %xmm0,0x20(%rsp)
movsd  %xmm8,0x8(%rsp)
movapd %xmm8,%xmm1
movsd  0x18(%rsp),%xmm2
movsd  (%rsp),%xmm3
movsd  0x10(%rsp),%xmm4
call   1070 <bup@plt>
movsd  %xmm0,(%r15)
movsd  (%rsp),%xmm0
ucomisd 0xb79(%rip),%xmm0
jbe    169b <bratio+0x50b>
movsd  0x8(%rsp),%xmm0
ucomisd 0xb4d(%rip),%xmm0
ja     1542 <bratio+0x3b2>
movsd  0x8(%rsp),%xmm0
movapd 0x20(%rsp),%xmm1
movsd  (%rsp),%xmm2
movsd  0x18(%rsp),%xmm3
mov    $0x14,%edi
movsd  0x10(%rsp),%xmm4
call   1070 <bup@plt>
addsd  (%r15),%xmm0
movsd  %xmm0,(%r15)
movsd  0x8(%rsp),%xmm0
addsd  0xb14(%rip),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0x10(%rsp),%xmm0
mulsd  0xaf8(%rip),%xmm0
cvttsd2si %xmm0,%esi
lea    0x3c(%rsp),%rdx
movsd  0x8(%rsp),%xmm0
movapd 0x20(%rsp),%xmm1
movsd  (%rsp),%xmm2
movsd  0x18(%rsp),%xmm3
mov    %r15,%rdi
call   1050 <bgrat@plt>
movsd  (%r15),%xmm0
jmp    1804 <bratio+0x674>
movsd  %xmm3,0x18(%rsp)
movapd %xmm1,%xmm0
movsd  %xmm2,(%rsp)
mulsd  %xmm2,%xmm0
movsd  0xa63(%rip),%xmm4
ucomisd %xmm0,%xmm4
jb     1611 <bratio+0x481>
movapd %xmm5,%xmm2
mulsd  %xmm1,%xmm2
movapd %xmm5,%xmm3
minsd  %xmm2,%xmm3
ucomisd %xmm8,%xmm3
jbe    1611 <bratio+0x481>
movapd %xmm8,%xmm0
movsd  (%rsp),%xmm2
movapd %xmm5,%xmm3
call   10a0 <apser@plt>
movsd  %xmm0,(%r14)
mov    %r15,%rax
jmp    1807 <bratio+0x677>
movapd %xmm1,%xmm2
movapd %xmm8,%xmm0
ucomisd %xmm1,%xmm8
jbe    16c1 <bratio+0x531>
movsd  0xa72(%rip),%xmm1
ucomisd %xmm2,%xmm1
jae    1840 <bratio+0x6b0>
movsd  0xa68(%rip),%xmm1
mulsd  %xmm2,%xmm1
jmp    16df <bratio+0x54f>
movsd  %xmm5,0x10(%rsp)
movsd  %xmm8,0x8(%rsp)
movapd %xmm1,0x20(%rsp)
maxsd  %xmm1,%xmm8
ucomisd 0x9ce(%rip),%xmm8
jbe    1709 <bratio+0x579>
ucomisd 0x20(%rsp),%xmm4
jae    17d9 <bratio+0x649>
movsd  (%rsp),%xmm1
ucomisd 0x9e7(%rip),%xmm1
jae    1864 <bratio+0x6d4>
movsd  (%rsp),%xmm1
ucomisd 0x9dc(%rip),%xmm1
jae    1682 <bratio+0x4f2>
movsd  0x8(%rsp),%xmm1
call   1080 <pow@plt>
movss  0xa1b(%rip),%xmm1
ucomiss %xmm0,%xmm1
jae    17d9 <bratio+0x649>
movapd 0x20(%rsp),%xmm0
ucomisd 0x9b8(%rip),%xmm0
jbe    175b <bratio+0x5cb>
jmp    179a <bratio+0x60a>
movsd  0x8(%rsp),%xmm0
movapd 0x20(%rsp),%xmm1
movsd  (%rsp),%xmm2
movsd  0x10(%rsp),%xmm3
call   10b0 <bpser@plt>
addsd  (%r15),%xmm0
jmp    17ff <bratio+0x66f>
movsd  0x99f(%rip),%xmm1
ucomisd %xmm0,%xmm1
jae    1840 <bratio+0x6b0>
movsd  0x995(%rip),%xmm1
mulsd  %xmm0,%xmm1
ucomisd %xmm1,%xmm4
ja     1840 <bratio+0x6b0>
movsd  0x10(%rsp),%xmm3
mulsd  0x971(%rip),%xmm3
movapd %xmm2,%xmm1
movapd %xmm4,%xmm2
call   1040 <basym@plt>
jmp    17ff <bratio+0x66f>
movsd  0x91f(%rip),%xmm0
minsd  0x20(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
ucomisd %xmm0,%xmm1
jae    17d9 <bratio+0x649>
movsd  (%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
call   1080 <pow@plt>
movss  0x951(%rip),%xmm1
ucomiss %xmm0,%xmm1
jae    17d9 <bratio+0x649>
movsd  (%rsp),%xmm0
ucomisd 0x8e3(%rip),%xmm0
jae    1864 <bratio+0x6d4>
movaps 0x20(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm2
movsd  (%rsp),%xmm3
mov    $0x14,%edi
movsd  0x10(%rsp),%xmm4
call   1070 <bup@plt>
movsd  %xmm0,(%r14)
movapd 0x20(%rsp),%xmm0
addsd  0x8bc(%rip),%xmm0
movapd %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
mulsd  0x8a0(%rip),%xmm0
cvttsd2si %xmm0,%esi
lea    0x3c(%rsp),%rdx
movaps 0x20(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm2
movsd  (%rsp),%xmm3
mov    %r14,%rdi
call   1050 <bgrat@plt>
movsd  (%r14),%xmm0
jmp    15d2 <bratio+0x442>
movsd  0x10(%rsp),%xmm5
movapd 0x20(%rsp),%xmm1
movsd  0x8(%rsp),%xmm8
movsd  (%rsp),%xmm2
movapd %xmm8,%xmm0
movapd %xmm5,%xmm3
call   10b0 <bpser@plt>
movsd  %xmm0,(%r15)
mov    %r14,%rax
movsd  0x819(%rip),%xmm1
movapd %xmm1,%xmm2
subsd  %xmm0,%xmm2
addsd  %xmm1,%xmm2
movsd  %xmm2,(%rax)
test   %ebx,%ebx
je     1293 <bratio+0x103>
movsd  (%r15),%xmm0
movsd  (%r14),%xmm1
movsd  %xmm1,(%r15)
movsd  %xmm0,(%r14)
jmp    1293 <bratio+0x103>
movsd  0x10(%rsp),%xmm5
mulsd  0x7fa(%rip),%xmm5
movapd %xmm2,%xmm1
movsd  (%rsp),%xmm2
movsd  0x18(%rsp),%xmm3
call   1030 <bfrac@plt>
jmp    17ff <bratio+0x66f>
movapd 0x20(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
movsd  0x18(%rsp),%xmm2
movsd  0x10(%rsp),%xmm3
call   10b0 <bpser@plt>
jmp    15cd <bratio+0x43d>

LLVM IR (-O0):
define void @bratio(double %0, double %1, double %2, double %3, double* %4, double* %5, i32* %6) {
%8 = alloca double
%9 = alloca double
%10 = alloca double
%11 = alloca double
%12 = alloca double*
%13 = alloca double*
%14 = alloca i32*
%15 = alloca double
%16 = alloca i32
%17 = alloca double
%18 = alloca double
%19 = alloca double
%20 = alloca double
%21 = alloca double
%22 = alloca double
%23 = alloca i32
%24 = alloca double
%25 = alloca i32
%26 = alloca double
store double %0, double* %8
store double %1, double* %9
store double %2, double* %10
store double %3, double* %11
store double* %4, double** %12
store double* %5, double** %13
store i32* %6, i32** %14
%27 = call double @Rf_d1mach(i32 3)
%28 = fmul double 2.000000e+00, %27
store double %28, double* %24
%29 = load double*, double** %12
store double 0.000000e+00, double* %29
%30 = load double*, double** %13
store double 0.000000e+00, double* %30
%31 = load double, double* %8
%32 = fcmp olt double %31, 0.000000e+00
br i1 %32, label %36, label %33
33: ; preds = %7
%34 = load double, double* %9
%35 = fcmp olt double %34, 0.000000e+00
br i1 %35, label %36, label %37
36: ; preds = %33, %7
br label %524
37: ; preds = %33
%38 = load double, double* %8
%39 = fcmp oeq double %38, 0.000000e+00
br i1 %39, label %40, label %44
40: ; preds = %37
%41 = load double, double* %9
%42 = fcmp oeq double %41, 0.000000e+00
br i1 %42, label %43, label %44
43: ; preds = %40
br label %526
44: ; preds = %40, %37
%45 = load double, double* %10
%46 = fcmp olt double %45, 0.000000e+00
br i1 %46, label %50, label %47
47: ; preds = %44
%48 = load double, double* %10
%49 = fcmp ogt double %48, 1.000000e+00
br i1 %49, label %50, label %51
50: ; preds = %47, %44
br label %528
51: ; preds = %47
%52 = load double, double* %11
%53 = fcmp olt double %52, 0.000000e+00
br i1 %53, label %57, label %54
54: ; preds = %51
%55 = load double, double* %11
%56 = fcmp ogt double %55, 1.000000e+00
br i1 %56, label %57, label %58
57: ; preds = %54, %51
br label %530
58: ; preds = %54
%59 = load double, double* %10
%60 = load double, double* %11
%61 = fadd double %59, %60
%62 = fsub double %61, 5.000000e-01
%63 = fsub double %62, 5.000000e-01
store double %63, double* %18
%64 = load double, double* %18
%65 = call double @llvm.fabs.f64(double %64)
%66 = load double, double* %24
%67 = fmul double %66, 3.000000e+00
%68 = fcmp ogt double %65, %67
br i1 %68, label %69, label %70
69: ; preds = %58
br label %532
70: ; preds = %58
%71 = load i32*, i32** %14
store i32 0, i32* %71
%72 = load double, double* %10
%73 = fcmp oeq double %72, 0.000000e+00
br i1 %73, label %74, label %75
74: ; preds = %70
br label %483
75: ; preds = %70
%76 = load double, double* %11
%77 = fcmp oeq double %76, 0.000000e+00
br i1 %77, label %78, label %79
78: ; preds = %75
br label %491
79: ; preds = %75
%80 = load double, double* %8
%81 = fcmp oeq double %80, 0.000000e+00
br i1 %81, label %82, label %83
82: ; preds = %79
br label %496
83: ; preds = %79
%84 = load double, double* %9
%85 = fcmp oeq double %84, 0.000000e+00
br i1 %85, label %86, label %87
86: ; preds = %83
br label %488
87: ; preds = %83
%88 = load double, double* %24
%89 = fcmp ogt double %88, 1.000000e-15
br i1 %89, label %90, label %92
90: ; preds = %87
%91 = load double, double* %24
br label %93
92: ; preds = %87
br label %93
93: ; preds = %92, %90
%94 = phi double [ %91, %90 ], [ 1.000000e-15, %92 ]
store double %94, double* %24
%95 = load double, double* %8
%96 = load double, double* %9
%97 = fcmp ogt double %95, %96
br i1 %97, label %98, label %100
98: ; preds = %93
%99 = load double, double* %8
br label %102
100: ; preds = %93
%101 = load double, double* %9
br label %102
102: ; preds = %100, %98
%103 = phi double [ %99, %98 ], [ %101, %100 ]
%104 = load double, double* %24
%105 = fmul double %104, 1.000000e-03
%106 = fcmp olt double %103, %105
br i1 %106, label %107, label %108
107: ; preds = %102
br label %511
108: ; preds = %102
store i32 0, i32* %23
%109 = load double, double* %8
store double %109, double* %19
%110 = load double, double* %9
store double %110, double* %20
%111 = load double, double* %10
store double %111, double* %21
%112 = load double, double* %11
store double %112, double* %22
%113 = load double, double* %19
%114 = load double, double* %20
%115 = fcmp olt double %113, %114
br i1 %115, label %116, label %118
116: ; preds = %108
%117 = load double, double* %19
br label %120
118: ; preds = %108
%119 = load double, double* %20
br label %120
120: ; preds = %118, %116
%121 = phi double [ %117, %116 ], [ %119, %118 ]
%122 = fcmp ogt double %121, 1.000000e+00
br i1 %122, label %123, label %124
123: ; preds = %120
br label %232
124: ; preds = %120
%125 = load double, double* %10
%126 = fcmp ole double %125, 5.000000e-01
br i1 %126, label %127, label %128
127: ; preds = %124
br label %133
128: ; preds = %124
store i32 1, i32* %23
%129 = load double, double* %9
store double %129, double* %19
%130 = load double, double* %8
store double %130, double* %20
%131 = load double, double* %11
store double %131, double* %21
%132 = load double, double* %10
store double %132, double* %22
br label %133
133: ; preds = %128, %127
%134 = load double, double* %20
%135 = load double, double* %24
%136 = load double, double* %24
%137 = load double, double* %19
%138 = fmul double %136, %137
%139 = fcmp olt double %135, %138
br i1 %139, label %140, label %142
140: ; preds = %133
%141 = load double, double* %24
br label %146
142: ; preds = %133
%143 = load double, double* %24
%144 = load double, double* %19
%145 = fmul double %143, %144
br label %146
146: ; preds = %142, %140
%147 = phi double [ %141, %140 ], [ %145, %142 ]
%148 = fcmp olt double %134, %147
br i1 %148, label %149, label %150
149: ; preds = %146
br label %304
150: ; preds = %146
%151 = load double, double* %19
%152 = load double, double* %24
%153 = load double, double* %24
%154 = load double, double* %20
%155 = fmul double %153, %154
%156 = fcmp olt double %152, %155
br i1 %156, label %157, label %159
157: ; preds = %150
%158 = load double, double* %24
br label %163
159: ; preds = %150
%160 = load double, double* %24
%161 = load double, double* %20
%162 = fmul double %160, %161
br label %163
163: ; preds = %159, %157
%164 = phi double [ %158, %157 ], [ %162, %159 ]
%165 = fcmp olt double %151, %164
br i1 %165, label %166, label %172
166: ; preds = %163
%167 = load double, double* %20
%168 = load double, double* %21
%169 = fmul double %167, %168
%170 = fcmp ole double %169, 1.000000e+00
br i1 %170, label %171, label %172
171: ; preds = %166
br label %316
172: ; preds = %166, %163
%173 = load double, double* %19
%174 = load double, double* %20
%175 = fcmp ogt double %173, %174
br i1 %175, label %176, label %178
176: ; preds = %172
%177 = load double, double* %19
br label %180
178: ; preds = %172
%179 = load double, double* %20
br label %180
180: ; preds = %178, %176
%181 = phi double [ %177, %176 ], [ %179, %178 ]
%182 = fcmp ogt double %181, 1.000000e+00
br i1 %182, label %183, label %184
183: ; preds = %180
br label %206
184: ; preds = %180
%185 = load double, double* %19
%186 = load double, double* %20
%187 = fcmp olt double 2.000000e-01, %186
br i1 %187, label %188, label %189
188: ; preds = %184
br label %191
189: ; preds = %184
%190 = load double, double* %20
br label %191
191: ; preds = %189, %188
%192 = phi double [ 2.000000e-01, %188 ], [ %190, %189 ]
%193 = fcmp oge double %185, %192
br i1 %193, label %194, label %195
194: ; preds = %191
br label %328
195: ; preds = %191
%196 = load double, double* %21
%197 = load double, double* %19
%198 = call float @pow(double %196, double %197)
%199 = fcmp ole float %198, 0x3FECCCCCC0000000
br i1 %199, label %200, label %201
200: ; preds = %195
br label %328
201: ; preds = %195
%202 = load double, double* %21
%203 = fcmp oge double %202, 0x3FD3333340000000
br i1 %203, label %204, label %205
204: ; preds = %201
br label %340
205: ; preds = %201
store i32 20, i32* %16
br label %368
206: ; preds = %183
%207 = load double, double* %20
%208 = fcmp ole double %207, 1.000000e+00
br i1 %208, label %209, label %210
209: ; preds = %206
br label %328
210: ; preds = %206
%211 = load double, double* %21
%212 = fcmp oge double %211, 0x3FD3333340000000
br i1 %212, label %213, label %214
213: ; preds = %210
br label %340
214: ; preds = %210
%215 = load double, double* %21
%216 = fcmp oge double %215, 0x3FB99999A0000000
br i1 %216, label %217, label %218
217: ; preds = %214
br label %227
218: ; preds = %214
%219 = load double, double* %21
%220 = load double, double* %20
%221 = fmul double %219, %220
%222 = load double, double* %19
%223 = call float @pow(double %221, double %222)
%224 = fcmp ole float %223, 0x3FE6666660000000
br i1 %224, label %225, label %226
225: ; preds = %218
br label %328
226: ; preds = %218
br label %227
227: ; preds = %226, %217
%228 = load double, double* %20
%229 = fcmp ogt double %228, 1.500000e+01
br i1 %229, label %230, label %231
230: ; preds = %227
br label %381
231: ; preds = %227
store i32 20, i32* %16
br label %368
232: ; preds = %123
%233 = load double, double* %8
%234 = load double, double* %9
%235 = fcmp ogt double %233, %234
br i1 %235, label %236, label %237
236: ; preds = %232
br label %245
237: ; preds = %232
%238 = load double, double* %8
%239 = load double, double* %8
%240 = load double, double* %9
%241 = fadd double %239, %240
%242 = load double, double* %10
%243 = fneg double %241
%244 = call double @llvm.fmuladd.f64(double %243, double %242, double %238)
store double %244, double* %26
br label %253
245: ; preds = %236
%246 = load double, double* %8
%247 = load double, double* %9
%248 = fadd double %246, %247
%249 = load double, double* %11
%250 = load double, double* %9
%251 = fneg double %250
%252 = call double @llvm.fmuladd.f64(double %248, double %249, double %251)
store double %252, double* %26
br label %253
253: ; preds = %245, %237
%254 = load double, double* %26
%255 = fcmp oge double %254, 0.000000e+00
br i1 %255, label %256, label %257
256: ; preds = %253
br label %264
257: ; preds = %253
store i32 1, i32* %23
%258 = load double, double* %9
store double %258, double* %19
%259 = load double, double* %8
store double %259, double* %20
%260 = load double, double* %11
store double %260, double* %21
%261 = load double, double* %10
store double %261, double* %22
%262 = load double, double* %26
%263 = call double @llvm.fabs.f64(double %262)
store double %263, double* %26
br label %264
264: ; preds = %257, %256
%265 = load double, double* %20
%266 = fcmp olt double %265, 4.000000e+01
br i1 %266, label %267, label %273
267: ; preds = %264
%268 = load double, double* %20
%269 = load double, double* %21
%270 = fmul double %268, %269
%271 = fcmp ole double %270, 0x3FE6666660000000
br i1 %271, label %272, label %273
272: ; preds = %267
br label %328
273: ; preds = %267, %264
%274 = load double, double* %20
%275 = fcmp olt double %274, 4.000000e+01
br i1 %275, label %276, label %277
276: ; preds = %273
br label %396
277: ; preds = %273
%278 = load double, double* %19
%279 = load double, double* %20
%280 = fcmp ogt double %278, %279
br i1 %280, label %281, label %282
281: ; preds = %277
br label %293
282: ; preds = %277
%283 = load double, double* %19
%284 = fcmp ole double %283, 1.000000e+02
br i1 %284, label %285, label %286
285: ; preds = %282
br label %352
286: ; preds = %282
%287 = load double, double* %26
%288 = load double, double* %19
%289 = fmul double %288, 0x3F9EB851E0000000
%290 = fcmp ogt double %287, %289
br i1 %290, label %291, label %292
291: ; preds = %286
br label %352
292: ; preds = %286
br label %469
293: ; preds = %281
%294 = load double, double* %20
%295 = fcmp ole double %294, 1.000000e+02
br i1 %295, label %296, label %297
296: ; preds = %293
br label %352
297: ; preds = %293
%298 = load double, double* %26
%299 = load double, double* %20
%300 = fmul double %299, 0x3F9EB851E0000000
%301 = fcmp ogt double %298, %300
br i1 %301, label %302, label %303
302: ; preds = %297
br label %352
303: ; preds = %297
br label %469
304: ; preds = %149
%305 = load double, double* %19
%306 = load double, double* %20
%307 = load double, double* %21
%308 = load double, double* %24
%309 = call double @fpser(double %305, double %306, double %307, double %308)
%310 = load double*, double** %12
store double %309, double* %310
%311 = load double*, double** %12
%312 = load double, double* %311
%313 = fsub double 5.000000e-01, %312
%314 = fadd double %313, 5.000000e-01
%315 = load double*, double** %13
store double %314, double* %315
br label %499
316: ; preds = %171
%317 = load double, double* %19
%318 = load double, double* %20
%319 = load double, double* %21
%320 = load double, double* %24
%321 = call double @apser(double %317, double %318, double %319, double %320)
%322 = load double*, double** %13
store double %321, double* %322
%323 = load double*, double** %13
%324 = load double, double* %323
%325 = fsub double 5.000000e-01, %324
%326 = fadd double %325, 5.000000e-01
%327 = load double*, double** %12
store double %326, double* %327
br label %499
328: ; preds = %272, %225, %209, %200, %194
%329 = load double, double* %19
%330 = load double, double* %20
%331 = load double, double* %21
%332 = load double, double* %24
%333 = call double @bpser(double %329, double %330, double %331, double %332)
%334 = load double*, double** %12
store double %333, double* %334
%335 = load double*, double** %12
%336 = load double, double* %335
%337 = fsub double 5.000000e-01, %336
%338 = fadd double %337, 5.000000e-01
%339 = load double*, double** %13
store double %338, double* %339
br label %499
340: ; preds = %213, %204
%341 = load double, double* %20
%342 = load double, double* %19
%343 = load double, double* %22
%344 = load double, double* %24
%345 = call double @bpser(double %341, double %342, double %343, double %344)
%346 = load double*, double** %13
store double %345, double* %346
%347 = load double*, double** %13
%348 = load double, double* %347
%349 = fsub double 5.000000e-01, %348
%350 = fadd double %349, 5.000000e-01
%351 = load double*, double** %12
store double %350, double* %351
br label %499
352: ; preds = %302, %296, %291, %285
%353 = load double, double* %24
%354 = fmul double %353, 1.500000e+01
store double %354, double* %15
%355 = load double, double* %19
%356 = load double, double* %20
%357 = load double, double* %21
%358 = load double, double* %22
%359 = load double, double* %26
%360 = load double, double* %15
%361 = call double @bfrac(double %355, double %356, double %357, double %358, double %359, double %360)
%362 = load double*, double** %12
store double %361, double* %362
%363 = load double*, double** %12
%364 = load double, double* %363
%365 = fsub double 5.000000e-01, %364
%366 = fadd double %365, 5.000000e-01
%367 = load double*, double** %13
store double %366, double* %367
br label %499
368: ; preds = %231, %205
%369 = load double, double* %20
%370 = load double, double* %19
%371 = load double, double* %22
%372 = load double, double* %21
%373 = load i32, i32* %16
%374 = load double, double* %24
%375 = call double @bup(double %369, double %370, double %371, double %372, i32 %373, double %374)
%376 = load double*, double** %13
store double %375, double* %376
%377 = load i32, i32* %16
%378 = sitofp i32 %377 to double
%379 = load double, double* %20
%380 = fadd double %379, %378
store double %380, double* %20
br label %381
381: ; preds = %368, %230
%382 = load double, double* %20
%383 = load double, double* %19
%384 = load double, double* %22
%385 = load double, double* %21
%386 = load double*, double** %13
%387 = load double, double* %24
%388 = fmul double 1.500000e+01, %387
%389 = fptosi double %388 to i32
%390 = call i32 @bgrat(double %382, double %383, double %384, double %385, double* %386, i32 %389, i32* %25)
%391 = load double*, double** %13
%392 = load double, double* %391
%393 = fsub double 5.000000e-01, %392
%394 = fadd double %393, 5.000000e-01
%395 = load double*, double** %12
store double %394, double* %395
br label %499
396: ; preds = %276
%397 = load double, double* %20
%398 = fptosi double %397 to i32
store i32 %398, i32* %16
%399 = load i32, i32* %16
%400 = sitofp i32 %399 to double
%401 = load double, double* %20
%402 = fsub double %401, %400
store double %402, double* %20
%403 = load double, double* %20
%404 = fcmp une double %403, 0.000000e+00
br i1 %404, label %405, label %406
405: ; preds = %396
br label %409
406: ; preds = %396
%407 = load i32, i32* %16
%408 = add nsw i32 %407, -1
store i32 %408, i32* %16
store double 1.000000e+00, double* %20
br label %409
409: ; preds = %406, %405
%410 = load double, double* %20
%411 = load double, double* %19
%412 = load double, double* %22
%413 = load double, double* %21
%414 = load i32, i32* %16
%415 = load double, double* %24
%416 = call double @bup(double %410, double %411, double %412, double %413, i32 %414, double %415)
%417 = load double*, double** %12
store double %416, double* %417
%418 = load double, double* %21
%419 = fcmp ogt double %418, 0x3FE6666660000000
br i1 %419, label %420, label %421
420: ; preds = %409
br label %435
421: ; preds = %409
%422 = load double, double* %19
%423 = load double, double* %20
%424 = load double, double* %21
%425 = load double, double* %24
%426 = call double @bpser(double %422, double %423, double %424, double %425)
%427 = load double*, double** %12
%428 = load double, double* %427
%429 = fadd double %428, %426
store double %429, double* %427
%430 = load double*, double** %12
%431 = load double, double* %430
%432 = fsub double 5.000000e-01, %431
%433 = fadd double %432, 5.000000e-01
%434 = load double*, double** %13
store double %433, double* %434
br label %499
435: ; preds = %420
%436 = load double, double* %19
%437 = fcmp ogt double %436, 1.500000e+01
br i1 %437, label %438, label %439
438: ; preds = %435
br label %454
439: ; preds = %435
store i32 20, i32* %16
%440 = load double, double* %19
%441 = load double, double* %20
%442 = load double, double* %21
%443 = load double, double* %22
%444 = load i32, i32* %16
%445 = load double, double* %24
%446 = call double @bup(double %440, double %441, double %442, double %443, i32 %444, double %445)
%447 = load double*, double** %12
%448 = load double, double* %447
%449 = fadd double %448, %446
store double %449, double* %447
%450 = load i32, i32* %16
%451 = sitofp i32 %450 to double
%452 = load double, double* %19
%453 = fadd double %452, %451
store double %453, double* %19
br label %454
454: ; preds = %439, %438
%455 = load double, double* %19
%456 = load double, double* %20
%457 = load double, double* %21
%458 = load double, double* %22
%459 = load double*, double** %12
%460 = load double, double* %24
%461 = fmul double 1.500000e+01, %460
%462 = fptosi double %461 to i32
%463 = call i32 @bgrat(double %455, double %456, double %457, double %458, double* %459, i32 %462, i32* %25)
%464 = load double*, double** %12
%465 = load double, double* %464
%466 = fsub double 5.000000e-01, %465
%467 = fadd double %466, 5.000000e-01
%468 = load double*, double** %13
store double %467, double* %468
br label %499
469: ; preds = %303, %292
%470 = load double, double* %24
%471 = fmul double %470, 1.000000e+02
store double %471, double* %15
%472 = load double, double* %19
%473 = load double, double* %20
%474 = load double, double* %26
%475 = load double, double* %15
%476 = call double @basym(double %472, double %473, double %474, double %475)
%477 = load double*, double** %12
store double %476, double* %477
%478 = load double*, double** %12
%479 = load double, double* %478
%480 = fsub double 5.000000e-01, %479
%481 = fadd double %480, 5.000000e-01
%482 = load double*, double** %13
store double %481, double* %482
br label %499
483: ; preds = %74
%484 = load double, double* %8
%485 = fcmp oeq double %484, 0.000000e+00
br i1 %485, label %486, label %487
486: ; preds = %483
br label %534
487: ; preds = %483
br label %488
488: ; preds = %487, %86
%489 = load double*, double** %12
store double 0.000000e+00, double* %489
%490 = load double*, double** %13
store double 1.000000e+00, double* %490
br label %538
491: ; preds = %78
%492 = load double, double* %9
%493 = fcmp oeq double %492, 0.000000e+00
br i1 %493, label %494, label %495
494: ; preds = %491
br label %536
495: ; preds = %491
br label %496
496: ; preds = %495, %82
%497 = load double*, double** %12
store double 1.000000e+00, double* %497
%498 = load double*, double** %13
store double 0.000000e+00, double* %498
br label %538
499: ; preds = %469, %454, %421, %381, %352, %340, %328, %316, %304
%500 = load i32, i32* %23
%501 = icmp eq i32 %500, 0
br i1 %501, label %502, label %503
502: ; preds = %499
br label %538
503: ; preds = %499
%504 = load double*, double** %12
%505 = load double, double* %504
store double %505, double* %17
%506 = load double*, double** %13
%507 = load double, double* %506
%508 = load double*, double** %12
store double %507, double* %508
%509 = load double, double* %17
%510 = load double*, double** %13
store double %509, double* %510
br label %538
511: ; preds = %107
%512 = load double, double* %9
%513 = load double, double* %8
%514 = load double, double* %9
%515 = fadd double %513, %514
%516 = fdiv double %512, %515
%517 = load double*, double** %12
store double %516, double* %517
%518 = load double, double* %8
%519 = load double, double* %8
%520 = load double, double* %9
%521 = fadd double %519, %520
%522 = fdiv double %518, %521
%523 = load double*, double** %13
store double %522, double* %523
br label %538
524: ; preds = %36
%525 = load i32*, i32** %14
store i32 1, i32* %525
br label %538
526: ; preds = %43
%527 = load i32*, i32** %14
store i32 2, i32* %527
br label %538
528: ; preds = %50
%529 = load i32*, i32** %14
store i32 3, i32* %529
br label %538
530: ; preds = %57
%531 = load i32*, i32** %14
store i32 4, i32* %531
br label %538
532: ; preds = %69
%533 = load i32*, i32** %14
store i32 5, i32* %533
br label %538
534: ; preds = %486
%535 = load i32*, i32** %14
store i32 6, i32* %535
br label %538
536: ; preds = %494
%537 = load i32*, i32** %14
store i32 7, i32* %537
br label %538
538: ; preds = %536, %534, %532, %530, %528, %526, %524, %511, %503, %502, %496, %488
ret void
}

LLVM IR (-O2):
define void @bratio(double %0, double %1, double %2, double %3, double* %4, double* %5, i32* nocapture writeonly %6) {
%8 = alloca i32
%9 = bitcast i32* %8 to i8*
%10 = tail call double @Rf_d1mach(i32 3)
%11 = fmul double %10, 2.000000e+00
store double 0.000000e+00, double* %4
store double 0.000000e+00, double* %5
%12 = fcmp olt double %0, 0.000000e+00
%13 = fcmp olt double %1, 0.000000e+00
%14 = or i1 %12, %13
br i1 %14, label %206, label %15
15: ; preds = %7
%16 = fcmp oeq double %0, 0.000000e+00
%17 = fcmp oeq double %1, 0.000000e+00
%18 = and i1 %16, %17
br i1 %18, label %207, label %19
19: ; preds = %15
%20 = fcmp olt double %2, 0.000000e+00
%21 = fcmp ogt double %2, 1.000000e+00
%22 = or i1 %20, %21
br i1 %22, label %208, label %23
23: ; preds = %19
%24 = fcmp olt double %3, 0.000000e+00
%25 = fcmp ogt double %3, 1.000000e+00
%26 = or i1 %24, %25
br i1 %26, label %209, label %27
27: ; preds = %23
%28 = fadd double %2, %3
%29 = fadd double %28, -5.000000e-01
%30 = fadd double %29, -5.000000e-01
%31 = tail call double @llvm.fabs.f64(double %30)
%32 = fmul double %11, 3.000000e+00
%33 = fcmp ogt double %31, %32
br i1 %33, label %210, label %34
34: ; preds = %27
store i32 0, i32* %6
%35 = fcmp oeq double %2, 0.000000e+00
br i1 %35, label %188, label %36
36: ; preds = %34
%37 = fcmp oeq double %3, 0.000000e+00
br i1 %37, label %190, label %38
38: ; preds = %36
br i1 %16, label %191, label %39
39: ; preds = %38
br i1 %17, label %189, label %40
40: ; preds = %39
%41 = fcmp ogt double %11, 1.000000e-15
%42 = select i1 %41, double %11, double 1.000000e-15
%43 = fcmp ogt double %0, %1
%44 = select i1 %43, double %0, double %1
%45 = fmul double %42, 1.000000e-03
%46 = fcmp olt double %44, %45
br i1 %46, label %202, label %47
47: ; preds = %40
%48 = fcmp olt double %0, %1
%49 = select i1 %48, double %0, double %1
%50 = fcmp ogt double %49, 1.000000e+00
br i1 %50, label %96, label %51
51: ; preds = %47
%52 = fcmp ugt double %2, 5.000000e-01
br i1 %52, label %53, label %54
53: ; preds = %51
br label %54
54: ; preds = %51, %53
%55 = phi double [ %0, %51 ], [ %1, %53 ]
%56 = phi double [ %1, %51 ], [ %0, %53 ]
%57 = phi double [ %2, %51 ], [ %3, %53 ]
%58 = phi double [ %3, %51 ], [ %2, %53 ]
%59 = phi i32 [ 0, %51 ], [ 1, %53 ]
%60 = fmul double %42, %55
%61 = fcmp olt double %42, %60
%62 = select i1 %61, double %42, double %60
%63 = fcmp olt double %56, %62
br i1 %63, label %133, label %64
64: ; preds = %54
%65 = fmul double %42, %56
%66 = fcmp olt double %42, %65
%67 = select i1 %66, double %42, double %65
%68 = fcmp uge double %55, %67
%69 = fmul double %56, %57
%70 = fcmp ugt double %69, 1.000000e+00
%71 = or i1 %70, %68
br i1 %71, label %72, label %135
72: ; preds = %64
%73 = fcmp ogt double %55, %56
%74 = select i1 %73, double %55, double %56
%75 = fcmp ogt double %74, 1.000000e+00
br i1 %75, label %85, label %76
76: ; preds = %72
%77 = fcmp ogt double %56, 2.000000e-01
%78 = select i1 %77, double 2.000000e-01, double %56
%79 = fcmp ult double %55, %78
br i1 %79, label %80, label %137
80: ; preds = %76
%81 = tail call float @pow(double %57, double %55)
%82 = fcmp ugt float %81, 0x3FECCCCCC0000000
br i1 %82, label %83, label %137
83: ; preds = %80
%84 = fcmp ult double %57, 0x3FD3333340000000
br i1 %84, label %148, label %143
85: ; preds = %72
%86 = fcmp ugt double %56, 1.000000e+00
br i1 %86, label %87, label %137
87: ; preds = %85
%88 = fcmp ult double %57, 0x3FD3333340000000
br i1 %88, label %89, label %143
89: ; preds = %87
%90 = fcmp ult double %57, 0x3FB99999A0000000
br i1 %90, label %91, label %94
91: ; preds = %89
%92 = tail call float @pow(double %69, double %55)
%93 = fcmp ugt float %92, 0x3FE6666660000000
br i1 %93, label %94, label %137
94: ; preds = %91, %89
%95 = fcmp ogt double %56, 1.500000e+01
br i1 %95, label %151, label %148
96: ; preds = %47
%97 = fadd double %0, %1
br i1 %43, label %101, label %98
98: ; preds = %96
%99 = fneg double %97
%100 = tail call double @llvm.fmuladd.f64(double %99, double %2, double %0)
br label %104
101: ; preds = %96
%102 = fneg double %1
%103 = tail call double @llvm.fmuladd.f64(double %97, double %3, double %102)
br label %104
104: ; preds = %101, %98
%105 = phi double [ %103, %101 ], [ %100, %98 ]
%106 = fcmp ult double %105, 0.000000e+00
br i1 %106, label %107, label %109
107: ; preds = %104
%108 = tail call double @llvm.fabs.f64(double %105)
br label %109
109: ; preds = %104, %107
%110 = phi double [ %0, %104 ], [ %1, %107 ]
%111 = phi double [ %1, %104 ], [ %0, %107 ]
%112 = phi double [ %2, %104 ], [ %3, %107 ]
%113 = phi double [ %3, %104 ], [ %2, %107 ]
%114 = phi i32 [ 0, %104 ], [ 1, %107 ]
%115 = phi double [ %105, %104 ], [ %108, %107 ]
%116 = fcmp olt double %111, 4.000000e+01
%117 = fmul double %111, %112
%118 = fcmp ole double %117, 0x3FE6666660000000
%119 = and i1 %116, %118
br i1 %119, label %137, label %120
120: ; preds = %109
br i1 %116, label %157, label %121
121: ; preds = %120
%122 = fcmp ogt double %110, %111
br i1 %122, label %128, label %123
123: ; preds = %121
%124 = fcmp ole double %110, 1.000000e+02
%125 = fmul double %110, 0x3F9EB851E0000000
%126 = fcmp ogt double %115, %125
%127 = select i1 %124, i1 true, i1 %126
br i1 %127, label %145, label %185
128: ; preds = %121
%129 = fcmp ole double %111, 1.000000e+02
%130 = fmul double %111, 0x3F9EB851E0000000
%131 = fcmp ogt double %115, %130
%132 = select i1 %129, i1 true, i1 %131
br i1 %132, label %145, label %185
133: ; preds = %54
%134 = tail call double @fpser(double %55, double %56, double %57, double %42)
store double %134, double* %4
br label %192
135: ; preds = %64
%136 = tail call double @apser(double %55, double %56, double %57, double %42)
store double %136, double* %5
br label %192
137: ; preds = %109, %91, %85, %80, %76
%138 = phi double [ %55, %85 ], [ %55, %91 ], [ %55, %76 ], [ %55, %80 ], [ %110, %109 ]
%139 = phi double [ %56, %85 ], [ %56, %91 ], [ %56, %76 ], [ %56, %80 ], [ %111, %109 ]
%140 = phi double [ %57, %85 ], [ %57, %91 ], [ %57, %76 ], [ %57, %80 ], [ %112, %109 ]
%141 = phi i32 [ %59, %85 ], [ %59, %91 ], [ %59, %76 ], [ %59, %80 ], [ %114, %109 ]
%142 = tail call double @bpser(double %138, double %139, double %140, double %42)
store double %142, double* %4
br label %192
143: ; preds = %87, %83
%144 = tail call double @bpser(double %56, double %55, double %58, double %42)
store double %144, double* %5
br label %192
145: ; preds = %128, %123
%146 = fmul double %42, 1.500000e+01
%147 = tail call double @bfrac(double %110, double %111, double %112, double %113, double %115, double %146)
store double %147, double* %4
br label %192
148: ; preds = %94, %83
%149 = tail call double @bup(double %56, double %55, double %58, double %57, i32 20, double %42)
store double %149, double* %5
%150 = fadd double %56, 2.000000e+01
br label %151
151: ; preds = %94, %148
%152 = phi double [ %56, %94 ], [ %150, %148 ]
%153 = fmul double %42, 1.500000e+01
%154 = fptosi double %153 to i32
%155 = call i32 @bgrat(double %152, double %55, double %58, double %57, double* %5, i32 %154, i32* %8)
%156 = load double, double* %5
br label %192
157: ; preds = %120
%158 = fptosi double %111 to i32
%159 = sitofp i32 %158 to double
%160 = fsub double %111, %159
%161 = fcmp une double %160, 0.000000e+00
%162 = xor i1 %161, true
%163 = sext i1 %162 to i32
%164 = add nsw i32 %163, %158
%165 = select i1 %161, double %160, double 1.000000e+00
%166 = tail call double @bup(double %165, double %110, double %113, double %112, i32 %164, double %42)
store double %166, double* %4
%167 = fcmp ogt double %112, 0x3FE6666660000000
br i1 %167, label %172, label %168
168: ; preds = %157
%169 = tail call double @bpser(double %110, double %165, double %112, double %42)
%170 = load double, double* %4
%171 = fadd double %169, %170
store double %171, double* %4
br label %192
172: ; preds = %157
%173 = fcmp ogt double %110, 1.500000e+01
br i1 %173, label %179, label %174
174: ; preds = %172
%175 = tail call double @bup(double %110, double %165, double %112, double %113, i32 20, double %42)
%176 = load double, double* %4
%177 = fadd double %175, %176
store double %177, double* %4
%178 = fadd double %110, 2.000000e+01
br label %179
179: ; preds = %172, %174
%180 = phi double [ %110, %172 ], [ %178, %174 ]
%181 = fmul double %42, 1.500000e+01
%182 = fptosi double %181 to i32
%183 = call i32 @bgrat(double %180, double %165, double %112, double %113, double* %4, i32 %182, i32* %8)
%184 = load double, double* %4
br label %192
185: ; preds = %128, %123
%186 = fmul double %42, 1.000000e+02
%187 = tail call double @basym(double %110, double %111, double %115, double %186)
store double %187, double* %4
br label %192
188: ; preds = %34
br i1 %16, label %211, label %189
189: ; preds = %188, %39
store double 0.000000e+00, double* %4
store double 1.000000e+00, double* %5
br label %213
190: ; preds = %36
br i1 %17, label %212, label %191
191: ; preds = %190, %38
store double 1.000000e+00, double* %4
store double 0.000000e+00, double* %5
br label %213
192: ; preds = %185, %179, %168, %151, %145, %143, %137, %135, %133
%193 = phi double [ %187, %185 ], [ %184, %179 ], [ %171, %168 ], [ %156, %151 ], [ %147, %145 ], [ %144, %143 ], [ %142, %137 ], [ %136, %135 ], [ %134, %133 ]
%194 = phi double* [ %5, %185 ], [ %5, %179 ], [ %5, %168 ], [ %4, %151 ], [ %5, %145 ], [ %4, %143 ], [ %5, %137 ], [ %4, %135 ], [ %5, %133 ]
%195 = phi i32 [ %114, %185 ], [ %114, %179 ], [ %114, %168 ], [ %59, %151 ], [ %114, %145 ], [ %59, %143 ], [ %141, %137 ], [ %59, %135 ], [ %59, %133 ]
%196 = fsub double 5.000000e-01, %193
%197 = fadd double %196, 5.000000e-01
store double %197, double* %194
%198 = icmp eq i32 %195, 0
br i1 %198, label %213, label %199
199: ; preds = %192
%200 = load double, double* %4
%201 = load double, double* %5
store double %201, double* %4
store double %200, double* %5
br label %213
202: ; preds = %40
%203 = fadd double %0, %1
%204 = fdiv double %1, %203
store double %204, double* %4
%205 = fdiv double %0, %203
store double %205, double* %5
br label %213
206: ; preds = %7
store i32 1, i32* %6
br label %213
207: ; preds = %15
store i32 2, i32* %6
br label %213
208: ; preds = %19
store i32 3, i32* %6
br label %213
209: ; preds = %23
store i32 4, i32* %6
br label %213
210: ; preds = %27
store i32 5, i32* %6
br label %213
211: ; preds = %188
store i32 6, i32* %6
br label %213
212: ; preds = %190
store i32 7, i32* %6
br label %213
213: ; preds = %192, %212, %211, %210, %209, %208, %207, %206, %202, %199, %191, %189
ret void
}