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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  movl   $0x1,-0x8(%rbp)
  mov    $0x0,%eax
  call   <calculator_operations@plt>
  mov    %eax,-0x4(%rbp)
  jmp    L31
L35:
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D48(%rip),%rax
  mov    %rax,%rsi
  lea    D24(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getch@plt>
  mov    %al,-0x9(%rbp)
  movsbl -0x9(%rbp),%eax
  sub    $0x21,%eax
  cmp    $0x50,%eax
  ja     L11
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D76(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D76(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    $0x0,%eax
  call   <addition@plt>
  jmp    L31
  mov    $0x0,%eax
  call   <subtraction@plt>
  jmp    L31
  mov    $0x0,%eax
  call   <multiplication@plt>
  jmp    L31
  mov    $0x0,%eax
  call   <division@plt>
  jmp    L31
  mov    $0x0,%eax
  call   <modulus@plt>
  jmp    L31
  mov    $0x0,%eax
  call   <factorial@plt>
  jmp    L31
  mov    $0x0,%eax
  call   <power@plt>
  jmp    L31
  mov    $0x0,%eax
  call   <calculator_operations@plt>
  jmp    L31
  mov    $0x0,%edi
  call   <exit@plt>
  jmp    L31
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  call   <system@plt>
  mov    $0x0,%eax
  call   <calculator_operations@plt>
  jmp    L31
L11:
  lea    D40(%rip),%rax
  mov    %rax,%rdi
  call   <system@plt>
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D70(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D90(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D49(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  mov    $0x0,%eax
  call   <calculator_operations@plt>
L31:
  cmpl   $0x0,-0x8(%rbp)
  jne    L35
  mov    $0x0,%eax
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_label: D48
type_infered: string
name: retrieve_data
arguments: data_label: D24
type_infered: string
name: retrieve_data
arguments: data_label: D40
type_infered: string
name: retrieve_data
arguments: data_label: D64
type_infered: string
name: retrieve_data
arguments: data_label: D70
type_infered: string
name: retrieve_data
arguments: data_label: D90
type_infered: string
name: retrieve_data
arguments: data_label: D49
type_infered: string

tool: D48: Enter the calculator Operation you want to do:

tool: D24: %s : 

tool: D40: cls

tool: D64: 
**********You have entered unavailable option

tool: D70: ***********

tool: D90: 
*****Please Enter any one of below available 

tool: D49: options****

assistant: ```c
int main() {
  int X = 1;
  char Calc_oprn;
  int pid = calculator_operations();
  while (X) {
    printf("\n");
    printf("%s : ", "Enter the calculator Operation you want to do:");
    Calc_oprn = getch();
    switch (Calc_oprn) {
    case '+':
      addition();
      break;
    case '-':
      subtraction();
      break;
    case '*':
      multiplication();
      break;
    case '/':
      division();
      break;
    case '?':
      modulus();
      break;
    case '!':
      factorial();
      break;
    case '^':
      power();
      break;
    case 'H':
    case 'h':
      calculator_operations();
      break;
    case 'Q':
    case 'q':
      exit(0);
      break;
    case 'c':
    case 'C':
      system("cls");
      calculator_operations();
      break;
    default:
      system("cls");
      printf("\n**********You have entered unavailable option");
      printf("***********\n");
      printf("\n*****Please Enter any one of below available ");
      printf("options****\n");
      calculator_operations();
    }
  }
}
```