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

```asm
<sub_with_height>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xc0,%rsp
  movsd  %xmm0,-0x78(%rbp)
  movsd  %xmm1,-0x80(%rbp)
  movsd  %xmm2,-0x88(%rbp)
  movsd  %xmm3,-0x90(%rbp)
  movsd  %xmm4,-0x98(%rbp)
  movsd  %xmm5,-0xa0(%rbp)
  movsd  %xmm6,-0xa8(%rbp)
  movsd  %xmm7,-0xb0(%rbp)
  mov    -0x78(%rbp),%rax
  mov    $0x0,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D168(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x70(%rbp)
  movsd  -0x78(%rbp),%xmm1
  movsd  D81(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D133(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x68(%rbp)
  movsd  -0x70(%rbp),%xmm1
  movsd  D7(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x70(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x70(%rbp),%xmm1
  movsd  D115(%rip),%xmm0
  movapd %xmm0,%xmm2
  divsd  -0x68(%rbp),%xmm2
  movsd  D39(%rip),%xmm0
  addsd  %xmm0,%xmm2
  movsd  -0x68(%rbp),%xmm0
  movapd %xmm0,%xmm3
  mulsd  %xmm0,%xmm3
  movsd  D205(%rip),%xmm0
  divsd  %xmm3,%xmm0
  addsd  %xmm2,%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x60(%rbp)
  movsd  -0x60(%rbp),%xmm1
  movsd  D115(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  D68(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  mov    $0x0,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movq   %xmm0,%rax
  mov    %rax,-0x58(%rbp)
  mov    -0x58(%rbp),%rax
  mov    $0x1,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D38(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  mov    -0x88(%rbp),%rax
  mov    $0x1,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D20(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x48(%rbp),%xmm1
  movsd  D115(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  %xmm1,-0xb8(%rbp)
  mov    D151(%rip),%rax
  movq   %rax,%xmm0
  call   <cos@plt>
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  mulsd  -0xb8(%rbp),%xmm0
  movsd  -0x50(%rbp),%xmm1
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  -0x58(%rbp),%xmm0
  addsd  %xmm0,%xmm0
  mulsd  -0x40(%rbp),%xmm0
  movsd  D162(%rip),%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  mov    -0x38(%rbp),%rax
  mov    $0x0,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  D154(%rip),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D190(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  -0xa0(%rbp),%xmm0
  divsd  -0x80(%rbp),%xmm0
  movsd  D39(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xb8(%rbp)
  mov    -0x78(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movsd  D1(%rip),%xmm1
  mulsd  %xmm0,%xmm1
  movsd  D16(%rip),%xmm0
  addsd  %xmm1,%xmm0
  mulsd  -0xb8(%rbp),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x58(%rbp),%xmm1
  movsd  D89(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  -0x28(%rbp),%xmm0
  mulsd  -0x30(%rbp),%xmm0
  divsd  -0xa8(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x20(%rbp),%xmm0
  divsd  -0x60(%rbp),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  0x18(%rbp),%xmm1
  movsd  D33(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mulsd  0x18(%rbp),%xmm0
  movsd  -0x88(%rbp),%xmm2
  movsd  D201(%rip),%xmm1
  mulsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movsd  -0x10(%rbp),%xmm1
  movsd  D39(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movsd  %xmm1,-0xb8(%rbp)
  movsd  0x18(%rbp),%xmm1
  movsd  D212(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D19(%rip),%xmm0
  divsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%edx
  movsd  -0x78(%rbp),%xmm0
  divsd  -0xb0(%rbp),%xmm0
  movq   %xmm0,%rax
  mov    %edx,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  -0xb8(%rbp),%xmm0
  subsd  -0x10(%rbp),%xmm0
  movsd  0x10(%rbp),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x18(%rbp),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D168
type: byte[8]
name: disassemble_data
arguments: data_tag: D81
type: f64
name: disassemble_data
arguments: data_tag: D133
type: f64
name: disassemble_data
arguments: data_tag: D7
type: byte[8]
name: disassemble_data
arguments: data_tag: D115
type: f64
name: disassemble_data
arguments: data_tag: D39
type: f64
name: disassemble_data
arguments: data_tag: D205
type: f64
name: disassemble_data
arguments: data_tag: D68
type: byte[8]
name: disassemble_data
arguments: data_tag: D38
type: f64
name: disassemble_data
arguments: data_tag: D20
type: f64
name: disassemble_data
arguments: data_tag: D151
type: byte[8]
name: disassemble_data
arguments: data_tag: D162
type: byte[8]
name: disassemble_data
arguments: data_tag: D154
type: f64
name: disassemble_data
arguments: data_tag: D190
type: f64
name: disassemble_data
arguments: data_tag: D1
type: byte[8]
name: disassemble_data
arguments: data_tag: D16
type: f64
name: disassemble_data
arguments: data_tag: D89
type: byte[8]
name: disassemble_data
arguments: data_tag: D33
type: f64
name: disassemble_data
arguments: data_tag: D201
type: f64
name: disassemble_data
arguments: data_tag: D212
type: f64
name: disassemble_data
arguments: data_tag: D19
type: byte[8]

tool: {"D168": [0x7b,0x85,0x05,0xf7,0x03,0x1e,0x08,0x3f]}

tool: D81: 12.6

tool: D133: 4.08

tool: {"D7": [0x41,0x6c,0x0d,0xc9,0x3d,0x02,0xae,0x40]}

tool: D115: 3

tool: D39: 1

tool: D205: 2

tool: {"D68": [0x30,0x11,0xca,0x56,0xae,0x81,0xc6,0x40]}

tool: D38: 11000000

tool: D20: 0.005

tool: {"D151": [0x97,0xd1,0x7e,0x5a,0xfb,0x21,0xe9,0x3f]}

tool: {"D162": [0x05,0xa2,0x27,0x65,0x52,0x43,0xeb,0x3e]}

tool: D154: 0.606

tool: D190: 1.79

tool: {"D1": [0xd9,0xce,0xf7,0x53,0xe3,0xa5,0x9b,0x3f]}

tool: D16: 1.019

tool: {"D89": [0x97,0xd1,0x7e,0x5a,0xfb,0x21,0x19,0x40]}

tool: D33: 0.5

tool: D201: 0.3

tool: D212: 0.4

tool: {"D19": [0x33,0x33,0x33,0x33,0x33,0x33,0xd3,0xbf]}

assistant: ```c
double sub_with_height(double z, double es, double Wind, double AirDens, double ZO, double EactAir, double F, double hsalt, double phi_r, double ushear, double Zrh) {
  double Rrz, ALPHAz, Mz;
  double Rmean, terminal_v, fluctuat_v;
  double Vtz, Re, Nu;
  double sigz, dMdt;
  double temp;
  double psi_t, phi_t;
  Rrz = 4.6e-5 * pow(z, -.258);
  ALPHAz = 4.08 + 12.6 * z;
  Mz = (4. / 3.) * 3.1415927 * 917. * Rrz * Rrz * Rrz * (1. + (3. / ALPHAz) + (2. / (ALPHAz * ALPHAz)));
  Rmean = pow((3. * Mz) / (4. * 3.1415927 * 917.), 1. / 3.);
  terminal_v = 1.1e7 * pow(Rmean, 1.8);
  fluctuat_v = 0.005 * pow(Wind, 1.36);
  Vtz = terminal_v + 3. * fluctuat_v * cos(3.1415927 / 4.);
  Re = 2. * Rmean * Vtz / 1.3e-5;
  Nu = 1.79 + 0.606 * pow(Re, 0.5);
  sigz = ((EactAir / es) - 1.) * (1.019 + .027 * log(z));
  dMdt = 2 * 3.1415927 * Rmean * sigz * Nu / F;
  psi_t = dMdt / Mz;
  temp = (0.5 * ushear * ushear) / (Wind * 0.3);
  phi_t = phi_r * ((temp + 1.) * pow((z / hsalt), (-1. * 0.3) / (0.40 * ushear)) - temp);
  return psi_t * phi_t;
}
```