user: Demonstrate the C code that generates the assembly output below:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    -0xc(%rbp),%rax
  mov    %rax,%rsi
  lea    D68(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0xc(%rbp),%eax
  cmp    $0x4f,%eax
  jle    L170
  lea    D6(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L132
L170:
  mov    -0xc(%rbp),%eax
  cmp    $0x4a,%eax
  jle    L10
  lea    D57(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L132
L10:
  mov    -0xc(%rbp),%eax
  cmp    $0x45,%eax
  jle    L106
  lea    D76(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L132
L106:
  mov    -0xc(%rbp),%eax
  cmp    $0x40,%eax
  jle    L68
  lea    D47(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L132
L68:
  mov    -0xc(%rbp),%eax
  cmp    $0x3b,%eax
  jle    L107
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L132
L107:
  mov    -0xc(%rbp),%eax
  cmp    $0x36,%eax
  jle    L18
  lea    D2(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L132
L18:
  mov    -0xc(%rbp),%eax
  cmp    $0x31,%eax
  jle    L89
  lea    D31(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L132
L89:
  mov    -0xc(%rbp),%eax
  cmp    $0x2c,%eax
  jle    L30
  lea    D17(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L132
L30:
  mov    -0xc(%rbp),%eax
  cmp    $0x27,%eax
  jle    L86
  lea    D13(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L132
L86:
  lea    D52(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L132:
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L104
  call   <__stack_chk_fail@plt>
L104:
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D68
type_infered: string
name: extract_symbolic_data
arguments: data_label: D6
type_infered: string
name: extract_symbolic_data
arguments: data_label: D57
type_infered: string
name: extract_symbolic_data
arguments: data_label: D76
type_infered: string
name: extract_symbolic_data
arguments: data_label: D47
type_infered: string
name: extract_symbolic_data
arguments: data_label: D27
type_infered: string
name: extract_symbolic_data
arguments: data_label: D2
type_infered: string
name: extract_symbolic_data
arguments: data_label: D31
type_infered: string
name: extract_symbolic_data
arguments: data_label: D17
type_infered: string
name: extract_symbolic_data
arguments: data_label: D13
type_infered: string
name: extract_symbolic_data
arguments: data_label: D52
type_infered: string

tool: D68: %d

tool: D6: A+

tool: D57: The result is A

tool: D76: The result is A-

tool: D47: The result is B+

tool: D27: The result is B

tool: D2: The result is B-

tool: D31: The result is C+

tool: D17: The result is C

tool: D13: The result is D

tool: D52: The result is FAIL

assistant: ```c
int main() {
  int mark;
  scanf("%d", &mark);
  if (mark >= 80)
    printf("A+");
  else if (mark >= 75)
    printf("The result is A");
  else if (mark >= 70)
    printf("The result is A-");
  else if (mark >= 65)
    printf("The result is B+");
  else if (mark >= 60)
    printf("The result is B");
  else if (mark >= 55)
    printf("The result is B-");
  else if (mark >= 50)
    printf("The result is C+");
  else if (mark >= 45)
    printf("The result is C");
  else if (mark >= 40)
    printf("The result is D");
  else
    printf("The result is FAIL");
  return 0;
}
```