user: What is the c source code of the assembly code below:

```asm
<elm_menu>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,%eax
  mov    %ax,-0x4(%rbp)
  lea    D358(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D500(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D358(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movswl -0x4(%rbp),%eax
  cmp    $0xb,%eax
  ja     L48
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D744(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D744(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D463(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D994(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D943(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D188(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1024(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D991(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D746(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D976(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D414(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D737(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L48
  lea    D1160(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D755(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D943(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D188(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1024(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D991(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D746(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D976(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D414(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D737(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L48
  lea    D1160(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D994(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D315(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D188(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1024(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D991(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D746(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D976(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D414(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D737(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L48
  lea    D1160(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D994(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D943(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D140(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1024(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D991(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D746(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D976(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D414(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D737(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L48
  lea    D1160(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D994(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D943(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D188(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D594(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D991(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D746(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D976(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D414(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D737(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L48
  lea    D1160(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D994(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D943(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D188(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1024(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D550(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D746(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D976(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D414(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D737(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L48
  lea    D1160(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D994(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D943(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D188(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1024(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D991(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D578(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D976(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D414(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D737(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L48
  lea    D1160(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D994(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D943(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D188(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1024(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D991(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D746(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D466(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D976(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D414(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D737(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L48
  lea    D1160(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D994(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D943(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D188(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1024(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D991(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D746(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1209(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D414(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D737(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L48
  lea    D1160(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D994(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D943(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D188(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1024(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D991(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D746(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D976(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D582(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D737(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L48
  lea    D1160(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D994(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D943(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D188(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D1024(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D991(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D746(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D976(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D414(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D99(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  nop
L48:
  nop
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D358
type_infered: string
name: unpack_data
arguments: data_tag: D500
type_infered: string
name: unpack_data
arguments: data_tag: D463
type_infered: string
name: unpack_data
arguments: data_tag: D994
type_infered: string
name: unpack_data
arguments: data_tag: D943
type_infered: string
name: unpack_data
arguments: data_tag: D188
type_infered: string
name: unpack_data
arguments: data_tag: D1024
type_infered: string
name: unpack_data
arguments: data_tag: D991
type_infered: string
name: unpack_data
arguments: data_tag: D746
type_infered: string
name: unpack_data
arguments: data_tag: D68
type_infered: string
name: unpack_data
arguments: data_tag: D976
type_infered: string
name: unpack_data
arguments: data_tag: D414
type_infered: string
name: unpack_data
arguments: data_tag: D737
type_infered: string
name: unpack_data
arguments: data_tag: D1160
type_infered: string
name: unpack_data
arguments: data_tag: D755
type_infered: string
name: unpack_data
arguments: data_tag: D315
type_infered: string
name: unpack_data
arguments: data_tag: D140
type_infered: string
name: unpack_data
arguments: data_tag: D594
type_infered: string
name: unpack_data
arguments: data_tag: D550
type_infered: string
name: unpack_data
arguments: data_tag: D578
type_infered: string
name: unpack_data
arguments: data_tag: D466
type_infered: string
name: unpack_data
arguments: data_tag: D1209
type_infered: string
name: unpack_data
arguments: data_tag: D582
type_infered: string
name: unpack_data
arguments: data_tag: D99
type_infered: string

tool: D358: 
	****************************************

tool: D500: 
	*************Menu***********************

tool: D463: 
	->initialiser liste

tool: D994: 
	  Taille de la liste

tool: D943: 
	  inserer dans la liste

tool: D188: 
	  supprimer un element

tool: D1024: 
	  supprimer tous les element

tool: D991: 
	  Acceder un element

tool: D746: 
	  Afficher la liste

tool: D68: 
	  le maximum

tool: D976: 
	  Somme des entiers de la liste

tool: D414: 
	  rechercher une valeur

tool: D737: 
	  quitter

tool: D1160: 
	  initialiser liste

tool: D755: 
	->Taille de la liste

tool: D315: 
	->inserer dans la liste

tool: D140: 
	->supprimer un element

tool: D594: 
	->supprimer tous les element

tool: D550: 
	->Acceder un element

tool: D578: 
	->Afficher la liste

tool: D466: 
	->le maximum

tool: D1209: 
	->Somme des entiers de la liste

tool: D582: 
	->rechercher une valeur

tool: D99: 
	->quitter

assistant: ```c
void elm_menu(short choix) {
  printf("\n\t****************************************");
  printf("\n\t*************Menu***********************");
  printf("\n\t****************************************");
  switch (choix) {
  case 1:
    printf("\n\t->initialiser liste");
    printf("\n\t  Taille de la liste");
    printf("\n\t  inserer dans la liste");
    printf("\n\t  supprimer un element");
    printf("\n\t  supprimer tous les element");
    printf("\n\t  Acceder un element");
    printf("\n\t  Afficher la liste");
    printf("\n\t  le maximum");
    printf("\n\t  Somme des entiers de la liste");
    printf("\n\t  rechercher une valeur");
    printf("\n\t  quitter");
    break;
  case 2:
    printf("\n\t  initialiser liste");
    printf("\n\t->Taille de la liste");
    printf("\n\t  inserer dans la liste");
    printf("\n\t  supprimer un element");
    printf("\n\t  supprimer tous les element");
    printf("\n\t  Acceder un element");
    printf("\n\t  Afficher la liste");
    printf("\n\t  le maximum");
    printf("\n\t  Somme des entiers de la liste");
    printf("\n\t  rechercher une valeur");
    printf("\n\t  quitter");
    break;
  case 3:
    printf("\n\t  initialiser liste");
    printf("\n\t  Taille de la liste");
    printf("\n\t->inserer dans la liste");
    printf("\n\t  supprimer un element");
    printf("\n\t  supprimer tous les element");
    printf("\n\t  Acceder un element");
    printf("\n\t  Afficher la liste");
    printf("\n\t  le maximum");
    printf("\n\t  Somme des entiers de la liste");
    printf("\n\t  rechercher une valeur");
    printf("\n\t  quitter");
    break;
  case 4:
    printf("\n\t  initialiser liste");
    printf("\n\t  Taille de la liste");
    printf("\n\t  inserer dans la liste");
    printf("\n\t->supprimer un element");
    printf("\n\t  supprimer tous les element");
    printf("\n\t  Acceder un element");
    printf("\n\t  Afficher la liste");
    printf("\n\t  le maximum");
    printf("\n\t  Somme des entiers de la liste");
    printf("\n\t  rechercher une valeur");
    printf("\n\t  quitter");
    break;
  case 5:
    printf("\n\t  initialiser liste");
    printf("\n\t  Taille de la liste");
    printf("\n\t  inserer dans la liste");
    printf("\n\t  supprimer un element");
    printf("\n\t->supprimer tous les element");
    printf("\n\t  Acceder un element");
    printf("\n\t  Afficher la liste");
    printf("\n\t  le maximum");
    printf("\n\t  Somme des entiers de la liste");
    printf("\n\t  rechercher une valeur");
    printf("\n\t  quitter");
    break;
  case 6:
    printf("\n\t  initialiser liste");
    printf("\n\t  Taille de la liste");
    printf("\n\t  inserer dans la liste");
    printf("\n\t  supprimer un element");
    printf("\n\t  supprimer tous les element");
    printf("\n\t->Acceder un element");
    printf("\n\t  Afficher la liste");
    printf("\n\t  le maximum");
    printf("\n\t  Somme des entiers de la liste");
    printf("\n\t  rechercher une valeur");
    printf("\n\t  quitter");
    break;
  case 7:
    printf("\n\t  initialiser liste");
    printf("\n\t  Taille de la liste");
    printf("\n\t  inserer dans la liste");
    printf("\n\t  supprimer un element");
    printf("\n\t  supprimer tous les element");
    printf("\n\t  Acceder un element");
    printf("\n\t->Afficher la liste");
    printf("\n\t  le maximum");
    printf("\n\t  Somme des entiers de la liste");
    printf("\n\t  rechercher une valeur");
    printf("\n\t  quitter");
    break;
  case 8:
    printf("\n\t  initialiser liste");
    printf("\n\t  Taille de la liste");
    printf("\n\t  inserer dans la liste");
    printf("\n\t  supprimer un element");
    printf("\n\t  supprimer tous les element");
    printf("\n\t  Acceder un element");
    printf("\n\t  Afficher la liste");
    printf("\n\t->le maximum");
    printf("\n\t  Somme des entiers de la liste");
    printf("\n\t  rechercher une valeur");
    printf("\n\t  quitter");
    break;
  case 9:
    printf("\n\t  initialiser liste");
    printf("\n\t  Taille de la liste");
    printf("\n\t  inserer dans la liste");
    printf("\n\t  supprimer un element");
    printf("\n\t  supprimer tous les element");
    printf("\n\t  Acceder un element");
    printf("\n\t  Afficher la liste");
    printf("\n\t  le maximum");
    printf("\n\t->Somme des entiers de la liste");
    printf("\n\t  rechercher une valeur");
    printf("\n\t  quitter");
    break;
  case 10:
    printf("\n\t  initialiser liste");
    printf("\n\t  Taille de la liste");
    printf("\n\t  inserer dans la liste");
    printf("\n\t  supprimer un element");
    printf("\n\t  supprimer tous les element");
    printf("\n\t  Acceder un element");
    printf("\n\t  Afficher la liste");
    printf("\n\t  le maximum");
    printf("\n\t  Somme des entiers de la liste");
    printf("\n\t->rechercher une valeur");
    printf("\n\t  quitter");
    break;
  case 11:
    printf("\n\t  initialiser liste");
    printf("\n\t  Taille de la liste");
    printf("\n\t  inserer dans la liste");
    printf("\n\t  supprimer un element");
    printf("\n\t  supprimer tous les element");
    printf("\n\t  Acceder un element");
    printf("\n\t  Afficher la liste");
    printf("\n\t  le maximum");
    printf("\n\t  Somme des entiers de la liste");
    printf("\n\t  rechercher une valeur");
    printf("\n\t->quitter");
    break;
  }
}
```