#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);
int log(double);
double pow(double, int);
double rq_pricing_cumul_bivar_norm_dist(double, double, double);
double rq_pricing_norm_dist(double);
double sqrt(double);
double rq_pricing_partial_barrier_early_end(short in, short call, double S,
                                            double X, double H, double r,
                                            double rf, double v, double t1,
                                            double t2) {
  double ret = 0.0;
  short up = H > S;
  double b = r - rf;
  double d1 = (log(S / X) + (b + (v * v) / 2) * t2) / (v * sqrt(t2));
  double d2 = d1 - v * sqrt(t2);
  double f1 =
      (log(S / X) + 2 * log(H / S) + (b + (v * v) / 2) * t2) / (v * sqrt(t2));
  double f2 = f1 - v * sqrt(t2);
  double e1 = (log(S / H) + (b + (v * v) / 2) * t1) / (v * sqrt(t1));
  double e2 = e1 - v * sqrt(t1);
  double e3 = e1 + 2 * log(H / S) / (v * sqrt(t1));
  double e4 = e3 - v * sqrt(t1);
  double mu = (b - (v * v) / 2) / (v * v);
  double rho = sqrt(t1 / t2);
  double g1 = (log(S / H) + (b + (v * v) / 2) * t2) / (v * sqrt(t2));
  double g2 = g1 - v * sqrt(t2);
  double g3 = g1 + 2 * log(H / S) / (v * sqrt(t2));
  double g4 = g3 - v * sqrt(t2);
  if (call && !in) {
    double eta = (up ? -1.0 : 1.0);
    ret = S * exp((b - r) * t2) *
              (rq_pricing_cumul_bivar_norm_dist(d1, eta * e1, eta * rho) -
               pow((H / S), (2 * (mu + 1))) *
                   rq_pricing_cumul_bivar_norm_dist(f1, eta * e3, eta * rho)) -
          X * exp(-r * t2) *
              (rq_pricing_cumul_bivar_norm_dist(d2, eta * e2, eta * rho) -
               pow((H / S), (2 * mu)) *
                   rq_pricing_cumul_bivar_norm_dist(f2, eta * e4, eta * rho));
  } else if (!call && !up && !in) {
    double z1 = rq_pricing_norm_dist(e2) -
                pow((H / S), (2 * mu)) * rq_pricing_norm_dist(e4);
    double z5 = rq_pricing_norm_dist(e1) -
                pow((H / S), (2 * (mu + 1))) * rq_pricing_norm_dist(e3);
    ret = rq_pricing_partial_barrier_early_end(0, 1, S, X, H, r, b, v, t1, t2) -
          S * exp((b - r) * t2) * z5 + X * exp(-r * t2) * z1;
  } else if (!call && up && !in) {
    double z2 = rq_pricing_norm_dist(-e2) -
                pow((H / S), (2 * mu)) * rq_pricing_norm_dist(-e4);
    double z6 = rq_pricing_norm_dist(-e1) -
                pow((H / S), (2 * (mu + 1))) * rq_pricing_norm_dist(-e3);
    ret = rq_pricing_partial_barrier_early_end(0, 1, S, X, H, r, b, v, t1, t2) -
          S * exp((b - r) * t2) * z6 + X * exp(-r * t2) * z2;
  }
  return ret;
}


