user: What would the C source look like for the assembly code provided here:

```asm
<token_txn>:
  endbr64
  push   %rbx
  lea    -0x21(%rdi),%eax
  cmp    $0x5d,%eax
  jbe    L161
  cmp    $0xff,%edi
  jbe    L335
  cmp    $0x108,%edi
  jle    L433
  lea    -0x200(%rdi),%eax
  cmp    $0x11f,%eax
  ja     L528
  lea    -0x200(%rdi),%edx
  cmp    $0x11f,%edx
  ja     L35
  mov    %edx,%edx
  lea    D51(%rip),%rcx
  movslq (%rcx,%rdx,4),%rax
  add    %rcx,%rax
  notrack jmp *%rax
L161:
  mov    %edi,%edx
  lea    D386(%rip),%rsi
  lea    D340(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  mov    %rbx,%rax
  jmp    L514
L335:
  mov    %edi,%edx
  lea    D106(%rip),%rsi
  lea    D340(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <sprintf@plt>
  mov    %rbx,%rax
  jmp    L514
L433:
  lea    D317(%rip),%rax
  cmp    $0xff,%edi
  jg     L444
L514:
  pop    %rbx
  ret
  lea    D66(%rip),%rax
  jmp    L514
L35:
  lea    D317(%rip),%rax
  jmp    L514
L444:
  lea    -0x100(%rdi),%edx
  cmp    $0x8,%edx
  ja     L582
  mov    %edx,%edx
  lea    D269(%rip),%rcx
  movslq (%rcx,%rdx,4),%rax
  add    %rcx,%rax
  notrack jmp *%rax
  lea    D707(%rip),%rax
  jmp    L514
L582:
  lea    D317(%rip),%rax
  jmp    L514
  lea    D664(%rip),%rax
  jmp    L514
  lea    D572(%rip),%rax
  jmp    L514
  lea    D122(%rip),%rax
  jmp    L514
  lea    D131(%rip),%rax
  jmp    L514
  lea    D181(%rip),%rax
  jmp    L514
  lea    D276(%rip),%rax
  jmp    L514
  lea    D613(%rip),%rax
  jmp    L514
  lea    D411(%rip),%rax
  jmp    L514
  lea    D710(%rip),%rax
  jmp    L514
  lea    D149(%rip),%rax
  jmp    L514
  lea    D10(%rip),%rax
  jmp    L514
  lea    D429(%rip),%rax
  jmp    L514
  lea    D713(%rip),%rax
  jmp    L514
  lea    D513(%rip),%rax
  jmp    L514
  lea    D123(%rip),%rax
  jmp    L514
  lea    D29(%rip),%rax
  jmp    L514
  lea    D146(%rip),%rax
  jmp    L514
  lea    D205(%rip),%rax
  jmp    L514
  lea    D627(%rip),%rax
  jmp    L514
  lea    D279(%rip),%rax
  jmp    L514
  lea    D545(%rip),%rax
  jmp    L514
  lea    D188(%rip),%rax
  jmp    L514
  lea    D531(%rip),%rax
  jmp    L514
  lea    D495(%rip),%rax
  jmp    L514
  lea    D216(%rip),%rax
  jmp    L514
  lea    D558(%rip),%rax
  jmp    L514
  lea    D263(%rip),%rax
  jmp    L514
  lea    D716(%rip),%rax
  jmp    L514
  lea    D694(%rip),%rax
  jmp    L514
  lea    D226(%rip),%rax
  jmp    L514
  lea    D47(%rip),%rax
  jmp    L514
  lea    D127(%rip),%rax
  jmp    L514
  lea    D506(%rip),%rax
  jmp    L514
  lea    D97(%rip),%rax
  jmp    L514
  lea    D151(%rip),%rax
  jmp    L514
  lea    D573(%rip),%rax
  jmp    L514
  lea    D192(%rip),%rax
  jmp    L514
  lea    D318(%rip),%rax
  jmp    L514
  lea    D638(%rip),%rax
  jmp    L514
  lea    D631(%rip),%rax
  jmp    L514
  lea    D8(%rip),%rax
  jmp    L514
  lea    D504(%rip),%rax
  jmp    L514
  lea    D678(%rip),%rax
  jmp    L514
  lea    D381(%rip),%rax
  jmp    L514
  lea    D275(%rip),%rax
  jmp    L514
  lea    D335(%rip),%rax
  jmp    L514
  lea    D611(%rip),%rax
  jmp    L514
  lea    D198(%rip),%rax
  jmp    L514
  lea    D156(%rip),%rax
  jmp    L514
  lea    D142(%rip),%rax
  jmp    L514
  lea    D463(%rip),%rax
  jmp    L514
  lea    D135(%rip),%rax
  jmp    L514
  lea    D428(%rip),%rax
  jmp    L514
  lea    D583(%rip),%rax
  jmp    L514
  lea    D465(%rip),%rax
  jmp    L514
  lea    D566(%rip),%rax
  jmp    L514
  lea    D6(%rip),%rax
  jmp    L514
  lea    D30(%rip),%rax
  jmp    L514
  lea    D199(%rip),%rax
  jmp    L514
  lea    D223(%rip),%rax
  jmp    L514
  lea    D507(%rip),%rax
  jmp    L514
L528:
  lea    D317(%rip),%rax
  jmp    L514
```

