user: Converte this assembly snippet into its equivalent C code:

```asm
<showMenu>:
  endbr64
  sub    $0x8,%rsp
  lea    D108(%rip),%rdi
  call   <system@plt>
  lea    D8(%rip),%rdi
  call   <printf@plt>
  lea    D110(%rip),%rdi
  call   <printf@plt>
  lea    D56(%rip),%rdi
  call   <printf@plt>
  lea    D101(%rip),%rdi
  call   <printf@plt>
  lea    D28(%rip),%rdi
  call   <printf@plt>
  lea    D27(%rip),%rdi
  call   <printf@plt>
  lea    D139(%rip),%rdi
  call   <printf@plt>
  lea    D65(%rip),%rdi
  call   <printf@plt>
  lea    D45(%rip),%rdi
  call   <printf@plt>
  lea    D52(%rip),%rdi
  call   <printf@plt>
  lea    D82(%rip),%rdi
  call   <printf@plt>
  lea    D22(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getch@plt>
  sub    $0x31,%eax
  cmp    $0x4,%eax
  ja     L4
  lea    D128(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax)
  xor    %eax,%eax
  add    $0x8,%rsp
  jmp    10e0 <doInOrder@plt>
  nopl   0x0(%rax,%rax,1)
  xor    %eax,%eax
  add    $0x8,%rsp
  jmp    1110 <doShowHeight@plt>
  nopl   0x0(%rax,%rax,1)
  xor    %eax,%eax
  add    $0x8,%rsp
  jmp    10d0 <doInsert@plt>
  nopl   0x0(%rax,%rax,1)
  xor    %eax,%eax
  add    $0x8,%rsp
  jmp    1120 <doDelete@plt>
  nopl   0x0(%rax,%rax,1)
  xor    %eax,%eax
  add    $0x8,%rsp
  jmp    1130 <doSearch@plt>
L4:
  xor    %edi,%edi
  add    $0x8,%rsp
  jmp    1150 <exit@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D108
type: string
name: disassemble_data
arguments: tag: D8
type: string
name: disassemble_data
arguments: tag: D110
type: string
name: disassemble_data
arguments: tag: D56
type: string
name: disassemble_data
arguments: tag: D101
type: string
name: disassemble_data
arguments: tag: D28
type: string
name: disassemble_data
arguments: tag: D27
type: string
name: disassemble_data
arguments: tag: D139
type: string
name: disassemble_data
arguments: tag: D65
type: string
name: disassemble_data
arguments: tag: D45
type: string
name: disassemble_data
arguments: tag: D52
type: string
name: disassemble_data
arguments: tag: D82
type: string
name: disassemble_data
arguments: tag: D22
type: string

tool: D108: cls

tool: D8:      ___   ___      _____ ___ ___ ___       


tool: D110:      /_\ \ / / |    |_   _| _ \ __| __|  


tool: D56:     / _ \ - /| |__    | | |   / _|| _|     


tool: D101:    /_/ \_\_/ |____|   |_| |_|_\___|___|  


tool: D28:                      By: Raven G. Duran     


tool: D27: 



tool: D139: (1) Insert a Node


tool: D65: (2) Delete a Node


tool: D45: (3) Search a Node


tool: D52: (4) Print In Order


tool: D82: (5) Show Heights of Root


tool: D22: (6) Exit


assistant: ```c
void showMenu() {
  system("cls");
  printf("     ___   ___      _____ ___ ___ ___       \n");
  printf("     /_\\ \\ / / |    |_   _| _ \\ __| __|  \n");
  printf("    / _ \\ - /| |__    | | |   / _|| _|     \n");
  printf("   /_/ \\_\\_/ |____|   |_| |_|_\\___|___|  \n");
  printf("                     By: Raven G. Duran     \n");
  printf("\n\n");
  printf("(1) Insert a Node\n");
  printf("(2) Delete a Node\n");
  printf("(3) Search a Node\n");
  printf("(4) Print In Order\n");
  printf("(5) Show Heights of Root\n");
  printf("(6) Exit\n");
  switch (getch()) {
  case '1':
    doInsert();
    break;
  case '2':
    doDelete();
    break;
  case '3':
    doSearch();
    break;
  case '4':
    doInOrder();
    break;
  case '5':
    doShowHeight();
    break;
  default:
    exit(0);
  }
}
```