user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<bessj1>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  movss  %xmm0,-0x34(%rbp)
  mov    -0x34(%rbp),%eax
  movd   %eax,%xmm0
  call   <fabs@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x30(%rbp)
  movss  D230(%rip),%xmm0
  comiss -0x30(%rbp),%xmm0
  jbe    L14
  movss  -0x34(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  cvtss2sd %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0x34(%rbp),%xmm1
  movsd  -0x20(%rbp),%xmm2
  movsd  D169(%rip),%xmm0
  mulsd  %xmm0,%xmm2
  movsd  D215(%rip),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  D141(%rip),%xmm2
  subsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x20(%rbp),%xmm2
  movsd  D16(%rip),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  D118(%rip),%xmm2
  subsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x20(%rbp),%xmm2
  movsd  D147(%rip),%xmm0
  addsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x20(%rbp),%xmm1
  movsd  D185(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D221(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D223(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D89(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D15(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x10(%rbp),%xmm0
  divsd  -0x8(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  jmp    L27
L14:
  movss  D230(%rip),%xmm0
  divss  -0x30(%rbp),%xmm0
  movss  %xmm0,-0x2c(%rbp)
  movss  -0x2c(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  cvtss2sd %xmm0,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0x30(%rbp),%xmm0
  movsd  D38(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x20(%rbp),%xmm1
  movsd  D43(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D200(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  D228(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D92(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D238(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x20(%rbp),%xmm1
  movsd  D131(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D205(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D181(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  D79(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movsd  D68(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  pxor   %xmm1,%xmm1
  cvtss2sd -0x30(%rbp),%xmm1
  movsd  D132(%rip),%xmm0
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <sqrt@plt>
  movsd  %xmm0,-0x40(%rbp)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm3
  mulsd  -0x10(%rbp),%xmm3
  movsd  %xmm3,-0x48(%rbp)
  mov    -0x18(%rbp),%rax
  movq   %rax,%xmm0
  call   <sin@plt>
  movd   %xmm0,%eax
  movd   %eax,%xmm4
  mulss  -0x2c(%rbp),%xmm4
  movaps %xmm4,%xmm0
  cvtss2sd %xmm0,%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x8(%rbp),%xmm1
  movsd  -0x48(%rbp),%xmm3
  subsd  %xmm1,%xmm3
  movapd %xmm3,%xmm0
  mulsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  comiss -0x34(%rbp),%xmm0
  jbe    L27
  movsd  -0x28(%rbp),%xmm0
  movq   D73(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
L27:
  pxor   %xmm0,%xmm0
  cvtsd2ss -0x28(%rbp),%xmm0
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D230
type: f32
name: retrieve_data
arguments: data_label: D169
type: byte[8]
name: retrieve_data
arguments: data_label: D215
type: f64
name: retrieve_data
arguments: data_label: D141
type: f64
name: retrieve_data
arguments: data_label: D16
type: f64
name: retrieve_data
arguments: data_label: D118
type: f64
name: retrieve_data
arguments: data_label: D147
type: f64
name: retrieve_data
arguments: data_label: D185
type: f64
name: retrieve_data
arguments: data_label: D221
type: f64
name: retrieve_data
arguments: data_label: D223
type: f64
name: retrieve_data
arguments: data_label: D89
type: f64
name: retrieve_data
arguments: data_label: D15
type: f64
name: retrieve_data
arguments: data_label: D38
type: f64
name: retrieve_data
arguments: data_label: D43
type: byte[8]
name: retrieve_data
arguments: data_label: D200
type: byte[8]
name: retrieve_data
arguments: data_label: D228
type: byte[8]
name: retrieve_data
arguments: data_label: D92
type: byte[8]
name: retrieve_data
arguments: data_label: D238
type: f64
name: retrieve_data
arguments: data_label: D131
type: byte[8]
name: retrieve_data
arguments: data_label: D205
type: byte[8]
name: retrieve_data
arguments: data_label: D181
type: byte[8]
name: retrieve_data
arguments: data_label: D79
type: byte[8]
name: retrieve_data
arguments: data_label: D68
type: f64
name: retrieve_data
arguments: data_label: D132
type: f64
name: retrieve_data
arguments: data_label: D73
type: f32[2]

tool: D230: 8

tool: {"D169": [0xa0,0x16,0x07,0xc0,0x0d,0x29,0x3e,0xc0]}

tool: D215: 15704.4826

tool: D141: 2972611.439

tool: D16: 242396853.1

tool: D118: 7895059235

tool: D147: 72362614232

tool: D185: 376.9991397

tool: D221: 99447.43394

tool: D223: 18583304.74

tool: D89: 2300535178

tool: D15: 144725228442

tool: D38: 2.356194491

tool: {"D43": [0x14,0x8d,0x4d,0x63,0xf5,0x20,0x90,0xbe]}

tool: {"D200": [0x15,0x0e,0xdf,0x00,0x7c,0x9d,0xc4,0x3e]}

tool: {"D228": [0xd3,0x5c,0xd1,0xa2,0xa0,0x6f,0x02,0x3f]}

tool: {"D92": [0xfd,0x82,0x82,0xf7,0xfa,0xff,0x5d,0x3f]}

tool: D238: 1

tool: {"D131": [0x22,0x81,0x43,0xd5,0xa7,0x65,0x7c,0x3e]}

tool: {"D205": [0xf1,0x78,0x38,0xf1,0xcf,0x9a,0xad,0x3e]}

tool: {"D181": [0x43,0xa6,0xd8,0x14,0x21,0xb8,0xe1,0x3e]}

tool: {"D79": [0x80,0x43,0x57,0x5c,0xea,0x3f,0x2a,0x3f]}

tool: D68: 0.04687499995

tool: D132: 0.636619772

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

assistant: ```c
float bessj1(float x) {
  float ax, z;
  double xx, y, ans, ans1, ans2;
  if ((ax = fabs(x)) < 8.0) {
    y = x * x;
    ans1 = x * (72362614232.0 + y * (-7895059235.0 + y * (242396853.1 + y * (-2972611.439 + y * (15704.48260 + y * (-30.16036606))))));
    ans2 = 144725228442.0 + y * (2300535178.0 + y * (18583304.74 + y * (99447.43394 + y * (376.9991397 + y * 1.0))));
    ans = ans1 / ans2;
  } else {
    z = 8.0 / ax;
    y = z * z;
    xx = ax - 2.356194491;
    ans1 = 1.0 + y * (0.183105e-2 + y * (-0.3516396496e-4 + y * (0.2457520174e-5 + y * (-0.240337019e-6))));
    ans2 = 0.04687499995 + y * (-0.2002690873e-3 + y * (0.8449199096e-5 + y * (-0.88228987e-6 + y * 0.105787412e-6)));
    ans = sqrt(0.636619772 / ax) * (cos(xx) * ans1 - z * sin(xx) * ans2);
    if (x < 0.0)
      ans = -ans;
  }
  return ans;
}
```