user: 下面的汇编指令对应的C源代码是什么：

```asm
<bessel_i1>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x38,%rsp
  movsd  %xmm0,-0x38(%rbp)
  movsd  -0x38(%rbp),%xmm0
  movq   D192(%rip),%xmm1
  andpd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  D59(%rip),%xmm0
  comisd -0x20(%rbp),%xmm0
  jbe    L9
  movsd  -0x38(%rbp),%xmm0
  movsd  D59(%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  D172(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D5(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D165(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D204(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D56(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D101(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D61(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  -0x20(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  jmp    L34
L9:
  movsd  D59(%rip),%xmm0
  divsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D72(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D170(%rip),%xmm0
  subsd  %xmm1,%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  D19(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D49(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x28(%rbp),%xmm0
  movsd  D109(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D75(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  D43(%rip),%xmm1
  subsd  %xmm1,%xmm0
  mulsd  -0x18(%rbp),%xmm0
  movsd  D98(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x18(%rbp),%xmm1
  movsd  D193(%rip),%xmm0
  addsd  %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)
L34:
  pxor   %xmm0,%xmm0
  comisd -0x38(%rbp),%xmm0
  jbe    L31
  movsd  -0x28(%rbp),%xmm0
  movq   D105(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  jmp    L1
L31:
  movsd  -0x28(%rbp),%xmm0
L1:
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D192
type: qword
name: read_data
arguments: label: D59
type: f64
name: read_data
arguments: label: D172
type: byte[8]
name: read_data
arguments: label: D5
type: byte[8]
name: read_data
arguments: label: D165
type: byte[8]
name: read_data
arguments: label: D204
type: f64
name: read_data
arguments: label: D56
type: f64
name: read_data
arguments: label: D101
type: f64
name: read_data
arguments: label: D61
type: f64
name: read_data
arguments: label: D72
type: byte[8]
name: read_data
arguments: label: D170
type: byte[8]
name: read_data
arguments: label: D19
type: byte[8]
name: read_data
arguments: label: D49
type: byte[8]
name: read_data
arguments: label: D109
type: byte[8]
name: read_data
arguments: label: D75
type: byte[8]
name: read_data
arguments: label: D43
type: byte[8]
name: read_data
arguments: label: D98
type: byte[8]
name: read_data
arguments: label: D193
type: f64
name: read_data
arguments: label: D105
type: f32[2]

tool: D192: 9223372036854775807

tool: D59: 3.75

tool: {"D172": [0xd3,0xb0,0xad,0xd9,0xa9,0x3d,0x35,0x3f]}

tool: {"D5": [0x9c,0xe5,0x2e,0x99,0x95,0xb3,0x68,0x3f]}

tool: {"D165": [0x1a,0x12,0x5a,0x83,0xb5,0x39,0x9b,0x3f]}

tool: D204: 0.15084934

tool: D56: 0.51498869

tool: D101: 0.87890594

tool: D61: 0.5

tool: {"D72": [0x3b,0x50,0xc8,0x4a,0xa3,0x34,0x71,0x3f]}

tool: {"D170": [0x71,0x9c,0xa9,0x4a,0x3a,0x4e,0x92,0x3f]}

tool: {"D19": [0x50,0x93,0x11,0xfe,0xe2,0xa5,0x9d,0x3f]}

tool: {"D49": [0xd9,0x27,0x1d,0x38,0xa9,0x60,0x97,0x3f]}

tool: {"D109": [0xdc,0x3c,0x1f,0xaf,0x51,0x20,0x85,0x3f]}

tool: {"D75": [0x96,0x74,0x5a,0xd8,0x4f,0xd6,0x5a,0x3f]}

tool: {"D43": [0x3f,0x8c,0x94,0x56,0x11,0xa8,0x6d,0x3f]}

tool: {"D98": [0xbe,0xfe,0x1c,0xcd,0x2e,0x6b,0xa4,0x3f]}

tool: D193: 0.39894228

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

assistant: ```c
double bessel_i1(double x) {
  double ax, ans;
  double y;
  if ((ax = fabs(x)) < 3.75) {
    y = x / 3.75;
    y *= y;
    ans = ax * (0.5 + y * (0.87890594 + y * (0.51498869 + y * (0.15084934 + y * (0.2658733e-1 + y * (0.301532e-2 + y * 0.32411e-3))))));
  } else {
    y = 3.75 / ax;
    ans = 0.2282967e-1 + y * (-0.2895312e-1 + y * (0.1787654e-1 - y * 0.420059e-2));
    ans = 0.39894228 + y * (-0.3988024e-1 + y * (-0.362018e-2 + y * (0.163801e-2 + y * (-0.1031555e-1 + y * ans))));
    ans *= (exp(ax) / sqrt(ax));
  }
  return x < 0.0 ? -ans : ans;
}
```