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

```asm
<bessj0>:
  endbr64
  sub    $0x38,%rsp
  movss  %xmm0,0x8(%rsp)
  call   <fabs@plt>
  movss  D177(%rip),%xmm4
  comiss %xmm0,%xmm4
  jbe    L29
  movss  0x8(%rsp),%xmm1
  movsd  D71(%rip),%xmm0
  movsd  D77(%rip),%xmm2
  mulss  %xmm1,%xmm1
  cvtss2sd %xmm1,%xmm1
  mulsd  %xmm1,%xmm0
  addsd  %xmm1,%xmm2
  addsd  D184(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D194(%rip),%xmm2
  subsd  D54(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D40(%rip),%xmm2
  addsd  D154(%rip),%xmm0
  mulsd  %xmm1,%xmm2
  mulsd  %xmm1,%xmm0
  addsd  D233(%rip),%xmm2
  subsd  D29(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm1
  addsd  D119(%rip),%xmm0
  addsd  D56(%rip),%xmm1
  add    $0x38,%rsp
  divsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  ret
  nop
L29:
  divss  %xmm0,%xmm4
  pxor   %xmm1,%xmm1
  movsd  D182(%rip),%xmm3
  movsd  D93(%rip),%xmm2
  cvtss2sd %xmm0,%xmm1
  movsd  D219(%rip),%xmm0
  movapd %xmm1,%xmm6
  subsd  D53(%rip),%xmm6
  movaps %xmm4,%xmm5
  mulss  %xmm4,%xmm5
  cvtss2sd %xmm5,%xmm5
  mulsd  %xmm5,%xmm0
  mulsd  %xmm5,%xmm2
  subsd  D110(%rip),%xmm2
  subsd  %xmm0,%xmm3
  movsd  D55(%rip),%xmm0
  mulsd  %xmm5,%xmm2
  addsd  D121(%rip),%xmm2
  divsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  mulsd  %xmm5,%xmm2
  subsd  D111(%rip),%xmm2
  mulsd  %xmm5,%xmm2
  addsd  D176(%rip),%xmm2
  movsd  %xmm2,0x10(%rsp)
  movapd %xmm3,%xmm2
  mulsd  %xmm5,%xmm2
  subsd  D14(%rip),%xmm2
  mulsd  %xmm5,%xmm2
  addsd  D102(%rip),%xmm2
  mulsd  %xmm5,%xmm2
  subsd  D37(%rip),%xmm2
  movsd  %xmm2,0x18(%rsp)
  ucomisd %xmm0,%xmm1
  ja     L9
  sqrtsd %xmm0,%xmm0
  movsd  %xmm0,0x8(%rsp)
L2:
  movapd %xmm6,%xmm0
  movss  %xmm4,0x28(%rsp)
  movsd  %xmm6,0x20(%rsp)
  call   <cos@plt>
  movsd  0x10(%rsp),%xmm1
  movsd  0x20(%rsp),%xmm6
  mulsd  %xmm0,%xmm1
  movapd %xmm6,%xmm0
  movsd  %xmm1,0x10(%rsp)
  call   <sin@plt>
  movss  0x28(%rsp),%xmm4
  pxor   %xmm2,%xmm2
  movsd  0x10(%rsp),%xmm1
  mulss  %xmm4,%xmm0
  cvtss2sd %xmm0,%xmm2
  mulsd  0x18(%rsp),%xmm2
  movsd  0x8(%rsp),%xmm0
  add    $0x38,%rsp
  subsd  %xmm2,%xmm1
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  ret
L9:
  movsd  %xmm6,0x28(%rsp)
  movss  %xmm4,0x20(%rsp)
  call   <sqrt@plt>
  movsd  0x28(%rsp),%xmm6
  movss  0x20(%rsp),%xmm4
  movsd  %xmm0,0x8(%rsp)
  jmp    L2
```

