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

```asm
<printToken>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rsi,%rbx
  mov    %edx,%ebp
  mov    %ecx,%r12d
  cmp    $0x21,%edi
  ja     L22
  mov    %edi,%edi
  lea    D119(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D194(%rip),%r13
  mov    %r13,%rdi
  call   <puts@plt>
  mov    %r12d,%ecx
  mov    %ebp,%edx
  mov    %rbx,%rsi
  lea    D89(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r13,%rdi
  call   <puts@plt>
L80:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  lea    D194(%rip),%r13
  mov    %r13,%rdi
  call   <puts@plt>
  mov    %r12d,%ecx
  mov    %ebp,%edx
  mov    %rbx,%rsi
  lea    D159(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  jmp    L80
  lea    D194(%rip),%r13
  mov    %r13,%rdi
  call   <puts@plt>
  mov    %r12d,%ecx
  mov    %ebp,%edx
  mov    %rbx,%rsi
  lea    D164(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  jmp    L80
  lea    D194(%rip),%r13
  mov    %r13,%rdi
  call   <puts@plt>
  mov    %r12d,%ecx
  mov    %ebp,%edx
  mov    %rbx,%rsi
  lea    D27(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  jmp    L80
  lea    D194(%rip),%r13
  mov    %r13,%rdi
  call   <puts@plt>
  mov    %r12d,%ecx
  mov    %ebp,%edx
  mov    %rbx,%rsi
  lea    D75(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  jmp    L80
  lea    D194(%rip),%r13
  mov    %r13,%rdi
  call   <puts@plt>
  mov    %r12d,%ecx
  mov    %ebp,%edx
  mov    %rbx,%rsi
  lea    D1(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  jmp    L80
  lea    D194(%rip),%r13
  mov    %r13,%rdi
  call   <puts@plt>
  mov    %r12d,%ecx
  mov    %ebp,%edx
  mov    %rbx,%rsi
  lea    D19(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  jmp    L80
  lea    D194(%rip),%r13
  mov    %r13,%rdi
  call   <puts@plt>
  mov    %r12d,%ecx
  mov    %ebp,%edx
  mov    %rbx,%rsi
  lea    D44(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  jmp    L80
  lea    D194(%rip),%r13
  mov    %r13,%rdi
  call   <puts@plt>
  mov    %r12d,%ecx
  mov    %ebp,%edx
  mov    %rbx,%rsi
  lea    D91(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  jmp    L80
L22:
  lea    D194(%rip),%r13
  mov    %r13,%rdi
  call   <puts@plt>
  mov    %r12d,%ecx
  mov    %ebp,%edx
  mov    %rbx,%rsi
  lea    D25(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %r13,%rdi
  call   <puts@plt>
  jmp    L80
```

tool_calls: name: extract_symbolic_data
arguments: tag: D194
type: string
name: extract_symbolic_data
arguments: tag: D89
type: string
name: extract_symbolic_data
arguments: tag: D159
type: string
name: extract_symbolic_data
arguments: tag: D164
type: string
name: extract_symbolic_data
arguments: tag: D27
type: string
name: extract_symbolic_data
arguments: tag: D75
type: string
name: extract_symbolic_data
arguments: tag: D1
type: string
name: extract_symbolic_data
arguments: tag: D19
type: string
name: extract_symbolic_data
arguments: tag: D44
type: string
name: extract_symbolic_data
arguments: tag: D91
type: string
name: extract_symbolic_data
arguments: tag: D25
type: string

tool: D194: ______________________________________________________

tool: D89: ASIG:  %s		%d		%d


tool: D159: ARIT:  %s		%d		%d


tool: D164: REL:   %s		%d		%d


tool: D27: FLOAT: %s		%d		%d


tool: D75: INT:   %s		%d		%d


tool: D1: SIGN:  %s		%d		%d


tool: D19: ID:     %s		%d		%d


tool: D44: PR:     %s		%d		%d


tool: D91: LIT:    %s		%d		%d


tool: D25: ERR:    %s		%d		%d


assistant: ```c
printToken(int type, char *value, int charC, int lineC) {
  switch (type) {
  case 31:
    printf("______________________________________________________\n");
    printf("ASIG:  %s\t\t%d\t\t%d\n", value, charC, lineC);
    printf("______________________________________________________\n");
    break;
  case 30:
    printf("______________________________________________________\n");
    printf("ARIT:  %s\t\t%d\t\t%d\n", value, charC, lineC);
    printf("______________________________________________________\n");
    break;
  case 32:
    printf("______________________________________________________\n");
    printf("REL:   %s\t\t%d\t\t%d\n", value, charC, lineC);
    printf("______________________________________________________\n");
    break;
  case 2:
    printf("______________________________________________________\n");
    printf("FLOAT: %s\t\t%d\t\t%d\n", value, charC, lineC);
    printf("______________________________________________________\n");
    break;
  case 7:
    printf("______________________________________________________\n");
    printf("INT:   %s\t\t%d\t\t%d\n", value, charC, lineC);
    printf("______________________________________________________\n");
    break;
  case 33:
    printf("______________________________________________________\n");
    printf("SIGN:  %s\t\t%d\t\t%d\n", value, charC, lineC);
    printf("______________________________________________________\n");
    break;
  case 6:
    printf("______________________________________________________\n");
    printf("ID:     %s\t\t%d\t\t%d\n", value, charC, lineC);
    printf("______________________________________________________\n");
    break;
  case 29:
    printf("______________________________________________________\n");
    printf("PR:     %s\t\t%d\t\t%d\n", value, charC, lineC);
    printf("______________________________________________________\n");
    break;
  case 8:
    printf("______________________________________________________\n");
    printf("LIT:    %s\t\t%d\t\t%d\n", value, charC, lineC);
    printf("______________________________________________________\n");
    break;
  default:
    printf("______________________________________________________\n");
    printf("ERR:    %s\t\t%d\t\t%d\n", value, charC, lineC);
    printf("______________________________________________________\n");
    break;
  }
}
```