#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 exp(double);
double fabs(double);
double log(double);
double pow(double, double);
double rq_pricing_blackscholes_gen(int /*<<< orphan*/, double, double, double,
                                   double, double, double);
double rq_pricing_cumul_norm_dist(double);
double rq_pricing_norm_dist(double);
double sqrt(double);
double Kp(double X, double T, double r, double b, double v) {
  double v_sqr = v * v;
  double n = 2 * b / v_sqr;
  double m = 2 * r / v_sqr;
  double q1u = (-(n - 1) - sqrt(pow((n - 1), 2) + 4.0 * m)) / 2.0;
  double Su = X / (1.0 - 1.0 / q1u);
  double h1 = (b * T - 2.0 * v * sqrt(T)) * X / (X - Su);
  double Si = Su + (X - Su) * exp(h1);
  double K = 2.0 * r / (v_sqr * (1.0 - exp(-r * T)));
  double d1 = (log(Si / X) + (b + v_sqr / 2.0) * T) / (v * sqrt(T));
  double Q1 = (-(n - 1) - sqrt(pow((n - 1), 2.0) + 4.0 * K)) / 2.0;
  double LHS = X - Si;
  double RHS =
      rq_pricing_blackscholes_gen(0, Si, X, T, r, b, v) -
      (1.0 - exp((b - r) * T) * rq_pricing_cumul_norm_dist(-d1)) * Si / Q1;
  double bi =
      -exp((b - r) * T) * rq_pricing_cumul_norm_dist(-d1) * (1.0 - 1.0 / Q1) -
      (1.0 + exp((b - r) * T) * rq_pricing_norm_dist(-d1) / (v * sqrt(T))) / Q1;
  double E = 0.000001;
  while (fabs(LHS - RHS) / X > E) {
    Si = (X - RHS + bi * Si) / (1.0 + bi);
    d1 = (log(Si / X) + (b + v_sqr / 2.0) * T) / (v * sqrt(T));
    LHS = X - Si;
    RHS = rq_pricing_blackscholes_gen(0, Si, X, T, r, b, v) -
          (1.0 - exp((b - r) * T) * rq_pricing_cumul_norm_dist(-d1)) * Si / Q1;
    bi =
        -exp((b - r) * T) * rq_pricing_cumul_norm_dist(-d1) * (1.0 - 1.0 / Q1) -
        (1.0 +
         exp((b - r) * T) * rq_pricing_cumul_norm_dist(-d1) / (v * sqrt(T))) /
            Q1;
  }
  return Si;
}


