user: 这段汇编代码用C语言表示是什么样的?

```asm
<memcpyx2>:
  endbr64
  mov    %rdi,%rax
  mov    %rsi,%rcx
  mov    %edx,%r8d
  test   %edx,%edx
  je     L107
  lea    -0x1(%rdx),%r9d
  mov    %r9d,%edi
  shr    %edi
  lea    0x1(%rdi),%edx
  lea    (%rax,%rdx,2),%rsi
  mov    %rdx,%rdi
  cmp    %rsi,%rcx
  setae  %sil
  add    %rcx,%rdx
  cmp    %rdx,%rax
  setae  %dl
  or     %dl,%sil
  je     L52
  cmp    $0x1d,%r9d
  jbe    L52
  mov    %edi,%esi
  xor    %edx,%edx
  shr    $0x4,%esi
  shl    $0x4,%rsi
  cs nopw 0x0(%rax,%rax,1)
L111:
  movdqu (%rcx,%rdx,1),%xmm0
  movdqa %xmm0,%xmm1
  punpcklbw %xmm0,%xmm1
  punpckhbw %xmm0,%xmm0
  movups %xmm1,(%rax,%rdx,2)
  movups %xmm0,0x10(%rax,%rdx,2)
  add    $0x10,%rdx
  cmp    %rsi,%rdx
  jne    L111
  mov    %edi,%esi
  and    $0xfffffff0,%esi
  lea    (%rsi,%rsi,1),%edx
  cmp    %esi,%edi
  je     L107
  movslq %esi,%rdi
  lea    0x1(%rdx),%r9d
  lea    0x1(%rsi),%r10d
  movzbl (%rcx,%rdi,1),%r11d
  movslq %edx,%rdi
  movslq %r9d,%r9
  mov    %r11b,(%rax,%rdi,1)
  lea    0x2(%rdx),%edi
  mov    %r11b,(%rax,%r9,1)
  cmp    %edi,%r8d
  jbe    L107
  movslq %r10d,%r10
  movslq %edi,%rdi
  lea    0x3(%rdx),%r9d
  movzbl (%rcx,%r10,1),%r11d
  movslq %r9d,%r9
  lea    0x2(%rsi),%r10d
  mov    %r11b,(%rax,%rdi,1)
  lea    0x4(%rdx),%edi
  mov    %r11b,(%rax,%r9,1)
  cmp    %edi,%r8d
  jbe    L107
  movslq %r10d,%r10
  movslq %edi,%rdi
  lea    0x5(%rdx),%r9d
  movzbl (%rcx,%r10,1),%r11d
  movslq %r9d,%r9
  lea    0x3(%rsi),%r10d
  mov    %r11b,(%rax,%rdi,1)
  lea    0x6(%rdx),%edi
  mov    %r11b,(%rax,%r9,1)
  cmp    %edi,%r8d
  jbe    L107
  movslq %r10d,%r10
  movslq %edi,%rdi
  lea    0x7(%rdx),%r9d
  movzbl (%rcx,%r10,1),%r11d
  movslq %r9d,%r9
  lea    0x4(%rsi),%r10d
  mov    %r11b,(%rax,%rdi,1)
  lea    0x8(%rdx),%edi
  mov    %r11b,(%rax,%r9,1)
  cmp    %edi,%r8d
  jbe    L107
  movslq %r10d,%r10
  movslq %edi,%rdi
  lea    0x9(%rdx),%r9d
  movzbl (%rcx,%r10,1),%r11d
  movslq %r9d,%r9
  lea    0x5(%rsi),%r10d
  mov    %r11b,(%rax,%rdi,1)
  lea    0xa(%rdx),%edi
  mov    %r11b,(%rax,%r9,1)
  cmp    %edi,%r8d
  jbe    L107
  movslq %r10d,%r10
  movslq %edi,%rdi
  lea    0xb(%rdx),%r9d
  movzbl (%rcx,%r10,1),%r11d
  movslq %r9d,%r9
  lea    0x6(%rsi),%r10d
  mov    %r11b,(%rax,%rdi,1)
  lea    0xc(%rdx),%edi
  mov    %r11b,(%rax,%r9,1)
  cmp    %edi,%r8d
  jbe    L107
  movslq %r10d,%r10
  movslq %edi,%rdi
  lea    0xd(%rdx),%r9d
  movzbl (%rcx,%r10,1),%r11d
  movslq %r9d,%r9
  lea    0x7(%rsi),%r10d
  mov    %r11b,(%rax,%rdi,1)
  lea    0xe(%rdx),%edi
  mov    %r11b,(%rax,%r9,1)
  cmp    %edi,%r8d
  jbe    L107
  movslq %r10d,%r10
  movslq %edi,%rdi
  lea    0xf(%rdx),%r9d
  movzbl (%rcx,%r10,1),%r11d
  movslq %r9d,%r9
  lea    0x8(%rsi),%r10d
  mov    %r11b,(%rax,%rdi,1)
  lea    0x10(%rdx),%edi
  mov    %r11b,(%rax,%r9,1)
  cmp    %edi,%r8d
  jbe    L107
  movslq %r10d,%r10
  movslq %edi,%rdi
  lea    0x11(%rdx),%r9d
  movzbl (%rcx,%r10,1),%r11d
  movslq %r9d,%r9
  lea    0x9(%rsi),%r10d
  mov    %r11b,(%rax,%rdi,1)
  lea    0x12(%rdx),%edi
  mov    %r11b,(%rax,%r9,1)
  cmp    %edi,%r8d
  jbe    L107
  movslq %r10d,%r10
  movslq %edi,%rdi
  lea    0x13(%rdx),%r9d
  movzbl (%rcx,%r10,1),%r11d
  movslq %r9d,%r9
  lea    0xa(%rsi),%r10d
  mov    %r11b,(%rax,%rdi,1)
  lea    0x14(%rdx),%edi
  mov    %r11b,(%rax,%r9,1)
  cmp    %edi,%r8d
  jbe    L107
  movslq %r10d,%r10
  movslq %edi,%rdi
  lea    0x15(%rdx),%r9d
  movzbl (%rcx,%r10,1),%r11d
  movslq %r9d,%r9
  lea    0xb(%rsi),%r10d
  mov    %r11b,(%rax,%rdi,1)
  lea    0x16(%rdx),%edi
  mov    %r11b,(%rax,%r9,1)
  cmp    %edi,%r8d
  jbe    L107
  movslq %r10d,%r10
  movslq %edi,%rdi
  lea    0x17(%rdx),%r9d
  movzbl (%rcx,%r10,1),%r11d
  movslq %r9d,%r9
  lea    0xc(%rsi),%r10d
  mov    %r11b,(%rax,%rdi,1)
  lea    0x18(%rdx),%edi
  mov    %r11b,(%rax,%r9,1)
  cmp    %edi,%r8d
  jbe    L107
  movslq %r10d,%r10
  movslq %edi,%rdi
  lea    0x19(%rdx),%r9d
  movzbl (%rcx,%r10,1),%r11d
  movslq %r9d,%r9
  lea    0xd(%rsi),%r10d
  mov    %r11b,(%rax,%rdi,1)
  lea    0x1a(%rdx),%edi
  mov    %r11b,(%rax,%r9,1)
  cmp    %edi,%r8d
  jbe    L107
  movslq %r10d,%r10
  movslq %edi,%rdi
  lea    0x1b(%rdx),%r9d
  add    $0xe,%esi
  movzbl (%rcx,%r10,1),%r10d
  movslq %r9d,%r9
  mov    %r10b,(%rax,%rdi,1)
  lea    0x1c(%rdx),%edi
  mov    %r10b,(%rax,%r9,1)
  cmp    %edi,%r8d
  jbe    L107
  movslq %esi,%rsi
  add    $0x1d,%edx
  movslq %edi,%rdi
  movzbl (%rcx,%rsi,1),%ecx
  movslq %edx,%rdx
  mov    %cl,(%rax,%rdi,1)
  mov    %cl,(%rax,%rdx,1)
L107:
  mov    %r8d,%eax
  ret
  nopl   0x0(%rax)
L52:
  xor    %edx,%edx
  nopw   0x0(%rax,%rax,1)
L72:
  movzbl (%rcx,%rdx,1),%esi
  mov    %sil,(%rax,%rdx,2)
  mov    %sil,0x1(%rax,%rdx,2)
  add    $0x1,%rdx
  cmp    %rdi,%rdx
  jne    L72
  mov    %r8d,%eax
  ret
```

assistant: ```c
unsigned int memcpyx2(unsigned char *dst, unsigned char *src, unsigned int len) {
  int x, y;
  for (x = y = 0; (y < len);) {
    dst[y++] = src[x];
    dst[y++] = src[x++];
  }
  return (len);
}
```