user: What would the C source look like for the assembly code provided here?

```asm
<IIRsos>:
  endbr64
  mov    %rdi,%rax
  mov    %rdx,%rdi
  movaps %xmm0,%xmm8
  mov    %rcx,%rdx
  test   %rdi,%rdi
  je     L188
  movss  (%rdi),%xmm5
  pxor   %xmm6,%xmm6
L123:
  movaps %xmm6,%xmm0
  test   %rdx,%rdx
  je     L265
  movss  (%rdx),%xmm0
L265:
  ucomiss %xmm6,%xmm1
  mov    $0x1,%r8d
  setp   %cl
  cmovne %r8d,%ecx
  ucomiss %xmm6,%xmm2
  setp   %r9b
  cmovne %r8d,%r9d
  or     %r9d,%ecx
  ucomiss %xmm6,%xmm3
  setp   %r9b
  cmovne %r8d,%r9d
  test   %r9b,%r9b
  jne    L128
  ucomiss %xmm6,%xmm4
  setp   %r9b
  cmove  %r9d,%r8d
  test   %r8b,%r8b
  jne    L128
  test   %cl,%cl
  je     L156
  test   %rsi,%rsi
  je     L125
  nopl   0x0(%rax)
L133:
  movss  (%rax),%xmm4
  movaps %xmm8,%xmm3
  movaps %xmm1,%xmm6
  add    $0x4,%rax
  mulss  %xmm5,%xmm6
  mulss  %xmm4,%xmm3
  mulss  %xmm2,%xmm0
  addss  %xmm6,%xmm3
  addss  %xmm0,%xmm3
  movaps %xmm5,%xmm0
  movaps %xmm4,%xmm5
  movss  %xmm3,-0x4(%rax)
  sub    $0x1,%rsi
  jne    L133
L125:
  test   %rdi,%rdi
  je     L237
  movss  %xmm5,(%rdi)
L237:
  test   %rdx,%rdx
  je     L129
  movss  %xmm0,(%rdx)
L129:
  ret
  nopw   0x0(%rax,%rax,1)
L128:
  test   %cl,%cl
  je     L81
  test   %rsi,%rsi
  je     L125
  nopl   0x0(%rax)
L126:
  movaps %xmm3,%xmm7
  movss  (%rax),%xmm6
  movaps %xmm1,%xmm9
  add    $0x4,%rax
  mulss  %xmm5,%xmm7
  mulss  %xmm5,%xmm9
  subss  %xmm7,%xmm6
  movaps %xmm4,%xmm7
  mulss  %xmm0,%xmm7
  mulss  %xmm2,%xmm0
  subss  %xmm7,%xmm6
  movaps %xmm8,%xmm7
  mulss  %xmm6,%xmm7
  addss  %xmm9,%xmm7
  addss  %xmm0,%xmm7
  movaps %xmm5,%xmm0
  movaps %xmm6,%xmm5
  movss  %xmm7,-0x4(%rax)
  sub    $0x1,%rsi
  jne    L126
  jmp    L125
  nop
L81:
  ucomiss D13(%rip),%xmm8
  jp     L52
  jne    L52
  test   %rsi,%rsi
  je     L125
  nopl   (%rax)
L251:
  movss  (%rax),%xmm1
  mulss  %xmm4,%xmm0
  movaps %xmm3,%xmm2
  add    $0x4,%rax
  mulss  %xmm5,%xmm2
  subss  %xmm2,%xmm1
  subss  %xmm0,%xmm1
  movaps %xmm5,%xmm0
  movss  %xmm1,-0x4(%rax)
  movaps %xmm1,%xmm5
  sub    $0x1,%rsi
  jne    L251
  jmp    L125
  nopl   0x0(%rax)
L156:
  ucomiss D13(%rip),%xmm8
  jp     L142
  je     L125
L142:
  test   %rsi,%rsi
  je     L125
  nopl   0x0(%rax)
L234:
  movss  (%rax),%xmm1
  add    $0x4,%rax
  mulss  %xmm8,%xmm1
  movss  %xmm1,-0x4(%rax)
  sub    $0x1,%rsi
  jne    L234
  jmp    L125
  nopl   (%rax)
L188:
  pxor   %xmm6,%xmm6
  movaps %xmm6,%xmm5
  jmp    L123
  nopl   0x0(%rax)
L52:
  test   %rsi,%rsi
  je     L125
  nopl   0x0(%rax)
L225:
  movss  (%rax),%xmm1
  mulss  %xmm4,%xmm0
  movaps %xmm3,%xmm2
  add    $0x4,%rax
  mulss  %xmm5,%xmm2
  subss  %xmm2,%xmm1
  subss  %xmm0,%xmm1
  movaps %xmm8,%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x4(%rax)
  movaps %xmm5,%xmm0
  movaps %xmm1,%xmm5
  sub    $0x1,%rsi
  jne    L225
  jmp    L125
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D13
type_infered: byte[4]

tool: {"D13": [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;
}
```