user: Please show me the C implementation that matches the assembly code listed below:

```asm
<Sexv_new>:
  endbr64
  push   %r14
  push   %rbx
  sub    $0x38,%rsp
  movsd  %xmm0,(%rsp)
  movq   %xmm1,%r14
  movsd  %xmm2,0x8(%rsp)
  movapd %xmm2,%xmm1
  movq   %r14,%xmm0
  call   <Rgsquare@plt>
  mov    %eax,%edi
  call   <sqrt@plt>
  mulsd  (%rsp),%xmm0
  movsd  %xmm0,0x28(%rsp)
  movapd %xmm0,%xmm3
  mulsd  %xmm0,%xmm3
  movsd  %xmm3,0x10(%rsp)
  movq   %r14,%xmm0
  divsd  0x8(%rsp),%xmm0
  mov    D81(%rip),%rbx
  comisd D105(%rip),%xmm0
  ja     L23
L1:
  movsd  0x10(%rsp),%xmm0
  xorpd  D48(%rip),%xmm0
  call   <exp@plt>
  movapd %xmm0,%xmm2
  movsd  D65(%rip),%xmm0
  divsd  0x10(%rsp),%xmm0
  movapd %xmm0,%xmm1
  addsd  D94(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movsd  D40(%rip),%xmm1
  subsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm1
  movq   %rbx,%xmm0
  movsd  0x8(%rsp),%xmm7
  mulsd  %xmm7,%xmm0
  movq   %r14,%xmm5
  divsd  %xmm5,%xmm0
  mulsd  %xmm0,%xmm1
  movapd %xmm1,%xmm0
  divsd  D23(%rip),%xmm0
  movsd  %xmm0,0x20(%rsp)
  movapd %xmm7,%xmm2
  movq   %r14,%xmm1
  movsd  (%rsp),%xmm0
  call   <Sexv@plt>
  movsd  %xmm0,0x18(%rsp)
  movsd  (%rsp),%xmm4
  mulsd  D54(%rip),%xmm4
  movapd %xmm4,%xmm0
  movsd  0x8(%rsp),%xmm2
  movq   %r14,%xmm1
  call   <Sexv@plt>
  movsd  0x18(%rsp),%xmm6
  subsd  %xmm6,%xmm0
  movsd  (%rsp),%xmm1
  mulsd  D67(%rip),%xmm1
  divsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm0,%xmm1
  jbe    L38
  movsd  0x20(%rsp),%xmm0
  addsd  %xmm6,%xmm0
L11:
  add    $0x38,%rsp
  pop    %rbx
  pop    %r14
  ret
L23:
  movsd  D31(%rip),%xmm1
  call   <pow@plt>
  mulsd  D35(%rip),%xmm0
  movq   %xmm0,%rbx
  jmp    L1
L38:
  movsd  0x28(%rsp),%xmm0
  call   <w_WR@plt>
  movq   %xmm0,%rbx
  movsd  0x10(%rsp),%xmm0
  call   <Sdebye@plt>
  movapd %xmm0,%xmm1
  movsd  D81(%rip),%xmm0
  movq   %rbx,%xmm4
  subsd  %xmm4,%xmm0
  mulsd  %xmm1,%xmm0
  addsd  0x20(%rsp),%xmm0
  jmp    L11
```

tool_calls: name: extract_symbolic_data
arguments: label: D81
type_infered: f64
name: extract_symbolic_data
arguments: label: D105
type_infered: f64[2]
name: extract_symbolic_data
arguments: label: D48
type_infered: byte[16]
name: extract_symbolic_data
arguments: label: D65
type_infered: f64
name: extract_symbolic_data
arguments: label: D94
type_infered: f64
name: extract_symbolic_data
arguments: label: D40
type_infered: f64
name: extract_symbolic_data
arguments: label: D23
type_infered: f64
name: extract_symbolic_data
arguments: label: D54
type_infered: f64
name: extract_symbolic_data
arguments: label: D67
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D31
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D35
type_infered: f64

tool: D81: 1

tool: {"D105": [10.0,-0.44]}

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

tool: D65: 7

tool: D94: 11

tool: D40: 4

tool: D23: 15

tool: D54: 1.05

tool: {"D67": [0xa0,0x99,0x99,0x99,0x99,0x99,0xa9,0x3f]}

tool: {"D31": [0x29,0x5c,0x8f,0xc2,0xf5,0x28,0xdc,0xbf]}

tool: D35: 3.06

assistant: ```c
double Sexv_new(double q, double L, double b) {
  const double qr = q * sqrt(Rgsquare(L, b));
  const double qr2 = qr * qr;
  const double C = (L / b > 10.0) ? 3.06 * pow(L / b, -0.44) : 1.0;
  const double t9 = C * b / L * (4.0 - exp(-qr2) * (11.0 + 7.0 / qr2) + 7.0 / qr2) / 15.0;
  const double Sexv_orig = Sexv(q, L, b);
  const double del = 1.05;
  const double qdel = (Sexv(q * del, L, b) - Sexv_orig) / (q * (del - 1.0));
  if (qdel < 0) {
    return t9 + Sexv_orig;
  } else {
    const double w = w_WR(qr);
    const double t10 = Sdebye(qr * qr) * (1.0 - w);
    return t9 + t10;
  }
}
```