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

```asm
<fir_stereo>:
  endbr64
  mov    %rsi,%rax
  mov    %rcx,%rsi
  mov    %edx,%ecx
  push   %rbp
  sar    $0x1f,%ecx
  push   %rbx
  shr    $0x1d,%ecx
  lea    (%rdx,%rcx,1),%r9d
  and    $0x7,%r9d
  sub    %ecx,%r9d
  test   %edx,%edx
  lea    0x7(%rdx),%ecx
  cmovns %edx,%ecx
  and    $0xfffffff8,%ecx
  movslq %ecx,%rcx
  shl    $0x2,%rcx
  lea    (%rax,%rcx,1),%r10
  cmp    %r10,%rax
  je     L48
  sub    $0x20,%rcx
  pxor   %xmm6,%xmm6
  mov    %rax,%rdx
  xor    %r11d,%r11d
  shr    $0x5,%rcx
  movdqa %xmm6,%xmm4
  movdqa %xmm6,%xmm3
  mov    %rdi,%rax
  add    $0x1,%rcx
  movdqa %xmm6,%xmm5
  nopl   0x0(%rax,%rax,1)
L80:
  movdqu (%rdx),%xmm7
  movdqu (%rax),%xmm1
  add    $0x1,%r11
  add    $0x40,%rax
  movdqu -0x30(%rax),%xmm12
  movdqu -0x20(%rax),%xmm0
  add    $0x20,%rdx
  movdqa %xmm1,%xmm8
  movdqa %xmm7,%xmm10
  movdqu -0x10(%rdx),%xmm2
  movdqu -0x10(%rax),%xmm13
  psrlq  $0x20,%xmm10
  shufps $0x88,%xmm12,%xmm8
  movdqa %xmm8,%xmm9
  shufps $0xdd,%xmm12,%xmm1
  psrlq  $0x20,%xmm8
  pmuludq %xmm7,%xmm9
  pmuludq %xmm10,%xmm8
  pmuludq %xmm1,%xmm7
  psrlq  $0x20,%xmm1
  pmuludq %xmm10,%xmm1
  pshufd $0x8,%xmm9,%xmm9
  pshufd $0x8,%xmm8,%xmm8
  pshufd $0x8,%xmm7,%xmm7
  punpckldq %xmm8,%xmm9
  movdqa %xmm0,%xmm8
  shufps $0xdd,%xmm13,%xmm0
  shufps $0x88,%xmm13,%xmm8
  paddd  %xmm9,%xmm4
  movdqa %xmm8,%xmm11
  movdqa %xmm8,%xmm9
  movdqa %xmm2,%xmm8
  pmuludq %xmm2,%xmm11
  pshufd $0x8,%xmm1,%xmm1
  pmuludq %xmm0,%xmm2
  psrlq  $0x20,%xmm8
  punpckldq %xmm1,%xmm7
  psrlq  $0x20,%xmm9
  psrlq  $0x20,%xmm0
  paddd  %xmm7,%xmm5
  pmuludq %xmm8,%xmm9
  pmuludq %xmm8,%xmm0
  pshufd $0x8,%xmm11,%xmm11
  pshufd $0x8,%xmm2,%xmm2
  pshufd $0x8,%xmm9,%xmm9
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm9,%xmm11
  punpckldq %xmm0,%xmm2
  paddd  %xmm11,%xmm6
  paddd  %xmm2,%xmm3
  cmp    %r11,%rcx
  ja     L80
  paddd  %xmm6,%xmm4
  paddd  %xmm5,%xmm3
  shl    $0x6,%rcx
  movdqa %xmm4,%xmm0
  add    %rcx,%rdi
  psrldq $0x8,%xmm0
  paddd  %xmm0,%xmm4
  movdqa %xmm4,%xmm0
  psrldq $0x4,%xmm0
  paddd  %xmm0,%xmm4
  movdqa %xmm3,%xmm0
  psrldq $0x8,%xmm0
  movd   %xmm4,%r11d
  paddd  %xmm0,%xmm3
  movdqa %xmm3,%xmm0
  psrldq $0x4,%xmm0
  paddd  %xmm0,%xmm3
  movd   %xmm3,%eax
L74:
  movslq %r9d,%r9
  shl    $0x2,%r9
  lea    (%r10,%r9,1),%rbp
  cmp    %rbp,%r10
  je     L61
  sub    $0x4,%r9
  mov    %r9,%rbx
  shr    $0x2,%rbx
  add    $0x1,%rbx
  cmp    $0x8,%r9
  jbe    L19
  mov    %rbx,%rcx
  pxor   %xmm5,%xmm5
  xor    %edx,%edx
  shr    $0x2,%rcx
  movdqa %xmm5,%xmm4
  shl    $0x4,%rcx
  nopl   0x0(%rax,%rax,1)
L81:
  movdqu (%rdi,%rdx,2),%xmm0
  movdqu (%r10,%rdx,1),%xmm1
  movdqu 0x10(%rdi,%rdx,2),%xmm6
  movdqa %xmm0,%xmm2
  shufps $0x88,%xmm6,%xmm2
  movdqa %xmm1,%xmm6
  movdqa %xmm2,%xmm3
  psrlq  $0x20,%xmm6
  psrlq  $0x20,%xmm2
  pmuludq %xmm1,%xmm3
  pmuludq %xmm6,%xmm2
  pshufd $0x8,%xmm3,%xmm3
  pshufd $0x8,%xmm2,%xmm2
  punpckldq %xmm2,%xmm3
  paddd  %xmm3,%xmm4
  movdqu 0x10(%rdi,%rdx,2),%xmm3
  add    $0x10,%rdx
  shufps $0xdd,%xmm3,%xmm0
  pmuludq %xmm0,%xmm1
  psrlq  $0x20,%xmm0
  pmuludq %xmm6,%xmm0
  pshufd $0x8,%xmm1,%xmm1
  pshufd $0x8,%xmm0,%xmm0
  punpckldq %xmm0,%xmm1
  paddd  %xmm1,%xmm5
  cmp    %rcx,%rdx
  jne    L81
  movdqa %xmm5,%xmm0
  psrldq $0x8,%xmm0
  paddd  %xmm0,%xmm5
  movdqa %xmm5,%xmm0
  psrldq $0x4,%xmm0
  paddd  %xmm0,%xmm5
  movdqa %xmm4,%xmm0
  psrldq $0x8,%xmm0
  movd   %xmm5,%edx
  paddd  %xmm0,%xmm4
  add    %edx,%eax
  movdqa %xmm4,%xmm0
  psrldq $0x4,%xmm0
  paddd  %xmm0,%xmm4
  movd   %xmm4,%edx
  add    %edx,%r11d
  mov    %rbx,%rdx
  and    $0xfffffffffffffffc,%rdx
  lea    (%rdi,%rdx,8),%rdi
  lea    (%r10,%rdx,4),%r10
  cmp    %rbx,%rdx
  je     L61
L19:
  mov    (%r10),%edx
  mov    (%rdi),%ecx
  imul   %edx,%ecx
  imul   0x4(%rdi),%edx
  add    %ecx,%r11d
  add    %edx,%eax
  lea    0x4(%r10),%rdx
  cmp    %rdx,%rbp
  je     L61
  mov    0x4(%r10),%edx
  mov    0x8(%rdi),%ecx
  imul   %edx,%ecx
  imul   0xc(%rdi),%edx
  add    %ecx,%r11d
  add    %edx,%eax
  lea    0x8(%r10),%rdx
  cmp    %rdx,%rbp
  je     L61
  mov    0x8(%r10),%edx
  mov    0x10(%rdi),%ecx
  imul   %edx,%ecx
  imul   0x14(%rdi),%edx
  add    %ecx,%r11d
  add    %edx,%eax
L61:
  mov    %r11d,(%rsi)
  pop    %rbx
  mov    %eax,(%r8)
  pop    %rbp
  ret
  xchg   %ax,%ax
L48:
  xor    %eax,%eax
  xor    %r11d,%r11d
  jmp    L74
```

assistant: ```c
void fir_stereo(int *inp, int *coep, int firlen, int *out1p, int *out2p) {
  register int akku1 = 0, akku2 = 0, *endp;
  int n1 = (firlen / 8) * 8, n0 = firlen % 8;
  endp = coep + n1;
  while (coep != endp) {
    akku1 += *inp++ * *coep;
    akku2 += *inp++ * *coep++;
    akku1 += *inp++ * *coep;
    akku2 += *inp++ * *coep++;
    akku1 += *inp++ * *coep;
    akku2 += *inp++ * *coep++;
    akku1 += *inp++ * *coep;
    akku2 += *inp++ * *coep++;
    akku1 += *inp++ * *coep;
    akku2 += *inp++ * *coep++;
    akku1 += *inp++ * *coep;
    akku2 += *inp++ * *coep++;
    akku1 += *inp++ * *coep;
    akku2 += *inp++ * *coep++;
    akku1 += *inp++ * *coep;
    akku2 += *inp++ * *coep++;
  }
  endp = coep + n0;
  while (coep != endp) {
    akku1 += *inp++ * *coep;
    akku2 += *inp++ * *coep++;
  }
  *out1p = akku1;
  *out2p = akku2;
}
```