user: Please show me the C implementation that matches the assembly code listed below:

```asm
<valid_tokens>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x480,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x478(%rsp)
  xor    %eax,%eax
  lea    0x1f0(%rsp),%rdi
  lea    D46(%rip),%rsi
  mov    $0x50,%ecx
  rep movsq %ds:(%rsi),%es:(%rdi)
  movq   $0x2b,0x90(%rsp)
  movq   $0x0,0x98(%rsp)
  movl   $0x0,0xa0(%rsp)
  movq   $0x2d,0xa4(%rsp)
  movq   $0x0,0xac(%rsp)
  movl   $0x0,0xb4(%rsp)
  movq   $0x2a,0xb8(%rsp)
  movq   $0x0,0xc0(%rsp)
  movl   $0x0,0xc8(%rsp)
  movq   $0x2f,0xcc(%rsp)
  movq   $0x0,0xd4(%rsp)
  movl   $0x0,0xdc(%rsp)
  movq   $0x25,0xe0(%rsp)
  movq   $0x0,0xe8(%rsp)
  movl   $0x0,0xf0(%rsp)
  movq   $0x3c,0x170(%rsp)
  movq   $0x0,0x178(%rsp)
  movl   $0x0,0x180(%rsp)
  movq   $0x3e,0x184(%rsp)
  movq   $0x0,0x18c(%rsp)
  movl   $0x0,0x194(%rsp)
  movq   $0x3d3e,0x198(%rsp)
  movq   $0x0,0x1a0(%rsp)
  movl   $0x0,0x1a8(%rsp)
  movq   $0x3d3c,0x1ac(%rsp)
  movq   $0x0,0x1b4(%rsp)
  movl   $0x0,0x1bc(%rsp)
  movq   $0x3d3d,0x1c0(%rsp)
  movq   $0x0,0x1c8(%rsp)
  movl   $0x0,0x1d0(%rsp)
  movq   $0x3d21,0x1d4(%rsp)
  movq   $0x0,0x1dc(%rsp)
  movl   $0x0,0x1e4(%rsp)
  movq   $0x2626,0x50(%rsp)
  movq   $0x0,0x58(%rsp)
  movl   $0x0,0x60(%rsp)
  movq   $0x7c7c,0x64(%rsp)
  movq   $0x0,0x6c(%rsp)
  movl   $0x0,0x74(%rsp)
  movq   $0x21,0x78(%rsp)
  movq   $0x0,0x80(%rsp)
  movl   $0x0,0x88(%rsp)
  movq   $0x3d,(%rsp)
  movq   $0x0,0x8(%rsp)
  movl   $0x0,0x10(%rsp)
  movq   $0x2b2b,0x20(%rsp)
  movq   $0x0,0x28(%rsp)
  movl   $0x0,0x30(%rsp)
  movq   $0x2d2d,0x34(%rsp)
  movq   $0x0,0x3c(%rsp)
  movl   $0x0,0x44(%rsp)
  movq   $0x7b,0x100(%rsp)
  movq   $0x0,0x108(%rsp)
  movl   $0x0,0x110(%rsp)
  movq   $0x2c,0x114(%rsp)
  movq   $0x0,0x11c(%rsp)
  movl   $0x0,0x124(%rsp)
  movq   $0x3b,0x128(%rsp)
  movq   $0x0,0x130(%rsp)
  movl   $0x0,0x138(%rsp)
  movq   $0x7d,0x13c(%rsp)
  movq   $0x0,0x144(%rsp)
  movl   $0x0,0x14c(%rsp)
  movq   $0x20,0x150(%rsp)
  movq   $0x0,0x158(%rsp)
  movl   $0x0,0x160(%rsp)
  lea    0x1f0(%rsp),%rbp
  mov    $0x0,%ebx
  lea    D71(%rip),%r12
L16:
  mov    %r12,%rdx
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <verify@plt>
  add    $0x1,%ebx
  add    $0x14,%rbp
  cmp    $0x20,%ebx
  jne    L16
  lea    0x90(%rsp),%rbp
  lea    D42(%rip),%r12
L51:
  mov    %r12,%rdx
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <verify@plt>
  add    $0x1,%ebx
  add    $0x14,%rbp
  cmp    $0x25,%ebx
  jne    L51
  lea    0x170(%rsp),%rbp
  lea    D40(%rip),%r12
L15:
  mov    %r12,%rdx
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <verify@plt>
  add    $0x1,%ebx
  add    $0x14,%rbp
  cmp    $0x2b,%ebx
  jne    L15
  lea    0x50(%rsp),%rbp
  lea    D32(%rip),%r12
L23:
  mov    %r12,%rdx
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <verify@plt>
  add    $0x1,%ebx
  add    $0x14,%rbp
  cmp    $0x2e,%ebx
  jne    L23
  mov    %rsp,%rdi
  lea    D38(%rip),%rdx
  mov    $0x2e,%esi
  mov    $0x0,%eax
  call   <verify@plt>
  lea    0x20(%rsp),%rdi
  lea    D25(%rip),%rbx
  mov    %rbx,%rdx
  mov    $0x2f,%esi
  mov    $0x0,%eax
  call   <verify@plt>
  lea    0x34(%rsp),%rdi
  mov    %rbx,%rdx
  mov    $0x30,%esi
  mov    $0x0,%eax
  call   <verify@plt>
  lea    0x100(%rsp),%rbp
  mov    $0x31,%ebx
  lea    D54(%rip),%r12
L0:
  mov    %r12,%rdx
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <verify@plt>
  add    $0x1,%ebx
  add    $0x14,%rbp
  cmp    $0x36,%ebx
  jne    L0
  mov    0x478(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L34
  add    $0x480,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L34:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: data_label: D46
type: string
name: read_data
arguments: data_label: D71
type: string
name: read_data
arguments: data_label: D42
type: string
name: read_data
arguments: data_label: D40
type: string
name: read_data
arguments: data_label: D32
type: string
name: read_data
arguments: data_label: D38
type: string
name: read_data
arguments: data_label: D25
type: string
name: read_data
arguments: data_label: D54
type: string

tool: D46: auto

tool: D71: KEYWORD

tool: D42: ARITHMETIC OPERATOR

tool: D40: RELATIONAL OPERATOR

tool: D32: CONDITIONAL OPERATOR

tool: D38: ASSIGNMENT OPERATOR

tool: D25: INC-DEC OPERATOR

tool: D54: PUNCTUATION SYMBOL

assistant: ```c
void valid_tokens() {
  char keyword[][20] = {"auto", "extern", "sizeof", "break", "float", "static", "case", "for", "struct", "char", "goto", "switch", "const", "if", "typedef", "continue", "int", "union", "default", "long", "unsigned", "do", "register", "void", "return", "double", "volatile", "else", "short", "while", "enum", "signed"};
  char arithmetic[][20] = {"+", "-", "*", "/", "%"};
  char relational[][20] = {"<", ">", ">=", "<=", "==", "!="};
  char conditional[][20] = {"&&", "||", "!"};
  char assignment[][20] = {"="};
  char inc_dec[][20] = {"++", "--"};
  char punctuation[][20] = {"{", ",", ";", "}", " "};
  int k = 0, i;
  for (i = 0; i < (sizeof(keyword) / sizeof(keyword[0])); i++) {
    verify(keyword[i], k, "KEYWORD");
    k++;
  }
  for (i = 0; i < (sizeof(arithmetic) / sizeof(arithmetic[0])); i++) {
    verify(arithmetic[i], k, "ARITHMETIC OPERATOR");
    k++;
  }
  for (i = 0; i < (sizeof(relational) / sizeof(relational[0])); i++) {
    verify(relational[i], k, "RELATIONAL OPERATOR");
    k++;
  }
  for (i = 0; i < (sizeof(conditional) / sizeof(conditional[0])); i++) {
    verify(conditional[i], k, "CONDITIONAL OPERATOR");
    k++;
  }
  for (i = 0; i < (sizeof(assignment) / sizeof(assignment[0])); i++) {
    verify(assignment[i], k, "ASSIGNMENT OPERATOR");
    k++;
  }
  for (i = 0; i < (sizeof(inc_dec) / sizeof(inc_dec[0])); i++) {
    verify(inc_dec[i], k, "INC-DEC OPERATOR");
    k++;
  }
  for (i = 0; i < (sizeof(punctuation) / sizeof(punctuation[0])); i++) {
    verify(punctuation[i], k, "PUNCTUATION SYMBOL");
    k++;
  }
}
```