user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<menu>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  mov    %rsi,%rbp
  lea    D22(%rip),%rdi
  call   <printf@plt>
  lea    D79(%rip),%rdi
  call   <printf@plt>
  lea    D114(%rip),%rdi
  call   <printf@plt>
  lea    D21(%rip),%rdi
  call   <printf@plt>
  lea    D18(%rip),%rdi
  call   <printf@plt>
  lea    D125(%rip),%rdi
  call   <printf@plt>
  lea    D121(%rip),%rdi
  call   <printf@plt>
  lea    D39(%rip),%rdi
  call   <printf@plt>
  lea    D13(%rip),%rdi
  call   <printf@plt>
  lea    D10(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rsi
  lea    D86(%rip),%r12
  mov    %r12,%rdi
  call   <scanf@plt>
  lea    D6(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rsi
  mov    %r12,%rdi
  call   <scanf@plt>
  cmpl   $0x7,(%rbx)
  ja     L55
  mov    (%rbx),%eax
  lea    D129(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  movl   $0x2,(%rbx)
L14:
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  movl   $0x3,(%rbx)
  jmp    L14
  movl   $0x4,(%rbx)
  jmp    L14
  movl   $0x6,(%rbx)
  jmp    L14
  movl   $0x8,(%rbx)
  jmp    L14
  movl   $0xa,(%rbx)
  jmp    L14
  movl   $0x14,(%rbx)
  jmp    L14
L55:
  lea    D26(%rip),%rdi
  call   <printf@plt>
  jmp    L14
```

tool_calls: name: parse_data
arguments: data_label: D22
datatype: string
name: parse_data
arguments: data_label: D79
datatype: string
name: parse_data
arguments: data_label: D114
datatype: string
name: parse_data
arguments: data_label: D21
datatype: string
name: parse_data
arguments: data_label: D18
datatype: string
name: parse_data
arguments: data_label: D125
datatype: string
name: parse_data
arguments: data_label: D121
datatype: string
name: parse_data
arguments: data_label: D39
datatype: string
name: parse_data
arguments: data_label: D13
datatype: string
name: parse_data
arguments: data_label: D10
datatype: string
name: parse_data
arguments: data_label: D86
datatype: string
name: parse_data
arguments: data_label: D6
datatype: string
name: parse_data
arguments: data_label: D26
datatype: string

tool: D22: 

-----LANCIO DADI-----



tool: D79: Selezionare il dado da lanciare:


tool: D114: 	1) D2 - Due facce


tool: D21: 	2) D3 - Tre facce


tool: D18: 	3) D4 - Quattro facce


tool: D125: 	4) D6 - Sei facce


tool: D121: 	5) D8 - Otto facce


tool: D39: 	6) D10- Dieci facce


tool: D13: 	7) D20- Venti facce


tool: D10: La tua scelta: 

tool: D86: %i

tool: D6: Quanti tiri? 

tool: D26: Dado non regolamentare. Terminato.



assistant: ```c
void menu(int *dado, int *tiri) {
  printf("\n\n-----LANCIO DADI-----\n\n");
  printf("Selezionare il dado da lanciare:\n");
  printf("\t1) D2 - Due facce\n");
  printf("\t2) D3 - Tre facce\n");
  printf("\t3) D4 - Quattro facce\n");
  printf("\t4) D6 - Sei facce\n");
  printf("\t5) D8 - Otto facce\n");
  printf("\t6) D10- Dieci facce\n");
  printf("\t7) D20- Venti facce\n");
  printf("La tua scelta: ");
  scanf("%i", dado);
  printf("Quanti tiri? ");
  scanf("%i", tiri);
  switch (*dado) {
  case 1:
    *dado = 2;
    break;
  case 2:
    *dado = 3;
    break;
  case 3:
    *dado = 4;
    break;
  case 4:
    *dado = 6;
    break;
  case 5:
    *dado = 8;
    break;
  case 6:
    *dado = 10;
    break;
  case 7:
    *dado = 20;
    break;
  default:
    printf("Dado non regolamentare. Terminato.\n\n");
    return;
    break;
  }
}
```