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

```asm
<besselpoly>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x18,%rsp
  movq   %xmm0,%rbp
  movq   %xmm1,%r12
  movsd  %xmm2,0x8(%rsp)
  ucomisd D73(%rip),%xmm0
  jp     L94
  jne    L94
  ucomisd D73(%rip),%xmm2
  jp     L7
  jne    L7
  movsd  D126(%rip),%xmm0
  addsd  %xmm0,%xmm1
  divsd  %xmm1,%xmm0
L21:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L94:
  pxor   %xmm0,%xmm0
  movsd  0x8(%rsp),%xmm6
  mov    $0x0,%ebx
  comisd %xmm6,%xmm0
  ja     L108
L63:
  movq   %rbp,%xmm0
  call   <log@plt>
  mulsd  0x8(%rsp),%xmm0
  call   <exp@plt>
  movq   %xmm0,%r13
  movsd  D126(%rip),%xmm0
  addsd  0x8(%rsp),%xmm0
  call   <cephes_Gamma@plt>
  movq   %r12,%xmm1
  addsd  0x8(%rsp),%xmm1
  addsd  D126(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movq   %r13,%xmm3
  divsd  %xmm0,%xmm3
  movq   %rbp,%xmm6
  xorpd  D133(%rip),%xmm6
  movq   %rbp,%xmm7
  mulsd  %xmm7,%xmm6
  pxor   %xmm0,%xmm0
  mov    $0x0,%eax
  movsd  D126(%rip),%xmm9
  movsd  D119(%rip),%xmm8
  movq   D18(%rip),%xmm7
L11:
  addsd  %xmm3,%xmm0
  lea    (%rax,%rax,1),%edx
  pxor   %xmm2,%xmm2
  cvtsi2sd %edx,%xmm2
  addsd  %xmm1,%xmm2
  pxor   %xmm5,%xmm5
  cvtsi2sd %eax,%xmm5
  addsd  0x8(%rsp),%xmm5
  addsd  %xmm9,%xmm5
  add    $0x1,%eax
  movapd %xmm3,%xmm11
  movapd %xmm6,%xmm10
  mulsd  %xmm2,%xmm10
  pxor   %xmm4,%xmm4
  cvtsi2sd %eax,%xmm4
  mulsd  %xmm5,%xmm4
  addsd  %xmm8,%xmm2
  mulsd  %xmm4,%xmm2
  movapd %xmm10,%xmm4
  divsd  %xmm2,%xmm4
  mulsd  %xmm4,%xmm3
  movapd %xmm3,%xmm2
  subsd  %xmm11,%xmm2
  divsd  %xmm3,%xmm2
  andpd  %xmm7,%xmm2
  comisd D62(%rip),%xmm2
  jbe    L146
  cmp    $0x3e7,%eax
  jle    L11
L146:
  test   %ebx,%ebx
  je     L21
  xorpd  D133(%rip),%xmm0
  jmp    L21
L108:
  movapd %xmm6,%xmm1
  movsd  D18(%rip),%xmm2
  movapd %xmm6,%xmm0
  andpd  %xmm2,%xmm0
  movsd  D86(%rip),%xmm3
  ucomisd %xmm0,%xmm3
  jbe    L23
  cvttsd2si %xmm6,%rax
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  movapd %xmm0,%xmm1
  cmpnlesd %xmm6,%xmm1
  movsd  D126(%rip),%xmm3
  andpd  %xmm3,%xmm1
  subsd  %xmm1,%xmm0
  andnpd %xmm6,%xmm2
  movapd %xmm0,%xmm1
  orpd   %xmm2,%xmm1
L23:
  movsd  0x8(%rsp),%xmm7
  ucomisd %xmm7,%xmm1
  jp     L4
  jne    L4
  movapd %xmm7,%xmm0
  xorpd  D133(%rip),%xmm0
  movsd  %xmm0,0x8(%rsp)
  cvttsd2si %xmm0,%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  lea    (%rax,%rdx,1),%ebx
  and    $0x1,%ebx
  sub    %edx,%ebx
  jmp    L63
L4:
  mov    $0x0,%ebx
  jmp    L63
L7:
  pxor   %xmm0,%xmm0
  jmp    L21
```

tool_calls: name: parse_data
arguments: label: D73
type_guessed: f64
name: parse_data
arguments: label: D126
type_guessed: f64
name: parse_data
arguments: label: D133
type_guessed: byte[16]
name: parse_data
arguments: label: D119
type_guessed: byte[8]
name: parse_data
arguments: label: D18
type_guessed: qword
name: parse_data
arguments: label: D62
type_guessed: byte[16]
name: parse_data
arguments: label: D86
type_guessed: byte[8]

tool: D73: 0

tool: D126: 1

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

tool: {"D119": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40]}

tool: D18: 9223372036854775807

tool: {"D62": [0x97,0xd4,0x46,0x46,0xf5,0x0e,0x67,0x3c,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f]}

tool: {"D86": [0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x43]}

assistant: ```c
double besselpoly(double a, double lambda, double nu) {
  int m, factor = 0;
  double Sm, relerr, Sol;
  double sum = 0.0;
  if (a == 0.0) {
    if (nu == 0.0)
      return 1.0 / (lambda + 1);
    else
      return 0.0;
  }
  if ((nu < 0) && (floor(nu) == nu)) {
    nu = -nu;
    factor = ((int)nu) % 2;
  }
  Sm = exp(nu * log(a)) / (cephes_Gamma(nu + 1) * (lambda + nu + 1));
  m = 0;
  do {
    sum += Sm;
    Sol = Sm;
    Sm *= -a * a * (lambda + nu + 1 + 2 * m) / ((nu + m + 1) * (m + 1) * (lambda + nu + 1 + 2 * m + 2));
    m++;
    relerr = fabs((Sm - Sol) / Sm);
  } while (relerr > 1.0e-17 && m < 1000);
  if (!factor)
    return sum;
  else
    return -sum;
}
```