#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 rq_pricing_blackscholes_delta(int, double, double, double, double,
                                     double, double, double);
double rq_pricing_blackscholes_gen(int, double, double, double, double, double,
                                   double);
double rq_pricing_cumul_bivar_norm_dist(double, double, double);
double sqrt(double);
double rq_pricing_chooser_complex(double S, double Xc, double Xp, double r,
                                  double rf, double v, double T, double Tc,
                                  double Tp) {
  double b = r - rf;
  double v_sqr = v * v;
  double d1;
  double d2;
  double y1;
  double y2;
  double rho1;
  double rho2;
  double Sv = S;
  double tc_minus_t = Tc - T;
  double tp_minus_t = Tp - T;
  double ci = rq_pricing_blackscholes_gen(1, Sv, Xc, tc_minus_t, r, b, v);
  double Pi = rq_pricing_blackscholes_gen(0, Sv, Xp, tp_minus_t, r, b, v);
  double dc =
      rq_pricing_blackscholes_delta(1, Sv, Xc, r, b, v, tc_minus_t, tc_minus_t);
  double dp =
      rq_pricing_blackscholes_delta(0, Sv, Xp, r, b, v, tp_minus_t, tp_minus_t);
  double yi = ci - Pi;
  double di = dc - dp;
  double epsilon = 0.001;
  while (fabs(yi) > epsilon) {
    Sv = Sv - (yi) / di;
    ci = rq_pricing_blackscholes_gen(1, Sv, Xc, tc_minus_t, r, b, v);
    Pi = rq_pricing_blackscholes_gen(0, Sv, Xp, tp_minus_t, r, b, v);
    dc = rq_pricing_blackscholes_delta(1, Sv, Xc, r, b, v, tc_minus_t,
                                       tc_minus_t);
    dp = rq_pricing_blackscholes_delta(0, Sv, Xp, r, b, v, tp_minus_t,
                                       tp_minus_t);
    yi = ci - Pi;
    di = dc - dp;
  }
  d1 = (log(S / Sv) + (b + v_sqr / 2) * T) / (v * sqrt(T));
  d2 = d1 - v * sqrt(T);
  y1 = (log(S / Xc) + (b + v_sqr / 2) * Tc) / (v * sqrt(Tc));
  y2 = (log(S / Xp) + (b + v_sqr / 2) * Tp) / (v * sqrt(Tp));
  rho1 = sqrt(T / Tc);
  rho2 = sqrt(T / Tp);
  return S * exp((b - r) * Tc) *
             rq_pricing_cumul_bivar_norm_dist(d1, y1, rho1) -
         Xc * exp(-r * Tc) *
             rq_pricing_cumul_bivar_norm_dist(d2, y1 - v * sqrt(Tc), rho1) -
         S * exp((b - r) * Tp) *
             rq_pricing_cumul_bivar_norm_dist(-d1, -y2, rho2) +
         Xp * exp(-r * Tp) *
             rq_pricing_cumul_bivar_norm_dist(-d2, -y2 + v * sqrt(Tp), rho2);
}


