user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<bessj1>:
  endbr64
  sub    $0x38,%rsp
  movss  %xmm0,(%rsp)
  call   <fabs@plt>
  movss  D119(%rip),%xmm4
  movss  (%rsp),%xmm2
  comiss %xmm0,%xmm4
  jbe    L9
  movaps %xmm2,%xmm3
  movsd  D156(%rip),%xmm0
  movsd  D127(%rip),%xmm1
  mulss  %xmm2,%xmm3
  cvtss2sd %xmm2,%xmm2
  cvtss2sd %xmm3,%xmm3
  mulsd  %xmm3,%xmm0
  addsd  %xmm3,%xmm1
  addsd  D181(%rip),%xmm0
  mulsd  %xmm3,%xmm1
  mulsd  %xmm3,%xmm0
  addsd  D131(%rip),%xmm1
  subsd  D148(%rip),%xmm0
  mulsd  %xmm3,%xmm1
  mulsd  %xmm3,%xmm0
  addsd  D133(%rip),%xmm1
  addsd  D57(%rip),%xmm0
  mulsd  %xmm3,%xmm1
  mulsd  %xmm3,%xmm0
  addsd  D171(%rip),%xmm1
  subsd  D188(%rip),%xmm0
  mulsd  %xmm3,%xmm1
  mulsd  %xmm3,%xmm0
  addsd  D154(%rip),%xmm1
  addsd  D150(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  divsd  %xmm1,%xmm0
L11:
  cvtsd2ss %xmm0,%xmm0
  add    $0x38,%rsp
  ret
  nopl   0x0(%rax,%rax,1)
L9:
  divss  %xmm0,%xmm4
  movsd  D22(%rip),%xmm3
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D201(%rip),%xmm0
  movapd %xmm1,%xmm6
  subsd  D151(%rip),%xmm6
  divsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  movaps %xmm4,%xmm5
  mulss  %xmm4,%xmm5
  cvtss2sd %xmm5,%xmm5
  mulsd  %xmm5,%xmm3
  addsd  D173(%rip),%xmm3
  mulsd  %xmm5,%xmm3
  subsd  D153(%rip),%xmm3
  mulsd  %xmm5,%xmm3
  addsd  D27(%rip),%xmm3
  mulsd  %xmm5,%xmm3
  addsd  D21(%rip),%xmm3
  movsd  %xmm3,0x8(%rsp)
  movsd  D224(%rip),%xmm3
  mulsd  %xmm5,%xmm3
  ucomisd %xmm0,%xmm1
  subsd  D52(%rip),%xmm3
  mulsd  %xmm5,%xmm3
  addsd  D210(%rip),%xmm3
  mulsd  %xmm5,%xmm3
  subsd  D30(%rip),%xmm3
  mulsd  %xmm5,%xmm3
  addsd  D24(%rip),%xmm3
  movsd  %xmm3,0x10(%rsp)
  ja     L31
  sqrtsd %xmm0,%xmm0
  movsd  %xmm0,(%rsp)
L23:
  movapd %xmm6,%xmm0
  movss  %xmm2,0x2c(%rsp)
  movss  %xmm4,0x20(%rsp)
  movsd  %xmm6,0x18(%rsp)
  call   <cos@plt>
  movsd  0x8(%rsp),%xmm1
  movsd  0x18(%rsp),%xmm6
  mulsd  %xmm0,%xmm1
  movapd %xmm6,%xmm0
  movsd  %xmm1,0x8(%rsp)
  call   <sin@plt>
  movss  0x20(%rsp),%xmm4
  pxor   %xmm3,%xmm3
  movsd  0x8(%rsp),%xmm1
  movss  0x2c(%rsp),%xmm2
  mulss  %xmm4,%xmm0
  cvtss2sd %xmm0,%xmm3
  mulsd  0x10(%rsp),%xmm3
  movsd  (%rsp),%xmm0
  subsd  %xmm3,%xmm1
  mulsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  comiss %xmm2,%xmm1
  jbe    L11
  xorpd  D47(%rip),%xmm0
  add    $0x38,%rsp
  cvtsd2ss %xmm0,%xmm0
  ret
L31:
  movss  %xmm2,0x2c(%rsp)
  movsd  %xmm6,0x20(%rsp)
  movss  %xmm4,0x18(%rsp)
  call   <sqrt@plt>
  movss  0x2c(%rsp),%xmm2
  movsd  0x20(%rsp),%xmm6
  movss  0x18(%rsp),%xmm4
  movsd  %xmm0,(%rsp)
  jmp    L23
```

tool_calls: name: extract_symbolic_data
arguments: label: D119
type_infered: f32
name: extract_symbolic_data
arguments: label: D156
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D127
type_infered: f64
name: extract_symbolic_data
arguments: label: D181
type_infered: f64
name: extract_symbolic_data
arguments: label: D131
type_infered: f64
name: extract_symbolic_data
arguments: label: D148
type_infered: f64
name: extract_symbolic_data
arguments: label: D133
type_infered: f64
name: extract_symbolic_data
arguments: label: D57
type_infered: f64
name: extract_symbolic_data
arguments: label: D171
type_infered: f64
name: extract_symbolic_data
arguments: label: D188
type_infered: f64
name: extract_symbolic_data
arguments: label: D154
type_infered: f64
name: extract_symbolic_data
arguments: label: D150
type_infered: f64
name: extract_symbolic_data
arguments: label: D22
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D201
type_infered: f64
name: extract_symbolic_data
arguments: label: D151
type_infered: f64
name: extract_symbolic_data
arguments: label: D173
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D153
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D27
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D21
type_infered: f64
name: extract_symbolic_data
arguments: label: D224
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D52
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D210
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D30
type_infered: byte[8]
name: extract_symbolic_data
arguments: label: D24
type_infered: f64
name: extract_symbolic_data
arguments: label: D47
type_infered: f32[4]

tool: D119: 8

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

tool: D127: 376.9991397

tool: D181: 15704.4826

tool: D131: 99447.43394

tool: D148: 2972611.439

tool: D133: 18583304.74

tool: D57: 242396853.1

tool: D171: 2300535178

tool: D188: 7895059235

tool: D154: 144725228442

tool: D150: 72362614232

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

tool: D201: 0.636619772

tool: D151: 2.356194491

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

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

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

tool: D21: 1

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

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

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

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

tool: D24: 0.04687499995

tool: {"D47": [0.0,-0.0,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;
}
```