user: 这段汇编代码用C语言表示是什么样的？

```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 D140(%rip),%xmm0
  jp     L54
  jne    L54
  ucomisd D140(%rip),%xmm2
  jp     L100
  jne    L100
  movsd  D46(%rip),%xmm0
  addsd  %xmm0,%xmm1
  divsd  %xmm1,%xmm0
L8:
  add    $0x18,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L54:
  pxor   %xmm0,%xmm0
  movsd  0x8(%rsp),%xmm6
  mov    $0x0,%ebx
  comisd %xmm6,%xmm0
  ja     L145
L119:
  movq   %rbp,%xmm0
  call   <log@plt>
  mulsd  0x8(%rsp),%xmm0
  call   <exp@plt>
  movq   %xmm0,%r13
  movsd  D46(%rip),%xmm0
  addsd  0x8(%rsp),%xmm0
  call   <Gamma@plt>
  movq   %r12,%xmm1
  addsd  0x8(%rsp),%xmm1
  addsd  D46(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movq   %r13,%xmm3
  divsd  %xmm0,%xmm3
  movq   %rbp,%xmm6
  xorpd  D49(%rip),%xmm6
  movq   %rbp,%xmm7
  mulsd  %xmm7,%xmm6
  pxor   %xmm0,%xmm0
  mov    $0x0,%eax
  movsd  D46(%rip),%xmm9
  movsd  D73(%rip),%xmm8
  movq   D59(%rip),%xmm7
L134:
  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 D115(%rip),%xmm2
  jbe    L10
  cmp    $0x3e7,%eax
  jle    L134
L10:
  test   %ebx,%ebx
  je     L8
  xorpd  D49(%rip),%xmm0
  jmp    L8
L145:
  movapd %xmm6,%xmm1
  movsd  D59(%rip),%xmm2
  movapd %xmm6,%xmm0
  andpd  %xmm2,%xmm0
  movsd  D58(%rip),%xmm3
  ucomisd %xmm0,%xmm3
  jbe    L93
  cvttsd2si %xmm6,%rax
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
  movapd %xmm0,%xmm1
  cmpnlesd %xmm6,%xmm1
  movsd  D46(%rip),%xmm3
  andpd  %xmm3,%xmm1
  subsd  %xmm1,%xmm0
  andnpd %xmm6,%xmm2
  movapd %xmm0,%xmm1
  orpd   %xmm2,%xmm1
L93:
  movsd  0x8(%rsp),%xmm7
  ucomisd %xmm7,%xmm1
  jp     L3
  jne    L3
  movapd %xmm7,%xmm0
  xorpd  D49(%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    L119
L3:
  mov    $0x0,%ebx
  jmp    L119
L100:
  pxor   %xmm0,%xmm0
  jmp    L8
```

tool_calls: name: extract_symbolic_data
arguments: tag: D140
datatype: f64
name: extract_symbolic_data
arguments: tag: D46
datatype: f64
name: extract_symbolic_data
arguments: tag: D49
datatype: byte[16]
name: extract_symbolic_data
arguments: tag: D73
datatype: byte[8]
name: extract_symbolic_data
arguments: tag: D59
datatype: qword
name: extract_symbolic_data
arguments: tag: D115
datatype: byte[16]
name: extract_symbolic_data
arguments: tag: D58
datatype: byte[8]

tool: D140: 0

tool: D46: 1

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

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

tool: D59: 9223372036854775807

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

tool: {"D58": [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)) / (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;
}
```