user: What is the c source code of the assembly code below:

```asm
<veryfastmemcpy>:
  endbr64
  mov    %edi,%eax
  or     %rsi,%rax
  mov    %rax,%rcx
  and    $0x3,%ecx
  je     L128
  and    $0x1,%eax
  je     L230
  jmp    1050 <pigfx_memcpy@plt>
  nop
L230:
  mov    %edx,%r8d
  mov    %edx,%r10d
  sar    %edx
  and    $0xfffffffe,%r8d
  and    $0x1,%r10d
  cmp    $0x1,%r8d
  jle    L100
  lea    0x2(%rsi),%r9
  mov    %rdi,%rcx
  sub    %r9,%rcx
  cmp    $0xc,%rcx
  jbe    L82
  cmp    $0x7,%r8d
  jle    L82
  cmp    $0xf,%r8d
  jle    L61
  mov    %edx,%ecx
  shr    $0x3,%ecx
  shl    $0x4,%rcx
  nopl   0x0(%rax,%rax,1)
L84:
  movdqu (%rsi,%rax,1),%xmm1
  movups %xmm1,(%rdi,%rax,1)
  add    $0x10,%rax
  cmp    %rcx,%rax
  jne    L84
  mov    %edx,%eax
  and    $0xfffffff8,%eax
  mov    %eax,%ecx
  cmp    %eax,%edx
  je     L100
L43:
  mov    %edx,%r9d
  sub    %eax,%r9d
  lea    -0x1(%r9),%r11d
  cmp    $0x2,%r11d
  jbe    L117
  mov    (%rsi,%rax,2),%r11
  mov    %r11,(%rdi,%rax,2)
  mov    %r9d,%eax
  and    $0xfffffffc,%eax
  add    %eax,%ecx
  cmp    %eax,%r9d
  je     L100
L117:
  movslq %ecx,%r9
  movzwl (%rsi,%r9,2),%r11d
  lea    (%r9,%r9,1),%rax
  mov    %r11w,(%rdi,%r9,2)
  lea    0x1(%rcx),%r9d
  cmp    %r9d,%edx
  jle    L100
  movzwl 0x2(%rsi,%rax,1),%r9d
  add    $0x2,%ecx
  mov    %r9w,0x2(%rdi,%rax,1)
  cmp    %ecx,%edx
  jle    L100
  movzwl 0x4(%rsi,%rax,1),%edx
  mov    %dx,0x4(%rdi,%rax,1)
L100:
  test   %r10d,%r10d
  je     L101
  movslq %r8d,%rax
  movzbl (%rsi,%rax,1),%edx
  mov    %dl,(%rdi,%rax,1)
  ret
  nopl   (%rax)
L82:
  movzwl (%rsi,%rax,2),%ecx
  mov    %cx,(%rdi,%rax,2)
  add    $0x1,%rax
  cmp    %eax,%edx
  jle    L100
  movzwl (%rsi,%rax,2),%ecx
  mov    %cx,(%rdi,%rax,2)
  add    $0x1,%rax
  cmp    %eax,%edx
  jg     L82
  jmp    L100
  nopw   0x0(%rax,%rax,1)
L128:
  mov    %edx,%r9d
  mov    %edx,%eax
  or     $0x3,%eax
  and    $0x3,%r9d
  and    $0xfffffffc,%edx
  cmovns %edx,%eax
  movslq %edx,%r8
  sar    $0x2,%eax
  cmp    $0x3,%edx
  jle    L109
  lea    0x4(%rsi),%r11
  mov    %rdi,%r10
  sub    %r11,%r10
  cmp    $0x8,%r10
  jbe    L258
  cmp    $0xf,%edx
  jle    L258
  mov    %eax,%edx
  shr    $0x2,%edx
  shl    $0x4,%rdx
  nopl   0x0(%rax,%rax,1)
L50:
  movdqu (%rsi,%rcx,1),%xmm0
  movups %xmm0,(%rdi,%rcx,1)
  add    $0x10,%rcx
  cmp    %rdx,%rcx
  jne    L50
  mov    %eax,%edx
  and    $0xfffffffc,%edx
  test   $0x3,%al
  je     L109
  mov    %edx,%r10d
  mov    (%rsi,%r10,4),%r11d
  lea    0x0(,%r10,4),%rcx
  mov    %r11d,(%rdi,%r10,4)
  lea    0x1(%rdx),%r10d
  cmp    %eax,%r10d
  jge    L109
  mov    0x4(%rsi,%rcx,1),%r10d
  add    $0x2,%edx
  mov    %r10d,0x4(%rdi,%rcx,1)
  cmp    %edx,%eax
  jle    L109
  mov    0x8(%rsi,%rcx,1),%eax
  mov    %eax,0x8(%rdi,%rcx,1)
L109:
  test   %r9d,%r9d
  jne    L153
L101:
  ret
  xchg   %ax,%ax
L258:
  mov    (%rsi,%rcx,4),%edx
  mov    %edx,(%rdi,%rcx,4)
  add    $0x1,%rcx
  cmp    %ecx,%eax
  jle    L109
  mov    (%rsi,%rcx,4),%edx
  mov    %edx,(%rdi,%rcx,4)
  add    $0x1,%rcx
  cmp    %ecx,%eax
  jg     L258
  jmp    L109
  xchg   %ax,%ax
L153:
  movzbl (%rsi,%r8,1),%eax
  mov    %al,(%rdi,%r8,1)
  cmp    $0x1,%r9d
  je     L101
  movzbl 0x1(%rsi,%r8,1),%eax
  mov    %al,0x1(%rdi,%r8,1)
  cmp    $0x3,%r9d
  jne    L101
  movzbl 0x2(%rsi,%r8,1),%eax
  mov    %al,0x2(%rdi,%r8,1)
  ret
L61:
  xor    %eax,%eax
  xor    %ecx,%ecx
  jmp    L43
```

assistant: ```c
void veryfastmemcpy(void *dest, void *src, unsigned int n) {
  if ((((unsigned int)dest & 0x3) == 0) && (((unsigned int)src & 0x3) == 0)) {
    int single = n & 0x3;
    int singpos = n - single;
    int quad = singpos / 4;
    unsigned int *qdest = dest;
    unsigned int *qsrc = src;
    unsigned char *sdest = (unsigned char *)dest + singpos;
    unsigned char *ssrc = (unsigned char *)src + singpos;
    for (int q = 0; q < quad; q++) {
      qdest[q] = qsrc[q];
    }
    for (int s = 0; s < single; s++) {
      sdest[s] = ssrc[s];
    }
  } else if ((((unsigned int)dest & 0x1) == 0) && (((unsigned int)src & 0x1) == 0)) {
    int single = n & 0x1;
    int singpos = n - single;
    int dbl = singpos / 2;
    unsigned short int *ddest = dest;
    unsigned short int *dsrc = src;
    unsigned char *sdest = (unsigned char *)dest + singpos;
    unsigned char *ssrc = (unsigned char *)src + singpos;
    for (int d = 0; d < dbl; d++) {
      ddest[d] = dsrc[d];
    }
    if (single)
      *sdest = *ssrc;
  } else {
    pigfx_memcpy(dest, src, n);
  }
}
```