#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ assert(int);
double cbnd(double, double, double);
double cnd(double);
double exp(double);
double log(double);
double pow(double, double);
double sqrt(double);
double PartialFloatLB(int fCall, double S, double SMin, double SMax, double t1,
                      double T2, double r, double b, double v, double lambda) {
  double m, part1, part2, part3;
  double vv, st1, sT2, erT2, ebrT2, d1, d2, e1, e2, f1, f2, g1, g2;
  assert(((S) == (S)) && (S) >= 0.000001 && (S) <= 1000000000000.0);
  assert(((SMin) == (SMin)) && (SMin) >= 0.000001 && (SMin) <= 1000000000000.0);
  assert(((SMax) == (SMax)) && (SMax) >= 0.000001 && (SMax) <= 1000000000000.0);
  assert(((r) == (r)) && (r) >= 0.0 && (r) <= 1000.0);
  assert(((b) == (b)) && (b) >= -1000.0 && (b) <= 1000.0);
  assert(((v) == (v)) && (v) >= 0.0000001 && v <= 100.99999);
  if (fCall)
    m = SMin;
  else
    m = SMax;
  vv = v * v;
  st1 = sqrt(t1);
  sT2 = sqrt(T2);
  erT2 = exp(-r * T2);
  ebrT2 = exp((b - r) * T2);
  d1 = (log(S / m) + (b + vv / 2.0) * T2) / (v * sT2);
  d2 = d1 - v * sT2;
  e1 = (b + vv / 2.0) * (T2 - t1) / (v * sqrt(T2 - t1));
  e2 = e1 - v * sqrt(T2 - t1);
  f1 = (log(S / m) + (b + vv / 2.0) * t1) / (v * st1);
  f2 = f1 - v * st1;
  g1 = log(lambda) / (v * sT2);
  g2 = log(lambda) / (v * sqrt(T2 - t1));
  if (fCall) {
    part1 = S * ebrT2 * cnd(d1 - g1) - lambda * m * erT2 * cnd(d2 - g1);
    part2 = erT2 * vv / (2.0 * b) * lambda * S *
                (pow((S / m), (-2.0 * b / vv)) *
                     cbnd(-f1 + 2.0 * b * st1 / v, -d1 + 2.0 * b * sT2 / v - g1,
                          sqrt(t1 / T2)) -
                 exp(b * T2) * pow(lambda, (2.0 * b / vv)) *
                     cbnd(-d1 - g1, e1 + g2, -sqrt(1.0 - t1 / T2))) +
            S * ebrT2 * cbnd(-d1 + g1, e1 - g2, -sqrt(1.0 - t1 / T2));
    part3 = erT2 * lambda * m * cbnd(-f2, d2 - g1, -sqrt(t1 / T2)) -
            exp(-b * (T2 - t1)) * ebrT2 * (1.0 + vv / (2.0 * b)) * lambda * S *
                cnd(e2 - g2) * cnd(-f1);
  } else {
    part1 = lambda * m * erT2 * cnd(-d2 + g1) - S * ebrT2 * cnd(-d1 + g1);
    part2 = -erT2 * vv / (2.0 * b) * lambda * S *
                (pow((S / m), (-2.0 * b / vv)) *
                     cbnd(f1 - 2.0 * b * st1 / v, d1 - 2.0 * b * sT2 / v + g1,
                          sqrt(t1 / T2)) -
                 exp(b * T2) * pow(lambda, (2.0 * b / vv)) *
                     cbnd(d1 + g1, -e1 - g2, -sqrt(1.0 - t1 / T2))) -
            S * ebrT2 * cbnd(d1 - g1, -e1 + g2, -sqrt(1.0 - t1 / T2));
    part3 = -erT2 * lambda * m * cbnd(f2, -d2 + g1, -sqrt(t1 / T2)) +
            exp(-b * (T2 - t1)) * ebrT2 * (1.0 + vv / (2.0 * b)) * lambda * S *
                cnd(-e2 + g2) * cnd(f1);
  }
  return part1 + part2 + part3;
}


