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

```asm
<BesselI0>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  movsd  %xmm0,-0x28(%rbp)
  movsd  D53(%rip),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x28(%rbp),%xmm0
  mulsd  %xmm0,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D38(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D44(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D74(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D49(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D19(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D80(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D71(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x8(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movsd  D24(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  -0x18(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  pop    %rbp
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D53
data_type: byte[8]
name: retrieve_data
arguments: data_tag: D38
data_type: f64
name: retrieve_data
arguments: data_tag: D44
data_type: f64
name: retrieve_data
arguments: data_tag: D74
data_type: f64
name: retrieve_data
arguments: data_tag: D49
data_type: f64
name: retrieve_data
arguments: data_tag: D19
data_type: f64
name: retrieve_data
arguments: data_tag: D80
data_type: f64
name: retrieve_data
arguments: data_tag: D71
data_type: f64
name: retrieve_data
arguments: data_tag: D24
data_type: f64

tool: {"D53": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: D38: 4

tool: D44: 64

tool: D74: 2304

tool: D49: 147456

tool: D19: 14745600

tool: D80: 2123366400

tool: D71: 416179814400

tool: D24: 106542032486400

assistant: ```c
double BesselI0(double x) {
  double sum, xx, x2;
  sum = 1;
  x2 = x * x;
  xx = x2;
  sum += xx / 4.0;
  xx *= x2;
  sum += xx / 64.0;
  xx *= x2;
  sum += xx / 2304.0;
  xx *= x2;
  sum += xx / 147456.0;
  xx *= x2;
  sum += xx / 14745600.0;
  xx *= x2;
  sum += xx / 2123366400.0;
  xx *= x2;
  sum += xx / 416179814400.0;
  xx *= x2;
  sum += xx / 106542032486400.0;
  return (sum);
}
```