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

```asm
<main>:
  endbr64
  push   %rbp
  lea    D108(%rip),%rdi
  lea    D90(%rip),%rbp
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  movb   $0x20,0x3(%rsp)
  call   <printf@plt>
  lea    0x3(%rsp),%rsi
  mov    %rbp,%rdi
  call   <scanf@plt>
  cmpb   $0x30,0x3(%rsp)
  je     L46
L68:
  xor    %eax,%eax
  call   <getchar@plt>
  lea    D36(%rip),%rdi
  movb   $0x20,0x4(%rsp)
  call   <printf@plt>
  lea    0x4(%rsp),%rsi
  mov    %rbp,%rdi
  call   <scanf@plt>
  movzbl 0x4(%rsp),%eax
  sub    $0x30,%eax
  cmp    $0x1,%al
  jbe    L57
  lea    D52(%rip),%rdi
  call   <printf@plt>
L57:
  xor    %eax,%eax
  call   <getchar@plt>
  lea    D93(%rip),%rdi
  movb   $0x20,0x5(%rsp)
  call   <printf@plt>
  lea    0x5(%rsp),%rsi
  mov    %rbp,%rdi
  call   <scanf@plt>
  movzbl 0x5(%rsp),%eax
  cmp    $0x30,%al
  je     L48
  cmp    $0x39,%al
  je     L48
L80:
  xor    %eax,%eax
  call   <getchar@plt>
  lea    D60(%rip),%rdi
  movb   $0x20,0x6(%rsp)
  call   <printf@plt>
  lea    0x6(%rsp),%rsi
  mov    %rbp,%rdi
  call   <scanf@plt>
  cmpb   $0x30,0x6(%rsp)
  je     L3
  lea    D21(%rip),%rdi
  call   <printf@plt>
L90:
  xor    %eax,%eax
  call   <getchar@plt>
  lea    D74(%rip),%rdi
  movb   $0x20,0x7(%rsp)
  call   <printf@plt>
  lea    0x7(%rsp),%rsi
  mov    %rbp,%rdi
  call   <scanf@plt>
  movzbl 0x7(%rsp),%eax
  cmp    $0x30,%al
  je     L12
  cmp    $0x31,%al
  je     L45
  lea    D52(%rip),%rdi
  call   <printf@plt>
L11:
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L39
  add    $0x10,%rsp
  xor    %eax,%eax
  pop    %rbp
  ret
L3:
  lea    D50(%rip),%rdi
  call   <printf@plt>
  jmp    L90
L48:
  lea    D96(%rip),%rdi
  call   <printf@plt>
  jmp    L80
L45:
  lea    D16(%rip),%rdi
  call   <printf@plt>
  jmp    L11
L12:
  lea    D50(%rip),%rdi
  call   <printf@plt>
  jmp    L11
L46:
  lea    D73(%rip),%rdi
  call   <printf@plt>
  jmp    L68
L39:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: tag: D108
type: string
name: parse_data
arguments: tag: D90
type: string
name: parse_data
arguments: tag: D36
type: string
name: parse_data
arguments: tag: D52
type: string
name: parse_data
arguments: tag: D93
type: string
name: parse_data
arguments: tag: D60
type: string
name: parse_data
arguments: tag: D21
type: string
name: parse_data
arguments: tag: D74
type: string
name: parse_data
arguments: tag: D50
type: string
name: parse_data
arguments: tag: D96
type: string
name: parse_data
arguments: tag: D16
type: string
name: parse_data
arguments: tag: D73
type: string

tool: D108: Digite um numero de 0 a 9 (if simples): 

tool: D90: %c

tool: D36: Digite um numero de 0 a 9 (if com E): 

tool: D52: Opcao digitada diferente de ZERO e UM!


tool: D93: Digite um numero de 0 a 9 (if com OU): 

tool: D60: Digite um numero de 0 a 9 (if com else): 

tool: D21: Opcao digitada diferente de ZERO!


tool: D74: Digite um numero de 0 a 9 (if com else if): 

tool: D50: Opcao digitada igual a ZERO!


tool: D96: Opcao digitada igual a ZERO ou igual a NOVE!


tool: D16: Opcao digitada igual a UM!


tool: D73: Opcao digitada foi ZERO!


assistant: ```c
int main() {
  char opcao = ' ';
  printf("Digite um numero de 0 a 9 (if simples): ");
  scanf("%c", &opcao);
  if (opcao == '0') {
    printf("Opcao digitada foi ZERO!\n");
  }
  getchar();
  char opcao2 = ' ';
  printf("Digite um numero de 0 a 9 (if com E): ");
  scanf("%c", &opcao2);
  if ((opcao2 != '0') && (opcao2 != '1')) {
    printf("Opcao digitada diferente de ZERO e UM!\n");
  }
  getchar();
  char opcao3 = ' ';
  printf("Digite um numero de 0 a 9 (if com OU): ");
  scanf("%c", &opcao3);
  if ((opcao3 == '0') || (opcao3 == '9')) {
    printf("Opcao digitada igual a ZERO ou igual a NOVE!\n");
  }
  getchar();
  char opcao4 = ' ';
  printf("Digite um numero de 0 a 9 (if com else): ");
  scanf("%c", &opcao4);
  if (opcao4 == '0') {
    printf("Opcao digitada igual a ZERO!\n");
  } else {
    printf("Opcao digitada diferente de ZERO!\n");
  }
  getchar();
  char opcao5 = ' ';
  printf("Digite um numero de 0 a 9 (if com else if): ");
  scanf("%c", &opcao5);
  if (opcao5 == '0') {
    printf("Opcao digitada igual a ZERO!\n");
  } else if (opcao5 == '1') {
    printf("Opcao digitada igual a UM!\n");
  } else {
    printf("Opcao digitada diferente de ZERO e UM!\n");
  }
  return 0;
}
```