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

```asm
<mainMenu>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %edi,%r14d
  lea    D16(%rip),%rbp
  lea    D10(%rip),%rbx
  lea    D45(%rip),%r13
  lea    D7(%rip),%r12
  jmp    L12
L4:
  mov    %r14d,%edi
  call   <start_game@plt>
L12:
  mov    $0x0,%eax
  call   <clear@plt>
  mov    %rbp,%rdi
  call   <printw@plt>
  mov    %rbx,%rdi
  call   <printw@plt>
  mov    %r13,%rdi
  call   <printw@plt>
  mov    %rbx,%rdi
  call   <printw@plt>
  mov    %r12,%rdi
  call   <printw@plt>
  mov    %rbx,%rdi
  call   <printw@plt>
  lea    D79(%rip),%rdi
  call   <printw@plt>
  lea    D12(%rip),%rdi
  call   <printw@plt>
  lea    D4(%rip),%rdi
  call   <printw@plt>
  mov    %rbx,%rdi
  call   <printw@plt>
  mov    %rbp,%rdi
  call   <printw@plt>
  mov    $0x0,%eax
  call   <refresh@plt>
  mov    $0x0,%eax
  call   <getch@plt>
  cmp    $0x32,%al
  je     L15
  cmp    $0x33,%al
  je     L44
  cmp    $0x31,%al
  je     L4
  lea    D39(%rip),%rdi
  call   <printw@plt>
  mov    $0x0,%eax
  call   <refresh@plt>
  jmp    L12
L15:
  mov    $0x0,%eax
  call   <sendHelp@plt>
  jmp    L12
L44:
  lea    D57(%rip),%rdi
  call   <printw@plt>
  mov    $0x0,%eax
  call   <refresh@plt>
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
```

tool_calls: name: read_data
arguments: label: D16
type_infered: string
name: read_data
arguments: label: D10
type_infered: string
name: read_data
arguments: label: D45
type_infered: string
name: read_data
arguments: label: D7
type_infered: string
name: read_data
arguments: label: D79
type_infered: string
name: read_data
arguments: label: D12
type_infered: string
name: read_data
arguments: label: D4
type_infered: string
name: read_data
arguments: label: D39
type_infered: string
name: read_data
arguments: label: D57
type_infered: string

tool: D16: # # # # # # # # # # # # # # #


tool: D10: #                           #


tool: D45: # Welcome to PACMAN ! ! !   #


tool: D7: # Choose an option:         #


tool: D79: # 1. Start Game             #


tool: D12: # 2. Help                   #


tool: D4: # 3. Exit                   #


tool: D39: Wrong option. Try again


tool: D57: Goodbye.....



assistant: ```c
void mainMenu(int server_socket) {
  char choice;
  do {
    clear();
    printw("# # # # # # # # # # # # # # #\n");
    printw("#                           #\n");
    printw("# Welcome to PACMAN ! ! !   #\n");
    printw("#                           #\n");
    printw("# Choose an option:         #\n");
    printw("#                           #\n");
    printw("# 1. Start Game             #\n");
    printw("# 2. Help                   #\n");
    printw("# 3. Exit                   #\n");
    printw("#                           #\n");
    printw("# # # # # # # # # # # # # # #\n");
    refresh();
    choice = getch();
    switch (choice) {
    case '1':
      start_game(server_socket);
      break;
    case '2':
      sendHelp();
      break;
    case '3':
      printw("Goodbye.....\n\n");
      refresh();
      break;
    default:
      printw("Wrong option. Try again\n");
      refresh();
      break;
    }
  } while (choice != '3');
}
```