user: Translate the below assembly code into C programming language:

```asm
<main>:
  endbr64
  push   %r15
  mov    $0x100,%edi
  lea    D45(%rip),%r15
  push   %r14
  lea    D279(%rip),%r14
  push   %r13
  lea    D152(%rip),%r13
  push   %r12
  lea    D136(%rip),%r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  call   <malloc@plt>
  lea    D229(%rip),%rdi
  mov    %rax,%rbx
  call   <printf@plt>
  nopw   0x0(%rax,%rax,1)
L88:
  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     L53
  lea    D147(%rip),%rdi
  xor    %ebp,%ebp
  call   <printf@plt>
L53:
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L51
  lea    D86(%rip),%rdi
  call   <printf@plt>
L51:
  lea    D232(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L37
  lea    D82(%rip),%rdi
  call   <printf@plt>
  lea    D269(%rip),%rdi
  call   <printf@plt>
  lea    D262(%rip),%rdi
  call   <printf@plt>
  lea    D235(%rip),%rdi
  call   <printf@plt>
  lea    D37(%rip),%rdi
  call   <printf@plt>
  lea    D260(%rip),%rdi
  call   <printf@plt>
  lea    D115(%rip),%rdi
  call   <printf@plt>
  lea    D34(%rip),%rdi
  call   <printf@plt>
L37:
  lea    D35(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L75
  lea    D72(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <es1@plt>
L75:
  lea    D172(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L58
  lea    D275(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <es2@plt>
L58:
  lea    D203(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L90
  lea    D102(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <es3@plt>
L90:
  lea    D103(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L97
  lea    D111(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <es4@plt>
L97:
  lea    D248(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L61
  lea    D198(%rip),%rdi
  call   <printf@plt>
  mov    $0x1,%edi
  call   <es5@plt>
L61:
  lea    D27(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L12
  lea    D205(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <es6@plt>
L12:
  lea    D23(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L28
  xor    %eax,%eax
  call   <es_random@plt>
L28:
  test   %ebp,%ebp
  jne    L88
  add    $0x8,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: extract_symbolic_data
arguments: label: D45
type_infered: string
name: extract_symbolic_data
arguments: label: D279
type_infered: string
name: extract_symbolic_data
arguments: label: D152
type_infered: string
name: extract_symbolic_data
arguments: label: D136
type_infered: string
name: extract_symbolic_data
arguments: label: D229
type_infered: string
name: extract_symbolic_data
arguments: label: D147
type_infered: string
name: extract_symbolic_data
arguments: label: D86
type_infered: string
name: extract_symbolic_data
arguments: label: D232
type_infered: string
name: extract_symbolic_data
arguments: label: D82
type_infered: string
name: extract_symbolic_data
arguments: label: D269
type_infered: string
name: extract_symbolic_data
arguments: label: D262
type_infered: string
name: extract_symbolic_data
arguments: label: D235
type_infered: string
name: extract_symbolic_data
arguments: label: D37
type_infered: string
name: extract_symbolic_data
arguments: label: D260
type_infered: string
name: extract_symbolic_data
arguments: label: D115
type_infered: string
name: extract_symbolic_data
arguments: label: D34
type_infered: string
name: extract_symbolic_data
arguments: label: D35
type_infered: string
name: extract_symbolic_data
arguments: label: D72
type_infered: string
name: extract_symbolic_data
arguments: label: D172
type_infered: string
name: extract_symbolic_data
arguments: label: D275
type_infered: string
name: extract_symbolic_data
arguments: label: D203
type_infered: string
name: extract_symbolic_data
arguments: label: D102
type_infered: string
name: extract_symbolic_data
arguments: label: D103
type_infered: string
name: extract_symbolic_data
arguments: label: D111
type_infered: string
name: extract_symbolic_data
arguments: label: D248
type_infered: string
name: extract_symbolic_data
arguments: label: D198
type_infered: string
name: extract_symbolic_data
arguments: label: D27
type_infered: string
name: extract_symbolic_data
arguments: label: D205
type_infered: string
name: extract_symbolic_data
arguments: label: D23
type_infered: string

tool: D45: :c> 

tool: D279: %s

tool: D152: quit

tool: D136: windows

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


tool: D147: Bye Bye! See you later! 


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


tool: D232: menu

tool: D82: Action:
 

tool: D269: 	 es1 -> see result of es1


tool: D262: 	 es2 -> see result of es2


tool: D235: 	 es3 -> see result of es3


tool: D37: 	 es4 -> see result of es4


tool: D260: 	 es5 -> see result of es5


tool: D115: 	 es6 -> see result of es6


tool: D34: 	 random -> generate new file


tool: D35: es1

tool: D72: Ris es1: 


tool: D172: es2

tool: D275: Ris es2: 


tool: D203: es3

tool: D102: Ris es3: 


tool: D103: es4

tool: D111: Ris es4: 


tool: D248: es5

tool: D198: Ris es5: 


tool: D27: es6

tool: D205: Ris es6: 


tool: D23: 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;
}
```