user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  movss  D73(%rip),%xmm0
  movss  %xmm0,-0x38(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x34(%rbp)
  movss  D41(%rip),%xmm0
  movss  %xmm0,-0x30(%rbp)
  movss  D50(%rip),%xmm0
  movss  %xmm0,-0x2c(%rbp)
  movss  D55(%rip),%xmm0
  movss  %xmm0,-0x28(%rbp)
  movss  -0x2c(%rbp),%xmm0
  divss  -0x28(%rbp),%xmm0
  movss  %xmm0,-0x24(%rbp)
  movss  D44(%rip),%xmm0
  divss  -0x24(%rbp),%xmm0
  movd   %xmm0,%eax
  movd   %eax,%xmm0
  call   <tanf@plt>
  movd   %xmm0,%eax
  mov    %eax,-0x20(%rbp)
  movss  D16(%rip),%xmm0
  movss  %xmm0,-0x1c(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0x1c(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x20(%rbp),%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D98(%rip),%xmm0
  addsd  %xmm0,%xmm1
  movss  -0x20(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x18(%rbp)
  movss  -0x20(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  divss  -0x18(%rbp),%xmm0
  movss  %xmm0,-0x14(%rbp)
  movss  -0x14(%rbp),%xmm0
  addss  %xmm0,%xmm0
  movss  %xmm0,-0x10(%rbp)
  movss  -0x14(%rbp),%xmm0
  movss  %xmm0,-0xc(%rbp)
  movss  -0x20(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  cvtss2sd %xmm0,%xmm0
  movsd  D98(%rip),%xmm1
  subsd  %xmm1,%xmm0
  addsd  %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  divsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x8(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0x1c(%rbp),%xmm0
  movapd %xmm0,%xmm1
  addsd  %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtss2sd -0x20(%rbp),%xmm0
  movapd %xmm1,%xmm2
  mulsd  %xmm0,%xmm2
  movsd  D98(%rip),%xmm0
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movss  -0x20(%rbp),%xmm0
  mulss  %xmm0,%xmm0
  cvtss2sd %xmm0,%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd -0x18(%rbp),%xmm1
  divsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x4(%rbp)
  movss  -0x4(%rbp),%xmm3
  movss  -0x8(%rbp),%xmm2
  movss  -0xc(%rbp),%xmm1
  movss  -0x10(%rbp),%xmm0
  mov    -0x14(%rbp),%eax
  movaps %xmm3,%xmm4
  movaps %xmm2,%xmm3
  movaps %xmm1,%xmm2
  movaps %xmm0,%xmm1
  movd   %eax,%xmm0
  lea    D31(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  nop
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D73
type_infered: byte[4]
name: extract_symbolic_data
arguments: data_label: D41
type_infered: f32
name: extract_symbolic_data
arguments: data_label: D50
type_infered: f32
name: extract_symbolic_data
arguments: data_label: D55
type_infered: f32
name: extract_symbolic_data
arguments: data_label: D44
type_infered: byte[4]
name: extract_symbolic_data
arguments: data_label: D16
type_infered: byte[4]
name: extract_symbolic_data
arguments: data_label: D98
type_infered: f32[2]
name: extract_symbolic_data
arguments: data_label: D31
type_infered: string

tool: {"D73": [0x0a,0xe8,0x1c,0x3b]}

tool: D41: 1

tool: D50: 1000

tool: D55: 30

tool: {"D44": [0xd0,0x0f,0x49,0x40]}

tool: {"D16": [0xfb,0x04,0x35,0x3f]}

tool: {"D98": [0.0,1.875]}

tool: D31: _b0 = %a
_b1 = %a
_b2 = %a
_a1 = %a
_a2 = %a



assistant: ```c
void main() {
  float _accel_range_scale = 9.80665f / 4096;
  float _accel_scale_x_offset = 0;
  float _accel_scale_x_scale = 1;
  float sample_freq = 1000;
  float _cutoff_freq = 30;
  float fr = sample_freq / _cutoff_freq;
  float ohm = tanf(3.14159f / fr);
  float cs = cosf(3.14159f / 4.0);
  float c = 1.0 + 2.0 * cs * ohm + ohm * ohm;
  float _b0 = ohm * ohm / c;
  float _b1 = 2.0 * _b0;
  float _b2 = _b0;
  float _a1 = 2.0 * (ohm * ohm - 1.0) / c;
  float _a2 = (1.0 - 2.0 * cs * ohm + ohm * ohm) / c;
  printf("_b0 = %a\n_b1 = %a\n_b2 = %a\n_a1 = %a\n_a2 = %a\n\n", _b0, _b1, _b2, _a1, _a2);
}
```