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

```asm
<plnkin>:
  endbr64
  push   %rbx
  sub    $0x10,%rsp
  mulsd  %xmm1,%xmm0
  movsd  D117(%rip),%xmm2
  divsd  %xmm0,%xmm2
  movq   %xmm2,%rbx
  movapd %xmm2,%xmm5
  mulsd  D27(%rip),%xmm5
  movsd  %xmm5,(%rsp)
  movapd %xmm5,%xmm0
  call   <exp@plt>
  movsd  %xmm0,0x8(%rsp)
  movq   %rbx,%xmm3
  comisd D97(%rip),%xmm3
  jae    L36
  comisd D24(%rip),%xmm3
  jae    L57
  comisd D68(%rip),%xmm3
  jb     L79
  movq   %rbx,%xmm0
  mulsd  D47(%rip),%xmm0
  addsd  D9(%rip),%xmm0
  cvttsd2si %xmm0,%rbx
L42:
  mov    %ebx,%eax
  neg    %eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  (%rsp),%xmm0
  call   <exp@plt>
  lea    -0x1(%rbx),%eax
  pxor   %xmm3,%xmm3
  test   %eax,%eax
  jg     L40
  jmp    L55
L79:
  movq   %rbx,%xmm0
  mulsd  D29(%rip),%xmm0
  addsd  D25(%rip),%xmm0
  cvttsd2si %xmm0,%rbx
  jmp    L42
L36:
  mov    $0x4,%ebx
L14:
  mov    %ebx,%eax
  neg    %eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  (%rsp),%xmm0
  call   <exp@plt>
  lea    -0x1(%rbx),%eax
L40:
  pxor   %xmm3,%xmm3
  movsd  D11(%rip),%xmm5
  movsd  D7(%rip),%xmm4
L9:
  mulsd  0x8(%rsp),%xmm0
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
  mulsd  (%rsp),%xmm2
  mov    %eax,%edx
  imul   %eax,%edx
  movapd %xmm2,%xmm1
  addsd  %xmm5,%xmm1
  mulsd  %xmm2,%xmm1
  addsd  %xmm4,%xmm1
  mulsd  %xmm2,%xmm1
  addsd  %xmm4,%xmm1
  mulsd  %xmm0,%xmm1
  imul   %edx,%edx
  pxor   %xmm2,%xmm2
  cvtsi2sd %edx,%xmm2
  divsd  %xmm2,%xmm1
  addsd  %xmm1,%xmm3
  sub    $0x1,%eax
  test   %eax,%eax
  jg     L9
L55:
  mulsd  D51(%rip),%xmm3
  movapd %xmm3,%xmm0
  add    $0x10,%rsp
  pop    %rbx
  ret
L57:
  mov    $0x2,%ebx
  jmp    L14
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D117
type: f64
name: extract_symbolic_data
arguments: data_label: D27
type: f64
name: extract_symbolic_data
arguments: data_label: D97
type: f64[2]
name: extract_symbolic_data
arguments: data_label: D24
type: f64[2]
name: extract_symbolic_data
arguments: data_label: D68
type: f64[2]
name: extract_symbolic_data
arguments: data_label: D47
type: byte[8]
name: extract_symbolic_data
arguments: data_label: D9
type: f64
name: extract_symbolic_data
arguments: data_label: D29
type: byte[8]
name: extract_symbolic_data
arguments: data_label: D25
type: f64
name: extract_symbolic_data
arguments: data_label: D11
type: f64
name: extract_symbolic_data
arguments: data_label: D7
type: f64
name: extract_symbolic_data
arguments: data_label: D51
type: f64

tool: D117: 0.01

tool: D27: 1.43879

tool: {"D97": [7.4,4.2]}

tool: {"D24": [4.2,0.45]}

tool: {"D68": [0.45,-2.3]}

tool: {"D47": [0x66,0x66,0x66,0x66,0x66,0x66,0x02,0xc0]}

tool: D9: 12.96

tool: {"D29": [0x14,0xae,0x47,0xe1,0x7a,0x54,0x47,0xc0]}

tool: D25: 33

tool: D11: 3

tool: D7: 6

tool: D51: 0.15399

assistant: ```c
double plnkin(double lambda, double T) {
  double c2 = 1.43879;
  double y = 0.01 / (lambda * T);
  double z = c2 * y;
  double a2 = exp(z);
  double s = 0;
  int x = 0;
  if (y >= 7.4)
    x = 4;
  else if (y >= 4.2)
    x = 2;
  else if (y >= 0.45)
    x = (unsigned)(-2.3 * y + 12.96);
  else
    x = (unsigned)(-46.66 * y + 33.);
  double a1 = exp(-x * z);
  while (--x > 0) {
    a1 *= a2;
    double arg = x * z;
    s += a1 * (6. + arg * (6. + arg * (3. + arg))) / ((((x) * (x))) * (((x) * (x))));
  }
  return 0.15399 * s;
}
```