user: 请从给定的汇编指令推导出C源代码:

```asm
<test_lex_look_ahead_3>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D32(%rip),%rax
  mov    %rax,-0x10(%rbp)
  mov    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <strlen@plt>
  mov    %eax,-0x14(%rbp)
  movl   $0x0,-0x18(%rbp)
  lea    -0x18(%rbp),%rdx
  mov    -0x14(%rbp),%esi
  mov    -0x10(%rbp),%rax
  mov    $0x0,%r8d
  lea    D58(%rip),%rcx
  mov    %rax,%rdi
  call   <check_token@plt>
  mov    -0x18(%rbp),%eax
  add    $0x3,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%eax
  lea    0x1(%rax),%ecx
  lea    -0x18(%rbp),%rdx
  mov    -0x14(%rbp),%esi
  mov    -0x10(%rbp),%rax
  mov    %ecx,%r8d
  lea    D95(%rip),%rcx
  mov    %rax,%rdi
  call   <check_token@plt>
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%ecx
  lea    -0x18(%rbp),%rdx
  mov    -0x14(%rbp),%esi
  mov    -0x10(%rbp),%rax
  mov    %ecx,%r8d
  lea    D27(%rip),%rcx
  mov    %rax,%rdi
  call   <check_token@plt>
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%ecx
  lea    -0x18(%rbp),%rdx
  mov    -0x14(%rbp),%esi
  mov    -0x10(%rbp),%rax
  mov    %ecx,%r8d
  lea    D12(%rip),%rcx
  mov    %rax,%rdi
  call   <check_token@plt>
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%ecx
  lea    -0x18(%rbp),%rdx
  mov    -0x14(%rbp),%esi
  mov    -0x10(%rbp),%rax
  mov    %ecx,%r8d
  lea    D61(%rip),%rcx
  mov    %rax,%rdi
  call   <check_token@plt>
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%eax
  lea    0x1(%rax),%ecx
  lea    -0x18(%rbp),%rdx
  mov    -0x14(%rbp),%esi
  mov    -0x10(%rbp),%rax
  mov    %ecx,%r8d
  lea    D58(%rip),%rcx
  mov    %rax,%rdi
  call   <check_token@plt>
  mov    -0x18(%rbp),%eax
  add    $0x3,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%eax
  lea    0x1(%rax),%ecx
  lea    -0x18(%rbp),%rdx
  mov    -0x14(%rbp),%esi
  mov    -0x10(%rbp),%rax
  mov    %ecx,%r8d
  lea    D30(%rip),%rcx
  mov    %rax,%rdi
  call   <check_token@plt>
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%ecx
  lea    -0x18(%rbp),%rdx
  mov    -0x14(%rbp),%esi
  mov    -0x10(%rbp),%rax
  mov    %ecx,%r8d
  lea    D27(%rip),%rcx
  mov    %rax,%rdi
  call   <check_token@plt>
  mov    -0x18(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x18(%rbp)
  mov    -0x18(%rbp),%ecx
  lea    -0x18(%rbp),%rdx
  mov    -0x14(%rbp),%esi
  mov    -0x10(%rbp),%rax
  mov    %ecx,%r8d
  lea    D71(%rip),%rcx
  mov    %rax,%rdi
  call   <check_token@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L0
  call   <__stack_chk_fail@plt>
L0:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D32
datatype: string
name: extract_symbolic_data
arguments: tag: D58
datatype: string
name: extract_symbolic_data
arguments: tag: D95
datatype: string
name: extract_symbolic_data
arguments: tag: D27
datatype: string
name: extract_symbolic_data
arguments: tag: D12
datatype: string
name: extract_symbolic_data
arguments: tag: D61
datatype: string
name: extract_symbolic_data
arguments: tag: D30
datatype: string
name: extract_symbolic_data
arguments: tag: D71
datatype: string

tool: D32: int a=2; int b=17;

tool: D58: int

tool: D95: a

tool: D27: =

tool: D12: 2

tool: D61: ;

tool: D30: b

tool: D71: 17

assistant: ```c
void test_lex_look_ahead_3() {
  const char *input = "int a=2; int b=17;";
  unsigned int len, pos;
  len = strlen(input);
  pos = 0;
  check_token(input, len, &pos, "int", 0);
  pos += 3;
  check_token(input, len, &pos, "a", pos + 1);
  pos += 1;
  check_token(input, len, &pos, "=", pos);
  pos += 1;
  check_token(input, len, &pos, "2", pos);
  pos += 1;
  check_token(input, len, &pos, ";", pos);
  pos += 1;
  check_token(input, len, &pos, "int", pos + 1);
  pos += 3;
  check_token(input, len, &pos, "b", pos + 1);
  pos += 1;
  check_token(input, len, &pos, "=", pos);
  pos += 1;
  check_token(input, len, &pos, "17", pos);
}
```