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

```asm
<HO_44>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x138,%rsp
  movsd  %xmm0,0x8(%rsp)
  movsd  %xmm1,(%rsp)
  movsd  D601(%rip),%xmm1
  call   <pow@plt>
  movsd  %xmm0,0x10(%rsp)
  mov    D406(%rip),%rax
  movq   %rax,%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x18(%rsp)
  movsd  D63(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x20(%rsp)
  movsd  D428(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x28(%rsp)
  movsd  D631(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x30(%rsp)
  mov    D667(%rip),%rax
  movq   %rax,%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x38(%rsp)
  movsd  D211(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x40(%rsp)
  movsd  D145(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x48(%rsp)
  movsd  D21(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x50(%rsp)
  mov    D621(%rip),%rax
  movq   %rax,%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x58(%rsp)
  movsd  D275(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x60(%rsp)
  movsd  D24(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x68(%rsp)
  movsd  D481(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x70(%rsp)
  mov    D175(%rip),%rax
  movq   %rax,%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x78(%rsp)
  movsd  D265(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x80(%rsp)
  movsd  D658(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x88(%rsp)
  movsd  D122(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x90(%rsp)
  mov    D376(%rip),%rax
  movq   %rax,%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x98(%rsp)
  movsd  D546(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0xa0(%rsp)
  movsd  D391(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0xa8(%rsp)
  movsd  D152(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0xb0(%rsp)
  mov    D332(%rip),%rax
  movq   %rax,%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0xb8(%rsp)
  movsd  D344(%rip),%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0xc0(%rsp)
  movsd  D333(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0xc8(%rsp)
  mov    D406(%rip),%rax
  movq   %rax,%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0xd0(%rsp)
  mov    D201(%rip),%rax
  movq   %rax,%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0xd8(%rsp)
  mov    D667(%rip),%rax
  movq   %rax,%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0xe0(%rsp)
  movsd  D367(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movq   %xmm0,%r15
  mov    D621(%rip),%rax
  movq   %rax,%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0xe8(%rsp)
  mov    D382(%rip),%rax
  movq   %rax,%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movq   %xmm0,%r14
  mov    D175(%rip),%rax
  movq   %rax,%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0xf0(%rsp)
  movsd  D483(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0xf8(%rsp)
  mov    D376(%rip),%rax
  movq   %rax,%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x100(%rsp)
  mov    D652(%rip),%rax
  movq   %rax,%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movq   %xmm0,%r13
  mov    D332(%rip),%rax
  movq   %rax,%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x108(%rsp)
  movsd  D537(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movq   %xmm0,%r12
  mov    D201(%rip),%rax
  movq   %rax,%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x110(%rsp)
  mov    D677(%rip),%rax
  movq   %rax,%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movq   %xmm0,%rbp
  mov    D382(%rip),%rax
  movq   %rax,%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x118(%rsp)
  movsd  D324(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movq   %xmm0,%rbx
  mov    D652(%rip),%rax
  movq   %rax,%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x120(%rsp)
  mov    D677(%rip),%rax
  movq   %rax,%xmm1
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  %xmm0,0x128(%rsp)
  movsd  0x8(%rsp),%xmm5
  xorpd  D321(%rip),%xmm5
  movapd %xmm5,%xmm0
  movsd  (%rsp),%xmm3
  mulsd  %xmm3,%xmm0
  mulsd  %xmm3,%xmm0
  mulsd  D304(%rip),%xmm0
  call   <exp@plt>
  movapd %xmm0,%xmm2
  movsd  0x18(%rsp),%xmm1
  mulsd  D22(%rip),%xmm1
  mulsd  0x20(%rsp),%xmm1
  movsd  0x28(%rsp),%xmm0
  mulsd  D627(%rip),%xmm0
  mulsd  0x30(%rsp),%xmm0
  subsd  %xmm0,%xmm1
  movsd  0x38(%rsp),%xmm0
  mulsd  D86(%rip),%xmm0
  mulsd  0x40(%rsp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  0x48(%rsp),%xmm0
  mulsd  D44(%rip),%xmm0
  mulsd  0x50(%rsp),%xmm0
  subsd  %xmm0,%xmm1
  movsd  0x58(%rsp),%xmm0
  mulsd  D205(%rip),%xmm0
  mulsd  0x60(%rsp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  0x68(%rsp),%xmm0
  mulsd  D426(%rip),%xmm0
  mulsd  0x70(%rsp),%xmm0
  subsd  %xmm0,%xmm1
  movsd  0x78(%rsp),%xmm0
  mulsd  D134(%rip),%xmm0
  mulsd  0x80(%rsp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  0x88(%rsp),%xmm0
  mulsd  D525(%rip),%xmm0
  mulsd  0x90(%rsp),%xmm0
  subsd  %xmm0,%xmm1
  movsd  0x98(%rsp),%xmm0
  mulsd  D192(%rip),%xmm0
  mulsd  0xa0(%rsp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  0xa8(%rsp),%xmm0
  mulsd  D97(%rip),%xmm0
  mulsd  0xb0(%rsp),%xmm0
  subsd  %xmm0,%xmm1
  movsd  0xb8(%rsp),%xmm0
  mulsd  D531(%rip),%xmm0
  mulsd  0xc0(%rsp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  0xc8(%rsp),%xmm0
  mulsd  D533(%rip),%xmm0
  mulsd  0xd0(%rsp),%xmm0
  subsd  %xmm0,%xmm1
  movsd  0xd8(%rsp),%xmm0
  mulsd  D29(%rip),%xmm0
  mulsd  0xe0(%rsp),%xmm0
  addsd  %xmm0,%xmm1
  movq   %r15,%xmm0
  mulsd  D108(%rip),%xmm0
  mulsd  0xe8(%rsp),%xmm0
  subsd  %xmm0,%xmm1
  movq   %r14,%xmm0
  mulsd  D410(%rip),%xmm0
  mulsd  0xf0(%rsp),%xmm0
  addsd  %xmm0,%xmm1
  movsd  0xf8(%rsp),%xmm0
  mulsd  D696(%rip),%xmm0
  mulsd  0x100(%rsp),%xmm0
  subsd  %xmm0,%xmm1
  movq   %r13,%xmm0
  mulsd  D240(%rip),%xmm0
  mulsd  0x108(%rsp),%xmm0
  addsd  %xmm0,%xmm1
  movq   %r12,%xmm0
  mulsd  D659(%rip),%xmm0
  mulsd  0x110(%rsp),%xmm0
  subsd  %xmm0,%xmm1
  movq   %rbp,%xmm0
  mulsd  D313(%rip),%xmm0
  mulsd  0x118(%rsp),%xmm0
  addsd  %xmm0,%xmm1
  movq   %rbx,%xmm0
  mulsd  D441(%rip),%xmm0
  mulsd  0x120(%rsp),%xmm0
  subsd  %xmm0,%xmm1
  movsd  0x8(%rsp),%xmm4
  movapd %xmm4,%xmm0
  mulsd  D438(%rip),%xmm0
  mulsd  %xmm4,%xmm0
  mulsd  0x128(%rsp),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  D198(%rip),%xmm4
  movapd %xmm4,%xmm1
  movsd  (%rsp),%xmm3
  mulsd  %xmm3,%xmm1
  mulsd  %xmm3,%xmm1
  subsd  %xmm1,%xmm0
  addsd  D655(%rip),%xmm0
  movsd  0x10(%rsp),%xmm1
  mulsd  D419(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  mulsd  %xmm2,%xmm0
  mulsd  D679(%rip),%xmm0
  divsd  D197(%rip),%xmm0
  add    $0x138,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: parse_data
arguments: tag: D601
type_infered: byte[8]
name: parse_data
arguments: tag: D406
type_infered: f64
name: parse_data
arguments: tag: D63
type_infered: f64
name: parse_data
arguments: tag: D428
type_infered: f64
name: parse_data
arguments: tag: D631
type_infered: f64
name: parse_data
arguments: tag: D667
type_infered: f64
name: parse_data
arguments: tag: D211
type_infered: f64
name: parse_data
arguments: tag: D145
type_infered: f64
name: parse_data
arguments: tag: D21
type_infered: f64
name: parse_data
arguments: tag: D621
type_infered: f64
name: parse_data
arguments: tag: D275
type_infered: f64
name: parse_data
arguments: tag: D24
type_infered: f64
name: parse_data
arguments: tag: D481
type_infered: f64
name: parse_data
arguments: tag: D175
type_infered: f64
name: parse_data
arguments: tag: D265
type_infered: f64
name: parse_data
arguments: tag: D658
type_infered: f64
name: parse_data
arguments: tag: D122
type_infered: f64
name: parse_data
arguments: tag: D376
type_infered: f64
name: parse_data
arguments: tag: D546
type_infered: f64
name: parse_data
arguments: tag: D391
type_infered: f64
name: parse_data
arguments: tag: D152
type_infered: f64
name: parse_data
arguments: tag: D332
type_infered: f64
name: parse_data
arguments: tag: D344
type_infered: f64
name: parse_data
arguments: tag: D333
type_infered: f64
name: parse_data
arguments: tag: D201
type_infered: f64
name: parse_data
arguments: tag: D367
type_infered: f64
name: parse_data
arguments: tag: D382
type_infered: f64
name: parse_data
arguments: tag: D483
type_infered: f64
name: parse_data
arguments: tag: D652
type_infered: f64
name: parse_data
arguments: tag: D537
type_infered: f64
name: parse_data
arguments: tag: D677
type_infered: f64
name: parse_data
arguments: tag: D324
type_infered: f64
name: parse_data
arguments: tag: D321
type_infered: byte[16]
name: parse_data
arguments: tag: D304
type_infered: byte[8]
name: parse_data
arguments: tag: D22
type_infered: f64
name: parse_data
arguments: tag: D627
type_infered: f64
name: parse_data
arguments: tag: D86
type_infered: f64
name: parse_data
arguments: tag: D44
type_infered: f64
name: parse_data
arguments: tag: D205
type_infered: f64
name: parse_data
arguments: tag: D426
type_infered: f64
name: parse_data
arguments: tag: D134
type_infered: f64
name: parse_data
arguments: tag: D525
type_infered: f64
name: parse_data
arguments: tag: D192
type_infered: f64
name: parse_data
arguments: tag: D97
type_infered: f64
name: parse_data
arguments: tag: D531
type_infered: f64
name: parse_data
arguments: tag: D533
type_infered: f64
name: parse_data
arguments: tag: D29
type_infered: f64
name: parse_data
arguments: tag: D108
type_infered: f64
name: parse_data
arguments: tag: D410
type_infered: f64
name: parse_data
arguments: tag: D696
type_infered: f64
name: parse_data
arguments: tag: D240
type_infered: f64
name: parse_data
arguments: tag: D659
type_infered: f64
name: parse_data
arguments: tag: D313
type_infered: f64
name: parse_data
arguments: tag: D441
type_infered: f64
name: parse_data
arguments: tag: D438
type_infered: f64
name: parse_data
arguments: tag: D198
type_infered: f64
name: parse_data
arguments: tag: D655
type_infered: f64
name: parse_data
arguments: tag: D419
type_infered: byte[8]
name: parse_data
arguments: tag: D679
type_infered: byte[8]
name: parse_data
arguments: tag: D197
type_infered: f64

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

tool: D406: 22

tool: D63: 44

tool: D428: 21

tool: D631: 42

tool: D667: 20

tool: D211: 40

tool: D145: 19

tool: D21: 38

tool: D621: 18

tool: D275: 36

tool: D24: 17

tool: D481: 34

tool: D175: 16

tool: D265: 32

tool: D658: 15

tool: D122: 30

tool: D376: 14

tool: D546: 28

tool: D391: 13

tool: D152: 26

tool: D332: 12

tool: D344: 24

tool: D333: 11

tool: D201: 10

tool: D367: 9

tool: D382: 8

tool: D483: 7

tool: D652: 6

tool: D537: 5

tool: D677: 4

tool: D324: 3

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

tool: {"D304": [0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x3f]}

tool: D22: 4194304

tool: D627: 1983905792

tool: D86: 427035721728

tool: D44: 55514643824640

tool: D205: 4878349326090240.0

tool: D426: 3.073360075436851e+17

tool: D134: 1.436795835266728e+19

tool: D525: 5.090362387802122e+20

tool: D192: 1.3839422741837018e+22

tool: D97: 2.906278775785774e+23

tool: D531: 4.7227030106518826e+24

tool: D533: 5.924845595181453e+25

tool: D29: 5.702663885362148e+26

tool: D108: 4.1673313008415697e+27

tool: D410: 2.2771488893884295e+28

tool: D696: 9.108595557553718e+28

tool: D240: 2.5902568616793384e+29

tool: D659: 5.0281456726716565e+29

tool: D313: 6.2851820908395706e+29

tool: D441: 4.631186803776526e+29

tool: D438: 1.736695051416197e+29

tool: D198: 2.4809929305945673e+28

tool: D655: 5.638620296805835e+26

tool: {"D419": [0x48,0x1d,0x13,0x43,0x37,0x22,0x26,0x41]}

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

tool: D197: 1.1825043832686951e+33

assistant: ```c
double HO_44(const double a, const double x) {
  double retval = sqrt(0.526024740930e12) * pow(a, 0.1e1 / 0.4e1) * (0.4194304e7 * pow(a, 0.22e2) * pow(x, 0.44e2) - 0.1983905792e10 * pow(a, 0.21e2) * pow(x, 0.42e2) + 0.427035721728e12 * pow(a, 0.20e2) * pow(x, 0.40e2) - 0.55514643824640e14 * pow(a, 0.19e2) * pow(x, 0.38e2) + 0.4878349326090240e16 * pow(a, 0.18e2) * pow(x, 0.36e2) - 0.307336007543685120e18 * pow(a, 0.17e2) * pow(x, 0.34e2) + 0.14367958352667279360e20 * pow(a, 0.16e2) * pow(x, 0.32e2) - 0.509036238780212183040e21 * pow(a, 0.15e2) * pow(x, 0.30e2) + 0.13839422741837018726400e23 * pow(a, 0.14e2) * pow(x, 0.28e2) - 0.290627877578577393254400e24 * pow(a, 0.13e2) * pow(x, 0.26e2) + 0.4722703010651882640384000e25 * pow(a, 0.12e2) * pow(x, 0.24e2) - 0.59248455951814527670272000e26 * pow(a, 0.11e2) * pow(x, 0.22e2) + 0.570266388536214828826368000e27 * pow(a, 0.10e2) * pow(x, 0.20e2) - 0.4167331300841569902961920000e28 * pow(a, 0.9e1) * pow(x, 0.18e2) + 0.22771488893884292684041920000e29 * pow(a, 0.8e1) * pow(x, 0.16e2) - 0.91085955575537170736167680000e29 * pow(a, 0.7e1) * pow(x, 0.14e2) + 0.259025686167933829280976840000e30 * pow(a, 0.6e1) * pow(x, 0.12e2) - 0.502814567267165668604249160000e30 * pow(a, 0.5e1) * pow(x, 0.10e2) + 0.628518209083957085755311450000e30 * pow(a, 0.4e1) * pow(x, 0.8e1) - 0.463118680377652589503913700000e30 * pow(a, 0.3e1) * pow(x, 0.6e1) + 0.173669505141619721063967637500e30 * a * a * pow(x, 0.4e1) - 0.24809929305945674437709662500e29 * a * x * x + 0.563862029680583509947946875e27) * exp(-a * x * x / 0.2e1) * pow(0.3141592654e1, -0.1e1 / 0.4e1) / 0.1182504383268695069054356684800000e34;
  return retval;
}
```