user: Demonstrate the C code that generates the assembly output below:

```asm
<HO_41>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x118,%rsp
  movsd  %xmm1,(%rsp)
  movsd  D404(%rip),%xmm1
  movsd  %xmm0,0x8(%rsp)
  call   <pow@plt>
  movsd  D356(%rip),%xmm15
  movq   %xmm0,%rbx
  movsd  0x8(%rsp),%xmm0
  movapd %xmm15,%xmm1
  call   <pow@plt>
  movsd  D167(%rip),%xmm1
  movsd  %xmm0,0x108(%rsp)
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  D243(%rip),%xmm1
  movsd  %xmm0,0x10(%rsp)
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  D391(%rip),%xmm1
  movq   %xmm0,%r14
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  D128(%rip),%xmm14
  movsd  %xmm0,0x18(%rsp)
  movsd  0x8(%rsp),%xmm0
  movapd %xmm14,%xmm1
  call   <pow@plt>
  movsd  D209(%rip),%xmm1
  movq   %xmm0,%r15
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  D181(%rip),%xmm1
  movsd  %xmm0,0x20(%rsp)
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  D483(%rip),%xmm1
  movsd  %xmm0,0x100(%rsp)
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  D629(%rip),%xmm13
  movsd  %xmm0,0x28(%rsp)
  movsd  0x8(%rsp),%xmm0
  movapd %xmm13,%xmm1
  call   <pow@plt>
  movsd  D158(%rip),%xmm1
  movq   %xmm0,%rbp
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  D623(%rip),%xmm1
  movsd  %xmm0,0x30(%rsp)
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  D241(%rip),%xmm1
  movsd  %xmm0,0xf8(%rsp)
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  D428(%rip),%xmm12
  movsd  %xmm0,0x38(%rsp)
  movsd  0x8(%rsp),%xmm0
  movapd %xmm12,%xmm1
  call   <pow@plt>
  movsd  D93(%rip),%xmm1
  movsd  %xmm0,0xf0(%rsp)
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  D311(%rip),%xmm1
  movsd  %xmm0,0x40(%rsp)
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  D544(%rip),%xmm1
  movsd  %xmm0,0xe8(%rsp)
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  D463(%rip),%xmm11
  movsd  %xmm0,0x48(%rsp)
  movsd  0x8(%rsp),%xmm0
  movapd %xmm11,%xmm1
  call   <pow@plt>
  movsd  D2(%rip),%xmm1
  movsd  %xmm0,0xe0(%rsp)
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  D161(%rip),%xmm1
  movsd  %xmm0,0x50(%rsp)
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  movsd  D194(%rip),%xmm1
  movsd  %xmm0,0xd8(%rsp)
  movsd  (%rsp),%xmm0
  call   <pow@plt>
  movsd  D398(%rip),%xmm10
  movsd  %xmm0,0x58(%rsp)
  movsd  0x8(%rsp),%xmm0
  movapd %xmm10,%xmm1
  call   <pow@plt>
  mov    D356(%rip),%rax
  movsd  %xmm0,0xd0(%rsp)
  movsd  (%rsp),%xmm0
  movq   %rax,%xmm1
  call   <pow@plt>
  movsd  D334(%rip),%xmm1
  movsd  %xmm0,0x60(%rsp)
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  mov    D128(%rip),%rax
  movsd  %xmm0,0xc8(%rsp)
  movsd  (%rsp),%xmm0
  movq   %rax,%xmm1
  call   <pow@plt>
  movsd  D628(%rip),%xmm14
  movsd  %xmm0,0x68(%rsp)
  movsd  0x8(%rsp),%xmm0
  movapd %xmm14,%xmm1
  call   <pow@plt>
  mov    D629(%rip),%rax
  movq   %xmm0,%r12
  movsd  (%rsp),%xmm0
  movq   %rax,%xmm1
  call   <pow@plt>
  movsd  D259(%rip),%xmm1
  movsd  %xmm0,0x70(%rsp)
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  mov    D428(%rip),%rax
  movsd  %xmm0,0xc0(%rsp)
  movsd  (%rsp),%xmm0
  movq   %rax,%xmm1
  call   <pow@plt>
  movsd  D182(%rip),%xmm12
  movsd  %xmm0,0x78(%rsp)
  movsd  0x8(%rsp),%xmm0
  movapd %xmm12,%xmm1
  call   <pow@plt>
  mov    D463(%rip),%rax
  movq   %xmm0,%r13
  movsd  (%rsp),%xmm0
  movq   %rax,%xmm1
  call   <pow@plt>
  movsd  D176(%rip),%xmm1
  movsd  %xmm0,0x80(%rsp)
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  mov    D398(%rip),%rax
  movsd  %xmm0,0xb8(%rsp)
  movsd  (%rsp),%xmm0
  movq   %rax,%xmm1
  call   <pow@plt>
  movsd  D410(%rip),%xmm10
  movsd  %xmm0,0x88(%rsp)
  movsd  0x8(%rsp),%xmm0
  movapd %xmm10,%xmm1
  call   <pow@plt>
  mov    D628(%rip),%rax
  movsd  %xmm0,0x90(%rsp)
  movsd  (%rsp),%xmm0
  movq   %rax,%xmm1
  call   <pow@plt>
  movsd  D487(%rip),%xmm1
  movsd  %xmm0,0x98(%rsp)
  movsd  0x8(%rsp),%xmm0
  call   <pow@plt>
  mov    D182(%rip),%rax
  movsd  %xmm0,0xb0(%rsp)
  movsd  (%rsp),%xmm0
  movq   %rax,%xmm1
  call   <pow@plt>
  mov    D410(%rip),%rax
  movsd  %xmm0,0xa0(%rsp)
  movsd  (%rsp),%xmm0
  movq   %rax,%xmm1
  call   <pow@plt>
  movsd  0x8(%rsp),%xmm4
  movsd  (%rsp),%xmm5
  xorpd  D240(%rip),%xmm4
  movsd  %xmm0,0xa8(%rsp)
  movapd %xmm4,%xmm0
  mulsd  %xmm5,%xmm0
  mulsd  %xmm5,%xmm0
  mulsd  D437(%rip),%xmm0
  call   <exp@plt>
  movq   %r14,%xmm1
  movsd  0x108(%rsp),%xmm2
  movsd  0x100(%rsp),%xmm9
  mulsd  D88(%rip),%xmm2
  movsd  0xf8(%rsp),%xmm8
  mulsd  D350(%rip),%xmm1
  movsd  0xf0(%rsp),%xmm7
  mulsd  0x18(%rsp),%xmm1
  movsd  0xe8(%rsp),%xmm6
  mulsd  0x10(%rsp),%xmm2
  movsd  0xe0(%rsp),%xmm5
  mulsd  D322(%rip),%xmm9
  movsd  0xd8(%rsp),%xmm4
  mulsd  0x28(%rsp),%xmm9
  movsd  0xd0(%rsp),%xmm3
  mulsd  D476(%rip),%xmm8
  movsd  0xc8(%rsp),%xmm15
  mulsd  0x38(%rsp),%xmm8
  subsd  %xmm1,%xmm2
  movq   %r15,%xmm1
  mulsd  D247(%rip),%xmm1
  mulsd  0x20(%rsp),%xmm1
  mulsd  D554(%rip),%xmm7
  mulsd  0x40(%rsp),%xmm7
  mulsd  D462(%rip),%xmm6
  mulsd  0x48(%rsp),%xmm6
  addsd  %xmm1,%xmm2
  movq   %rbp,%xmm1
  mulsd  D394(%rip),%xmm1
  mulsd  0x30(%rsp),%xmm1
  subsd  %xmm9,%xmm2
  mulsd  D229(%rip),%xmm5
  mulsd  0x50(%rsp),%xmm5
  mulsd  D100(%rip),%xmm4
  mulsd  0x58(%rsp),%xmm4
  addsd  %xmm1,%xmm2
  mulsd  D205(%rip),%xmm3
  mulsd  0x60(%rsp),%xmm3
  mulsd  D596(%rip),%xmm15
  subsd  %xmm8,%xmm2
  mulsd  0x68(%rsp),%xmm15
  movsd  0xc0(%rsp),%xmm13
  mulsd  D304(%rip),%xmm13
  movsd  0xb8(%rsp),%xmm11
  mulsd  0x78(%rsp),%xmm13
  movsd  0xb0(%rsp),%xmm14
  mulsd  D408(%rip),%xmm11
  addsd  %xmm7,%xmm2
  mulsd  0x88(%rsp),%xmm11
  mulsd  D189(%rip),%xmm14
  mulsd  0xa0(%rsp),%xmm14
  movapd %xmm2,%xmm1
  movq   %r12,%xmm2
  subsd  %xmm6,%xmm1
  mulsd  D553(%rip),%xmm2
  mulsd  0x70(%rsp),%xmm2
  addsd  %xmm5,%xmm1
  movsd  (%rsp),%xmm5
  subsd  %xmm4,%xmm1
  addsd  %xmm3,%xmm1
  movsd  0x8(%rsp),%xmm3
  subsd  %xmm15,%xmm1
  addsd  %xmm2,%xmm1
  movq   %r13,%xmm2
  mulsd  D78(%rip),%xmm2
  mulsd  0x80(%rsp),%xmm2
  subsd  %xmm13,%xmm1
  addsd  %xmm2,%xmm1
  movsd  0x90(%rsp),%xmm2
  mulsd  D230(%rip),%xmm2
  mulsd  0x98(%rsp),%xmm2
  subsd  %xmm11,%xmm1
  addsd  %xmm2,%xmm1
  movsd  D548(%rip),%xmm2
  mulsd  %xmm3,%xmm2
  subsd  %xmm14,%xmm1
  mulsd  %xmm3,%xmm2
  mulsd  0xa8(%rsp),%xmm2
  mulsd  D273(%rip),%xmm3
  addsd  %xmm2,%xmm1
  movapd %xmm3,%xmm2
  mulsd  %xmm5,%xmm2
  mulsd  %xmm5,%xmm2
  subsd  %xmm2,%xmm1
  movq   %rbx,%xmm2
  addsd  D269(%rip),%xmm1
  mulsd  D369(%rip),%xmm2
  mulsd  %xmm5,%xmm2
  mulsd  %xmm2,%xmm1
  mulsd  %xmm1,%xmm0
  mulsd  D265(%rip),%xmm0
  divsd  D581(%rip),%xmm0
  add    $0x118,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: parse_data
arguments: data_label: D404
type: byte[8]
name: parse_data
arguments: data_label: D356
type: f64
name: parse_data
arguments: data_label: D167
type: f64
name: parse_data
arguments: data_label: D243
type: f64
name: parse_data
arguments: data_label: D391
type: f64
name: parse_data
arguments: data_label: D128
type: f64
name: parse_data
arguments: data_label: D209
type: f64
name: parse_data
arguments: data_label: D181
type: f64
name: parse_data
arguments: data_label: D483
type: f64
name: parse_data
arguments: data_label: D629
type: f64
name: parse_data
arguments: data_label: D158
type: f64
name: parse_data
arguments: data_label: D623
type: f64
name: parse_data
arguments: data_label: D241
type: f64
name: parse_data
arguments: data_label: D428
type: f64
name: parse_data
arguments: data_label: D93
type: f64
name: parse_data
arguments: data_label: D311
type: f64
name: parse_data
arguments: data_label: D544
type: f64
name: parse_data
arguments: data_label: D463
type: f64
name: parse_data
arguments: data_label: D2
type: f64
name: parse_data
arguments: data_label: D161
type: f64
name: parse_data
arguments: data_label: D194
type: f64
name: parse_data
arguments: data_label: D398
type: f64
name: parse_data
arguments: data_label: D334
type: f64
name: parse_data
arguments: data_label: D628
type: f64
name: parse_data
arguments: data_label: D259
type: f64
name: parse_data
arguments: data_label: D182
type: f64
name: parse_data
arguments: data_label: D176
type: f64
name: parse_data
arguments: data_label: D410
type: f64
name: parse_data
arguments: data_label: D487
type: f64
name: parse_data
arguments: data_label: D240
type: byte[16]
name: parse_data
arguments: data_label: D437
type: byte[8]
name: parse_data
arguments: data_label: D88
type: f64
name: parse_data
arguments: data_label: D350
type: f64
name: parse_data
arguments: data_label: D322
type: f64
name: parse_data
arguments: data_label: D476
type: f64
name: parse_data
arguments: data_label: D247
type: f64
name: parse_data
arguments: data_label: D554
type: f64
name: parse_data
arguments: data_label: D462
type: f64
name: parse_data
arguments: data_label: D394
type: f64
name: parse_data
arguments: data_label: D229
type: f64
name: parse_data
arguments: data_label: D100
type: f64
name: parse_data
arguments: data_label: D205
type: f64
name: parse_data
arguments: data_label: D596
type: f64
name: parse_data
arguments: data_label: D304
type: f64
name: parse_data
arguments: data_label: D408
type: f64
name: parse_data
arguments: data_label: D189
type: f64
name: parse_data
arguments: data_label: D553
type: f64
name: parse_data
arguments: data_label: D78
type: f64
name: parse_data
arguments: data_label: D230
type: f64
name: parse_data
arguments: data_label: D548
type: f64
name: parse_data
arguments: data_label: D273
type: f64
name: parse_data
arguments: data_label: D269
type: f64
name: parse_data
arguments: data_label: D369
type: byte[8]
name: parse_data
arguments: data_label: D265
type: byte[8]
name: parse_data
arguments: data_label: D581
type: f64

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

tool: D356: 20

tool: D167: 40

tool: D243: 19

tool: D391: 38

tool: D128: 18

tool: D209: 36

tool: D181: 17

tool: D483: 34

tool: D629: 16

tool: D158: 32

tool: D623: 15

tool: D241: 30

tool: D428: 14

tool: D93: 28

tool: D311: 13

tool: D544: 26

tool: D463: 12

tool: D2: 24

tool: D161: 11

tool: D194: 22

tool: D398: 10

tool: D334: 9

tool: D628: 8

tool: D259: 7

tool: D182: 6

tool: D176: 5

tool: D410: 4

tool: D487: 3

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

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

tool: D88: 1048576

tool: D350: 429916160

tool: D322: 8840258519040

tool: D476: 3.471569520427008e+16

tool: D247: 79641968640

tool: D554: 1.3452331891654656e+18

tool: D462: 3.90117624857985e+19

tool: D394: 657494227353600

tool: D229: 8.558205395322047e+20

tool: D100: 1.4263675658870077e+22

tool: D205: 1.8043549708470647e+23

tool: D596: 1.7223388358085619e+24

tool: D304: 6.419024353455756e+25

tool: D408: 6.258548744619362e+26

tool: D189: 1.1389638340391853e+27

tool: D553: 1.2271664205136003e+25

tool: D78: 2.4071341325459083e+26

tool: D230: 1.0756880654814528e+27

tool: D548: 6.643955698561914e+26

tool: D273: 1.7484093943583986e+26

tool: D269: 1.3113070457687988e+25

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

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

tool: D581: 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;
}
```