user: What would the C source look like for the assembly code provided here?

```asm
<xexp>:
  endbr64
  push   %rbp
  sub    $0x40,%rsp
  movsd  %xmm0,0x8(%rsp)
  mulsd  D107(%rip),%xmm0
  call   <rintk@plt>
  pxor   %xmm3,%xmm3
  movsd  0x8(%rsp),%xmm5
  movsd  D20(%rip),%xmm1
  cvtsi2sd %eax,%xmm3
  mov    %eax,%ebp
  movapd %xmm5,%xmm2
  movsd  %xmm5,0x38(%rsp)
  movapd %xmm3,%xmm0
  movsd  %xmm3,0x8(%rsp)
  call   <mla@plt>
  movsd  0x8(%rsp),%xmm3
  movsd  D130(%rip),%xmm1
  movapd %xmm0,%xmm2
  movapd %xmm3,%xmm0
  call   <mla@plt>
  movsd  D158(%rip),%xmm2
  movsd  D119(%rip),%xmm1
  movapd %xmm0,%xmm3
  movsd  %xmm0,0x8(%rsp)
  mulsd  %xmm0,%xmm3
  movapd %xmm3,%xmm6
  movsd  %xmm3,0x18(%rsp)
  mulsd  %xmm3,%xmm6
  movapd %xmm6,%xmm9
  movsd  %xmm6,0x30(%rsp)
  mulsd  %xmm6,%xmm9
  movsd  %xmm9,0x28(%rsp)
  call   <mla@plt>
  movsd  0x8(%rsp),%xmm4
  movsd  D147(%rip),%xmm2
  movsd  D139(%rip),%xmm1
  movsd  %xmm0,0x10(%rsp)
  movapd %xmm4,%xmm0
  call   <mla@plt>
  movsd  0x10(%rsp),%xmm7
  movsd  0x18(%rsp),%xmm3
  movapd %xmm0,%xmm1
  movapd %xmm7,%xmm2
  movapd %xmm3,%xmm0
  call   <mla@plt>
  movsd  0x8(%rsp),%xmm4
  movsd  D71(%rip),%xmm2
  movsd  D167(%rip),%xmm1
  movsd  %xmm0,0x20(%rsp)
  movapd %xmm4,%xmm0
  call   <mla@plt>
  movsd  0x8(%rsp),%xmm4
  movsd  D140(%rip),%xmm2
  movsd  D66(%rip),%xmm1
  movsd  %xmm0,0x10(%rsp)
  movapd %xmm4,%xmm0
  call   <mla@plt>
  movsd  0x10(%rsp),%xmm8
  movsd  0x18(%rsp),%xmm3
  movapd %xmm0,%xmm1
  movapd %xmm8,%xmm2
  movapd %xmm3,%xmm0
  call   <mla@plt>
  movsd  0x20(%rsp),%xmm7
  movsd  0x30(%rsp),%xmm6
  movapd %xmm0,%xmm1
  movapd %xmm7,%xmm2
  movapd %xmm6,%xmm0
  call   <mla@plt>
  movsd  0x8(%rsp),%xmm4
  movsd  D56(%rip),%xmm2
  movsd  D125(%rip),%xmm1
  movsd  %xmm0,0x10(%rsp)
  movapd %xmm4,%xmm0
  call   <mla@plt>
  movsd  0x10(%rsp),%xmm6
  movsd  0x28(%rsp),%xmm9
  movapd %xmm0,%xmm1
  movapd %xmm6,%xmm2
  movapd %xmm9,%xmm0
  call   <mla@plt>
  movsd  0x8(%rsp),%xmm4
  movsd  D65(%rip),%xmm2
  movapd %xmm4,%xmm1
  call   <mla@plt>
  movsd  0x18(%rsp),%xmm3
  movsd  0x8(%rsp),%xmm4
  mov    %ebp,%edi
  mulsd  %xmm0,%xmm3
  addsd  %xmm4,%xmm3
  addsd  D120(%rip),%xmm3
  movapd %xmm3,%xmm0
  call   <ldexp2k@plt>
  movsd  0x38(%rsp),%xmm5
  comisd D166(%rip),%xmm5
  jbe    L18
  movsd  D32(%rip),%xmm0
L18:
  movsd  D40(%rip),%xmm1
  comisd %xmm5,%xmm1
  jbe    L12
  pxor   %xmm0,%xmm0
L12:
  add    $0x40,%rsp
  pop    %rbp
  ret
```

