user: 请将以下的汇编代码转换成C语言代码:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D41(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  lea    D59(%rip),%rax
  mov    %rax,%rdi
  call   <scanf_s@plt>
  mov    -0xc(%rbp),%eax
  cmp    $0x64,%eax
  jle    L72
  lea    D3(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L12
L72:
  mov    -0xc(%rbp),%eax
  test   %eax,%eax
  jns    L54
  lea    D3(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L12
L54:
  mov    -0xc(%rbp),%eax
  cmp    $0x59,%eax
  jle    L110
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L12
L110:
  mov    -0xc(%rbp),%eax
  cmp    $0x4f,%eax
  jle    L17
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D81(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L12
L17:
  mov    -0xc(%rbp),%eax
  cmp    $0x45,%eax
  jle    L47
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L12
L47:
  mov    -0xc(%rbp),%eax
  cmp    $0x3b,%eax
  jle    L1
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D98(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L12
L1:
  mov    -0xc(%rbp),%eax
  cmp    $0x31,%eax
  jle    L37
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D109(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L12
L37:
  mov    -0xc(%rbp),%eax
  mov    %eax,%esi
  lea    D66(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L12:
  lea    D46(%rip),%rax
  mov    %rax,%rdi
  call   <system@plt>
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L84
  call   <__stack_chk_fail@plt>
L84:
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D41
type_guessed: string
name: parse_data
arguments: data_tag: D59
type_guessed: string
name: parse_data
arguments: data_tag: D3
type_guessed: string
name: parse_data
arguments: data_tag: D0
type_guessed: string
name: parse_data
arguments: data_tag: D81
type_guessed: string
name: parse_data
arguments: data_tag: D42
type_guessed: string
name: parse_data
arguments: data_tag: D98
type_guessed: string
name: parse_data
arguments: data_tag: D109
type_guessed: string
name: parse_data
arguments: data_tag: D66
type_guessed: string
name: parse_data
arguments: data_tag: D46
type_guessed: string

tool: D41: Enter the grade: 

tool: D59: %d

tool: D3: Error!!

tool: D0: %d --> AA


tool: D81: %d --> BA


tool: D42: %d --> BB


tool: D98: %d --> CB


tool: D109: %d --> CC


tool: D66: %d --> FF


tool: D46: pause

assistant: ```c
main() {
  int grade;
  printf("Enter the grade: ");
  scanf_s("%d", &grade);
  if (grade > 100) {
    printf("Error!!\n");
  } else if (grade < 0) {
    printf("Error!!\n");
  } else {
    if (grade >= 90)
      printf("%d --> AA\n", grade);
    else if (grade >= 80)
      printf("%d --> BA\n", grade);
    else if (grade >= 70)
      printf("%d --> BB\n", grade);
    else if (grade >= 60)
      printf("%d --> CB\n", grade);
    else if (grade >= 50)
      printf("%d --> CC\n", grade);
    else
      printf("%d --> FF\n", grade);
  }
  system("pause");
}
```