x86 assembly (clang, -O0):
<Kp>:
push   %rbp
mov    %rsp,%rbp
sub    $0x180,%rsp
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
movsd  %xmm4,-0x28(%rbp)
movsd  -0x28(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x30(%rbp)
movsd  0xe65(%rip),%xmm0
mulsd  -0x20(%rbp),%xmm0
divsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x38(%rbp)
movsd  0xe4e(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
divsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x40(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  0xe2a(%rip),%xmm1
subsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x130(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  0xdfa(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xdf6(%rip),%xmm1
call   1080 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
movsd  0xde9(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1090 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0x130(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  0xdbd(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  0xd9f(%rip),%xmm2
divsd  -0x48(%rbp),%xmm2
movsd  0xd92(%rip),%xmm1
subsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  0xd6b(%rip),%xmm0
mulsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x128(%rbp),%xmm1
ff
movsd  -0x120(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x118(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
mulsd  -0x8(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
subsd  -0x50(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
subsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
call   1050 <exp@plt>
movsd  -0x110(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x108(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  0xcad(%rip),%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x10(%rbp),%xmm0
call   1050 <exp@plt>
movsd  -0x100(%rbp),%xmm1
ff
movaps %xmm0,%xmm3
movsd  -0xf8(%rbp),%xmm0
ff
movsd  0xc4a(%rip),%xmm2
subsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x60(%rbp),%xmm0
divsd  -0x8(%rbp),%xmm0
call   1070 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0xc1d(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  -0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0xf0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  0xbb4(%rip),%xmm1
subsd  %xmm1,%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  0xb84(%rip),%xmm1
subsd  %xmm1,%xmm0
movsd  0xb80(%rip),%xmm1
call   1080 <pow@plt>
movaps %xmm0,%xmm1
movsd  -0x68(%rbp),%xmm0
movsd  0xb73(%rip),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1090 <sqrt@plt>
movaps %xmm0,%xmm1
movsd  -0xe0(%rbp),%xmm0
ff
subsd  %xmm1,%xmm0
movsd  0xb47(%rip),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x8(%rbp),%xmm0
subsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
movsd  -0x20(%rbp),%xmm4
movsd  -0x28(%rbp),%xmm5
xor    %edi,%edi
call   1060 <rq_pricing_blackscholes_gen@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <rq_pricing_cumul_norm_dist@plt>
movsd  -0xd8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xd0(%rbp),%xmm0
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
movsd  0xa87(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  -0x60(%rbp),%xmm1
divsd  -0x78(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
call   1050 <exp@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <rq_pricing_cumul_norm_dist@plt>
movaps %xmm0,%xmm1
movsd  -0xc8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  0x9fa(%rip),%xmm1
divsd  -0x78(%rbp),%xmm1
movsd  0x9ed(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <rq_pricing_norm_dist@plt>
movaps %xmm0,%xmm1
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0xb8(%rbp),%xmm1
ff
movsd  -0xb0(%rbp),%xmm3
ff
movsd  -0xa8(%rbp),%xmm2
ff
movaps %xmm0,%xmm4
movsd  -0xa0(%rbp),%xmm0
ff
mulsd  %xmm4,%xmm1
divsd  %xmm1,%xmm3
movsd  0x943(%rip),%xmm1
addsd  %xmm3,%xmm1
divsd  -0x78(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0x903(%rip),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
subsd  -0x88(%rbp),%xmm0
ff
movaps 0x907(%rip),%xmm1
pand   %xmm1,%xmm0
divsd  -0x8(%rbp),%xmm0
ucomisd -0x98(%rbp),%xmm0
ff
jbe    1a0b <Kp+0x89b>
movsd  -0x8(%rbp),%xmm1
subsd  -0x88(%rbp),%xmm1
ff
movsd  -0x90(%rbp),%xmm0
ff
movsd  -0x60(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  0x8ae(%rip),%xmm1
addsd  -0x90(%rbp),%xmm1
ff
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
divsd  -0x8(%rbp),%xmm0
call   1070 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x20(%rbp),%xmm0
movsd  -0x30(%rbp),%xmm2
movsd  0x881(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  -0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x180(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x178(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x8(%rbp),%xmm0
subsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  -0x8(%rbp),%xmm1
movsd  -0x10(%rbp),%xmm2
movsd  -0x18(%rbp),%xmm3
movsd  -0x20(%rbp),%xmm4
movsd  -0x28(%rbp),%xmm5
xor    %edi,%edi
call   1060 <rq_pricing_blackscholes_gen@plt>
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <rq_pricing_cumul_norm_dist@plt>
movsd  -0x170(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x168(%rbp),%xmm0
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm1
movsd  0x776(%rip),%xmm2
addsd  %xmm2,%xmm1
mulsd  -0x60(%rbp),%xmm1
divsd  -0x78(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
call   1050 <exp@plt>
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <rq_pricing_cumul_norm_dist@plt>
movaps %xmm0,%xmm1
movsd  -0x160(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  0x6e9(%rip),%xmm1
divsd  -0x78(%rbp),%xmm1
movsd  0x6dc(%rip),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
subsd  -0x18(%rbp),%xmm0
mulsd  -0x10(%rbp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1040 <rq_pricing_cumul_norm_dist@plt>
movaps %xmm0,%xmm1
movsd  -0x158(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x150(%rbp),%xmm1
ff
movsd  -0x148(%rbp),%xmm3
ff
movsd  -0x140(%rbp),%xmm2
ff
movaps %xmm0,%xmm4
movsd  -0x138(%rbp),%xmm0
ff
mulsd  %xmm4,%xmm1
divsd  %xmm1,%xmm3
movsd  0x632(%rip),%xmm1
addsd  %xmm3,%xmm1
divsd  -0x78(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
jmp    1705 <Kp+0x595>
movsd  -0x60(%rbp),%xmm0
add    $0x180,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<Kp>:
sub    $0xd8,%rsp
movapd %xmm0,%xmm5
movapd %xmm4,%xmm6
mulsd  %xmm4,%xmm6
movsd  %xmm3,0x48(%rsp)
addsd  %xmm3,%xmm3
divsd  %xmm6,%xmm3
movapd %xmm2,0x80(%rsp)
movapd %xmm2,%xmm0
addsd  %xmm2,%xmm0
movapd %xmm0,0x50(%rsp)
movsd  %xmm6,0x40(%rsp)
divsd  %xmm6,%xmm0
addsd  0xe56(%rip),%xmm3
movapd 0xe8e(%rip),%xmm2
xorpd  %xmm3,%xmm2
movapd %xmm2,0x70(%rsp)
mulsd  %xmm3,%xmm3
mulsd  0xe40(%rip),%xmm0
movapd %xmm3,0x60(%rsp)
addsd  %xmm3,%xmm0
xorpd  %xmm6,%xmm6
ucomisd %xmm6,%xmm0
movsd  %xmm4,0x28(%rsp)
movsd  %xmm1,(%rsp)
movsd  %xmm5,0x30(%rsp)
jb     11f3 <Kp+0x93>
sqrtsd %xmm0,%xmm0
jmp    120d <Kp+0xad>
call   1080 <sqrt@plt>
xorpd  %xmm6,%xmm6
movsd  0x30(%rsp),%xmm5
movsd  (%rsp),%xmm1
movsd  0x28(%rsp),%xmm4
movapd 0x70(%rsp),%xmm2
subsd  %xmm0,%xmm2
mulsd  0xdf1(%rip),%xmm2
movsd  0xdf1(%rip),%xmm3
movapd %xmm3,%xmm0
divsd  %xmm2,%xmm0
addsd  %xmm3,%xmm0
movapd %xmm5,%xmm2
divsd  %xmm0,%xmm2
movsd  %xmm2,0x10(%rsp)
xorps  %xmm0,%xmm0
sqrtsd %xmm1,%xmm0
ucomisd %xmm6,%xmm1
movsd  %xmm0,0x20(%rsp)
jae    126e <Kp+0x10e>
movapd %xmm1,%xmm0
call   1080 <sqrt@plt>
movsd  0x30(%rsp),%xmm5
movsd  (%rsp),%xmm1
movsd  0x28(%rsp),%xmm4
movsd  0xdaa(%rip),%xmm2
mulsd  %xmm4,%xmm2
mulsd  %xmm0,%xmm2
movsd  0x48(%rsp),%xmm0
mulsd  %xmm1,%xmm0
addsd  %xmm2,%xmm0
mulsd  %xmm5,%xmm0
subsd  0x10(%rsp),%xmm5
movsd  %xmm5,0x8(%rsp)
divsd  %xmm5,%xmm0
call   1050 <exp@plt>
mulsd  0x8(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movapd 0xd81(%rip),%xmm0
xorpd  0x80(%rsp),%xmm0
mulsd  (%rsp),%xmm0
call   1050 <exp@plt>
movsd  0xd3e(%rip),%xmm1
subsd  %xmm0,%xmm1
mulsd  0x40(%rsp),%xmm1
movapd 0x50(%rsp),%xmm0
divsd  %xmm1,%xmm0
movapd %xmm0,0x50(%rsp)
movsd  0x8(%rsp),%xmm0
divsd  0x30(%rsp),%xmm0
call   1070 <log@plt>
movsd  0x40(%rsp),%xmm2
mulsd  0xd15(%rip),%xmm2
addsd  0x48(%rsp),%xmm2
movsd  (%rsp),%xmm1
mulsd  %xmm1,%xmm2
movsd  %xmm2,0x40(%rsp)
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm1
movsd  0x20(%rsp),%xmm1
jae    1356 <Kp+0x1f6>
movapd %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
call   1080 <sqrt@plt>
xorpd  %xmm2,%xmm2
movapd %xmm0,%xmm1
movapd 0x10(%rsp),%xmm0
addsd  0x40(%rsp),%xmm0
movapd %xmm0,0x10(%rsp)
movapd 0x50(%rsp),%xmm0
mulsd  0xc98(%rip),%xmm0
movsd  0x28(%rsp),%xmm5
mulsd  %xmm5,%xmm1
movsd  %xmm1,0x20(%rsp)
addsd  0x60(%rsp),%xmm0
ucomisd %xmm2,%xmm0
jb     1392 <Kp+0x232>
sqrtsd %xmm0,%xmm0
jmp    139d <Kp+0x23d>
call   1080 <sqrt@plt>
movsd  0x28(%rsp),%xmm5
movapd 0x70(%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  0xc79(%rip),%xmm1
movapd %xmm1,0x70(%rsp)
xor    %edi,%edi
movsd  0x8(%rsp),%xmm0
movsd  0x30(%rsp),%xmm1
movsd  (%rsp),%xmm2
movapd 0x80(%rsp),%xmm3
movsd  0x48(%rsp),%xmm4
call   1060 <rq_pricing_blackscholes_gen@plt>
movsd  %xmm0,0x60(%rsp)
movsd  0x48(%rsp),%xmm0
subsd  0x80(%rsp),%xmm0
mulsd  (%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
call   1050 <exp@plt>
movsd  %xmm0,0x38(%rsp)
movapd 0x10(%rsp),%xmm0
xorpd  0xc2b(%rip),%xmm0
divsd  0x20(%rsp),%xmm0
movapd %xmm0,0x10(%rsp)
call   1040 <rq_pricing_cumul_norm_dist@plt>
mulsd  0x38(%rsp),%xmm0
movsd  0xbe4(%rip),%xmm1
subsd  %xmm0,%xmm1
mulsd  0x8(%rsp),%xmm1
divsd  0x70(%rsp),%xmm1
movsd  0x60(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  0x50(%rsp),%xmm0
call   1050 <exp@plt>
movaps %xmm0,0x90(%rsp)
movaps 0x10(%rsp),%xmm0
call   1040 <rq_pricing_cumul_norm_dist@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x50(%rsp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,0x38(%rsp)
movapd 0x10(%rsp),%xmm0
call   1030 <rq_pricing_norm_dist@plt>
movsd  (%rsp),%xmm9
movapd %xmm0,%xmm10
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm9
jb     14b3 <Kp+0x353>
xorps  %xmm0,%xmm0
sqrtsd %xmm9,%xmm0
jmp    14d1 <Kp+0x371>
movapd %xmm9,%xmm0
movsd  %xmm10,0x10(%rsp)
call   1080 <sqrt@plt>
movsd  0x10(%rsp),%xmm10
movsd  (%rsp),%xmm9
movsd  0x30(%rsp),%xmm4
movapd %xmm4,%xmm1
movsd  0x8(%rsp),%xmm5
subsd  %xmm5,%xmm1
movsd  0x60(%rsp),%xmm7
subsd  %xmm7,%xmm1
andpd  0xb59(%rip),%xmm1
divsd  %xmm4,%xmm1
ucomisd 0xb2d(%rip),%xmm1
movsd  0x28(%rsp),%xmm8
movsd  0xb06(%rip),%xmm6
jbe    17ba <Kp+0x65a>
movapd %xmm6,%xmm1
movapd 0x70(%rsp),%xmm5
divsd  %xmm5,%xmm1
movapd %xmm6,%xmm2
subsd  %xmm1,%xmm2
movapd 0x90(%rsp),%xmm3
xorpd  0xb01(%rip),%xmm3
movsd  0x20(%rsp),%xmm1
mulsd  %xmm3,%xmm1
movsd  0x38(%rsp),%xmm3
mulsd  %xmm10,%xmm3
mulsd  %xmm8,%xmm0
divsd  %xmm0,%xmm3
addsd  0xab3(%rip),%xmm3
divsd  %xmm5,%xmm3
movsd  0x8(%rsp),%xmm5
movsd  %xmm2,0xa8(%rsp)
mulsd  %xmm2,%xmm1
subsd  %xmm3,%xmm1
xorps  %xmm0,%xmm0
sqrtsd %xmm9,%xmm0
movsd  %xmm0,0x38(%rsp)
jmp    165b <Kp+0x4fb>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsd  0x90(%rsp),%xmm2
mulsd  0xb0(%rsp),%xmm2
movsd  0xa5e(%rip),%xmm6
movapd %xmm6,%xmm1
subsd  %xmm2,%xmm1
movsd  0x8(%rsp),%xmm5
mulsd  %xmm5,%xmm1
movapd 0x70(%rsp),%xmm2
divsd  %xmm2,%xmm1
movsd  0x60(%rsp),%xmm7
subsd  %xmm1,%xmm7
movapd 0xc0(%rsp),%xmm1
xorpd  0xa4f(%rip),%xmm1
movsd  0x20(%rsp),%xmm3
mulsd  %xmm1,%xmm3
movsd  0xb8(%rsp),%xmm1
mulsd  %xmm4,%xmm1
mulsd  0x28(%rsp),%xmm0
divsd  %xmm0,%xmm1
addsd  %xmm6,%xmm1
divsd  %xmm2,%xmm1
mulsd  0xa8(%rsp),%xmm3
subsd  %xmm1,%xmm3
movsd  0x30(%rsp),%xmm1
movapd %xmm1,%xmm0
subsd  %xmm5,%xmm0
subsd  %xmm7,%xmm0
andpd  0xa0f(%rip),%xmm0
divsd  %xmm1,%xmm0
ucomisd 0x9e3(%rip),%xmm0
movapd %xmm1,%xmm4
movapd %xmm3,%xmm1
jbe    17ba <Kp+0x65a>
movapd %xmm4,%xmm0
subsd  %xmm7,%xmm0
mulsd  %xmm1,%xmm5
addsd  %xmm0,%xmm5
addsd  %xmm6,%xmm1
divsd  %xmm1,%xmm5
movsd  %xmm5,0x8(%rsp)
divsd  %xmm4,%xmm5
movapd %xmm5,%xmm0
call   1070 <log@plt>
movapd %xmm0,%xmm1
movsd  (%rsp),%xmm2
xorpd  %xmm0,%xmm0
ucomisd %xmm0,%xmm2
movsd  0x38(%rsp),%xmm0
jae    16b9 <Kp+0x559>
movapd %xmm2,%xmm0
movapd %xmm1,0x10(%rsp)
call   1080 <sqrt@plt>
movapd 0x10(%rsp),%xmm1
movsd  (%rsp),%xmm2
addsd  0x40(%rsp),%xmm1
movapd %xmm1,0x10(%rsp)
movsd  0x28(%rsp),%xmm5
mulsd  %xmm5,%xmm0
movsd  %xmm0,0x20(%rsp)
xor    %edi,%edi
movsd  0x8(%rsp),%xmm0
movsd  0x30(%rsp),%xmm1
movaps 0x80(%rsp),%xmm3
movsd  0x48(%rsp),%xmm4
call   1060 <rq_pricing_blackscholes_gen@plt>
movsd  %xmm0,0x60(%rsp)
movsd  0x50(%rsp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,0x90(%rsp)
movapd 0x928(%rip),%xmm0
movapd 0x10(%rsp),%xmm1
xorpd  %xmm0,%xmm1
divsd  0x20(%rsp),%xmm1
movapd %xmm1,0x10(%rsp)
movapd %xmm1,%xmm0
call   1040 <rq_pricing_cumul_norm_dist@plt>
movsd  %xmm0,0xb0(%rsp)
movsd  0x50(%rsp),%xmm0
call   1050 <exp@plt>
movaps %xmm0,0xc0(%rsp)
movaps 0x10(%rsp),%xmm0
call   1040 <rq_pricing_cumul_norm_dist@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x50(%rsp),%xmm0
call   1050 <exp@plt>
movsd  %xmm0,0xb8(%rsp)
movapd 0x10(%rsp),%xmm0
call   1040 <rq_pricing_cumul_norm_dist@plt>
movapd %xmm0,%xmm4
movsd  (%rsp),%xmm0
ucomisd 0x8a5(%rip),%xmm0
movsd  0x38(%rsp),%xmm0
jae    15a0 <Kp+0x440>
movsd  (%rsp),%xmm0
movsd  %xmm4,0x10(%rsp)
call   1080 <sqrt@plt>
movsd  0x10(%rsp),%xmm4
jmp    15a0 <Kp+0x440>
movapd %xmm5,%xmm0
add    $0xd8,%rsp
ret

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

LLVM IR (-O2):
define double @Kp(double %0, double %1, double %2, double %3, double %4) {
%6 = fmul double %4, %4
%7 = fmul double %3, 2.000000e+00
%8 = fdiv double %7, %6
%9 = fmul double %2, 2.000000e+00
%10 = fdiv double %9, %6
%11 = fadd double %8, -1.000000e+00
%12 = fneg double %11
%13 = fmul double %11, %11
%14 = tail call double @llvm.fmuladd.f64(double %10, double 4.000000e+00, double %13)
%15 = tail call double @sqrt(double %14)
%16 = fsub double %12, %15
%17 = fmul double %16, 5.000000e-01
%18 = fdiv double 1.000000e+00, %17
%19 = fsub double 1.000000e+00, %18
%20 = fdiv double %0, %19
%21 = tail call double @sqrt(double %1)
%22 = fmul double %4, -2.000000e+00
%23 = fmul double %22, %21
%24 = tail call double @llvm.fmuladd.f64(double %3, double %1, double %23)
%25 = fmul double %24, %0
%26 = fsub double %0, %20
%27 = fdiv double %25, %26
%28 = tail call double @exp(double %27)
%29 = tail call double @llvm.fmuladd.f64(double %26, double %28, double %20)
%30 = fneg double %2
%31 = fmul double %30, %1
%32 = tail call double @exp(double %31)
%33 = fsub double 1.000000e+00, %32
%34 = fmul double %6, %33
%35 = fdiv double %9, %34
%36 = fdiv double %29, %0
%37 = tail call double @log(double %36)
%38 = fmul double %6, 5.000000e-01
%39 = fadd double %38, %3
%40 = tail call double @llvm.fmuladd.f64(double %39, double %1, double %37)
%41 = tail call double @sqrt(double %1)
%42 = fmul double %41, %4
%43 = tail call double @llvm.fmuladd.f64(double %35, double 4.000000e+00, double %13)
%44 = tail call double @sqrt(double %43)
%45 = fsub double %12, %44
%46 = fmul double %45, 5.000000e-01
%47 = tail call double @rq_pricing_blackscholes_gen(i32 0, double %29, double %0, double %1, double %2, double %3, double %4)
%48 = fsub double %3, %2
%49 = fmul double %48, %1
%50 = tail call double @exp(double %49)
%51 = fneg double %40
%52 = fdiv double %51, %42
%53 = tail call double @rq_pricing_cumul_norm_dist(double %52)
%54 = fneg double %50
%55 = tail call double @llvm.fmuladd.f64(double %54, double %53, double 1.000000e+00)
%56 = fmul double %29, %55
%57 = fdiv double %56, %46
%58 = fsub double %47, %57
%59 = tail call double @exp(double %49)
%60 = tail call double @rq_pricing_cumul_norm_dist(double %52)
%61 = fdiv double 1.000000e+00, %46
%62 = fsub double 1.000000e+00, %61
%63 = tail call double @exp(double %49)
%64 = tail call double @rq_pricing_norm_dist(double %52)
%65 = tail call double @sqrt(double %1)
%66 = fsub double %0, %29
%67 = fsub double %66, %58
%68 = tail call double @llvm.fabs.f64(double %67)
%69 = fdiv double %68, %0
%70 = fcmp ogt double %69, 0x3EB0C6F7A0B5ED8D
br i1 %70, label %71, label %123
71: ; preds = %5
%72 = fneg double %59
%73 = fmul double %60, %72
%74 = fmul double %63, %64
%75 = fmul double %65, %4
%76 = fdiv double %74, %75
%77 = fadd double %76, 1.000000e+00
%78 = fneg double %77
%79 = fdiv double %78, %46
%80 = tail call double @llvm.fmuladd.f64(double %73, double %62, double %79)
br label %81
81: ; preds = %71, %81
%82 = phi double [ %88, %81 ], [ %29, %71 ]
%83 = phi double [ %117, %81 ], [ %80, %71 ]
%84 = phi double [ %103, %81 ], [ %58, %71 ]
%85 = fsub double %0, %84
%86 = tail call double @llvm.fmuladd.f64(double %83, double %82, double %85)
%87 = fadd double %83, 1.000000e+00
%88 = fdiv double %86, %87
%89 = fdiv double %88, %0
%90 = tail call double @log(double %89)
%91 = tail call double @llvm.fmuladd.f64(double %39, double %1, double %90)
%92 = tail call double @sqrt(double %1)
%93 = fmul double %92, %4
%94 = tail call double @rq_pricing_blackscholes_gen(i32 0, double %88, double %0, double %1, double %2, double %3, double %4)
%95 = tail call double @exp(double %49)
%96 = fneg double %91
%97 = fdiv double %96, %93
%98 = tail call double @rq_pricing_cumul_norm_dist(double %97)
%99 = fneg double %95
%100 = tail call double @llvm.fmuladd.f64(double %99, double %98, double 1.000000e+00)
%101 = fmul double %88, %100
%102 = fdiv double %101, %46
%103 = fsub double %94, %102
%104 = tail call double @exp(double %49)
%105 = fneg double %104
%106 = tail call double @rq_pricing_cumul_norm_dist(double %97)
%107 = fmul double %106, %105
%108 = tail call double @exp(double %49)
%109 = tail call double @rq_pricing_cumul_norm_dist(double %97)
%110 = fmul double %108, %109
%111 = tail call double @sqrt(double %1)
%112 = fmul double %111, %4
%113 = fdiv double %110, %112
%114 = fadd double %113, 1.000000e+00
%115 = fneg double %114
%116 = fdiv double %115, %46
%117 = tail call double @llvm.fmuladd.f64(double %107, double %62, double %116)
%118 = fsub double %0, %88
%119 = fsub double %118, %103
%120 = tail call double @llvm.fabs.f64(double %119)
%121 = fdiv double %120, %0
%122 = fcmp ogt double %121, 0x3EB0C6F7A0B5ED8D
br i1 %122, label %81, label %123
123: ; preds = %81, %5
%124 = phi double [ %29, %5 ], [ %88, %81 ]
ret double %124
}