#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 log(double);
double pow(double, int);
double rq_pricing_cumul_norm_dist(double);
int sqrt(double);
double rq_pricing_lookback_fixed_strike(short call, double S, double SMin,
                                        double SMax, double X, double T,
                                        double r, double b, double v) {
  double d1;
  double d2;
  double e1;
  double e2;
  double m;
  double ret = 0.0;
  if (call)
    m = SMax;
  else
    m = SMin;
  d1 = (log(S / X) + (b + (v * v) / 2) * T) / (v * sqrt(T));
  d2 = d1 - v * sqrt(T);
  e1 = (log(S / m) + (b + (v * v) / 2) * T) / (v * sqrt(T));
  e2 = e1 - v * sqrt(T);
  if (call && X > m)
    ret = S * exp((b - r) * T) * rq_pricing_cumul_norm_dist(d1) -
          X * exp(-r * T) * rq_pricing_cumul_norm_dist(d2) +
          S * exp(-r * T) * (v * v) / (2 * b) *
              (pow(-(S / X), (-2 * b / (v * v))) *
                   rq_pricing_cumul_norm_dist(d1 - 2 * b / v * sqrt(T)) +
               exp(b * T) * rq_pricing_cumul_norm_dist(d1));
  else if (call && X <= m)
    ret = exp(-r * T) * (m - X) +
          S * exp((b - r) * T) * rq_pricing_cumul_norm_dist(e1) -
          exp(-r * T) * m * rq_pricing_cumul_norm_dist(e2) +
          S * exp(-r * T) * (v * v) / (2 * b) *
              (pow(-(S / m), (-2 * b / (v * v))) *
                   rq_pricing_cumul_norm_dist(e1 - 2 * b / v * sqrt(T)) +
               exp(b * T) * rq_pricing_cumul_norm_dist(e1));
  else if (!call && X < m)
    ret = -S * exp((b - r) * T) * rq_pricing_cumul_norm_dist(-d1) +
          X * exp(-r * T) * rq_pricing_cumul_norm_dist(-d1 + v * sqrt(T)) +
          S * exp(-r * T) * (v * v) / (2 * b) *
              (pow((S / X), (-2 * b / (v * v))) *
                   rq_pricing_cumul_norm_dist(-d1 + 2 * b / v * sqrt(T)) -
               exp(b * T) * rq_pricing_cumul_norm_dist(-d1));
  else
    ret = exp(-r * T) * (X - m) -
          S * exp((b - r) * T) * rq_pricing_cumul_norm_dist(-e1) +
          exp(-r * T) * m * rq_pricing_cumul_norm_dist(-e1 + v * sqrt(T)) +
          exp(-r * T) * (v * v) / (2 * b) * S *
              (pow((S / m), (-2 * b / (v * v))) *
                   rq_pricing_cumul_norm_dist(-e1 + 2 * b / v * sqrt(T)) -
               exp(b * T) * rq_pricing_cumul_norm_dist(-e1));
  return ret;
}


