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

```asm
<code_for>:
  endbr64
  push   %rbx
  mov    %rdi,%rbx
  lea    D108(%rip),%rsi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x21,%eax
  test   %rdx,%rdx
  jne    L120
L242:
  pop    %rbx
  ret
L120:
  lea    D241(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x21,%eax
  test   %rdx,%rdx
  je     L242
  lea    D227(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x21,%eax
  test   %rdx,%rdx
  je     L242
  lea    D181(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x30,%eax
  test   %rdx,%rdx
  je     L242
  lea    D115(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x31,%eax
  test   %rdx,%rdx
  je     L242
  lea    D72(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x32,%eax
  test   %rdx,%rdx
  je     L242
  lea    D86(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x33,%eax
  test   %rdx,%rdx
  je     L242
  lea    D19(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x34,%eax
  test   %rdx,%rdx
  je     L242
  lea    D64(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x35,%eax
  test   %rdx,%rdx
  je     L242
  lea    D99(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x36,%eax
  test   %rdx,%rdx
  je     L242
  lea    D271(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x76,%eax
  test   %rdx,%rdx
  je     L242
  lea    D174(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x56,%eax
  test   %rdx,%rdx
  je     L242
  lea    D78(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x46,%eax
  test   %rdx,%rdx
  je     L242
  lea    D228(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x46,%eax
  test   %rdx,%rdx
  je     L242
  lea    D60(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x49,%eax
  test   %rdx,%rdx
  je     L242
  lea    D261(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x48,%eax
  test   %rdx,%rdx
  je     L242
  lea    D76(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x58,%eax
  test   %rdx,%rdx
  je     L242
  lea    D217(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x58,%eax
  test   %rdx,%rdx
  je     L242
  lea    D147(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x58,%eax
  test   %rdx,%rdx
  je     L242
  lea    D173(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x44,%eax
  test   %rdx,%rdx
  je     L242
  lea    D156(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x42,%eax
  test   %rdx,%rdx
  je     L242
  lea    D37(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x42,%eax
  test   %rdx,%rdx
  je     L242
  lea    D11(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x42,%eax
  test   %rdx,%rdx
  je     L242
  lea    D38(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x53,%eax
  test   %rdx,%rdx
  je     L242
  lea    D224(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x73,%eax
  test   %rdx,%rdx
  je     L242
  lea    D286(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x43,%eax
  test   %rdx,%rdx
  je     L242
  lea    D42(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x69,%eax
  test   %rdx,%rdx
  je     L242
  lea    D245(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  mov    %rax,%rdx
  mov    $0x40,%eax
  test   %rdx,%rdx
  je     L242
  lea    D131(%rip),%rsi
  mov    %rbx,%rdi
  call   <strcmp@plt>
  cmp    $0x1,%rax
  sbb    %eax,%eax
  and    $0x16,%eax
  add    $0x3f,%eax
  jmp    L242
```

tool_calls: name: extract_symbolic_data
arguments: tag: D108
datatype: string
name: extract_symbolic_data
arguments: tag: D241
datatype: string
name: extract_symbolic_data
arguments: tag: D227
datatype: string
name: extract_symbolic_data
arguments: tag: D181
datatype: string
name: extract_symbolic_data
arguments: tag: D115
datatype: string
name: extract_symbolic_data
arguments: tag: D72
datatype: string
name: extract_symbolic_data
arguments: tag: D86
datatype: string
name: extract_symbolic_data
arguments: tag: D19
datatype: string
name: extract_symbolic_data
arguments: tag: D64
datatype: string
name: extract_symbolic_data
arguments: tag: D99
datatype: string
name: extract_symbolic_data
arguments: tag: D271
datatype: string
name: extract_symbolic_data
arguments: tag: D174
datatype: string
name: extract_symbolic_data
arguments: tag: D78
datatype: string
name: extract_symbolic_data
arguments: tag: D228
datatype: string
name: extract_symbolic_data
arguments: tag: D60
datatype: string
name: extract_symbolic_data
arguments: tag: D261
datatype: string
name: extract_symbolic_data
arguments: tag: D76
datatype: string
name: extract_symbolic_data
arguments: tag: D217
datatype: string
name: extract_symbolic_data
arguments: tag: D147
datatype: string
name: extract_symbolic_data
arguments: tag: D173
datatype: string
name: extract_symbolic_data
arguments: tag: D156
datatype: string
name: extract_symbolic_data
arguments: tag: D37
datatype: string
name: extract_symbolic_data
arguments: tag: D11
datatype: string
name: extract_symbolic_data
arguments: tag: D38
datatype: string
name: extract_symbolic_data
arguments: tag: D224
datatype: string
name: extract_symbolic_data
arguments: tag: D286
datatype: string
name: extract_symbolic_data
arguments: tag: D42
datatype: string
name: extract_symbolic_data
arguments: tag: D245
datatype: string
name: extract_symbolic_data
arguments: tag: D131
datatype: string

tool: D108: BOOT

tool: D241: BOOT0

tool: D227: HEADER

tool: D181: CODE

tool: D115: CODE1

tool: D72: CODE2

tool: D86: CODE3

tool: D19: CODE4

tool: D64: CODE5

tool: D99: CODE6

tool: D271: VECTORS

tool: D174: VIDEO

tool: D78: FONT

tool: D228: FONTCOMMON

tool: D60: INITIALIZED

tool: D261: HOME

tool: D76: DISCARD

tool: D217: DISCARD1

tool: D147: DISCARD2

tool: D173: DATA

tool: D156: BUFFERS

tool: D37: BUFFERS1

tool: D11: BUFFERS2

tool: D38: COMMONMEM

tool: D224: COMMONDATA

tool: D286: CONST

tool: D42: INITIALIZER

tool: D245: STUBS

tool: D131: 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 '?';
}
```