user: What is the c source code of the assembly code below?

```asm
<parse_iof>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbp
  mov    $0x0,%eax
  call   <get_value@plt>
  mov    %eax,%ebx
  mov    %rbp,%rdi
  call   <parse_value@plt>
  test   $0x1,%bl
  je     L48
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    D153(%rip),%rdi
  call   <printf@plt>
L28:
  test   $0x2,%bl
  je     L90
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    D174(%rip),%rdi
  call   <printf@plt>
L123:
  test   $0x4,%bl
  je     L13
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    D203(%rip),%rdi
  call   <printf@plt>
L116:
  test   $0x8,%bl
  jne    L175
L74:
  test   $0x10,%bl
  jne    L44
L170:
  test   $0x20,%bl
  jne    L23
L107:
  test   $0x40,%bl
  jne    L86
L77:
  test   $0x80,%bl
  jne    L12
L117:
  test   $0x1,%bh
  jne    L41
L29:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
L48:
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    D51(%rip),%rdi
  call   <printf@plt>
  jmp    L28
L90:
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    D221(%rip),%rdi
  call   <printf@plt>
  jmp    L123
L13:
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    D85(%rip),%rdi
  call   <printf@plt>
  jmp    L116
L175:
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    D103(%rip),%rdi
  call   <printf@plt>
  jmp    L74
L44:
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    D208(%rip),%rdi
  call   <printf@plt>
  jmp    L170
L23:
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    D222(%rip),%rdi
  call   <printf@plt>
  jmp    L107
L86:
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    D231(%rip),%rdi
  call   <printf@plt>
  jmp    L77
L12:
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    D74(%rip),%rdi
  call   <printf@plt>
  jmp    L117
L41:
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    D20(%rip),%rdi
  call   <printf@plt>
  jmp    L29
```

tool_calls: name: disassemble_data
arguments: data_label: D155
type_guessed: string
name: disassemble_data
arguments: data_label: D153
type_guessed: string
name: disassemble_data
arguments: data_label: D174
type_guessed: string
name: disassemble_data
arguments: data_label: D203
type_guessed: string
name: disassemble_data
arguments: data_label: D51
type_guessed: string
name: disassemble_data
arguments: data_label: D221
type_guessed: string
name: disassemble_data
arguments: data_label: D85
type_guessed: string
name: disassemble_data
arguments: data_label: D103
type_guessed: string
name: disassemble_data
arguments: data_label: D208
type_guessed: string
name: disassemble_data
arguments: data_label: D222
type_guessed: string
name: disassemble_data
arguments: data_label: D231
type_guessed: string
name: disassemble_data
arguments: data_label: D74
type_guessed: string
name: disassemble_data
arguments: data_label: D20
type_guessed: string

tool: D155:  

tool: D153: Cons

tool: D174: Var

tool: D203: Rel

tool: D51: Data

tool: D221: Array

tool: D85: Abs

tool: D103: Wrap

tool: D208: NonLin

tool: D222: NonPref

tool: D231: Null

tool: D74: Vol

tool: D20: BufferedBytes

assistant: ```c
void parse_iof(char *name) {
  int val = get_value();
  parse_value(name);
  if (val & 0x01)
    (printf(" "), printf("Cons"));
  else
    (printf(" "), printf("Data"));
  if (val & 0x02)
    (printf(" "), printf("Var"));
  else
    (printf(" "), printf("Array"));
  if (val & 0x04)
    (printf(" "), printf("Rel"));
  else
    (printf(" "), printf("Abs"));
  if (val & 0x08)
    (printf(" "), printf("Wrap"));
  if (val & 0x10)
    (printf(" "), printf("NonLin"));
  if (val & 0x20)
    (printf(" "), printf("NonPref"));
  if (val & 0x40)
    (printf(" "), printf("Null"));
  if (val & 0x80)
    (printf(" "), printf("Vol"));
  if (val & 0x0100)
    (printf(" "), printf("BufferedBytes"));
}
```