tool_calls: name: retrieve_data
arguments: data_tag: D386
type: string
name: retrieve_data
arguments: data_tag: D106
type: string
name: retrieve_data
arguments: data_tag: D317
type: string
name: retrieve_data
arguments: data_tag: D66
type: string
name: retrieve_data
arguments: data_tag: D707
type: string
name: retrieve_data
arguments: data_tag: D664
type: string
name: retrieve_data
arguments: data_tag: D572
type: string
name: retrieve_data
arguments: data_tag: D122
type: string
name: retrieve_data
arguments: data_tag: D131
type: string
name: retrieve_data
arguments: data_tag: D181
type: string
name: retrieve_data
arguments: data_tag: D276
type: string
name: retrieve_data
arguments: data_tag: D613
type: string
name: retrieve_data
arguments: data_tag: D411
type: string
name: retrieve_data
arguments: data_tag: D710
type: string
name: retrieve_data
arguments: data_tag: D149
type: string
name: retrieve_data
arguments: data_tag: D10
type: string
name: retrieve_data
arguments: data_tag: D429
type: string
name: retrieve_data
arguments: data_tag: D713
type: string
name: retrieve_data
arguments: data_tag: D513
type: string
name: retrieve_data
arguments: data_tag: D123
type: string
name: retrieve_data
arguments: data_tag: D29
type: string
name: retrieve_data
arguments: data_tag: D146
type: string
name: retrieve_data
arguments: data_tag: D205
type: string
name: retrieve_data
arguments: data_tag: D627
type: string
name: retrieve_data
arguments: data_tag: D279
type: string
name: retrieve_data
arguments: data_tag: D545
type: string
name: retrieve_data
arguments: data_tag: D188
type: string
name: retrieve_data
arguments: data_tag: D531
type: string
name: retrieve_data
arguments: data_tag: D495
type: string
name: retrieve_data
arguments: data_tag: D216
type: string
name: retrieve_data
arguments: data_tag: D558
type: string
name: retrieve_data
arguments: data_tag: D263
type: string
name: retrieve_data
arguments: data_tag: D716
type: string
name: retrieve_data
arguments: data_tag: D694
type: string
name: retrieve_data
arguments: data_tag: D226
type: string
name: retrieve_data
arguments: data_tag: D47
type: string
name: retrieve_data
arguments: data_tag: D127
type: string
name: retrieve_data
arguments: data_tag: D506
type: string
name: retrieve_data
arguments: data_tag: D97
type: string
name: retrieve_data
arguments: data_tag: D151
type: string
name: retrieve_data
arguments: data_tag: D573
type: string
name: retrieve_data
arguments: data_tag: D192
type: string
name: retrieve_data
arguments: data_tag: D318
type: string
name: retrieve_data
arguments: data_tag: D638
type: string
name: retrieve_data
arguments: data_tag: D631
type: string
name: retrieve_data
arguments: data_tag: D8
type: string
name: retrieve_data
arguments: data_tag: D504
type: string
name: retrieve_data
arguments: data_tag: D678
type: string
name: retrieve_data
arguments: data_tag: D381
type: string
name: retrieve_data
arguments: data_tag: D275
type: string
name: retrieve_data
arguments: data_tag: D335
type: string
name: retrieve_data
arguments: data_tag: D611
type: string
name: retrieve_data
arguments: data_tag: D198
type: string
name: retrieve_data
arguments: data_tag: D156
type: string
name: retrieve_data
arguments: data_tag: D142
type: string
name: retrieve_data
arguments: data_tag: D463
type: string
name: retrieve_data
arguments: data_tag: D135
type: string
name: retrieve_data
arguments: data_tag: D428
type: string
name: retrieve_data
arguments: data_tag: D583
type: string
name: retrieve_data
arguments: data_tag: D465
type: string
name: retrieve_data
arguments: data_tag: D566
type: string
name: retrieve_data
arguments: data_tag: D6
type: string
name: retrieve_data
arguments: data_tag: D30
type: string
name: retrieve_data
arguments: data_tag: D199
type: string
name: retrieve_data
arguments: data_tag: D223
type: string
name: retrieve_data
arguments: data_tag: D507
type: string

