user: Please show me the C implementation that matches the assembly code listed below:

```asm
<getname>:
  endbr64
  push   %r14
  push   %r13
  mov    %rsi,%r13
  push   %r12
  push   %rbp
  push   %rbx
  movzbl (%rdi),%ebx
  cmp    $0x20,%bl
  je     L304
  movsbl %bl,%r12d
  mov    %rdi,%rbp
  mov    %r12d,%edi
  call   <isupper@plt>
  test   %eax,%eax
  jne    L45
L141:
  movzbl 0x1(%rbp),%r14d
  mov    %bl,D31(%rip)
  lea    D112(%rip),%rbx
  lea    -0x1(%rbx),%r12
  cmp    $0x20,%r14b
  je     L131
  movsbl %r14b,%r12d
  mov    %r12d,%edi
  call   <isupper@plt>
  test   %eax,%eax
  jne    L118
L62:
  mov    %r14b,D40(%rip)
  movzbl 0x2(%rbp),%r14d
  lea    D40(%rip),%rbx
  lea    -0x2(%rbx),%r12
  cmp    $0x20,%r14b
  je     L131
  movsbl %r14b,%r12d
  mov    %r12d,%edi
  call   <isupper@plt>
  test   %eax,%eax
  jne    L303
L75:
  mov    %r14b,D150(%rip)
  movzbl 0x3(%rbp),%r14d
  lea    D150(%rip),%rbx
  lea    -0x3(%rbx),%r12
  cmp    $0x20,%r14b
  je     L131
  movsbl %r14b,%r12d
  mov    %r12d,%edi
  call   <isupper@plt>
  test   %eax,%eax
  jne    L336
L163:
  mov    %r14b,D61(%rip)
  movzbl 0x4(%rbp),%r14d
  lea    D61(%rip),%rbx
  lea    -0x4(%rbx),%r12
  cmp    $0x20,%r14b
  je     L131
  movsbl %r14b,%r12d
  mov    %r12d,%edi
  call   <isupper@plt>
  test   %eax,%eax
  jne    L63
L161:
  mov    %r14b,D29(%rip)
  movzbl 0x5(%rbp),%r14d
  lea    D29(%rip),%rbx
  lea    -0x5(%rbx),%r12
  cmp    $0x20,%r14b
  je     L131
  movsbl %r14b,%r12d
  mov    %r12d,%edi
  call   <isupper@plt>
  test   %eax,%eax
  jne    L299
L307:
  mov    %r14b,D76(%rip)
  movzbl 0x6(%rbp),%r14d
  lea    D76(%rip),%rbx
  lea    -0x6(%rbx),%r12
  cmp    $0x20,%r14b
  je     L131
  movsbl %r14b,%r12d
  mov    %r12d,%edi
  call   <isupper@plt>
  test   %eax,%eax
  jne    L218
L177:
  movzbl 0x7(%rbp),%ebp
  lea    D146(%rip),%rbx
  mov    %r14b,D1(%rip)
  lea    -0x7(%rbx),%r12
  cmp    $0x20,%bpl
  je     L131
  movsbl %bpl,%r12d
  mov    %r12d,%edi
  call   <isupper@plt>
  test   %eax,%eax
  jne    L193
L290:
  mov    %bpl,D1(%rip)
  lea    D1(%rip),%rbx
  lea    -0x8(%rbx),%r12
L131:
  movb   $0x2e,(%rbx)
  movzbl 0x0(%r13),%ebp
  lea    0x1(%rbx),%rax
  cmp    $0x20,%bpl
  je     L249
  movsbl %bpl,%r14d
  mov    %r14d,%edi
  call   <isupper@plt>
  test   %eax,%eax
  jne    L47
L115:
  mov    %bpl,0x1(%rbx)
  movzbl 0x1(%r13),%ebp
  lea    0x2(%rbx),%rax
  cmp    $0x20,%bpl
  je     L249
  movsbl %bpl,%r14d
  mov    %r14d,%edi
  call   <isupper@plt>
  test   %eax,%eax
  jne    L296
L92:
  mov    %bpl,0x2(%rbx)
  movzbl 0x2(%r13),%ebp
  lea    0x3(%rbx),%rax
  cmp    $0x20,%bpl
  je     L249
  movsbl %bpl,%r13d
  mov    %r13d,%edi
  call   <isupper@plt>
  test   %eax,%eax
  jne    L176
L93:
  mov    %bpl,0x3(%rbx)
  lea    0x4(%rbx),%rax
L249:
  movb   $0x0,(%rax)
  mov    %r12,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopl   0x0(%rax)
L47:
  mov    %r14d,%edi
  call   <tolower@plt>
  mov    %eax,%ebp
  jmp    L115
  nopl   0x0(%rax)
L45:
  mov    %r12d,%edi
  call   <tolower@plt>
  mov    %eax,%ebx
  jmp    L141
  nop
L296:
  mov    %r14d,%edi
  call   <tolower@plt>
  mov    %eax,%ebp
  jmp    L92
  nopl   0x0(%rax)
L118:
  mov    %r12d,%edi
  call   <tolower@plt>
  mov    %eax,%r14d
  jmp    L62
L176:
  mov    %r13d,%edi
  call   <tolower@plt>
  mov    %eax,%ebp
  jmp    L93
  nopl   0x0(%rax)
L303:
  mov    %r12d,%edi
  call   <tolower@plt>
  mov    %eax,%r14d
  jmp    L75
L336:
  mov    %r12d,%edi
  call   <tolower@plt>
  mov    %eax,%r14d
  jmp    L163
L63:
  mov    %r12d,%edi
  call   <tolower@plt>
  mov    %eax,%r14d
  jmp    L161
L299:
  mov    %r12d,%edi
  call   <tolower@plt>
  mov    %eax,%r14d
  jmp    L307
L218:
  mov    %r12d,%edi
  call   <tolower@plt>
  mov    %eax,%r14d
  jmp    L177
L193:
  mov    %r12d,%edi
  call   <tolower@plt>
  mov    %eax,%ebp
  jmp    L290
L304:
  lea    D31(%rip),%r12
  mov    %r12,%rbx
  jmp    L131
```

assistant: ```c
char *getname(nm, ex)
char *nm, *ex;
{
  static char namebuf[14];
  register char *cp, *dp;
  for (cp = namebuf, dp = nm; *dp != ' ' && dp != &nm[8];)
    *cp++ = isupper(*dp) ? tolower(*dp++) : *dp++;
  *cp++ = '.';
  for (dp = ex; *dp != ' ' && dp != &ex[3];)
    *cp++ = isupper(*dp) ? tolower(*dp++) : *dp++;
  *cp = '\0';
  return namebuf;
}
```