user: Converte this assembly snippet into its equivalent C code:

```asm
<testEcaSu>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x50,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movsd  D130(%rip),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  movsd  D130(%rip),%xmm0
  movsd  %xmm0,-0x38(%rbp)
  movsd  D80(%rip),%xmm0
  movsd  %xmm0,-0x30(%rbp)
  movsd  D131(%rip),%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  D80(%rip),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  movsd  D131(%rip),%xmm0
  movsd  %xmm0,-0x18(%rbp)
  movl   $0x1,-0x50(%rbp)
  movl   $0x1,-0x4c(%rbp)
  mov    -0x4c(%rbp),%edx
  mov    -0x50(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <createVars@plt>
  mov    %rax,-0x48(%rbp)
  lea    -0x40(%rbp),%rax
  mov    $0x2,%edx
  mov    %rax,%rsi
  lea    D133(%rip),%rax
  mov    %rax,%rdi
  call   <writeNcFile@plt>
  lea    D34(%rip),%rax
  mov    %rax,%rdi
  call   <submitCdoCommand@plt>
  mov    -0x4c(%rbp),%ecx
  mov    -0x50(%rbp),%edx
  mov    -0x48(%rbp),%rax
  mov    %rax,%rsi
  lea    D184(%rip),%rax
  mov    %rax,%rdi
  call   <readNcFile@plt>
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm0
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm1
  ucomisd %xmm1,%xmm0
  jp     L26
  ucomisd %xmm1,%xmm0
  jne    L26
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm1
  movsd  D130(%rip),%xmm0
  comisd %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L26
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm0
  comisd D130(%rip),%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L26
  mov    $0x1,%eax
  jmp    L176
L26:
  mov    $0x0,%eax
L176:
  mov    %eax,%edi
  call   <assert@plt>
  lea    -0x40(%rbp),%rax
  mov    $0x6,%edx
  mov    %rax,%rsi
  lea    D133(%rip),%rax
  mov    %rax,%rdi
  call   <writeNcFile@plt>
  lea    D34(%rip),%rax
  mov    %rax,%rdi
  call   <submitCdoCommand@plt>
  mov    -0x4c(%rbp),%ecx
  mov    -0x50(%rbp),%edx
  mov    -0x48(%rbp),%rax
  mov    %rax,%rsi
  lea    D184(%rip),%rax
  mov    %rax,%rdi
  call   <readNcFile@plt>
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm0
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm1
  ucomisd %xmm1,%xmm0
  jp     L70
  ucomisd %xmm1,%xmm0
  jne    L70
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm1
  movsd  D78(%rip),%xmm0
  comisd %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L70
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm0
  comisd D78(%rip),%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L70
  mov    $0x1,%eax
  jmp    L55
L70:
  mov    $0x0,%eax
L55:
  mov    %eax,%edi
  call   <assert@plt>
  lea    D165(%rip),%rax
  mov    %rax,%rdi
  call   <submitCdoCommand@plt>
  mov    -0x4c(%rbp),%ecx
  mov    -0x50(%rbp),%edx
  mov    -0x48(%rbp),%rax
  mov    %rax,%rsi
  lea    D184(%rip),%rax
  mov    %rax,%rdi
  call   <readNcFile@plt>
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm0
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm1
  ucomisd %xmm1,%xmm0
  jp     L133
  ucomisd %xmm1,%xmm0
  jne    L133
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm1
  movsd  D8(%rip),%xmm0
  comisd %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L133
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm0
  comisd D8(%rip),%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L133
  mov    $0x1,%eax
  jmp    L19
L133:
  mov    $0x0,%eax
L19:
  mov    %eax,%edi
  call   <assert@plt>
  lea    D218(%rip),%rax
  mov    %rax,%rdi
  call   <submitCdoCommand@plt>
  mov    -0x4c(%rbp),%ecx
  mov    -0x50(%rbp),%edx
  mov    -0x48(%rbp),%rax
  mov    %rax,%rsi
  lea    D184(%rip),%rax
  mov    %rax,%rdi
  call   <readNcFile@plt>
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm0
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm1
  ucomisd %xmm1,%xmm0
  jp     L32
  ucomisd %xmm1,%xmm0
  jne    L32
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm1
  pxor   %xmm0,%xmm0
  comisd %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L32
  mov    -0x48(%rbp),%rax
  mov    (%rax),%rax
  movsd  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  comisd %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  je     L32
  mov    $0x1,%eax
  jmp    L22
L32:
  mov    $0x0,%eax
L22:
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0x48(%rbp),%rax
  mov    %rax,%rdi
  call   <destroyVars@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L36
  call   <__stack_chk_fail@plt>
L36:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D130
data_type: byte[16]
name: extract_symbolic_data
arguments: label: D80
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D131
data_type: byte[8]
name: extract_symbolic_data
arguments: label: D133
data_type: string
name: extract_symbolic_data
arguments: label: D34
data_type: string
name: extract_symbolic_data
arguments: label: D184
data_type: string
name: extract_symbolic_data
arguments: label: D78
data_type: f64[2]
name: extract_symbolic_data
arguments: label: D165
data_type: string
name: extract_symbolic_data
arguments: label: D8
data_type: f64
name: extract_symbolic_data
arguments: label: D218
data_type: string

tool: {"D130": [0xd0,0xa2,0x8f,0x86,0xbf,0xbb,0xfb,0xc6,0x66,0x66,0x66,0x66,0x66,0xb2,0x72,0x40]}

tool: {"D80": [0x66,0x66,0x66,0x66,0x66,0xb2,0x72,0x40]}

tool: {"D131": [0x66,0x66,0x66,0x66,0x66,0x92,0x72,0x40]}

tool: D133: in.nc

tool: D34: eca_su in.nc out.nc

tool: D184: out.nc

tool: {"D78": [2.0,4.0]}

tool: D165: eca_su,20.0 in.nc out.nc

tool: D8: 4

tool: D218: eca_su,30.0 in.nc out.nc

assistant: ```c
void testEcaSu() {
  const double array[] = {-9.0E33, -9.0E33, ((26.0) + 273.15), ((24.0) + 273.15), ((26.0) + 273.15), ((24.0) + 273.15)};
  int nvars = 1;
  int nts = 1;
  double **vars = createVars(nvars, nts);
  writeNcFile("in.nc", array, 2);
  submitCdoCommand("eca_su in.nc out.nc");
  readNcFile("out.nc", vars, nvars, nts);
  assert((((vars[0][0]) != (vars[0][0])) || ((-9.0E33) != (-9.0E33)) ? (((vars[0][0]) != (vars[0][0])) && ((-9.0E33) != (-9.0E33)) ? 1 : 0) : !(vars[0][0] < -9.0E33 || -9.0E33 < vars[0][0])));
  writeNcFile("in.nc", array, 6);
  submitCdoCommand("eca_su in.nc out.nc");
  readNcFile("out.nc", vars, nvars, nts);
  assert((((vars[0][0]) != (vars[0][0])) || ((2.) != (2.)) ? (((vars[0][0]) != (vars[0][0])) && ((2.) != (2.)) ? 1 : 0) : !(vars[0][0] < 2. || 2. < vars[0][0])));
  submitCdoCommand("eca_su,20.0 in.nc out.nc");
  readNcFile("out.nc", vars, nvars, nts);
  assert((((vars[0][0]) != (vars[0][0])) || ((4.) != (4.)) ? (((vars[0][0]) != (vars[0][0])) && ((4.) != (4.)) ? 1 : 0) : !(vars[0][0] < 4. || 4. < vars[0][0])));
  submitCdoCommand("eca_su,30.0 in.nc out.nc");
  readNcFile("out.nc", vars, nvars, nts);
  assert((((vars[0][0]) != (vars[0][0])) || ((0.) != (0.)) ? (((vars[0][0]) != (vars[0][0])) && ((0.) != (0.)) ? 1 : 0) : !(vars[0][0] < 0. || 0. < vars[0][0])));
  destroyVars(vars);
}
```