x86 assembly (clang, -O0):
<PartialFloatLB>:
push   %rbp
mov    %rsp,%rbp
sub    $0x270,%rsp
movsd  0x10(%rbp),%xmm8
mov    %edi,-0x4(%rbp)
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
movsd  %xmm2,-0x20(%rbp)
movsd  %xmm3,-0x28(%rbp)
movsd  %xmm4,-0x30(%rbp)
movsd  %xmm5,-0x38(%rbp)
movsd  %xmm6,-0x40(%rbp)
movsd  %xmm7,-0x48(%rbp)
movsd  -0x10(%rbp),%xmm0
xor    %eax,%eax
ucomisd -0x10(%rbp),%xmm0
mov    %al,-0xd1(%rbp)
jne    11ff <PartialFloatLB+0x8f>
jp     11ff <PartialFloatLB+0x8f>
movsd  -0x10(%rbp),%xmm0
xor    %eax,%eax
movsd  0x1e27(%rip),%xmm1
ucomisd %xmm1,%xmm0
mov    %al,-0xd1(%rbp)
jb     11ff <PartialFloatLB+0x8f>
movsd  0x1e17(%rip),%xmm0
ucomisd -0x10(%rbp),%xmm0
setae  %al
mov    %al,-0xd1(%rbp)
mov    -0xd1(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
call   1040 <assert@plt>
movsd  -0x18(%rbp),%xmm0
xor    %eax,%eax
ucomisd -0x18(%rbp),%xmm0
mov    %al,-0xd2(%rbp)
jne    1262 <PartialFloatLB+0xf2>
jp     1262 <PartialFloatLB+0xf2>
movsd  -0x18(%rbp),%xmm0
xor    %eax,%eax
movsd  0x1dc4(%rip),%xmm1
ucomisd %xmm1,%xmm0
mov    %al,-0xd2(%rbp)
jb     1262 <PartialFloatLB+0xf2>
movsd  0x1db4(%rip),%xmm0
ucomisd -0x18(%rbp),%xmm0
setae  %al
mov    %al,-0xd2(%rbp)
mov    -0xd2(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
call   1040 <assert@plt>
movsd  -0x20(%rbp),%xmm0
xor    %eax,%eax
ucomisd -0x20(%rbp),%xmm0
mov    %al,-0xd3(%rbp)
jne    12c5 <PartialFloatLB+0x155>
jp     12c5 <PartialFloatLB+0x155>
movsd  -0x20(%rbp),%xmm0
xor    %eax,%eax
movsd  0x1d61(%rip),%xmm1
ucomisd %xmm1,%xmm0
mov    %al,-0xd3(%rbp)
jb     12c5 <PartialFloatLB+0x155>
movsd  0x1d51(%rip),%xmm0
ucomisd -0x20(%rbp),%xmm0
setae  %al
mov    %al,-0xd3(%rbp)
mov    -0xd3(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
call   1040 <assert@plt>
movsd  -0x38(%rbp),%xmm0
xor    %eax,%eax
ucomisd -0x38(%rbp),%xmm0
mov    %al,-0xd4(%rbp)
jne    1323 <PartialFloatLB+0x1b3>
jp     1323 <PartialFloatLB+0x1b3>
movsd  -0x38(%rbp),%xmm0
xor    %eax,%eax
xorps  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
mov    %al,-0xd4(%rbp)
jb     1323 <PartialFloatLB+0x1b3>
movsd  0x1cfb(%rip),%xmm0
ucomisd -0x38(%rbp),%xmm0
setae  %al
mov    %al,-0xd4(%rbp)
mov    -0xd4(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
call   1040 <assert@plt>
movsd  -0x40(%rbp),%xmm0
xor    %eax,%eax
ucomisd -0x40(%rbp),%xmm0
mov    %al,-0xd5(%rbp)
jne    1386 <PartialFloatLB+0x216>
jp     1386 <PartialFloatLB+0x216>
movsd  -0x40(%rbp),%xmm0
xor    %eax,%eax
movsd  0x1cb8(%rip),%xmm1
ucomisd %xmm1,%xmm0
mov    %al,-0xd5(%rbp)
jb     1386 <PartialFloatLB+0x216>
movsd  0x1c98(%rip),%xmm0
ucomisd -0x40(%rbp),%xmm0
setae  %al
mov    %al,-0xd5(%rbp)
mov    -0xd5(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
call   1040 <assert@plt>
movsd  -0x48(%rbp),%xmm0
xor    %eax,%eax
ucomisd -0x48(%rbp),%xmm0
mov    %al,-0xd6(%rbp)
jne    13e9 <PartialFloatLB+0x279>
jp     13e9 <PartialFloatLB+0x279>
movsd  -0x48(%rbp),%xmm0
xor    %eax,%eax
movsd  0x1c5d(%rip),%xmm1
ucomisd %xmm1,%xmm0
mov    %al,-0xd6(%rbp)
jb     13e9 <PartialFloatLB+0x279>
movsd  0x1c4d(%rip),%xmm0
ucomisd -0x48(%rbp),%xmm0
setae  %al
mov    %al,-0xd6(%rbp)
mov    -0xd6(%rbp),%al
and    $0x1,%al
movzbl %al,%edi
call   1040 <assert@plt>
cmpl   $0x0,-0x4(%rbp)
je     1412 <PartialFloatLB+0x2a2>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    141c <PartialFloatLB+0x2ac>
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x48(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x28(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  %xmm0,-0x78(%rbp)
movsd  -0x30(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  %xmm0,-0x80(%rbp)
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
divsd  -0x50(%rbp),%xmm0
call   1060 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  0x1b79(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
mulsd  -0x80(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x80(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm1
movsd  0x1b03(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  -0x30(%rbp),%xmm1
subsd  -0x28(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x108(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x100(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0xf8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xf0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
divsd  -0x50(%rbp),%xmm0
call   1060 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
movsd  -0x70(%rbp),%xmm2
movsd  0x1a1c(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  -0x28(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
mulsd  -0x78(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm1
ff
movsd  -0x48(%rbp),%xmm0
movsd  -0x78(%rbp),%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  0x10(%rbp),%xmm0
call   1060 <log@plt>
movsd  -0x48(%rbp),%xmm1
mulsd  -0x80(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0x10(%rbp),%xmm0
call   1060 <log@plt>
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0xe8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xe0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
cmpl   $0x0,-0x4(%rbp)
je     1c44 <PartialFloatLB+0xad4>
movsd  -0x10(%rbp),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
call   1070 <cnd@plt>
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  0x10(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
call   1070 <cnd@plt>
movsd  -0x1b8(%rbp),%xmm1
ff
movsd  -0x1b0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x1a8(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
mulsd  -0x70(%rbp),%xmm0
movsd  0x1884(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
divsd  %xmm1,%xmm0
mulsd  0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
divsd  -0x50(%rbp),%xmm0
movsd  0x1867(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
divsd  -0x70(%rbp),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x1819(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
mulsd  -0x78(%rbp),%xmm1
divsd  -0x48(%rbp),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x17d7(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
mulsd  -0x80(%rbp),%xmm1
divsd  -0x48(%rbp),%xmm1
addsd  %xmm1,%xmm0
subsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
divsd  -0x30(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x1a0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x198(%rbp),%xmm0
ff
call   1030 <cbnd@plt>
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,-0x190(%rbp)
ff
movsd  0x10(%rbp),%xmm0
movsd  0x1761(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
divsd  -0x70(%rbp),%xmm1
call   1080 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x190(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
subsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x28(%rbp),%xmm1
divsd  -0x30(%rbp),%xmm1
movsd  0x16ea(%rip),%xmm0
subsd  %xmm1,%xmm0
call   1090 <sqrt@plt>
movsd  -0x188(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x180(%rbp),%xmm0
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
call   1030 <cbnd@plt>
movsd  -0x178(%rbp),%xmm1
ff
movsd  -0x170(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x168(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x28(%rbp),%xmm1
divsd  -0x30(%rbp),%xmm1
movsd  0x15fe(%rip),%xmm0
subsd  %xmm1,%xmm0
call   1090 <sqrt@plt>
movsd  -0x160(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x158(%rbp),%xmm0
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
call   1030 <cbnd@plt>
movsd  -0x150(%rbp),%xmm1
ff
movsd  -0x148(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x140(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
mulsd  0x10(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
divsd  -0x30(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x138(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x130(%rbp),%xmm0
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
call   1030 <cbnd@plt>
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x30(%rbp),%xmm1
subsd  -0x28(%rbp),%xmm1
mulsd  %xmm1,%xmm0
call   1050 <exp@plt>
mulsd  -0x90(%rbp),%xmm0
ff
movsd  -0x70(%rbp),%xmm2
movsd  0x14af(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
divsd  %xmm1,%xmm2
movsd  0x14a6(%rip),%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mulsd  0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0xd0(%rbp),%xmm0
ff
call   1070 <cnd@plt>
movaps %xmm0,%xmm1
movsd  -0x128(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1070 <cnd@plt>
movsd  -0x120(%rbp),%xmm1
ff
movsd  -0x118(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x110(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
jmp    21be <PartialFloatLB+0x104e>
movsd  0x10(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
mulsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x258(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
call   1070 <cnd@plt>
movsd  %xmm0,-0x260(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x268(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
call   1070 <cnd@plt>
movsd  -0x268(%rbp),%xmm1
ff
movsd  -0x260(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x258(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x70(%rbp),%xmm0
movsd  0x12ee(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
divsd  %xmm1,%xmm0
mulsd  0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x1f0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
divsd  -0x50(%rbp),%xmm0
movsd  0x12d1(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
divsd  -0x70(%rbp),%xmm1
call   1080 <pow@plt>
movsd  %xmm0,-0x218(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  0x129a(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
mulsd  -0x78(%rbp),%xmm1
divsd  -0x48(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x248(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  0x126f(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
mulsd  -0x80(%rbp),%xmm1
divsd  -0x48(%rbp),%xmm1
subsd  %xmm1,%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x250(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
divsd  -0x30(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x250(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x248(%rbp),%xmm0
ff
call   1030 <cbnd@plt>
movsd  %xmm0,-0x220(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,-0x240(%rbp)
ff
movsd  0x10(%rbp),%xmm0
movsd  0x11f9(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
divsd  -0x70(%rbp),%xmm1
call   1080 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x240(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x228(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x230(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
subsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x238(%rbp)
ff
movsd  -0x28(%rbp),%xmm1
divsd  -0x30(%rbp),%xmm1
movsd  0x1182(%rip),%xmm0
subsd  %xmm1,%xmm0
call   1090 <sqrt@plt>
movsd  -0x238(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x230(%rbp),%xmm0
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
call   1030 <cbnd@plt>
movsd  -0x228(%rbp),%xmm1
ff
movsd  -0x220(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x218(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
mulsd  -0x90(%rbp),%xmm0
ff
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
subsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0xa8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
addsd  -0xd0(%rbp),%xmm0
ff
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x28(%rbp),%xmm1
divsd  -0x30(%rbp),%xmm1
movsd  0x1096(%rip),%xmm0
subsd  %xmm1,%xmm0
call   1090 <sqrt@plt>
movsd  -0x210(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x208(%rbp),%xmm0
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
call   1030 <cbnd@plt>
movsd  -0x200(%rbp),%xmm1
ff
movsd  -0x1f8(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x1f0(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x88(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  0x10(%rbp),%xmm0
mulsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
addsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
divsd  -0x30(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x1e8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x1e0(%rbp),%xmm0
ff
movq   %xmm2,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm2
call   1030 <cbnd@plt>
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x30(%rbp),%xmm1
subsd  -0x28(%rbp),%xmm1
mulsd  %xmm1,%xmm0
call   1050 <exp@plt>
mulsd  -0x90(%rbp),%xmm0
ff
movsd  -0x70(%rbp),%xmm2
movsd  0xf19(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
divsd  %xmm1,%xmm2
movsd  0xf10(%rip),%xmm1
addsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mulsd  0x10(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
addsd  -0xd0(%rbp),%xmm0
ff
call   1070 <cnd@plt>
movaps %xmm0,%xmm1
movsd  -0x1d8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
call   1070 <cnd@plt>
movsd  -0x1d0(%rbp),%xmm1
ff
movsd  -0x1c8(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x1c0(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x58(%rbp),%xmm0
addsd  -0x60(%rbp),%xmm0
addsd  -0x68(%rbp),%xmm0
add    $0x270,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<PartialFloatLB>:
push   %rbx
sub    $0x1c0,%rsp
ucomisd %xmm0,%xmm0
setnp  %al
ucomisd 0xe79(%rip),%xmm0
setae  %cl
and    %al,%cl
movsd  0xe73(%rip),%xmm8
movapd %xmm0,0x180(%rsp)
ucomisd %xmm0,%xmm8
movaps %xmm7,0x10(%rsp)
movaps %xmm6,0xf0(%rsp)
movaps %xmm5,0x50(%rsp)
movsd  %xmm4,0x8(%rsp)
movsd  %xmm3,0x40(%rsp)
movaps %xmm2,0xc0(%rsp)
movsd  %xmm1,0x20(%rsp)
mov    %edi,%ebx
setae  %al
and    %cl,%al
movzbl %al,%edi
call   1040 <assert@plt>
movsd  0x20(%rsp),%xmm1
ucomisd %xmm1,%xmm1
setnp  %al
ucomisd 0xe0d(%rip),%xmm1
setae  %cl
and    %al,%cl
movsd  0xe08(%rip),%xmm0
ucomisd %xmm1,%xmm0
setae  %al
and    %cl,%al
movzbl %al,%edi
call   1040 <assert@plt>
movapd 0xc0(%rsp),%xmm1
ucomisd %xmm1,%xmm1
setnp  %al
ucomisd 0xdd7(%rip),%xmm1
setae  %cl
and    %al,%cl
movsd  0xdd2(%rip),%xmm0
ucomisd %xmm1,%xmm0
setae  %al
and    %cl,%al
movzbl %al,%edi
call   1040 <assert@plt>
xorpd  %xmm0,%xmm0
movapd 0x50(%rsp),%xmm1
ucomisd %xmm0,%xmm1
setae  %al
movsd  0xdb0(%rip),%xmm0
ucomisd %xmm1,%xmm0
setae  %cl
and    %al,%cl
movzbl %cl,%edi
call   1040 <assert@plt>
movapd 0xf0(%rsp),%xmm0
ucomisd %xmm0,%xmm0
setnp  %al
ucomisd 0xd8f(%rip),%xmm0
setae  %cl
and    %al,%cl
movsd  0xd7a(%rip),%xmm1
ucomisd %xmm0,%xmm1
setae  %al
and    %cl,%al
movzbl %al,%edi
call   1040 <assert@plt>
movapd 0x10(%rsp),%xmm1
ucomisd %xmm1,%xmm1
setnp  %al
ucomisd 0xd64(%rip),%xmm1
setae  %cl
and    %al,%cl
movsd  0xd5f(%rip),%xmm0
ucomisd %xmm1,%xmm0
setae  %al
and    %cl,%al
movzbl %al,%edi
call   1040 <assert@plt>
test   %ebx,%ebx
je     12ed <PartialFloatLB+0x17d>
movsd  0x20(%rsp),%xmm0
movapd %xmm0,0xc0(%rsp)
movsd  0x40(%rsp),%xmm0
ucomisd 0xd4d(%rip),%xmm0
jb     1303 <PartialFloatLB+0x193>
sqrtsd %xmm0,%xmm0
jmp    1308 <PartialFloatLB+0x198>
call   1090 <sqrt@plt>
movsd  %xmm0,0xa0(%rsp)
movsd  0x8(%rsp),%xmm1
movapd 0x10(%rsp),%xmm0
mulsd  %xmm0,%xmm0
movapd %xmm0,0xe0(%rsp)
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm1
jb     133d <PartialFloatLB+0x1cd>
xorps  %xmm0,%xmm0
sqrtsd %xmm1,%xmm0
jmp    134c <PartialFloatLB+0x1dc>
movapd %xmm1,%xmm0
call   1090 <sqrt@plt>
movsd  0x8(%rsp),%xmm1
movsd  %xmm0,0x38(%rsp)
movapd 0x50(%rsp),%xmm0
xorpd  0xcf0(%rip),%xmm0
mulsd  %xmm1,%xmm0
call   1050 <exp@plt>
movapd %xmm0,0x170(%rsp)
movapd 0xf0(%rsp),%xmm0
subsd  0x50(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm0
call   1050 <exp@plt>
movapd %xmm0,0x1b0(%rsp)
movapd 0x180(%rsp),%xmm0
divsd  0xc0(%rsp),%xmm0
movapd %xmm0,0xd0(%rsp)
call   1060 <log@plt>
movapd %xmm0,%xmm7
movsd  0xc6f(%rip),%xmm1
mulsd  0xe0(%rsp),%xmm1
addsd  0xf0(%rsp),%xmm1
movapd %xmm1,%xmm3
movsd  0x8(%rsp),%xmm2
mulsd  %xmm2,%xmm3
movapd 0x10(%rsp),%xmm4
movapd %xmm4,%xmm0
xorpd  0xc5d(%rip),%xmm0
movapd %xmm0,0x50(%rsp)
subsd  0x40(%rsp),%xmm2
sqrtsd %xmm2,%xmm5
ucomisd 0xc3d(%rip),%xmm2
movapd %xmm5,%xmm6
movsd  %xmm2,0x88(%rsp)
movapd %xmm1,0x120(%rsp)
movsd  %xmm5,0xb0(%rsp)
jae    147d <PartialFloatLB+0x30d>
movsd  0x88(%rsp),%xmm0
movapd %xmm3,0x90(%rsp)
movsd  %xmm7,0x20(%rsp)
call   1090 <sqrt@plt>
movsd  0x20(%rsp),%xmm7
movsd  0xb0(%rsp),%xmm5
movapd 0x10(%rsp),%xmm4
movapd 0x90(%rsp),%xmm3
movapd 0x120(%rsp),%xmm1
movapd %xmm0,%xmm6
movsd  0x88(%rsp),%xmm2
addsd  %xmm7,%xmm3
movsd  0x38(%rsp),%xmm0
mulsd  %xmm4,%xmm0
movsd  %xmm0,0x70(%rsp)
movapd %xmm2,%xmm0
mulsd  %xmm1,%xmm0
movapd %xmm0,0x100(%rsp)
mulsd  %xmm4,%xmm6
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm2
movapd %xmm5,%xmm0
jae    14e0 <PartialFloatLB+0x370>
movsd  0x88(%rsp),%xmm0
movapd %xmm3,0x90(%rsp)
movsd  %xmm6,0x20(%rsp)
call   1090 <sqrt@plt>
movsd  0x20(%rsp),%xmm6
movapd 0x90(%rsp),%xmm3
divsd  0x70(%rsp),%xmm3
movapd %xmm3,0x90(%rsp)
movapd 0x100(%rsp),%xmm1
divsd  %xmm6,%xmm1
movapd %xmm1,0x100(%rsp)
mulsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x118(%rsp)
movapd 0xd0(%rsp),%xmm0
call   1060 <log@plt>
movapd 0x120(%rsp),%xmm1
mulsd  0x40(%rsp),%xmm1
addsd  %xmm0,%xmm1
movsd  0xa0(%rsp),%xmm2
movapd %xmm2,%xmm0
mulsd  0x10(%rsp),%xmm0
divsd  %xmm0,%xmm1
movapd %xmm1,0x120(%rsp)
movapd 0x50(%rsp),%xmm0
mulsd  %xmm2,%xmm0
movapd %xmm0,0x50(%rsp)
movsd  0x1d0(%rsp),%xmm0
call   1060 <log@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x1d0(%rsp),%xmm0
call   1060 <log@plt>
movsd  %xmm0,0x68(%rsp)
movsd  0x88(%rsp),%xmm0
ucomisd 0xaaa(%rip),%xmm0
movsd  0xb0(%rsp),%xmm0
jae    15b7 <PartialFloatLB+0x447>
movsd  0x88(%rsp),%xmm0
call   1090 <sqrt@plt>
movapd 0x90(%rsp),%xmm3
movapd %xmm3,%xmm6
movsd  0x70(%rsp),%xmm4
subsd  %xmm4,%xmm6
movsd  0x118(%rsp),%xmm7
addsd  0x100(%rsp),%xmm7
movapd 0x120(%rsp),%xmm1
movapd 0x50(%rsp),%xmm2
addsd  %xmm1,%xmm2
movapd %xmm2,0x50(%rsp)
movsd  0x20(%rsp),%xmm5
divsd  %xmm4,%xmm5
movapd 0x10(%rsp),%xmm4
mulsd  %xmm4,%xmm0
movsd  0x68(%rsp),%xmm2
divsd  %xmm0,%xmm2
movsd  %xmm2,0x68(%rsp)
test   %ebx,%ebx
movsd  %xmm7,0x118(%rsp)
movsd  %xmm5,0x20(%rsp)
je     176e <PartialFloatLB+0x5fe>
movapd %xmm3,%xmm0
subsd  %xmm5,%xmm0
movapd %xmm6,0x150(%rsp)
call   1070 <cnd@plt>
movsd  %xmm0,0x148(%rsp)
movapd 0x150(%rsp),%xmm0
subsd  0x20(%rsp),%xmm0
movapd %xmm0,0x150(%rsp)
call   1070 <cnd@plt>
movsd  %xmm0,0x1a0(%rsp)
movaps 0xc0(%rsp),%xmm1
movaps 0x9c8(%rip),%xmm0
xorps  %xmm0,%xmm1
movaps %xmm1,0x70(%rsp)
movapd 0xf0(%rsp),%xmm0
movapd %xmm0,%xmm1
addsd  %xmm0,%xmm1
movapd %xmm1,0xb0(%rsp)
movsd  0x986(%rip),%xmm1
mulsd  %xmm0,%xmm1
divsd  0xe0(%rsp),%xmm1
movaps 0xd0(%rsp),%xmm0
call   1080 <pow@plt>
movapd 0x90(%rsp),%xmm1
movaps %xmm0,0xd0(%rsp)
movsd  0xa0(%rsp),%xmm0
movapd 0xb0(%rsp),%xmm3
mulsd  %xmm3,%xmm0
movapd 0x10(%rsp),%xmm2
divsd  %xmm2,%xmm0
subsd  0x120(%rsp),%xmm0
movsd  %xmm0,0xa0(%rsp)
movapd %xmm1,%xmm0
xorpd  0x935(%rip),%xmm0
movapd %xmm0,0x130(%rsp)
movsd  0x38(%rsp),%xmm0
mulsd  %xmm3,%xmm0
divsd  %xmm2,%xmm0
subsd  %xmm1,%xmm0
subsd  0x20(%rsp),%xmm0
movsd  %xmm0,0x38(%rsp)
movsd  0x40(%rsp),%xmm0
divsd  0x8(%rsp),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
movsd  %xmm0,0x40(%rsp)
jb     1862 <PartialFloatLB+0x6f2>
xorps  %xmm2,%xmm2
sqrtsd %xmm0,%xmm2
jmp    186b <PartialFloatLB+0x6fb>
movapd %xmm5,%xmm0
subsd  %xmm6,%xmm0
movsd  %xmm0,0x148(%rsp)
call   1070 <cnd@plt>
movsd  %xmm0,0x150(%rsp)
movsd  0x20(%rsp),%xmm0
subsd  0x90(%rsp),%xmm0
call   1070 <cnd@plt>
movsd  %xmm0,0x130(%rsp)
movapd 0xf0(%rsp),%xmm0
movapd %xmm0,%xmm1
addsd  %xmm0,%xmm1
movapd %xmm1,0x70(%rsp)
movsd  0x86f(%rip),%xmm1
mulsd  %xmm0,%xmm1
divsd  0xe0(%rsp),%xmm1
movaps 0xd0(%rsp),%xmm0
call   1080 <pow@plt>
movaps %xmm0,0xb0(%rsp)
movsd  0xa0(%rsp),%xmm0
movapd 0x70(%rsp),%xmm2
mulsd  %xmm2,%xmm0
movapd 0x10(%rsp),%xmm1
divsd  %xmm1,%xmm0
movapd 0x120(%rsp),%xmm3
subsd  %xmm0,%xmm3
movsd  0x38(%rsp),%xmm0
mulsd  %xmm2,%xmm0
divsd  %xmm1,%xmm0
movapd 0x90(%rsp),%xmm1
subsd  %xmm0,%xmm1
addsd  0x20(%rsp),%xmm1
movsd  0x40(%rsp),%xmm0
divsd  0x8(%rsp),%xmm0
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm0
movsd  %xmm0,0x40(%rsp)
jb     1bf4 <PartialFloatLB+0xa84>
xorps  %xmm2,%xmm2
sqrtsd %xmm0,%xmm2
jmp    1c1b <PartialFloatLB+0xaab>
call   1090 <sqrt@plt>
movapd %xmm0,%xmm2
movsd  0x1d0(%rsp),%xmm1
movapd 0x70(%rsp),%xmm0
mulsd  %xmm1,%xmm0
movapd %xmm0,0x70(%rsp)
movsd  0xa0(%rsp),%xmm0
movsd  0x38(%rsp),%xmm1
call   1030 <cbnd@plt>
movsd  %xmm0,0xa0(%rsp)
movsd  0x8(%rsp),%xmm0
mulsd  0xf0(%rsp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,0x8(%rsp)
movapd 0xb0(%rsp),%xmm1
divsd  0xe0(%rsp),%xmm1
movsd  0x1d0(%rsp),%xmm0
call   1080 <pow@plt>
movsd  %xmm0,0x38(%rsp)
movapd 0x130(%rsp),%xmm3
subsd  0x20(%rsp),%xmm3
movapd 0x100(%rsp),%xmm1
addsd  0x68(%rsp),%xmm1
movsd  0x739(%rip),%xmm0
subsd  0x40(%rsp),%xmm0
xorps  %xmm2,%xmm2
sqrtsd %xmm0,%xmm2
movsd  %xmm0,0x10(%rsp)
ucomisd 0x726(%rip),%xmm0
movapd %xmm2,0x160(%rsp)
jae    1960 <PartialFloatLB+0x7f0>
movsd  0x10(%rsp),%xmm0
movapd %xmm3,0x130(%rsp)
movapd %xmm1,0x190(%rsp)
call   1090 <sqrt@plt>
movapd 0x190(%rsp),%xmm1
movapd 0x130(%rsp),%xmm3
movapd %xmm0,%xmm2
movapd 0x70(%rsp),%xmm0
mulsd  0x170(%rsp),%xmm0
movapd %xmm0,0x70(%rsp)
xorpd  0x6d3(%rip),%xmm2
movapd %xmm3,%xmm0
call   1030 <cbnd@plt>
movsd  %xmm0,0x130(%rsp)
movsd  0x20(%rsp),%xmm1
subsd  0x90(%rsp),%xmm1
movapd 0x100(%rsp),%xmm0
subsd  0x68(%rsp),%xmm0
movapd %xmm0,0x100(%rsp)
xorpd  %xmm2,%xmm2
movsd  0x10(%rsp),%xmm0
ucomisd %xmm2,%xmm0
movapd 0x160(%rsp),%xmm2
jae    19ea <PartialFloatLB+0x87a>
movsd  0x10(%rsp),%xmm0
movsd  %xmm1,0x20(%rsp)
call   1090 <sqrt@plt>
movsd  0x20(%rsp),%xmm1
movapd %xmm0,%xmm2
movapd 0x70(%rsp),%xmm0
mulsd  0x1a0(%rsp),%xmm0
movapd %xmm0,0x70(%rsp)
movapd 0x649(%rip),%xmm0
xorpd  %xmm0,%xmm2
movapd %xmm1,%xmm0
movaps 0x100(%rsp),%xmm1
call   1030 <cbnd@plt>
movapd %xmm0,0x20(%rsp)
movaps 0x50(%rsp),%xmm0
xorps  0x622(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movsd  0x40(%rsp),%xmm0
ucomisd 0x607(%rip),%xmm0
jb     1a4c <PartialFloatLB+0x8dc>
xorps  %xmm2,%xmm2
sqrtsd %xmm0,%xmm2
jmp    1a55 <PartialFloatLB+0x8e5>
call   1090 <sqrt@plt>
movapd %xmm0,%xmm2
movaps 0x150(%rsp),%xmm1
movapd 0x5eb(%rip),%xmm0
xorpd  %xmm0,%xmm2
movaps 0x50(%rsp),%xmm0
call   1030 <cbnd@plt>
movaps %xmm0,0x50(%rsp)
movapd 0xf0(%rsp),%xmm1
xorpd  0x5c7(%rip),%xmm1
movsd  0x88(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1050 <exp@plt>
movapd %xmm0,0x40(%rsp)
movapd 0xe0(%rsp),%xmm0
divsd  0xb0(%rsp),%xmm0
addsd  0x585(%rip),%xmm0
movapd %xmm0,0x10(%rsp)
movsd  0x118(%rsp),%xmm0
subsd  0x68(%rsp),%xmm0
call   1070 <cnd@plt>
movapd 0x573(%rip),%xmm5
movapd 0x40(%rsp),%xmm3
xorpd  %xmm5,%xmm3
movapd 0x1b0(%rsp),%xmm1
movapd %xmm1,%xmm2
mulsd  %xmm3,%xmm2
mulsd  0x10(%rsp),%xmm2
unpcklpd %xmm1,%xmm0
movsd  0x1d0(%rsp),%xmm4
mulsd  %xmm4,%xmm2
movapd 0x180(%rsp),%xmm1
mulsd  %xmm1,%xmm2
unpcklpd %xmm1,%xmm2
mulpd  %xmm0,%xmm2
movapd %xmm2,0x40(%rsp)
unpckhpd %xmm2,%xmm2
mulsd  0x148(%rsp),%xmm2
addsd  0x70(%rsp),%xmm2
movapd %xmm2,0x10(%rsp)
movapd 0x170(%rsp),%xmm3
movapd %xmm3,%xmm2
mulsd  0xe0(%rsp),%xmm2
divsd  0xb0(%rsp),%xmm2
movapd 0x120(%rsp),%xmm0
xorpd  %xmm5,%xmm0
movsd  0x38(%rsp),%xmm5
mulsd  0x8(%rsp),%xmm5
mulsd  0x130(%rsp),%xmm5
movapd 0xd0(%rsp),%xmm6
mulsd  0xa0(%rsp),%xmm6
subsd  %xmm5,%xmm6
movapd %xmm6,0xd0(%rsp)
unpcklpd %xmm2,%xmm3
unpcklpd %xmm4,%xmm4
mulpd  %xmm3,%xmm4
movapd 0xc0(%rsp),%xmm2
unpcklpd %xmm1,%xmm2
mulpd  %xmm4,%xmm2
movapd %xmm2,0xc0(%rsp)
call   1070 <cnd@plt>
movapd 0x50(%rsp),%xmm2
movapd 0x10(%rsp),%xmm1
unpcklpd 0x20(%rsp),%xmm0
mulpd  0x40(%rsp),%xmm0
unpcklpd 0xd0(%rsp),%xmm2
jmp    1f99 <PartialFloatLB+0xe29>
movapd %xmm3,0x10(%rsp)
movapd %xmm1,0xa0(%rsp)
call   1090 <sqrt@plt>
movapd 0xa0(%rsp),%xmm1
movapd 0x10(%rsp),%xmm3
movapd %xmm0,%xmm2
movaps 0x42e(%rip),%xmm0
xorps  0x1b0(%rsp),%xmm0
movaps %xmm0,0x1a0(%rsp)
movapd %xmm3,%xmm0
call   1030 <cbnd@plt>
movsd  %xmm0,0xa0(%rsp)
movsd  0x8(%rsp),%xmm0
mulsd  0xf0(%rsp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,0x38(%rsp)
movapd 0x70(%rsp),%xmm1
divsd  0xe0(%rsp),%xmm1
movsd  0x1d0(%rsp),%xmm0
call   1080 <pow@plt>
movsd  %xmm0,0xd0(%rsp)
movapd 0x90(%rsp),%xmm3
addsd  0x20(%rsp),%xmm3
movapd 0x3b5(%rip),%xmm1
xorpd  0x100(%rsp),%xmm1
subsd  0x68(%rsp),%xmm1
movsd  0x38e(%rip),%xmm0
subsd  0x40(%rsp),%xmm0
xorps  %xmm2,%xmm2
sqrtsd %xmm0,%xmm2
movsd  %xmm0,0x8(%rsp)
ucomisd 0x37b(%rip),%xmm0
movapd %xmm2,0x190(%rsp)
jae    1d05 <PartialFloatLB+0xb95>
movsd  0x8(%rsp),%xmm0
movapd %xmm3,0x10(%rsp)
movapd %xmm1,0x160(%rsp)
call   1090 <sqrt@plt>
movapd 0x160(%rsp),%xmm1
movapd 0x10(%rsp),%xmm3
movapd %xmm0,%xmm2
movapd 0xc0(%rsp),%xmm4
movsd  0x1d0(%rsp),%xmm0
mulsd  %xmm0,%xmm4
movapd %xmm4,0x10(%rsp)
xorpd  0x327(%rip),%xmm2
movapd %xmm3,%xmm0
call   1030 <cbnd@plt>
movsd  %xmm0,0x160(%rsp)
movapd 0x90(%rsp),%xmm3
subsd  0x20(%rsp),%xmm3
movsd  0x68(%rsp),%xmm1
subsd  0x100(%rsp),%xmm1
xorpd  %xmm2,%xmm2
movsd  0x8(%rsp),%xmm0
ucomisd %xmm2,%xmm0
movapd 0x190(%rsp),%xmm2
jae    1d9f <PartialFloatLB+0xc2f>
movsd  0x8(%rsp),%xmm0
movapd %xmm3,0x90(%rsp)
movsd  %xmm1,0x20(%rsp)
call   1090 <sqrt@plt>
movsd  0x20(%rsp),%xmm1
movapd 0x90(%rsp),%xmm3
movapd %xmm0,%xmm2
movapd 0x10(%rsp),%xmm0
mulsd  0x170(%rsp),%xmm0
movapd %xmm0,0x10(%rsp)
xorpd  0x294(%rip),%xmm2
movapd %xmm3,%xmm0
call   1030 <cbnd@plt>
movapd %xmm0,0x20(%rsp)
movsd  0x40(%rsp),%xmm0
ucomisd 0x26f(%rip),%xmm0
jb     1de4 <PartialFloatLB+0xc74>
xorps  %xmm2,%xmm2
sqrtsd %xmm0,%xmm2
jmp    1ded <PartialFloatLB+0xc7d>
call   1090 <sqrt@plt>
movapd %xmm0,%xmm2
movapd 0x25b(%rip),%xmm0
xorpd  %xmm0,%xmm2
movaps 0x50(%rsp),%xmm0
movsd  0x148(%rsp),%xmm1
call   1030 <cbnd@plt>
movaps %xmm0,0x50(%rsp)
movapd 0xf0(%rsp),%xmm1
xorpd  0x22e(%rip),%xmm1
movsd  0x88(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1050 <exp@plt>
movapd 0x1b0(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movapd 0xe0(%rsp),%xmm2
divsd  0x70(%rsp),%xmm2
addsd  0x1e8(%rip),%xmm2
mulsd  %xmm1,%xmm2
movsd  0x1d0(%rsp),%xmm0
mulsd  %xmm0,%xmm2
mulsd  0x180(%rsp),%xmm2
movapd %xmm2,0x40(%rsp)
movsd  0x68(%rsp),%xmm0
subsd  0x118(%rsp),%xmm0
call   1070 <cnd@plt>
unpcklpd 0x1a0(%rsp),%xmm0
movapd 0x40(%rsp),%xmm1
movapd 0x180(%rsp),%xmm3
unpcklpd %xmm3,%xmm1
mulpd  %xmm0,%xmm1
movapd %xmm1,0x40(%rsp)
movapd %xmm1,%xmm0
unpckhpd %xmm1,%xmm0
mulsd  0x130(%rsp),%xmm0
movapd 0x10(%rsp),%xmm1
mulsd  0x150(%rsp),%xmm1
addsd  %xmm0,%xmm1
movapd %xmm1,0x10(%rsp)
movapd 0x16c(%rip),%xmm0
xorpd  0x170(%rsp),%xmm0
movapd 0xe0(%rsp),%xmm2
mulsd  %xmm0,%xmm2
movapd %xmm0,%xmm1
divsd  0x70(%rsp),%xmm2
movsd  0xd0(%rsp),%xmm0
mulsd  0x38(%rsp),%xmm0
mulsd  0x160(%rsp),%xmm0
movapd 0xb0(%rsp),%xmm4
mulsd  0xa0(%rsp),%xmm4
subsd  %xmm0,%xmm4
movapd %xmm4,0xb0(%rsp)
unpcklpd %xmm2,%xmm1
movsd  0x1d0(%rsp),%xmm0
unpcklpd %xmm0,%xmm0
mulpd  %xmm1,%xmm0
movapd 0xc0(%rsp),%xmm1
unpcklpd %xmm3,%xmm1
mulpd  %xmm0,%xmm1
movapd %xmm1,0xc0(%rsp)
movapd 0x120(%rsp),%xmm0
call   1070 <cnd@plt>
movapd 0x50(%rsp),%xmm2
movapd 0x10(%rsp),%xmm1
unpcklpd 0x20(%rsp),%xmm0
mulpd  0x40(%rsp),%xmm0
unpcklpd 0xb0(%rsp),%xmm2
mulpd  0xc0(%rsp),%xmm2
addpd  %xmm0,%xmm2
movapd %xmm2,%xmm0
unpckhpd %xmm2,%xmm0
addsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
add    $0x1c0,%rsp
pop    %rbx
ret

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

LLVM IR (-O2):
define double @PartialFloatLB(i32 %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, double %8, double %9) {
%11 = fcmp ord double %1, 0.000000e+00
%12 = fcmp oge double %1, 0x3EB0C6F7A0B5ED8D
%13 = and i1 %11, %12
%14 = fcmp ole double %1, 1.000000e+12
%15 = and i1 %14, %13
%16 = zext i1 %15 to i32
%17 = tail call i32 @assert(i32 %16)
%18 = fcmp ord double %2, 0.000000e+00
%19 = fcmp oge double %2, 0x3EB0C6F7A0B5ED8D
%20 = and i1 %18, %19
%21 = fcmp ole double %2, 1.000000e+12
%22 = and i1 %21, %20
%23 = zext i1 %22 to i32
%24 = tail call i32 @assert(i32 %23)
%25 = fcmp ord double %3, 0.000000e+00
%26 = fcmp oge double %3, 0x3EB0C6F7A0B5ED8D
%27 = and i1 %25, %26
%28 = fcmp ole double %3, 1.000000e+12
%29 = and i1 %28, %27
%30 = zext i1 %29 to i32
%31 = tail call i32 @assert(i32 %30)
%32 = fcmp oge double %6, 0.000000e+00
%33 = fcmp ole double %6, 1.000000e+03
%34 = and i1 %32, %33
%35 = zext i1 %34 to i32
%36 = tail call i32 @assert(i32 %35)
%37 = fcmp ord double %7, 0.000000e+00
%38 = fcmp oge double %7, -1.000000e+03
%39 = and i1 %37, %38
%40 = fcmp ole double %7, 1.000000e+03
%41 = and i1 %40, %39
%42 = zext i1 %41 to i32
%43 = tail call i32 @assert(i32 %42)
%44 = fcmp ord double %8, 0.000000e+00
%45 = fcmp oge double %8, 0x3E7AD7F29ABCAF48
%46 = and i1 %44, %45
%47 = fcmp ole double %8, 0x40593FFFD60E94EE
%48 = and i1 %47, %46
%49 = zext i1 %48 to i32
%50 = tail call i32 @assert(i32 %49)
%51 = icmp eq i32 %0, 0
%52 = select i1 %51, double %3, double %2
%53 = fmul double %8, %8
%54 = tail call double @sqrt(double %4)
%55 = tail call double @sqrt(double %5)
%56 = fneg double %6
%57 = fmul double %56, %5
%58 = tail call double @exp(double %57)
%59 = fsub double %7, %6
%60 = fmul double %59, %5
%61 = tail call double @exp(double %60)
%62 = fdiv double %1, %52
%63 = tail call double @log(double %62)
%64 = fmul double %53, 5.000000e-01
%65 = fadd double %64, %7
%66 = tail call double @llvm.fmuladd.f64(double %65, double %5, double %63)
%67 = fmul double %55, %8
%68 = fdiv double %66, %67
%69 = fneg double %8
%70 = tail call double @llvm.fmuladd.f64(double %69, double %55, double %68)
%71 = fsub double %5, %4
%72 = fmul double %71, %65
%73 = tail call double @sqrt(double %71)
%74 = fmul double %73, %8
%75 = fdiv double %72, %74
%76 = tail call double @sqrt(double %71)
%77 = tail call double @llvm.fmuladd.f64(double %69, double %76, double %75)
%78 = tail call double @log(double %62)
%79 = tail call double @llvm.fmuladd.f64(double %65, double %4, double %78)
%80 = fmul double %54, %8
%81 = fdiv double %79, %80
%82 = tail call double @llvm.fmuladd.f64(double %69, double %54, double %81)
%83 = tail call double @log(double %9)
%84 = fdiv double %83, %67
%85 = tail call double @log(double %9)
%86 = tail call double @sqrt(double %71)
%87 = fmul double %86, %8
%88 = fdiv double %85, %87
br i1 %51, label %172, label %89
89: ; preds = %10
%90 = fsub double %68, %84
%91 = tail call double @cnd(double %90)
%92 = fsub double %70, %84
%93 = tail call double @cnd(double %92)
%94 = fneg double %52
%95 = fmul double %94, %9
%96 = fmul double %95, %58
%97 = fmul double %96, %93
%98 = fmul double %7, 2.000000e+00
%99 = fmul double %7, -2.000000e+00
%100 = fdiv double %99, %53
%101 = tail call double @pow(double %62, double %100)
%102 = fmul double %98, %54
%103 = fdiv double %102, %8
%104 = fsub double %103, %81
%105 = fneg double %68
%106 = fmul double %98, %55
%107 = fdiv double %106, %8
%108 = fsub double %107, %68
%109 = fsub double %108, %84
%110 = fdiv double %4, %5
%111 = tail call double @sqrt(double %110)
%112 = tail call double @cbnd(double %104, double %109, double %111)
%113 = fmul double %5, %7
%114 = tail call double @exp(double %113)
%115 = fdiv double %98, %53
%116 = tail call double @pow(double %9, double %115)
%117 = fsub double %105, %84
%118 = fadd double %75, %88
%119 = fsub double 1.000000e+00, %110
%120 = tail call double @sqrt(double %119)
%121 = fneg double %120
%122 = tail call double @cbnd(double %117, double %118, double %121)
%123 = fsub double %84, %68
%124 = fsub double %75, %88
%125 = tail call double @sqrt(double %119)
%126 = fneg double %125
%127 = tail call double @cbnd(double %123, double %124, double %126)
%128 = fneg double %82
%129 = tail call double @sqrt(double %110)
%130 = fneg double %129
%131 = tail call double @cbnd(double %128, double %92, double %130)
%132 = fneg double %7
%133 = fmul double %71, %132
%134 = tail call double @exp(double %133)
%135 = fdiv double %53, %98
%136 = fadd double %135, 1.000000e+00
%137 = fsub double %77, %88
%138 = tail call double @cnd(double %137)
%139 = fneg double %134
%140 = fmul double %61, %139
%141 = fmul double %136, %140
%142 = fmul double %141, %9
%143 = fmul double %142, %1
%144 = insertelement <2 x double> poison, double %138, i64 0
%145 = insertelement <2 x double> %144, double %61, i64 1
%146 = insertelement <2 x double> poison, double %1, i64 1
%147 = insertelement <2 x double> %146, double %143, i64 0
%148 = fmul <2 x double> %145, %147
%149 = extractelement <2 x double> %148, i64 1
%150 = tail call double @llvm.fmuladd.f64(double %149, double %91, double %97)
%151 = fmul double %53, %58
%152 = fdiv double %151, %98
%153 = fneg double %81
%154 = fneg double %114
%155 = fmul double %116, %154
%156 = fmul double %155, %122
%157 = tail call double @llvm.fmuladd.f64(double %101, double %112, double %156)
%158 = insertelement <2 x double> poison, double %58, i64 0
%159 = insertelement <2 x double> %158, double %152, i64 1
%160 = insertelement <2 x double> poison, double %9, i64 0
%161 = shufflevector <2 x double> %160, <2 x double> poison, <2 x i32> zeroinitializer
%162 = fmul <2 x double> %159, %161
%163 = insertelement <2 x double> %146, double %52, i64 0
%164 = fmul <2 x double> %163, %162
%165 = tail call double @cnd(double %153)
%166 = insertelement <2 x double> poison, double %165, i64 0
%167 = insertelement <2 x double> %166, double %127, i64 1
%168 = fmul <2 x double> %167, %148
%169 = insertelement <2 x double> poison, double %131, i64 0
%170 = insertelement <2 x double> %169, double %157, i64 1
%171 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %164, <2 x double> %170, <2 x double> %168)
br label %253
172: ; preds = %10
%173 = fmul double %52, %9
%174 = fmul double %173, %58
%175 = fsub double %84, %70
%176 = tail call double @cnd(double %175)
%177 = fsub double %84, %68
%178 = tail call double @cnd(double %177)
%179 = fneg double %61
%180 = fmul double %7, 2.000000e+00
%181 = fmul double %7, -2.000000e+00
%182 = fdiv double %181, %53
%183 = tail call double @pow(double %62, double %182)
%184 = fmul double %180, %54
%185 = fdiv double %184, %8
%186 = fsub double %81, %185
%187 = fmul double %180, %55
%188 = fdiv double %187, %8
%189 = fsub double %68, %188
%190 = fadd double %189, %84
%191 = fdiv double %4, %5
%192 = tail call double @sqrt(double %191)
%193 = tail call double @cbnd(double %186, double %190, double %192)
%194 = fmul double %5, %7
%195 = tail call double @exp(double %194)
%196 = fdiv double %180, %53
%197 = tail call double @pow(double %9, double %196)
%198 = fadd double %68, %84
%199 = fneg double %75
%200 = fsub double %199, %88
%201 = fsub double 1.000000e+00, %191
%202 = tail call double @sqrt(double %201)
%203 = fneg double %202
%204 = tail call double @cbnd(double %198, double %200, double %203)
%205 = fsub double %68, %84
%206 = fsub double %88, %75
%207 = tail call double @sqrt(double %201)
%208 = fneg double %207
%209 = tail call double @cbnd(double %205, double %206, double %208)
%210 = tail call double @sqrt(double %191)
%211 = fneg double %210
%212 = tail call double @cbnd(double %82, double %175, double %211)
%213 = fneg double %7
%214 = fmul double %71, %213
%215 = tail call double @exp(double %214)
%216 = fmul double %61, %215
%217 = fdiv double %53, %180
%218 = fadd double %217, 1.000000e+00
%219 = fmul double %218, %216
%220 = fmul double %219, %9
%221 = fmul double %220, %1
%222 = fsub double %88, %77
%223 = tail call double @cnd(double %222)
%224 = insertelement <2 x double> poison, double %223, i64 0
%225 = insertelement <2 x double> %224, double %179, i64 1
%226 = insertelement <2 x double> poison, double %1, i64 1
%227 = insertelement <2 x double> %226, double %221, i64 0
%228 = fmul <2 x double> %225, %227
%229 = extractelement <2 x double> %228, i64 1
%230 = fmul double %229, %178
%231 = tail call double @llvm.fmuladd.f64(double %174, double %176, double %230)
%232 = fneg double %58
%233 = fmul double %53, %232
%234 = fdiv double %233, %180
%235 = fneg double %195
%236 = fmul double %197, %235
%237 = fmul double %236, %204
%238 = tail call double @llvm.fmuladd.f64(double %183, double %193, double %237)
%239 = insertelement <2 x double> poison, double %232, i64 0
%240 = insertelement <2 x double> %239, double %234, i64 1
%241 = insertelement <2 x double> poison, double %9, i64 0
%242 = shufflevector <2 x double> %241, <2 x double> poison, <2 x i32> zeroinitializer
%243 = fmul <2 x double> %240, %242
%244 = insertelement <2 x double> %226, double %52, i64 0
%245 = fmul <2 x double> %244, %243
%246 = tail call double @cnd(double %81)
%247 = insertelement <2 x double> poison, double %246, i64 0
%248 = insertelement <2 x double> %247, double %209, i64 1
%249 = fmul <2 x double> %248, %228
%250 = insertelement <2 x double> poison, double %212, i64 0
%251 = insertelement <2 x double> %250, double %238, i64 1
%252 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %245, <2 x double> %251, <2 x double> %249)
br label %253
253: ; preds = %172, %89
%254 = phi double [ %150, %89 ], [ %231, %172 ]
%255 = phi <2 x double> [ %171, %89 ], [ %252, %172 ]
%256 = extractelement <2 x double> %255, i64 1
%257 = fadd double %256, %254
%258 = extractelement <2 x double> %255, i64 0
%259 = fadd double %258, %257
ret double %259
}