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

```asm
<W_CleanupName>:
  endbr64
  movsbl (%rdi),%ecx
  mov    %rsi,%rax
  mov    %rdi,%rdx
  mov    %ecx,%esi
  test   %ecx,%ecx
  je     L255
  sub    $0x41,%ecx
  lea    0x20(%rsi),%edi
  cmp    $0x1a,%ecx
  cmovb  %edi,%esi
  mov    %sil,(%rax)
  movsbl 0x1(%rdx),%esi
  mov    %esi,%ecx
  test   %esi,%esi
  je     L194
  sub    $0x41,%esi
  lea    0x20(%rcx),%edi
  cmp    $0x1a,%esi
  cmovb  %edi,%ecx
  mov    %cl,0x1(%rax)
  movsbl 0x2(%rdx),%esi
  mov    %esi,%ecx
  test   %esi,%esi
  je     L205
  sub    $0x41,%esi
  lea    0x20(%rcx),%edi
  cmp    $0x1a,%esi
  cmovb  %edi,%ecx
  mov    %cl,0x2(%rax)
  movsbl 0x3(%rdx),%esi
  mov    %esi,%ecx
  test   %esi,%esi
  je     L260
  sub    $0x41,%esi
  lea    0x20(%rcx),%edi
  cmp    $0x1a,%esi
  cmovb  %edi,%ecx
  mov    %cl,0x3(%rax)
  movsbl 0x4(%rdx),%esi
  mov    %esi,%ecx
  test   %esi,%esi
  je     L322
  sub    $0x41,%esi
  lea    0x20(%rcx),%edi
  cmp    $0x1a,%esi
  cmovb  %edi,%ecx
  mov    %cl,0x4(%rax)
  movsbl 0x5(%rdx),%esi
  mov    %esi,%ecx
  test   %esi,%esi
  je     L282
  sub    $0x41,%esi
  lea    0x20(%rcx),%edi
  cmp    $0x1a,%esi
  cmovb  %edi,%ecx
  mov    %cl,0x5(%rax)
  movsbl 0x6(%rdx),%esi
  mov    %esi,%ecx
  test   %esi,%esi
  je     L214
  sub    $0x41,%esi
  lea    0x20(%rcx),%edi
  cmp    $0x1a,%esi
  cmovb  %edi,%ecx
  mov    %cl,0x6(%rax)
  movsbl 0x7(%rdx),%esi
  mov    %esi,%ecx
  test   %esi,%esi
  je     L164
  sub    $0x41,%esi
  lea    0x20(%rcx),%edi
  cmp    $0x1a,%esi
  cmovb  %edi,%ecx
  mov    %cl,0x7(%rax)
  movsbl 0x8(%rdx),%esi
  mov    %esi,%ecx
  test   %esi,%esi
  je     L240
  sub    $0x41,%esi
  lea    0x20(%rcx),%edi
  cmp    $0x1a,%esi
  cmovb  %edi,%ecx
  mov    %cl,0x8(%rax)
  movsbl 0x9(%rdx),%esi
  mov    %esi,%ecx
  test   %esi,%esi
  je     L206
  sub    $0x41,%esi
  lea    0x20(%rcx),%edi
  cmp    $0x1a,%esi
  cmovb  %edi,%ecx
  mov    %cl,0x9(%rax)
  movsbl 0xa(%rdx),%esi
  mov    %esi,%ecx
  test   %esi,%esi
  je     L287
  sub    $0x41,%esi
  lea    0x20(%rcx),%edi
  cmp    $0x1a,%esi
  cmovb  %edi,%ecx
  mov    %cl,0xa(%rax)
  movsbl 0xb(%rdx),%esi
  mov    %esi,%ecx
  test   %esi,%esi
  je     L100
  sub    $0x41,%esi
  lea    0x20(%rcx),%edi
  cmp    $0x1a,%esi
  cmovb  %edi,%ecx
  mov    %cl,0xb(%rax)
  movsbl 0xc(%rdx),%esi
  mov    %esi,%ecx
  test   %esi,%esi
  je     L20
  sub    $0x41,%esi
  lea    0x20(%rcx),%edi
  cmp    $0x1a,%esi
  cmovb  %edi,%ecx
  mov    %cl,0xc(%rax)
  movsbl 0xd(%rdx),%esi
  mov    %esi,%ecx
  test   %esi,%esi
  je     L203
  sub    $0x41,%esi
  lea    0x20(%rcx),%edi
  cmp    $0x1a,%esi
  cmovb  %edi,%ecx
  mov    %cl,0xd(%rax)
  movsbl 0xe(%rdx),%ecx
  mov    %ecx,%edx
  test   %ecx,%ecx
  je     L294
  sub    $0x41,%ecx
  lea    0x20(%rdx),%esi
  movb   $0x0,0xf(%rax)
  cmp    $0x1a,%ecx
  cmovb  %esi,%edx
  mov    %dl,0xe(%rax)
  ret
L194:
  mov    $0x1,%ecx
  cs nopw 0x0(%rax,%rax,1)
L255:
  mov    $0x10,%edx
  xor    %edi,%edi
  sub    %ecx,%edx
  movslq %ecx,%rcx
  add    %rcx,%rax
  cmp    $0x8,%edx
  jae    L119
  test   $0x4,%dl
  jne    L142
  test   %edx,%edx
  jne    L211
L179:
  ret
  nopw   0x0(%rax,%rax,1)
L119:
  mov    %edx,%ecx
  movq   $0x0,(%rax)
  movq   $0x0,-0x8(%rax,%rcx,1)
  lea    0x8(%rax),%rcx
  and    $0xfffffffffffffff8,%rcx
  sub    %rcx,%rax
  add    %eax,%edx
  and    $0xfffffff8,%edx
  cmp    $0x8,%edx
  jb     L179
  and    $0xfffffff8,%edx
  xor    %eax,%eax
L138:
  mov    %eax,%esi
  add    $0x8,%eax
  mov    %rdi,(%rcx,%rsi,1)
  cmp    %edx,%eax
  jb     L138
  ret
  nopw   0x0(%rax,%rax,1)
L211:
  movb   $0x0,(%rax)
  test   $0x2,%dl
  je     L179
  xor    %ecx,%ecx
  mov    %cx,-0x2(%rax,%rdx,1)
  ret
L20:
  mov    $0xc,%ecx
  jmp    L255
L205:
  mov    $0x2,%ecx
  jmp    L255
L260:
  mov    $0x3,%ecx
  jmp    L255
L322:
  mov    $0x4,%ecx
  jmp    L255
L282:
  mov    $0x5,%ecx
  jmp    L255
L214:
  mov    $0x6,%ecx
  jmp    L255
L164:
  mov    $0x7,%ecx
  jmp    L255
L240:
  mov    $0x8,%ecx
  jmp    L255
L206:
  mov    $0x9,%ecx
  jmp    L255
L287:
  mov    $0xa,%ecx
  jmp    L255
L100:
  mov    $0xb,%ecx
  jmp    L255
L203:
  mov    $0xd,%ecx
  jmp    L255
L294:
  mov    $0xe,%ecx
  jmp    L255
L142:
  movl   $0x0,(%rax)
  movl   $0x0,-0x4(%rax,%rdx,1)
  ret
```

assistant: ```c
void W_CleanupName(const char *in, char *out) {
  int i;
  int c;
  for (i = 0; i < 16 - 1; i++) {
    c = in[i];
    if (!c)
      break;
    if (c >= 'A' && c <= 'Z')
      c += ('a' - 'A');
    out[i] = c;
  }
  for (; i < 16; i++)
    out[i] = 0;
}
```