user: 请将以下的汇编代码转换成C语言代码：

```asm
<EToPM>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x40,%rsp
  movq   %xmm1,%r14
  movq   %xmm2,%r13
  movq   %xmm3,%rbx
  movq   %xmm4,%r12
  movq   %xmm5,%rbp
  subsd  D265(%rip),%xmm0
  movsd  %xmm0,(%rsp)
  movsd  D20(%rip),%xmm0
  comisd %xmm5,%xmm0
  jbe    L28
  movq   %xmm0,%rbp
L28:
  movsd  (%rsp),%xmm7
  movapd %xmm7,%xmm0
  mulsd  D206(%rip),%xmm0
  movapd %xmm7,%xmm6
  addsd  D50(%rip),%xmm6
  movsd  %xmm6,0x8(%rsp)
  divsd  %xmm6,%xmm0
  call   <exp@plt>
  movapd %xmm0,%xmm4
  mulsd  D115(%rip),%xmm4
  movsd  %xmm4,0x10(%rsp)
  movapd %xmm4,%xmm1
  mulsd  D204(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  mulsd  %xmm0,%xmm0
  divsd  %xmm0,%xmm1
  movsd  %xmm1,0x18(%rsp)
  movsd  D179(%rip),%xmm1
  movsd  (%rsp),%xmm0
  mulsd  D101(%rip),%xmm0
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x8(%rsp)
  movq   %r14,%xmm7
  mulsd  D288(%rip),%xmm7
  movsd  D168(%rip),%xmm2
  movapd %xmm2,%xmm0
  subsd  %xmm7,%xmm0
  divsd  %xmm2,%xmm0
  movsd  D314(%rip),%xmm1
  call   <pow@plt>
  mulsd  D166(%rip),%xmm0
  movsd  %xmm0,0x20(%rsp)
  mulsd  D142(%rip),%xmm0
  movsd  0x8(%rsp),%xmm1
  mulsd  D125(%rip),%xmm1
  divsd  %xmm1,%xmm0
  mulsd  D20(%rip),%xmm0
  movsd  %xmm0,0x28(%rsp)
  movsd  D91(%rip),%xmm0
  movq   %rbp,%xmm5
  comisd %xmm5,%xmm0
  ja     L11
  movq   %r13,%xmm0
  mulsd  D313(%rip),%xmm0
  divsd  D208(%rip),%xmm0
  movsd  D65(%rip),%xmm5
  divsd  %xmm0,%xmm5
L27:
  movq   %rbp,%xmm0
  mulsd  D11(%rip),%xmm0
  movsd  D126(%rip),%xmm6
  movapd %xmm6,%xmm2
  divsd  %xmm0,%xmm2
  divsd  %xmm5,%xmm2
  movsd  D209(%rip),%xmm4
  addsd  %xmm4,%xmm2
  mulsd  0x28(%rsp),%xmm2
  movsd  0x18(%rsp),%xmm8
  addsd  %xmm8,%xmm2
  movq   %r12,%xmm3
  movsd  0x10(%rsp),%xmm9
  mulsd  %xmm9,%xmm3
  divsd  %xmm6,%xmm3
  movsd  (%rsp),%xmm1
  addsd  D265(%rip),%xmm1
  movapd %xmm3,%xmm0
  mulsd  D297(%rip),%xmm0
  movsd  0x20(%rsp),%xmm10
  divsd  %xmm10,%xmm0
  movapd %xmm4,%xmm7
  subsd  %xmm0,%xmm7
  divsd  %xmm7,%xmm1
  mulsd  D85(%rip),%xmm1
  divsd  %xmm6,%xmm1
  movapd %xmm10,%xmm0
  divsd  %xmm1,%xmm0
  mulsd  D142(%rip),%xmm0
  divsd  %xmm5,%xmm0
  movsd  D155(%rip),%xmm1
  movsd  0x8(%rsp),%xmm6
  divsd  %xmm6,%xmm1
  divsd  %xmm2,%xmm4
  mulsd  %xmm4,%xmm1
  mulsd  %xmm1,%xmm0
  movapd %xmm9,%xmm1
  subsd  %xmm3,%xmm1
  mulsd  %xmm1,%xmm0
  movq   %rbx,%xmm3
  mulsd  D56(%rip),%xmm3
  movq   %rbx,%xmm1
  subsd  %xmm3,%xmm1
  divsd  %xmm6,%xmm1
  movapd %xmm8,%xmm3
  divsd  %xmm2,%xmm3
  mulsd  %xmm3,%xmm1
  addsd  %xmm1,%xmm0
  add    $0x40,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
L11:
  movq   %rbp,%xmm1
  mulsd  D224(%rip),%xmm1
  subsd  %xmm1,%xmm0
  mulsd  D169(%rip),%xmm5
  movsd  %xmm0,0x30(%rsp)
  movsd  %xmm5,0x38(%rsp)
  divsd  %xmm5,%xmm0
  call   <log@plt>
  movq   %xmm0,%r14
  movsd  0x38(%rsp),%xmm5
  mulsd  D56(%rip),%xmm5
  movsd  0x30(%rsp),%xmm0
  divsd  %xmm5,%xmm0
  call   <log@plt>
  movq   %r14,%xmm5
  mulsd  %xmm0,%xmm5
  movq   %r13,%xmm0
  mulsd  D105(%rip),%xmm0
  divsd  %xmm0,%xmm5
  jmp    L27
```

