#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);
int /*<<< orphan*/ bcorr(double, double);
scalar_t__ betaln(double, double);
double esum(int, double);
double exp(int /*<<< orphan*/);
float fabs(double);
double gam1(double);
double gamln1(double);
double log(double);
double rlog1(double);
double sqrt(double);
double brcmp1(int mu, double a, double b, double x, double y) {
  static double const__ = .398942280401433;
  int i__1;
  double ret_val, r__1;
  double c__, e, h__;
  int i__, n;
  double t, u, v, z__, a0, b0, x0, y0, apb, lnx, lny;
  double lambda;
  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 = esum(mu, z__);
  return ret_val;
L30:
  b0 = ((a > b) ? a : b);
  if (b0 >= 8.0) {
    goto L80;
  }
  if (b0 > 1.0) {
    goto L60;
  }
  ret_val = esum(mu, 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 * esum(mu, z__) * (gam1(b0) + 1.0) / t;
  return ret_val;
L80:
  u = gamln1(a0) + algdiv(a0, b0);
  ret_val = a0 * esum(mu, 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) > .6f) {
    goto L111;
  }
  u = rlog1(e);
  goto L120;
L111:
  u = e - log(x / x0);
L120:
  e = lambda / b;
  if (fabs(e) > .6f) {
    goto L121;
  }
  v = rlog1(e);
  goto L130;
L121:
  v = e - log(y / y0);
L130:
  r__1 = -(a * u + b * v);
  z__ = esum(mu, r__1);
  ret_val = const__ * sqrt(b * x0) * z__ * exp(-bcorr(a, b));
  return ret_val;
}


