user: 请将以下的汇编代码转换成C语言代码：

```asm
<IIRsos>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  movss  %xmm0,-0x14(%rbp)
  movss  %xmm1,-0x18(%rbp)
  movss  %xmm2,-0x1c(%rbp)
  movss  %xmm3,-0x20(%rbp)
  movss  %xmm4,-0x24(%rbp)
  mov    %rdx,-0x30(%rbp)
  mov    %rcx,-0x38(%rbp)
  cmpq   $0x0,-0x30(%rbp)
  jne    L2
  pxor   %xmm7,%xmm7
  movaps %xmm7,%xmm6
  jmp    L309
L2:
  mov    -0x30(%rbp),%rax
  movss  (%rax),%xmm2
  movaps %xmm2,%xmm6
L309:
  cmpq   $0x0,-0x38(%rbp)
  jne    L308
  pxor   %xmm5,%xmm5
  movaps %xmm5,%xmm8
  jmp    L342
L308:
  mov    -0x38(%rbp),%rax
  movss  (%rax),%xmm7
  movaps %xmm7,%xmm8
L342:
  pxor   %xmm0,%xmm0
  ucomiss -0x20(%rbp),%xmm0
  jp     L33
  pxor   %xmm0,%xmm0
  ucomiss -0x20(%rbp),%xmm0
  jne    L33
  pxor   %xmm0,%xmm0
  ucomiss -0x24(%rbp),%xmm0
  jp     L33
  pxor   %xmm0,%xmm0
  ucomiss -0x24(%rbp),%xmm0
  je     L116
L33:
  pxor   %xmm0,%xmm0
  ucomiss -0x18(%rbp),%xmm0
  jp     L103
  pxor   %xmm0,%xmm0
  ucomiss -0x18(%rbp),%xmm0
  jne    L181
  pxor   %xmm0,%xmm0
  ucomiss -0x1c(%rbp),%xmm0
  jp     L103
  pxor   %xmm0,%xmm0
  ucomiss -0x1c(%rbp),%xmm0
  je     L203
L181:
  jmp    L103
L213:
  subq   $0x1,-0x10(%rbp)
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm0
  movaps %xmm6,%xmm5
  movaps %xmm5,%xmm1
  mulss  -0x20(%rbp),%xmm1
  subss  %xmm1,%xmm0
  movaps %xmm8,%xmm6
  movaps %xmm6,%xmm1
  mulss  -0x24(%rbp),%xmm1
  subss  %xmm1,%xmm0
  movaps %xmm0,%xmm7
  movaps %xmm7,%xmm1
  mulss  -0x14(%rbp),%xmm1
  movaps %xmm5,%xmm0
  mulss  -0x18(%rbp),%xmm0
  addss  %xmm0,%xmm1
  mulss  -0x1c(%rbp),%xmm6
  movaps %xmm6,%xmm0
  mov    -0x8(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x8(%rbp)
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  movaps %xmm5,%xmm8
  movaps %xmm7,%xmm6
L103:
  cmpq   $0x0,-0x10(%rbp)
  jne    L213
  jmp    L337
L203:
  movss  D10(%rip),%xmm0
  ucomiss -0x14(%rbp),%xmm0
  jp     L89
  movss  D10(%rip),%xmm0
  ucomiss -0x14(%rbp),%xmm0
  je     L29
  jmp    L89
L138:
  subq   $0x1,-0x10(%rbp)
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm0
  movaps %xmm6,%xmm3
  movaps %xmm3,%xmm1
  mulss  -0x20(%rbp),%xmm1
  subss  %xmm1,%xmm0
  movaps %xmm8,%xmm1
  mulss  -0x24(%rbp),%xmm1
  subss  %xmm1,%xmm0
  movaps %xmm0,%xmm2
  mov    -0x8(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x8(%rbp)
  movaps %xmm2,%xmm0
  mulss  -0x14(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movaps %xmm3,%xmm8
  movaps %xmm2,%xmm6
L89:
  cmpq   $0x0,-0x10(%rbp)
  jne    L138
  jmp    L337
L263:
  subq   $0x1,-0x10(%rbp)
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm0
  movaps %xmm6,%xmm4
  movaps %xmm4,%xmm1
  mulss  -0x20(%rbp),%xmm1
  subss  %xmm1,%xmm0
  movaps %xmm8,%xmm1
  mulss  -0x24(%rbp),%xmm1
  subss  %xmm1,%xmm0
  movaps %xmm0,%xmm3
  mov    -0x8(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x8(%rbp)
  movss  %xmm3,(%rax)
  movaps %xmm4,%xmm8
  movaps %xmm3,%xmm6
L29:
  cmpq   $0x0,-0x10(%rbp)
  jne    L263
  jmp    L337
L116:
  pxor   %xmm0,%xmm0
  ucomiss -0x18(%rbp),%xmm0
  jp     L245
  pxor   %xmm0,%xmm0
  ucomiss -0x18(%rbp),%xmm0
  jne    L67
  pxor   %xmm0,%xmm0
  ucomiss -0x1c(%rbp),%xmm0
  jp     L245
  pxor   %xmm0,%xmm0
  ucomiss -0x1c(%rbp),%xmm0
  je     L84
L67:
  jmp    L245
L191:
  subq   $0x1,-0x10(%rbp)
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm4
  movaps %xmm4,%xmm1
  mulss  -0x14(%rbp),%xmm1
  movaps %xmm6,%xmm0
  mulss  -0x18(%rbp),%xmm0
  addss  %xmm0,%xmm1
  movaps %xmm8,%xmm0
  mulss  -0x1c(%rbp),%xmm0
  mov    -0x8(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x8(%rbp)
  addss  %xmm1,%xmm0
  movss  %xmm0,(%rax)
  movaps %xmm6,%xmm8
  movaps %xmm4,%xmm6
L245:
  cmpq   $0x0,-0x10(%rbp)
  jne    L191
  jmp    L337
L84:
  movss  D10(%rip),%xmm0
  ucomiss -0x14(%rbp),%xmm0
  jp     L180
  movss  D10(%rip),%xmm0
  ucomiss -0x14(%rbp),%xmm0
  je     L337
  jmp    L180
L85:
  subq   $0x1,-0x10(%rbp)
  mov    -0x8(%rbp),%rax
  movss  (%rax),%xmm0
  mulss  -0x14(%rbp),%xmm0
  mov    -0x8(%rbp),%rax
  movss  %xmm0,(%rax)
  addq   $0x4,-0x8(%rbp)
L180:
  cmpq   $0x0,-0x10(%rbp)
  jne    L85
L337:
  cmpq   $0x0,-0x30(%rbp)
  je     L165
  mov    -0x30(%rbp),%rax
  movaps %xmm6,%xmm2
  movss  %xmm2,(%rax)
L165:
  cmpq   $0x0,-0x38(%rbp)
  je     L268
  mov    -0x38(%rbp),%rax
  movaps %xmm8,%xmm5
  movss  %xmm5,(%rax)
L268:
  nop
  pop    %rbp
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D10
type_guessed: byte[4]

tool: {"D10": [0x00,0x00,0x80,0x3f]}

assistant: ```c
void IIRsos(float *x, unsigned long Nx, float b0, float b1, float b2, float a1, float a2, float *tz1, float *tz2) {
  register float z0;
  register float z1;
  register float z2;
  if (tz1 == NULL)
    z1 = 0.0f;
  else
    z1 = *tz1;
  if (tz2 == NULL)
    z2 = 0.0f;
  else
    z2 = *tz2;
  if ((a1 != 0.0f) || (a2 != 0.0f)) {
    if ((b1 != 0.0f) || (b2 != 0.0f)) {
      while ((Nx) > 0) {
        Nx--;
        z0 = (*x) - a1 * z1 - a2 * z2;
        *(x++) = b0 * z0 + b1 * z1 + b2 * z2;
        z2 = z1;
        z1 = z0;
      }
    } else {
      if (b0 != 1.0f) {
        while ((Nx) > 0) {
          Nx--;
          z0 = (*x) - a1 * z1 - a2 * z2;
          *(x++) = b0 * z0;
          z2 = z1;
          z1 = z0;
        }
      } else {
        while ((Nx) > 0) {
          Nx--;
          z0 = (*x) - a1 * z1 - a2 * z2;
          *(x++) = z0;
          z2 = z1;
          z1 = z0;
        }
      }
    }
  } else {
    if ((b1 != 0.0f) || (b2 != 0.0f)) {
      while ((Nx) > 0) {
        Nx--;
        z0 = (*x);
        *(x++) = b0 * z0 + b1 * z1 + b2 * z2;
        z2 = z1;
        z1 = z0;
      }
    } else {
      if (b0 != 1.0f) {
        while ((Nx) > 0) {
          Nx--;
          *x = b0 * (*x);
          x++;
        }
      }
    }
  }
  if (tz1 != NULL)
    (*tz1) = z1;
  if (tz2 != NULL)
    (*tz2) = z2;
}
```