tool_calls: name: unpack_data
arguments: label: D265
type: f64
name: unpack_data
arguments: label: D20
type: f64
name: unpack_data
arguments: label: D206
type: f64
name: unpack_data
arguments: label: D50
type: f64
name: unpack_data
arguments: label: D115
type: f64
name: unpack_data
arguments: label: D204
type: byte[8]
name: unpack_data
arguments: label: D179
type: f64
name: unpack_data
arguments: label: D101
type: f64
name: unpack_data
arguments: label: D288
type: f64
name: unpack_data
arguments: label: D168
type: f64
name: unpack_data
arguments: label: D314
type: byte[8]
name: unpack_data
arguments: label: D166
type: f64
name: unpack_data
arguments: label: D142
type: f64
name: unpack_data
arguments: label: D125
type: f64
name: unpack_data
arguments: label: D91
type: byte[8]
name: unpack_data
arguments: label: D313
type: byte[8]
name: unpack_data
arguments: label: D208
type: f64
name: unpack_data
arguments: label: D65
type: byte[8]
name: unpack_data
arguments: label: D11
type: byte[8]
name: unpack_data
arguments: label: D126
type: byte[8]
name: unpack_data
arguments: label: D209
type: byte[8]
name: unpack_data
arguments: label: D297
type: f64
name: unpack_data
arguments: label: D85
type: byte[8]
name: unpack_data
arguments: label: D155
type: f64
name: unpack_data
arguments: label: D56
type: f64
name: unpack_data
arguments: label: D224
type: byte[8]
name: unpack_data
arguments: label: D169
type: f64
name: unpack_data
arguments: label: D105
type: byte[8]

tool: D265: 273.15

tool: D20: 0.001

tool: D206: 17.27

tool: D50: 237.3

tool: D115: 0.61078

tool: {"D204": [0x00,0x00,0x00,0x00,0x00,0x02,0xb0,0x40]}

tool: D179: 2.501

tool: D101: 0.002361

tool: D288: 0.0065

tool: D168: 293.16

tool: {"D314": [0x50,0x4a,0x47,0xeb,0xd9,0x08,0x15,0x40]}

tool: D166: 101.3

tool: D142: 1.013

tool: D125: 0.622

tool: {"D91": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40]}

tool: {"D313": [0x53,0x44,0xf0,0x51,0x63,0x0b,0x1a,0x40]}

tool: D208: 4.87

tool: {"D65": [0x00,0x00,0x00,0x00,0x00,0x80,0x57,0x40]}

tool: {"D11": [0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x40]}

tool: {"D126": [0x00,0x00,0x00,0x00,0x00,0x00,0x59,0x40]}

tool: {"D209": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: D297: 0.378

tool: {"D85": [0x00,0x00,0x00,0x00,0x00,0xf0,0x71,0x40]}

tool: D155: 3.6

tool: D56: 0.1

tool: {"D224": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: D169: 0.123

tool: {"D105": [0xa2,0x92,0x3a,0x01,0x4d,0x84,0xc5,0x3f]}

assistant: ```c
double EToPM(double T, double Z, double u2, double Rn, double Rh, double hc) {
  double ea, delta, gamma, gstar, L;
  double P, ra, d, Zom, Zoh, G, ETrad, u10, rs, ed, Tkv, rho, ETaero, ETp;
  T -= 273.15;
  if (hc < 0.001)
    hc = 0.001;
  ea = 0.61078 * exp((17.27 * T) / (T + 237.3));
  delta = (4098 * ea) / pow((237.3 + T), 2);
  L = 2.501 - (0.002361 * T);
  P = 101.3 * pow(((293.16 - 0.0065 * (Z - 0)) / 293.16), (9.81 / (0.0065 * 287)));
  gamma = ((1.013 * P) / (0.622 * L)) * 0.001;
  if (hc < 2) {
    d = (2 / 3) * hc;
    Zom = 0.123 * hc;
    Zoh = 0.1 * Zom;
    ra = (log((2 - d) / Zom) * log((2 - d) / Zoh)) / (0.41 * 0.41 * u2);
  } else {
    u10 = u2 * (log((67.8 * 10) - 5.42)) / 4.87;
    ra = 94 / u10;
  }
  rs = 100 / (0.5 * 24 * hc);
  gstar = gamma * (1 + (rs / ra));
  G = 0.1 * Rn;
  ETrad = (delta / (delta + gstar)) * ((Rn - G) / L);
  ed = Rh * ea / 100;
  Tkv = (T + 273.15) / (1 - (0.378 * ed / P));
  rho = P / (Tkv * 287 / 100);
  ETaero = (3.6 / L) * (1 / (delta + gstar)) * (rho * 1.013 / ra) * (ea - ed);
  ETp = ETrad + ETaero;
  return (ETp);
}
```