#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 exp(double);
double log(double);
double pow(double, int);
double rq_pricing_cumul_bivar_norm_dist(double, double, int);
int rq_pricing_cumul_norm_dist(double);
int sqrt(double);
double rq_pricing_lookback_partial_time_fixed_strike(short call, double S,
                                                     double X, double t1,
                                                     double T2, double r,
                                                     double b, double v) {
  double d1;
  double d2;
  double e1;
  double e2;
  double f1;
  double f2;
  double ret = 0.0;
  d1 = (log(S / X) + (b + (v * v) / 2) * T2) / (v * sqrt(T2));
  d2 = d1 - v * sqrt(T2);
  e1 = ((b + (v * v) / 2) * (T2 - t1)) / (v * sqrt(T2 - t1));
  e2 = e1 - v * sqrt(T2 - t1);
  f1 = (log(S / X) + (b + (v * v) / 2) * t1) / (v * sqrt(t1));
  f2 = f1 - v * sqrt(t1);
  if (call)
    ret =
        S * exp((b - r) * T2) * rq_pricing_cumul_norm_dist(d1) -
        exp(-r * T2) * X * rq_pricing_cumul_norm_dist(d2) +
        S * exp(-r * T2) * (v * v) / (2 * b) *
            (pow(-(S / X), (-2 * b / (v * v))) *
                 rq_pricing_cumul_bivar_norm_dist(d1 - 2 * b * sqrt(T2) / v,
                                                  -f1 + 2 * b * sqrt(t1) / v,
                                                  -sqrt(t1 / T2)) +
             exp(b * T2) *
                 rq_pricing_cumul_bivar_norm_dist(e1, d1, sqrt(1 - t1 / T2))) -
        S * exp((b - r) * T2) *
            rq_pricing_cumul_bivar_norm_dist(-e1, d1, -sqrt(1 - t1 / T2)) -
        X * exp(-r * T2) *
            rq_pricing_cumul_bivar_norm_dist(f2, -d2, -sqrt(t1 / T2)) +
        exp(-b * (T2 - t1)) * (1 - (v * v) / (2 * b)) * S * exp((b - r) * T2) *
            rq_pricing_cumul_norm_dist(f1) * rq_pricing_cumul_norm_dist(-e2);
  else
    ret = X * exp(-r * T2) * rq_pricing_cumul_norm_dist(-d2) -
          S * exp((b - r) * T2) * rq_pricing_cumul_norm_dist(-d1) +
          S * exp(-r * T2) * (v * v) / (2 * b) *
              (pow((S / X), (-2 * b / (v * v))) *
                   rq_pricing_cumul_bivar_norm_dist(-d1 + 2 * b * sqrt(T2) / v,
                                                    f1 - 2 * b * sqrt(t1) / v,
                                                    -sqrt(t1 / T2)) -
               exp(b * T2) * rq_pricing_cumul_bivar_norm_dist(
                                 -e1, -d1, sqrt(1 - t1 / T2))) +
          S * exp((b - r) * T2) *
              rq_pricing_cumul_bivar_norm_dist(e1, -d1, -sqrt(1 - t1 / T2)) +
          X * exp(-r * T2) *
              rq_pricing_cumul_bivar_norm_dist(-f2, d2, -sqrt(t1 / T2)) -
          exp(-b * (T2 - t1)) * (1 - (v * v) / (2 * b)) * S *
              exp((b - r) * T2) * rq_pricing_cumul_norm_dist(-f1) *
              rq_pricing_cumul_norm_dist(e2);
  return ret;
}


