#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 algdiv(double, double);
double alnrel(double);
double bcorr(double, double);
scalar_t__ betaln(double, double);
double exp(double);
double fabs(double);
double gam1(double);
double gamln1(double);
double log(double);
double rlog1(double);
double sqrt(double);
double brcomp(double a, double b, double x, double y) {
  static double const__ = .398942280401433;
  int i__1;
  double ret_val;
  double c__, e, h__;
  int i__, n;
  double t, u, v, z__, a0, b0, x0, y0, apb, lnx, lny;
  double lambda;
  ret_val = 0.0;
  if (x == 0.0 || y == 0.0) {
    return ret_val;
  }
  a0 = ((a < b) ? a : b);
  if (a0 >= 8.0) {
    goto L100;
  }
  if (x > .375) {
    goto L10;
  }
  lnx = log(x);
  lny = alnrel(-x);
  goto L20;
L10:
  if (y > .375) {
    goto L11;
  }
  lnx = alnrel(-y);
  lny = log(y);
  goto L20;
L11:
  lnx = log(x);
  lny = log(y);
L20:
  z__ = a * lnx + b * lny;
  if (a0 < 1.0) {
    goto L30;
  }
  z__ -= betaln(a, b);
  ret_val = exp(z__);
  return ret_val;
L30:
  b0 = ((a > b) ? a : b);
  if (b0 >= 8.0) {
    goto L80;
  }
  if (b0 > 1.0) {
    goto L60;
  }
  ret_val = exp(z__);
  if (ret_val == 0.0) {
    return ret_val;
  }
  apb = a + b;
  if (apb > 1.0) {
    goto L40;
  }
  z__ = gam1(apb) + 1.0;
  goto L50;
L40:
  u = a + b - 1.;
  z__ = (gam1(u) + 1.0) / apb;
L50:
  c__ = (gam1(a) + 1.0) * (gam1(b) + 1.0) / z__;
  ret_val = ret_val * (a0 * c__) / (a0 / b0 + 1.0);
  return ret_val;
L60:
  u = gamln1(a0);
  n = b0 - 1.0;
  if (n < 1) {
    goto L70;
  }
  c__ = 1.0;
  i__1 = n;
  for (i__ = 1; i__ <= i__1; ++i__) {
    b0 += -1.0;
    c__ *= b0 / (a0 + b0);
  }
  u = log(c__) + u;
L70:
  z__ -= u;
  b0 += -1.0;
  apb = a0 + b0;
  if (apb > 1.0) {
    goto L71;
  }
  t = gam1(apb) + 1.0;
  goto L72;
L71:
  u = a0 + b0 - 1.;
  t = (gam1(u) + 1.0) / apb;
L72:
  ret_val = a0 * exp(z__) * (gam1(b0) + 1.0) / t;
  return ret_val;
L80:
  u = gamln1(a0) + algdiv(a0, b0);
  ret_val = a0 * exp(z__ - u);
  return ret_val;
L100:
  if (a > b) {
    goto L101;
  }
  h__ = a / b;
  x0 = h__ / (h__ + 1.0);
  y0 = 1.0 / (h__ + 1.0);
  lambda = a - (a + b) * x;
  goto L110;
L101:
  h__ = b / a;
  x0 = 1.0 / (h__ + 1.0);
  y0 = h__ / (h__ + 1.0);
  lambda = (a + b) * y - b;
L110:
  e = -lambda / a;
  if (fabs(e) > .6) {
    goto L111;
  }
  u = rlog1(e);
  goto L120;
L111:
  u = e - log(x / x0);
L120:
  e = lambda / b;
  if (fabs(e) > .6) {
    goto L121;
  }
  v = rlog1(e);
  goto L130;
L121:
  v = e - log(y / y0);
L130:
  z__ = exp(-(a * u + b * v));
  ret_val = const__ * sqrt(b * x0) * z__ * exp(-bcorr(a, b));
  return ret_val;
}