x86 assembly (clang, -O0):
<rq_pricing_lookback_fixed_strike>:
push   %rbp
mov    %rsp,%rbp
sub    $0x280,%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)
movsd  %xmm7,-0x48(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x78(%rbp)
cmpw   $0x0,-0x2(%rbp)
je     11ac <rq_pricing_lookback_fixed_strike+0x5c>
movsd  -0x20(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
jmp    11b6 <rq_pricing_lookback_fixed_strike+0x66>
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x10(%rbp),%xmm0
divsd  -0x28(%rbp),%xmm0
call   1050 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
mulsd  -0x48(%rbp),%xmm2
movsd  0xe21(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   1070 <sqrt@plt>
movsd  -0xb8(%rbp),%xmm1
ff
movsd  -0xb0(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   1070 <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,-0x58(%rbp)
movsd  -0x10(%rbp),%xmm0
divsd  -0x70(%rbp),%xmm0
call   1050 <log@plt>
movaps %xmm0,%xmm1
movsd  -0x40(%rbp),%xmm0
movsd  -0x48(%rbp),%xmm2
mulsd  -0x48(%rbp),%xmm2
movsd  0xd47(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  -0x30(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   1070 <sqrt@plt>
movsd  -0x98(%rbp),%xmm1
ff
movsd  -0x90(%rbp),%xmm0
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   1070 <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,-0x68(%rbp)
movswl -0x2(%rbp),%eax
cmp    $0x0,%eax
je     15f6 <rq_pricing_lookback_fixed_strike+0x4a6>
movsd  -0x28(%rbp),%xmm0
ucomisd -0x70(%rbp),%xmm0
jbe    15f6 <rq_pricing_lookback_fixed_strike+0x4a6>
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x120(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x118(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x58(%rbp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  -0x110(%rbp),%xmm1
ff
movsd  -0x108(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x100(%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,-0xc8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0xf8(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0xb43(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xc0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
divsd  -0x28(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0xb11(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm2
mulsd  -0x48(%rbp),%xmm2
divsd  %xmm2,%xmm1
cvttsd2si %xmm1,%edi
call   1060 <pow@plt>
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  0xad0(%rip),%xmm0
mulsd  -0x40(%rbp),%xmm0
divsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   1070 <sqrt@plt>
movsd  -0xf0(%rbp),%xmm0
ff
movsd  -0xe8(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  %xmm0,-0xd0(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0xe0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  -0xe0(%rbp),%xmm3
ff
movsd  -0xd8(%rbp),%xmm2
ff
movsd  -0xd0(%rbp),%xmm4
ff
movsd  -0xc8(%rbp),%xmm1
ff
movaps %xmm0,%xmm5
movsd  -0xc0(%rbp),%xmm0
ff
mulsd  %xmm5,%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    1f0b <rq_pricing_lookback_fixed_strike+0xdbb>
movswl -0x2(%rbp),%eax
cmp    $0x0,%eax
je     18d0 <rq_pricing_lookback_fixed_strike+0x780>
movsd  -0x28(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jb     18d0 <rq_pricing_lookback_fixed_strike+0x780>
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x190(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  -0x188(%rbp),%xmm1
ff
movsd  -0x180(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x178(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  -0x170(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x168(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x160(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x869(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
divsd  -0x70(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  0x837(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm2
mulsd  -0x48(%rbp),%xmm2
divsd  %xmm2,%xmm1
cvttsd2si %xmm1,%edi
call   1060 <pow@plt>
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
movsd  0x7f6(%rip),%xmm0
mulsd  -0x40(%rbp),%xmm0
divsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   1070 <sqrt@plt>
movsd  -0x158(%rbp),%xmm0
ff
movsd  -0x150(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  -0x148(%rbp),%xmm3
ff
movsd  -0x140(%rbp),%xmm2
ff
movsd  -0x138(%rbp),%xmm4
ff
movsd  -0x130(%rbp),%xmm1
ff
movaps %xmm0,%xmm5
movsd  -0x128(%rbp),%xmm0
ff
mulsd  %xmm5,%xmm3
mulsd  %xmm4,%xmm2
addsd  %xmm3,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
jmp    1f06 <rq_pricing_lookback_fixed_strike+0xdb6>
cmpw   $0x0,-0x2(%rbp)
jne    1be4 <rq_pricing_lookback_fixed_strike+0xa94>
movsd  -0x28(%rbp),%xmm1
movsd  -0x70(%rbp),%xmm0
ucomisd %xmm1,%xmm0
jbe    1be4 <rq_pricing_lookback_fixed_strike+0xa94>
movsd  -0x10(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x208(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1d8(%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>
movsd  %xmm0,-0x1e0(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x200(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x1f0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   1070 <sqrt@plt>
movsd  -0x1f8(%rbp),%xmm0
ff
movsd  -0x1f0(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  -0x1e8(%rbp),%xmm1
ff
movsd  -0x1e0(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x1d8(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x1d0(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  -0x48(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x56c(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
divsd  -0x28(%rbp),%xmm0
movsd  0x551(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm2
mulsd  -0x48(%rbp),%xmm2
divsd  %xmm2,%xmm1
cvttsd2si %xmm1,%edi
call   1060 <pow@plt>
movsd  %xmm0,-0x1b0(%rbp)
ff
movsd  -0x50(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  0x4f9(%rip),%xmm0
mulsd  -0x40(%rbp),%xmm0
divsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   1070 <sqrt@plt>
movsd  -0x1c8(%rbp),%xmm0
ff
movsd  -0x1c0(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0x1b8(%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>
movsd  -0x1b8(%rbp),%xmm3
ff
movsd  -0x1b0(%rbp),%xmm2
ff
movsd  -0x1a8(%rbp),%xmm4
ff
movsd  -0x1a0(%rbp),%xmm1
ff
movaps %xmm0,%xmm5
movsd  -0x198(%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,-0x78(%rbp)
jmp    1f01 <rq_pricing_lookback_fixed_strike+0xdb1>
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0x268(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
subsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x270(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x280(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
subsd  -0x38(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x280(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x278(%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  -0x278(%rbp),%xmm1
ff
movsd  -0x270(%rbp),%xmm2
ff
movaps %xmm0,%xmm3
movsd  -0x268(%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,-0x250(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
mulsd  -0x70(%rbp),%xmm0
movsd  %xmm0,-0x248(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x258(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x260(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   1070 <sqrt@plt>
movsd  -0x260(%rbp),%xmm0
ff
movsd  -0x258(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  -0x250(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x248(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x218(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movsd  -0x48(%rbp),%xmm1
mulsd  -0x48(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x24f(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
divsd  %xmm1,%xmm0
mulsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
divsd  -0x70(%rbp),%xmm0
movsd  0x22f(%rip),%xmm1
mulsd  -0x40(%rbp),%xmm1
movsd  -0x48(%rbp),%xmm2
mulsd  -0x48(%rbp),%xmm2
divsd  %xmm2,%xmm1
cvttsd2si %xmm1,%edi
call   1060 <pow@plt>
movsd  %xmm0,-0x228(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
movsd  %xmm0,-0x238(%rbp)
ff
movsd  0x1d7(%rip),%xmm0
mulsd  -0x40(%rbp),%xmm0
divsd  -0x48(%rbp),%xmm0
movsd  %xmm0,-0x240(%rbp)
ff
movsd  -0x30(%rbp),%xmm0
call   1070 <sqrt@plt>
movsd  -0x240(%rbp),%xmm0
ff
movsd  -0x238(%rbp),%xmm1
ff
cvtsi2sd %eax,%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  %xmm0,-0x220(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
mulsd  -0x30(%rbp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,-0x230(%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  -0x230(%rbp),%xmm3
ff
movsd  -0x228(%rbp),%xmm2
ff
movsd  -0x220(%rbp),%xmm4
ff
movsd  -0x218(%rbp),%xmm1
ff
movaps %xmm0,%xmm5
movsd  -0x210(%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,-0x78(%rbp)
jmp    1f06 <rq_pricing_lookback_fixed_strike+0xdb6>
jmp    1f0b <rq_pricing_lookback_fixed_strike+0xdbb>
movsd  -0x78(%rbp),%xmm0
add    $0x280,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<rq_pricing_lookback_fixed_strike>:
push   %rbp
push   %r15
push   %r14
push   %rbx
sub    $0xc8,%rsp
movaps %xmm7,0x90(%rsp)
movsd  %xmm6,0x38(%rsp)
movaps %xmm5,0x20(%rsp)
movsd  %xmm4,0x10(%rsp)
mov    %edi,%ebx
test   %bx,%bx
je     1180 <rq_pricing_lookback_fixed_strike+0x30>
movaps %xmm2,%xmm1
movsd  %xmm1,0x50(%rsp)
movapd %xmm0,%xmm2
divsd  %xmm3,%xmm2
movsd  %xmm0,0x18(%rsp)
movapd %xmm2,0x80(%rsp)
movapd %xmm2,%xmm0
movsd  %xmm3,0x8(%rsp)
call   1050 <log@plt>
movapd %xmm0,0x40(%rsp)
movsd  0x10(%rsp),%xmm0
call   1070 <sqrt@plt>
mov    %eax,%ebp
movsd  0x10(%rsp),%xmm0
call   1070 <sqrt@plt>
mov    %eax,%r14d
movsd  0x18(%rsp),%xmm0
divsd  0x50(%rsp),%xmm0
movapd %xmm0,0xa0(%rsp)
call   1050 <log@plt>
movsd  %xmm0,0x70(%rsp)
movsd  0x10(%rsp),%xmm0
call   1070 <sqrt@plt>
mov    %eax,%r15d
movsd  0x10(%rsp),%xmm0
call   1070 <sqrt@plt>
movsd  0x50(%rsp),%xmm7
movsd  0x8(%rsp),%xmm8
movapd 0x90(%rsp),%xmm3
movapd %xmm3,%xmm4
mulsd  %xmm3,%xmm4
movsd  0xdd4(%rip),%xmm5
mulsd  %xmm4,%xmm5
movsd  0x38(%rsp),%xmm2
addsd  %xmm2,%xmm5
movsd  0x10(%rsp),%xmm6
mulsd  %xmm6,%xmm5
xorps  %xmm0,%xmm0
cvtsi2sd %ebp,%xmm0
movapd 0x40(%rsp),%xmm1
addsd  %xmm5,%xmm1
mulsd  %xmm3,%xmm0
divsd  %xmm0,%xmm1
movapd %xmm1,0x40(%rsp)
test   %bx,%bx
movapd %xmm6,%xmm1
movapd %xmm4,0xb0(%rsp)
je     1420 <rq_pricing_lookback_fixed_strike+0x2d0>
ucomisd %xmm7,%xmm8
jbe    1420 <rq_pricing_lookback_fixed_strike+0x2d0>
movapd 0xd84(%rip),%xmm0
xorpd  %xmm3,%xmm0
xorps  %xmm5,%xmm5
cvtsi2sd %r14d,%xmm5
mulsd  %xmm0,%xmm5
addsd  0x40(%rsp),%xmm5
movsd  %xmm5,0x70(%rsp)
movapd %xmm2,%xmm0
subsd  0x20(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1040 <exp@plt>
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,0xa0(%rsp)
movaps 0x40(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  %xmm0,0x50(%rsp)
movapd 0x20(%rsp),%xmm0
xorpd  0xd28(%rip),%xmm0
mulsd  0x10(%rsp),%xmm0
movapd %xmm0,0x20(%rsp)
call   1040 <exp@plt>
movsd  %xmm0,0x68(%rsp)
movsd  0x70(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  0x68(%rsp),%xmm1
mulsd  0x8(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x50(%rsp),%xmm0
mulsd  0xa0(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x50(%rsp)
movapd 0x20(%rsp),%xmm0
call   1040 <exp@plt>
mulsd  0x18(%rsp),%xmm0
movapd 0xb0(%rsp),%xmm3
mulsd  %xmm3,%xmm0
movsd  0x38(%rsp),%xmm2
movapd %xmm2,%xmm1
addsd  %xmm2,%xmm1
movsd  %xmm1,0x8(%rsp)
divsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%rsp)
movaps 0x80(%rsp),%xmm0
xorps  0xc92(%rip),%xmm0
movsd  0xc82(%rip),%xmm1
mulsd  %xmm2,%xmm1
divsd  %xmm3,%xmm1
cvttsd2si %xmm1,%edi
call   1060 <pow@plt>
movsd  %xmm0,0x18(%rsp)
movsd  0x10(%rsp),%xmm0
call   1070 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x8(%rsp),%xmm1
divsd  0x90(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movapd 0x40(%rsp),%xmm0
subsd  %xmm1,%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x10(%rsp),%xmm0
mulsd  0x38(%rsp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0x40(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
mulsd  0x10(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
mulsd  0x18(%rsp),%xmm1
addsd  %xmm1,%xmm0
mulsd  0x20(%rsp),%xmm0
addsd  0x50(%rsp),%xmm0
jmp    19a3 <rq_pricing_lookback_fixed_strike+0x853>
xorps  %xmm0,%xmm0
cvtsi2sd %r15d,%xmm0
addsd  0x70(%rsp),%xmm5
mulsd  %xmm3,%xmm0
divsd  %xmm0,%xmm5
test   %bx,%bx
je     1619 <rq_pricing_lookback_fixed_strike+0x4c9>
ucomisd %xmm8,%xmm7
jb     1619 <rq_pricing_lookback_fixed_strike+0x4c9>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  %xmm3,%xmm0
movapd %xmm5,%xmm3
subsd  %xmm0,%xmm3
movapd %xmm3,0x70(%rsp)
movapd 0x20(%rsp),%xmm0
xorpd  0xb9f(%rip),%xmm0
mulsd  %xmm1,%xmm0
movapd %xmm0,0x80(%rsp)
movapd %xmm5,0x40(%rsp)
call   1040 <exp@plt>
movsd  %xmm0,0x68(%rsp)
movsd  0x50(%rsp),%xmm0
subsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0x38(%rsp),%xmm0
subsd  0x20(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm0
call   1040 <exp@plt>
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movapd 0x40(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
mulsd  0x20(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
mulsd  0x68(%rsp),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%rsp)
movaps 0x80(%rsp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0x8(%rsp)
movapd 0x70(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  0x8(%rsp),%xmm1
mulsd  0x50(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x20(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%rsp)
movapd 0x80(%rsp),%xmm0
call   1040 <exp@plt>
mulsd  0x18(%rsp),%xmm0
movapd 0xb0(%rsp),%xmm3
mulsd  %xmm3,%xmm0
movsd  0x38(%rsp),%xmm2
movapd %xmm2,%xmm1
addsd  %xmm2,%xmm1
movsd  %xmm1,0x8(%rsp)
divsd  %xmm1,%xmm0
movsd  %xmm0,0x18(%rsp)
movaps 0xa0(%rsp),%xmm0
xorps  0xa99(%rip),%xmm0
movsd  0xa89(%rip),%xmm1
mulsd  %xmm2,%xmm1
divsd  %xmm3,%xmm1
cvttsd2si %xmm1,%edi
call   1060 <pow@plt>
movsd  %xmm0,0x50(%rsp)
movsd  0x10(%rsp),%xmm0
call   1070 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
movsd  0x8(%rsp),%xmm1
divsd  0x90(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movapd 0x40(%rsp),%xmm0
subsd  %xmm1,%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x10(%rsp),%xmm0
mulsd  0x38(%rsp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0x40(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
mulsd  0x10(%rsp),%xmm0
movsd  0x8(%rsp),%xmm1
mulsd  0x50(%rsp),%xmm1
addsd  %xmm1,%xmm0
mulsd  0x18(%rsp),%xmm0
addsd  0x20(%rsp),%xmm0
jmp    19a3 <rq_pricing_lookback_fixed_strike+0x853>
test   %bx,%bx
jne    17cb <rq_pricing_lookback_fixed_strike+0x67b>
ucomisd %xmm8,%xmm7
jbe    17cb <rq_pricing_lookback_fixed_strike+0x67b>
movapd %xmm2,%xmm0
subsd  0x20(%rsp),%xmm0
mulsd  %xmm1,%xmm0
call   1040 <exp@plt>
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x70(%rsp)
movaps 0x40(%rsp),%xmm0
xorps  0x9b8(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  %xmm0,0xa0(%rsp)
movapd 0x20(%rsp),%xmm0
xorpd  0x997(%rip),%xmm0
mulsd  0x10(%rsp),%xmm0
movapd %xmm0,0x20(%rsp)
call   1040 <exp@plt>
mulsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0x10(%rsp),%xmm0
call   1070 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x90(%rsp),%xmm0
subsd  0x40(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
mulsd  0x8(%rsp),%xmm0
movsd  0xa0(%rsp),%xmm1
mulsd  0x70(%rsp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rsp)
movapd 0x20(%rsp),%xmm0
call   1040 <exp@plt>
mulsd  0x18(%rsp),%xmm0
movapd 0xb0(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x38(%rsp),%xmm2
movapd %xmm2,%xmm3
addsd  %xmm2,%xmm3
movsd  %xmm3,0x20(%rsp)
divsd  %xmm3,%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x8e9(%rip),%xmm0
mulsd  %xmm2,%xmm0
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
movaps 0x80(%rsp),%xmm0
call   1060 <pow@plt>
movsd  %xmm0,0xb0(%rsp)
movsd  0x20(%rsp),%xmm0
divsd  0x90(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
call   1070 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x20(%rsp),%xmm0
subsd  0x40(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  %xmm0,0x40(%rsp)
movsd  0x10(%rsp),%xmm0
mulsd  0x38(%rsp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0x50(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
mulsd  0x10(%rsp),%xmm0
movsd  0x40(%rsp),%xmm1
mulsd  0xb0(%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  0x18(%rsp),%xmm1
addsd  0x8(%rsp),%xmm1
jmp    199f <rq_pricing_lookback_fixed_strike+0x84f>
movapd 0x20(%rsp),%xmm0
xorpd  0x837(%rip),%xmm0
mulsd  %xmm1,%xmm0
movapd %xmm0,0x80(%rsp)
movapd %xmm5,0x40(%rsp)
call   1040 <exp@plt>
movsd  %xmm0,0x68(%rsp)
movsd  0x8(%rsp),%xmm0
subsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x8(%rsp)
movsd  0x38(%rsp),%xmm0
subsd  0x20(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0x20(%rsp)
movapd 0x7e2(%rip),%xmm0
xorpd  0x40(%rsp),%xmm0
movapd %xmm0,0x70(%rsp)
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  0x20(%rsp),%xmm1
mulsd  0x18(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x8(%rsp),%xmm0
mulsd  0x68(%rsp),%xmm0
subsd  %xmm1,%xmm0
movsd  %xmm0,0x8(%rsp)
movapd 0x80(%rsp),%xmm0
call   1040 <exp@plt>
mulsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
call   1070 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x90(%rsp),%xmm0
subsd  0x40(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
mulsd  0x20(%rsp),%xmm0
addsd  0x8(%rsp),%xmm0
movsd  %xmm0,0x50(%rsp)
movapd 0x80(%rsp),%xmm0
call   1040 <exp@plt>
movapd 0xb0(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movsd  0x38(%rsp),%xmm2
movapd %xmm2,%xmm3
addsd  %xmm2,%xmm3
movsd  %xmm3,0x20(%rsp)
divsd  %xmm3,%xmm0
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x70a(%rip),%xmm0
mulsd  %xmm2,%xmm0
divsd  %xmm1,%xmm0
cvttsd2si %xmm0,%edi
movaps 0xa0(%rsp),%xmm0
call   1060 <pow@plt>
movsd  %xmm0,0x8(%rsp)
movsd  0x20(%rsp),%xmm0
divsd  0x90(%rsp),%xmm0
movsd  %xmm0,0x20(%rsp)
movsd  0x10(%rsp),%xmm0
call   1070 <sqrt@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %eax,%xmm0
mulsd  0x20(%rsp),%xmm0
subsd  0x40(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
movsd  %xmm0,0x40(%rsp)
movsd  0x10(%rsp),%xmm0
mulsd  0x38(%rsp),%xmm0
call   1040 <exp@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0x70(%rsp),%xmm0
call   1030 <rq_pricing_cumul_norm_dist@plt>
mulsd  0x10(%rsp),%xmm0
movsd  0x40(%rsp),%xmm1
mulsd  0x8(%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  0x18(%rsp),%xmm1
addsd  0x50(%rsp),%xmm1
movapd %xmm1,%xmm0
add    $0xc8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret

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

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