user: 下面的汇编指令对应的C源代码是什么：

```asm
<valid_tokens>:
  endbr64
  push   %r12
  xor    %edx,%edx
  lea    D31(%rip),%rsi
  mov    $0x50,%ecx
  push   %rbp
  lea    D120(%rip),%r12
  push   %rbx
  xor    %ebx,%ebx
  sub    $0x480,%rsp
  movdqa D51(%rip),%xmm0
  movdqa D91(%rip),%xmm1
  mov    %fs:0x28,%rax
  mov    %rax,0x478(%rsp)
  xor    %eax,%eax
  mov    %rdx,0xa8(%rsp)
  movabs $0x2d00000000,%rax
  xor    %edx,%edx
  movaps %xmm0,0xb0(%rsp)
  movdqa D77(%rip),%xmm0
  lea    0x1f0(%rsp),%rdi
  lea    0x1f0(%rsp),%rbp
  rep movsq %ds:(%rsi),%es:(%rdi)
  mov    %rax,0xa0(%rsp)
  movabs $0x3e00000000,%rax
  movaps %xmm1,0x190(%rsp)
  movdqa D42(%rip),%xmm1
  mov    %rax,0x180(%rsp)
  movabs $0x3d2100000000,%rax
  mov    %rdx,0x188(%rsp)
  xor    %edx,%edx
  movaps %xmm0,0xc0(%rsp)
  pxor   %xmm0,%xmm0
  mov    %rax,0x1d0(%rsp)
  movabs $0x7c7c00000000,%rax
  movaps %xmm1,0x1a0(%rsp)
  movq   $0x2b,0x90(%rsp)
  movq   $0x0,0x98(%rsp)
  movq   $0x25,0xe0(%rsp)
  movq   $0x0,0xe8(%rsp)
  movl   $0x0,0xf0(%rsp)
  movq   $0x3c,0x170(%rsp)
  movq   $0x0,0x178(%rsp)
  movq   $0x3d3d,0x1c0(%rsp)
  movq   $0x0,0x1c8(%rsp)
  movaps %xmm0,0xd0(%rsp)
  movaps %xmm0,0x1b0(%rsp)
  mov    %rdx,0x1d8(%rsp)
  movdqa D121(%rip),%xmm1
  xor    %edx,%edx
  mov    %rax,0x60(%rsp)
  movabs $0x2d2d00000000,%rax
  mov    %rdx,0x68(%rsp)
  xor    %edx,%edx
  movaps %xmm1,0x70(%rsp)
  movdqa D141(%rip),%xmm1
  mov    %rax,0x30(%rsp)
  movabs $0x2c00000000,%rax
  mov    %rdx,0x38(%rsp)
  xor    %edx,%edx
  movaps %xmm1,0x120(%rsp)
  movdqa D112(%rip),%xmm1
  movq   $0x0,0x1e0(%rsp)
  movq   $0x2626,0x50(%rsp)
  movq   $0x0,0x58(%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)
  movq   $0x0,0x40(%rsp)
  movq   $0x7b,0x100(%rsp)
  movq   $0x0,0x108(%rsp)
  mov    %rax,0x110(%rsp)
  mov    %rdx,0x118(%rsp)
  movq   $0x20,0x150(%rsp)
  movq   $0x0,0x158(%rsp)
  movl   $0x0,0x160(%rsp)
  movaps %xmm1,0x130(%rsp)
  movaps %xmm0,0x140(%rsp)
  xchg   %ax,%ax
L35:
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    %r12,%rdx
  xor    %eax,%eax
  call   <verify@plt>
  add    $0x1,%ebx
  add    $0x14,%rbp
  cmp    $0x20,%ebx
  jne    L35
  lea    0x90(%rsp),%rbp
  lea    D59(%rip),%r12
  nopw   0x0(%rax,%rax,1)
L29:
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    %r12,%rdx
  xor    %eax,%eax
  call   <verify@plt>
  add    $0x1,%ebx
  add    $0x14,%rbp
  cmp    $0x25,%ebx
  jne    L29
  lea    0x170(%rsp),%rbp
  lea    D129(%rip),%r12
  nopw   0x0(%rax,%rax,1)
L21:
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    %r12,%rdx
  xor    %eax,%eax
  call   <verify@plt>
  add    $0x1,%ebx
  add    $0x14,%rbp
  cmp    $0x2b,%ebx
  jne    L21
  lea    D34(%rip),%r12
  lea    0x50(%rsp),%rdi
  mov    $0x2b,%esi
  xor    %eax,%eax
  mov    %r12,%rdx
  lea    0x100(%rsp),%rbp
  mov    $0x31,%ebx
  call   <verify@plt>
  mov    %r12,%rdx
  lea    0x64(%rsp),%rdi
  xor    %eax,%eax
  mov    $0x2c,%esi
  call   <verify@plt>
  mov    %r12,%rdx
  lea    0x78(%rsp),%rdi
  xor    %eax,%eax
  mov    $0x2d,%esi
  lea    D37(%rip),%r12
  call   <verify@plt>
  mov    %rsp,%rdi
  mov    $0x2e,%esi
  xor    %eax,%eax
  lea    D66(%rip),%rdx
  call   <verify@plt>
  mov    %r12,%rdx
  lea    0x20(%rsp),%rdi
  xor    %eax,%eax
  mov    $0x2f,%esi
  call   <verify@plt>
  mov    %r12,%rdx
  lea    0x34(%rsp),%rdi
  xor    %eax,%eax
  mov    $0x30,%esi
  lea    D50(%rip),%r12
  call   <verify@plt>
  nopw   0x0(%rax,%rax,1)
L1:
  mov    %ebx,%esi
  mov    %rbp,%rdi
  mov    %r12,%rdx
  xor    %eax,%eax
  call   <verify@plt>
  add    $0x1,%ebx
  add    $0x14,%rbp
  cmp    $0x36,%ebx
  jne    L1
  mov    0x478(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L41
  add    $0x480,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L41:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D31
datatype: string
name: disassemble_data
arguments: tag: D120
datatype: string
name: disassemble_data
arguments: tag: D51
datatype: byte[16]
name: disassemble_data
arguments: tag: D91
datatype: byte[16]
name: disassemble_data
arguments: tag: D77
datatype: byte[16]
name: disassemble_data
arguments: tag: D42
datatype: byte[16]
name: disassemble_data
arguments: tag: D121
datatype: byte[16]
name: disassemble_data
arguments: tag: D141
datatype: byte[16]
name: disassemble_data
arguments: tag: D112
datatype: byte[16]
name: disassemble_data
arguments: tag: D59
datatype: string
name: disassemble_data
arguments: tag: D129
datatype: string
name: disassemble_data
arguments: tag: D34
datatype: string
name: disassemble_data
arguments: tag: D37
datatype: string
name: disassemble_data
arguments: tag: D66
datatype: string
name: disassemble_data
arguments: tag: D50
datatype: string

tool: D31: auto

tool: D120: KEYWORD

tool: {"D51": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2a,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: {"D91": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x3d,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: {"D77": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2f,0x00,0x00,0x00]}

tool: {"D42": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x3d,0x00,0x00]}

tool: {"D121": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: {"D141": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3b,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: {"D112": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7d,0x00,0x00,0x00]}

tool: D59: ARITHMETIC OPERATOR

tool: D129: RELATIONAL OPERATOR

tool: D34: CONDITIONAL OPERATOR

tool: D37: INC-DEC OPERATOR

tool: D66: ASSIGNMENT OPERATOR

tool: D50: 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++;
  }
}
```