user: What is the c source code of the assembly code below:

```asm
<isa>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,%rax
  mov    %esi,%edx
  test   %rax,%rax
  jne    L213
  mov    %edx,%eax
  and    $0x10,%eax
  test   %eax,%eax
  setne  %al
  movzbl %al,%eax
  jmp    L141
L213:
  lea    0x1(%rax),%rcx
  movzbl (%rcx),%ecx
  test   %cl,%cl
  jne    L347
  mov    %edx,%ecx
  and    $0x1,%ecx
  test   %ecx,%ecx
  je     L400
  movzbl (%rax),%ecx
  cmp    $0x2b,%cl
  je     L187
  movzbl (%rax),%ecx
  cmp    $0x2d,%cl
  jne    L400
L187:
  mov    $0x1,%eax
  jmp    L141
L400:
  mov    %edx,%ecx
  and    $0x2,%ecx
  test   %ecx,%ecx
  je     L450
  movzbl (%rax),%ecx
  cmp    $0x2a,%cl
  je     L354
  movzbl (%rax),%ecx
  cmp    $0x2f,%cl
  je     L354
  movzbl (%rax),%ecx
  cmp    $0x25,%cl
  jne    L450
L354:
  mov    $0x1,%eax
  jmp    L141
L450:
  mov    %edx,%ecx
  and    $0x10,%ecx
  test   %ecx,%ecx
  je     L29
  movzbl (%rax),%ecx
  cmp    $0x28,%cl
  je     L430
  movzbl (%rax),%ecx
  cmp    $0x29,%cl
  je     L430
  movzbl (%rax),%ecx
  cmp    $0x21,%cl
  je     L430
  movzbl (%rax),%ecx
  cmp    $0x7e,%cl
  je     L430
  movzbl (%rax),%ecx
  cmp    $0x5e,%cl
  je     L430
  movzbl (%rax),%ecx
  cmp    $0x22,%cl
  jne    L29
L430:
  mov    $0x1,%eax
  jmp    L141
L347:
  lea    0x2(%rax),%rcx
  movzbl (%rcx),%ecx
  test   %cl,%cl
  jne    L29
  mov    %edx,%ecx
  and    $0x10,%ecx
  test   %ecx,%ecx
  je     L338
  movzbl (%rax),%ecx
  cmp    $0x7c,%cl
  jne    L405
  lea    0x1(%rax),%rcx
  movzbl (%rcx),%ecx
  cmp    $0x26,%cl
  jne    L405
  mov    $0x1,%eax
  jmp    L141
L405:
  movzbl (%rax),%ecx
  cmp    $0x3c,%cl
  jne    L357
  lea    0x1(%rax),%rcx
  movzbl (%rcx),%ecx
  cmp    $0x3c,%cl
  jne    L357
  mov    $0x1,%eax
  jmp    L141
L357:
  movzbl (%rax),%ecx
  cmp    $0x3e,%cl
  jne    L338
  lea    0x1(%rax),%rcx
  movzbl (%rcx),%ecx
  cmp    $0x3e,%cl
  jne    L338
  mov    $0x1,%eax
  jmp    L141
L338:
  mov    %edx,%ecx
  and    $0x4,%ecx
  test   %ecx,%ecx
  je     L29
  movzbl (%rax),%ecx
  cmp    $0x3d,%cl
  jne    L87
  lea    0x1(%rax),%rcx
  movzbl (%rcx),%ecx
  cmp    $0x3d,%cl
  jne    L58
  mov    $0x1,%eax
  jmp    L141
L58:
  lea    0x1(%rax),%rcx
  movzbl (%rcx),%ecx
  cmp    $0x7e,%cl
  jne    L29
  mov    $0x7,%eax
  jmp    L141
L87:
  movzbl (%rax),%ecx
  cmp    $0x21,%cl
  jne    L29
  lea    0x1(%rax),%rcx
  movzbl (%rcx),%ecx
  cmp    $0x3d,%cl
  jne    L433
  mov    $0x6,%eax
  jmp    L141
L433:
  lea    0x1(%rax),%rcx
  movzbl (%rcx),%ecx
  cmp    $0x7e,%cl
  jne    L29
  mov    $0x8,%eax
  jmp    L141
L29:
  and    $0x8,%edx
  test   %edx,%edx
  je     L323
  movzbl (%rax),%edx
  cmp    $0x3c,%dl
  jne    L51
  mov    $0x4,%eax
  jmp    L141
L51:
  movzbl (%rax),%eax
  cmp    $0x3e,%al
  jne    L323
  mov    $0x2,%eax
  jmp    L141
L323:
  mov    $0x0,%eax
L141:
  pop    %rbp
  ret
```

assistant: ```c
isa(cp, what) register char *cp;
register int what;
{
  if (cp == 0)
    return ((what & 16) != 0);
  if (cp[1] == 0) {
    if (what & 1 && (*cp == '+' || *cp == '-'))
      return (1);
    if (what & 2 && (*cp == '*' || *cp == '/' || *cp == '%'))
      return (1);
    if (what & 16 && (*cp == '(' || *cp == ')' || *cp == '!' || *cp == '~' || *cp == '^' || *cp == '"'))
      return (1);
  } else if (cp[2] == 0) {
    if (what & 16) {
      if (cp[0] == '|' && cp[1] == '&')
        return (1);
      if (cp[0] == '<' && cp[1] == '<')
        return (1);
      if (cp[0] == '>' && cp[1] == '>')
        return (1);
    }
    if (what & 4) {
      if (cp[0] == '=') {
        if (cp[1] == '=')
          return (1);
        if (cp[1] == '~')
          return (7);
      } else if (cp[0] == '!') {
        if (cp[1] == '=')
          return (6);
        if (cp[1] == '~')
          return (8);
      }
    }
  }
  if (what & 8) {
    if (*cp == '<')
      return (4);
    if (*cp == '>')
      return (2);
  }
  return (0);
}
```