user: Demonstrate the C code that generates the assembly output below:

```asm
<code_for>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    -0x8(%rbp),%rax
  lea    D106(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L43
  mov    $0x21,%eax
  jmp    L99
L43:
  mov    -0x8(%rbp),%rax
  lea    D76(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L204
  mov    $0x30,%eax
  jmp    L99
L204:
  mov    -0x8(%rbp),%rax
  lea    D151(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L482
  mov    $0x31,%eax
  jmp    L99
L482:
  mov    -0x8(%rbp),%rax
  lea    D213(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L129
  mov    $0x32,%eax
  jmp    L99
L129:
  mov    -0x8(%rbp),%rax
  lea    D52(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L389
  mov    $0x33,%eax
  jmp    L99
L389:
  mov    -0x8(%rbp),%rax
  lea    D12(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L224
  mov    $0x34,%eax
  jmp    L99
L224:
  mov    -0x8(%rbp),%rax
  lea    D97(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L188
  mov    $0x35,%eax
  jmp    L99
L188:
  mov    -0x8(%rbp),%rax
  lea    D135(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L452
  mov    $0x36,%eax
  jmp    L99
L452:
  mov    -0x8(%rbp),%rax
  lea    D50(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L183
  mov    $0x56,%eax
  jmp    L99
L183:
  mov    -0x8(%rbp),%rax
  lea    D152(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L365
  mov    $0x46,%eax
  jmp    L99
L365:
  mov    -0x8(%rbp),%rax
  lea    D11(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L54
  mov    $0x49,%eax
  jmp    L99
L54:
  mov    -0x8(%rbp),%rax
  lea    D246(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L422
  mov    $0x48,%eax
  jmp    L99
L422:
  mov    -0x8(%rbp),%rax
  lea    D65(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L301
  mov    $0x58,%eax
  jmp    L99
L301:
  mov    -0x8(%rbp),%rax
  lea    D82(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L33
  mov    $0x58,%eax
  jmp    L99
L33:
  mov    -0x8(%rbp),%rax
  lea    D187(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L243
  mov    $0x58,%eax
  jmp    L99
L243:
  mov    -0x8(%rbp),%rax
  lea    D215(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L297
  mov    $0x44,%eax
  jmp    L99
L297:
  mov    -0x8(%rbp),%rax
  lea    D142(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L284
  mov    $0x42,%eax
  jmp    L99
L284:
  mov    -0x8(%rbp),%rax
  lea    D136(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L346
  mov    $0x42,%eax
  jmp    L99
L346:
  mov    -0x8(%rbp),%rax
  lea    D94(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L227
  mov    $0x42,%eax
  jmp    L99
L227:
  mov    -0x8(%rbp),%rax
  lea    D210(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L98
  mov    $0x53,%eax
  jmp    L99
L98:
  mov    -0x8(%rbp),%rax
  lea    D39(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L72
  mov    $0x73,%eax
  jmp    L99
L72:
  mov    -0x8(%rbp),%rax
  lea    D131(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L65
  mov    $0x43,%eax
  jmp    L99
L65:
  mov    -0x8(%rbp),%rax
  lea    D25(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L174
  mov    $0x69,%eax
  jmp    L99
L174:
  mov    -0x8(%rbp),%rax
  lea    D79(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L124
  mov    $0x40,%eax
  jmp    L99
L124:
  mov    -0x8(%rbp),%rax
  lea    D63(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L191
  mov    $0x55,%eax
  jmp    L99
L191:
  mov    $0x3f,%eax
L99:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D106
type_infered: string
name: extract_symbolic_data
arguments: tag: D76
type_infered: string
name: extract_symbolic_data
arguments: tag: D151
type_infered: string
name: extract_symbolic_data
arguments: tag: D213
type_infered: string
name: extract_symbolic_data
arguments: tag: D52
type_infered: string
name: extract_symbolic_data
arguments: tag: D12
type_infered: string
name: extract_symbolic_data
arguments: tag: D97
type_infered: string
name: extract_symbolic_data
arguments: tag: D135
type_infered: string
name: extract_symbolic_data
arguments: tag: D50
type_infered: string
name: extract_symbolic_data
arguments: tag: D152
type_infered: string
name: extract_symbolic_data
arguments: tag: D11
type_infered: string
name: extract_symbolic_data
arguments: tag: D246
type_infered: string
name: extract_symbolic_data
arguments: tag: D65
type_infered: string
name: extract_symbolic_data
arguments: tag: D82
type_infered: string
name: extract_symbolic_data
arguments: tag: D187
type_infered: string
name: extract_symbolic_data
arguments: tag: D215
type_infered: string
name: extract_symbolic_data
arguments: tag: D142
type_infered: string
name: extract_symbolic_data
arguments: tag: D136
type_infered: string
name: extract_symbolic_data
arguments: tag: D94
type_infered: string
name: extract_symbolic_data
arguments: tag: D210
type_infered: string
name: extract_symbolic_data
arguments: tag: D39
type_infered: string
name: extract_symbolic_data
arguments: tag: D131
type_infered: string
name: extract_symbolic_data
arguments: tag: D25
type_infered: string
name: extract_symbolic_data
arguments: tag: D79
type_infered: string
name: extract_symbolic_data
arguments: tag: D63
type_infered: string

tool: D106: BOOT

tool: D76: CODE

tool: D151: CODE1

tool: D213: CODE2

tool: D52: CODE3

tool: D12: CODE4

tool: D97: CODE5

tool: D135: CODE6

tool: D50: VIDEO

tool: D152: FONT

tool: D11: INITIALIZED

tool: D246: HOME

tool: D65: DISCARD

tool: D82: DISCARD1

tool: D187: DISCARD2

tool: D215: DATA

tool: D142: BUFFERS

tool: D136: BUFFERS1

tool: D94: BUFFERS2

tool: D210: COMMONMEM

tool: D39: COMMONDATA

tool: D131: CONST

tool: D25: INITIALIZER

tool: D79: STUBS

tool: D63: UDATA

assistant: ```c
char code_for(const char *name) {
  if (strcmp(name, "BOOT") == 0)
    return '!';
  if (strcmp(name, "CODE") == 0)
    return '0';
  if (strcmp(name, "CODE1") == 0)
    return '1';
  if (strcmp(name, "CODE2") == 0)
    return '2';
  if (strcmp(name, "CODE3") == 0)
    return '3';
  if (strcmp(name, "CODE4") == 0)
    return '4';
  if (strcmp(name, "CODE5") == 0)
    return '5';
  if (strcmp(name, "CODE6") == 0)
    return '6';
  if (strcmp(name, "VIDEO") == 0)
    return 'V';
  if (strcmp(name, "FONT") == 0)
    return 'F';
  if (strcmp(name, "INITIALIZED") == 0)
    return 'I';
  if (strcmp(name, "HOME") == 0)
    return 'H';
  if (strcmp(name, "DISCARD") == 0)
    return 'X';
  if (strcmp(name, "DISCARD1") == 0)
    return 'X';
  if (strcmp(name, "DISCARD2") == 0)
    return 'X';
  if (strcmp(name, "DATA") == 0)
    return 'D';
  if (strcmp(name, "BUFFERS") == 0)
    return 'B';
  if (strcmp(name, "BUFFERS1") == 0)
    return 'B';
  if (strcmp(name, "BUFFERS2") == 0)
    return 'B';
  if (strcmp(name, "COMMONMEM") == 0)
    return 'S';
  if (strcmp(name, "COMMONDATA") == 0)
    return 's';
  if (strcmp(name, "CONST") == 0)
    return 'C';
  if (strcmp(name, "INITIALIZER") == 0)
    return 'i';
  if (strcmp(name, "STUBS") == 0)
    return '@';
  if (strcmp(name, "UDATA") == 0)
    return 'U';
  return '?';
}
```