tool_calls: name: extract_symbolic_data
arguments: label: D177
datatype: f32
name: extract_symbolic_data
arguments: label: D71
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D77
datatype: f64
name: extract_symbolic_data
arguments: label: D184
datatype: f64
name: extract_symbolic_data
arguments: label: D194
datatype: f64
name: extract_symbolic_data
arguments: label: D54
datatype: f64
name: extract_symbolic_data
arguments: label: D40
datatype: f64
name: extract_symbolic_data
arguments: label: D154
datatype: f64
name: extract_symbolic_data
arguments: label: D233
datatype: f64
name: extract_symbolic_data
arguments: label: D29
datatype: f64
name: extract_symbolic_data
arguments: label: D119
datatype: f64
name: extract_symbolic_data
arguments: label: D56
datatype: f64
name: extract_symbolic_data
arguments: label: D182
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D93
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D219
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D53
datatype: f64
name: extract_symbolic_data
arguments: label: D110
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D55
datatype: f64
name: extract_symbolic_data
arguments: label: D121
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D111
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D176
datatype: f64
name: extract_symbolic_data
arguments: label: D14
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D102
datatype: byte[8]
name: extract_symbolic_data
arguments: label: D37
datatype: byte[8]

tool: D177: 8

tool: {"D71": [0x22,0xdb,0x9e,0xc5,0xf7,0x1c,0x67,0xc0]}

tool: D77: 267.8532712

tool: D184: 77392.33017

tool: D194: 59272.64853

tool: D54: 11214424.18

tool: D40: 9494680.718

tool: D154: 651619640.7

tool: D233: 1029532985

tool: D29: 13362590354

tool: D119: 57568490574

tool: D56: 57568490411

tool: {"D182": [0xa9,0x26,0x97,0x8c,0x78,0x92,0xa9,0x3e]}

tool: {"D93": [0x61,0x28,0x29,0xab,0x8a,0x1a,0x8c,0x3e]}

tool: {"D219": [0x29,0xdf,0xd0,0xe7,0xe4,0x18,0x79,0x3e]}

tool: D53: 0.785398164

tool: {"D110": [0x51,0x9c,0x29,0x90,0x87,0x64,0xc1,0x3e]}

tool: D55: 0.636619772

tool: {"D121": [0x37,0x0f,0x34,0x3e,0x65,0xac,0xfc,0x3e]}

tool: {"D111": [0x0a,0x9f,0x7f,0x81,0xfb,0xff,0x51,0x3f]}

tool: D176: 1

tool: {"D14": [0xfc,0xfb,0x06,0xcd,0xc9,0xfc,0xdc,0x3e]}

tool: {"D102": [0x61,0xa5,0x1a,0x7e,0xec,0xbf,0x22,0x3f]}

tool: {"D37": [0x02,0x32,0x48,0xfe,0xff,0xff,0x8f,0x3f]}

assistant: ```c
float bessj0(float x) {
  float ax, z;
  double xx, y, ans, ans1, ans2;
  if ((ax = fabs(x)) < 8.0) {
    y = x * x;
    ans1 = 57568490574.0 + y * (-13362590354.0 + y * (651619640.7 + y * (-11214424.18 + y * (77392.33017 + y * (-184.9052456)))));
    ans2 = 57568490411.0 + y * (1029532985.0 + y * (9494680.718 + y * (59272.64853 + y * (267.8532712 + y * 1.0))));
    ans = ans1 / ans2;
  } else {
    z = 8.0 / ax;
    y = z * z;
    xx = ax - 0.785398164;
    ans1 = 1.0 + y * (-0.1098628627e-2 + y * (0.2734510407e-4 + y * (-0.2073370639e-5 + y * 0.2093887211e-6)));
    ans2 = -0.1562499995e-1 + y * (0.1430488765e-3 + y * (-0.6911147651e-5 + y * (0.7621095161e-6 - y * 0.934945152e-7)));
    ans = sqrt(0.636619772 / ax) * (cos(xx) * ans1 - z * sin(xx) * ans2);
  }
  return ans;
}
```