user: Converte this assembly snippet into its equivalent C code:

```asm
<parse_collection>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    $0x0,%eax
  call   <get_value@plt>
  cmp    $0x6,%eax
  ja     L35
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D20(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D20(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <parse_value@plt>
  lea    D194(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D254(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L51
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <parse_value@plt>
  lea    D194(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D96(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L51
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <parse_value@plt>
  lea    D194(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L51
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <parse_value@plt>
  lea    D194(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D148(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L51
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <parse_value@plt>
  lea    D194(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D141(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L51
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <parse_value@plt>
  lea    D194(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D117(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L51
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <parse_value@plt>
  lea    D194(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D73(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L51
L35:
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  call   <parse_value@plt>
  lea    D194(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D110(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  nop
L51:
  nop
  pop    %rbp
  ret
```

tool_calls: name: read_data
arguments: label: D42
type: string
name: read_data
arguments: label: D194
type: string
name: read_data
arguments: label: D254
type: string
name: read_data
arguments: label: D96
type: string
name: read_data
arguments: label: D48
type: string
name: read_data
arguments: label: D148
type: string
name: read_data
arguments: label: D141
type: string
name: read_data
arguments: label: D117
type: string
name: read_data
arguments: label: D73
type: string
name: read_data
arguments: label: D110
type: string

tool: D42: COLLECTION

tool: D194:  

tool: D254: Physical

tool: D96: Application

tool: D48: Logical

tool: D148: Report

tool: D141: Named Array

tool: D117: Usage Switch

tool: D73: Usage Modifier

tool: D110: RESERVED

assistant: ```c
void parse_collection(void) {
  switch (get_value()) {
  case 0x00:
    parse_value("COLLECTION");
    (printf(" "), printf("Physical"));
    break;
  case 0x01:
    parse_value("COLLECTION");
    (printf(" "), printf("Application"));
    break;
  case 0x02:
    parse_value("COLLECTION");
    (printf(" "), printf("Logical"));
    break;
  case 0x03:
    parse_value("COLLECTION");
    (printf(" "), printf("Report"));
    break;
  case 0x04:
    parse_value("COLLECTION");
    (printf(" "), printf("Named Array"));
    break;
  case 0x05:
    parse_value("COLLECTION");
    (printf(" "), printf("Usage Switch"));
    break;
  case 0x06:
    parse_value("COLLECTION");
    (printf(" "), printf("Usage Modifier"));
    break;
  default:
    parse_value("COLLECTION");
    (printf(" "), printf("RESERVED"));
    break;
  }
}
```