user: Please show me the C implementation that matches the assembly code listed below:

```asm
<bessk1>:
  endbr64
  sub    $0x28,%rsp
  movaps %xmm0,%xmm1
  movss  D100(%rip),%xmm0
  comiss %xmm1,%xmm0
  jb     L0
  movaps %xmm1,%xmm2
  movaps %xmm1,%xmm0
  movss  %xmm1,0x14(%rsp)
  mulss  %xmm1,%xmm2
  mulss  D7(%rip),%xmm0
  cvtss2sd %xmm2,%xmm2
  mulsd  D148(%rip),%xmm2
  movsd  %xmm2,0x18(%rsp)
  call   <log@plt>
  movss  0x14(%rsp),%xmm1
  movsd  %xmm0,0x8(%rsp)
  movaps %xmm1,%xmm0
  call   <bessi1@plt>
  movsd  0x18(%rsp),%xmm2
  movsd  D8(%rip),%xmm5
  movaps %xmm0,%xmm3
  movss  0x14(%rsp),%xmm1
  mulsd  %xmm2,%xmm5
  cvtss2sd %xmm1,%xmm1
  movapd %xmm5,%xmm0
  subsd  D156(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D94(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D33(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D135(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D45(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  movsd  D95(%rip),%xmm2
  addsd  %xmm2,%xmm0
  divsd  %xmm1,%xmm2
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm3,%xmm1
  mulsd  0x8(%rsp),%xmm1
  add    $0x28,%rsp
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  ret
  nopl   (%rax)
L0:
  movsd  D79(%rip),%xmm2
  pxor   %xmm0,%xmm0
  movss  %xmm1,0x14(%rsp)
  cvtss2sd %xmm1,%xmm0
  divsd  %xmm0,%xmm2
  movaps %xmm1,%xmm0
  xorps  D97(%rip),%xmm0
  movsd  %xmm2,0x18(%rsp)
  call   <exp@plt>
  movss  0x14(%rsp),%xmm1
  movsd  %xmm0,0x8(%rsp)
  movaps %xmm1,%xmm0
  call   <sqrt@plt>
  movsd  0x8(%rsp),%xmm3
  movsd  0x18(%rsp),%xmm2
  movapd %xmm0,%xmm4
  movsd  D163(%rip),%xmm0
  divsd  %xmm4,%xmm3
  mulsd  %xmm2,%xmm0
  addsd  D35(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D152(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D81(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  subsd  D109(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D11(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  D110(%rip),%xmm0
  add    $0x28,%rsp
  mulsd  %xmm3,%xmm0
  cvtsd2ss %xmm0,%xmm0
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D100
type: f32
name: unpack_data
arguments: data_tag: D7
type: byte[4]
name: unpack_data
arguments: data_tag: D148
type: byte[8]
name: unpack_data
arguments: data_tag: D8
type: byte[8]
name: unpack_data
arguments: data_tag: D156
type: byte[8]
name: unpack_data
arguments: data_tag: D94
type: byte[8]
name: unpack_data
arguments: data_tag: D33
type: f64
name: unpack_data
arguments: data_tag: D135
type: f64
name: unpack_data
arguments: data_tag: D45
type: f64
name: unpack_data
arguments: data_tag: D95
type: f64
name: unpack_data
arguments: data_tag: D79
type: byte[8]
name: unpack_data
arguments: data_tag: D97
type: byte[16]
name: unpack_data
arguments: data_tag: D163
type: byte[8]
name: unpack_data
arguments: data_tag: D35
type: byte[8]
name: unpack_data
arguments: data_tag: D152
type: byte[8]
name: unpack_data
arguments: data_tag: D81
type: byte[8]
name: unpack_data
arguments: data_tag: D109
type: byte[8]
name: unpack_data
arguments: data_tag: D11
type: f64
name: unpack_data
arguments: data_tag: D110
type: f64

tool: D100: 2

tool: {"D7": [0x00,0x00,0x00,0x3f]}

tool: {"D148": [0x00,0x00,0x00,0x00,0x00,0x00,0xd0,0x3f]}

tool: {"D8": [0x6d,0x4a,0x05,0x57,0x71,0x91,0x08,0xbf]}

tool: {"D156": [0x7d,0xe8,0x61,0xec,0xad,0x16,0x52,0x3f]}

tool: {"D94": [0x76,0x0f,0xb7,0xe0,0x98,0xa7,0x93,0x3f]}

tool: D33: 0.18156897

tool: D135: 0.67278579

tool: D45: 0.15443144

tool: D95: 1

tool: {"D79": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40]}

tool: {"D97": [0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: {"D163": [0xf6,0x17,0x30,0x37,0xce,0x5c,0x46,0xbf]}

tool: {"D35": [0x55,0x54,0xf5,0xd9,0x9e,0xac,0x6a,0x3f]}

tool: {"D152": [0x7d,0x2e,0x4b,0x22,0x98,0xf6,0x7f,0x3f]}

tool: {"D81": [0xce,0x4e,0x27,0x55,0xb2,0xce,0x8e,0x3f]}

tool: {"D109": [0x2a,0x9c,0xee,0x86,0x7e,0xb7,0xa2,0x3f]}

tool: D11: 0.23498619

tool: D110: 1.25331414

assistant: ```c
float bessk1(float x) {
  float bessi1(float x);
  double y, ans;
  if (x <= 2.0) {
    y = x * x / 4.0;
    ans = (log(x / 2.0) * bessi1(x)) + (1.0 / x) * (1.0 + y * (0.15443144 + y * (-0.67278579 + y * (-0.18156897 + y * (-0.1919402e-1 + y * (-0.110404e-2 + y * (-0.4686e-4)))))));
  } else {
    y = 2.0 / x;
    ans = (exp(-x) / sqrt(x)) * (1.25331414 + y * (0.23498619 + y * (-0.3655620e-1 + y * (0.1504268e-1 + y * (-0.780353e-2 + y * (0.325614e-2 + y * (-0.68245e-3)))))));
  }
  return ans;
}
```