user: Translate the below assembly code into C programming language:

```asm
<airBesselI1ExpScaled>:
  endbr64
  pxor   %xmm7,%xmm7
  movapd %xmm0,%xmm1
  movapd %xmm0,%xmm2
  sub    $0x18,%rsp
  comisd %xmm7,%xmm0
  ja     L3
  xorpd  D188(%rip),%xmm2
L3:
  movsd  D179(%rip),%xmm0
  comisd %xmm2,%xmm0
  jbe    L29
  movapd %xmm1,%xmm5
  divsd  D132(%rip),%xmm5
  movsd  D201(%rip),%xmm0
  movsd  D57(%rip),%xmm6
  mulsd  %xmm5,%xmm5
  movsd  D155(%rip),%xmm4
  movsd  %xmm1,0x8(%rsp)
  mulsd  %xmm5,%xmm0
  addsd  D210(%rip),%xmm0
  mulsd  %xmm5,%xmm6
  mulsd  %xmm5,%xmm0
  addsd  D192(%rip),%xmm0
  subsd  %xmm6,%xmm4
  mulsd  %xmm5,%xmm0
  addsd  D29(%rip),%xmm0
  movapd %xmm4,%xmm3
  mulsd  %xmm5,%xmm3
  subsd  D17(%rip),%xmm3
  mulsd  %xmm5,%xmm0
  addsd  D160(%rip),%xmm0
  mulsd  %xmm5,%xmm3
  addsd  D223(%rip),%xmm3
  mulsd  %xmm5,%xmm0
  addsd  D58(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  xorpd  D188(%rip),%xmm2
  divsd  %xmm3,%xmm0
  movsd  %xmm0,(%rsp)
  movapd %xmm2,%xmm0
  call   <exp@plt>
  mulsd  (%rsp),%xmm0
  movsd  0x8(%rsp),%xmm1
L13:
  pxor   %xmm4,%xmm4
  comisd %xmm1,%xmm4
  jbe    L24
  xorpd  D188(%rip),%xmm0
L24:
  add    $0x18,%rsp
  ret
  nopw   0x0(%rax,%rax,1)
L29:
  movsd  D132(%rip),%xmm5
  movsd  D229(%rip),%xmm0
  movsd  %xmm1,0x8(%rsp)
  movsd  D21(%rip),%xmm6
  movsd  D180(%rip),%xmm4
  divsd  %xmm2,%xmm5
  mulsd  %xmm5,%xmm0
  addsd  D135(%rip),%xmm0
  mulsd  %xmm5,%xmm6
  mulsd  %xmm5,%xmm0
  subsd  D199(%rip),%xmm0
  subsd  %xmm6,%xmm4
  mulsd  %xmm5,%xmm0
  addsd  D84(%rip),%xmm0
  movapd %xmm4,%xmm3
  mulsd  %xmm5,%xmm3
  subsd  D197(%rip),%xmm3
  mulsd  %xmm5,%xmm0
  subsd  D196(%rip),%xmm0
  mulsd  %xmm5,%xmm3
  addsd  D223(%rip),%xmm3
  mulsd  %xmm5,%xmm0
  addsd  D186(%rip),%xmm0
  divsd  %xmm3,%xmm0
  movsd  %xmm0,(%rsp)
  movapd %xmm2,%xmm0
  call   <sqrt@plt>
  pxor   %xmm0,%xmm0
  movsd  0x8(%rsp),%xmm1
  mov    %eax,%r8d
  mov    $0x1,%eax
  cltd
  idiv   %r8d
  cvtsi2sd %eax,%xmm0
  mulsd  (%rsp),%xmm0
  jmp    L13
```

tool_calls: name: retrieve_data
arguments: tag: D188
type_guessed: f32[4]
name: retrieve_data
arguments: tag: D179
type_guessed: f64
name: retrieve_data
arguments: tag: D132
type_guessed: f64
name: retrieve_data
arguments: tag: D201
type_guessed: f64
name: retrieve_data
arguments: tag: D57
type_guessed: f64
name: retrieve_data
arguments: tag: D155
type_guessed: f64
name: retrieve_data
arguments: tag: D210
type_guessed: f64
name: retrieve_data
arguments: tag: D192
type_guessed: f64
name: retrieve_data
arguments: tag: D29
type_guessed: f64
name: retrieve_data
arguments: tag: D17
type_guessed: f64
name: retrieve_data
arguments: tag: D160
type_guessed: f64
name: retrieve_data
arguments: tag: D223
type_guessed: f32[2]
name: retrieve_data
arguments: tag: D58
type_guessed: f64
name: retrieve_data
arguments: tag: D229
type_guessed: f64
name: retrieve_data
arguments: tag: D21
type_guessed: f64
name: retrieve_data
arguments: tag: D180
type_guessed: f64
name: retrieve_data
arguments: tag: D135
type_guessed: f64
name: retrieve_data
arguments: tag: D199
type_guessed: f64
name: retrieve_data
arguments: tag: D84
type_guessed: f64
name: retrieve_data
arguments: tag: D197
type_guessed: f64
name: retrieve_data
arguments: tag: D196
type_guessed: f64
name: retrieve_data
arguments: tag: D186
type_guessed: f64

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

tool: D179: 6.449305566387246

tool: D132: 6.45

tool: D201: 0.0792323006694466

tool: D57: 0.006777712190188699

tool: D155: 0.08677361454866868

tool: D210: 0.6092719473097832

tool: D192: 2.0569974969268707

tool: D29: 3.3554331305863787

tool: D17: 0.4596495788370524

tool: D160: 2.370331499358438

tool: {"D223": [0.0,1.875]}

tool: D58: 0.4999999998235554

tool: D229: 7.03849046144657e-05

tool: D21: 0.142824922601647

tool: D180: 0.919118239717915

tool: D135: 0.00248933264397244

tool: D199: 0.0766281832045885

tool: D84: 0.40311772245257

tool: D197: 1.61964537617937

tool: D196: 0.669339325353065

tool: D186: 0.398942280267484

assistant: ```c
double airBesselI1ExpScaled(double x) {
  double b, ax, y;
  ax = ((x) > 0.0f ? (x) : -(x));
  if (ax < 6.449305566387246) {
    y = x / 6.45;
    y *= y;
    b = ax * (0.4999999998235554 + y * (2.370331499358438 + y * (3.3554331305863787 + y * (2.0569974969268707 + (0.6092719473097832 + 0.0792323006694466 * y) * y)))) / (1 + y * (-0.4596495788370524 + (0.08677361454866868 - 0.006777712190188699 * y) * y));
    b *= exp(-ax);
  } else {
    y = 6.45 / ax;
    b = (0.398942280267484 + y * (-0.669339325353065 + y * (0.40311772245257 + y * (-0.0766281832045885 + (0.00248933264397244 + 0.0000703849046144657 * y) * y)))) / (1 + y * (-1.61964537617937 + (0.919118239717915 - 0.142824922601647 * y) * y));
    b *= 1 / sqrt(ax);
  }
  return x < 0.0 ? -b : b;
}
```