x86 assembly (clang, -O0):
<brcomp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x110,%rsp
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
movsd  %xmm2,-0x20(%rbp)
movsd  %xmm3,-0x28(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x20(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    11e4 <brcomp+0x44>
jp     11e4 <brcomp+0x44>
jmp    11fc <brcomp+0x5c>
movsd  -0x28(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    120b <brcomp+0x6b>
jp     120b <brcomp+0x6b>
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1b04 <brcomp+0x964>
movsd  -0x10(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1231 <brcomp+0x91>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
jmp    123e <brcomp+0x9e>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0x80(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  0xda8(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1267 <brcomp+0xc7>
jmp    17fd <brcomp+0x65d>
movsd  -0x20(%rbp),%xmm0
movsd  0xd94(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1283 <brcomp+0xe3>
jmp    12c3 <brcomp+0x123>
movsd  -0x20(%rbp),%xmm0
call   1080 <log@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <alnrel@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    1343 <brcomp+0x1a3>
movsd  -0x28(%rbp),%xmm0
movsd  0xd38(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12df <brcomp+0x13f>
jmp    131f <brcomp+0x17f>
movsd  -0x28(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <alnrel@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
call   1080 <log@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
jmp    1343 <brcomp+0x1a3>
movsd  -0x20(%rbp),%xmm0
call   1080 <log@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
call   1080 <log@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  -0xa8(%rbp),%xmm2
ff
movsd  -0x18(%rbp),%xmm1
mulsd  -0xb0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0xc9e(%rip),%xmm0
ucomisd -0x80(%rbp),%xmm0
jbe    1382 <brcomp+0x1e2>
jmp    13c2 <brcomp+0x222>
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
call   10a0 <betaln@plt>
cvtsi2sd %rax,%xmm1
movsd  -0x78(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
call   1070 <exp@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1b04 <brcomp+0x964>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    13e4 <brcomp+0x244>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
jmp    13f1 <brcomp+0x251>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
movsd  0xbef(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1420 <brcomp+0x280>
jmp    1786 <brcomp+0x5e6>
movsd  -0x88(%rbp),%xmm0
ff
movsd  0xbe0(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    143f <brcomp+0x29f>
jmp    1598 <brcomp+0x3f8>
movsd  -0x78(%rbp),%xmm0
call   1070 <exp@plt>
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    1475 <brcomp+0x2d5>
jp     1475 <brcomp+0x2d5>
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1b04 <brcomp+0x964>
movsd  -0x10(%rbp),%xmm0
addsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  0xb79(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    14a6 <brcomp+0x306>
jmp    14c9 <brcomp+0x329>
movsd  -0xa0(%rbp),%xmm0
ff
call   1030 <gam1@plt>
movsd  0xb55(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    1507 <brcomp+0x367>
movsd  -0x10(%rbp),%xmm0
addsd  -0x18(%rbp),%xmm0
movsd  0xb35(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
call   1030 <gam1@plt>
movsd  0xb1a(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x78(%rbp)
movsd  -0x10(%rbp),%xmm0
call   1030 <gam1@plt>
movsd  0xaf7(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1030 <gam1@plt>
movaps %xmm0,%xmm1
movsd  -0xd0(%rbp),%xmm0
ff
movsd  0xace(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm1
mulsd  -0x40(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x80(%rbp),%xmm1
divsd  -0x88(%rbp),%xmm1
ff
movsd  0xa94(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1b04 <brcomp+0x964>
movsd  -0x80(%rbp),%xmm0
call   10c0 <gamln1@plt>
movsd  %xmm0,-0x68(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
movsd  0xa59(%rip),%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x58(%rbp)
cmpl   $0x1,-0x58(%rbp)
jge    15d1 <brcomp+0x431>
jmp    1654 <brcomp+0x4b4>
movsd  0xa37(%rip),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x58(%rbp),%eax
mov    %eax,-0x2c(%rbp)
movl   $0x1,-0x54(%rbp)
mov    -0x54(%rbp),%eax
cmp    -0x2c(%rbp),%eax
jg     1640 <brcomp+0x4a0>
movsd  0xa19(%rip),%xmm0
addsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x80(%rbp),%xmm1
addsd  -0x88(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
mulsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
mov    -0x54(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x54(%rbp)
jmp    15eb <brcomp+0x44b>
movsd  -0x40(%rbp),%xmm0
call   1080 <log@plt>
addsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  0x9a9(%rip),%xmm0
addsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
addsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movsd  0x96c(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    16b3 <brcomp+0x513>
jmp    16d6 <brcomp+0x536>
movsd  -0xa0(%rbp),%xmm0
ff
call   1030 <gam1@plt>
movsd  0x948(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
jmp    1717 <brcomp+0x577>
movsd  -0x80(%rbp),%xmm0
addsd  -0x88(%rbp),%xmm0
ff
movsd  0x925(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
call   1030 <gam1@plt>
movsd  0x90a(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  -0xa0(%rbp),%xmm0
ff
movsd  %xmm0,-0x60(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
call   1070 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
call   1030 <gam1@plt>
movaps %xmm0,%xmm1
movsd  -0xd8(%rbp),%xmm0
ff
movsd  0x8ab(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1b04 <brcomp+0x964>
movsd  -0x80(%rbp),%xmm0
call   10c0 <gamln1@plt>
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0x88(%rbp),%xmm1
ff
call   1060 <algdiv@plt>
movaps %xmm0,%xmm1
movsd  -0xf0(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x80(%rbp),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
subsd  -0x68(%rbp),%xmm0
call   1070 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1b04 <brcomp+0x964>
movsd  -0x10(%rbp),%xmm0
ucomisd -0x18(%rbp),%xmm0
jbe    1812 <brcomp+0x672>
jmp    18a0 <brcomp+0x700>
movsd  -0x10(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  0x7e2(%rip),%xmm1
addsd  -0x50(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0x7c9(%rip),%xmm1
addsd  -0x50(%rbp),%xmm1
movsd  0x7bc(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm0
addsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
jmp    1929 <brcomp+0x789>
movsd  -0x18(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  0x759(%rip),%xmm1
addsd  -0x50(%rbp),%xmm1
movsd  0x74c(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  0x733(%rip),%xmm1
addsd  -0x50(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
addsd  -0x18(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
movaps 0x6d2(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0x6b6(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1979 <brcomp+0x7d9>
jmp    198d <brcomp+0x7ed>
movsd  -0x48(%rbp),%xmm0
call   1050 <rlog1@plt>
movsd  %xmm0,-0x68(%rbp)
jmp    19c0 <brcomp+0x820>
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0x90(%rbp),%xmm0
ff
call   1080 <log@plt>
movaps %xmm0,%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0xb8(%rbp),%xmm0
ff
divsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
movaps 0x652(%rip),%xmm1
pand   %xmm1,%xmm0
movsd  0x636(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    19f9 <brcomp+0x859>
jmp    1a0d <brcomp+0x86d>
movsd  -0x48(%rbp),%xmm0
call   1050 <rlog1@plt>
movsd  %xmm0,-0x70(%rbp)
jmp    1a40 <brcomp+0x8a0>
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
divsd  -0x98(%rbp),%xmm0
ff
call   1080 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x100(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x10(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm1
mulsd  -0x70(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1070 <exp@plt>
movsd  %xmm0,-0x78(%rbp)
movsd  0x25eb(%rip),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
call   1090 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x110(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
call   10b0 <bcorr@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1070 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x108(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x110,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<brcomp>:
sub    $0x68,%rsp
xorpd  %xmm4,%xmm4
ucomisd %xmm4,%xmm2
jne    11b4 <brcomp+0x14>
jnp    1462 <brcomp+0x2c2>
xorpd  %xmm5,%xmm5
ucomisd %xmm5,%xmm3
jne    11c4 <brcomp+0x24>
jnp    1462 <brcomp+0x2c2>
movapd %xmm0,%xmm4
minsd  %xmm1,%xmm4
ucomisd 0xe2c(%rip),%xmm4
movsd  %xmm1,0x8(%rsp)
movsd  %xmm0,0x30(%rsp)
jae    1214 <brcomp+0x74>
ucomisd 0xe36(%rip),%xmm2
movapd %xmm4,0x20(%rsp)
jbe    1254 <brcomp+0xb4>
ucomisd 0xe26(%rip),%xmm3
movapd %xmm3,0x40(%rsp)
jbe    146b <brcomp+0x2cb>
movapd %xmm2,%xmm0
call   1080 <log@plt>
jmp    147c <brcomp+0x2dc>
ucomisd %xmm1,%xmm0
jbe    1299 <brcomp+0xf9>
movapd %xmm1,%xmm4
divsd  %xmm0,%xmm4
movsd  0xdde(%rip),%xmm6
addsd  %xmm4,%xmm6
movapd 0xe0a(%rip),%xmm5
unpcklpd %xmm4,%xmm5
unpcklpd %xmm6,%xmm6
divpd  %xmm6,%xmm5
movapd %xmm0,%xmm6
addsd  %xmm1,%xmm6
mulsd  %xmm3,%xmm6
subsd  %xmm1,%xmm6
jmp    12d2 <brcomp+0x132>
movapd %xmm2,%xmm0
movapd %xmm2,0x40(%rsp)
call   1080 <log@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0x40(%rsp),%xmm0
xorpd  0xdd9(%rip),%xmm0
call   1040 <alnrel@plt>
movsd  0x10(%rsp),%xmm4
movsd  0x30(%rsp),%xmm3
movsd  0x8(%rsp),%xmm1
movapd 0x20(%rsp),%xmm2
jmp    14a5 <brcomp+0x305>
movapd %xmm0,%xmm5
divsd  %xmm1,%xmm5
movsd  0xd5f(%rip),%xmm4
addsd  %xmm5,%xmm4
shufpd $0x2,0xd7a(%rip),%xmm5
unpcklpd %xmm4,%xmm4
divpd  %xmm4,%xmm5
movapd %xmm0,%xmm4
addsd  %xmm1,%xmm4
mulsd  %xmm2,%xmm4
movapd %xmm0,%xmm6
subsd  %xmm4,%xmm6
movapd 0xd76(%rip),%xmm1
xorpd  %xmm6,%xmm1
divsd  %xmm0,%xmm1
movapd 0xd76(%rip),%xmm0
andpd  %xmm1,%xmm0
ucomisd 0xd1a(%rip),%xmm0
movapd %xmm3,0x40(%rsp)
movapd %xmm5,0x50(%rsp)
movapd %xmm6,0x10(%rsp)
jbe    133b <brcomp+0x19b>
divsd  %xmm5,%xmm2
movapd %xmm2,%xmm0
movapd %xmm1,0x20(%rsp)
call   1080 <log@plt>
movapd 0x20(%rsp),%xmm4
movapd 0x10(%rsp),%xmm3
movapd 0x40(%rsp),%xmm2
movsd  0x8(%rsp),%xmm1
subsd  %xmm0,%xmm4
jmp    135a <brcomp+0x1ba>
movapd %xmm1,%xmm0
call   1050 <rlog1@plt>
movapd 0x10(%rsp),%xmm3
movapd 0x40(%rsp),%xmm2
movsd  0x8(%rsp),%xmm1
movapd %xmm0,%xmm4
divsd  %xmm1,%xmm3
movapd 0xcfa(%rip),%xmm0
andpd  %xmm3,%xmm0
ucomisd 0xc9e(%rip),%xmm0
movapd %xmm4,0x20(%rsp)
jbe    13af <brcomp+0x20f>
movapd 0x50(%rsp),%xmm0
unpckhpd %xmm0,%xmm0
divsd  %xmm0,%xmm2
movapd %xmm2,%xmm0
movapd %xmm3,0x10(%rsp)
call   1080 <log@plt>
movapd 0x20(%rsp),%xmm3
movapd 0x10(%rsp),%xmm2
movsd  0x8(%rsp),%xmm1
subsd  %xmm0,%xmm2
jmp    13c8 <brcomp+0x228>
movapd %xmm3,%xmm0
call   1050 <rlog1@plt>
movapd 0x20(%rsp),%xmm3
movsd  0x8(%rsp),%xmm1
movapd %xmm0,%xmm2
movsd  0x30(%rsp),%xmm0
mulsd  %xmm1,%xmm2
mulsd  %xmm0,%xmm3
addsd  %xmm2,%xmm3
xorpd  0xc6e(%rip),%xmm3
movapd %xmm3,%xmm0
call   1070 <exp@plt>
movsd  0x8(%rsp),%xmm1
movapd %xmm0,%xmm2
movapd 0x50(%rsp),%xmm3
mulsd  %xmm1,%xmm3
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm3
movapd %xmm3,%xmm0
movsd  %xmm2,0x10(%rsp)
jb     1419 <brcomp+0x279>
sqrtsd %xmm0,%xmm0
jmp    1424 <brcomp+0x284>
call   1090 <sqrt@plt>
movsd  0x8(%rsp),%xmm1
movsd  0x30(%rsp),%xmm2
mulsd  0xbe6(%rip),%xmm0
movsd  0x10(%rsp),%xmm3
mulsd  %xmm0,%xmm3
movsd  %xmm3,0x10(%rsp)
movapd %xmm2,%xmm0
call   10b0 <bcorr@plt>
xorpd  0xbfd(%rip),%xmm0
call   1070 <exp@plt>
movapd %xmm0,%xmm4
mulsd  0x10(%rsp),%xmm4
movapd %xmm4,%xmm0
add    $0x68,%rsp
ret
movapd 0xbdd(%rip),%xmm0
xorpd  %xmm3,%xmm0
call   1040 <alnrel@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0x40(%rsp),%xmm0
call   1080 <log@plt>
movsd  0x10(%rsp),%xmm4
movapd 0x20(%rsp),%xmm2
movsd  0x8(%rsp),%xmm1
movsd  0x30(%rsp),%xmm3
mulsd  %xmm1,%xmm0
mulsd  %xmm3,%xmm4
addsd  %xmm0,%xmm4
movsd  0xb4f(%rip),%xmm0
ucomisd %xmm2,%xmm0
jbe    1538 <brcomp+0x398>
maxsd  %xmm1,%xmm3
ucomisd 0xb35(%rip),%xmm3
movapd %xmm3,0x40(%rsp)
jae    1562 <brcomp+0x3c2>
ucomisd 0xb29(%rip),%xmm3
jbe    15af <brcomp+0x40f>
movsd  %xmm4,0x10(%rsp)
movapd %xmm2,%xmm0
call   10c0 <gamln1@plt>
movapd 0x40(%rsp),%xmm4
movapd %xmm0,%xmm2
movsd  0xb22(%rip),%xmm3
addsd  %xmm4,%xmm3
cvttsd2si %xmm3,%eax
test   %eax,%eax
jle    161a <brcomp+0x47a>
movsd  %xmm2,0x8(%rsp)
cmp    $0x1,%eax
jne    1625 <brcomp+0x485>
movapd 0x20(%rsp),%xmm3
movsd  0xad5(%rip),%xmm0
jmp    1675 <brcomp+0x4d5>
movapd %xmm3,%xmm0
movsd  %xmm4,0x10(%rsp)
call   10a0 <betaln@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %rax,%xmm1
movsd  0x10(%rsp),%xmm0
subsd  %xmm1,%xmm0
add    $0x68,%rsp
jmp    1070 <exp@plt>
movapd %xmm2,%xmm0
movsd  %xmm4,0x10(%rsp)
call   10c0 <gamln1@plt>
movsd  %xmm0,0x8(%rsp)
movapd 0x20(%rsp),%xmm0
movaps 0x40(%rsp),%xmm1
call   1060 <algdiv@plt>
addsd  0x8(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,%xmm0
call   1070 <exp@plt>
movapd %xmm0,%xmm4
mulsd  0x20(%rsp),%xmm4
jmp    1462 <brcomp+0x2c2>
movapd %xmm4,%xmm0
call   1070 <exp@plt>
movsd  0x30(%rsp),%xmm2
movsd  0x8(%rsp),%xmm1
movapd %xmm0,%xmm4
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm4
jne    15d8 <brcomp+0x438>
jnp    1462 <brcomp+0x2c2>
movsd  %xmm4,0x10(%rsp)
addsd  %xmm1,%xmm2
ucomisd 0xa1e(%rip),%xmm2
jbe    1763 <brcomp+0x5c3>
movsd  0xa30(%rip),%xmm0
addsd  %xmm2,%xmm0
movsd  %xmm2,0x50(%rsp)
call   1030 <gam1@plt>
addsd  0x9f9(%rip),%xmm0
divsd  0x50(%rsp),%xmm0
jmp    1774 <brcomp+0x5d4>
movapd 0x20(%rsp),%xmm1
jmp    16be <brcomp+0x51e>
mov    %eax,%ecx
and    $0xfffffffe,%ecx
movsd  0x9d6(%rip),%xmm0
movsd  0x9ee(%rip),%xmm5
movapd 0x20(%rsp),%xmm3
addsd  %xmm5,%xmm4
movapd %xmm3,%xmm1
addsd  %xmm4,%xmm1
movapd %xmm4,%xmm2
divsd  %xmm1,%xmm2
mulsd  %xmm0,%xmm2
addsd  %xmm5,%xmm4
movapd %xmm3,%xmm1
addsd  %xmm4,%xmm1
movapd %xmm4,%xmm0
divsd  %xmm1,%xmm0
mulsd  %xmm2,%xmm0
add    $0xfffffffe,%ecx
jne    1640 <brcomp+0x4a0>
test   $0x1,%al
je     1695 <brcomp+0x4f5>
addsd  0x9a7(%rip),%xmm4
movapd %xmm3,%xmm2
addsd  %xmm4,%xmm2
movapd %xmm4,%xmm1
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movapd %xmm4,0x40(%rsp)
call   1080 <log@plt>
movapd 0x20(%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
addsd  %xmm0,%xmm2
movapd 0x40(%rsp),%xmm3
addsd  0x96a(%rip),%xmm3
movsd  0x10(%rsp),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  %xmm3,0x8(%rsp)
addsd  %xmm3,%xmm1
ucomisd 0x928(%rip),%xmm1
jbe    1709 <brcomp+0x569>
movsd  0x93e(%rip),%xmm0
addsd  %xmm1,%xmm0
movapd %xmm1,0x30(%rsp)
call   1030 <gam1@plt>
addsd  0x907(%rip),%xmm0
divsd  0x30(%rsp),%xmm0
jmp    171a <brcomp+0x57a>
movapd %xmm1,%xmm0
call   1030 <gam1@plt>
addsd  0x8ee(%rip),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x10(%rsp),%xmm0
call   1070 <exp@plt>
movapd 0x20(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm1,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
call   1030 <gam1@plt>
movapd %xmm0,%xmm4
addsd  0x8b6(%rip),%xmm4
mulsd  0x20(%rsp),%xmm4
divsd  0x30(%rsp),%xmm4
jmp    1462 <brcomp+0x2c2>
movapd %xmm2,%xmm0
call   1030 <gam1@plt>
addsd  0x894(%rip),%xmm0
movapd %xmm0,0x50(%rsp)
movsd  0x30(%rsp),%xmm0
call   1030 <gam1@plt>
movapd %xmm0,%xmm1
movsd  0x877(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  %xmm1,0x30(%rsp)
movsd  0x8(%rsp),%xmm0
call   1030 <gam1@plt>
movsd  0x85a(%rip),%xmm2
addsd  %xmm2,%xmm0
mulsd  0x30(%rsp),%xmm0
movapd 0x20(%rsp),%xmm1
unpcklpd %xmm1,%xmm0
movapd 0x50(%rsp),%xmm3
unpcklpd 0x40(%rsp),%xmm3
divpd  %xmm3,%xmm0
mulsd  %xmm0,%xmm1
movsd  0x10(%rsp),%xmm4
mulsd  %xmm1,%xmm4
unpckhpd %xmm0,%xmm0
addsd  %xmm2,%xmm0
divsd  %xmm0,%xmm4
jmp    1462 <brcomp+0x2c2>

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

LLVM IR (-O2):
define double @brcomp(double %0, double %1, double %2, double %3) {
%5 = fcmp oeq double %2, 0.000000e+00
%6 = fcmp oeq double %3, 0.000000e+00
%7 = or i1 %5, %6
br i1 %7, label %209, label %8
8: ; preds = %4
%9 = fcmp olt double %0, %1
%10 = select i1 %9, double %0, double %1
%11 = fcmp ult double %10, 8.000000e+00
br i1 %11, label %12, label %146
12: ; preds = %8
%13 = fcmp ogt double %2, 3.750000e-01
br i1 %13, label %18, label %14
14: ; preds = %12
%15 = tail call double @log(double %2)
%16 = fneg double %2
%17 = tail call double @alnrel(double %16)
br label %27
18: ; preds = %12
%19 = fcmp ogt double %3, 3.750000e-01
br i1 %19, label %24, label %20
20: ; preds = %18
%21 = fneg double %3
%22 = tail call double @alnrel(double %21)
%23 = tail call double @log(double %3)
br label %27
24: ; preds = %18
%25 = tail call double @log(double %2)
%26 = tail call double @log(double %3)
br label %27
27: ; preds = %24, %20, %14
%28 = phi double [ %25, %24 ], [ %22, %20 ], [ %15, %14 ]
%29 = phi double [ %26, %24 ], [ %23, %20 ], [ %17, %14 ]
%30 = fmul double %29, %1
%31 = tail call double @llvm.fmuladd.f64(double %0, double %28, double %30)
%32 = fcmp olt double %10, 1.000000e+00
br i1 %32, label %38, label %33
33: ; preds = %27
%34 = tail call i64 @betaln(double %0, double %1)
%35 = sitofp i64 %34 to double
%36 = fsub double %31, %35
%37 = tail call double @exp(double %36)
br label %209
38: ; preds = %27
%39 = fcmp ogt double %0, %1
%40 = select i1 %39, double %0, double %1
%41 = fcmp ult double %40, 8.000000e+00
br i1 %41, label %42, label %139
42: ; preds = %38
%43 = fcmp ogt double %40, 1.000000e+00
br i1 %43, label %76, label %44
44: ; preds = %42
%45 = tail call double @exp(double %31)
%46 = fcmp oeq double %45, 0.000000e+00
br i1 %46, label %209, label %47
47: ; preds = %44
%48 = fadd double %0, %1
%49 = fcmp ogt double %48, 1.000000e+00
br i1 %49, label %53, label %50
50: ; preds = %47
%51 = tail call double @gam1(double %48)
%52 = fadd double %51, 1.000000e+00
br label %58
53: ; preds = %47
%54 = fadd double %48, -1.000000e+00
%55 = tail call double @gam1(double %54)
%56 = fadd double %55, 1.000000e+00
%57 = fdiv double %56, %48
br label %58
58: ; preds = %53, %50
%59 = phi double [ %57, %53 ], [ %52, %50 ]
%60 = tail call double @gam1(double %0)
%61 = fadd double %60, 1.000000e+00
%62 = tail call double @gam1(double %1)
%63 = fadd double %62, 1.000000e+00
%64 = fmul double %61, %63
%65 = insertelement <2 x double> poison, double %10, i64 1
%66 = insertelement <2 x double> %65, double %64, i64 0
%67 = insertelement <2 x double> poison, double %40, i64 1
%68 = insertelement <2 x double> %67, double %59, i64 0
%69 = fdiv <2 x double> %66, %68
%70 = extractelement <2 x double> %69, i64 0
%71 = fmul double %10, %70
%72 = fmul double %45, %71
%73 = extractelement <2 x double> %69, i64 1
%74 = fadd double %73, 1.000000e+00
%75 = fdiv double %72, %74
br label %209
76: ; preds = %42
%77 = tail call double @gamln1(double %10)
%78 = fadd double %40, -1.000000e+00
%79 = fptosi double %78 to i32
%80 = icmp slt i32 %79, 1
br i1 %80, label %117, label %81
81: ; preds = %76
%82 = and i32 %79, 1
%83 = icmp eq i32 %79, 1
br i1 %83, label %100, label %84
84: ; preds = %81
%85 = and i32 %79, -2
br label %86
86: ; preds = %86, %84
%87 = phi double [ %40, %84 ], [ %94, %86 ]
%88 = phi double [ 1.000000e+00, %84 ], [ %97, %86 ]
%89 = phi i32 [ 0, %84 ], [ %98, %86 ]
%90 = fadd double %87, -1.000000e+00
%91 = fadd double %10, %90
%92 = fdiv double %90, %91
%93 = fmul double %88, %92
%94 = fadd double %90, -1.000000e+00
%95 = fadd double %10, %94
%96 = fdiv double %94, %95
%97 = fmul double %93, %96
%98 = add i32 %89, 2
%99 = icmp eq i32 %98, %85
br i1 %99, label %100, label %86
100: ; preds = %86, %81
%101 = phi double [ undef, %81 ], [ %94, %86 ]
%102 = phi double [ undef, %81 ], [ %97, %86 ]
%103 = phi double [ %40, %81 ], [ %94, %86 ]
%104 = phi double [ 1.000000e+00, %81 ], [ %97, %86 ]
%105 = icmp eq i32 %82, 0
br i1 %105, label %111, label %106
106: ; preds = %100
%107 = fadd double %103, -1.000000e+00
%108 = fadd double %10, %107
%109 = fdiv double %107, %108
%110 = fmul double %104, %109
br label %111
111: ; preds = %100, %106
%112 = phi double [ %101, %100 ], [ %107, %106 ]
%113 = phi double [ %102, %100 ], [ %110, %106 ]
%114 = tail call double @log(double %113)
%115 = fadd double %77, %114
%116 = fadd double %112, -1.000000e+00
br label %117
117: ; preds = %76, %111
%118 = phi double [ %78, %76 ], [ %116, %111 ]
%119 = phi double [ %77, %76 ], [ %115, %111 ]
%120 = fsub double %31, %119
%121 = fadd double %10, %118
%122 = fcmp ogt double %121, 1.000000e+00
br i1 %122, label %126, label %123
123: ; preds = %117
%124 = tail call double @gam1(double %121)
%125 = fadd double %124, 1.000000e+00
br label %131
126: ; preds = %117
%127 = fadd double %121, -1.000000e+00
%128 = tail call double @gam1(double %127)
%129 = fadd double %128, 1.000000e+00
%130 = fdiv double %129, %121
br label %131
131: ; preds = %126, %123
%132 = phi double [ %130, %126 ], [ %125, %123 ]
%133 = tail call double @exp(double %120)
%134 = fmul double %10, %133
%135 = tail call double @gam1(double %118)
%136 = fadd double %135, 1.000000e+00
%137 = fmul double %134, %136
%138 = fdiv double %137, %132
br label %209
139: ; preds = %38
%140 = tail call double @gamln1(double %10)
%141 = tail call double @algdiv(double %10, double %40)
%142 = fadd double %140, %141
%143 = fsub double %31, %142
%144 = tail call double @exp(double %143)
%145 = fmul double %10, %144
br label %209
146: ; preds = %8
%147 = fcmp ogt double %0, %1
br i1 %147, label %158, label %148
148: ; preds = %146
%149 = fdiv double %0, %1
%150 = fadd double %149, 1.000000e+00
%151 = insertelement <2 x double> <double poison, double 1.000000e+00>, double %149, i64 0
%152 = insertelement <2 x double> poison, double %150, i64 0
%153 = shufflevector <2 x double> %152, <2 x double> poison, <2 x i32> zeroinitializer
%154 = fdiv <2 x double> %151, %153
%155 = fadd double %0, %1
%156 = fneg double %155
%157 = tail call double @llvm.fmuladd.f64(double %156, double %2, double %0)
br label %168
158: ; preds = %146
%159 = fdiv double %1, %0
%160 = fadd double %159, 1.000000e+00
%161 = insertelement <2 x double> <double 1.000000e+00, double poison>, double %159, i64 1
%162 = insertelement <2 x double> poison, double %160, i64 0
%163 = shufflevector <2 x double> %162, <2 x double> poison, <2 x i32> zeroinitializer
%164 = fdiv <2 x double> %161, %163
%165 = fadd double %0, %1
%166 = fneg double %1
%167 = tail call double @llvm.fmuladd.f64(double %165, double %3, double %166)
br label %168
168: ; preds = %158, %148
%169 = phi double [ %167, %158 ], [ %157, %148 ]
%170 = phi <2 x double> [ %164, %158 ], [ %154, %148 ]
%171 = fneg double %169
%172 = fdiv double %171, %0
%173 = tail call double @llvm.fabs.f64(double %172)
%174 = fcmp ogt double %173, 6.000000e-01
br i1 %174, label %177, label %175
175: ; preds = %168
%176 = tail call double @rlog1(double %172)
br label %182
177: ; preds = %168
%178 = extractelement <2 x double> %170, i64 0
%179 = fdiv double %2, %178
%180 = tail call double @log(double %179)
%181 = fsub double %172, %180
br label %182
182: ; preds = %177, %175
%183 = phi double [ %181, %177 ], [ %176, %175 ]
%184 = fdiv double %169, %1
%185 = tail call double @llvm.fabs.f64(double %184)
%186 = fcmp ogt double %185, 6.000000e-01
br i1 %186, label %189, label %187
187: ; preds = %182
%188 = tail call double @rlog1(double %184)
br label %194
189: ; preds = %182
%190 = extractelement <2 x double> %170, i64 1
%191 = fdiv double %3, %190
%192 = tail call double @log(double %191)
%193 = fsub double %184, %192
br label %194
194: ; preds = %189, %187
%195 = phi double [ %193, %189 ], [ %188, %187 ]
%196 = fmul double %195, %1
%197 = tail call double @llvm.fmuladd.f64(double %0, double %183, double %196)
%198 = fneg double %197
%199 = tail call double @exp(double %198)
%200 = extractelement <2 x double> %170, i64 0
%201 = fmul double %200, %1
%202 = tail call double @sqrt(double %201)
%203 = fmul double %202, 0x3FD9884533D43656
%204 = fmul double %199, %203
%205 = tail call double @bcorr(double %0, double %1)
%206 = fneg double %205
%207 = tail call double @exp(double %206)
%208 = fmul double %204, %207
br label %209
209: ; preds = %44, %4, %194, %139, %131, %58, %33
%210 = phi double [ %208, %194 ], [ %145, %139 ], [ %138, %131 ], [ %75, %58 ], [ %37, %33 ], [ 0.000000e+00, %4 ], [ %45, %44 ]
ret double %210
}