x86 assembly (clang, -O0):
<rq_pricing_lookback_partial_time_fixed_strike>:
push   %rbp
mov    %rsp,%rbp
sub    $0x2e0,%rsp
mov    %di,%ax
mov    %ax,-0x2(%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)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x10(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
call   1060 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  -0x40(%rbp),%xmm2
movsd  0x1e3a(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  -0x28(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0xd8(%rbp),%xmm1
ff
movsd  -0xd0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x48(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0xc8(%rbp),%xmm0
ff
movsd  -0xc0(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm1
mulsd  -0x40(%rbp),%xmm1
movsd  0x1d72(%rip),%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  -0x28(%rbp),%xmm1
subsd  -0x20(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0xb8(%rbp),%xmm1
ff
movsd  -0xb0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x58(%rbp)
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
subsd  -0x20(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0xa8(%rbp),%xmm0
ff
movsd  -0xa0(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x10(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
call   1060 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x38(%rbp),%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  -0x40(%rbp),%xmm2
movsd  0x1c8d(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  -0x20(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0x90(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x40(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x88(%rbp),%xmm0
ff
movsd  -0x80(%rbp),%xmm1
cvtsi2sd %eax,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
cmpw   $0x0,-0x2(%rbp)
je     1a0c <rq_pricing_lookback_partial_time_fixed_strike+0x8ac>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1050 <exp@plt>
movsd  -0x1d8(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1050 <exp@plt>
cvtsi2sd %eax,%xmm0
mulsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  -0x1d0(%rbp),%xmm1
ff
movsd  -0x1c8(%rbp),%xmm0
ff
movsd  -0x1c0(%rbp),%xmm2
ff
cvtsi2sd %eax,%xmm3
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1050 <exp@plt>
movsd  -0x1b8(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
mulsd  -0x40(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x1aa7(%rip),%xmm1
mulsd  -0x38(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x1a7d(%rip),%xmm1
mulsd  -0x38(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm2
mulsd  -0x40(%rbp),%xmm2
divsd  %xmm2,%xmm1
cvttsd2si %xmm1,%edi
call   1070 <pow@plt>
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  0x1a34(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x1b0(%rbp),%xmm1
ff
movsd  -0x1a8(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
divsd  -0x40(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  0x19c8(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x1a0(%rbp),%xmm1
ff
movsd  -0x198(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
divsd  -0x40(%rbp),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0x28(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x190(%rbp),%xmm0
ff
movsd  -0x188(%rbp),%xmm1
ff
xor    %edi,%edi
sub    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1050 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x20(%rbp),%xmm1
divsd  -0x28(%rbp),%xmm1
movsd  0x1919(%rip),%xmm0
subsd  %xmm1,%xmm0
call   1080 <sqrt@plt>
movsd  -0x180(%rbp),%xmm0
ff
movsd  -0x178(%rbp),%xmm1
ff
mov    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  -0x170(%rbp),%xmm3
ff
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0x160(%rbp),%xmm4
ff
movsd  -0x158(%rbp),%xmm1
ff
movaps %xmm0,%xmm5
movsd  -0x150(%rbp),%xmm0
ff
mulsd  %xmm5,%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1050 <exp@plt>
movsd  -0x148(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x20(%rbp),%xmm1
divsd  -0x28(%rbp),%xmm1
movsd  0x1836(%rip),%xmm0
subsd  %xmm1,%xmm0
call   1080 <sqrt@plt>
movsd  -0x140(%rbp),%xmm0
ff
movsd  -0x138(%rbp),%xmm1
ff
xor    %edi,%edi
sub    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  -0x130(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x128(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1050 <exp@plt>
movsd  -0x120(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0x28(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x118(%rbp),%xmm0
ff
movsd  -0x110(%rbp),%xmm1
ff
xor    %edi,%edi
sub    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  -0x108(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x100(%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  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x28(%rbp),%xmm1
subsd  -0x20(%rbp),%xmm1
mulsd  %xmm1,%xmm0
call   1050 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  -0x40(%rbp),%xmm2
movsd  0x16af(%rip),%xmm1
mulsd  -0x38(%rbp),%xmm1
divsd  %xmm1,%xmm2
movsd  0x16a6(%rip),%xmm1
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1050 <exp@plt>
movsd  -0xf8(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  -0xf0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  -0xe8(%rbp),%xmm0
ff
movsd  -0xe0(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    2043 <rq_pricing_lookback_partial_time_fixed_strike+0xee3>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x2e0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1050 <exp@plt>
movsd  -0x2e0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x2c8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x2c0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x2d8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1050 <exp@plt>
movsd  -0x2d8(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x2d0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  -0x2d0(%rbp),%xmm1
ff
movsd  -0x2c8(%rbp),%xmm0
ff
movsd  -0x2c0(%rbp),%xmm2
ff
cvtsi2sd %eax,%xmm3
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x258(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x2b8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1050 <exp@plt>
movsd  -0x2b8(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  -0x40(%rbp),%xmm1
mulsd  -0x40(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x1482(%rip),%xmm1
mulsd  -0x38(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x250(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
movsd  0x146f(%rip),%xmm1
mulsd  -0x38(%rbp),%xmm1
movsd  -0x40(%rbp),%xmm2
mulsd  -0x40(%rbp),%xmm2
divsd  %xmm2,%xmm1
cvttsd2si %xmm1,%edi
call   1070 <pow@plt>
movsd  %xmm0,-0x268(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x2a8(%rbp)
ff
movsd  0x140f(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x2b0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x2b0(%rbp),%xmm1
ff
movsd  -0x2a8(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
divsd  -0x40(%rbp),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x290(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x298(%rbp)
ff
movsd  0x13ba(%rip),%xmm0
mulsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x2a0(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x2a0(%rbp),%xmm1
ff
movsd  -0x298(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
divsd  -0x40(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x288(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0x28(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x290(%rbp),%xmm0
ff
movsd  -0x288(%rbp),%xmm1
ff
xor    %edi,%edi
sub    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  %xmm0,-0x260(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1050 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x270(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x280(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x278(%rbp)
ff
movsd  -0x20(%rbp),%xmm1
divsd  -0x28(%rbp),%xmm1
movsd  0x12dd(%rip),%xmm0
subsd  %xmm1,%xmm0
call   1080 <sqrt@plt>
movsd  -0x280(%rbp),%xmm0
ff
movsd  -0x278(%rbp),%xmm1
ff
mov    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  -0x270(%rbp),%xmm3
ff
movsd  -0x268(%rbp),%xmm2
ff
movsd  -0x260(%rbp),%xmm4
ff
movsd  -0x258(%rbp),%xmm1
ff
movaps %xmm0,%xmm5
movsd  -0x250(%rbp),%xmm0
ff
mulsd  %xmm5,%xmm3
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x230(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x248(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1050 <exp@plt>
movsd  -0x248(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x228(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
movsd  %xmm0,-0x240(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x238(%rbp)
ff
movsd  -0x20(%rbp),%xmm1
divsd  -0x28(%rbp),%xmm1
movsd  0x11e3(%rip),%xmm0
subsd  %xmm1,%xmm0
call   1080 <sqrt@plt>
movsd  -0x240(%rbp),%xmm0
ff
movsd  -0x238(%rbp),%xmm1
ff
xor    %edi,%edi
sub    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  -0x230(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x228(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x220(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1050 <exp@plt>
movsd  -0x220(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x218(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0x28(%rbp),%xmm0
call   1080 <sqrt@plt>
movsd  -0x218(%rbp),%xmm0
ff
movsd  -0x210(%rbp),%xmm1
ff
xor    %edi,%edi
sub    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  -0x208(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x200(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  -0x28(%rbp),%xmm1
subsd  -0x20(%rbp),%xmm1
mulsd  %xmm1,%xmm0
call   1050 <exp@plt>
cvtsi2sd %eax,%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  -0x40(%rbp),%xmm2
movsd  0x108a(%rip),%xmm1
mulsd  -0x38(%rbp),%xmm1
divsd  %xmm1,%xmm2
movsd  0x1081(%rip),%xmm1
subsd  %xmm2,%xmm1
mulsd  %xmm1,%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
mulsd  -0x28(%rbp),%xmm0
call   1050 <exp@plt>
movsd  -0x1f8(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1f0(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  -0x1f0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e8(%rbp)
movsd  -0x60(%rbp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  -0x1e8(%rbp),%xmm0
ff
movsd  -0x1e0(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
add    $0x2e0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<rq_pricing_lookback_partial_time_fixed_strike>:
push   %rbx
sub    $0x140,%rsp
movsd  %xmm6,0x10(%rsp)
movaps %xmm5,0x80(%rsp)
movaps %xmm4,0x60(%rsp)
movsd  %xmm3,(%rsp)
movsd  %xmm2,0x8(%rsp)
mov    %edi,%ebx
movsd  %xmm0,0x28(%rsp)
movsd  %xmm1,0xa8(%rsp)
divsd  %xmm1,%xmm0
movapd %xmm0,0x70(%rsp)
call   1060 <log@plt>
movsd  0x10(%rsp),%xmm1
mulsd  %xmm1,%xmm1
movsd  0xe48(%rip),%xmm2
movsd  %xmm1,0xb0(%rsp)
mulsd  %xmm1,%xmm2
addsd  0x80(%rsp),%xmm2
movapd %xmm2,0x40(%rsp)
movsd  (%rsp),%xmm1
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
movapd %xmm2,0x30(%rsp)
movapd %xmm1,%xmm0
call   1080 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x10(%rsp),%xmm0
movapd 0x30(%rsp),%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,0x30(%rsp)
movsd  (%rsp),%xmm0
call   1080 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x10(%rsp),%xmm0
movapd 0x30(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,0xd0(%rsp)
movsd  (%rsp),%xmm0
subsd  0x8(%rsp),%xmm0
movsd  %xmm0,0xb8(%rsp)
movapd %xmm0,%xmm1
mulsd  0x40(%rsp),%xmm1
movapd %xmm1,0x90(%rsp)
call   1080 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x10(%rsp),%xmm0
movapd 0x90(%rsp),%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,0x90(%rsp)
movsd  0xb8(%rsp),%xmm0
call   1080 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x10(%rsp),%xmm0
movapd 0x90(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,0x120(%rsp)
movapd 0x70(%rsp),%xmm0
call   1060 <log@plt>
movsd  0x8(%rsp),%xmm1
movapd 0x40(%rsp),%xmm2
mulsd  %xmm1,%xmm2
addsd  %xmm0,%xmm2
movapd %xmm2,0x40(%rsp)
movapd %xmm1,%xmm0
call   1080 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x10(%rsp),%xmm0
movapd 0x40(%rsp),%xmm1
divsd  %xmm0,%xmm1
movapd %xmm1,0x40(%rsp)
movsd  0x8(%rsp),%xmm0
call   1080 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x10(%rsp),%xmm0
movapd 0x40(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,0x110(%rsp)
test   %bx,%bx
je     171c <rq_pricing_lookback_partial_time_fixed_strike+0x5bc>
movapd 0x80(%rsp),%xmm0
subsd  0x60(%rsp),%xmm0
mulsd  (%rsp),%xmm0
movapd %xmm0,0xf0(%rsp)
call   1050 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
movaps 0x30(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x50(%rsp),%xmm0
movsd  %xmm0,0xc0(%rsp)
movapd 0x60(%rsp),%xmm0
xorpd  0xc87(%rip),%xmm0
mulsd  (%rsp),%xmm0
movapd %xmm0,0x60(%rsp)
call   1050 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x50(%rsp)
movaps 0xd0(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x50(%rsp),%xmm1
mulsd  0xa8(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0xc0(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0xc0(%rsp)
movaps 0x60(%rsp),%xmm0
call   1050 <exp@plt>
xorps  %xmm1,%xmm1
cvtsi2sd %eax,%xmm1
mulsd  0x28(%rsp),%xmm1
movsd  0xb0(%rsp),%xmm0
mulsd  %xmm0,%xmm1
movapd %xmm0,%xmm3
movapd 0x80(%rsp),%xmm2
movapd %xmm2,%xmm0
addsd  %xmm2,%xmm0
movapd %xmm0,0x50(%rsp)
divsd  %xmm0,%xmm1
movsd  %xmm1,0x100(%rsp)
movaps 0x70(%rsp),%xmm0
xorps  0xbd5(%rip),%xmm0
movsd  0xbb5(%rip),%xmm1
mulsd  %xmm2,%xmm1
divsd  %xmm3,%xmm1
cvttsd2si %xmm1,%edi
call   1070 <pow@plt>
movsd  %xmm0,0x70(%rsp)
movsd  (%rsp),%xmm0
call   1080 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x50(%rsp),%xmm0
divsd  0x10(%rsp),%xmm0
movapd 0x30(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,0xe0(%rsp)
movsd  0x8(%rsp),%xmm0
call   1080 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x50(%rsp),%xmm0
divsd  0x10(%rsp),%xmm0
subsd  0x40(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
divsd  (%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
call   1080 <sqrt@plt>
neg    %eax
movaps 0xe0(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
mov    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
mulsd  0x80(%rsp),%xmm0
call   1050 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0xe0(%rsp)
movsd  0xaee(%rip),%xmm0
subsd  0x8(%rsp),%xmm0
movsd  %xmm0,(%rsp)
call   1080 <sqrt@plt>
movapd 0x90(%rsp),%xmm0
movaps 0x30(%rsp),%xmm1
mov    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
mulsd  0xe0(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
mulsd  0x70(%rsp),%xmm1
addsd  %xmm1,%xmm0
mulsd  0x100(%rsp),%xmm0
addsd  0xc0(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movaps 0xf0(%rsp),%xmm0
call   1050 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x70(%rsp)
movaps 0x90(%rsp),%xmm0
xorps  0xa7f(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movsd  (%rsp),%xmm0
call   1080 <sqrt@plt>
neg    %eax
movapd 0x90(%rsp),%xmm0
movaps 0x30(%rsp),%xmm1
mov    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  0x70(%rsp),%xmm1
mulsd  0x28(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x10(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x10(%rsp)
movaps 0x60(%rsp),%xmm0
call   1050 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,(%rsp)
movaps 0xd0(%rsp),%xmm0
xorps  0xa11(%rip),%xmm0
movaps %xmm0,0xd0(%rsp)
movsd  0x8(%rsp),%xmm0
call   1080 <sqrt@plt>
neg    %eax
movapd 0x110(%rsp),%xmm0
movaps 0xd0(%rsp),%xmm1
mov    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  (%rsp),%xmm1
mulsd  0xa8(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x10(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x10(%rsp)
movapd 0x80(%rsp),%xmm1
xorpd  0x9b1(%rip),%xmm1
movsd  0xb8(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1050 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0xb0(%rsp),%xmm1
divsd  0x50(%rsp),%xmm1
movsd  0x971(%rip),%xmm2
subsd  %xmm1,%xmm2
mulsd  %xmm0,%xmm2
mulsd  0x28(%rsp),%xmm2
movsd  %xmm2,0x8(%rsp)
movaps 0xf0(%rsp),%xmm0
call   1050 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movaps 0x40(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x40(%rsp)
movaps 0x120(%rsp),%xmm0
xorps  0x921(%rip),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x40(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
jmp    1af2 <rq_pricing_lookback_partial_time_fixed_strike+0x992>
movapd 0x60(%rsp),%xmm0
xorpd  0x8f6(%rip),%xmm0
mulsd  (%rsp),%xmm0
movapd %xmm0,0xf0(%rsp)
call   1050 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xa8(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
movaps 0xd0(%rsp),%xmm0
xorps  0x8be(%rip),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
movapd 0x80(%rsp),%xmm0
subsd  0x60(%rsp),%xmm0
mulsd  (%rsp),%xmm0
movapd %xmm0,0xc0(%rsp)
call   1050 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x60(%rsp)
movaps 0x30(%rsp),%xmm0
xorps  0x86b(%rip),%xmm0
movaps %xmm0,0x100(%rsp)
call   1030 <rq_pricing_cumul_norm_dist@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x60(%rsp),%xmm1
mulsd  0x28(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x50(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x50(%rsp)
movaps 0xf0(%rsp),%xmm0
call   1050 <exp@plt>
cvtsi2sd %eax,%xmm3
mulsd  0x28(%rsp),%xmm3
movsd  0xb0(%rsp),%xmm2
mulsd  %xmm2,%xmm3
movapd 0x80(%rsp),%xmm1
movapd %xmm1,%xmm0
addsd  %xmm1,%xmm0
movapd %xmm0,0x60(%rsp)
divsd  %xmm0,%xmm3
movsd  %xmm3,0xe0(%rsp)
movsd  0x7cf(%rip),%xmm0
mulsd  %xmm1,%xmm0
divsd  %xmm2,%xmm0
cvttsd2si %xmm0,%edi
movaps 0x70(%rsp),%xmm0
call   1070 <pow@plt>
movsd  %xmm0,0x70(%rsp)
movsd  (%rsp),%xmm0
call   1080 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x60(%rsp),%xmm0
divsd  0x10(%rsp),%xmm0
subsd  0x30(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  0x8(%rsp),%xmm0
call   1080 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x60(%rsp),%xmm0
divsd  0x10(%rsp),%xmm0
movapd 0x40(%rsp),%xmm1
subsd  %xmm0,%xmm1
movapd %xmm1,0x10(%rsp)
movsd  0x8(%rsp),%xmm0
divsd  (%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
call   1080 <sqrt@plt>
neg    %eax
movsd  0x30(%rsp),%xmm0
movaps 0x10(%rsp),%xmm1
mov    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  %xmm0,0x10(%rsp)
movsd  (%rsp),%xmm0
mulsd  0x80(%rsp),%xmm0
call   1050 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x30(%rsp)
movaps 0x90(%rsp),%xmm0
xorps  0x715(%rip),%xmm0
movaps %xmm0,0x130(%rsp)
movsd  0x6f5(%rip),%xmm0
subsd  0x8(%rsp),%xmm0
movsd  %xmm0,(%rsp)
call   1080 <sqrt@plt>
movapd 0x130(%rsp),%xmm0
movaps 0x100(%rsp),%xmm1
mov    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
mulsd  0x30(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
mulsd  0x70(%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  0xe0(%rsp),%xmm1
addsd  0x50(%rsp),%xmm1
movsd  %xmm1,0x10(%rsp)
movaps 0xc0(%rsp),%xmm0
call   1050 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x28(%rsp),%xmm0
movsd  %xmm0,0x30(%rsp)
movsd  (%rsp),%xmm0
call   1080 <sqrt@plt>
neg    %eax
movapd 0x90(%rsp),%xmm0
movaps 0x100(%rsp),%xmm1
mov    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
mulsd  0x30(%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movaps 0xf0(%rsp),%xmm0
call   1050 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0xa8(%rsp),%xmm0
movsd  %xmm0,(%rsp)
movaps 0x110(%rsp),%xmm0
xorps  0x62b(%rip),%xmm0
movaps %xmm0,0x110(%rsp)
movsd  0x8(%rsp),%xmm0
call   1080 <sqrt@plt>
neg    %eax
movapd 0x110(%rsp),%xmm0
movaps 0xd0(%rsp),%xmm1
mov    %eax,%edi
call   1040 <rq_pricing_cumul_bivar_norm_dist@plt>
mulsd  (%rsp),%xmm0
addsd  0x10(%rsp),%xmm0
movsd  %xmm0,0x10(%rsp)
movapd 0x80(%rsp),%xmm1
xorpd  0x5dc(%rip),%xmm1
movsd  0xb8(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1050 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0xb0(%rsp),%xmm1
divsd  0x60(%rsp),%xmm1
movsd  0x59c(%rip),%xmm2
subsd  %xmm1,%xmm2
mulsd  %xmm0,%xmm2
movsd  %xmm2,0x8(%rsp)
movaps 0xc0(%rsp),%xmm0
call   1050 <exp@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,(%rsp)
movaps 0x40(%rsp),%xmm0
xorps  0x579(%rip),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  %xmm0,0x40(%rsp)
movaps 0x120(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x8(%rsp),%xmm1
mulsd  0x28(%rsp),%xmm1
mulsd  (%rsp),%xmm1
mulsd  0x40(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x10(%rsp),%xmm0
subsd  %xmm1,%xmm0
add    $0x140,%rsp
pop    %rbx
ret

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

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