tool_calls: name: parse_data
arguments: label: D107
data_type: f64
name: parse_data
arguments: label: D20
data_type: byte[8]
name: parse_data
arguments: label: D130
data_type: byte[8]
name: parse_data
arguments: label: D158
data_type: f64
name: parse_data
arguments: label: D119
data_type: f64
name: parse_data
arguments: label: D147
data_type: f64
name: parse_data
arguments: label: D139
data_type: f64
name: parse_data
arguments: label: D71
data_type: f64
name: parse_data
arguments: label: D167
data_type: byte[8]
name: parse_data
arguments: label: D140
data_type: byte[8]
name: parse_data
arguments: label: D66
data_type: byte[8]
name: parse_data
arguments: label: D56
data_type: byte[8]
name: parse_data
arguments: label: D125
data_type: byte[8]
name: parse_data
arguments: label: D65
data_type: f64
name: parse_data
arguments: label: D120
data_type: byte[8]
name: parse_data
arguments: label: D166
data_type: f64[2]
name: parse_data
arguments: label: D32
data_type: byte[8]
name: parse_data
arguments: label: D40
data_type: byte[8]

tool: D107: 1.4426950408889634

tool: {"D20": [0x00,0x30,0xfa,0xfe,0x42,0x2e,0xe6,0xbf]}

tool: {"D130": [0xe6,0xec,0x78,0xf2,0x6a,0xde,0x53,0xbd]}

tool: D158: 0.16666666666666685

tool: D119: 0.041666666666666505

tool: D147: 0.008333333333316527

tool: D139: 0.001388888888897745

tool: D71: 0.0001984126989605092

tool: {"D167": [0x9e,0x87,0x80,0x17,0xa0,0x01,0xfa,0x3e]}

tool: {"D140": [0xce,0xe6,0x29,0x16,0xdf,0x1d,0xc7,0x3e]}

tool: {"D66": [0x73,0xd5,0xfc,0xe0,0x52,0x7e,0x92,0x3e]}

tool: {"D56": [0x0a,0x80,0xcc,0x28,0x8a,0xf6,0x5a,0x3e]}

tool: {"D125": [0x75,0xd7,0xec,0xc4,0xe4,0xf0,0x21,0x3e]}

tool: D65: 0.5

tool: {"D120": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: {"D166": [709.7827111495575,-1000.0]}

tool: {"D32": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x7f]}

tool: {"D40": [0x00,0x00,0x00,0x00,0x00,0x40,0x8f,0xc0]}

assistant: ```c
__attribute__((visibility("default"))) const double xexp(double d) {
  int q = (int)rintk(d * 1.442695040888963407359924681001892137426645954152985934135449406931);
  double s, u;
  s = mla(q, -.69314718055966295651160180568695068359375, d);
  s = mla(q, -.28235290563031577122588448175013436025525412068e-12, s);
  double s2 = s * s, s4 = s2 * s2, s8 = s4 * s4;
  u = mla(s8, mla(s, (2.08860621107283687536341e-09), (2.51112930892876518610661e-08)), mla(s4, mla(s2, mla(s, (2.75573911234900471893338e-07), (2.75572362911928827629423e-06)), mla(s, (2.4801587159235472998791e-05), (0.000198412698960509205564975))), mla(s2, mla(s, (0.00138888888889774492207962), (0.00833333333331652721664984)), mla(s, (0.0416666666666665047591422), (0.166666666666666851703837)))));
  u = mla(u, s, +0.5);
  u = s * s * u + s + 1;
  u = ldexp2k(u, q);
  if (d > 709.78271114955742909217217426)
    u = __builtin_inf();
  if (d < -1000)
    u = 0;
  return u;
}
```