user: 下面的汇编指令对应的C源代码是什么:

```asm
<translate_filename>:
  endbr64
  movzbl (%rdi),%ecx
  mov    %rdi,%rax
  mov    %rsi,%rdx
  cmp    $0x2e,%cl
  je     L204
  lea    -0x61(%rcx),%esi
  cmp    $0x19,%sil
  jbe    L174
L320:
  add    $0x1,%rax
L186:
  mov    %cl,(%rdx)
  movzbl (%rax),%ecx
  cmp    $0x2e,%cl
  je     L46
  lea    -0x61(%rcx),%esi
  cmp    $0x19,%sil
  jbe    L347
L208:
  add    $0x1,%rax
  mov    %cl,0x1(%rdx)
  movzbl (%rax),%ecx
  cmp    $0x2e,%cl
  je     L322
L170:
  lea    -0x61(%rcx),%esi
  cmp    $0x19,%sil
  jbe    L42
L157:
  add    $0x1,%rax
  mov    %cl,0x2(%rdx)
  movzbl (%rax),%ecx
  cmp    $0x2e,%cl
  je     L24
L154:
  lea    -0x61(%rcx),%esi
  cmp    $0x19,%sil
  jbe    L316
L273:
  add    $0x1,%rax
  mov    %cl,0x3(%rdx)
  movzbl (%rax),%ecx
  cmp    $0x2e,%cl
  je     L164
L304:
  lea    -0x61(%rcx),%esi
  cmp    $0x19,%sil
  jbe    L315
L340:
  add    $0x1,%rax
  mov    %cl,0x4(%rdx)
  movzbl (%rax),%ecx
  cmp    $0x2e,%cl
  je     L337
L96:
  lea    -0x61(%rcx),%esi
  cmp    $0x19,%sil
  jbe    L185
L335:
  add    $0x1,%rax
  mov    %cl,0x5(%rdx)
  movzbl (%rax),%ecx
  cmp    $0x2e,%cl
  je     L43
L62:
  lea    -0x61(%rcx),%esi
  cmp    $0x19,%sil
  jbe    L85
L246:
  add    $0x1,%rax
  mov    %cl,0x6(%rdx)
  movzbl (%rax),%ecx
  cmp    $0x2e,%cl
  je     L230
L187:
  lea    -0x61(%rcx),%esi
  cmp    $0x19,%sil
  jbe    L161
L196:
  add    $0x1,%rax
L203:
  mov    %cl,0x7(%rdx)
  movzbl (%rax),%ecx
  cmp    $0x2e,%cl
  jne    L121
  movzbl 0x1(%rax),%ecx
  add    $0x1,%rax
L121:
  lea    -0x61(%rcx),%esi
  cmp    $0x19,%sil
  ja     L327
  sub    $0x20,%ecx
  mov    %cl,(%rax)
L327:
  mov    %cl,0x8(%rdx)
  movzbl 0x1(%rax),%ecx
  lea    -0x61(%rcx),%esi
  cmp    $0x19,%sil
  ja     L88
  sub    $0x20,%ecx
  mov    %cl,0x1(%rax)
L88:
  mov    %cl,0x9(%rdx)
  movzbl 0x2(%rax),%ecx
  lea    -0x61(%rcx),%esi
  cmp    $0x19,%sil
  ja     L73
  sub    $0x20,%ecx
  mov    %cl,0x2(%rax)
L73:
  mov    %cl,0xa(%rdx)
  ret
  nopl   0x0(%rax,%rax,1)
L161:
  sub    $0x20,%ecx
  mov    %cl,(%rax)
  jmp    L196
  nop
L85:
  sub    $0x20,%ecx
  mov    %cl,(%rax)
  jmp    L246
  nopw   0x0(%rax,%rax,1)
L185:
  sub    $0x20,%ecx
  mov    %cl,(%rax)
  jmp    L335
  nopw   0x0(%rax,%rax,1)
L315:
  sub    $0x20,%ecx
  mov    %cl,(%rax)
  jmp    L340
  nopw   0x0(%rax,%rax,1)
L316:
  sub    $0x20,%ecx
  mov    %cl,(%rax)
  jmp    L273
  nopw   0x0(%rax,%rax,1)
L42:
  sub    $0x20,%ecx
  mov    %cl,(%rax)
  jmp    L157
  nopw   0x0(%rax,%rax,1)
L347:
  sub    $0x20,%ecx
  mov    %cl,(%rax)
  jmp    L208
  nopw   0x0(%rax,%rax,1)
L174:
  sub    $0x20,%ecx
  mov    %cl,(%rdi)
  jmp    L320
  nopw   0x0(%rax,%rax,1)
L46:
  mov    $0x20,%ecx
  mov    %cl,0x1(%rdx)
  movzbl (%rax),%ecx
  cmp    $0x2e,%cl
  jne    L170
L322:
  mov    $0x20,%ecx
  mov    %cl,0x2(%rdx)
  movzbl (%rax),%ecx
  cmp    $0x2e,%cl
  jne    L154
L24:
  mov    $0x20,%ecx
  mov    %cl,0x3(%rdx)
  movzbl (%rax),%ecx
  cmp    $0x2e,%cl
  jne    L304
L164:
  mov    $0x20,%ecx
  mov    %cl,0x4(%rdx)
  movzbl (%rax),%ecx
  cmp    $0x2e,%cl
  jne    L96
L337:
  mov    $0x20,%ecx
  mov    %cl,0x5(%rdx)
  movzbl (%rax),%ecx
  cmp    $0x2e,%cl
  jne    L62
L43:
  mov    $0x20,%ecx
  mov    %cl,0x6(%rdx)
  movzbl (%rax),%ecx
  cmp    $0x2e,%cl
  jne    L187
L230:
  mov    $0x20,%ecx
  jmp    L203
  nopw   0x0(%rax,%rax,1)
L204:
  mov    $0x20,%ecx
  jmp    L186
```

assistant: ```c
void translate_filename(unsigned char *fsrc, unsigned char *fdst) {
  unsigned char *src = fsrc;
  unsigned char *dst = fdst;
  unsigned long i;
  for (i = 0; i < 8; i++) {
    if (*src != '.') {
      if ((*src >= 'a') && (*src <= 'z'))
        *src -= ('a' - 'A');
      *dst = *src;
      src++;
    } else {
      *dst = ' ';
    }
    dst++;
  }
  if (*src == '.')
    src++;
  for (i = 0; i < 3; i++) {
    if ((*src >= 'a') && (*src <= 'z'))
      *src -= ('a' - 'A');
    *dst = *src;
    dst++;
    src++;
  }
}
```