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

```asm
<main>:
  endbr64
  sub    $0x58,%rsp
  mov    D35(%rip),%rax
  mov    $0x4,%edi
  movq   %rax,%xmm0
  call   <pow@plt>
  mulsd  D157(%rip),%xmm0
  mov    $0x2,%edi
  mov    D35(%rip),%rax
  movsd  %xmm0,0x8(%rsp)
  movq   %rax,%xmm0
  call   <pow@plt>
  mov    $0x2,%edi
  movsd  %xmm0,0x10(%rsp)
  movsd  D207(%rip),%xmm0
  call   <pow@plt>
  movsd  0x10(%rsp),%xmm6
  mov    $0x2,%edi
  mov    D35(%rip),%rax
  addsd  %xmm0,%xmm6
  movq   %rax,%xmm0
  movsd  %xmm6,0x10(%rsp)
  call   <pow@plt>
  mov    $0x2,%edi
  movsd  %xmm0,0x18(%rsp)
  movsd  D39(%rip),%xmm0
  call   <pow@plt>
  movsd  0x18(%rsp),%xmm7
  mov    $0x10,%edi
  addsd  %xmm0,%xmm7
  movsd  D36(%rip),%xmm0
  movsd  %xmm7,0x18(%rsp)
  call   <pow@plt>
  mov    D35(%rip),%rax
  mov    $0x4,%edi
  movsd  %xmm0,0x20(%rsp)
  movq   %rax,%xmm0
  call   <pow@plt>
  movsd  0x20(%rsp),%xmm1
  mov    $0x2,%edi
  mov    D35(%rip),%rax
  mulsd  D209(%rip),%xmm1
  movapd %xmm1,%xmm7
  mulsd  %xmm0,%xmm7
  movq   %rax,%xmm0
  movsd  %xmm7,0x20(%rsp)
  call   <pow@plt>
  mov    $0x2,%edi
  movsd  %xmm0,0x28(%rsp)
  movsd  D145(%rip),%xmm0
  call   <pow@plt>
  movsd  0x28(%rsp),%xmm2
  mov    $0x2,%edi
  mov    D35(%rip),%rax
  addsd  %xmm0,%xmm2
  movq   %rax,%xmm0
  movsd  %xmm2,0x30(%rsp)
  call   <pow@plt>
  mov    $0x2,%edi
  movsd  %xmm0,0x28(%rsp)
  movsd  D0(%rip),%xmm0
  call   <pow@plt>
  movsd  0x10(%rsp),%xmm3
  mulsd  0x18(%rsp),%xmm3
  movsd  0x8(%rsp),%xmm5
  movsd  0x28(%rsp),%xmm1
  addsd  %xmm0,%xmm1
  divsd  %xmm3,%xmm5
  movsd  %xmm1,0x38(%rsp)
  movapd %xmm5,%xmm0
  call   <log10@plt>
  pxor   %xmm2,%xmm2
  mov    $0x2,%edi
  lea    (%rax,%rax,4),%eax
  add    %eax,%eax
  cvtsi2sd %eax,%xmm2
  movsd  %xmm2,0x28(%rsp)
  movsd  0x30(%rsp),%xmm2
  movapd %xmm2,%xmm0
  movsd  %xmm2,0x48(%rsp)
  call   <pow@plt>
  movsd  0x38(%rsp),%xmm1
  mov    $0x2,%edi
  movsd  %xmm0,0x30(%rsp)
  movapd %xmm1,%xmm0
  movsd  %xmm1,0x40(%rsp)
  call   <pow@plt>
  mulsd  0x30(%rsp),%xmm0
  movsd  0x20(%rsp),%xmm6
  divsd  %xmm0,%xmm6
  movapd %xmm6,%xmm0
  call   <log10@plt>
  pxor   %xmm3,%xmm3
  movsd  0x28(%rsp),%xmm4
  lea    D124(%rip),%rdi
  lea    (%rax,%rax,4),%eax
  add    %eax,%eax
  cvtsi2sd %eax,%xmm3
  mov    D35(%rip),%rax
  movq   %rax,%xmm0
  addsd  %xmm3,%xmm4
  movsd  %xmm3,0x38(%rsp)
  movsd  %xmm4,0x30(%rsp)
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm0
  lea    D123(%rip),%rdi
  call   <printf@plt>
  movsd  0x10(%rsp),%xmm0
  lea    D191(%rip),%rdi
  call   <printf@plt>
  movsd  0x18(%rsp),%xmm0
  lea    D46(%rip),%rdi
  call   <printf@plt>
  movsd  0x20(%rsp),%xmm0
  lea    D158(%rip),%rdi
  call   <printf@plt>
  movsd  0x48(%rsp),%xmm2
  lea    D1(%rip),%rdi
  movapd %xmm2,%xmm0
  call   <printf@plt>
  movsd  0x40(%rsp),%xmm1
  lea    D178(%rip),%rdi
  movapd %xmm1,%xmm0
  call   <printf@plt>
  movsd  0x28(%rsp),%xmm0
  lea    D30(%rip),%rdi
  call   <printf@plt>
  movsd  0x38(%rsp),%xmm3
  lea    D129(%rip),%rdi
  movapd %xmm3,%xmm0
  call   <printf@plt>
  movsd  0x30(%rsp),%xmm4
  lea    D69(%rip),%rdi
  movapd %xmm4,%xmm0
  call   <printf@plt>
  xor    %eax,%eax
  add    $0x58,%rsp
  ret
```