x86 assembly (clang, -O0):
<rq_pricing_partial_barrier_early_end>:
push   %rbp
mov    %rsp,%rbp
sub    $0x2b0,%rsp
mov    %si,%ax
mov    %di,%cx
mov    %cx,-0x2(%rbp)
mov    %ax,-0x4(%rbp)
movsd  %xmm0,-0x10(%rbp)
movsd  %xmm1,-0x18(%rbp)
movsd  %xmm2,-0x20(%rbp)
movsd  %xmm3,-0x28(%rbp)
movsd  %xmm4,-0x30(%rbp)
movsd  %xmm5,-0x38(%rbp)
movsd  %xmm6,-0x40(%rbp)
movsd  %xmm7,-0x48(%rbp)
xorps  %xmm0,%xmm0
movsd  %xmm0,-0x50(%rbp)
movsd  -0x20(%rbp),%xmm0
ucomisd -0x10(%rbp),%xmm0
seta   %al
and    $0x1,%al
movzbl %al,%eax
mov    %ax,-0x52(%rbp)
movsd  -0x28(%rbp),%xmm0
subsd  -0x30(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
movsd  -0x10(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
call   1070 <log@plt>
cvtsi2sd %eax,%xmm1
movsd  -0x60(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm2
mulsd  -0x38(%rbp),%xmm2
movsd  0xdf8(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  -0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1c8(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x1d0(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x1d0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x1c8(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x68(%rbp)
movsd  -0x68(%rbp),%xmm0
movsd  %xmm0,-0x1c0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x1b8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x1c0(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x1b8(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x70(%rbp)
movsd  -0x10(%rbp),%xmm0
divsd  -0x18(%rbp),%xmm0
call   1070 <log@plt>
mov    %eax,-0x1ac(%rbp)
movsd  -0x20(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
call   1070 <log@plt>
mov    %eax,%ecx
mov    -0x1ac(%rbp),%eax
shl    $0x1,%ecx
add    %ecx,%eax
cvtsi2sd %eax,%xmm1
movsd  -0x60(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm2
mulsd  -0x38(%rbp),%xmm2
movsd  0xcfd(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  -0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1a0(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x1a8(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x1a8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x1a0(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x78(%rbp)
movsd  -0x78(%rbp),%xmm0
movsd  %xmm0,-0x198(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x190(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x198(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x190(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x80(%rbp)
movsd  -0x10(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
call   1070 <log@plt>
cvtsi2sd %eax,%xmm1
movsd  -0x60(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm2
mulsd  -0x38(%rbp),%xmm2
movsd  0xc24(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  -0x40(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x180(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x188(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x188(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x180(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0x88(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x178(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x170(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x178(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x170(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x90(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movsd  %xmm0,-0x158(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
call   1070 <log@plt>
shl    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x160(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x168(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x168(%rbp),%xmm2
ff
movsd  -0x160(%rbp),%xmm1
ff
movaps %xmm0,%xmm3
movsd  -0x158(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x98(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movsd  %xmm0,-0x150(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x148(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x150(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x148(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xa0(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm1
mulsd  -0x38(%rbp),%xmm1
movsd  0xa80(%rip),%xmm2
divsd  %xmm2,%xmm1
subsd  %xmm1,%xmm0
movsd  -0x38(%rbp),%xmm1
mulsd  -0x38(%rbp),%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xa8(%rbp)
ff
movsd  -0x40(%rbp),%xmm0
divsd  -0x48(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  %xmm0,-0xb0(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
divsd  -0x20(%rbp),%xmm0
call   1070 <log@plt>
cvtsi2sd %eax,%xmm1
movsd  -0x60(%rbp),%xmm0
movsd  -0x38(%rbp),%xmm2
mulsd  -0x38(%rbp),%xmm2
movsd  0xa21(%rip),%xmm3
divsd  %xmm3,%xmm2
addsd  %xmm2,%xmm0
movsd  -0x48(%rbp),%xmm2
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x140(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x138(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm1
divsd  %xmm1,%xmm0
movsd  %xmm0,-0xb8(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x130(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x128(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
call   1090 <sqrt@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,-0xc0(%rbp)
ff
movsd  -0xb8(%rbp),%xmm0
ff
movsd  %xmm0,-0x110(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
call   1070 <log@plt>
shl    $0x1,%eax
cvtsi2sd %eax,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
call   1090 <sqrt@plt>
movsd  -0x120(%rbp),%xmm2
ff
movsd  -0x118(%rbp),%xmm1
ff
movaps %xmm0,%xmm3
movsd  -0x110(%rbp),%xmm0
ff
mulsd  %xmm3,%xmm2
divsd  %xmm2,%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xc8(%rbp)
ff
movsd  -0xc8(%rbp),%xmm0
ff
movsd  %xmm0,-0x108(%rbp)
ff
movsd  -0x38(%rbp),%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
movsd  -0x48(%rbp),%xmm0
call   1090 <sqrt@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,-0xd0(%rbp)
ff
movswl -0x4(%rbp),%eax
cmp    $0x0,%eax
je     1a1e <rq_pricing_partial_barrier_early_end+0x8ae>
cmpw   $0x0,-0x2(%rbp)
jne    1a1e <rq_pricing_partial_barrier_early_end+0x8ae>
movswl -0x52(%rbp),%eax
movsd  0x880(%rip),%xmm0
movsd  0x870(%rip),%xmm1
movsd  %xmm1,-0x1e0(%rbp)
ff
cmp    $0x0,%eax
movsd  %xmm0,-0x1d8(%rbp)
ff
jne    17c1 <rq_pricing_partial_barrier_early_end+0x651>
movsd  -0x1e0(%rbp),%xmm0
ff
movsd  %xmm0,-0x1d8(%rbp)
ff
movsd  -0x1d8(%rbp),%xmm0
ff
movsd  %xmm0,-0xd8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x228(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
call   1060 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x228(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1e8(%rbp)
ff
movsd  -0x68(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0x88(%rbp),%xmm1
ff
movsd  -0xd8(%rbp),%xmm2
ff
mulsd  -0xb0(%rbp),%xmm2
ff
call   1050 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  %xmm0,-0x220(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  0x7bb(%rip),%xmm2
addsd  -0xa8(%rbp),%xmm2
ff
movsd  0x7a3(%rip),%xmm1
mulsd  %xmm2,%xmm1
cvttsd2si %xmm1,%edi
call   1080 <pow@plt>
movsd  %xmm0,-0x218(%rbp)
ff
movsd  -0x78(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0x98(%rbp),%xmm1
ff
movsd  -0xd8(%rbp),%xmm2
ff
mulsd  -0xb0(%rbp),%xmm2
ff
call   1050 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  -0x220(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x218(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x1f0(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x210(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x48(%rbp),%xmm0
call   1060 <exp@plt>
movaps %xmm0,%xmm1
movsd  -0x210(%rbp),%xmm0
ff
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x1f8(%rbp)
ff
movsd  -0x70(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0x90(%rbp),%xmm1
ff
movsd  -0xd8(%rbp),%xmm2
ff
mulsd  -0xb0(%rbp),%xmm2
ff
call   1050 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  %xmm0,-0x200(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  0x69c(%rip),%xmm1
mulsd  -0xa8(%rbp),%xmm1
ff
cvttsd2si %xmm1,%edi
call   1080 <pow@plt>
movsd  %xmm0,-0x208(%rbp)
ff
movsd  -0x80(%rbp),%xmm0
movsd  -0xd8(%rbp),%xmm1
ff
mulsd  -0xa0(%rbp),%xmm1
ff
movsd  -0xd8(%rbp),%xmm2
ff
mulsd  -0xb0(%rbp),%xmm2
ff
call   1050 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  -0x208(%rbp),%xmm3
ff
movsd  -0x200(%rbp),%xmm4
ff
movsd  -0x1f8(%rbp),%xmm1
ff
movsd  -0x1f0(%rbp),%xmm2
ff
movaps %xmm0,%xmm5
movsd  -0x1e8(%rbp),%xmm0
ff
movq   %xmm3,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm3
mulsd  %xmm5,%xmm3
addsd  %xmm4,%xmm3
mulsd  %xmm3,%xmm1
movq   %xmm1,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm1
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    1f05 <rq_pricing_partial_barrier_early_end+0xd95>
cmpw   $0x0,-0x4(%rbp)
jne    1c60 <rq_pricing_partial_barrier_early_end+0xaf0>
cmpw   $0x0,-0x52(%rbp)
jne    1c60 <rq_pricing_partial_barrier_early_end+0xaf0>
cmpw   $0x0,-0x2(%rbp)
jne    1c60 <rq_pricing_partial_barrier_early_end+0xaf0>
movsd  -0x90(%rbp),%xmm0
ff
call   1030 <rq_pricing_norm_dist@plt>
movsd  %xmm0,-0x268(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  0x59a(%rip),%xmm1
mulsd  -0xa8(%rbp),%xmm1
ff
cvttsd2si %xmm1,%edi
call   1080 <pow@plt>
movsd  %xmm0,-0x260(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
call   1030 <rq_pricing_norm_dist@plt>
movsd  -0x268(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x260(%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  -0x88(%rbp),%xmm0
ff
call   1030 <rq_pricing_norm_dist@plt>
movsd  %xmm0,-0x258(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  0x51b(%rip),%xmm2
addsd  -0xa8(%rbp),%xmm2
ff
movsd  0x503(%rip),%xmm1
mulsd  %xmm2,%xmm1
cvttsd2si %xmm1,%edi
call   1080 <pow@plt>
movsd  %xmm0,-0x250(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
call   1030 <rq_pricing_norm_dist@plt>
movsd  -0x258(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x250(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xe8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm3
movsd  -0x60(%rbp),%xmm4
movsd  -0x38(%rbp),%xmm5
movsd  -0x40(%rbp),%xmm6
movsd  -0x48(%rbp),%xmm7
xor    %edi,%edi
mov    $0x1,%esi
call   1040 <rq_pricing_partial_barrier_early_end@plt>
movsd  %xmm0,-0x248(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x240(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
call   1060 <exp@plt>
movsd  -0x248(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x240(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
movsd  -0xe8(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x238(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x230(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x48(%rbp),%xmm0
call   1060 <exp@plt>
movsd  -0x238(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x230(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
movsd  -0xe0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    1f00 <rq_pricing_partial_barrier_early_end+0xd90>
cmpw   $0x0,-0x4(%rbp)
jne    1efb <rq_pricing_partial_barrier_early_end+0xd8b>
movswl -0x52(%rbp),%eax
cmp    $0x0,%eax
je     1efb <rq_pricing_partial_barrier_early_end+0xd8b>
cmpw   $0x0,-0x2(%rbp)
jne    1efb <rq_pricing_partial_barrier_early_end+0xd8b>
movsd  -0x90(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <rq_pricing_norm_dist@plt>
movsd  %xmm0,-0x2a8(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  0x33f(%rip),%xmm1
mulsd  -0xa8(%rbp),%xmm1
ff
cvttsd2si %xmm1,%edi
call   1080 <pow@plt>
movsd  %xmm0,-0x2a0(%rbp)
ff
movsd  -0xa0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <rq_pricing_norm_dist@plt>
movsd  -0x2a8(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x2a0(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
movsd  -0x88(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <rq_pricing_norm_dist@plt>
movsd  %xmm0,-0x298(%rbp)
ff
movsd  -0x20(%rbp),%xmm0
divsd  -0x10(%rbp),%xmm0
movsd  0x292(%rip),%xmm2
addsd  -0xa8(%rbp),%xmm2
ff
movsd  0x27a(%rip),%xmm1
mulsd  %xmm2,%xmm1
cvttsd2si %xmm1,%edi
call   1080 <pow@plt>
movsd  %xmm0,-0x290(%rbp)
ff
movsd  -0x98(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
call   1030 <rq_pricing_norm_dist@plt>
movsd  -0x298(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x290(%rbp),%xmm0
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  -0x18(%rbp),%xmm1
movsd  -0x20(%rbp),%xmm2
movsd  -0x28(%rbp),%xmm3
movsd  -0x60(%rbp),%xmm4
movsd  -0x38(%rbp),%xmm5
movsd  -0x40(%rbp),%xmm6
movsd  -0x48(%rbp),%xmm7
xor    %edi,%edi
mov    $0x1,%esi
call   1040 <rq_pricing_partial_barrier_early_end@plt>
movsd  %xmm0,-0x288(%rbp)
ff
movsd  -0x10(%rbp),%xmm0
movsd  %xmm0,-0x280(%rbp)
ff
movsd  -0x60(%rbp),%xmm0
subsd  -0x28(%rbp),%xmm0
mulsd  -0x48(%rbp),%xmm0
call   1060 <exp@plt>
movsd  -0x288(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x280(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
movsd  -0xf8(%rbp),%xmm2
ff
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x278(%rbp)
ff
movsd  -0x18(%rbp),%xmm0
movsd  %xmm0,-0x270(%rbp)
ff
movsd  -0x28(%rbp),%xmm0
movq   %xmm0,%rax
movabs $0x8000000000000000,%rcx
xor    %rcx,%rax
movq   %rax,%xmm0
mulsd  -0x48(%rbp),%xmm0
call   1060 <exp@plt>
movsd  -0x278(%rbp),%xmm1
ff
movaps %xmm0,%xmm2
movsd  -0x270(%rbp),%xmm0
ff
mulsd  %xmm2,%xmm0
movsd  -0xf0(%rbp),%xmm2
ff
mulsd  %xmm2,%xmm0
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x50(%rbp)
jmp    1f00 <rq_pricing_partial_barrier_early_end+0xd90>
jmp    1f05 <rq_pricing_partial_barrier_early_end+0xd95>
movsd  -0x50(%rbp),%xmm0
add    $0x2b0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<rq_pricing_partial_barrier_early_end>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x138,%rsp
movsd  %xmm7,0x8(%rsp)
movsd  %xmm6,0x30(%rsp)
movaps %xmm5,0xb0(%rsp)
movsd  %xmm4,0x40(%rsp)
movapd %xmm3,0xa0(%rsp)
movsd  %xmm2,0x50(%rsp)
mov    %esi,%r13d
mov    %edi,%ebp
movsd  %xmm0,0x18(%rsp)
movsd  %xmm1,0x88(%rsp)
divsd  %xmm1,%xmm0
movsd  %xmm0,0x20(%rsp)
call   1070 <log@plt>
movsd  0x8(%rsp),%xmm2
mov    %eax,%r14d
xorps  %xmm1,%xmm1
sqrtsd %xmm2,%xmm1
xorpd  %xmm3,%xmm3
ucomisd %xmm3,%xmm2
movsd  %xmm1,0x10(%rsp)
movapd %xmm1,%xmm0
jae    1206 <rq_pricing_partial_barrier_early_end+0x96>
movsd  0x8(%rsp),%xmm0
call   1090 <sqrt@plt>
xorpd  %xmm3,%xmm3
movsd  0x8(%rsp),%xmm2
movsd  %xmm0,0x100(%rsp)
ucomisd %xmm3,%xmm2
movsd  0x10(%rsp),%xmm0
jae    1226 <rq_pricing_partial_barrier_early_end+0xb6>
movsd  0x8(%rsp),%xmm0
call   1090 <sqrt@plt>
movsd  %xmm0,0xd8(%rsp)
movsd  0x20(%rsp),%xmm0
call   1070 <log@plt>
mov    %eax,%r15d
movsd  0x50(%rsp),%xmm0
divsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x58(%rsp)
call   1070 <log@plt>
mov    %eax,%r12d
xorpd  %xmm2,%xmm2
movsd  0x8(%rsp),%xmm1
ucomisd %xmm2,%xmm1
movsd  0x10(%rsp),%xmm0
jae    1282 <rq_pricing_partial_barrier_early_end+0x112>
movsd  0x8(%rsp),%xmm0
call   1090 <sqrt@plt>
xorpd  %xmm2,%xmm2
movsd  0x8(%rsp),%xmm1
movsd  %xmm0,0xf8(%rsp)
movapd 0xb0(%rsp),%xmm0
mulsd  %xmm0,%xmm0
movapd %xmm0,0xe0(%rsp)
ucomisd %xmm2,%xmm1
jae    12b8 <rq_pricing_partial_barrier_early_end+0x148>
movsd  0x8(%rsp),%xmm0
call   1090 <sqrt@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0xa0(%rsp),%xmm0
subsd  0x40(%rsp),%xmm0
movapd %xmm0,0xc0(%rsp)
movsd  0xd28(%rip),%xmm0
mulsd  0xe0(%rsp),%xmm0
movsd  %xmm0,0x60(%rsp)
movsd  0x18(%rsp),%xmm0
divsd  0x50(%rsp),%xmm0
movsd  %xmm0,0x108(%rsp)
call   1070 <log@plt>
mov    %eax,%ebx
movsd  0x30(%rsp),%xmm1
xorps  %xmm0,%xmm0
sqrtsd %xmm1,%xmm0
xorpd  %xmm2,%xmm2
ucomisd %xmm2,%xmm1
movapd %xmm0,0x40(%rsp)
jae    1333 <rq_pricing_partial_barrier_early_end+0x1c3>
movapd %xmm1,%xmm0
call   1090 <sqrt@plt>
xorpd  %xmm2,%xmm2
movsd  0x30(%rsp),%xmm1
movsd  %xmm0,0x38(%rsp)
movapd 0xc0(%rsp),%xmm0
addsd  0x60(%rsp),%xmm0
movapd %xmm0,0x120(%rsp)
ucomisd %xmm2,%xmm1
movapd 0x40(%rsp),%xmm0
jae    136c <rq_pricing_partial_barrier_early_end+0x1fc>
movapd %xmm1,%xmm0
call   1090 <sqrt@plt>
movsd  0x30(%rsp),%xmm1
movapd %xmm0,0x70(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %ebx,%xmm0
movsd  %xmm0,0x90(%rsp)
movapd 0x120(%rsp),%xmm0
mulsd  %xmm1,%xmm0
movapd %xmm0,0x20(%rsp)
movsd  0x58(%rsp),%xmm0
call   1070 <log@plt>
movsd  0x30(%rsp),%xmm1
mov    %eax,%ebx
add    %eax,%ebx
xorpd  %xmm6,%xmm6
ucomisd %xmm6,%xmm1
movapd 0x40(%rsp),%xmm5
jae    13d1 <rq_pricing_partial_barrier_early_end+0x261>
movapd %xmm1,%xmm0
call   1090 <sqrt@plt>
xorpd  %xmm6,%xmm6
movsd  0x30(%rsp),%xmm1
movapd %xmm0,%xmm5
movapd 0xc47(%rip),%xmm2
movapd 0xb0(%rsp),%xmm0
xorpd  %xmm0,%xmm2
movapd %xmm2,0x110(%rsp)
movapd 0x20(%rsp),%xmm3
addsd  0x90(%rsp),%xmm3
xorps  %xmm2,%xmm2
cvtsi2sd %ebx,%xmm2
movsd  0x38(%rsp),%xmm4
mulsd  %xmm0,%xmm4
mulsd  %xmm0,%xmm5
ucomisd %xmm6,%xmm1
jae    146a <rq_pricing_partial_barrier_early_end+0x2fa>
movapd %xmm1,%xmm0
movapd %xmm2,0x90(%rsp)
movapd %xmm3,0x20(%rsp)
movsd  %xmm4,0x38(%rsp)
movsd  %xmm5,0xf0(%rsp)
call   1090 <sqrt@plt>
movsd  0xf0(%rsp),%xmm5
movsd  0x38(%rsp),%xmm4
movapd 0x20(%rsp),%xmm3
movapd 0x90(%rsp),%xmm2
movsd  0x30(%rsp),%xmm1
movapd %xmm0,0x40(%rsp)
divsd  %xmm4,%xmm3
divsd  %xmm5,%xmm2
movapd %xmm1,%xmm0
divsd  0x8(%rsp),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
movapd %xmm3,0x20(%rsp)
jb     1492 <rq_pricing_partial_barrier_early_end+0x322>
sqrtsd %xmm0,%xmm0
jmp    14af <rq_pricing_partial_barrier_early_end+0x33f>
movapd %xmm2,0x90(%rsp)
call   1090 <sqrt@plt>
movapd 0x20(%rsp),%xmm3
movapd 0x90(%rsp),%xmm2
movsd  %xmm0,0x38(%rsp)
movapd 0x70(%rsp),%xmm0
movapd 0x110(%rsp),%xmm1
mulsd  %xmm1,%xmm0
movapd %xmm0,0x70(%rsp)
addsd  %xmm3,%xmm2
movapd %xmm2,0x90(%rsp)
movapd 0x40(%rsp),%xmm0
mulsd  %xmm1,%xmm0
movapd %xmm0,0x40(%rsp)
movapd 0xc0(%rsp),%xmm0
subsd  0x60(%rsp),%xmm0
movapd %xmm0,0x60(%rsp)
movsd  0x108(%rsp),%xmm0
call   1070 <log@plt>
movsd  0x8(%rsp),%xmm0
xorpd  %xmm1,%xmm1
ucomisd %xmm0,%xmm1
ja     1a45 <rq_pricing_partial_barrier_early_end+0x8d5>
movsd  0x58(%rsp),%xmm0
call   1070 <log@plt>
movsd  0x8(%rsp),%xmm8
movapd 0x70(%rsp),%xmm4
movapd 0x20(%rsp),%xmm9
addsd  %xmm9,%xmm4
movapd 0x40(%rsp),%xmm0
movapd 0x90(%rsp),%xmm3
addsd  %xmm3,%xmm0
movapd %xmm0,0x40(%rsp)
movapd 0x60(%rsp),%xmm0
divsd  0xe0(%rsp),%xmm0
test   %bp,%bp
jne    17c9 <rq_pricing_partial_barrier_early_end+0x659>
test   %r13w,%r13w
je     17c9 <rq_pricing_partial_barrier_early_end+0x659>
lea    (%r15,%r12,2),%eax
xorps  %xmm5,%xmm5
cvtsi2sd %r14d,%xmm5
xorps  %xmm2,%xmm2
cvtsi2sd %eax,%xmm2
movapd 0x120(%rsp),%xmm7
mulsd  %xmm8,%xmm7
addsd  %xmm7,%xmm5
movapd 0xb0(%rsp),%xmm1
movsd  0x100(%rsp),%xmm6
mulsd  %xmm1,%xmm6
divsd  %xmm6,%xmm5
movsd  %xmm5,0xe0(%rsp)
addsd  %xmm7,%xmm2
movsd  0xf8(%rsp),%xmm6
mulsd  %xmm1,%xmm6
divsd  %xmm6,%xmm2
movsd  %xmm2,0xb0(%rsp)
xor    %eax,%eax
movsd  0x50(%rsp),%xmm1
ucomisd 0x18(%rsp),%xmm1
seta   %al
movsd  0x10(%rsp),%xmm6
movapd 0x110(%rsp),%xmm1
mulsd  %xmm1,%xmm6
addsd  %xmm2,%xmm6
movsd  %xmm6,0x10(%rsp)
movsd  0xd8(%rsp),%xmm6
mulsd  %xmm1,%xmm6
addsd  %xmm5,%xmm6
movsd  %xmm6,0xd8(%rsp)
lea    0x9fa(%rip),%rcx
movsd  (%rcx,%rax,8),%xmm1
movsd  %xmm1,0x30(%rsp)
movapd %xmm0,0x60(%rsp)
movapd 0xc0(%rsp),%xmm0
subsd  0xa0(%rsp),%xmm0
mulsd  %xmm8,%xmm0
movapd %xmm4,0x70(%rsp)
call   1060 <exp@plt>
mulsd  0x18(%rsp),%xmm0
movsd  %xmm0,0x18(%rsp)
movsd  0x30(%rsp),%xmm0
movapd 0x20(%rsp),%xmm1
mulsd  %xmm0,%xmm1
movsd  0x38(%rsp),%xmm2
mulsd  %xmm0,%xmm2
movsd  %xmm2,0x38(%rsp)
movsd  0xe0(%rsp),%xmm0
call   1050 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  %xmm0,0x20(%rsp)
movsd  0x957(%rip),%xmm0
addsd  0x60(%rsp),%xmm0
addsd  %xmm0,%xmm0
cvttsd2si %xmm0,%edi
movsd  0x58(%rsp),%xmm0
call   1080 <pow@plt>
movsd  %xmm0,0x50(%rsp)
movapd 0x90(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
movsd  0xb0(%rsp),%xmm0
movsd  0x38(%rsp),%xmm2
call   1050 <rq_pricing_cumul_bivar_norm_dist@plt>
mulsd  0x50(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
subsd  %xmm0,%xmm1
mulsd  0x18(%rsp),%xmm1
movsd  %xmm1,0x20(%rsp)
movapd 0xa0(%rsp),%xmm0
xorpd  0x900(%rip),%xmm0
mulsd  0x8(%rsp),%xmm0
call   1060 <exp@plt>
movsd  %xmm0,0x8(%rsp)
movapd 0x70(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
movsd  0xd8(%rsp),%xmm0
movsd  0x38(%rsp),%xmm2
call   1050 <rq_pricing_cumul_bivar_norm_dist@plt>
movsd  %xmm0,0x18(%rsp)
movapd 0x60(%rsp),%xmm0
addsd  %xmm0,%xmm0
cvttsd2si %xmm0,%edi
movsd  0x58(%rsp),%xmm0
call   1080 <pow@plt>
movsd  %xmm0,0x70(%rsp)
movapd 0x40(%rsp),%xmm1
mulsd  0x30(%rsp),%xmm1
movsd  0x10(%rsp),%xmm0
movsd  0x38(%rsp),%xmm2
call   1050 <rq_pricing_cumul_bivar_norm_dist@plt>
mulsd  0x70(%rsp),%xmm0
movsd  0x18(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  0x8(%rsp),%xmm0
mulsd  0x88(%rsp),%xmm0
mulsd  %xmm1,%xmm0
movapd %xmm0,%xmm1
movsd  0x20(%rsp),%xmm0
subsd  %xmm1,%xmm0
jmp    1a33 <rq_pricing_partial_barrier_early_end+0x8c3>
mov    %r13d,%eax
or     %bp,%ax
jne    1881 <rq_pricing_partial_barrier_early_end+0x711>
movsd  0x50(%rsp),%xmm1
ucomisd 0x18(%rsp),%xmm1
ja     1881 <rq_pricing_partial_barrier_early_end+0x711>
movapd %xmm0,0x60(%rsp)
movapd %xmm4,%xmm0
call   1030 <rq_pricing_norm_dist@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0x60(%rsp),%xmm0
addsd  %xmm0,%xmm0
cvttsd2si %xmm0,%edi
movsd  0x58(%rsp),%xmm0
call   1080 <pow@plt>
movsd  %xmm0,0x70(%rsp)
movapd 0x40(%rsp),%xmm0
call   1030 <rq_pricing_norm_dist@plt>
mulsd  0x70(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
movaps 0x20(%rsp),%xmm0
call   1030 <rq_pricing_norm_dist@plt>
movapd 0x60(%rsp),%xmm1
addsd  0x7b4(%rip),%xmm1
movsd  %xmm0,0x40(%rsp)
addsd  %xmm1,%xmm1
cvttsd2si %xmm1,%edi
movsd  0x58(%rsp),%xmm0
call   1080 <pow@plt>
movsd  %xmm0,0x20(%rsp)
movapd 0x90(%rsp),%xmm0
jmp    195a <rq_pricing_partial_barrier_early_end+0x7ea>
test   %bp,%bp
jne    1a2f <rq_pricing_partial_barrier_early_end+0x8bf>
test   %r13w,%r13w
jne    1a2f <rq_pricing_partial_barrier_early_end+0x8bf>
movsd  0x50(%rsp),%xmm1
ucomisd 0x18(%rsp),%xmm1
jbe    1a2f <rq_pricing_partial_barrier_early_end+0x8bf>
xorpd  0x772(%rip),%xmm4
movapd %xmm0,0x60(%rsp)
movapd %xmm4,%xmm0
call   1030 <rq_pricing_norm_dist@plt>
movsd  %xmm0,0x10(%rsp)
movapd 0x60(%rsp),%xmm0
addsd  %xmm0,%xmm0
cvttsd2si %xmm0,%edi
movsd  0x58(%rsp),%xmm0
call   1080 <pow@plt>
movsd  %xmm0,0x70(%rsp)
movapd 0x40(%rsp),%xmm0
xorpd  0x730(%rip),%xmm0
call   1030 <rq_pricing_norm_dist@plt>
mulsd  0x70(%rsp),%xmm0
movsd  0x10(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x10(%rsp)
movaps 0x20(%rsp),%xmm0
xorps  0x709(%rip),%xmm0
call   1030 <rq_pricing_norm_dist@plt>
movapd 0x60(%rsp),%xmm1
addsd  0x6de(%rip),%xmm1
movsd  %xmm0,0x40(%rsp)
addsd  %xmm1,%xmm1
cvttsd2si %xmm1,%edi
movsd  0x58(%rsp),%xmm0
call   1080 <pow@plt>
movsd  %xmm0,0x20(%rsp)
movapd 0x90(%rsp),%xmm0
xorpd  0x6c6(%rip),%xmm0
call   1030 <rq_pricing_norm_dist@plt>
mulsd  0x20(%rsp),%xmm0
movsd  0x40(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x40(%rsp)
xor    %edi,%edi
mov    $0x1,%esi
movsd  0x18(%rsp),%xmm0
movsd  0x88(%rsp),%xmm1
movsd  0x50(%rsp),%xmm2
movapd 0xa0(%rsp),%xmm3
movapd 0xc0(%rsp),%xmm4
movapd 0xb0(%rsp),%xmm5
movsd  0x30(%rsp),%xmm6
movsd  0x8(%rsp),%xmm7
call   1040 <rq_pricing_partial_barrier_early_end@plt>
movsd  %xmm0,0x20(%rsp)
movapd 0xc0(%rsp),%xmm0
subsd  0xa0(%rsp),%xmm0
mulsd  0x8(%rsp),%xmm0
call   1060 <exp@plt>
mulsd  0x18(%rsp),%xmm0
mulsd  0x40(%rsp),%xmm0
movsd  0x20(%rsp),%xmm1
subsd  %xmm0,%xmm1
movsd  %xmm1,0x20(%rsp)
movapd 0xa0(%rsp),%xmm0
xorpd  0x613(%rip),%xmm0
mulsd  0x8(%rsp),%xmm0
call   1060 <exp@plt>
mulsd  0x88(%rsp),%xmm0
mulsd  0x10(%rsp),%xmm0
addsd  0x20(%rsp),%xmm0
jmp    1a33 <rq_pricing_partial_barrier_early_end+0x8c3>
xorpd  %xmm0,%xmm0
add    $0x138,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
xorpd  %xmm1,%xmm1
ucomisd %xmm1,%xmm0
jae    1a64 <rq_pricing_partial_barrier_early_end+0x8f4>
movsd  0x8(%rsp),%xmm0
call   1090 <sqrt@plt>
xorpd  %xmm1,%xmm1
movsd  0x8(%rsp),%xmm0
ucomisd %xmm1,%xmm0
jae    1a75 <rq_pricing_partial_barrier_early_end+0x905>
movsd  0x8(%rsp),%xmm0
call   1090 <sqrt@plt>
movsd  0x58(%rsp),%xmm0
call   1070 <log@plt>
xorpd  %xmm0,%xmm0
movsd  0x8(%rsp),%xmm8
ucomisd %xmm0,%xmm8
jae    1aa8 <rq_pricing_partial_barrier_early_end+0x938>
movsd  0x8(%rsp),%xmm0
call   1090 <sqrt@plt>
xorpd  %xmm0,%xmm0
movsd  0x8(%rsp),%xmm8
ucomisd %xmm0,%xmm8
jae    1534 <rq_pricing_partial_barrier_early_end+0x3c4>
movsd  0x8(%rsp),%xmm0
call   1090 <sqrt@plt>
jmp    152d <rq_pricing_partial_barrier_early_end+0x3bd>

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

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