user: Converte this assembly snippet into its equivalent C code:

```asm
<MV_8BitReverbFast>:
  endbr64
  mov    $0x80,%eax
  mov    $0xffffff80,%r9d
  sar    %cl,%eax
  sub    %eax,%r9d
  test   %edx,%edx
  jle    L68
  lea    0x1(%rdi),%r8
  mov    %rsi,%rax
  sub    %r8,%rax
  cmp    $0xe,%rax
  jbe    L106
  lea    -0x1(%rdx),%eax
  cmp    $0xe,%eax
  jbe    L106
  movd   %r9d,%xmm4
  mov    %edx,%r8d
  movslq %ecx,%r11
  xor    %eax,%eax
  punpcklbw %xmm4,%xmm4
  shr    $0x4,%r8d
  pxor   %xmm5,%xmm5
  pxor   %xmm3,%xmm3
  punpcklwd %xmm4,%xmm4
  movdqa D0(%rip),%xmm6
  shl    $0x4,%r8
  movdqa D1(%rip),%xmm7
  pshufd $0x0,%xmm4,%xmm4
  movq   %r11,%xmm9
  nopl   0x0(%rax,%rax,1)
L6:
  movdqu (%rdi,%rax,1),%xmm2
  movdqa %xmm2,%xmm1
  movdqa %xmm2,%xmm8
  punpcklbw %xmm5,%xmm1
  psrlw  $0x7,%xmm2
  punpckhbw %xmm5,%xmm8
  movdqa %xmm1,%xmm0
  punpckhwd %xmm3,%xmm1
  pandn  %xmm7,%xmm2
  punpcklwd %xmm3,%xmm0
  psrad  %xmm9,%xmm1
  paddb  %xmm4,%xmm2
  psrad  %xmm9,%xmm0
  movdqa %xmm0,%xmm10
  punpcklwd %xmm1,%xmm0
  punpckhwd %xmm1,%xmm10
  movdqa %xmm0,%xmm1
  punpckhwd %xmm10,%xmm1
  punpcklwd %xmm10,%xmm0
  punpcklwd %xmm1,%xmm0
  movdqa %xmm8,%xmm1
  punpckhwd %xmm3,%xmm8
  punpcklwd %xmm3,%xmm1
  psrad  %xmm9,%xmm8
  pand   %xmm6,%xmm0
  psrad  %xmm9,%xmm1
  movdqa %xmm1,%xmm10
  punpcklwd %xmm8,%xmm1
  punpckhwd %xmm8,%xmm10
  movdqa %xmm1,%xmm8
  punpckhwd %xmm10,%xmm8
  punpcklwd %xmm10,%xmm1
  punpcklwd %xmm8,%xmm1
  pand   %xmm6,%xmm1
  packuswb %xmm1,%xmm0
  paddb  %xmm2,%xmm0
  movups %xmm0,(%rsi,%rax,1)
  add    $0x10,%rax
  cmp    %r8,%rax
  jne    L6
  mov    %edx,%eax
  and    $0xfffffff0,%eax
  test   $0xf,%dl
  je     L68
  mov    %eax,%r11d
  movzbl (%rdi,%r11,1),%r10d
  mov    %r10d,%r8d
  sar    %cl,%r10d
  shr    $0x7,%r8b
  xor    $0x1,%r8d
  add    %r9d,%r8d
  add    %r10d,%r8d
  mov    %r8b,(%rsi,%r11,1)
  lea    0x1(%rax),%r8d
  cmp    %r8d,%edx
  jle    L68
  movslq %r8d,%r11
  movzbl (%rdi,%r11,1),%r10d
  mov    %r10d,%r8d
  sar    %cl,%r10d
  shr    $0x7,%r8b
  xor    $0x1,%r8d
  add    %r9d,%r8d
  add    %r10d,%r8d
  mov    %r8b,(%rsi,%r11,1)
  lea    0x2(%rax),%r8d
  cmp    %r8d,%edx
  jle    L68
  movslq %r8d,%r11
  movzbl (%rdi,%r11,1),%r10d
  mov    %r10d,%r8d
  sar    %cl,%r10d
  shr    $0x7,%r8b
  xor    $0x1,%r8d
  add    %r9d,%r8d
  add    %r10d,%r8d
  mov    %r8b,(%rsi,%r11,1)
  lea    0x3(%rax),%r8d
  cmp    %r8d,%edx
  jle    L68
  movslq %r8d,%r11
  movzbl (%rdi,%r11,1),%r10d
  mov    %r10d,%r8d
  sar    %cl,%r10d
  shr    $0x7,%r8b
  xor    $0x1,%r8d
  add    %r9d,%r8d
  add    %r10d,%r8d
  mov    %r8b,(%rsi,%r11,1)
  lea    0x4(%rax),%r8d
  cmp    %r8d,%edx
  jle    L68
  movslq %r8d,%r11
  movzbl (%rdi,%r11,1),%r10d
  mov    %r10d,%r8d
  sar    %cl,%r10d
  shr    $0x7,%r8b
  xor    $0x1,%r8d
  add    %r9d,%r8d
  add    %r10d,%r8d
  mov    %r8b,(%rsi,%r11,1)
  lea    0x5(%rax),%r8d
  cmp    %r8d,%edx
  jle    L68
  movslq %r8d,%r11
  movzbl (%rdi,%r11,1),%r10d
  mov    %r10d,%r8d
  sar    %cl,%r10d
  shr    $0x7,%r8b
  xor    $0x1,%r8d
  add    %r9d,%r8d
  add    %r10d,%r8d
  mov    %r8b,(%rsi,%r11,1)
  lea    0x6(%rax),%r8d
  cmp    %r8d,%edx
  jle    L68
  movslq %r8d,%r11
  movzbl (%rdi,%r11,1),%r10d
  mov    %r10d,%r8d
  sar    %cl,%r10d
  shr    $0x7,%r8b
  xor    $0x1,%r8d
  add    %r9d,%r8d
  add    %r10d,%r8d
  mov    %r8b,(%rsi,%r11,1)
  lea    0x7(%rax),%r8d
  cmp    %r8d,%edx
  jle    L68
  movslq %r8d,%r11
  movzbl (%rdi,%r11,1),%r10d
  mov    %r10d,%r8d
  sar    %cl,%r10d
  shr    $0x7,%r8b
  xor    $0x1,%r8d
  add    %r9d,%r8d
  add    %r10d,%r8d
  mov    %r8b,(%rsi,%r11,1)
  lea    0x8(%rax),%r8d
  cmp    %r8d,%edx
  jle    L68
  movslq %r8d,%r11
  movzbl (%rdi,%r11,1),%r10d
  mov    %r10d,%r8d
  sar    %cl,%r10d
  shr    $0x7,%r8b
  xor    $0x1,%r8d
  add    %r9d,%r8d
  add    %r10d,%r8d
  mov    %r8b,(%rsi,%r11,1)
  lea    0x9(%rax),%r8d
  cmp    %r8d,%edx
  jle    L68
  movslq %r8d,%r11
  movzbl (%rdi,%r11,1),%r10d
  mov    %r10d,%r8d
  sar    %cl,%r10d
  shr    $0x7,%r8b
  xor    $0x1,%r8d
  add    %r9d,%r8d
  add    %r10d,%r8d
  mov    %r8b,(%rsi,%r11,1)
  lea    0xa(%rax),%r8d
  cmp    %r8d,%edx
  jle    L68
  movslq %r8d,%r11
  movzbl (%rdi,%r11,1),%r10d
  mov    %r10d,%r8d
  sar    %cl,%r10d
  shr    $0x7,%r8b
  xor    $0x1,%r8d
  add    %r9d,%r8d
  add    %r10d,%r8d
  mov    %r8b,(%rsi,%r11,1)
  lea    0xb(%rax),%r8d
  cmp    %r8d,%edx
  jle    L68
  movslq %r8d,%r11
  movzbl (%rdi,%r11,1),%r10d
  mov    %r10d,%r8d
  sar    %cl,%r10d
  shr    $0x7,%r8b
  xor    $0x1,%r8d
  add    %r9d,%r8d
  add    %r10d,%r8d
  mov    %r8b,(%rsi,%r11,1)
  lea    0xc(%rax),%r8d
  cmp    %r8d,%edx
  jle    L68
  movslq %r8d,%r11
  movzbl (%rdi,%r11,1),%r10d
  mov    %r10d,%r8d
  sar    %cl,%r10d
  shr    $0x7,%r8b
  xor    $0x1,%r8d
  add    %r9d,%r8d
  add    %r10d,%r8d
  mov    %r8b,(%rsi,%r11,1)
  lea    0xd(%rax),%r8d
  cmp    %r8d,%edx
  jle    L68
  movslq %r8d,%r11
  add    $0xe,%eax
  movzbl (%rdi,%r11,1),%r10d
  mov    %r10d,%r8d
  sar    %cl,%r10d
  shr    $0x7,%r8b
  xor    $0x1,%r8d
  add    %r9d,%r8d
  add    %r10d,%r8d
  mov    %r8b,(%rsi,%r11,1)
  cmp    %eax,%edx
  jle    L68
  cltq
  movzbl (%rdi,%rax,1),%edi
  mov    %edi,%edx
  sar    %cl,%edi
  shr    $0x7,%dl
  xor    $0x1,%edx
  add    %r9d,%edx
  add    %edi,%edx
  mov    %dl,(%rsi,%rax,1)
  ret
  nopl   0x0(%rax)
L106:
  mov    %edx,%edx
  xor    %r10d,%r10d
  nopl   (%rax)
L132:
  movzbl (%rdi,%r10,1),%r8d
  mov    %r8d,%eax
  sar    %cl,%r8d
  shr    $0x7,%al
  xor    $0x1,%eax
  add    %r9d,%eax
  add    %r8d,%eax
  mov    %al,(%rsi,%r10,1)
  add    $0x1,%r10
  cmp    %rdx,%r10
  jne    L132
L68:
  ret
```

tool_calls: name: parse_data
arguments: tag: D0
type: byte[16]
name: parse_data
arguments: tag: D1
type: byte[16]

tool: {"D0": [0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00]}

tool: {"D1": [0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01]}

assistant: ```c
void MV_8BitReverbFast(const signed char *src, signed char *dest, int count, int shift) {
  int i;
  unsigned char sh = 0x80 - (0x80 >> shift);
  for (i = 0; i < count; i++) {
    unsigned char a = ((unsigned char)src[i]) >> shift;
    unsigned char c = (((unsigned char)src[i]) ^ 0x80) >> 7;
    dest[i] = (signed char)(a + sh + c);
  }
}
```