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

```asm
<HO_deriv_38>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  movsd  %xmm0,-0x18(%rbp)
  movsd  %xmm1,-0x20(%rbp)
  movsd  D0(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D23(%rip),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D489(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,-0x28(%rbp)
  movsd  -0x18(%rbp),%xmm0
  movq   D300(%rip),%xmm1
  xorpd  %xmm1,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  D40(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  mulsd  -0x28(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  D502(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  %xmm0,-0x30(%rbp)
  movsd  D442(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movapd %xmm0,%xmm3
  mulsd  -0x30(%rbp),%xmm3
  movsd  %xmm3,-0x30(%rbp)
  movsd  D234(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D229(%rip),%xmm1
  movapd %xmm0,%xmm6
  mulsd  %xmm1,%xmm6
  movsd  %xmm6,-0x38(%rbp)
  movsd  D512(%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  D50(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D144(%rip),%xmm1
  movapd %xmm0,%xmm7
  mulsd  %xmm1,%xmm7
  movsd  %xmm7,-0x38(%rbp)
  movsd  D393(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm4
  addsd  -0x30(%rbp),%xmm4
  movsd  %xmm4,-0x30(%rbp)
  movsd  D500(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D228(%rip),%xmm1
  movapd %xmm0,%xmm2
  mulsd  %xmm1,%xmm2
  movsd  %xmm2,-0x38(%rbp)
  movsd  D583(%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  D333(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D430(%rip),%xmm1
  movapd %xmm0,%xmm6
  mulsd  %xmm1,%xmm6
  movsd  %xmm6,-0x38(%rbp)
  movsd  D27(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm5
  addsd  -0x30(%rbp),%xmm5
  movsd  %xmm5,-0x30(%rbp)
  movsd  D525(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D143(%rip),%xmm1
  movapd %xmm0,%xmm7
  mulsd  %xmm1,%xmm7
  movsd  %xmm7,-0x38(%rbp)
  movsd  D513(%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  D189(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D482(%rip),%xmm1
  movapd %xmm0,%xmm2
  mulsd  %xmm1,%xmm2
  movsd  %xmm2,-0x38(%rbp)
  movsd  D298(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm6
  addsd  -0x30(%rbp),%xmm6
  movsd  %xmm6,-0x30(%rbp)
  movsd  D75(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D238(%rip),%xmm1
  movapd %xmm0,%xmm5
  mulsd  %xmm1,%xmm5
  movsd  %xmm5,-0x38(%rbp)
  movsd  D224(%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  D380(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D65(%rip),%xmm1
  movapd %xmm0,%xmm3
  mulsd  %xmm1,%xmm3
  movsd  %xmm3,-0x38(%rbp)
  movsd  D147(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm7
  addsd  -0x30(%rbp),%xmm7
  movsd  %xmm7,-0x30(%rbp)
  movsd  D14(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D88(%rip),%xmm1
  movapd %xmm0,%xmm4
  mulsd  %xmm1,%xmm4
  movsd  %xmm4,-0x38(%rbp)
  movsd  D455(%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  D379(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D136(%rip),%xmm1
  movapd %xmm0,%xmm6
  mulsd  %xmm1,%xmm6
  movsd  %xmm6,-0x38(%rbp)
  movsd  D234(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm2
  addsd  -0x30(%rbp),%xmm2
  movsd  %xmm2,-0x30(%rbp)
  movsd  D315(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D425(%rip),%xmm1
  movapd %xmm0,%xmm7
  mulsd  %xmm1,%xmm7
  movsd  %xmm7,-0x38(%rbp)
  movsd  D500(%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  D402(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D172(%rip),%xmm1
  movapd %xmm0,%xmm5
  mulsd  %xmm1,%xmm5
  movsd  %xmm5,-0x38(%rbp)
  movsd  D525(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm3
  addsd  -0x30(%rbp),%xmm3
  movsd  %xmm3,-0x30(%rbp)
  movsd  D540(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D384(%rip),%xmm1
  movapd %xmm0,%xmm2
  mulsd  %xmm1,%xmm2
  movsd  %xmm2,-0x38(%rbp)
  movsd  D75(%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  D506(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D139(%rip),%xmm1
  movapd %xmm0,%xmm4
  mulsd  %xmm1,%xmm4
  movsd  %xmm4,-0x38(%rbp)
  movsd  D14(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm4
  addsd  -0x30(%rbp),%xmm4
  movsd  %xmm4,-0x30(%rbp)
  movsd  D42(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D329(%rip),%xmm1
  movapd %xmm0,%xmm3
  mulsd  %xmm1,%xmm3
  movsd  %xmm3,-0x38(%rbp)
  movsd  D315(%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  D302(%rip),%xmm0
  mov    -0x18(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D456(%rip),%xmm1
  movapd %xmm0,%xmm6
  mulsd  %xmm1,%xmm6
  movsd  %xmm6,-0x38(%rbp)
  movsd  D540(%rip),%xmm0
  mov    -0x20(%rbp),%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0x38(%rbp),%xmm0
  movapd %xmm0,%xmm5
  addsd  -0x30(%rbp),%xmm5
  movsd  %xmm5,-0x30(%rbp)
  movsd  -0x18(%rbp),%xmm1
  movsd  D151(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movapd %xmm0,%xmm7
  mulsd  -0x18(%rbp),%xmm7
  movsd  %xmm7,-0x38(%rbp)
  movsd  D42(%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
  movapd %xmm5,%xmm1
  movsd  -0x18(%rbp),%xmm2
  movsd  D313(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  mulsd  -0x20(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  D275(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  -0x28(%rbp),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D231(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x8(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D0
data_type: byte[8]
name: parse_data
arguments: data_tag: D23
data_type: byte[8]
name: parse_data
arguments: data_tag: D489
data_type: byte[8]
name: parse_data
arguments: data_tag: D300
data_type: byte[8]
name: parse_data
arguments: data_tag: D40
data_type: f64
name: parse_data
arguments: data_tag: D502
data_type: f64
name: parse_data
arguments: data_tag: D442
data_type: f64
name: parse_data
arguments: data_tag: D234
data_type: f64
name: parse_data
arguments: data_tag: D229
data_type: byte[8]
name: parse_data
arguments: data_tag: D512
data_type: f64
name: parse_data
arguments: data_tag: D50
data_type: f64
name: parse_data
arguments: data_tag: D144
data_type: byte[8]
name: parse_data
arguments: data_tag: D393
data_type: f64
name: parse_data
arguments: data_tag: D500
data_type: f64
name: parse_data
arguments: data_tag: D228
data_type: byte[8]
name: parse_data
arguments: data_tag: D583
data_type: f64
name: parse_data
arguments: data_tag: D333
data_type: f64
name: parse_data
arguments: data_tag: D430
data_type: byte[8]
name: parse_data
arguments: data_tag: D27
data_type: f64
name: parse_data
arguments: data_tag: D525
data_type: f64
name: parse_data
arguments: data_tag: D143
data_type: byte[8]
name: parse_data
arguments: data_tag: D513
data_type: f64
name: parse_data
arguments: data_tag: D189
data_type: f64
name: parse_data
arguments: data_tag: D482
data_type: byte[8]
name: parse_data
arguments: data_tag: D298
data_type: f64
name: parse_data
arguments: data_tag: D75
data_type: f64
name: parse_data
arguments: data_tag: D238
data_type: byte[8]
name: parse_data
arguments: data_tag: D224
data_type: f64
name: parse_data
arguments: data_tag: D380
data_type: f64
name: parse_data
arguments: data_tag: D65
data_type: byte[8]
name: parse_data
arguments: data_tag: D147
data_type: f64
name: parse_data
arguments: data_tag: D14
data_type: f64
name: parse_data
arguments: data_tag: D88
data_type: byte[8]
name: parse_data
arguments: data_tag: D455
data_type: f64
name: parse_data
arguments: data_tag: D379
data_type: f64
name: parse_data
arguments: data_tag: D136
data_type: byte[8]
name: parse_data
arguments: data_tag: D315
data_type: f64
name: parse_data
arguments: data_tag: D425
data_type: byte[8]
name: parse_data
arguments: data_tag: D402
data_type: f64
name: parse_data
arguments: data_tag: D172
data_type: byte[8]
name: parse_data
arguments: data_tag: D540
data_type: f64
name: parse_data
arguments: data_tag: D384
data_type: byte[8]
name: parse_data
arguments: data_tag: D506
data_type: f64
name: parse_data
arguments: data_tag: D139
data_type: byte[8]
name: parse_data
arguments: data_tag: D42
data_type: f64
name: parse_data
arguments: data_tag: D329
data_type: byte[8]
name: parse_data
arguments: data_tag: D302
data_type: f64
name: parse_data
arguments: data_tag: D456
data_type: byte[8]
name: parse_data
arguments: data_tag: D151
data_type: byte[8]
name: parse_data
arguments: data_tag: D313
data_type: byte[8]
name: parse_data
arguments: data_tag: D275
data_type: byte[8]
name: parse_data
arguments: data_tag: D231
data_type: byte[8]

tool: {"D0": [0x00,0x00,0x00,0x00,0x00,0x00,0xf4,0x3f]}

tool: {"D23": [0x6f,0xf6,0x97,0xb5,0xa0,0x08,0x97,0xbb]}

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

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

tool: D40: 2

tool: D502: 19

tool: D442: 38

tool: D234: 18

tool: {"D229": [0x00,0x00,0x00,0x00,0x00,0x58,0x78,0x40]}

tool: D512: 36

tool: D50: 17

tool: {"D144": [0x00,0x00,0x00,0x00,0xf4,0x9a,0xf0,0x40]}

tool: D393: 34

tool: D500: 16

tool: {"D228": [0x00,0x00,0x00,0xd8,0x1f,0xed,0x5a,0x41]}

tool: D583: 32

tool: D333: 15

tool: {"D430": [0x00,0x00,0x40,0x2a,0x78,0x00,0xbd,0x41]}

tool: D27: 30

tool: D525: 14

tool: {"D143": [0x00,0x80,0x5d,0x31,0xe3,0xf7,0x15,0x42]}

tool: D513: 28

tool: D189: 13

tool: {"D482": [0x00,0x52,0x2e,0x71,0xc9,0x2c,0x68,0x42]}

tool: D298: 26

tool: D75: 12

tool: {"D238": [0x38,0x11,0xfc,0x03,0xf4,0xae,0xb3,0x42]}

tool: D224: 24

tool: D380: 11

tool: {"D65": [0x04,0x11,0x73,0xb5,0xda,0xef,0xf7,0x42]}

tool: D147: 22

tool: D14: 10

tool: {"D88": [0x39,0xd3,0x31,0x95,0xe6,0xca,0x35,0x43]}

tool: D455: 20

tool: D379: 9

tool: {"D136": [0x03,0xf4,0x6c,0xf1,0x3a,0x9b,0x6d,0x43]}

tool: D315: 8

tool: {"D425": [0x2b,0x5c,0x55,0x0a,0x89,0xbd,0x9d,0x43]}

tool: D402: 7

tool: {"D172": [0xa3,0xd2,0x9b,0xe8,0xbc,0xc1,0xc5,0x43]}

tool: D540: 6

tool: {"D384": [0x6a,0xfb,0x4c,0x72,0xcf,0xa9,0xe6,0x43]}

tool: D506: 5

tool: {"D139": [0x82,0xa9,0x5d,0xf9,0xde,0x44,0x00,0x44]}

tool: D42: 4

tool: {"D329": [0x63,0x23,0xd5,0x6b,0x86,0xb7,0x0e,0x44]}

tool: D302: 3

tool: {"D456": [0x01,0x31,0x27,0x48,0x71,0xc7,0x11,0x44]}

tool: {"D151": [0x02,0xd8,0xfa,0x2c,0xbf,0x94,0x06,0x44]}

tool: {"D313": [0xba,0xe9,0x3d,0xa8,0x06,0xc7,0xe9,0x43]}

tool: {"D275": [0xf2,0xf6,0x09,0x88,0xf2,0xb6,0xb0,0x43]}

tool: {"D231": [0x59,0x5d,0xe4,0x82,0x15,0x5c,0xd2,0x40]}

assistant: ```c
double HO_deriv_38(const double a, const double x) {
  double retval = -0.2e1 / 0.1640158906527578311875e22 * pow(a, 0.5e1 / 0.4e1) * pow(0.3141592654e1, -0.1e1 / 0.4e1) * exp(-a * x * x / 0.2e1) * x * (pow(a, 0.19e2) * pow(x, 0.38e2) - 0.779e3 / 0.2e1 * pow(a, 0.18e2) * pow(x, 0.36e2) + 0.272061e6 / 0.4e1 * pow(a, 0.17e2) * pow(x, 0.34e2) - 0.56468475e8 / 0.8e1 * pow(a, 0.16e2) * pow(x, 0.32e2) + 0.1946280105e10 / 0.4e1 * pow(a, 0.15e2) * pow(x, 0.30e2) - 0.188706349755e12 / 0.8e1 * pow(a, 0.14e2) * pow(x, 0.28e2) + 0.13290318632745e14 / 0.16e2 * pow(a, 0.13e2) * pow(x, 0.26e2) - 0.692548452450855e15 / 0.32e2 * pow(a, 0.12e2) * pow(x, 0.24e2) + 0.53901176723769375e17 / 0.128e3 * pow(a, 0.11e2) * pow(x, 0.22e2) - 0.1570320948552481125e19 / 0.256e3 * pow(a, 0.10e2) * pow(x, 0.20e2) + 0.34133818513272352875e20 / 0.512e3 * pow(a, 0.9e1) * pow(x, 0.18e2) - 0.548613036844289542125e21 / 0.1024e4 * pow(a, 0.8e1) * pow(x, 0.16e2) + 0.3210735313990350271125e22 / 0.1024e4 * pow(a, 0.7e1) * pow(x, 0.14e2) - 0.26756127616586252259375e23 / 0.2048e4 * pow(a, 0.6e1) * pow(x, 0.12e2) + 0.153656618598109620118125e24 / 0.4096e4 * pow(a, 0.5e1) * pow(x, 0.10e2) - 0.580225738885399013281875e24 / 0.8192e4 * pow(a, 0.4e1) * pow(x, 0.8e1) + 0.5373394886199564775175625e25 / 0.65536e5 * pow(a, 0.3e1) * pow(x, 0.6e1) - 0.6824701210061253355711875e25 / 0.131072e6 * a * a * pow(x, 0.4e1) + 0.3895377403002998490703125e25 / 0.262144e6 * a * x * x - 0.631461179013117650071875e24 / 0.524288e6) * sqrt(0.353452638e9);
  return retval;
}
```