tool_calls: name: read_data
arguments: data_label: D35
type: byte[8]
name: read_data
arguments: data_label: D157
type: f64
name: read_data
arguments: data_label: D207
type: f64
name: read_data
arguments: data_label: D39
type: f64
name: read_data
arguments: data_label: D36
type: f64
name: read_data
arguments: data_label: D209
type: f64
name: read_data
arguments: data_label: D145
type: f64
name: read_data
arguments: data_label: D0
type: f64
name: read_data
arguments: data_label: D124
type: string
name: read_data
arguments: data_label: D123
type: string
name: read_data
arguments: data_label: D191
type: string
name: read_data
arguments: data_label: D46
type: string
name: read_data
arguments: data_label: D158
type: string
name: read_data
arguments: data_label: D1
type: string
name: read_data
arguments: data_label: D178
type: string
name: read_data
arguments: data_label: D30
type: string
name: read_data
arguments: data_label: D129
type: string
name: read_data
arguments: data_label: D69
type: string

tool: {"D35": [0x00,0x00,0x00,0x00,0x00,0x40,0x8f,0x40]}

tool: D157: 1.562339

tool: D207: 107.65265

tool: D39: 737.86223

tool: D36: 10

tool: D209: 2.242881

tool: D145: 20.598997

tool: D0: 12194.22

tool: D124: freq = %dHz


tool: D123: a = %f


tool: D191: b = %f


tool: D46: c = %f


tool: D158: d = %f


tool: D1: e = %f


tool: D178: f = %f


tool: D30: aa = %f


tool: D129: bb = %f


tool: D69: WA = %f


assistant: ```c
int main() {
  int freq = 1000;
  double a = 1.562339 * pow(freq, 4);
  double b = pow(freq, 2) + pow(107.65265, 2);
  double c = pow(freq, 2) + pow(737.86223, 2);
  double d = 2.242881 * pow(10, 16) * pow(freq, 4);
  double e = pow(freq, 2) + pow(20.598997, 2);
  double f = pow(freq, 2) + pow(12194.22, 2);
  double aa = 10 * log10(a / (b * c));
  double bb = 10 * log10(d / (pow(e, 2) * pow(f, 2)));
  double WA = aa + bb;
  printf("freq = %dHz\n", freq);
  printf("a = %f\n", a);
  printf("b = %f\n", b);
  printf("c = %f\n", c);
  printf("d = %f\n", d);
  printf("e = %f\n", e);
  printf("f = %f\n", f);
  printf("aa = %f\n", aa);
  printf("bb = %f\n", bb);
  printf("WA = %f\n", WA);
  return 0;
}
```