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

```asm
<main>:
  endbr64
  push   %r15
  lea    D172(%rip),%r15
  push   %r14
  push   %r13
  lea    D268(%rip),%r13
  push   %r12
  lea    D144(%rip),%r12
  push   %rbp
  xor    %ebp,%ebp
  push   %rbx
  lea    D74(%rip),%rbx
  sub    $0x18,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  lea    0x4(%rsp),%r14
  nopl   (%rax)
L57:
  mov    %r12,%rdi
  call   <system@plt>
  lea    D193(%rip),%rdi
  call   <printf@plt>
  lea    D60(%rip),%rdi
  call   <printf@plt>
  lea    D88(%rip),%rdi
  call   <printf@plt>
  lea    D180(%rip),%rdi
  call   <printf@plt>
  lea    D199(%rip),%rdi
  call   <printf@plt>
  lea    D158(%rip),%rdi
  call   <printf@plt>
  lea    D213(%rip),%rdi
  call   <printf@plt>
  lea    D181(%rip),%rdi
  call   <printf@plt>
  lea    D77(%rip),%rdi
  call   <printf@plt>
  lea    D139(%rip),%rdi
  call   <printf@plt>
  lea    D55(%rip),%rdi
  call   <printf@plt>
  lea    D113(%rip),%rdi
  call   <printf@plt>
  lea    D198(%rip),%rdi
  call   <printf@plt>
  lea    D196(%rip),%rdi
  call   <printf@plt>
  lea    D17(%rip),%rdi
  call   <printf@plt>
  lea    D97(%rip),%rdi
  call   <printf@plt>
  lea    D121(%rip),%rdi
  call   <printf@plt>
  lea    D160(%rip),%rdi
  call   <printf@plt>
  lea    D178(%rip),%rdi
  call   <printf@plt>
  lea    D161(%rip),%rdi
  call   <printf@plt>
  lea    D64(%rip),%rdi
  call   <printf@plt>
  mov    %r15,%rdi
  call   <printf@plt>
  lea    D42(%rip),%rdi
  call   <printf@plt>
  mov    %r14,%rsi
  mov    %r13,%rdi
  call   <scanf@plt>
  cmpl   $0xe,0x4(%rsp)
  ja     L57
  mov    0x4(%rsp),%eax
  movslq (%rbx,%rax,4),%rax
  add    %rbx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax)
  lea    D50(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <system@plt>
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L36
  add    $0x18,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
  mov    %rbp,%rdi
  call   <num_students@plt>
  jmp    L57
  nopl   (%rax)
  mov    %rbp,%rdi
  call   <remove_student@plt>
  mov    %rax,%rbp
  jmp    L57
  nopl   0x0(%rax,%rax,1)
  mov    %rbp,%rdi
  call   <add_student@plt>
  mov    %rax,%rbp
  jmp    L57
  mov    %rbp,%rdi
  call   <update_assignments@plt>
  jmp    L57
  nopl   (%rax)
  mov    %rbp,%rdi
  call   <assignment_statistics@plt>
  jmp    L57
  nopl   (%rax)
  mov    %rbp,%rdi
  call   <student_statistics@plt>
  jmp    L57
  nopl   (%rax)
  mov    %rbp,%rdi
  call   <print_nth@plt>
  jmp    L57
  nopl   (%rax)
  mov    %rbp,%rdi
  call   <name_search_print@plt>
  jmp    L57
  nopl   (%rax)
  mov    %rbp,%rdi
  call   <tail_print@plt>
  jmp    L57
  nopl   (%rax)
  mov    %rbp,%rdi
  call   <print_head@plt>
  jmp    L57
  nopl   (%rax)
  mov    %rbp,%rdi
  call   <class_print@plt>
  jmp    L57
  nopl   (%rax)
  mov    %rbp,%rdi
  call   <write_to_file@plt>
  jmp    L57
  nopl   (%rax)
  mov    %rbp,%rdi
  call   <read_from_file@plt>
  mov    %rax,%rdi
  mov    %rax,%rbp
  call   <class_print@plt>
  jmp    L57
L36:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: tag: D172
data_type: string
name: read_data
arguments: tag: D268
data_type: string
name: read_data
arguments: tag: D144
data_type: string
name: read_data
arguments: tag: D193
data_type: string
name: read_data
arguments: tag: D60
data_type: string
name: read_data
arguments: tag: D88
data_type: string
name: read_data
arguments: tag: D180
data_type: string
name: read_data
arguments: tag: D199
data_type: string
name: read_data
arguments: tag: D158
data_type: string
name: read_data
arguments: tag: D213
data_type: string
name: read_data
arguments: tag: D181
data_type: string
name: read_data
arguments: tag: D77
data_type: string
name: read_data
arguments: tag: D139
data_type: string
name: read_data
arguments: tag: D55
data_type: string
name: read_data
arguments: tag: D113
data_type: string
name: read_data
arguments: tag: D198
data_type: string
name: read_data
arguments: tag: D196
data_type: string
name: read_data
arguments: tag: D17
data_type: string
name: read_data
arguments: tag: D97
data_type: string
name: read_data
arguments: tag: D121
data_type: string
name: read_data
arguments: tag: D160
data_type: string
name: read_data
arguments: tag: D178
data_type: string
name: read_data
arguments: tag: D161
data_type: string
name: read_data
arguments: tag: D64
data_type: string
name: read_data
arguments: tag: D42
data_type: string
name: read_data
arguments: tag: D50
data_type: string

tool: D172: 14-- Exit Program



tool: D268: %d

tool: D144: clear

tool: D193: ----------Gradebook Menu----------



tool: D60: Please note: Some functions will require pressing enter 

tool: D88: multiple times
in order to return to this menu.



tool: D180: ------------Read Write------------


tool: D199: 1 -- Load Gradebook from File


tool: D158: 2 -- Write Current Gradebook to File



tool: D213: -------View Grades Statistics-----


tool: D181: 3 -- View Entire Gradebook


tool: D77: 4 -- View the First Student's Information/Assignments


tool: D139: 5 -- View the Last Student's Information/Assignments


tool: D55: 6 -- View a Student's Information/Assignments by Name Search


tool: D113: 7 -- View the n'th Student's Information/Assignments


tool: D198: 8 -- View a specific Student's Statistics


tool: D196: 9 -- View a specific  Assignment's Statistics



tool: D17: ------------Add Grades------------


tool: D97: 10-- Add Assignment/s & Grade/s to Student



tool: D121: ---------Add Remove Students------


tool: D160: 11-- Add a New Student


tool: D178: 12-- Remove a Student



tool: D161: -----------Extra Functions--------


tool: D64: 13-- Display the Number of Students in the Class


tool: D42: Enter Selection: 

tool: D50: 


assistant: ```c
int main(int argc, char **argv) {
  int menuloop = 1;
  struct student *head = NULL;
  while (menuloop != 0) {
    int menuchoice;
    system("clear");
    printf("----------Gradebook Menu----------\n\n");
    printf("Please note: Some functions will require pressing enter ");
    printf("multiple times\nin order to return to this menu.\n\n");
    printf("------------Read Write------------\n");
    printf("1 -- Load Gradebook from File\n");
    printf("2 -- Write Current Gradebook to File\n\n");
    printf("-------View Grades Statistics-----\n");
    printf("3 -- View Entire Gradebook\n");
    printf("4 -- View the First Student's Information/Assignments\n");
    printf("5 -- View the Last Student's Information/Assignments\n");
    printf("6 -- View a Student's Information/Assignments by Name Search\n");
    printf("7 -- View the n'th Student's Information/Assignments\n");
    printf("8 -- View a specific Student's Statistics\n");
    printf("9 -- View a specific  Assignment's Statistics\n\n");
    printf("------------Add Grades------------\n");
    printf("10-- Add Assignment/s & Grade/s to Student\n\n");
    printf("---------Add Remove Students------\n");
    printf("11-- Add a New Student\n");
    printf("12-- Remove a Student\n\n");
    printf("-----------Extra Functions--------\n");
    printf("13-- Display the Number of Students in the Class\n");
    printf("14-- Exit Program\n\n");
    printf("Enter Selection: ");
    scanf("%d", &menuchoice);
    switch (menuchoice) {
    case 1:
      head = read_from_file(head);
      class_print(head);
      break;
    case 2:
      write_to_file(head);
      break;
    case 3:
      class_print(head);
      break;
    case 4:
      print_head(head);
      break;
    case 5:
      tail_print(head);
      break;
    case 6:
      name_search_print(head);
      break;
    case 7:
      print_nth(head);
      break;
    case 8:
      student_statistics(head);
      break;
    case 9:
      assignment_statistics(head);
      break;
    case 10:
      update_assignments(head);
      break;
    case 11:
      head = add_student(head);
      break;
    case 12:
      head = remove_student(head);
      break;
    case 13:
      num_students(head);
      break;
    case 14:
      menuloop = 0;
      break;
    }
  }
  printf("\n");
  system("clear");
  return 0;
}
```