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

```asm
<printswitch>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  cmpl   $0xc,-0x4(%rbp)
  ja     L120
  mov    -0x4(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D40(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D40(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D133(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L122
  lea    D52(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L122
  lea    D11(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L122
  lea    D49(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L122
  lea    D92(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L122
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L122
  lea    D66(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L122
  lea    D59(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L122
  lea    D3(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L122
  lea    D25(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L122
  lea    D145(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L122
  lea    D125(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L122
L120:
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D93(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L122:
  nop
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D133
datatype: string
name: disassemble_data
arguments: data_label: D52
datatype: string
name: disassemble_data
arguments: data_label: D11
datatype: string
name: disassemble_data
arguments: data_label: D49
datatype: string
name: disassemble_data
arguments: data_label: D92
datatype: string
name: disassemble_data
arguments: data_label: D38
datatype: string
name: disassemble_data
arguments: data_label: D66
datatype: string
name: disassemble_data
arguments: data_label: D59
datatype: string
name: disassemble_data
arguments: data_label: D3
datatype: string
name: disassemble_data
arguments: data_label: D25
datatype: string
name: disassemble_data
arguments: data_label: D145
datatype: string
name: disassemble_data
arguments: data_label: D125
datatype: string
name: disassemble_data
arguments: data_label: D93
datatype: string

tool: D133: HAPLOID

tool: D52: DIPLOID

tool: D11: TRIPLOID

tool: D49: TETRAPLOID

tool: D92: PENTAPLOID

tool: D38: HEXAPLOID

tool: D66: SEPTAPLOID

tool: D59: OCTAPLOID

tool: D3: NONAPLOID

tool: D25: DECAPLOID

tool: D145: HENDECAPLOID

tool: D125: DODECAPLOID

tool: D93: %d-PLOID

assistant: ```c
void printswitch(int ploidy) {
  switch (ploidy) {
  case 1:
    printf("HAPLOID");
    break;
  case 2:
    printf("DIPLOID");
    break;
  case 3:
    printf("TRIPLOID");
    break;
  case 4:
    printf("TETRAPLOID");
    break;
  case 5:
    printf("PENTAPLOID");
    break;
  case 6:
    printf("HEXAPLOID");
    break;
  case 7:
    printf("SEPTAPLOID");
    break;
  case 8:
    printf("OCTAPLOID");
    break;
  case 9:
    printf("NONAPLOID");
    break;
  case 10:
    printf("DECAPLOID");
    break;
  case 11:
    printf("HENDECAPLOID");
    break;
  case 12:
    printf("DODECAPLOID");
    break;
  default:
    printf("%d-PLOID", ploidy);
    break;
  }
}
```