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

```asm
<mus_header_data_format2string>:
  endbr64
  add    $0x1,%edi
  cmp    $0x16,%edi
  ja     L6
  lea    D64(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax)
  lea    D33(%rip),%rax
  ret
  lea    D28(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D210(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D101(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D45(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D55(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D181(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D89(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D41(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D129(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D127(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D90(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D24(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D232(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D70(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D240(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D86(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D38(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D179(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D193(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D22(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D84(%rip),%rax
  ret
  nopl   0x0(%rax,%rax,1)
  lea    D111(%rip),%rax
  ret
L6:
  lea    D144(%rip),%rax
  ret
```

tool_calls: name: disassemble_data
arguments: label: D33
type_infered: string
name: disassemble_data
arguments: label: D28
type_infered: string
name: disassemble_data
arguments: label: D210
type_infered: string
name: disassemble_data
arguments: label: D101
type_infered: string
name: disassemble_data
arguments: label: D45
type_infered: string
name: disassemble_data
arguments: label: D55
type_infered: string
name: disassemble_data
arguments: label: D181
type_infered: string
name: disassemble_data
arguments: label: D89
type_infered: string
name: disassemble_data
arguments: label: D41
type_infered: string
name: disassemble_data
arguments: label: D129
type_infered: string
name: disassemble_data
arguments: label: D127
type_infered: string
name: disassemble_data
arguments: label: D90
type_infered: string
name: disassemble_data
arguments: label: D24
type_infered: string
name: disassemble_data
arguments: label: D232
type_infered: string
name: disassemble_data
arguments: label: D70
type_infered: string
name: disassemble_data
arguments: label: D240
type_infered: string
name: disassemble_data
arguments: label: D86
type_infered: string
name: disassemble_data
arguments: label: D38
type_infered: string
name: disassemble_data
arguments: label: D179
type_infered: string
name: disassemble_data
arguments: label: D193
type_infered: string
name: disassemble_data
arguments: label: D22
type_infered: string
name: disassemble_data
arguments: label: D84
type_infered: string
name: disassemble_data
arguments: label: D111
type_infered: string
name: disassemble_data
arguments: label: D144
type_infered: string

tool: D33: no_snd

tool: D28: unsupported

tool: D210: 16-bit big endian unsigned

tool: D101: 64-bit little endian double

tool: D45: 32-bit little endian float

tool: D55: 32-bit little endian

tool: D181: 16-bit little endian

tool: D89: 64-bit big endian double

tool: D41: 16-bit big endian

tool: D129: 8-bit

tool: D127: mulaw

tool: D90: 12-bit little endian unsigned

tool: D24: alaw

tool: D232: 32-bit big endian

tool: D70: 32-bit big endian float

tool: D240: 24-bit big endian

tool: D86: 8-bit unsigned

tool: D38: 12-bit big endian

tool: D179: vax float

tool: D193: 24-bit little endian

tool: D22: 16-bit little endian unsigned

tool: D84: 12-bit big endian unsigned

tool: D111: 12-bit little endian

tool: D144: unknown

assistant: ```c
char *mus_header_data_format2string(int format) {
  switch (format) {
  case -1:
    return ("unsupported");
    break;
  case 0:
    return ("no_snd");
    break;
  case 1:
    return ("16-bit big endian");
    break;
  case 2:
    return ("mulaw");
    break;
  case 3:
    return ("8-bit");
    break;
  case 4:
    return ("32-bit big endian float");
    break;
  case 5:
    return ("32-bit big endian");
    break;
  case 6:
    return ("alaw");
    break;
  case 7:
    return ("8-bit unsigned");
    break;
  case 8:
    return ("24-bit big endian");
    break;
  case 9:
    return ("64-bit big endian double");
    break;
  case 10:
    return ("16-bit little endian");
    break;
  case 11:
    return ("32-bit little endian");
    break;
  case 12:
    return ("32-bit little endian float");
    break;
  case 13:
    return ("64-bit little endian double");
    break;
  case 14:
    return ("16-bit big endian unsigned");
    break;
  case 15:
    return ("16-bit little endian unsigned");
    break;
  case 20:
    return ("12-bit big endian unsigned");
    break;
  case 21:
    return ("12-bit little endian unsigned");
    break;
  case 18:
    return ("12-bit big endian");
    break;
  case 19:
    return ("12-bit little endian");
    break;
  case 16:
    return ("24-bit little endian");
    break;
  case 17:
    return ("vax float");
    break;
  default:
    return ("unknown");
    break;
  }
}
```