x86 assembly (clang, -O0):
<rq_pricing_chooser_complex>:
push   %rbp
mov    %rsp,%rbp
sub    $0x1a0,%rsp
movsd  0x10(%rbp),%xmm8
movsd  %xmm0,-0x8(%rbp)
movsd  %xmm1,-0x10(%rbp)
movsd  %xmm2,-0x18(%rbp)
movsd  %xmm3,-0x20(%rbp)
movsd  %xmm4,-0x28(%rbp)
movsd  %xmm5,-0x30(%rbp)
movsd  %xmm6,-0x38(%rbp)
movsd  %xmm7,-0x40(%rbp)
movsd  -0x20(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x30(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  0x10(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x20(%rbp),%xmm3
movsd  -0x48(%rbp),%xmm4
movsd  -0x30(%rbp),%xmm5
mov    $0x1,%edi
call   1050 <rq_pricing_blackscholes_gen@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x18(%rbp),%xmm1
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x20(%rbp),%xmm3
movsd  -0x48(%rbp),%xmm4
movsd  -0x30(%rbp),%xmm5
xor    %edi,%edi
call   1050 <rq_pricing_blackscholes_gen@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm3
movsd  -0x30(%rbp),%xmm4
movsd  -0x90(%rbp),%xmm5
ff
movsd  -0x90(%rbp),%xmm6
ff
mov    $0x1,%edi
call   1070 <rq_pricing_blackscholes_delta@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm3
movsd  -0x30(%rbp),%xmm4
movsd  -0x98(%rbp),%xmm5
ff
movsd  -0x98(%rbp),%xmm6
ff
xor    %edi,%edi
call   1070 <rq_pricing_blackscholes_delta@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
subsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  0xcfe(%rip),%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0xc0(%rbp),%xmm0
ff
movaps 0xcf7(%rip),%xmm1
pand   %xmm1,%xmm0
ucomisd -0xd0(%rbp),%xmm0
ff
jbe    1466 <rq_pricing_chooser_complex+0x306>
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm1
ff
divsd  -0xc8(%rbp),%xmm1
ff
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0x90(%rbp),%xmm2
ff
movsd  -0x20(%rbp),%xmm3
movsd  -0x48(%rbp),%xmm4
movsd  -0x30(%rbp),%xmm5
mov    $0x1,%edi
call   1050 <rq_pricing_blackscholes_gen@plt>
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x18(%rbp),%xmm1
movsd  -0x98(%rbp),%xmm2
ff
movsd  -0x20(%rbp),%xmm3
movsd  -0x48(%rbp),%xmm4
movsd  -0x30(%rbp),%xmm5
xor    %edi,%edi
call   1050 <rq_pricing_blackscholes_gen@plt>
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x10(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm3
movsd  -0x30(%rbp),%xmm4
movsd  -0x90(%rbp),%xmm5
ff
movsd  -0x90(%rbp),%xmm6
ff
mov    $0x1,%edi
call   1070 <rq_pricing_blackscholes_delta@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  -0x48(%rbp),%xmm3
movsd  -0x30(%rbp),%xmm4
movsd  -0x98(%rbp),%xmm5
ff
movsd  -0x98(%rbp),%xmm6
ff
xor    %edi,%edi
call   1070 <rq_pricing_blackscholes_delta@plt>
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
subsd  -0xa8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0xb0(%rbp),%xmm0
ff
subsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0xc8(%rbp)
ff
jmp    130a <rq_pricing_chooser_complex+0x1aa>
movsd  -0x8(%rbp),%xmm0
divsd  -0x88(%rbp),%xmm0
ff
call   1060 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  0xb7b(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  -0x38(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x198(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x190(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x188(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x180(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x8(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
call   1060 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  0xaa8(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x178(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x170(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x8(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
call   1060 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x48(%rbp),%xmm0
movsd  -0x50(%rbp),%xmm2
movsd  0xa30(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  0x10(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  0x10(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x168(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x160(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x38(%rbp),%xmm0
divsd  -0x40(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  %xmm0,-0x78(%rbp)
movsd  -0x38(%rbp),%xmm0
divsd  0x10(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  %xmm0,-0x80(%rbp)
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
mulsd  -0x40(%rbp),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x158(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  -0x68(%rbp),%xmm1
movsd  -0x78(%rbp),%xmm2
call   1030 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x40(%rbp),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x150(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x148(%rbp),%xmm1
ff
movsd  -0x140(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x138(%rbp),%xmm0
ff
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  -0x78(%rbp),%xmm2
call   1030 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  -0x130(%rbp),%xmm1
ff
movsd  -0x128(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x120(%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,-0x110(%rbp)
ff
movsd  -0x8(%rbp),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
mulsd  0x10(%rbp),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x118(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x70(%rbp),%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
movsd  -0x80(%rbp),%xmm2
call   1030 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  -0x110(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x108(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  0x10(%rbp),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x100(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  0x10(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0xf8(%rbp),%xmm1
ff
movsd  -0xf0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0xe8(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
addsd  %xmm2,%xmm1
movsd  -0x80(%rbp),%xmm2
call   1030 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  -0xe0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0xd8(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
add    $0x1a0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<rq_pricing_chooser_complex>:
sub    $0xe8,%rsp
movaps %xmm5,0x60(%rsp)
movsd  %xmm2,0x48(%rsp)
movaps %xmm1,%xmm8
movsd  %xmm1,0xa8(%rsp)
movsd  %xmm0,0x8(%rsp)
movsd  0xf0(%rsp),%xmm1
movapd %xmm3,%xmm2
movapd %xmm3,0x90(%rsp)
subsd  %xmm4,%xmm2
movapd %xmm2,%xmm4
movapd %xmm2,0x50(%rsp)
movsd  %xmm7,0x40(%rsp)
movapd %xmm7,%xmm2
subsd  %xmm6,%xmm2
movsd  %xmm2,0xb0(%rsp)
movsd  %xmm6,(%rsp)
subsd  %xmm6,%xmm1
movsd  %xmm1,0x20(%rsp)
mov    $0x1,%edi
movaps %xmm8,%xmm1
call   1050 <rq_pricing_blackscholes_gen@plt>
movaps %xmm0,0x30(%rsp)
xor    %edi,%edi
movsd  0x8(%rsp),%xmm0
movsd  0x48(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
movaps 0x90(%rsp),%xmm3
movaps 0x50(%rsp),%xmm4
movaps 0x60(%rsp),%xmm5
call   1050 <rq_pricing_blackscholes_gen@plt>
movsd  %xmm0,0x10(%rsp)
mov    $0x1,%edi
movsd  0x8(%rsp),%xmm0
movsd  0xa8(%rsp),%xmm1
movaps 0x90(%rsp),%xmm2
movaps 0x50(%rsp),%xmm3
movaps 0x60(%rsp),%xmm4
movsd  0xb0(%rsp),%xmm5
movaps %xmm5,%xmm6
call   1070 <rq_pricing_blackscholes_delta@plt>
movsd  %xmm0,0x70(%rsp)
xor    %edi,%edi
movsd  0x8(%rsp),%xmm0
movsd  0x48(%rsp),%xmm1
movaps 0x90(%rsp),%xmm2
movaps 0x50(%rsp),%xmm3
movapd 0x60(%rsp),%xmm4
movsd  0x20(%rsp),%xmm5
movaps %xmm5,%xmm6
call   1070 <rq_pricing_blackscholes_delta@plt>
movapd 0x30(%rsp),%xmm2
subsd  0x10(%rsp),%xmm2
movapd 0xd6d(%rip),%xmm1
andpd  %xmm2,%xmm1
ucomisd 0xd81(%rip),%xmm1
movsd  0x70(%rsp),%xmm1
movsd  0x8(%rsp),%xmm3
movsd  %xmm3,0x10(%rsp)
jbe    13eb <rq_pricing_chooser_complex+0x28b>
subsd  %xmm0,%xmm1
movsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
nopw   0x0(%rax,%rax,1)
divsd  %xmm1,%xmm2
movsd  0x10(%rsp),%xmm0
subsd  %xmm2,%xmm0
movsd  %xmm0,0x10(%rsp)
mov    $0x1,%edi
movsd  0xa8(%rsp),%xmm1
movsd  0xb0(%rsp),%xmm2
movaps 0x90(%rsp),%xmm3
movaps 0x50(%rsp),%xmm4
movaps 0x60(%rsp),%xmm5
call   1050 <rq_pricing_blackscholes_gen@plt>
movapd %xmm0,0x30(%rsp)
xor    %edi,%edi
movsd  0x10(%rsp),%xmm0
movsd  0x48(%rsp),%xmm1
movsd  0x20(%rsp),%xmm2
movaps 0x90(%rsp),%xmm3
movaps 0x50(%rsp),%xmm4
movaps 0x60(%rsp),%xmm5
call   1050 <rq_pricing_blackscholes_gen@plt>
movsd  %xmm0,0x88(%rsp)
mov    $0x1,%edi
movsd  0x10(%rsp),%xmm0
movsd  0xa8(%rsp),%xmm1
movaps 0x90(%rsp),%xmm2
movaps 0x50(%rsp),%xmm3
movaps 0x60(%rsp),%xmm4
movsd  0xb0(%rsp),%xmm5
movaps %xmm5,%xmm6
call   1070 <rq_pricing_blackscholes_delta@plt>
movsd  %xmm0,0x70(%rsp)
xor    %edi,%edi
movsd  0x10(%rsp),%xmm0
movsd  0x48(%rsp),%xmm1
movaps 0x90(%rsp),%xmm2
movaps 0x50(%rsp),%xmm3
movapd 0x60(%rsp),%xmm4
movsd  0x20(%rsp),%xmm5
movaps %xmm5,%xmm6
call   1070 <rq_pricing_blackscholes_delta@plt>
movsd  0x70(%rsp),%xmm1
movapd 0x30(%rsp),%xmm2
subsd  0x88(%rsp),%xmm2
subsd  %xmm0,%xmm1
movapd %xmm2,%xmm0
andpd  0xc23(%rip),%xmm0
ucomisd 0xc3b(%rip),%xmm0
ja     12d0 <rq_pricing_chooser_complex+0x170>
movapd 0x60(%rsp),%xmm0
mulsd  %xmm0,%xmm0
movapd %xmm0,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
divsd  0x10(%rsp),%xmm0
call   1060 <log@plt>
movsd  %xmm0,0xa0(%rsp)
movsd  (%rsp),%xmm1
xorps  %xmm3,%xmm3
sqrtsd %xmm1,%xmm3
xorpd  %xmm4,%xmm4
ucomisd %xmm4,%xmm1
movapd %xmm3,%xmm0
jae    144d <rq_pricing_chooser_complex+0x2ed>
movapd %xmm1,%xmm0
movsd  %xmm3,0x30(%rsp)
call   1080 <sqrt@plt>
xorpd  %xmm4,%xmm4
movsd  0x30(%rsp),%xmm3
movsd  (%rsp),%xmm1
movsd  %xmm0,0x70(%rsp)
movapd 0x20(%rsp),%xmm2
mulsd  0xbc7(%rip),%xmm2
ucomisd %xmm4,%xmm1
jae    1481 <rq_pricing_chooser_complex+0x321>
movsd  (%rsp),%xmm0
movapd %xmm2,0x20(%rsp)
call   1080 <sqrt@plt>
movapd 0x20(%rsp),%xmm2
movapd %xmm0,%xmm3
movsd  %xmm3,0x30(%rsp)
addsd  0x50(%rsp),%xmm2
movapd %xmm2,0x20(%rsp)
movsd  0x8(%rsp),%xmm0
divsd  0xa8(%rsp),%xmm0
call   1060 <log@plt>
movsd  %xmm0,0xc0(%rsp)
xorpd  %xmm1,%xmm1
movsd  0x40(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jb     14d2 <rq_pricing_chooser_complex+0x372>
xorps  %xmm1,%xmm1
sqrtsd %xmm0,%xmm1
movsd  %xmm1,0xd0(%rsp)
jmp    14ec <rq_pricing_chooser_complex+0x38c>
movsd  0x40(%rsp),%xmm0
call   1080 <sqrt@plt>
movsd  %xmm0,0xd0(%rsp)
movsd  0x40(%rsp),%xmm0
movsd  0x48(%rsp),%xmm1
movapd 0x20(%rsp),%xmm2
movapd %xmm2,%xmm3
mulsd  (%rsp),%xmm3
movapd %xmm3,0x10(%rsp)
mulsd  %xmm0,%xmm2
movapd %xmm2,0xb0(%rsp)
movsd  0x8(%rsp),%xmm0
divsd  %xmm1,%xmm0
call   1060 <log@plt>
movsd  %xmm0,0xc8(%rsp)
movsd  0xf0(%rsp),%xmm0
ucomisd 0xaf3(%rip),%xmm0
jb     1545 <rq_pricing_chooser_complex+0x3e5>
sqrtsd %xmm0,%xmm0
jmp    154a <rq_pricing_chooser_complex+0x3ea>
call   1080 <sqrt@plt>
movsd  %xmm0,0x88(%rsp)
movapd 0x60(%rsp),%xmm1
movsd  0x70(%rsp),%xmm5
movapd 0x10(%rsp),%xmm0
addsd  0xa0(%rsp),%xmm0
movapd %xmm0,0x10(%rsp)
mulsd  %xmm1,%xmm5
movapd 0xb0(%rsp),%xmm0
addsd  0xc0(%rsp),%xmm0
movapd %xmm0,0xb0(%rsp)
movsd  0xd0(%rsp),%xmm6
mulsd  %xmm1,%xmm6
movsd  (%rsp),%xmm2
movapd %xmm2,%xmm0
divsd  0x40(%rsp),%xmm0
xorpd  %xmm7,%xmm7
ucomisd %xmm7,%xmm0
jb     15bf <rq_pricing_chooser_complex+0x45f>
sqrtsd %xmm0,%xmm0
jmp    15f1 <rq_pricing_chooser_complex+0x491>
movsd  %xmm5,0x70(%rsp)
movsd  %xmm6,0xd0(%rsp)
call   1080 <sqrt@plt>
xorpd  %xmm7,%xmm7
movsd  0xd0(%rsp),%xmm6
movsd  0x70(%rsp),%xmm5
movsd  (%rsp),%xmm2
movapd 0x60(%rsp),%xmm1
movsd  %xmm0,0xa0(%rsp)
movapd 0x20(%rsp),%xmm3
movsd  0x30(%rsp),%xmm4
movapd 0x10(%rsp),%xmm0
divsd  %xmm5,%xmm0
movapd %xmm0,0x10(%rsp)
movapd 0x9f2(%rip),%xmm0
xorpd  %xmm1,%xmm0
movapd %xmm0,0xd0(%rsp)
mulsd  %xmm1,%xmm4
movsd  0xf0(%rsp),%xmm0
mulsd  %xmm0,%xmm3
movapd 0xb0(%rsp),%xmm5
divsd  %xmm6,%xmm5
movapd %xmm5,0xb0(%rsp)
divsd  %xmm0,%xmm2
ucomisd %xmm7,%xmm2
jb     1665 <rq_pricing_chooser_complex+0x505>
xorps  %xmm0,%xmm0
sqrtsd %xmm2,%xmm0
jmp    168c <rq_pricing_chooser_complex+0x52c>
movapd %xmm2,%xmm0
movapd %xmm3,0x20(%rsp)
movsd  %xmm4,0x30(%rsp)
call   1080 <sqrt@plt>
movsd  0x30(%rsp),%xmm4
movapd 0x20(%rsp),%xmm3
movapd 0x60(%rsp),%xmm1
movsd  %xmm0,(%rsp)
movapd 0x90(%rsp),%xmm2
movapd 0x50(%rsp),%xmm0
movapd 0x10(%rsp),%xmm5
subsd  %xmm4,%xmm5
movapd %xmm5,0x70(%rsp)
addsd  0xc8(%rsp),%xmm3
movapd %xmm3,0x20(%rsp)
movsd  0x88(%rsp),%xmm3
mulsd  %xmm1,%xmm3
movsd  %xmm3,0x88(%rsp)
subsd  %xmm2,%xmm0
movapd %xmm0,0x50(%rsp)
mulsd  0x40(%rsp),%xmm0
call   1040 <exp@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movaps 0x10(%rsp),%xmm0
movapd 0xb0(%rsp),%xmm1
movsd  0xa0(%rsp),%xmm2
call   1030 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  %xmm0,0xc8(%rsp)
movapd 0x90(%rsp),%xmm0
xorpd  0x8e4(%rip),%xmm0
movapd %xmm0,0x90(%rsp)
mulsd  0x40(%rsp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0xc0(%rsp)
movsd  0x40(%rsp),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jb     175f <rq_pricing_chooser_complex+0x5ff>
sqrtsd %xmm0,%xmm0
jmp    1764 <rq_pricing_chooser_complex+0x604>
call   1080 <sqrt@plt>
movapd 0xd0(%rsp),%xmm1
mulsd  %xmm0,%xmm1
addsd  0xb0(%rsp),%xmm1
movapd 0x70(%rsp),%xmm0
movsd  0xa0(%rsp),%xmm2
call   1030 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  0xc0(%rsp),%xmm1
mulsd  0xa8(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x30(%rsp),%xmm0
mulsd  0xc8(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0xf0(%rsp),%xmm1
movapd 0x50(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0x50(%rsp)
movapd 0x82d(%rip),%xmm2
movapd 0x10(%rsp),%xmm0
xorpd  %xmm2,%xmm0
movapd 0x20(%rsp),%xmm1
xorpd  %xmm2,%xmm1
divsd  0x88(%rsp),%xmm1
movapd %xmm1,0x20(%rsp)
movsd  (%rsp),%xmm2
call   1030 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  0x50(%rsp),%xmm1
mulsd  0x8(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x30(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x30(%rsp)
movapd 0x90(%rsp),%xmm0
mulsd  0xf0(%rsp),%xmm0
call   1040 <exp@plt>
movapd %xmm0,%xmm1
movsd  0xf0(%rsp),%xmm0
mulsd  0x48(%rsp),%xmm1
movsd  %xmm1,0x10(%rsp)
movaps 0x70(%rsp),%xmm1
xorps  0x7a4(%rip),%xmm1
movaps %xmm1,0x70(%rsp)
ucomisd 0x7b7(%rip),%xmm0
jb     1881 <rq_pricing_chooser_complex+0x721>
sqrtsd %xmm0,%xmm0
jmp    1886 <rq_pricing_chooser_complex+0x726>
call   1080 <sqrt@plt>
movapd 0x60(%rsp),%xmm1
mulsd  %xmm0,%xmm1
addsd  0x20(%rsp),%xmm1
movapd 0x70(%rsp),%xmm0
movsd  (%rsp),%xmm2
call   1030 <rq_pricing_cumul_bivar_norm_dist@plt>
mulsd  0x10(%rsp),%xmm0
addsd  0x30(%rsp),%xmm0
add    $0xe8,%rsp
ret

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

LLVM IR (-O2):
define double @rq_pricing_chooser_complex(double %0, double %1, double %2, double %3, double %4, double %5, double %6, double %7, double %8) {
%10 = fsub double %3, %4
%11 = fsub double %7, %6
%12 = fsub double %8, %6
%13 = tail call double @rq_pricing_blackscholes_gen(i32 1, double %0, double %1, double %11, double %3, double %10, double %5)
%14 = tail call double @rq_pricing_blackscholes_gen(i32 0, double %0, double %2, double %12, double %3, double %10, double %5)
%15 = tail call double @rq_pricing_blackscholes_delta(i32 1, double %0, double %1, double %3, double %10, double %5, double %11, double %11)
%16 = tail call double @rq_pricing_blackscholes_delta(i32 0, double %0, double %2, double %3, double %10, double %5, double %12, double %12)
%17 = fsub double %13, %14
%18 = tail call double @llvm.fabs.f64(double %17)
%19 = fcmp ogt double %18, 1.000000e-03
br i1 %19, label %20, label %36
20: ; preds = %9
%21 = fsub double %15, %16
br label %22
22: ; preds = %20, %22
%23 = phi double [ %27, %22 ], [ %0, %20 ]
%24 = phi double [ %33, %22 ], [ %21, %20 ]
%25 = phi double [ %32, %22 ], [ %17, %20 ]
%26 = fdiv double %25, %24
%27 = fsub double %23, %26
%28 = tail call double @rq_pricing_blackscholes_gen(i32 1, double %27, double %1, double %11, double %3, double %10, double %5)
%29 = tail call double @rq_pricing_blackscholes_gen(i32 0, double %27, double %2, double %12, double %3, double %10, double %5)
%30 = tail call double @rq_pricing_blackscholes_delta(i32 1, double %27, double %1, double %3, double %10, double %5, double %11, double %11)
%31 = tail call double @rq_pricing_blackscholes_delta(i32 0, double %27, double %2, double %3, double %10, double %5, double %12, double %12)
%32 = fsub double %28, %29
%33 = fsub double %30, %31
%34 = tail call double @llvm.fabs.f64(double %32)
%35 = fcmp ogt double %34, 1.000000e-03
br i1 %35, label %22, label %36
36: ; preds = %22, %9
%37 = phi double [ %0, %9 ], [ %27, %22 ]
%38 = fmul double %5, %5
%39 = fdiv double %0, %37
%40 = tail call double @log(double %39)
%41 = fmul double %38, 5.000000e-01
%42 = fadd double %10, %41
%43 = tail call double @llvm.fmuladd.f64(double %42, double %6, double %40)
%44 = tail call double @sqrt(double %6)
%45 = fmul double %44, %5
%46 = fdiv double %43, %45
%47 = tail call double @sqrt(double %6)
%48 = fneg double %5
%49 = tail call double @llvm.fmuladd.f64(double %48, double %47, double %46)
%50 = fdiv double %0, %1
%51 = tail call double @log(double %50)
%52 = tail call double @llvm.fmuladd.f64(double %42, double %7, double %51)
%53 = tail call double @sqrt(double %7)
%54 = fmul double %53, %5
%55 = fdiv double %52, %54
%56 = fdiv double %0, %2
%57 = tail call double @log(double %56)
%58 = tail call double @llvm.fmuladd.f64(double %42, double %8, double %57)
%59 = tail call double @sqrt(double %8)
%60 = fmul double %59, %5
%61 = fdiv double %6, %7
%62 = tail call double @sqrt(double %61)
%63 = fdiv double %6, %8
%64 = tail call double @sqrt(double %63)
%65 = fsub double %10, %3
%66 = fmul double %65, %7
%67 = tail call double @exp(double %66)
%68 = fmul double %67, %0
%69 = tail call double @rq_pricing_cumul_bivar_norm_dist(double %46, double %55, double %62)
%70 = fneg double %3
%71 = fmul double %70, %7
%72 = tail call double @exp(double %71)
%73 = tail call double @sqrt(double %7)
%74 = tail call double @llvm.fmuladd.f64(double %48, double %73, double %55)
%75 = tail call double @rq_pricing_cumul_bivar_norm_dist(double %49, double %74, double %62)
%76 = fneg double %72
%77 = fmul double %76, %1
%78 = fmul double %77, %75
%79 = tail call double @llvm.fmuladd.f64(double %68, double %69, double %78)
%80 = fmul double %65, %8
%81 = tail call double @exp(double %80)
%82 = fneg double %46
%83 = fneg double %58
%84 = fdiv double %83, %60
%85 = tail call double @rq_pricing_cumul_bivar_norm_dist(double %82, double %84, double %64)
%86 = fneg double %81
%87 = fmul double %86, %0
%88 = tail call double @llvm.fmuladd.f64(double %87, double %85, double %79)
%89 = fmul double %70, %8
%90 = tail call double @exp(double %89)
%91 = fmul double %90, %2
%92 = fneg double %49
%93 = tail call double @sqrt(double %8)
%94 = tail call double @llvm.fmuladd.f64(double %5, double %93, double %84)
%95 = tail call double @rq_pricing_cumul_bivar_norm_dist(double %92, double %94, double %64)
%96 = tail call double @llvm.fmuladd.f64(double %91, double %95, double %88)
ret double %96
}