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

```asm
<EToPM>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x48,%rsp
  movq   %xmm1,%r14
  movq   %xmm2,%r13
  movq   %xmm3,%rbx
  movq   %xmm4,%r12
  movq   %xmm5,%rbp
  movq   %xmm6,%r15
  subsd  D25(%rip),%xmm0
  movsd  %xmm0,(%rsp)
  movsd  D265(%rip),%xmm0
  comisd %xmm5,%xmm0
  jbe    L11
  movq   %xmm0,%rbp
L11:
  movsd  (%rsp),%xmm7
  movapd %xmm7,%xmm0
  mulsd  D20(%rip),%xmm0
  movapd %xmm7,%xmm6
  addsd  D201(%rip),%xmm6
  movsd  %xmm6,0x8(%rsp)
  divsd  %xmm6,%xmm0
  call   <exp@plt>
  movapd %xmm0,%xmm4
  mulsd  D187(%rip),%xmm4
  movsd  %xmm4,0x10(%rsp)
  movapd %xmm4,%xmm1
  mulsd  D277(%rip),%xmm1
  movsd  0x8(%rsp),%xmm0
  mulsd  %xmm0,%xmm0
  divsd  %xmm0,%xmm1
  movsd  %xmm1,0x18(%rsp)
  movsd  D247(%rip),%xmm1
  movsd  (%rsp),%xmm0
  mulsd  D119(%rip),%xmm0
  subsd  %xmm0,%xmm1
  movsd  %xmm1,0x8(%rsp)
  movq   %r14,%xmm6
  mulsd  D209(%rip),%xmm6
  movsd  D1(%rip),%xmm2
  movapd %xmm2,%xmm0
  subsd  %xmm6,%xmm0
  divsd  %xmm2,%xmm0
  movsd  D221(%rip),%xmm1
  call   <pow@plt>
  mulsd  D118(%rip),%xmm0
  movsd  %xmm0,0x20(%rsp)
  mulsd  D203(%rip),%xmm0
  movsd  0x8(%rsp),%xmm1
  mulsd  D222(%rip),%xmm1
  divsd  %xmm1,%xmm0
  mulsd  D265(%rip),%xmm0
  movsd  %xmm0,0x28(%rsp)
  movsd  D267(%rip),%xmm0
  movq   %rbp,%xmm6
  comisd %xmm6,%xmm0
  ja     L18
  movq   %r13,%xmm0
  mulsd  D117(%rip),%xmm0
  divsd  D141(%rip),%xmm0
  movsd  D250(%rip),%xmm5
  divsd  %xmm0,%xmm5
L1:
  movq   %rbp,%xmm0
  mulsd  D168(%rip),%xmm0
  movsd  D272(%rip),%xmm6
  movapd %xmm6,%xmm2
  divsd  %xmm0,%xmm2
  divsd  %xmm5,%xmm2
  movsd  D236(%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  D25(%rip),%xmm1
  movapd %xmm3,%xmm0
  mulsd  D179(%rip),%xmm0
  movsd  0x20(%rsp),%xmm10
  divsd  %xmm10,%xmm0
  movapd %xmm4,%xmm7
  subsd  %xmm0,%xmm7
  divsd  %xmm7,%xmm1
  mulsd  D50(%rip),%xmm1
  divsd  %xmm6,%xmm1
  movapd %xmm10,%xmm0
  divsd  %xmm1,%xmm0
  mulsd  D203(%rip),%xmm0
  divsd  %xmm5,%xmm0
  movsd  D109(%rip),%xmm1
  movsd  0x8(%rsp),%xmm7
  divsd  %xmm7,%xmm1
  divsd  %xmm2,%xmm4
  mulsd  %xmm4,%xmm1
  mulsd  %xmm1,%xmm0
  movapd %xmm9,%xmm1
  subsd  %xmm3,%xmm1
  mulsd  %xmm1,%xmm0
  movq   %rbx,%xmm3
  mulsd  D158(%rip),%xmm3
  movq   %rbx,%xmm1
  subsd  %xmm3,%xmm1
  movq   %r15,%xmm5
  mulsd  %xmm5,%xmm7
  divsd  %xmm7,%xmm1
  movapd %xmm8,%xmm3
  divsd  %xmm2,%xmm3
  mulsd  %xmm3,%xmm1
  addsd  %xmm1,%xmm0
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L18:
  movq   %rbp,%xmm1
  mulsd  D0(%rip),%xmm1
  subsd  %xmm1,%xmm0
  movq   %rbp,%xmm4
  mulsd  D121(%rip),%xmm4
  movsd  %xmm0,0x30(%rsp)
  movsd  %xmm4,0x38(%rsp)
  divsd  %xmm4,%xmm0
  call   <log@plt>
  movq   %xmm0,%r14
  movsd  0x38(%rsp),%xmm4
  mulsd  D158(%rip),%xmm4
  movsd  0x30(%rsp),%xmm0
  divsd  %xmm4,%xmm0
  call   <log@plt>
  movq   %r14,%xmm5
  mulsd  %xmm0,%xmm5
  movq   %r13,%xmm0
  mulsd  D235(%rip),%xmm0
  divsd  %xmm0,%xmm5
  jmp    L1
```

tool_calls: name: read_data
arguments: label: D25
type_infered: f64
name: read_data
arguments: label: D265
type_infered: f64
name: read_data
arguments: label: D20
type_infered: f64
name: read_data
arguments: label: D201
type_infered: f64
name: read_data
arguments: label: D187
type_infered: f64
name: read_data
arguments: label: D277
type_infered: byte[8]
name: read_data
arguments: label: D247
type_infered: f64
name: read_data
arguments: label: D119
type_infered: f64
name: read_data
arguments: label: D209
type_infered: f64
name: read_data
arguments: label: D1
type_infered: f64
name: read_data
arguments: label: D221
type_infered: byte[8]
name: read_data
arguments: label: D118
type_infered: f64
name: read_data
arguments: label: D203
type_infered: f64
name: read_data
arguments: label: D222
type_infered: f64
name: read_data
arguments: label: D267
type_infered: byte[8]
name: read_data
arguments: label: D117
type_infered: byte[8]
name: read_data
arguments: label: D141
type_infered: f64
name: read_data
arguments: label: D250
type_infered: byte[8]
name: read_data
arguments: label: D168
type_infered: byte[8]
name: read_data
arguments: label: D272
type_infered: byte[8]
name: read_data
arguments: label: D236
type_infered: byte[8]
name: read_data
arguments: label: D179
type_infered: f64
name: read_data
arguments: label: D50
type_infered: byte[8]
name: read_data
arguments: label: D109
type_infered: f64
name: read_data
arguments: label: D158
type_infered: f64
name: read_data
arguments: label: D0
type_infered: byte[8]
name: read_data
arguments: label: D121
type_infered: f64
name: read_data
arguments: label: D235
type_infered: byte[8]

tool: D25: 273.15

tool: D265: 0.001

tool: D20: 17.27

tool: D201: 237.3

tool: D187: 0.61078

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

tool: D247: 2.501

tool: D119: 0.002361

tool: D209: 0.0065

tool: D1: 293.16

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

tool: D118: 101.3

tool: D203: 1.013

tool: D222: 0.622

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

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

tool: D141: 4.87

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

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

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

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

tool: D179: 0.378

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

tool: D109: 3.6

tool: D158: 0.1

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

tool: D121: 0.123

tool: {"D235": [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 daily_N) {
  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 * daily_N));
  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);
}
```