user: What is the c source code of the assembly code below?

```asm
<biquad_lowshelf>:
  endbr64
  push   %rbp
  mov    %rdi,%rbp
  sub    $0x30,%rsp
  movsd  D84(%rip),%xmm5
  divsd  D105(%rip),%xmm1
  comisd %xmm0,%xmm5
  ja     L0
  movsd  D52(%rip),%xmm0
  call   <pow@plt>
  add    $0x30,%rsp
  mov    %rbp,%rdi
  xor    %r9d,%r9d
  mulsd  %xmm0,%xmm0
  xor    %r8d,%r8d
  mov    $0x1,%ecx
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x1,%eax
  pop    %rbp
  jmp    1090 <set_coefficient@plt>
  nopl   0x0(%rax)
L0:
  pxor   %xmm7,%xmm7
  comisd %xmm0,%xmm7
  jbe    L66
  ucomisd D25(%rip),%xmm1
  jae    L87
L73:
  sub    $0x8,%rsp
  mov    %rbp,%rdi
  xor    %r9d,%r9d
  mov    $0x1,%r8d
  push   $0x0
  xor    %ecx,%ecx
  xor    %edx,%edx
  mov    $0x1,%esi
  xor    %eax,%eax
  call   <set_coefficient@plt>
  add    $0x40,%rsp
  pop    %rbp
  ret
L66:
  movsd  %xmm0,0x8(%rsp)
  movsd  D52(%rip),%xmm0
  call   <pow@plt>
  movsd  0x8(%rsp),%xmm3
  pxor   %xmm7,%xmm7
  movapd %xmm0,%xmm2
  comisd %xmm7,%xmm3
  jbe    L73
  lea    0x28(%rsp),%rdi
  mulsd  D67(%rip),%xmm3
  lea    0x20(%rsp),%rsi
  movsd  %xmm2,0x8(%rsp)
  movapd %xmm3,%xmm0
  call   <sincos@plt>
  movsd  0x8(%rsp),%xmm2
  movsd  D84(%rip),%xmm0
  pxor   %xmm6,%xmm6
  movsd  D59(%rip),%xmm3
  movsd  0x20(%rsp),%xmm7
  divsd  %xmm2,%xmm0
  mulsd  0x28(%rsp),%xmm3
  addsd  %xmm2,%xmm0
  mulsd  %xmm6,%xmm0
  addsd  D100(%rip),%xmm0
  ucomisd %xmm0,%xmm6
  ja     L40
  sqrtsd %xmm0,%xmm0
L64:
  mulsd  %xmm0,%xmm3
  pxor   %xmm6,%xmm6
  ucomisd %xmm2,%xmm6
  ja     L80
  movapd %xmm2,%xmm6
  sqrtsd %xmm6,%xmm6
L14:
  addsd  %xmm6,%xmm6
  movapd %xmm2,%xmm5
  movapd %xmm2,%xmm8
  mov    %rbp,%rdi
  subsd  D84(%rip),%xmm5
  addsd  %xmm2,%xmm8
  mov    $0x6,%eax
  movsd  D84(%rip),%xmm4
  mulsd  %xmm3,%xmm6
  addsd  %xmm2,%xmm4
  movapd %xmm7,%xmm3
  mulsd  %xmm5,%xmm3
  mulsd  %xmm4,%xmm7
  movapd %xmm4,%xmm0
  subsd  %xmm3,%xmm0
  addsd  %xmm4,%xmm3
  movapd %xmm7,%xmm4
  addsd  %xmm5,%xmm4
  movapd %xmm0,%xmm9
  subsd  %xmm7,%xmm5
  subsd  %xmm6,%xmm9
  addsd  %xmm6,%xmm0
  mulsd  D118(%rip),%xmm4
  add    $0x30,%rsp
  pop    %rbp
  movapd %xmm5,%xmm1
  movapd %xmm3,%xmm5
  addsd  %xmm6,%xmm3
  mulsd  %xmm2,%xmm0
  subsd  %xmm6,%xmm5
  mulsd  %xmm9,%xmm2
  mulsd  %xmm8,%xmm1
  jmp    1090 <set_coefficient@plt>
L40:
  movsd  %xmm2,0x18(%rsp)
  movsd  %xmm7,0x10(%rsp)
  movsd  %xmm3,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x18(%rsp),%xmm2
  movsd  0x10(%rsp),%xmm7
  movsd  0x8(%rsp),%xmm3
  jmp    L64
L80:
  movapd %xmm2,%xmm0
  movsd  %xmm7,0x18(%rsp)
  movsd  %xmm3,0x10(%rsp)
  movsd  %xmm2,0x8(%rsp)
  call   <sqrt@plt>
  movsd  0x18(%rsp),%xmm7
  movsd  0x10(%rsp),%xmm3
  movsd  0x8(%rsp),%xmm2
  movapd %xmm0,%xmm6
  jmp    L14
L87:
  movsd  D52(%rip),%xmm0
  call   <pow@plt>
  jmp    L73
```

tool_calls: name: retrieve_data
arguments: label: D84
data_type: f64
name: retrieve_data
arguments: label: D105
data_type: f64
name: retrieve_data
arguments: label: D52
data_type: f64
name: retrieve_data
arguments: label: D25
data_type: f32[2]
name: retrieve_data
arguments: label: D67
data_type: f64
name: retrieve_data
arguments: label: D59
data_type: f64
name: retrieve_data
arguments: label: D100
data_type: f64
name: retrieve_data
arguments: label: D118
data_type: f32[2]

tool: D84: 1

tool: D105: 40

tool: D52: 10

tool: {"D25": [0.0,3.49609375]}

tool: D67: 3.141592653589793

tool: D59: 0.5

tool: D100: 2

tool: {"D118": [0.0,-2.0]}

assistant: ```c
void biquad_lowshelf(struct biquad *bq, double frequency, double db_gain) {
  frequency = ({
    __typeof__(0.0) _a = (0.0);
    __typeof__(({
      __typeof__(frequency) _a = (frequency);
      __typeof__(1.0) _b = (1.0);
      _a < _b ? _a : _b;
    })) _b = (({
      __typeof__(frequency) _a = (frequency);
      __typeof__(1.0) _b = (1.0);
      _a < _b ? _a : _b;
    }));
    _a > _b ? _a : _b;
  });
  double A = pow(10.0, db_gain / 40);
  if (frequency == 1) {
    set_coefficient(bq, A * A, 0, 0, 1, 0, 0);
  } else if (frequency > 0) {
    double w0 = 3.14159265358979323846 * frequency;
    double S = 1;
    double alpha = 0.5 * sin(w0) * sqrt((A + 1 / A) * (1 / S - 1) + 2);
    double k = cos(w0);
    double k2 = 2 * sqrt(A) * alpha;
    double a_plus_one = A + 1;
    double a_minus_one = A - 1;
    double b0 = A * (a_plus_one - a_minus_one * k + k2);
    double b1 = 2 * A * (a_minus_one - a_plus_one * k);
    double b2 = A * (a_plus_one - a_minus_one * k - k2);
    double a0 = a_plus_one + a_minus_one * k + k2;
    double a1 = -2 * (a_minus_one + a_plus_one * k);
    double a2 = a_plus_one + a_minus_one * k - k2;
    set_coefficient(bq, b0, b1, b2, a0, a1, a2);
  } else {
    set_coefficient(bq, 1, 0, 0, 1, 0, 0);
  }
}
```