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

```asm
<__cmovd>:
  endbr64
  mov    %rdi,%rcx
  mov    %edx,%r10d
  mov    %edx,%r8d
  mov    %rsi,%rax
  mov    %edx,%edi
  shr    $0x3,%r10d
  and    $0xfffffff8,%r8d
  cmp    %rsi,%rcx
  jb     L169
  mov    %edx,%edx
  add    %rsi,%rdx
  cmp    %rdx,%rcx
  jbe    L88
L169:
  test   %r10d,%r10d
  je     L207
  lea    -0x1(%r10),%edx
  cmp    $0x2,%edx
  jbe    L177
  lea    0x8(%rax),%rdx
  cmp    %rdx,%rcx
  je     L177
  mov    %edi,%esi
  xor    %edx,%edx
  shr    $0x4,%esi
  mov    %esi,%r9d
  shl    $0x4,%r9
  nopw   0x0(%rax,%rax,1)
L54:
  movdqu (%rax,%rdx,1),%xmm0
  movups %xmm0,(%rcx,%rdx,1)
  add    $0x10,%rdx
  cmp    %r9,%rdx
  jne    L54
  lea    (%rsi,%rsi,1),%edx
  cmp    %edx,%r10d
  je     L207
  mov    (%rax,%rdx,8),%rsi
  mov    %rsi,(%rcx,%rdx,8)
L207:
  cmp    %r8d,%edi
  jbe    L90
  mov    %r8d,%esi
  push   %rbp
  mov    %edi,%r9d
  lea    (%rcx,%rsi,1),%r11
  lea    0x1(%rsi),%rdx
  push   %rbx
  sub    %r8d,%r9d
  lea    (%rax,%rdx,1),%rbp
  mov    %r11,%rbx
  lea    -0x1(%r9),%r10d
  sub    %rbp,%rbx
  cmp    $0xe,%rbx
  jbe    L221
  cmp    $0x6,%r10d
  jbe    L221
  cmp    $0xe,%r10d
  jbe    L171
  mov    %r9d,%r10d
  lea    (%rax,%rsi,1),%rbx
  xor    %edx,%edx
  shr    $0x4,%r10d
  shl    $0x4,%r10
  nopl   0x0(%rax,%rax,1)
L64:
  movdqu (%rbx,%rdx,1),%xmm1
  movups %xmm1,(%r11,%rdx,1)
  add    $0x10,%rdx
  cmp    %r10,%rdx
  jne    L64
  mov    %r9d,%edx
  and    $0xfffffff0,%edx
  add    %edx,%r8d
  cmp    %edx,%r9d
  je     L33
  sub    %edx,%r9d
  lea    -0x1(%r9),%r10d
  cmp    $0x6,%r10d
  jbe    L147
L124:
  add    %rsi,%rdx
  mov    (%rax,%rdx,1),%rsi
  mov    %rsi,(%rcx,%rdx,1)
  mov    %r9d,%edx
  and    $0xfffffff8,%edx
  add    %edx,%r8d
  cmp    %edx,%r9d
  je     L33
L147:
  mov    %r8d,%edx
  movzbl (%rax,%rdx,1),%esi
  mov    %sil,(%rcx,%rdx,1)
  lea    0x1(%r8),%edx
  cmp    %edx,%edi
  jbe    L33
  movzbl (%rax,%rdx,1),%esi
  mov    %sil,(%rcx,%rdx,1)
  lea    0x2(%r8),%edx
  cmp    %edx,%edi
  jbe    L33
  movzbl (%rax,%rdx,1),%esi
  mov    %sil,(%rcx,%rdx,1)
  lea    0x3(%r8),%edx
  cmp    %edx,%edi
  jbe    L33
  movzbl (%rax,%rdx,1),%esi
  mov    %sil,(%rcx,%rdx,1)
  lea    0x4(%r8),%edx
  cmp    %edx,%edi
  jbe    L33
  movzbl (%rax,%rdx,1),%esi
  mov    %sil,(%rcx,%rdx,1)
  lea    0x5(%r8),%edx
  cmp    %edx,%edi
  jbe    L33
  movzbl (%rax,%rdx,1),%esi
  add    $0x6,%r8d
  mov    %sil,(%rcx,%rdx,1)
  cmp    %r8d,%edi
  jbe    L33
  movzbl (%rax,%r8,1),%eax
  mov    %al,(%rcx,%r8,1)
L33:
  pop    %rbx
  pop    %rbp
  ret
  nopl   0x0(%rax,%rax,1)
L92:
  add    $0x1,%rdx
L221:
  movzbl (%rax,%rsi,1),%r8d
  mov    %r8b,(%rcx,%rsi,1)
  mov    %rdx,%rsi
  cmp    %edx,%edi
  ja     L92
  pop    %rbx
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L88:
  lea    -0x1(%rdi),%edx
  test   %edi,%edi
  je     L181
  nopw   0x0(%rax,%rax,1)
L175:
  movzbl (%rax,%rdx,1),%esi
  mov    %sil,(%rcx,%rdx,1)
  sub    $0x1,%rdx
  jae    L175
  ret
L171:
  xor    %edx,%edx
  jmp    L124
  cs nopw 0x0(%rax,%rax,1)
L177:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L67:
  mov    (%rax,%rdx,8),%rsi
  mov    %rsi,(%rcx,%rdx,8)
  add    $0x1,%rdx
  cmp    %r10,%rdx
  jne    L67
  jmp    L207
  xchg   %ax,%ax
L90:
  ret
L181:
  ret
```

assistant: ```c
void __cmovd(long long *dest, const long long *src, unsigned len) {
  unsigned i;
  unsigned num = len >> 3;
  unsigned xlen = len & ~7;
  char *dest_byte = (char *)dest;
  const char *src_byte = (const char *)src;
  if (dest_byte < src_byte || dest_byte > src_byte + len) {
    for (i = 0; i < num; i++)
      dest[i] = src[i];
    while (len > xlen) {
      dest_byte[xlen] = src_byte[xlen];
      xlen++;
    }
  } else {
    while (len-- > 0)
      dest_byte[len] = src_byte[len];
  }
}
```