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

```asm
<parse_iof>:
  endbr64
  push   %rbp
  xor    %eax,%eax
  mov    %rdi,%rbp
  push   %rbx
  sub    $0x8,%rsp
  call   <get_value@plt>
  mov    %rbp,%rdi
  lea    D9(%rip),%rbp
  mov    %eax,%ebx
  call   <parse_value@plt>
  mov    %rbp,%rdi
  test   $0x1,%bl
  je     L115
  call   <printf@plt>
  lea    D66(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  test   $0x2,%bl
  je     L71
L24:
  call   <printf@plt>
  lea    D96(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  test   $0x4,%bl
  je     L61
L123:
  call   <printf@plt>
  lea    D45(%rip),%rdi
  call   <printf@plt>
  test   $0x8,%bl
  jne    L144
L19:
  test   $0x10,%bl
  jne    L134
L155:
  test   $0x20,%bl
  jne    L28
L133:
  test   $0x40,%bl
  jne    L143
L169:
  test   $0x80,%bl
  jne    L82
L55:
  and    $0x1,%bh
  jne    L31
L160:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
  nopl   0x0(%rax)
L115:
  call   <printf@plt>
  lea    D78(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  test   $0x2,%bl
  jne    L24
L71:
  call   <printf@plt>
  lea    D76(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  test   $0x4,%bl
  jne    L123
L61:
  call   <printf@plt>
  lea    D17(%rip),%rdi
  call   <printf@plt>
  test   $0x8,%bl
  je     L19
L144:
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D72(%rip),%rdi
  call   <printf@plt>
  test   $0x10,%bl
  je     L155
L134:
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D12(%rip),%rdi
  call   <printf@plt>
  test   $0x20,%bl
  je     L133
L28:
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D91(%rip),%rdi
  call   <printf@plt>
  test   $0x40,%bl
  je     L169
L143:
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D63(%rip),%rdi
  call   <printf@plt>
  test   $0x80,%bl
  je     L55
L82:
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D70(%rip),%rdi
  call   <printf@plt>
  and    $0x1,%bh
  je     L160
L31:
  mov    %rbp,%rdi
  call   <printf@plt>
  add    $0x8,%rsp
  lea    D44(%rip),%rdi
  pop    %rbx
  pop    %rbp
  jmp    1080 <printf@plt>
```

tool_calls: name: unpack_data
arguments: label: D9
type_infered: string
name: unpack_data
arguments: label: D66
type_infered: string
name: unpack_data
arguments: label: D96
type_infered: string
name: unpack_data
arguments: label: D45
type_infered: string
name: unpack_data
arguments: label: D78
type_infered: string
name: unpack_data
arguments: label: D76
type_infered: string
name: unpack_data
arguments: label: D17
type_infered: string
name: unpack_data
arguments: label: D72
type_infered: string
name: unpack_data
arguments: label: D12
type_infered: string
name: unpack_data
arguments: label: D91
type_infered: string
name: unpack_data
arguments: label: D63
type_infered: string
name: unpack_data
arguments: label: D70
type_infered: string
name: unpack_data
arguments: label: D44
type_infered: string

tool: D9:  

tool: D66: Cons

tool: D96: Var

tool: D45: Rel

tool: D78: Data

tool: D76: Array

tool: D17: Abs

tool: D72: Wrap

tool: D12: NonLin

tool: D91: NonPref

tool: D63: Null

tool: D70: Vol

tool: D44: 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"));
}
```