tool: D386: TK_CHAR('%c')

tool: D106: TK_CHAR(%d)

tool: D317: UNKNOWN

tool: D66: TK_NE_OP

tool: D707: TK_WSPACE

tool: D664: TK_NUM

tool: D572: TK_FLT

tool: D122: TK_QUOT

tool: D131: TK_STR

tool: D181: TK_FILE

tool: D276: TK_LINE

tool: D613: TK_COPY

tool: D411: TK_AND_OP

tool: D710: TK_AND_ASSIGN

tool: D149: TK_MUL_ASSIGN

tool: D10: TK_INC_OP

tool: D429: TK_ADD_ASSIGN

tool: D713: TK_DEC_OP

tool: D513: TK_SUB_ASSIGN

tool: D123: TK_PTR_OP

tool: D29: TK_ELLIPSIS

tool: D146: TK_DIV_ASSIGN

tool: D205: TK_LEFT_OP

tool: D627: TK_LEFT_ASSIGN

tool: D279: TK_LE_OP

tool: D545: TK_EQ_OP

tool: D188: TK_GE_OP

tool: D531: TK_RIGHT_OP

tool: D495: TK_RIGHT_ASSIGN

tool: D216: TK_XOR_ASSIGN

tool: D558: TK_OR_ASSIGN

tool: D263: TK_OR_OP

tool: D716: TK_AUTO

tool: D694: TK_BREAK

tool: D226: TK_CASE

tool: D47: TK_CHAR

tool: D127: TK_CONST

tool: D506: TK_CONTINUE

tool: D97: TK_DEFAULT

tool: D151: TK_DO

tool: D573: TK_DOUBLE

tool: D192: TK_ELSE

tool: D318: TK_ENUM

tool: D638: TK_EXTERN

tool: D631: TK_FLOAT

tool: D8: TK_FOR

tool: D504: TK_GOTO

tool: D678: TK_IF

tool: D381: TK_INT

tool: D275: TK_LONG

tool: D335: TK_REGISTER

tool: D611: TK_RETURN

tool: D198: TK_SHORT

tool: D156: TK_SIGNED

tool: D142: TK_SIZEOF

tool: D463: TK_STATIC

tool: D135: TK_STRUCT

tool: D428: TK_SWITCH

tool: D583: TK_TYPEDEF

tool: D465: TK_UNION

tool: D566: TK_UNSIGNED

tool: D6: TK_VOID

tool: D30: TK_VOLATILE

tool: D199: TK_WHILE

tool: D223: TK_MOD_ASSIGN

tool: D507: TK_WORD

