user: 这段汇编代码用C语言表示是什么样的：

```asm
<latsens>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  add    $0xffffffffffffff80,%rsp
  movsd  %xmm0,-0x38(%rbp)
  movsd  %xmm1,-0x40(%rbp)
  movsd  %xmm2,-0x48(%rbp)
  movsd  %xmm3,-0x50(%rbp)
  movsd  %xmm4,-0x58(%rbp)
  movsd  %xmm5,-0x60(%rbp)
  movsd  %xmm6,-0x68(%rbp)
  movsd  %xmm7,-0x70(%rbp)
  mov    %rdi,-0x78(%rbp)
  mov    %rsi,-0x80(%rbp)
  movsd  -0x48(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  jbe    L32
  movsd  -0x50(%rbp),%xmm1
  movsd  D174(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  D52(%rip),%xmm2
  movsd  -0x58(%rbp),%xmm1
  mov    -0x38(%rbp),%rax
  movsd  0x10(%rbp),%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <lkdrag@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x2c(%rbp)
  jmp    L41
L32:
  movsd  -0x50(%rbp),%xmm1
  movsd  D174(%rip),%xmm0
  addsd  %xmm1,%xmm0
  movsd  D166(%rip),%xmm2
  movsd  -0x58(%rbp),%xmm1
  mov    -0x38(%rbp),%rax
  movsd  0x10(%rbp),%xmm4
  movapd %xmm2,%xmm3
  movapd %xmm1,%xmm2
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  call   <lkdrag@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x2c(%rbp)
L41:
  pxor   %xmm0,%xmm0
  comisd -0x48(%rbp),%xmm0
  jb     L3
  movsd  -0x38(%rbp),%xmm0
  comisd -0x40(%rbp),%xmm0
  jbe    L3
  movsd  -0x38(%rbp),%xmm0
  movsd  D174(%rip),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  D185(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x38(%rbp),%xmm2
  movsd  D102(%rip),%xmm1
  addsd  %xmm2,%xmm1
  movsd  D174(%rip),%xmm2
  subsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movsd  D154(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  jmp    L16
L3:
  movsd  -0x38(%rbp),%xmm0
  movsd  D174(%rip),%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  D76(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  -0x38(%rbp),%xmm1
  movsd  D157(%rip),%xmm2
  subsd  %xmm2,%xmm1
  divsd  %xmm1,%xmm0
  movq   %xmm0,%rax
  movq   %rax,%xmm0
  call   <exp@plt>
  movsd  D154(%rip),%xmm1
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
L16:
  movsd  -0x28(%rbp),%xmm1
  movsd  D70(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x60(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm1,%xmm2
  movsd  -0x28(%rbp),%xmm0
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  D75(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  -0x68(%rbp),%xmm1
  movsd  D70(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  -0x60(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm1,%xmm2
  movsd  -0x68(%rbp),%xmm0
  movapd %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  movsd  D75(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movsd  -0x18(%rbp),%xmm0
  subsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x10(%rbp)
  movss  -0x2c(%rbp),%xmm0
  movss  D40(%rip),%xmm1
  xorps  %xmm1,%xmm0
  cvtss2sd %xmm0,%xmm0
  mulsd  -0x58(%rbp),%xmm0
  mulsd  -0x70(%rbp),%xmm0
  mulsd  -0x10(%rbp),%xmm0
  mov    -0x78(%rbp),%rax
  movsd  %xmm0,(%rax)
  movsd  -0x50(%rbp),%xmm1
  movsd  D174(%rip),%xmm0
  addsd  %xmm1,%xmm0
  subsd  -0x38(%rbp),%xmm0
  movsd  %xmm0,-0x8(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0x2c(%rbp),%xmm0
  mulsd  -0x58(%rbp),%xmm0
  movapd %xmm0,%xmm1
  mulsd  -0x70(%rbp),%xmm1
  movsd  D64(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  mov    -0x80(%rbp),%rax
  movsd  %xmm0,(%rax)
  mov    -0x80(%rbp),%rax
  movsd  (%rax),%xmm0
  mulsd  -0x8(%rbp),%xmm0
  mov    -0x80(%rbp),%rax
  movsd  %xmm0,(%rax)
  nop
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D174
data_type: f64
name: extract_symbolic_data
arguments: label: D52
data_type: f64
name: extract_symbolic_data
arguments: label: D166
data_type: f64
name: extract_symbolic_data
arguments: label: D185
data_type: f64
name: extract_symbolic_data
arguments: label: D102
data_type: f64
name: extract_symbolic_data
arguments: label: D154
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D76
data_type: f64
name: extract_symbolic_data
arguments: label: D157
data_type: f64
name: extract_symbolic_data
arguments: label: D70
data_type: f64
name: extract_symbolic_data
arguments: label: D75
data_type: f64
name: extract_symbolic_data
arguments: label: D40
data_type: byte[4]
name: extract_symbolic_data
arguments: label: D64
data_type: f64

tool: D174: 273.15

tool: D52: 0.005

tool: D166: 0.0045

tool: D185: 17.269

tool: D102: 237.3

tool: {"D154": [0x5a,0x64,0x3b,0xdf,0x4f,0x8d,0xe3,0x3f]}

tool: D76: 21.874

tool: D157: 7.66

tool: D70: 0.378

tool: D75: 0.622

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

tool: D64: 1013

assistant: ```c
void latsens(double Tsurf, double Tcutk, double hice, double tair, double wind, double pressure, double vp, double air_density, double *evap, double *qsen, double wind_h) {
  float dragcoeff;
  double eog, delT;
  double qair, qlake;
  double delq;
  if (hice > 0.)
    dragcoeff = lkdrag(Tsurf, tair + 273.15, wind, 0.005, wind_h);
  else
    dragcoeff = lkdrag(Tsurf, tair + 273.15, wind, 0.0045, wind_h);
  if ((hice <= 0.) && (Tsurf > Tcutk)) {
    eog = .611 * exp(17.269 * (Tsurf - 273.15) / (Tsurf + 237.3 - 273.15));
  } else {
    eog = .611 * exp(21.874 * (Tsurf - 273.15) / (Tsurf - 7.66));
  }
  qlake = 0.622 * (eog / (pressure - 0.378 * eog));
  qair = 0.622 * (vp / (pressure - 0.378 * vp));
  delq = qair - qlake;
  *evap = -1 * dragcoeff * wind * air_density * delq;
  delT = tair + 273.15 - Tsurf;
  *qsen = dragcoeff * wind * air_density * 1013.0;
  *qsen = *qsen * delT;
}
```