user: 这段汇编代码用C语言表示是什么样的？

```asm
<wfile_wild_match_ignore_case>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %rdi,-0x28(%rbp)
  mov    %rsi,-0x30(%rbp)
  movl   $0x0,-0x1c(%rbp)
  movl   $0x0,-0x18(%rbp)
  jmp    L114
L184:
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2a,%al
  jne    L125
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L125
  mov    $0x1,%eax
  jmp    L11
L125:
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x2a,%al
  je     L95
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x3f,%al
  je     L115
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <tolower@plt>
  mov    %rax,%rbx
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  mov    %eax,%edi
  call   <tolower@plt>
  cmp    %rax,%rbx
  je     L115
  mov    $0x0,%eax
  jmp    L11
L115:
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x3f,%al
  jne    L215
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L215
  mov    $0x0,%eax
  jmp    L11
L215:
  addl   $0x1,-0x1c(%rbp)
  addl   $0x1,-0x18(%rbp)
L114:
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L184
  jmp    L118
L95:
  nop
L118:
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L87
  mov    -0x18(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L87
  mov    $0x1,%eax
  jmp    L11
L87:
  mov    -0x1c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x28(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L151
  mov    $0x0,%eax
  jmp    L11
L151:
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  jmp    L137
L88:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rax,%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  lea    0x1(%rax),%rcx
  mov    -0x28(%rbp),%rax
  add    %rcx,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <wfile_wild_match_ignore_case>
  test   %eax,%eax
  je     L70
  mov    $0x1,%eax
  jmp    L11
L70:
  addl   $0x1,-0x14(%rbp)
L137:
  mov    -0x14(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x30(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  test   %al,%al
  jne    L88
  mov    $0x0,%eax
L11:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
int wfile_wild_match_ignore_case(char *pattern, char *name) {
  int i, j, k;
  for (i = 0, j = 0; pattern[i] != '\0'; i++, j++) {
    if (pattern[i] == '*' && pattern[i + 1] == '\0')
      return (1);
    if (pattern[i] == '*')
      break;
    if (pattern[i] != '?' && tolower((int)pattern[i]) != tolower((int)name[j]))
      return (0);
    if (pattern[i] == '?' && name[j] == '\0')
      return (0);
  }
  if (pattern[i] == '\0' && name[j] == '\0')
    return (1);
  if (pattern[i] == '\0')
    return (0);
  for (k = j; name[k] != '\0'; k++)
    if (wfile_wild_match_ignore_case(&pattern[i + 1], &name[k]))
      return (1);
  return (0);
}
```