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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x1,-0xc(%rbp)
  lea    D88(%rip),%rax
  mov    %rax,%rsi
  lea    D35(%rip),%rax
  mov    %rax,%rdi
  call   <InitialisationAvecService@plt>
  cmp    $0x1,%eax
  je     L127
  lea    D80(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x0,%edi
  call   <exit@plt>
  jmp    L127
L39:
  lea    D13(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D63(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D67(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D81(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L123
L24:
  lea    D81(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <vider_buffer@plt>
L123:
  lea    -0x10(%rbp),%rax
  mov    %rax,%rsi
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  cmp    $0x1,%eax
  jne    L24
  mov    $0x0,%eax
  call   <vider_buffer@plt>
  mov    -0x10(%rbp),%eax
  cmp    $0x3,%eax
  je     L23
  cmp    $0x3,%eax
  jg     L104
  cmp    $0x1,%eax
  je     L67
  cmp    $0x2,%eax
  je     L52
  jmp    L104
L67:
  mov    $0x0,%eax
  call   <menu_reservation@plt>
  jmp    L83
L52:
  mov    $0x0,%eax
  call   <menu_enregistrement@plt>
  jmp    L83
L23:
  movl   $0x0,-0xc(%rbp)
  jmp    L83
L104:
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L83:
  movl   $0x63,-0x10(%rbp)
L127:
  cmpl   $0x0,-0xc(%rbp)
  jne    L39
  mov    $0x0,%eax
  call   <Terminaison@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L15
  call   <__stack_chk_fail@plt>
L15:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D88
type: string
name: retrieve_data
arguments: data_tag: D35
type: string
name: retrieve_data
arguments: data_tag: D80
type: string
name: retrieve_data
arguments: data_tag: D13
type: string
name: retrieve_data
arguments: data_tag: D63
type: string
name: retrieve_data
arguments: data_tag: D67
type: string
name: retrieve_data
arguments: data_tag: D81
type: string
name: retrieve_data
arguments: data_tag: D68
type: string
name: retrieve_data
arguments: data_tag: D7
type: string

tool: D88: 12321

tool: D35: 127.0.0.1

tool: D80: Erreur d'initialisation


tool: D13: 



		**** MENU ****

tool: D63: 
	------------------------------

tool: D67: 
	1. Reserver une chambre 
	2. S'enregistrer en tant qu'hotel
	3. Quitter


tool: D81: 

 Entrez votre choix: 

tool: D68: %1d

tool: D7: 
Selection invalide ... veuillez reesayer.


assistant: ```c
int main() {
  int choix;
  int fini = 1;
  if (InitialisationAvecService("127.0.0.1", "12321") != 1) {
    printf("Erreur d'initialisation\n");
    exit(0);
  }
  while (fini) {
    printf("\n\n\n\n\t\t**** MENU ****");
    printf("\n\t------------------------------");
    printf("\n\t1. Reserver une chambre \n\t2. S'enregistrer en tant qu'hotel\n\t3. Quitter\n");
    printf("\n\n Entrez votre choix: ");
    while (scanf("%1d", &choix) != 1) {
      printf("\n\n Entrez votre choix: ");
      vider_buffer();
    }
    vider_buffer();
    switch (choix) {
    case 1:
      menu_reservation();
      break;
    case 2:
      menu_enregistrement();
      break;
    case 3:
      fini = 0;
      break;
    default:
      printf("\nSelection invalide ... veuillez reesayer.\n");
    }
    choix = 99;
  }
  Terminaison();
  return 0;
}
```