user: Please show me the C implementation that matches the assembly code listed below:

```asm
<print_media>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,%eax
  mov    %al,-0x4(%rbp)
  movzbl -0x4(%rbp),%eax
  sub    $0xf0,%eax
  cmp    $0xf,%eax
  ja     L14
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D41(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D41(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D75(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L78
  lea    D9(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L78
  lea    D84(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L78
  lea    D89(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L78
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L78
  lea    D55(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L78
  lea    D98(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L78
  lea    D80(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L78
  lea    D11(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L78
L14:
  movzbl -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D16(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L78:
  nop
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D75
type: string
name: retrieve_data
arguments: data_tag: D9
type: string
name: retrieve_data
arguments: data_tag: D84
type: string
name: retrieve_data
arguments: data_tag: D89
type: string
name: retrieve_data
arguments: data_tag: D22
type: string
name: retrieve_data
arguments: data_tag: D55
type: string
name: retrieve_data
arguments: data_tag: D98
type: string
name: retrieve_data
arguments: data_tag: D80
type: string
name: retrieve_data
arguments: data_tag: D11
type: string
name: retrieve_data
arguments: data_tag: D16
type: string

tool: D75: Generic media type (0xf0)

tool: D9: Hard disk (0xf8)

tool: D84: 3.5" double sided 720k or 5.25 double sided 1.2MB (0xf9)

tool: D89: 5.25" single sided 320k (0xfa)

tool: D22: 3.5" double sided 640k (0xfb)

tool: D55: 5.25" single sided 180k (0xfc)

tool: D98: 5.25" double sided 360k (0xfd)

tool: D80: 5.25" single sided 180k (0xfe)

tool: D11: 5.25" double sided 320k (0xff)

tool: D16: Unknown (0x%02x)

assistant: ```c
void print_media(unsigned char mediatype) {
  switch (mediatype) {
  case 0xf0:
    printf("Generic media type (0xf0)");
    break;
  case 0xf8:
    printf("Hard disk (0xf8)");
    break;
  case 0xf9:
    printf("3.5\" double sided 720k or 5.25 double sided 1.2MB (0xf9)");
    break;
  case 0xfa:
    printf("5.25\" single sided 320k (0xfa)");
    break;
  case 0xfb:
    printf("3.5\" double sided 640k (0xfb)");
    break;
  case 0xfc:
    printf("5.25\" single sided 180k (0xfc)");
    break;
  case 0xfd:
    printf("5.25\" double sided 360k (0xfd)");
    break;
  case 0xfe:
    printf("5.25\" single sided 180k (0xfe)");
    break;
  case 0xff:
    printf("5.25\" double sided 320k (0xff)");
    break;
  default:
    printf("Unknown (0x%02x)", mediatype);
    break;
  }
}
```