user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<is_keyword>:
  endbr64
  movzbl (%rdi),%eax
  sub    $0x61,%eax
  cmp    $0x16,%al
  ja     L132
  push   %rbx
  mov    %rdi,%rbx
  movzbl %al,%eax
  lea    D192(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D103(%rip),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  lea    D255(%rip),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  lea    D170(%rip),%rsi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D36(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D280(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D264(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  lea    D38(%rip),%rsi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D62(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D94(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  lea    D206(%rip),%rsi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D158(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D57(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  lea    D91(%rip),%rsi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D296(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  lea    D298(%rip),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  lea    D193(%rip),%rsi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D235(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  lea    D14(%rip),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  lea    D113(%rip),%rsi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D134(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  lea    D251(%rip),%rsi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D248(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D71(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D292(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D59(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D74(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  lea    D39(%rip),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  lea    D145(%rip),%rsi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D52(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  lea    D69(%rip),%rsi
  call   <strcmp@plt>
  mov    %eax,%edx
  mov    $0x1,%eax
  test   %edx,%edx
  je     L119
  lea    D288(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  lea    D238(%rip),%rsi
  call   <strcmp@plt>
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  jmp    L119
  mov    $0x0,%eax
L119:
  pop    %rbx
  ret
L132:
  mov    $0x0,%eax
  ret
```

tool_calls: name: read_data
arguments: tag: D103
type: string
name: read_data
arguments: tag: D255
type: string
name: read_data
arguments: tag: D170
type: string
name: read_data
arguments: tag: D36
type: string
name: read_data
arguments: tag: D280
type: string
name: read_data
arguments: tag: D264
type: string
name: read_data
arguments: tag: D38
type: string
name: read_data
arguments: tag: D62
type: string
name: read_data
arguments: tag: D94
type: string
name: read_data
arguments: tag: D206
type: string
name: read_data
arguments: tag: D158
type: string
name: read_data
arguments: tag: D57
type: string
name: read_data
arguments: tag: D91
type: string
name: read_data
arguments: tag: D296
type: string
name: read_data
arguments: tag: D298
type: string
name: read_data
arguments: tag: D193
type: string
name: read_data
arguments: tag: D235
type: string
name: read_data
arguments: tag: D14
type: string
name: read_data
arguments: tag: D113
type: string
name: read_data
arguments: tag: D134
type: string
name: read_data
arguments: tag: D251
type: string
name: read_data
arguments: tag: D248
type: string
name: read_data
arguments: tag: D71
type: string
name: read_data
arguments: tag: D292
type: string
name: read_data
arguments: tag: D59
type: string
name: read_data
arguments: tag: D74
type: string
name: read_data
arguments: tag: D39
type: string
name: read_data
arguments: tag: D145
type: string
name: read_data
arguments: tag: D52
type: string
name: read_data
arguments: tag: D69
type: string
name: read_data
arguments: tag: D288
type: string
name: read_data
arguments: tag: D238
type: string

tool: D103: auto

tool: D255: break

tool: D170: case

tool: D36: char

tool: D280: const

tool: D264: continue

tool: D38: default

tool: D62: do

tool: D94: double

tool: D206: else

tool: D158: enum

tool: D57: extern

tool: D91: float

tool: D296: for

tool: D298: goto

tool: D193: int

tool: D235: if

tool: D14: long

tool: D113: register

tool: D134: return

tool: D251: short

tool: D248: signed

tool: D71: sizeof

tool: D292: static

tool: D59: struct

tool: D74: switch

tool: D39: typedef

tool: D145: union

tool: D52: unsigned

tool: D69: void

tool: D288: volatile

tool: D238: while

assistant: ```c
int is_keyword(char *lexeme) {
  switch (lexeme[0]) {
  case 'a':
    if (!strcmp(lexeme, "auto"))
      return 1;
    return 0;
  case 'b':
    if (!strcmp(lexeme, "break"))
      return 1;
    return 0;
  case 'c':
    if (!strcmp(lexeme, "case") || !strcmp(lexeme, "char") || !strcmp(lexeme, "const") || !strcmp(lexeme, "continue"))
      return 1;
    return 0;
  case 'd':
    if (!strcmp(lexeme, "default") || !strcmp(lexeme, "do") || !strcmp(lexeme, "double"))
      return 1;
    return 0;
  case 'e':
    if (!strcmp(lexeme, "else") || !strcmp(lexeme, "enum") || !strcmp(lexeme, "extern"))
      return 1;
    return 0;
  case 'f':
    if (!strcmp(lexeme, "float") || !strcmp(lexeme, "for"))
      return 1;
    return 0;
  case 'g':
    if (!strcmp(lexeme, "goto"))
      return 1;
    return 0;
  case 'i':
    if (!strcmp(lexeme, "int") || !strcmp(lexeme, "if"))
      return 1;
    return 0;
  case 'l':
    if (!strcmp(lexeme, "long"))
      return 1;
    return 0;
  case 'r':
    if (!strcmp(lexeme, "register") || !strcmp(lexeme, "return"))
      return 1;
    return 0;
  case 's':
    if (!strcmp(lexeme, "short") || !strcmp(lexeme, "signed") || !strcmp(lexeme, "sizeof") || !strcmp(lexeme, "static") || !strcmp(lexeme, "struct") || !strcmp(lexeme, "switch"))
      return 1;
    return 0;
  case 't':
    if (!strcmp(lexeme, "typedef"))
      return 1;
    return 0;
  case 'u':
    if (!strcmp(lexeme, "union") || !strcmp(lexeme, "unsigned"))
      return 1;
    return 0;
  case 'v':
    if (!strcmp(lexeme, "void") || !strcmp(lexeme, "volatile"))
      return 1;
    return 0;
  case 'w':
    if (!strcmp(lexeme, "while"))
      return 1;
    return 0;
  default:
    return 0;
  }
}
```