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    D0(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L188
  mov    $0x21,%eax
  jmp    L478
L188:
  mov    -0x8(%rbp),%rax
  lea    D276(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L193
  mov    $0x21,%eax
  jmp    L478
L193:
  mov    -0x8(%rbp),%rax
  lea    D13(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L157
  mov    $0x21,%eax
  jmp    L478
L157:
  mov    -0x8(%rbp),%rax
  lea    D77(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L99
  mov    $0x30,%eax
  jmp    L478
L99:
  mov    -0x8(%rbp),%rax
  lea    D274(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L123
  mov    $0x31,%eax
  jmp    L478
L123:
  mov    -0x8(%rbp),%rax
  lea    D266(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L114
  mov    $0x32,%eax
  jmp    L478
L114:
  mov    -0x8(%rbp),%rax
  lea    D108(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L104
  mov    $0x33,%eax
  jmp    L478
L104:
  mov    -0x8(%rbp),%rax
  lea    D241(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L78
  mov    $0x34,%eax
  jmp    L478
L78:
  mov    -0x8(%rbp),%rax
  lea    D232(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L425
  mov    $0x35,%eax
  jmp    L478
L425:
  mov    -0x8(%rbp),%rax
  lea    D98(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L81
  mov    $0x36,%eax
  jmp    L478
L81:
  mov    -0x8(%rbp),%rax
  lea    D73(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L186
  mov    $0x76,%eax
  jmp    L478
L186:
  mov    -0x8(%rbp),%rax
  lea    D117(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L303
  mov    $0x56,%eax
  jmp    L478
L303:
  mov    -0x8(%rbp),%rax
  lea    D265(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L30
  mov    $0x46,%eax
  jmp    L478
L30:
  mov    -0x8(%rbp),%rax
  lea    D33(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L418
  mov    $0x46,%eax
  jmp    L478
L418:
  mov    -0x8(%rbp),%rax
  lea    D2(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L173
  mov    $0x49,%eax
  jmp    L478
L173:
  mov    -0x8(%rbp),%rax
  lea    D231(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L373
  mov    $0x48,%eax
  jmp    L478
L373:
  mov    -0x8(%rbp),%rax
  lea    D253(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L22
  mov    $0x58,%eax
  jmp    L478
L22:
  mov    -0x8(%rbp),%rax
  lea    D85(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L491
  mov    $0x58,%eax
  jmp    L478
L491:
  mov    -0x8(%rbp),%rax
  lea    D28(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L403
  mov    $0x58,%eax
  jmp    L478
L403:
  mov    -0x8(%rbp),%rax
  lea    D249(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L45
  mov    $0x44,%eax
  jmp    L478
L45:
  mov    -0x8(%rbp),%rax
  lea    D286(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L166
  mov    $0x42,%eax
  jmp    L478
L166:
  mov    -0x8(%rbp),%rax
  lea    D131(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L248
  mov    $0x42,%eax
  jmp    L478
L248:
  mov    -0x8(%rbp),%rax
  lea    D152(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L49
  mov    $0x42,%eax
  jmp    L478
L49:
  mov    -0x8(%rbp),%rax
  lea    D22(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L367
  mov    $0x53,%eax
  jmp    L478
L367:
  mov    -0x8(%rbp),%rax
  lea    D3(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L388
  mov    $0x73,%eax
  jmp    L478
L388:
  mov    -0x8(%rbp),%rax
  lea    D9(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L444
  mov    $0x43,%eax
  jmp    L478
L444:
  mov    -0x8(%rbp),%rax
  lea    D279(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L441
  mov    $0x69,%eax
  jmp    L478
L441:
  mov    -0x8(%rbp),%rax
  lea    D34(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L524
  mov    $0x40,%eax
  jmp    L478
L524:
  mov    -0x8(%rbp),%rax
  lea    D119(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <strcmp@plt>
  test   %rax,%rax
  jne    L488
  mov    $0x55,%eax
  jmp    L478
L488:
  mov    $0x3f,%eax
L478:
  leave
  ret
```

tool_calls: name: parse_data
arguments: tag: D0
type: string
name: parse_data
arguments: tag: D276
type: string
name: parse_data
arguments: tag: D13
type: string
name: parse_data
arguments: tag: D77
type: string
name: parse_data
arguments: tag: D274
type: string
name: parse_data
arguments: tag: D266
type: string
name: parse_data
arguments: tag: D108
type: string
name: parse_data
arguments: tag: D241
type: string
name: parse_data
arguments: tag: D232
type: string
name: parse_data
arguments: tag: D98
type: string
name: parse_data
arguments: tag: D73
type: string
name: parse_data
arguments: tag: D117
type: string
name: parse_data
arguments: tag: D265
type: string
name: parse_data
arguments: tag: D33
type: string
name: parse_data
arguments: tag: D2
type: string
name: parse_data
arguments: tag: D231
type: string
name: parse_data
arguments: tag: D253
type: string
name: parse_data
arguments: tag: D85
type: string
name: parse_data
arguments: tag: D28
type: string
name: parse_data
arguments: tag: D249
type: string
name: parse_data
arguments: tag: D286
type: string
name: parse_data
arguments: tag: D131
type: string
name: parse_data
arguments: tag: D152
type: string
name: parse_data
arguments: tag: D22
type: string
name: parse_data
arguments: tag: D3
type: string
name: parse_data
arguments: tag: D9
type: string
name: parse_data
arguments: tag: D279
type: string
name: parse_data
arguments: tag: D34
type: string
name: parse_data
arguments: tag: D119
type: string

tool: D0: BOOT

tool: D276: BOOT0

tool: D13: HEADER

tool: D77: CODE

tool: D274: CODE1

tool: D266: CODE2

tool: D108: CODE3

tool: D241: CODE4

tool: D232: CODE5

tool: D98: CODE6

tool: D73: VECTORS

tool: D117: VIDEO

tool: D265: FONT

tool: D33: FONTCOMMON

tool: D2: INITIALIZED

tool: D231: HOME

tool: D253: DISCARD

tool: D85: DISCARD1

tool: D28: DISCARD2

tool: D249: DATA

tool: D286: BUFFERS

tool: D131: BUFFERS1

tool: D152: BUFFERS2

tool: D22: COMMONMEM

tool: D3: COMMONDATA

tool: D9: CONST

tool: D279: INITIALIZER

tool: D34: STUBS

tool: D119: UDATA

assistant: ```c
char code_for(const char *name) {
  if (strcmp(name, "BOOT") == 0)
    return '!';
  if (strcmp(name, "BOOT0") == 0)
    return '!';
  if (strcmp(name, "HEADER") == 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, "VECTORS") == 0)
    return 'v';
  if (strcmp(name, "VIDEO") == 0)
    return 'V';
  if (strcmp(name, "FONT") == 0)
    return 'F';
  if (strcmp(name, "FONTCOMMON") == 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 '?';
}
```