user: What would the C source look like for the assembly code provided here?

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  jmp    L57
L17:
  lea    D38(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D85(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D8(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D113(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D28(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D107(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  lea    D94(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0xc(%rbp),%eax
  cmp    $0x5,%eax
  ja     L48
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D102(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D102(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    $0x0,%eax
  call   <insertParams@plt>
  jmp    L57
  mov    $0x0,%eax
  call   <calcCPI@plt>
  jmp    L57
  mov    $0x0,%eax
  call   <executionTime@plt>
  jmp    L57
  mov    $0x0,%eax
  call   <mips@plt>
  jmp    L57
L48:
  lea    D19(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L57:
  mov    -0xc(%rbp),%eax
  cmp    $0x5,%eax
  jne    L17
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L45
  call   <__stack_chk_fail@plt>
L45:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D38
data_type: string
name: disassemble_data
arguments: data_tag: D85
data_type: string
name: disassemble_data
arguments: data_tag: D8
data_type: string
name: disassemble_data
arguments: data_tag: D113
data_type: string
name: disassemble_data
arguments: data_tag: D28
data_type: string
name: disassemble_data
arguments: data_tag: D107
data_type: string
name: disassemble_data
arguments: data_tag: D24
data_type: string
name: disassemble_data
arguments: data_tag: D7
data_type: string
name: disassemble_data
arguments: data_tag: D94
data_type: string
name: disassemble_data
arguments: data_tag: D19
data_type: string

tool: D38: 
Menu of Options

tool: D85: 
---------------

tool: D8: 
1) Enter parameters

tool: D113: 
2) Calculate average CPI of a sequence of instructions

tool: D28: 
3) Calculate total execution time of a sequence of instructions

tool: D107: 
4) Calculate MIPS of a sequence of instructions

tool: D24: 
5) Quit



tool: D7: Enter selection: 

tool: D94: %d

tool: D19: 
Please enter a valid input (1-5)

assistant: ```c
int main() {
  int choice;
  while (choice != 5) {
    printf("\nMenu of Options");
    printf("\n---------------");
    printf("\n1) Enter parameters");
    printf("\n2) Calculate average CPI of a sequence of instructions");
    printf("\n3) Calculate total execution time of a sequence of instructions");
    printf("\n4) Calculate MIPS of a sequence of instructions");
    printf("\n5) Quit\n\n");
    printf("Enter selection: ");
    scanf("%d", &choice);
    switch (choice) {
    case 1:
      insertParams();
      break;
    case 2:
      calcCPI();
      break;
    case 3:
      executionTime();
      break;
    case 4:
      mips();
      break;
    case 5:
      break;
    default:
      printf("\nPlease enter a valid input (1-5)");
    }
  }
  return 0;
}
```