user: What would the C source look like for the assembly code provided here?

```asm
<rgbatorgba>:
  endbr64
  test   %r9d,%r9d
  je     L129
  mov    %r9d,%r11d
  push   %r12
  lea    -0x1(%r9),%r10d
  lea    (%rdx,%r11,1),%rax
  push   %rbp
  cmp    %rax,%r8
  push   %rbx
  lea    (%r8,%r11,4),%rbx
  setae  %al
  cmp    %rbx,%rdx
  setae  %bpl
  or     %ebp,%eax
  lea    (%rcx,%r11,1),%rbp
  cmp    %rbp,%r8
  setae  %bpl
  cmp    %rbx,%rcx
  setae  %r12b
  or     %r12d,%ebp
  and    %ebp,%eax
  cmp    $0xe,%r10d
  seta   %bpl
  and    %ebp,%eax
  lea    (%rsi,%r11,1),%rbp
  cmp    %rbp,%r8
  setae  %bpl
  cmp    %rbx,%rsi
  setae  %r12b
  or     %r12d,%ebp
  test   %bpl,%al
  je     L55
  lea    (%rdi,%r11,1),%rax
  cmp    %rax,%r8
  setae  %al
  cmp    %rbx,%rdi
  setae  %bl
  or     %bl,%al
  je     L55
  mov    %r9d,%r11d
  xor    %eax,%eax
  shr    $0x4,%r11d
  shl    $0x4,%r11
  nopl   0x0(%rax,%rax,1)
L44:
  movdqu (%rdi,%rax,1),%xmm0
  movdqu (%rsi,%rax,1),%xmm1
  movdqu (%rdx,%rax,1),%xmm5
  movdqu (%rcx,%rax,1),%xmm7
  movdqa %xmm0,%xmm2
  movdqa %xmm1,%xmm3
  punpcklbw %xmm5,%xmm2
  punpcklbw %xmm7,%xmm3
  punpckhbw %xmm5,%xmm0
  movdqa %xmm2,%xmm4
  punpckhbw %xmm3,%xmm2
  punpckhbw %xmm7,%xmm1
  movups %xmm2,0x10(%r8,%rax,4)
  movdqa %xmm0,%xmm2
  punpcklbw %xmm3,%xmm4
  punpckhbw %xmm1,%xmm0
  punpcklbw %xmm1,%xmm2
  movups %xmm4,(%r8,%rax,4)
  movups %xmm2,0x20(%r8,%rax,4)
  movups %xmm0,0x30(%r8,%rax,4)
  add    $0x10,%rax
  cmp    %r11,%rax
  jne    L44
  mov    %r9d,%r11d
  and    $0xfffffff0,%r11d
  mov    %r11d,%eax
  sub    %r11d,%r10d
  add    %rax,%rdi
  add    %rax,%rsi
  add    %rax,%rdx
  add    %rax,%rcx
  lea    (%r8,%rax,4),%rax
  cmp    %r11d,%r9d
  je     L174
  movzbl (%rdi),%r8d
  mov    %r8b,(%rax)
  movzbl (%rsi),%r8d
  mov    %r8b,0x1(%rax)
  movzbl (%rdx),%r8d
  mov    %r8b,0x2(%rax)
  movzbl (%rcx),%r8d
  mov    %r8b,0x3(%rax)
  test   %r10d,%r10d
  je     L174
  movzbl 0x1(%rdi),%r8d
  mov    %r8b,0x4(%rax)
  movzbl 0x1(%rsi),%r8d
  mov    %r8b,0x5(%rax)
  movzbl 0x1(%rdx),%r8d
  mov    %r8b,0x6(%rax)
  movzbl 0x1(%rcx),%r8d
  mov    %r8b,0x7(%rax)
  cmp    $0x1,%r10d
  je     L174
  movzbl 0x2(%rdi),%r8d
  mov    %r8b,0x8(%rax)
  movzbl 0x2(%rsi),%r8d
  mov    %r8b,0x9(%rax)
  movzbl 0x2(%rdx),%r8d
  mov    %r8b,0xa(%rax)
  movzbl 0x2(%rcx),%r8d
  mov    %r8b,0xb(%rax)
  cmp    $0x2,%r10d
  je     L174
  movzbl 0x3(%rdi),%r8d
  mov    %r8b,0xc(%rax)
  movzbl 0x3(%rsi),%r8d
  mov    %r8b,0xd(%rax)
  movzbl 0x3(%rdx),%r8d
  mov    %r8b,0xe(%rax)
  movzbl 0x3(%rcx),%r8d
  mov    %r8b,0xf(%rax)
  cmp    $0x3,%r10d
  je     L174
  movzbl 0x4(%rdi),%r8d
  mov    %r8b,0x10(%rax)
  movzbl 0x4(%rsi),%r8d
  mov    %r8b,0x11(%rax)
  movzbl 0x4(%rdx),%r8d
  mov    %r8b,0x12(%rax)
  movzbl 0x4(%rcx),%r8d
  mov    %r8b,0x13(%rax)
  cmp    $0x4,%r10d
  je     L174
  movzbl 0x5(%rdi),%r8d
  mov    %r8b,0x14(%rax)
  movzbl 0x5(%rsi),%r8d
  mov    %r8b,0x15(%rax)
  movzbl 0x5(%rdx),%r8d
  mov    %r8b,0x16(%rax)
  movzbl 0x5(%rcx),%r8d
  mov    %r8b,0x17(%rax)
  cmp    $0x5,%r10d
  je     L174
  movzbl 0x6(%rdi),%r8d
  mov    %r8b,0x18(%rax)
  movzbl 0x6(%rsi),%r8d
  mov    %r8b,0x19(%rax)
  movzbl 0x6(%rdx),%r8d
  mov    %r8b,0x1a(%rax)
  movzbl 0x6(%rcx),%r8d
  mov    %r8b,0x1b(%rax)
  cmp    $0x6,%r10d
  je     L174
  movzbl 0x7(%rdi),%r8d
  mov    %r8b,0x1c(%rax)
  movzbl 0x7(%rsi),%r8d
  mov    %r8b,0x1d(%rax)
  movzbl 0x7(%rdx),%r8d
  mov    %r8b,0x1e(%rax)
  movzbl 0x7(%rcx),%r8d
  mov    %r8b,0x1f(%rax)
  cmp    $0x7,%r10d
  je     L174
  movzbl 0x8(%rdi),%r8d
  mov    %r8b,0x20(%rax)
  movzbl 0x8(%rsi),%r8d
  mov    %r8b,0x21(%rax)
  movzbl 0x8(%rdx),%r8d
  mov    %r8b,0x22(%rax)
  movzbl 0x8(%rcx),%r8d
  mov    %r8b,0x23(%rax)
  cmp    $0x8,%r10d
  je     L174
  movzbl 0x9(%rdi),%r8d
  mov    %r8b,0x24(%rax)
  movzbl 0x9(%rsi),%r8d
  mov    %r8b,0x25(%rax)
  movzbl 0x9(%rdx),%r8d
  mov    %r8b,0x26(%rax)
  movzbl 0x9(%rcx),%r8d
  mov    %r8b,0x27(%rax)
  cmp    $0x9,%r10d
  je     L174
  movzbl 0xa(%rdi),%r8d
  mov    %r8b,0x28(%rax)
  movzbl 0xa(%rsi),%r8d
  mov    %r8b,0x29(%rax)
  movzbl 0xa(%rdx),%r8d
  mov    %r8b,0x2a(%rax)
  movzbl 0xa(%rcx),%r8d
  mov    %r8b,0x2b(%rax)
  cmp    $0xa,%r10d
  je     L174
  movzbl 0xb(%rdi),%r8d
  mov    %r8b,0x2c(%rax)
  movzbl 0xb(%rsi),%r8d
  mov    %r8b,0x2d(%rax)
  movzbl 0xb(%rdx),%r8d
  mov    %r8b,0x2e(%rax)
  movzbl 0xb(%rcx),%r8d
  mov    %r8b,0x2f(%rax)
  cmp    $0xb,%r10d
  je     L174
  movzbl 0xc(%rdi),%r8d
  mov    %r8b,0x30(%rax)
  movzbl 0xc(%rsi),%r8d
  mov    %r8b,0x31(%rax)
  movzbl 0xc(%rdx),%r8d
  mov    %r8b,0x32(%rax)
  movzbl 0xc(%rcx),%r8d
  mov    %r8b,0x33(%rax)
  cmp    $0xc,%r10d
  je     L174
  movzbl 0xd(%rdi),%r8d
  mov    %r8b,0x34(%rax)
  movzbl 0xd(%rsi),%r8d
  mov    %r8b,0x35(%rax)
  movzbl 0xd(%rdx),%r8d
  mov    %r8b,0x36(%rax)
  movzbl 0xd(%rcx),%r8d
  mov    %r8b,0x37(%rax)
  cmp    $0xd,%r10d
  je     L174
  movzbl 0xe(%rdi),%edi
  mov    %dil,0x38(%rax)
  movzbl 0xe(%rsi),%esi
  mov    %sil,0x39(%rax)
  movzbl 0xe(%rdx),%edx
  mov    %dl,0x3a(%rax)
  movzbl 0xe(%rcx),%edx
  mov    %dl,0x3b(%rax)
L174:
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  nopw   0x0(%rax,%rax,1)
L55:
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L135:
  movzbl (%rdi,%rax,1),%r9d
  mov    %r9b,(%r8,%rax,4)
  movzbl (%rsi,%rax,1),%r9d
  mov    %r9b,0x1(%r8,%rax,4)
  movzbl (%rdx,%rax,1),%r9d
  mov    %r9b,0x2(%r8,%rax,4)
  movzbl (%rcx,%rax,1),%r9d
  mov    %r9b,0x3(%r8,%rax,4)
  add    $0x1,%rax
  cmp    %rax,%r11
  jne    L135
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  nopl   (%rax)
L129:
  ret
```

assistant: ```c
void rgbatorgba(unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *a, unsigned char *l, int n) {
  while (n--) {
    l[0] = r[0];
    l[1] = g[0];
    l[2] = b[0];
    l[3] = a[0];
    l += 4;
    r++;
    g++;
    b++;
    a++;
  }
}
```