user: Demonstrate the C code that generates the assembly output below:

```asm
<Match>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  movl   $0x0,-0x8(%rbp)
  movl   $0x0,-0x4(%rbp)
  jmp    L45
L47:
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  cmp    $0x7c,%eax
  je     L52
  cmp    $0x7c,%eax
  jg     L207
  test   %eax,%eax
  je     L98
  test   %eax,%eax
  js     L207
  cmp    $0x5d,%eax
  jg     L207
  cmp    $0x22,%eax
  jl     L207
  sub    $0x22,%eax
  cmp    $0x3b,%eax
  ja     L207
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D15(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D15(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
L98:
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L235
  mov    $0x0,%eax
  jmp    L247
  cmpl   $0x7,-0x4(%rbp)
  jg     L238
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x20,%al
  je     L238
  mov    $0x0,%eax
  jmp    L247
L238:
  cmpl   $0x7,-0x4(%rbp)
  jne    L209
  addl   $0x1,-0x8(%rbp)
L209:
  cmpl   $0x7,-0x4(%rbp)
  jle    L211
  mov    $0x0,%eax
  jmp    L247
L52:
  mov    $0x0,%eax
  jmp    L247
L207:
  mov    -0x4(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x20(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  cmp    %al,%dl
  je     L7
  mov    $0x0,%eax
  jmp    L247
L7:
  addl   $0x1,-0x8(%rbp)
  cmpl   $0x7,-0x4(%rbp)
  jne    L73
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2e,%al
  jne    L73
  addl   $0x1,-0x8(%rbp)
  jmp    L73
L235:
  nop
  jmp    L73
L211:
  nop
L73:
  addl   $0x1,-0x4(%rbp)
L45:
  cmpl   $0xa,-0x4(%rbp)
  jle    L47
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  je     L189
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x20(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2f,%al
  jne    L94
L189:
  mov    $0x1,%eax
  jmp    L247
L94:
  mov    $0x0,%eax
L247:
  pop    %rbp
  ret
```

assistant: ```c
int Match(const char *EntryName, const char *filename) {
  int loc = 0;
  for (int i = 0; i < 11; i++) {
    switch (filename[loc]) {
    case '\0':
    case '/':
      if (EntryName[i] != ' ')
        return 0;
      break;
    case '.':
      if (i < 8) {
        if (EntryName[i] != ' ')
          return 0;
      }
      if (i == 7)
        loc++;
      if (i >= 8)
        return 0;
      break;
    case '"':
    case '*':
    case '+':
    case ',':
    case ':':
    case ';':
    case '<':
    case '=':
    case '>':
    case '?':
    case '[':
    case '\\':
    case ']':
    case '|':
      return 0;
    default:
      if (EntryName[i] != filename[loc])
        return 0;
      loc++;
      if (i == 7 && filename[loc] == '.')
        loc++;
    }
  }
  return filename[loc] == '\0' || filename[loc] == '/';
}
```