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

```asm
<main>:
  endbr64
  push   %r15
  mov    $0x100,%edi
  lea    D100(%rip),%r15
  push   %r14
  lea    D332(%rip),%r14
  push   %r13
  lea    D174(%rip),%r13
  push   %r12
  lea    D127(%rip),%r12
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  movabs $0x423acccd420d999a,%rax
  mov    %rax,(%rsp)
  movabs $0x4131999a429b199a,%rax
  mov    %rax,0x8(%rsp)
  movabs $0x3f4000004110a3d7,%rax
  mov    %rax,0x10(%rsp)
  movabs $0x200000001,%rax
  mov    %rax,0x20(%rsp)
  movabs $0x400000003,%rax
  mov    %rax,0x28(%rsp)
  movabs $0x600000005,%rax
  mov    %rax,0x30(%rsp)
  movabs $0x800000007,%rax
  mov    %rax,0x38(%rsp)
  movabs $0xa00000009,%rax
  mov    %rax,0x40(%rsp)
  call   <malloc@plt>
  lea    D359(%rip),%rdi
  mov    %rax,%rbx
  call   <printf@plt>
  nopl   0x0(%rax)
L90:
  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     L112
  lea    D274(%rip),%rdi
  xor    %ebp,%ebp
  call   <printf@plt>
L112:
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L69
  lea    D245(%rip),%rdi
  call   <printf@plt>
L69:
  lea    D71(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L72
  lea    D270(%rip),%rdi
  call   <printf@plt>
  lea    D50(%rip),%rdi
  call   <printf@plt>
  lea    D59(%rip),%rdi
  call   <printf@plt>
  lea    D294(%rip),%rdi
  call   <printf@plt>
  lea    D235(%rip),%rdi
  call   <printf@plt>
  lea    D33(%rip),%rdi
  call   <printf@plt>
  lea    D307(%rip),%rdi
  call   <printf@plt>
  lea    D186(%rip),%rdi
  call   <printf@plt>
  lea    D68(%rip),%rdi
  call   <printf@plt>
  lea    D313(%rip),%rdi
  call   <printf@plt>
L72:
  lea    D149(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L74
  lea    D190(%rip),%rdi
  call   <printf@plt>
  lea    0x20(%rsp),%rdi
  mov    $0xa,%esi
  call   <es1@plt>
L74:
  lea    D80(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L5
  lea    D353(%rip),%rdi
  call   <printf@plt>
  lea    0x20(%rsp),%rdi
  mov    $0xa,%esi
  call   <es2@plt>
L5:
  lea    D201(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L67
  lea    D140(%rip),%rdi
  call   <printf@plt>
  lea    0x20(%rsp),%rdi
  mov    $0xa,%esi
  call   <es3@plt>
L67:
  lea    D120(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L104
  lea    D86(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rdi
  mov    $0x6,%esi
  call   <es4@plt>
L104:
  lea    D21(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L12
  lea    D339(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rdi
  mov    $0x6,%esi
  call   <es5@plt>
L12:
  lea    D105(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L118
  lea    D296(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rdi
  mov    $0x6,%esi
  call   <es6@plt>
L118:
  lea    D124(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L91
  lea    D348(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rdi
  mov    $0x6,%esi
  call   <es7@plt>
L91:
  lea    D203(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L110
  lea    D22(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rdi
  mov    $0x6,%esi
  call   <es8@plt>
L110:
  lea    D336(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L6
  lea    D299(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rdi
  mov    $0x6,%esi
  call   <es9@plt>
L6:
  test   %ebp,%ebp
  jne    L90
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L25
  add    $0x58,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L25:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: label: D100
type_guessed: string
name: retrieve_data
arguments: label: D332
type_guessed: string
name: retrieve_data
arguments: label: D174
type_guessed: string
name: retrieve_data
arguments: label: D127
type_guessed: string
name: retrieve_data
arguments: label: D359
type_guessed: string
name: retrieve_data
arguments: label: D274
type_guessed: string
name: retrieve_data
arguments: label: D245
type_guessed: string
name: retrieve_data
arguments: label: D71
type_guessed: string
name: retrieve_data
arguments: label: D270
type_guessed: string
name: retrieve_data
arguments: label: D50
type_guessed: string
name: retrieve_data
arguments: label: D59
type_guessed: string
name: retrieve_data
arguments: label: D294
type_guessed: string
name: retrieve_data
arguments: label: D235
type_guessed: string
name: retrieve_data
arguments: label: D33
type_guessed: string
name: retrieve_data
arguments: label: D307
type_guessed: string
name: retrieve_data
arguments: label: D186
type_guessed: string
name: retrieve_data
arguments: label: D68
type_guessed: string
name: retrieve_data
arguments: label: D313
type_guessed: string
name: retrieve_data
arguments: label: D149
type_guessed: string
name: retrieve_data
arguments: label: D190
type_guessed: string
name: retrieve_data
arguments: label: D80
type_guessed: string
name: retrieve_data
arguments: label: D353
type_guessed: string
name: retrieve_data
arguments: label: D201
type_guessed: string
name: retrieve_data
arguments: label: D140
type_guessed: string
name: retrieve_data
arguments: label: D120
type_guessed: string
name: retrieve_data
arguments: label: D86
type_guessed: string
name: retrieve_data
arguments: label: D21
type_guessed: string
name: retrieve_data
arguments: label: D339
type_guessed: string
name: retrieve_data
arguments: label: D105
type_guessed: string
name: retrieve_data
arguments: label: D296
type_guessed: string
name: retrieve_data
arguments: label: D124
type_guessed: string
name: retrieve_data
arguments: label: D348
type_guessed: string
name: retrieve_data
arguments: label: D203
type_guessed: string
name: retrieve_data
arguments: label: D22
type_guessed: string
name: retrieve_data
arguments: label: D336
type_guessed: string
name: retrieve_data
arguments: label: D299
type_guessed: string

tool: D100: :c> 

tool: D332: %s

tool: D174: quit

tool: D127: windows

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


tool: D274: Bye Bye! See you later! 


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


tool: D71: menu

tool: D270: Action:
 

tool: D50: 	 es1 -> see result of es1


tool: D59: 	 es2 -> see result of es2


tool: D294: 	 es3 -> see result of es3


tool: D235: 	 es4 -> see result of es4


tool: D33: 	 es5 -> see result of es5


tool: D307: 	 es6 -> see result of es6


tool: D186: 	 es7 -> see result of es7


tool: D68: 	 es8 -> see result of es8


tool: D313: 	 es9 -> see result of es9


tool: D149: es1

tool: D190: Ris es1: 


tool: D80: es2

tool: D353: Ris es2: 


tool: D201: es3

tool: D140: Ris es3: 


tool: D120: es4

tool: D86: Ris es4: 


tool: D21: es5

tool: D339: Ris es5: 


tool: D105: es6

tool: D296: Ris es6: 


tool: D124: es7

tool: D348: Ris es7: 


tool: D203: es8

tool: D22: Ris es8: 


tool: D336: es9

tool: D299: Ris es9: 


assistant: ```c
int main() {
  int esc = 1;
  float array_f[] = {35.4, 46.7, 77.55, 11.1, 9.04, 0.75};
  int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  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 es7 -> see result of es7\n");
      printf("\t es8 -> see result of es8\n");
      printf("\t es9 -> see result of es9\n");
    }
    if (strstr(command, "es1") != NULL) {
      printf("Ris es1: \n");
      es1(array, sizeof(array) / sizeof(array[0]));
    }
    if (strstr(command, "es2") != NULL) {
      printf("Ris es2: \n");
      es2(array, sizeof(array) / sizeof(array[0]));
    }
    if (strstr(command, "es3") != NULL) {
      printf("Ris es3: \n");
      es3(array, sizeof(array) / sizeof(array[0]));
    }
    if (strstr(command, "es4") != NULL) {
      printf("Ris es4: \n");
      es4(array_f, sizeof(array_f) / sizeof(array_f[0]));
    }
    if (strstr(command, "es5") != NULL) {
      printf("Ris es5: \n");
      es5(array_f, sizeof(array_f) / sizeof(array_f[0]));
    }
    if (strstr(command, "es6") != NULL) {
      printf("Ris es6: \n");
      es6(array_f, sizeof(array_f) / sizeof(array_f[0]));
    }
    if (strstr(command, "es7") != NULL) {
      printf("Ris es7: \n");
      es7(array_f, sizeof(array_f) / sizeof(array_f[0]));
    }
    if (strstr(command, "es8") != NULL) {
      printf("Ris es8: \n");
      es8(array_f, sizeof(array_f) / sizeof(array_f[0]));
    }
    if (strstr(command, "es9") != NULL) {
      printf("Ris es9: \n");
      es9(array_f, sizeof(array_f) / sizeof(array_f[0]));
    }
  }
  return 0;
}
```