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

```asm
<main>:
  endbr64
  push   %r15
  mov    $0x100,%edi
  lea    D249(%rip),%r15
  push   %r14
  lea    D250(%rip),%r14
  push   %r13
  lea    D57(%rip),%r13
  push   %r12
  lea    D207(%rip),%r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  call   <malloc@plt>
  lea    D152(%rip),%rdi
  mov    %rax,%rbx
  call   <printf@plt>
  nopw   0x0(%rax,%rax,1)
L97:
  mov    %r15,%rdi
  mov    $0x1,%ebp
  call   <printf@plt>
  mov    %rbx,%rsi
  mov    %r14,%rdi
  call   <scanf@plt>
  mov    %r13,%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L99
  lea    D151(%rip),%rdi
  xor    %ebp,%ebp
  call   <printf@plt>
L99:
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L29
  lea    D190(%rip),%rdi
  call   <printf@plt>
L29:
  lea    D267(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L61
  lea    D29(%rip),%rdi
  call   <printf@plt>
  lea    D167(%rip),%rdi
  call   <printf@plt>
  lea    D241(%rip),%rdi
  call   <printf@plt>
  lea    D137(%rip),%rdi
  call   <printf@plt>
  lea    D96(%rip),%rdi
  call   <printf@plt>
  lea    D178(%rip),%rdi
  call   <printf@plt>
  lea    D186(%rip),%rdi
  call   <printf@plt>
  lea    D98(%rip),%rdi
  call   <printf@plt>
L61:
  lea    D36(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L55
  lea    D142(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <es1@plt>
L55:
  lea    D26(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L91
  lea    D139(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <es2@plt>
L91:
  lea    D43(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L65
  lea    D22(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <es3@plt>
L65:
  lea    D41(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L37
  lea    D180(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <es4@plt>
L37:
  lea    D58(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L49
  lea    D119(%rip),%rdi
  call   <printf@plt>
  mov    $0x1,%edi
  call   <es5@plt>
L49:
  lea    D179(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L95
  lea    D271(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <es6@plt>
L95:
  lea    D84(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L25
  xor    %eax,%eax
  call   <es_random@plt>
L25:
  test   %ebp,%ebp
  jne    L97
  add    $0x8,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: read_data
arguments: label: D249
type_guessed: string
name: read_data
arguments: label: D250
type_guessed: string
name: read_data
arguments: label: D57
type_guessed: string
name: read_data
arguments: label: D207
type_guessed: string
name: read_data
arguments: label: D152
type_guessed: string
name: read_data
arguments: label: D151
type_guessed: string
name: read_data
arguments: label: D190
type_guessed: string
name: read_data
arguments: label: D267
type_guessed: string
name: read_data
arguments: label: D29
type_guessed: string
name: read_data
arguments: label: D167
type_guessed: string
name: read_data
arguments: label: D241
type_guessed: string
name: read_data
arguments: label: D137
type_guessed: string
name: read_data
arguments: label: D96
type_guessed: string
name: read_data
arguments: label: D178
type_guessed: string
name: read_data
arguments: label: D186
type_guessed: string
name: read_data
arguments: label: D98
type_guessed: string
name: read_data
arguments: label: D36
type_guessed: string
name: read_data
arguments: label: D142
type_guessed: string
name: read_data
arguments: label: D26
type_guessed: string
name: read_data
arguments: label: D139
type_guessed: string
name: read_data
arguments: label: D43
type_guessed: string
name: read_data
arguments: label: D22
type_guessed: string
name: read_data
arguments: label: D41
type_guessed: string
name: read_data
arguments: label: D180
type_guessed: string
name: read_data
arguments: label: D58
type_guessed: string
name: read_data
arguments: label: D119
type_guessed: string
name: read_data
arguments: label: D179
type_guessed: string
name: read_data
arguments: label: D271
type_guessed: string
name: read_data
arguments: label: D84
type_guessed: string

tool: D249: :c> 

tool: D250: %s

tool: D57: quit

tool: D207: windows

tool: D152: Hi! This is a simple application made for a little course of C/C++
write menu for evoke this


tool: D151: Bye Bye! See you later! 


tool: D190: It's a fucking malware! Don't use it!


tool: D267: menu

tool: D29: Action:
 

tool: D167: 	 es1 -> see result of es1


tool: D241: 	 es2 -> see result of es2


tool: D137: 	 es3 -> see result of es3


tool: D96: 	 es4 -> see result of es4


tool: D178: 	 es5 -> see result of es5


tool: D186: 	 es6 -> see result of es6


tool: D98: 	 random -> generate new file


tool: D36: es1

tool: D142: Ris es1: 


tool: D26: es2

tool: D139: Ris es2: 


tool: D43: es3

tool: D22: Ris es3: 


tool: D41: es4

tool: D180: Ris es4: 


tool: D58: es5

tool: D119: Ris es5: 


tool: D179: es6

tool: D271: Ris es6: 


tool: D84: random

assistant: ```c
int main() {
  int esc = 1;
  char *command = malloc(256 * sizeof(char));
  printf("Hi! This is a simple application made for a little course of C/C++\n"
         "write menu for evoke this\n");
  while (esc) {
    printf(":c> ");
    scanf("%s", command);
    if (strstr(command, "quit") != NULL) {
      printf("Bye Bye! See you later! \n");
      esc = 0;
    }
    if (strstr(command, "windows") != NULL) {
      printf("It's a fucking malware! Don't use it!\n");
    }
    if (strstr(command, "menu") != NULL) {
      printf("Action:\n ");
      printf("\t es1 -> see result of es1\n");
      printf("\t es2 -> see result of es2\n");
      printf("\t es3 -> see result of es3\n");
      printf("\t es4 -> see result of es4\n");
      printf("\t es5 -> see result of es5\n");
      printf("\t es6 -> see result of es6\n");
      printf("\t random -> generate new file\n");
    }
    if (strstr(command, "es1") != NULL) {
      printf("Ris es1: \n");
      es1();
    }
    if (strstr(command, "es2") != NULL) {
      printf("Ris es2: \n");
      es2();
    }
    if (strstr(command, "es3") != NULL) {
      printf("Ris es3: \n");
      es3();
    }
    if (strstr(command, "es4") != NULL) {
      printf("Ris es4: \n");
      es4();
    }
    if (strstr(command, "es5") != NULL) {
      printf("Ris es5: \n");
      es5(1);
    }
    if (strstr(command, "es6") != NULL) {
      printf("Ris es6: \n");
      es6();
    }
    if (strstr(command, "random") != NULL) {
      es_random();
    }
  }
  return 0;
}
```