user: What is the c source code of the assembly code below?

```asm
<rq_pricing_chooser_simple>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x70,%rsp
  movsd  %xmm0,-0x28(%rbp)
  movsd  %xmm1,-0x30(%rbp)
  movsd  %xmm2,-0x38(%rbp)
  movsd  %xmm3,-0x40(%rbp)
  movsd  %xmm4,-0x48(%rbp)
  movsd  %xmm5,-0x50(%rbp)
  movsd  %xmm6,-0x58(%rbp)
  movsd  -0x28(%rbp),%xmm0
  divsd  -0x30(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x20(%rbp)
  movsd  -0x58(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  movsd  D17(%rip),%xmm1
  divsd  %xmm1,%xmm0
  addsd  -0x50(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  addsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  mov    -0x40(%rbp),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm1
  mulsd  -0x58(%rbp),%xmm1
  movsd  -0x60(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x50(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  -0x20(%rbp),%xmm1
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x38(%rbp),%xmm0
  movsd  D17(%rip),%xmm2
  divsd  %xmm2,%xmm0
  addsd  %xmm0,%xmm1
  movsd  %xmm1,-0x60(%rbp)
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm3
  mulsd  -0x58(%rbp),%xmm3
  movapd %xmm3,%xmm1
  movsd  -0x60(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x50(%rbp),%xmm0
  subsd  -0x48(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm4
  mulsd  -0x28(%rbp),%xmm4
  movsd  %xmm4,-0x60(%rbp)
  mov    -0x10(%rbp),%rax
  movq   %rax,%xmm0
  call   <rq_pricing_cumul_norm_dist@plt>
  mulsd  -0x60(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x48(%rbp),%xmm0
  movq   D33(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movapd %xmm0,%xmm5
  mulsd  -0x40(%rbp),%xmm5
  movq   %xmm5,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm6
  mulsd  -0x30(%rbp),%xmm6
  movsd  %xmm6,-0x68(%rbp)
  mov    -0x40(%rbp),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm1
  mulsd  -0x58(%rbp),%xmm1
  movsd  -0x10(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm1,%xmm2
  movq   %xmm2,%rax
  movq   %rax,%xmm0
  call   <rq_pricing_cumul_norm_dist@plt>
  mulsd  -0x68(%rbp),%xmm0
  movsd  -0x60(%rbp),%xmm7
  subsd  %xmm0,%xmm7
  movsd  %xmm7,-0x60(%rbp)
  movsd  -0x50(%rbp),%xmm0
  subsd  -0x48(%rbp),%xmm0
  mulsd  -0x40(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm3
  mulsd  -0x28(%rbp),%xmm3
  movsd  %xmm3,-0x68(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movq   D33(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <rq_pricing_cumul_norm_dist@plt>
  mulsd  -0x68(%rbp),%xmm0
  movsd  -0x60(%rbp),%xmm7
  subsd  %xmm0,%xmm7
  movsd  %xmm7,-0x60(%rbp)
  movsd  -0x48(%rbp),%xmm0
  movq   D33(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mulsd  -0x40(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm5
  mulsd  -0x30(%rbp),%xmm5
  movsd  %xmm5,-0x68(%rbp)
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  mulsd  -0x58(%rbp),%xmm0
  subsd  -0x8(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <rq_pricing_cumul_norm_dist@plt>
  mulsd  -0x68(%rbp),%xmm0
  addsd  -0x60(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D17
type_guessed: f64
name: extract_symbolic_data
arguments: label: D33
type_guessed: byte[8]

tool: D17: 2

tool: {"D33": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80]}

assistant: ```c
double rq_pricing_chooser_simple(double S, double X, double t1, double t2, double r, double b, double v) {
  double log_S_over_X = log(S / X);
  double v_sqr = v * v;
  double d = (log_S_over_X + (b + v_sqr / 2.0) * t2) / (v * sqrt(t2));
  double y = (log_S_over_X + b * t2 + v_sqr * t1 / 2.0) / (v * sqrt(t1));
  return S * exp((b - r) * t2) * rq_pricing_cumul_norm_dist(d) - X * exp(-r * t2) * rq_pricing_cumul_norm_dist(d - v * sqrt(t2)) - S * exp((b - r) * t2) * rq_pricing_cumul_norm_dist(-y) + X * exp(-r * t2) * rq_pricing_cumul_norm_dist(-y + v * sqrt(t1));
}
```