x86 assembly (clang, -O0):
<brcmp1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x120,%rsp
mov    %edi,-0xc(%rbp)
movsd  %xmm0,-0x18(%rbp)
movsd  %xmm1,-0x20(%rbp)
movsd  %xmm2,-0x28(%rbp)
movsd  %xmm3,-0x30(%rbp)
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1208 <brcmp1+0x48>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
jmp    1215 <brcmp1+0x55>
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  0xdcb(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     1244 <brcmp1+0x84>
jmp    182b <brcmp1+0x66b>
movsd  -0x28(%rbp),%xmm0
movsd  0xdb7(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    1260 <brcmp1+0xa0>
jmp    12a0 <brcmp1+0xe0>
movsd  -0x28(%rbp),%xmm0
call   10a0 <log@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <alnrel@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
jmp    1320 <brcmp1+0x160>
movsd  -0x30(%rbp),%xmm0
movsd  0xd5b(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    12bc <brcmp1+0xfc>
jmp    12fc <brcmp1+0x13c>
movsd  -0x30(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <alnrel@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   10a0 <log@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
jmp    1320 <brcmp1+0x160>
movsd  -0x28(%rbp),%xmm0
call   10a0 <log@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   10a0 <log@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  -0xb8(%rbp),%xmm2
ff
movsd  -0x20(%rbp),%xmm1
mulsd  -0xc0(%rbp),%xmm1
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0xcbe(%rip),%xmm0
ucomisd -0x90(%rbp),%xmm0
ff
jbe    1365 <brcmp1+0x1a5>
jmp    13b1 <brcmp1+0x1f1>
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
call   10c0 <betaln@plt>
cvtsi2sd %rax,%xmm1
movsd  -0x88(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
mov    -0xc(%rbp),%edi
movsd  -0x88(%rbp),%xmm0
ff
call   1060 <esum@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1b24 <brcmp1+0x964>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jbe    13d3 <brcmp1+0x213>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
jmp    13e0 <brcmp1+0x220>
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0xd8(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  0xc00(%rip),%xmm1
ucomisd %xmm1,%xmm0
jb     140f <brcmp1+0x24f>
jmp    17a5 <brcmp1+0x5e5>
movsd  -0x98(%rbp),%xmm0
ff
movsd  0xbf1(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    142e <brcmp1+0x26e>
jmp    159c <brcmp1+0x3dc>
mov    -0xc(%rbp),%edi
movsd  -0x88(%rbp),%xmm0
ff
call   1060 <esum@plt>
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jne    146a <brcmp1+0x2aa>
jp     146a <brcmp1+0x2aa>
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1b24 <brcmp1+0x964>
movsd  -0x18(%rbp),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0xb84(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    149b <brcmp1+0x2db>
jmp    14c1 <brcmp1+0x301>
movsd  -0xb0(%rbp),%xmm0
ff
call   1030 <gam1@plt>
movsd  0xb60(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
jmp    1502 <brcmp1+0x342>
movsd  -0x18(%rbp),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  0xb3d(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
call   1030 <gam1@plt>
movsd  0xb22(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
call   1030 <gam1@plt>
movsd  0xafc(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1030 <gam1@plt>
movaps %xmm0,%xmm1
movsd  -0xe0(%rbp),%xmm0
ff
movsd  0xad3(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x50(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  -0x90(%rbp),%xmm1
ff
mulsd  -0x50(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x90(%rbp),%xmm1
ff
divsd  -0x98(%rbp),%xmm1
ff
movsd  0xa90(%rip),%xmm2
addsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1b24 <brcmp1+0x964>
movsd  -0x90(%rbp),%xmm0
ff
call   10e0 <gamln1@plt>
movsd  %xmm0,-0x78(%rbp)
movsd  -0x98(%rbp),%xmm0
ff
movsd  0xa52(%rip),%xmm1
subsd  %xmm1,%xmm0
cvttsd2si %xmm0,%eax
mov    %eax,-0x68(%rbp)
cmpl   $0x1,-0x68(%rbp)
jge    15d8 <brcmp1+0x418>
jmp    165e <brcmp1+0x49e>
movsd  0xa30(%rip),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x68(%rbp),%eax
mov    %eax,-0x34(%rbp)
movl   $0x1,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x34(%rbp),%eax
jg     164a <brcmp1+0x48a>
movsd  0xa12(%rip),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  -0x90(%rbp),%xmm1
ff
addsd  -0x98(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    15f2 <brcmp1+0x432>
movsd  -0x50(%rbp),%xmm0
call   10a0 <log@plt>
addsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm1
movsd  -0x88(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0x999(%rip),%xmm0
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movsd  0x959(%rip),%xmm1
ucomisd %xmm1,%xmm0
jbe    16c6 <brcmp1+0x506>
jmp    16e9 <brcmp1+0x529>
movsd  -0xb0(%rbp),%xmm0
ff
call   1030 <gam1@plt>
movsd  0x935(%rip),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
jmp    172d <brcmp1+0x56d>
movsd  -0x90(%rbp),%xmm0
ff
addsd  -0x98(%rbp),%xmm0
ff
movsd  0x90f(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
call   1030 <gam1@plt>
movsd  0x8f4(%rip),%xmm1
addsd  %xmm1,%xmm0
divsd  -0xb0(%rbp),%xmm0
ff
movsd  %xmm0,-0x70(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xf0(%rbp)
ff
mov    -0xc(%rbp),%edi
movsd  -0x88(%rbp),%xmm0
ff
call   1060 <esum@plt>
movaps %xmm0,%xmm1
movsd  -0xf0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
call   1030 <gam1@plt>
movaps %xmm0,%xmm1
movsd  -0xe8(%rbp),%xmm0
ff
movsd  0x88c(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
divsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1b24 <brcmp1+0x964>
movsd  -0x90(%rbp),%xmm0
ff
call   10e0 <gamln1@plt>
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x98(%rbp),%xmm1
ff
call   1080 <algdiv@plt>
movaps %xmm0,%xmm1
movsd  -0x100(%rbp),%xmm0
ff
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
mov    -0xc(%rbp),%edi
movsd  -0x88(%rbp),%xmm0
ff
subsd  -0x78(%rbp),%xmm0
call   1060 <esum@plt>
movaps %xmm0,%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
jmp    1b24 <brcmp1+0x964>
movsd  -0x18(%rbp),%xmm0
ucomisd -0x20(%rbp),%xmm0
jbe    1840 <brcmp1+0x680>
jmp    18ce <brcmp1+0x70e>
movsd  -0x18(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  0x7b4(%rip),%xmm1
addsd  -0x60(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0x79b(%rip),%xmm1
addsd  -0x60(%rbp),%xmm1
movsd  0x78e(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x18(%rbp),%xmm1
movsd  -0x18(%rbp),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  -0x28(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
jmp    1957 <brcmp1+0x797>
movsd  -0x20(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0x72b(%rip),%xmm1
addsd  -0x60(%rbp),%xmm1
movsd  0x71e(%rip),%xmm0
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  0x705(%rip),%xmm1
addsd  -0x60(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
addsd  -0x20(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
divsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
call   1050 <fabs@plt>
movss  0x68e(%rip),%xmm1
ucomiss %xmm1,%xmm0
jbe    19a0 <brcmp1+0x7e0>
jmp    19b4 <brcmp1+0x7f4>
movsd  -0x58(%rbp),%xmm0
call   1070 <rlog1@plt>
movsd  %xmm0,-0x78(%rbp)
jmp    19e7 <brcmp1+0x827>
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
divsd  -0xa0(%rbp),%xmm0
ff
call   10a0 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x108(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0xc8(%rbp),%xmm0
ff
divsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
call   1050 <fabs@plt>
movss  0x615(%rip),%xmm1
ucomiss %xmm1,%xmm0
jbe    1a19 <brcmp1+0x859>
jmp    1a2d <brcmp1+0x86d>
movsd  -0x58(%rbp),%xmm0
call   1070 <rlog1@plt>
movsd  %xmm0,-0x80(%rbp)
jmp    1a60 <brcmp1+0x8a0>
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
divsd  -0xa8(%rbp),%xmm0
ff
call   10a0 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x110(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x18(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movsd  -0x20(%rbp),%xmm1
mulsd  -0x80(%rbp),%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x48(%rbp)
mov    -0xc(%rbp),%edi
movsd  -0x48(%rbp),%xmm0
call   1060 <esum@plt>
movsd  %xmm0,-0x88(%rbp)
ff
movsd  0x25cb(%rip),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
mulsd  -0xa0(%rbp),%xmm0
ff
call   10b0 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x120(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  -0x20(%rbp),%xmm1
call   10d0 <bcorr@plt>
xor    %edi,%edi
sub    %eax,%edi
call   1090 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x118(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x8(%rbp)
movsd  -0x8(%rbp),%xmm0
add    $0x120,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<brcmp1>:
push   %rbx
sub    $0x70,%rsp
mov    %edi,%ebx
movapd %xmm0,%xmm4
minsd  %xmm1,%xmm4
ucomisd 0xe29(%rip),%xmm4
movsd  %xmm1,0x8(%rsp)
movsd  %xmm0,0x30(%rsp)
jae    1217 <brcmp1+0x57>
ucomisd 0xe2b(%rip),%xmm2
movapd %xmm4,0x20(%rsp)
jbe    1270 <brcmp1+0xb0>
ucomisd 0xe1b(%rip),%xmm3
movapd %xmm3,0x50(%rsp)
jbe    1468 <brcmp1+0x2a8>
movapd %xmm2,%xmm0
call   10a0 <log@plt>
jmp    1479 <brcmp1+0x2b9>
ucomisd %xmm1,%xmm0
movapd %xmm3,0x50(%rsp)
movapd %xmm2,0x60(%rsp)
jbe    12b5 <brcmp1+0xf5>
movapd %xmm1,%xmm4
divsd  %xmm0,%xmm4
movsd  0xdcb(%rip),%xmm2
addsd  %xmm4,%xmm2
movapd 0xdf7(%rip),%xmm5
unpcklpd %xmm4,%xmm5
unpcklpd %xmm2,%xmm2
divpd  %xmm2,%xmm5
movapd %xmm5,0x40(%rsp)
movapd %xmm0,%xmm2
addsd  %xmm1,%xmm2
mulsd  %xmm3,%xmm2
subsd  %xmm1,%xmm2
jmp    12f4 <brcmp1+0x134>
movapd %xmm2,%xmm0
movapd %xmm2,0x60(%rsp)
call   10a0 <log@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0x60(%rsp),%xmm0
xorpd  0xdbd(%rip),%xmm0
call   1040 <alnrel@plt>
movsd  0x10(%rsp),%xmm4
movsd  0x30(%rsp),%xmm3
movsd  0x8(%rsp),%xmm1
movapd 0x20(%rsp),%xmm2
jmp    14a2 <brcmp1+0x2e2>
movapd %xmm0,%xmm3
divsd  %xmm1,%xmm3
movsd  0xd43(%rip),%xmm4
addsd  %xmm3,%xmm4
shufpd $0x2,0xd5e(%rip),%xmm3
unpcklpd %xmm4,%xmm4
divpd  %xmm4,%xmm3
movapd %xmm3,0x40(%rsp)
movapd %xmm0,%xmm3
addsd  %xmm1,%xmm3
mulsd  %xmm2,%xmm3
movapd %xmm0,%xmm2
subsd  %xmm3,%xmm2
movapd 0xd54(%rip),%xmm1
movapd %xmm2,0x10(%rsp)
xorpd  %xmm2,%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,0x20(%rsp)
movapd %xmm1,%xmm0
call   1050 <fabs@plt>
ucomiss 0xd40(%rip),%xmm0
jbe    1345 <brcmp1+0x185>
movapd 0x60(%rsp),%xmm0
divsd  0x40(%rsp),%xmm0
call   10a0 <log@plt>
movapd 0x20(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,0x20(%rsp)
jmp    1356 <brcmp1+0x196>
movapd 0x20(%rsp),%xmm0
call   1070 <rlog1@plt>
movapd %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm1
movapd 0x10(%rsp),%xmm0
divsd  %xmm1,%xmm0
movapd %xmm0,0x10(%rsp)
call   1050 <fabs@plt>
ucomiss 0xce8(%rip),%xmm0
jbe    13af <brcmp1+0x1ef>
movapd 0x40(%rsp),%xmm1
unpckhpd %xmm1,%xmm1
movapd 0x50(%rsp),%xmm0
divsd  %xmm1,%xmm0
call   10a0 <log@plt>
movapd 0x10(%rsp),%xmm3
subsd  %xmm0,%xmm3
movsd  0x8(%rsp),%xmm2
movsd  0x30(%rsp),%xmm1
movapd %xmm3,%xmm0
jmp    13c6 <brcmp1+0x206>
movapd 0x10(%rsp),%xmm0
call   1070 <rlog1@plt>
movsd  0x8(%rsp),%xmm2
movsd  0x30(%rsp),%xmm1
movapd 0x20(%rsp),%xmm3
mulsd  %xmm2,%xmm0
mulsd  %xmm1,%xmm3
addsd  %xmm0,%xmm3
xorpd  0xc70(%rip),%xmm3
mov    %ebx,%edi
movapd %xmm3,%xmm0
call   1060 <esum@plt>
movsd  0x8(%rsp),%xmm1
movapd %xmm0,%xmm2
movapd 0x40(%rsp),%xmm3
mulsd  %xmm1,%xmm3
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm3
movapd %xmm3,%xmm0
movsd  %xmm2,0x10(%rsp)
jb     1419 <brcmp1+0x259>
sqrtsd %xmm0,%xmm0
jmp    1424 <brcmp1+0x264>
call   10b0 <sqrt@plt>
movsd  0x8(%rsp),%xmm1
movsd  0x30(%rsp),%xmm2
mulsd  0xbde(%rip),%xmm0
movsd  0x10(%rsp),%xmm3
mulsd  %xmm0,%xmm3
movsd  %xmm3,0x10(%rsp)
movapd %xmm2,%xmm0
call   10d0 <bcorr@plt>
neg    %eax
mov    %eax,%edi
call   1090 <exp@plt>
movapd %xmm0,%xmm1
mulsd  0x10(%rsp),%xmm1
movapd %xmm1,%xmm0
add    $0x70,%rsp
pop    %rbx
ret
movapd 0xbe0(%rip),%xmm0
xorpd  %xmm3,%xmm0
call   1040 <alnrel@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0x50(%rsp),%xmm0
call   10a0 <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  0xb52(%rip),%xmm0
ucomisd %xmm2,%xmm0
jbe    1535 <brcmp1+0x375>
maxsd  %xmm1,%xmm3
ucomisd 0xb38(%rip),%xmm3
movapd %xmm3,0x40(%rsp)
jae    1562 <brcmp1+0x3a2>
ucomisd 0xb2c(%rip),%xmm3
jbe    15b1 <brcmp1+0x3f1>
movsd  %xmm4,0x10(%rsp)
movapd %xmm2,%xmm0
call   10e0 <gamln1@plt>
movapd 0x40(%rsp),%xmm4
movapd %xmm0,%xmm2
movsd  0xb1d(%rip),%xmm3
addsd  %xmm4,%xmm3
cvttsd2si %xmm3,%eax
test   %eax,%eax
jle    161a <brcmp1+0x45a>
movsd  %xmm2,0x8(%rsp)
cmp    $0x1,%eax
jne    1625 <brcmp1+0x465>
movapd 0x20(%rsp),%xmm3
movsd  0xad8(%rip),%xmm0
jmp    1675 <brcmp1+0x4b5>
movapd %xmm3,%xmm0
movsd  %xmm4,0x10(%rsp)
call   10c0 <betaln@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %rax,%xmm1
movsd  0x10(%rsp),%xmm0
subsd  %xmm1,%xmm0
mov    %ebx,%edi
add    $0x70,%rsp
pop    %rbx
jmp    1060 <esum@plt>
movapd %xmm2,%xmm0
movsd  %xmm4,0x10(%rsp)
call   10e0 <gamln1@plt>
movsd  %xmm0,0x8(%rsp)
movapd 0x20(%rsp),%xmm0
movaps 0x40(%rsp),%xmm1
call   1080 <algdiv@plt>
addsd  0x8(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
subsd  %xmm0,%xmm1
mov    %ebx,%edi
movapd %xmm1,%xmm0
call   1060 <esum@plt>
movapd %xmm0,%xmm1
mulsd  0x20(%rsp),%xmm1
jmp    145e <brcmp1+0x29e>
mov    %ebx,%edi
movapd %xmm4,%xmm0
call   1060 <esum@plt>
movapd %xmm0,%xmm1
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jne    15d0 <brcmp1+0x410>
jnp    145e <brcmp1+0x29e>
movsd  %xmm1,0x10(%rsp)
movsd  0x30(%rsp),%xmm1
addsd  0x8(%rsp),%xmm1
ucomisd 0xa1e(%rip),%xmm1
jbe    1765 <brcmp1+0x5a5>
movsd  0xa28(%rip),%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm1,0x50(%rsp)
call   1030 <gam1@plt>
addsd  0x9f9(%rip),%xmm0
divsd  0x50(%rsp),%xmm0
jmp    1776 <brcmp1+0x5b6>
movapd 0x20(%rsp),%xmm1
jmp    16be <brcmp1+0x4fe>
mov    %eax,%ecx
and    $0xfffffffe,%ecx
movsd  0x9d6(%rip),%xmm0
movsd  0x9e6(%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 <brcmp1+0x480>
test   $0x1,%al
je     1695 <brcmp1+0x4d5>
addsd  0x99f(%rip),%xmm4
movapd %xmm3,%xmm2
addsd  %xmm4,%xmm2
movapd %xmm4,%xmm1
divsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
movapd %xmm4,0x40(%rsp)
call   10a0 <log@plt>
movapd 0x20(%rsp),%xmm1
movsd  0x8(%rsp),%xmm2
addsd  %xmm0,%xmm2
movapd 0x40(%rsp),%xmm3
addsd  0x962(%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 <brcmp1+0x549>
movsd  0x936(%rip),%xmm0
addsd  %xmm1,%xmm0
movapd %xmm1,0x30(%rsp)
call   1030 <gam1@plt>
addsd  0x907(%rip),%xmm0
divsd  0x30(%rsp),%xmm0
jmp    171a <brcmp1+0x55a>
movapd %xmm1,%xmm0
call   1030 <gam1@plt>
addsd  0x8ee(%rip),%xmm0
movsd  %xmm0,0x30(%rsp)
mov    %ebx,%edi
movsd  0x10(%rsp),%xmm0
call   1060 <esum@plt>
movapd 0x20(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movapd %xmm1,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
call   1030 <gam1@plt>
movapd %xmm0,%xmm1
addsd  0x8b4(%rip),%xmm1
mulsd  0x20(%rsp),%xmm1
divsd  0x30(%rsp),%xmm1
jmp    145e <brcmp1+0x29e>
movapd %xmm1,%xmm0
call   1030 <gam1@plt>
addsd  0x892(%rip),%xmm0
movapd %xmm0,0x50(%rsp)
movsd  0x30(%rsp),%xmm0
call   1030 <gam1@plt>
movapd %xmm0,%xmm1
movsd  0x875(%rip),%xmm0
addsd  %xmm0,%xmm1
movsd  %xmm1,0x30(%rsp)
movsd  0x8(%rsp),%xmm0
call   1030 <gam1@plt>
movsd  0x858(%rip),%xmm3
addsd  %xmm3,%xmm0
mulsd  0x30(%rsp),%xmm0
movapd 0x20(%rsp),%xmm1
unpcklpd %xmm1,%xmm0
movapd 0x50(%rsp),%xmm2
unpcklpd 0x40(%rsp),%xmm2
divpd  %xmm2,%xmm0
mulsd  %xmm0,%xmm1
movsd  0x10(%rsp),%xmm2
mulsd  %xmm1,%xmm2
movapd %xmm2,%xmm1
unpckhpd %xmm0,%xmm0
addsd  %xmm3,%xmm0
divsd  %xmm0,%xmm1
jmp    145e <brcmp1+0x29e>

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

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