user: 下面的汇编指令对应的C源代码是什么：

```asm
<f_calculate>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %edi,-0x24(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x24(%rbp)
  lea    D19(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x14(%rbp),%rax
  mov    %rax,%rsi
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    D17(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <system@plt>
  mov    -0x14(%rbp),%eax
  cmp    $0x1,%eax
  jne    L63
  mov    $0x0,%eax
  call   <first_f@plt>
  jmp    L33
L63:
  mov    -0x14(%rbp),%eax
  cmp    $0x2,%eax
  jne    L171
  mov    $0x0,%eax
  call   <second_f@plt>
  jmp    L33
L171:
  mov    -0x14(%rbp),%eax
  cmp    $0x3,%eax
  jne    L92
  mov    $0x0,%eax
  call   <third_f@plt>
  jmp    L33
L92:
  mov    -0x14(%rbp),%eax
  cmp    $0x4,%eax
  jne    L129
  mov    $0x0,%eax
  call   <fourth_f@plt>
  jmp    L33
L129:
  mov    -0x14(%rbp),%eax
  cmp    $0x5,%eax
  jne    L152
  mov    $0x0,%eax
  call   <fifth_f@plt>
  jmp    L33
L152:
  mov    -0x14(%rbp),%eax
  cmp    $0x6,%eax
  jne    L157
  mov    $0x0,%eax
  call   <sixth_f@plt>
  jmp    L33
L157:
  mov    -0x14(%rbp),%eax
  cmp    $0x7,%eax
  jne    L10
  movl   $0x0,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <eighth_f@plt>
  jmp    L33
L10:
  mov    -0x14(%rbp),%eax
  cmp    $0x8,%eax
  jne    L75
  movl   $0x1,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  mov    %eax,%edi
  mov    $0x0,%eax
  call   <eighth_f@plt>
  jmp    L33
L75:
  mov    -0x14(%rbp),%eax
  test   %eax,%eax
  jne    L42
  lea    D14(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  lea    D33(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0xffffffff,-0x24(%rbp)
  jmp    L33
L42:
  mov    $0xa,%edi
  call   <putchar@plt>
L33:
  mov    $0x0,%eax
  call   <clear_s@plt>
  mov    -0x24(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L54
  call   <__stack_chk_fail@plt>
L54:
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D19
datatype: string
name: read_data
arguments: label: D29
datatype: string
name: read_data
arguments: label: D17
datatype: string
name: read_data
arguments: label: D14
datatype: string
name: read_data
arguments: label: D33
datatype: string

tool: D19: ENTER NEW SELECTION : 

tool: D29: %d

tool: D17: cls

tool: D14: Thanks for using this program

tool: D33: EAP / exercise 1 / theme 4

assistant: ```c
int f_calculate(i) {
  i = 0;
  int a_num;
  printf("ENTER NEW SELECTION : ");
  scanf("%d", &a_num);
  system("cls");
  if (a_num == 1) {
    first_f();
  } else if (a_num == 2) {
    second_f();
  } else if (a_num == 3) {
    third_f();
  } else if (a_num == 4) {
    fourth_f();
  } else if (a_num == 5) {
    fifth_f();
  } else if (a_num == 6) {
    sixth_f();
  } else if (a_num == 7) {
    int show = 0;
    eighth_f(show);
  } else if (a_num == 8) {
    int show = 1;
    eighth_f(show);
  } else if (a_num == 0) {
    printf("Thanks for using this program\n");
    printf("EAP / exercise 1 / theme 4\n");
    i = -1;
  } else {
    printf("\n");
  }
  clear_s();
  return i;
}
```