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

```asm
<airBesselI1>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x38,%rsp
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x38(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L45
  movsd  -0x38(%rbp),%xmm0
  jmp    L36
L45:
  movsd  -0x38(%rbp),%xmm0
  movq   D110(%rip),%xmm1
  xorpd  %xmm1,%xmm0
L36:
  movsd  %xmm0,-0x20(%rbp)
  movsd  D163(%rip),%xmm0
  comisd -0x20(%rbp),%xmm0
  jbe    L32
  movsd  -0x38(%rbp),%xmm0
  movsd  D145(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D165(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D20(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D125(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D19(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D53(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D7(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  -0x18(%rbp),%xmm2
  movsd  D162(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movsd  D96(%rip),%xmm1
  subsd  %xmm2,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D229(%rip),%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x18(%rbp),%xmm2
  movsd  D196(%rip),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  jmp    L59
L32:
  movsd  D145(%rip),%xmm0
  divsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D186(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D197(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  D37(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D18(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  D226(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D141(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  -0x18(%rbp),%xmm2
  movsd  D117(%rip),%xmm1
  mulsd  %xmm1,%xmm2
  movsd  D46(%rip),%xmm1
  subsd  %xmm2,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D34(%rip),%xmm2
  subsd  %xmm2,%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x18(%rbp),%xmm2
  movsd  D196(%rip),%xmm1
  addsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  mov    -0x20(%rbp),%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movq   %xmm0,%rbx
  mov    -0x20(%rbp),%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movq   %rbx,%xmm1
  divsd  %xmm0,%xmm1
  movsd  -0x28(%rbp),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
L59:
  pxor   %xmm0,%xmm0
  comisd -0x38(%rbp),%xmm0
  jbe    L53
  movsd  -0x28(%rbp),%xmm0
  movq   D110(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  jmp    L41
L53:
  movsd  -0x28(%rbp),%xmm0
L41:
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: parse_data
arguments: tag: D110
type_guessed: f32[2]
name: parse_data
arguments: tag: D163
type_guessed: f64
name: parse_data
arguments: tag: D145
type_guessed: f64
name: parse_data
arguments: tag: D165
type_guessed: f64
name: parse_data
arguments: tag: D20
type_guessed: f64
name: parse_data
arguments: tag: D125
type_guessed: f64
name: parse_data
arguments: tag: D19
type_guessed: f64
name: parse_data
arguments: tag: D53
type_guessed: f64
name: parse_data
arguments: tag: D7
type_guessed: f64
name: parse_data
arguments: tag: D162
type_guessed: f64
name: parse_data
arguments: tag: D96
type_guessed: f64
name: parse_data
arguments: tag: D229
type_guessed: f64
name: parse_data
arguments: tag: D196
type_guessed: f32[2]
name: parse_data
arguments: tag: D186
type_guessed: f64
name: parse_data
arguments: tag: D197
type_guessed: f64
name: parse_data
arguments: tag: D37
type_guessed: f64
name: parse_data
arguments: tag: D18
type_guessed: f64
name: parse_data
arguments: tag: D226
type_guessed: f64
name: parse_data
arguments: tag: D141
type_guessed: f64
name: parse_data
arguments: tag: D117
type_guessed: f64
name: parse_data
arguments: tag: D46
type_guessed: f64
name: parse_data
arguments: tag: D34
type_guessed: f64

tool: {"D110": [0.0,-0.0]}

tool: D163: 6.449305566387246

tool: D145: 6.45

tool: D165: 0.0792323006694466

tool: D20: 0.6092719473097832

tool: D125: 2.0569974969268707

tool: D19: 3.3554331305863787

tool: D53: 2.370331499358438

tool: D7: 0.4999999998235554

tool: D162: 0.006777712190188699

tool: D96: 0.08677361454866868

tool: D229: 0.4596495788370524

tool: {"D196": [0.0,1.875]}

tool: D186: 7.03849046144657e-05

tool: D197: 0.00248933264397244

tool: D37: 0.0766281832045885

tool: D18: 0.40311772245257

tool: D226: 0.669339325353065

tool: D141: 0.398942280267484

tool: D117: 0.142824922601647

tool: D46: 0.919118239717915

tool: D34: 1.61964537617937

assistant: ```c
double airBesselI1(double x) {
  double b, ax, y;
  ax = ((x) > 0.0f ? (x) : -(x));
  if (ax < 6.449305566387246) {
    y = x / 6.45;
    y *= y;
    b = ax * (0.4999999998235554 + y * (2.370331499358438 + y * (3.3554331305863787 + y * (2.0569974969268707 + (0.6092719473097832 + 0.0792323006694466 * y) * y)))) / (1 + y * (-0.4596495788370524 + (0.08677361454866868 - 0.006777712190188699 * y) * y));
  } else {
    y = 6.45 / ax;
    b = (0.398942280267484 + y * (-0.669339325353065 + y * (0.40311772245257 + y * (-0.0766281832045885 + (0.00248933264397244 + 0.0000703849046144657 * y) * y)))) / (1 + y * (-1.61964537617937 + (0.919118239717915 - 0.142824922601647 * y) * y));
    b *= exp(ax) / sqrt(ax);
  }
  return x < 0.0 ? -b : b;
}
```