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

```asm
<HO_41>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  movsd  %xmm0,-0x18(%rbp)
  movsd  %xmm1,-0x20(%rbp)
  movsd  D28(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D298(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  D546(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D229(%rip),%xmm1
  movapd %xmm0,%xmm7
  mulsd  %xmm1,%xmm7
  movsd  %xmm7,-0x30(%rbp)
  movsd  D384(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D371(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D613(%rip),%xmm1
  movapd %xmm0,%xmm2
  mulsd  %xmm1,%xmm2
  movsd  %xmm2,-0x38(%rbp)
  movsd  D269(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm3
  subsd  %xmm0,%xmm3
  movsd  %xmm3,-0x30(%rbp)
  movsd  D446(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D106(%rip),%xmm1
  movapd %xmm0,%xmm4
  mulsd  %xmm1,%xmm4
  movsd  %xmm4,-0x38(%rbp)
  movsd  D450(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D480(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D630(%rip),%xmm1
  movapd %xmm0,%xmm3
  mulsd  %xmm1,%xmm3
  movsd  %xmm3,-0x38(%rbp)
  movsd  D249(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm4
  subsd  %xmm0,%xmm4
  movsd  %xmm4,-0x30(%rbp)
  movsd  D146(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D596(%rip),%xmm1
  movapd %xmm0,%xmm5
  mulsd  %xmm1,%xmm5
  movsd  %xmm5,-0x38(%rbp)
  movsd  D321(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D153(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D378(%rip),%xmm1
  movapd %xmm0,%xmm7
  mulsd  %xmm1,%xmm7
  movsd  %xmm7,-0x38(%rbp)
  movsd  D456(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm5
  subsd  %xmm0,%xmm5
  movsd  %xmm5,-0x30(%rbp)
  movsd  D310(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D493(%rip),%xmm1
  movapd %xmm0,%xmm2
  mulsd  %xmm1,%xmm2
  movsd  %xmm2,-0x38(%rbp)
  movsd  D542(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D417(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D150(%rip),%xmm1
  movapd %xmm0,%xmm3
  mulsd  %xmm1,%xmm3
  movsd  %xmm3,-0x38(%rbp)
  movsd  D129(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm6
  subsd  %xmm0,%xmm6
  movsd  %xmm6,-0x30(%rbp)
  movsd  D407(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D116(%rip),%xmm1
  movapd %xmm0,%xmm4
  mulsd  %xmm1,%xmm4
  movsd  %xmm4,-0x38(%rbp)
  movsd  D305(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D499(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D36(%rip),%xmm1
  movapd %xmm0,%xmm5
  mulsd  %xmm1,%xmm5
  movsd  %xmm5,-0x38(%rbp)
  movsd  D556(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm7
  subsd  %xmm0,%xmm7
  movsd  %xmm7,-0x30(%rbp)
  movsd  D27(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D339(%rip),%xmm1
  movapd %xmm0,%xmm2
  mulsd  %xmm1,%xmm2
  movsd  %xmm2,-0x38(%rbp)
  movsd  D546(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D39(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D558(%rip),%xmm1
  movapd %xmm0,%xmm7
  mulsd  %xmm1,%xmm7
  movsd  %xmm7,-0x38(%rbp)
  movsd  D446(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm2
  subsd  %xmm0,%xmm2
  movsd  %xmm2,-0x30(%rbp)
  movsd  D590(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D594(%rip),%xmm1
  movapd %xmm0,%xmm3
  mulsd  %xmm1,%xmm3
  movsd  %xmm3,-0x38(%rbp)
  movsd  D146(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D387(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D502(%rip),%xmm1
  movapd %xmm0,%xmm4
  mulsd  %xmm1,%xmm4
  movsd  %xmm4,-0x38(%rbp)
  movsd  D310(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm3
  subsd  %xmm0,%xmm3
  movsd  %xmm3,-0x30(%rbp)
  movsd  D495(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D197(%rip),%xmm1
  movapd %xmm0,%xmm5
  mulsd  %xmm1,%xmm5
  movsd  %xmm5,-0x38(%rbp)
  movsd  D407(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D375(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D388(%rip),%xmm1
  movapd %xmm0,%xmm7
  mulsd  %xmm1,%xmm7
  movsd  %xmm7,-0x38(%rbp)
  movsd  D27(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm4
  subsd  %xmm0,%xmm4
  movsd  %xmm4,-0x30(%rbp)
  movsd  D259(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D413(%rip),%xmm1
  movapd %xmm0,%xmm2
  mulsd  %xmm1,%xmm2
  movsd  %xmm2,-0x38(%rbp)
  movsd  D590(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D78(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D274(%rip),%xmm1
  movapd %xmm0,%xmm3
  mulsd  %xmm1,%xmm3
  movsd  %xmm3,-0x38(%rbp)
  movsd  D495(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movsd  -0x30(%rbp),%xmm5
  subsd  %xmm0,%xmm5
  movsd  %xmm5,-0x30(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D240(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movapd %xmm0,%xmm4
  mulsd  -0x18(%rbp),%xmm4
  movsd  %xmm4,-0x38(%rbp)
  movsd  D259(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  addsd  -0x30(%rbp),%xmm0
  movsd  -0x18(%rbp),%xmm2
  movsd  D187(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  mulsd  -0x20(%rbp),%xmm1
  movapd %xmm1,%xmm2
  mulsd  -0x20(%rbp),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  D566(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0x28(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x18(%rbp),%xmm0
  movq   D188(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  D563(%rip),%xmm1
  movapd %xmm0,%xmm6
  divsd  %xmm1,%xmm6
  movq   %xmm6,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movsd  -0x28(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D331(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D489(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D28
datatype: byte[8]
name: disassemble_data
arguments: label: D298
datatype: byte[8]
name: disassemble_data
arguments: label: D546
datatype: f64
name: disassemble_data
arguments: label: D229
datatype: f64
name: disassemble_data
arguments: label: D384
datatype: f64
name: disassemble_data
arguments: label: D371
datatype: f64
name: disassemble_data
arguments: label: D613
datatype: f64
name: disassemble_data
arguments: label: D269
datatype: f64
name: disassemble_data
arguments: label: D446
datatype: f64
name: disassemble_data
arguments: label: D106
datatype: f64
name: disassemble_data
arguments: label: D450
datatype: f64
name: disassemble_data
arguments: label: D480
datatype: f64
name: disassemble_data
arguments: label: D630
datatype: f64
name: disassemble_data
arguments: label: D249
datatype: f64
name: disassemble_data
arguments: label: D146
datatype: f64
name: disassemble_data
arguments: label: D596
datatype: f64
name: disassemble_data
arguments: label: D321
datatype: f64
name: disassemble_data
arguments: label: D153
datatype: f64
name: disassemble_data
arguments: label: D378
datatype: f64
name: disassemble_data
arguments: label: D456
datatype: f64
name: disassemble_data
arguments: label: D310
datatype: f64
name: disassemble_data
arguments: label: D493
datatype: f64
name: disassemble_data
arguments: label: D542
datatype: f64
name: disassemble_data
arguments: label: D417
datatype: f64
name: disassemble_data
arguments: label: D150
datatype: f64
name: disassemble_data
arguments: label: D129
datatype: f64
name: disassemble_data
arguments: label: D407
datatype: f64
name: disassemble_data
arguments: label: D116
datatype: f64
name: disassemble_data
arguments: label: D305
datatype: f64
name: disassemble_data
arguments: label: D499
datatype: f64
name: disassemble_data
arguments: label: D36
datatype: f64
name: disassemble_data
arguments: label: D556
datatype: f64
name: disassemble_data
arguments: label: D27
datatype: f64
name: disassemble_data
arguments: label: D339
datatype: f64
name: disassemble_data
arguments: label: D39
datatype: f64
name: disassemble_data
arguments: label: D558
datatype: f64
name: disassemble_data
arguments: label: D590
datatype: f64
name: disassemble_data
arguments: label: D594
datatype: f64
name: disassemble_data
arguments: label: D387
datatype: f64
name: disassemble_data
arguments: label: D502
datatype: f64
name: disassemble_data
arguments: label: D495
datatype: f64
name: disassemble_data
arguments: label: D197
datatype: f64
name: disassemble_data
arguments: label: D375
datatype: f64
name: disassemble_data
arguments: label: D388
datatype: f64
name: disassemble_data
arguments: label: D259
datatype: f64
name: disassemble_data
arguments: label: D413
datatype: f64
name: disassemble_data
arguments: label: D78
datatype: f64
name: disassemble_data
arguments: label: D274
datatype: f64
name: disassemble_data
arguments: label: D240
datatype: f64
name: disassemble_data
arguments: label: D187
datatype: f64
name: disassemble_data
arguments: label: D566
datatype: f64
name: disassemble_data
arguments: label: D188
datatype: byte[8]
name: disassemble_data
arguments: label: D563
datatype: f64
name: disassemble_data
arguments: label: D331
datatype: byte[8]
name: disassemble_data
arguments: label: D489
datatype: f64

tool: {"D28": [0x00,0x00,0x00,0x00,0x00,0x00,0xe8,0x3f]}

tool: {"D298": [0x4f,0xdc,0x8b,0x13,0xad,0x19,0x21,0x41]}

tool: D546: 20

tool: D229: 1048576

tool: D384: 40

tool: D371: 19

tool: D613: 429916160

tool: D269: 38

tool: D446: 18

tool: D106: 79641968640

tool: D450: 36

tool: D480: 17

tool: D630: 8840258519040

tool: D249: 34

tool: D146: 16

tool: D596: 657494227353600

tool: D321: 32

tool: D153: 15

tool: D378: 3.471569520427008e+16

tool: D456: 30

tool: D310: 14

tool: D493: 1.3452331891654656e+18

tool: D542: 28

tool: D417: 13

tool: D150: 3.90117624857985e+19

tool: D129: 26

tool: D407: 12

tool: D116: 8.558205395322047e+20

tool: D305: 24

tool: D499: 11

tool: D36: 1.4263675658870077e+22

tool: D556: 22

tool: D27: 10

tool: D339: 1.8043549708470647e+23

tool: D39: 9

tool: D558: 1.7223388358085619e+24

tool: D590: 8

tool: D594: 1.2271664205136003e+25

tool: D387: 7

tool: D502: 6.419024353455756e+25

tool: D495: 6

tool: D197: 2.4071341325459083e+26

tool: D375: 5

tool: D388: 6.258548744619362e+26

tool: D259: 4

tool: D413: 1.0756880654814528e+27

tool: D78: 3

tool: D274: 1.1389638340391853e+27

tool: D240: 6.643955698561914e+26

tool: D187: 1.7484093943583986e+26

tool: D566: 1.3113070457687988e+25

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

tool: D563: 2

tool: {"D331": [0x5f,0xfa,0x11,0x70,0x38,0x09,0xe8,0x3f]}

tool: D489: 2.29167516137344e+30

assistant: ```c
double HO_41(const double a, const double x) {
  double retval = sqrt(0.313983760090e12) * pow(a, 0.3e1 / 0.4e1) * x * (0.1048576e7 * pow(a, 0.20e2) * pow(x, 0.40e2) - 0.429916160e9 * pow(a, 0.19e2) * pow(x, 0.38e2) + 0.79641968640e11 * pow(a, 0.18e2) * pow(x, 0.36e2) - 0.8840258519040e13 * pow(a, 0.17e2) * pow(x, 0.34e2) + 0.657494227353600e15 * pow(a, 0.16e2) * pow(x, 0.32e2) - 0.34715695204270080e17 * pow(a, 0.15e2) * pow(x, 0.30e2) + 0.1345233189165465600e19 * pow(a, 0.14e2) * pow(x, 0.28e2) - 0.39011762485798502400e20 * pow(a, 0.13e2) * pow(x, 0.26e2) + 0.855820539532204646400e21 * pow(a, 0.12e2) * pow(x, 0.24e2) - 0.14263675658870077440000e23 * pow(a, 0.11e2) * pow(x, 0.22e2) + 0.180435497084706479616000e24 * pow(a, 0.10e2) * pow(x, 0.20e2) - 0.1722338835808561850880000e25 * pow(a, 0.9e1) * pow(x, 0.18e2) + 0.12271664205136003187520000e26 * pow(a, 0.8e1) * pow(x, 0.16e2) - 0.64190243534557555134720000e26 * pow(a, 0.7e1) * pow(x, 0.14e2) + 0.240713413254590831755200000e27 * pow(a, 0.6e1) * pow(x, 0.12e2) - 0.625854874461936162563520000e27 * pow(a, 0.5e1) * pow(x, 0.10e2) + 0.1075688065481452779406050000e28 * pow(a, 0.4e1) * pow(x, 0.8e1) - 0.1138963834039185295841700000e28 * pow(a, 0.3e1) * pow(x, 0.6e1) + 0.664395569856191422574325000e27 * a * a * pow(x, 0.4e1) - 0.174840939435839848045875000e27 * a * x * x + 0.13113070457687988603440625e26) * exp(-a * x * x / 0.2e1) * pow(0.3141592654e1, -0.1e1 / 0.4e1) / 0.2291675161373440056306892800000e31;
  return retval;
}
```