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

```asm
<test_pabsb_c>:
  endbr64
  mov    %edx,%ecx
  mov    $0x8,%eax
  shl    %cl,%eax
  mov    %eax,%edx
  test   %edx,%edx
  jle    L57
  lea    0x1(%rsi),%rcx
  mov    %rdi,%rax
  sub    %rcx,%rax
  cmp    $0xe,%rax
  jbe    L37
  lea    -0x1(%rdx),%eax
  cmp    $0xe,%eax
  jbe    L37
  mov    %edx,%ecx
  xor    %eax,%eax
  pxor   %xmm1,%xmm1
  shr    $0x4,%ecx
  shl    $0x4,%rcx
  cs nopw 0x0(%rax,%rax,1)
L5:
  movdqu (%rsi,%rax,1),%xmm2
  movdqa %xmm1,%xmm0
  psubb  %xmm2,%xmm0
  pminub %xmm2,%xmm0
  movups %xmm0,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %rcx,%rax
  jne    L5
  mov    %edx,%eax
  and    $0xfffffff0,%eax
  test   $0xf,%dl
  je     L57
  mov    %eax,%r9d
  movzbl (%rsi,%r9,1),%r8d
  mov    %r8d,%ecx
  neg    %cl
  cmovs  %r8d,%ecx
  mov    %cl,(%rdi,%r9,1)
  lea    0x1(%rax),%ecx
  cmp    %ecx,%edx
  jle    L57
  movslq %ecx,%rcx
  movzbl (%rsi,%rcx,1),%r9d
  mov    %r9d,%r8d
  neg    %r8b
  cmovs  %r9d,%r8d
  mov    %r8b,(%rdi,%rcx,1)
  lea    0x2(%rax),%ecx
  cmp    %ecx,%edx
  jle    L57
  movslq %ecx,%rcx
  movzbl (%rsi,%rcx,1),%r9d
  mov    %r9d,%r8d
  neg    %r8b
  cmovs  %r9d,%r8d
  mov    %r8b,(%rdi,%rcx,1)
  lea    0x3(%rax),%ecx
  cmp    %ecx,%edx
  jle    L57
  movslq %ecx,%rcx
  movzbl (%rsi,%rcx,1),%r9d
  mov    %r9d,%r8d
  neg    %r8b
  cmovs  %r9d,%r8d
  mov    %r8b,(%rdi,%rcx,1)
  lea    0x4(%rax),%ecx
  cmp    %ecx,%edx
  jle    L57
  movslq %ecx,%rcx
  movzbl (%rsi,%rcx,1),%r9d
  mov    %r9d,%r8d
  neg    %r8b
  cmovs  %r9d,%r8d
  mov    %r8b,(%rdi,%rcx,1)
  lea    0x5(%rax),%ecx
  cmp    %ecx,%edx
  jle    L57
  movslq %ecx,%rcx
  movzbl (%rsi,%rcx,1),%r9d
  mov    %r9d,%r8d
  neg    %r8b
  cmovs  %r9d,%r8d
  mov    %r8b,(%rdi,%rcx,1)
  lea    0x6(%rax),%ecx
  cmp    %ecx,%edx
  jle    L57
  movslq %ecx,%rcx
  movzbl (%rsi,%rcx,1),%r9d
  mov    %r9d,%r8d
  neg    %r8b
  cmovs  %r9d,%r8d
  mov    %r8b,(%rdi,%rcx,1)
  lea    0x7(%rax),%ecx
  cmp    %ecx,%edx
  jle    L57
  movslq %ecx,%rcx
  movzbl (%rsi,%rcx,1),%r9d
  mov    %r9d,%r8d
  neg    %r8b
  cmovs  %r9d,%r8d
  mov    %r8b,(%rdi,%rcx,1)
  lea    0x8(%rax),%ecx
  cmp    %ecx,%edx
  jle    L57
  movslq %ecx,%rcx
  movzbl (%rsi,%rcx,1),%r9d
  mov    %r9d,%r8d
  neg    %r8b
  cmovs  %r9d,%r8d
  mov    %r8b,(%rdi,%rcx,1)
  lea    0x9(%rax),%ecx
  cmp    %ecx,%edx
  jle    L57
  movslq %ecx,%rcx
  movzbl (%rsi,%rcx,1),%r9d
  mov    %r9d,%r8d
  neg    %r8b
  cmovs  %r9d,%r8d
  mov    %r8b,(%rdi,%rcx,1)
  lea    0xa(%rax),%ecx
  cmp    %ecx,%edx
  jle    L57
  movslq %ecx,%rcx
  movzbl (%rsi,%rcx,1),%r9d
  mov    %r9d,%r8d
  neg    %r8b
  cmovs  %r9d,%r8d
  mov    %r8b,(%rdi,%rcx,1)
  lea    0xb(%rax),%ecx
  cmp    %ecx,%edx
  jle    L57
  movslq %ecx,%rcx
  movzbl (%rsi,%rcx,1),%r9d
  mov    %r9d,%r8d
  neg    %r8b
  cmovs  %r9d,%r8d
  mov    %r8b,(%rdi,%rcx,1)
  lea    0xc(%rax),%ecx
  cmp    %ecx,%edx
  jle    L57
  movslq %ecx,%rcx
  movzbl (%rsi,%rcx,1),%r9d
  mov    %r9d,%r8d
  neg    %r8b
  cmovs  %r9d,%r8d
  mov    %r8b,(%rdi,%rcx,1)
  lea    0xd(%rax),%ecx
  cmp    %ecx,%edx
  jle    L57
  movslq %ecx,%rcx
  movzbl (%rsi,%rcx,1),%r9d
  mov    %r9d,%r8d
  neg    %r8b
  cmovs  %r9d,%r8d
  add    $0xe,%eax
  mov    %r8b,(%rdi,%rcx,1)
  cmp    %eax,%edx
  jle    L57
  cltq
  movzbl (%rsi,%rax,1),%ecx
  mov    %ecx,%edx
  neg    %dl
  cmovs  %ecx,%edx
  mov    %dl,(%rdi,%rax,1)
  ret
  xchg   %ax,%ax
L37:
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L117:
  movzbl (%rsi,%rax,1),%r8d
  mov    %r8d,%ecx
  neg    %cl
  cmovs  %r8d,%ecx
  mov    %cl,(%rdi,%rax,1)
  add    $0x1,%rax
  cmp    %rdx,%rax
  jne    L117
L57:
  ret
```

assistant: ```c
void test_pabsb_c(char *pDst, char *pSrc, int xmm) {
  int i;
  for (i = 0; i < (8 << xmm); i++)
    pDst[i] = pSrc[i] > 0 ? pSrc[i] : -pSrc[i];
}
```