assistant: ```c
char *token_txn(token)
int token;
{
  char *s = "UNKNOWN";
  static char buf[17];
  if (token > ' ' && token <= '~') {
    sprintf(buf, "TK_CHAR('%c')", token);
    return buf;
  }
  if (token >= 0 && token < 0x100) {
    sprintf(buf, "TK_CHAR(%d)", token);
    return buf;
  }
  switch (token) {
  case 256:
    s = "TK_WSPACE";
    break;
  case 257:
    s = "TK_WORD";
    break;
  case 258:
    s = "TK_NUM";
    break;
  case 259:
    s = "TK_FLT";
    break;
  case 260:
    s = "TK_QUOT";
    break;
  case 261:
    s = "TK_STR";
    break;
  case 262:
    s = "TK_FILE";
    break;
  case 263:
    s = "TK_LINE";
    break;
  case 264:
    s = "TK_COPY";
    break;
  case (0x200 + 0):
    s = "TK_NE_OP";
    break;
  case (0x200 + 1):
    s = "TK_MOD_ASSIGN";
    break;
  case (0x200 + 2):
    s = "TK_AND_OP";
    break;
  case (0x200 + 3):
    s = "TK_AND_ASSIGN";
    break;
  case (0x200 + 4):
    s = "TK_MUL_ASSIGN";
    break;
  case (0x200 + 5):
    s = "TK_INC_OP";
    break;
  case (0x200 + 6):
    s = "TK_ADD_ASSIGN";
    break;
  case (0x200 + 7):
    s = "TK_DEC_OP";
    break;
  case (0x200 + 8):
    s = "TK_SUB_ASSIGN";
    break;
  case (0x200 + 9):
    s = "TK_PTR_OP";
    break;
  case (0x200 + 10):
    s = "TK_ELLIPSIS";
    break;
  case (0x200 + 11):
    s = "TK_DIV_ASSIGN";
    break;
  case (0x200 + 12):
    s = "TK_LEFT_OP";
    break;
  case (0x200 + 13):
    s = "TK_LEFT_ASSIGN";
    break;
  case (0x200 + 14):
    s = "TK_LE_OP";
    break;
  case (0x200 + 15):
    s = "TK_EQ_OP";
    break;
  case (0x200 + 16):
    s = "TK_GE_OP";
    break;
  case (0x200 + 17):
    s = "TK_RIGHT_OP";
    break;
  case (0x200 + 18):
    s = "TK_RIGHT_ASSIGN";
    break;
  case (0x200 + 19):
    s = "TK_XOR_ASSIGN";
    break;
  case (0x200 + 20):
    s = "TK_OR_ASSIGN";
    break;
  case (0x200 + 21):
    s = "TK_OR_OP";
    break;
  case (0x300 + 0):
    s = "TK_AUTO";
    break;
  case (0x300 + 1):
    s = "TK_BREAK";
    break;
  case (0x300 + 2):
    s = "TK_CASE";
    break;
  case (0x300 + 3):
    s = "TK_CHAR";
    break;
  case (0x300 + 4):
    s = "TK_CONST";
    break;
  case (0x300 + 5):
    s = "TK_CONTINUE";
    break;
  case (0x300 + 6):
    s = "TK_DEFAULT";
    break;
  case (0x300 + 7):
    s = "TK_DO";
    break;
  case (0x300 + 8):
    s = "TK_DOUBLE";
    break;
  case (0x300 + 9):
    s = "TK_ELSE";
    break;
  case (0x300 + 10):
    s = "TK_ENUM";
    break;
  case (0x300 + 11):
    s = "TK_EXTERN";
    break;
  case (0x300 + 12):
    s = "TK_FLOAT";
    break;
  case (0x300 + 13):
    s = "TK_FOR";
    break;
  case (0x300 + 14):
    s = "TK_GOTO";
    break;
  case (0x300 + 15):
    s = "TK_IF";
    break;
  case (0x300 + 16):
    s = "TK_INT";
    break;
  case (0x300 + 17):
    s = "TK_LONG";
    break;
  case (0x300 + 18):
    s = "TK_REGISTER";
    break;
  case (0x300 + 19):
    s = "TK_RETURN";
    break;
  case (0x300 + 20):
    s = "TK_SHORT";
    break;
  case (0x300 + 21):
    s = "TK_SIGNED";
    break;
  case (0x300 + 22):
    s = "TK_SIZEOF";
    break;
  case (0x300 + 23):
    s = "TK_STATIC";
    break;
  case (0x300 + 24):
    s = "TK_STRUCT";
    break;
  case (0x300 + 25):
    s = "TK_SWITCH";
    break;
  case (0x300 + 26):
    s = "TK_TYPEDEF";
    break;
  case (0x300 + 27):
    s = "TK_UNION";
    break;
  case (0x300 + 28):
    s = "TK_UNSIGNED";
    break;
  case (0x300 + 29):
    s = "TK_VOID";
    break;
  case (0x300 + 30):
    s = "TK_VOLATILE";
    break;
  case (0x300 + 31):
    s = "TK_WHILE";
    break;
  }
  return s;
}
```