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

```asm
<displayMenu>:
  endbr64
  push   %rbp
  lea    D104(%rip),%rbp
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D27(%rip),%rdi
  call   <printf@plt>
  lea    D81(%rip),%rdi
  call   <printf@plt>
  lea    D139(%rip),%rdi
  call   <printf@plt>
  lea    D121(%rip),%rdi
  call   <printf@plt>
  lea    D138(%rip),%rdi
  call   <printf@plt>
  lea    D18(%rip),%rdi
  call   <printf@plt>
  lea    D94(%rip),%rdi
  call   <printf@plt>
  lea    D24(%rip),%rdi
  call   <printf@plt>
  lea    D92(%rip),%rdi
  call   <printf@plt>
  lea    D133(%rip),%rdi
  call   <printf@plt>
  lea    D57(%rip),%rdi
  call   <printf@plt>
  lea    D2(%rip),%rdi
  call   <printf@plt>
  lea    D105(%rip),%rdi
  call   <printf@plt>
  mov    %rbp,%rdi
  pop    %rbp
  jmp    1050 <printf@plt>
```

tool_calls: name: disassemble_data
arguments: label: D104
type: string
name: disassemble_data
arguments: label: D27
type: string
name: disassemble_data
arguments: label: D81
type: string
name: disassemble_data
arguments: label: D139
type: string
name: disassemble_data
arguments: label: D121
type: string
name: disassemble_data
arguments: label: D138
type: string
name: disassemble_data
arguments: label: D18
type: string
name: disassemble_data
arguments: label: D94
type: string
name: disassemble_data
arguments: label: D24
type: string
name: disassemble_data
arguments: label: D92
type: string
name: disassemble_data
arguments: label: D133
type: string
name: disassemble_data
arguments: label: D57
type: string
name: disassemble_data
arguments: label: D2
type: string
name: disassemble_data
arguments: label: D105
type: string

tool: D104: ------------------------------------------------------------------


tool: D27: Choose option (enter the part in brackets)


tool: D81: (I)nsert 	 - insert a new node 


tool: D139: (D)elete 	 - delete the node containing specified value 


tool: D121: delete (A)ll	 - delete the node containing specified value 


tool: D138: (F)ind 		 - ascertain the presence of the value in the tree 


tool: D18: find(M)in 	 - show the minimum of the tree 


tool: D94: findma(X) 	 - show the maximum of the tree 


tool: D24: (P)revious 	 - show the previous item according to the key 


tool: D92: (N)ext 		 - show the next item according to the key 


tool: D133: displa(Y) 	 - display tree (with structured indentation) 


tool: D57: c(L)ear 	 - clear screen (only for in *nix like OS) 


tool: D2: (H)elp 		 - displays this menu:) 


tool: D105: (Q)uit 		 - quit the program 


assistant: ```c
void displayMenu() {
  printf("------------------------------------------------------------------\n");
  printf("Choose option (enter the part in brackets)\n");
  printf("(I)nsert \t - insert a new node \n");
  printf("(D)elete \t - delete the node containing specified value \n");
  printf("delete (A)ll\t - delete the node containing specified value \n");
  printf("(F)ind \t\t - ascertain the presence of the value in the tree \n");
  printf("find(M)in \t - show the minimum of the tree \n");
  printf("findma(X) \t - show the maximum of the tree \n");
  printf("(P)revious \t - show the previous item according to the key \n");
  printf("(N)ext \t\t - show the next item according to the key \n");
  printf("displa(Y) \t - display tree (with structured indentation) \n");
  printf("c(L)ear \t - clear screen (only for in *nix like OS) \n");
  printf("(H)elp \t\t - displays this menu:) \n");
  printf("(Q)uit \t\t - quit the program \n");
  printf("------------------------------------------------------------------\n");
}
```