user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<main>:
  endbr64
  push   %r15
  mov    $0x100,%edi
  lea    D41(%rip),%r15
  push   %r14
  lea    D308(%rip),%r14
  push   %r13
  lea    D178(%rip),%r13
  push   %r12
  lea    D153(%rip),%r12
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  movaps D238(%rip),%xmm0
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  mov    D21(%rip),%rax
  movaps %xmm0,(%rsp)
  movdqa D347(%rip),%xmm0
  mov    %rax,0x10(%rsp)
  mov    D365(%rip),%rax
  movaps %xmm0,0x20(%rsp)
  movdqa D123(%rip),%xmm0
  mov    %rax,0x40(%rsp)
  movaps %xmm0,0x30(%rsp)
  call   <malloc@plt>
  lea    D254(%rip),%rdi
  mov    %rax,%rbx
  call   <printf@plt>
  nopl   0x0(%rax)
L31:
  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     L15
  lea    D370(%rip),%rdi
  xor    %ebp,%ebp
  call   <printf@plt>
L15:
  mov    %r12,%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L103
  lea    D170(%rip),%rdi
  call   <printf@plt>
L103:
  lea    D402(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L124
  lea    D271(%rip),%rdi
  call   <printf@plt>
  lea    D104(%rip),%rdi
  call   <printf@plt>
  lea    D113(%rip),%rdi
  call   <printf@plt>
  lea    D282(%rip),%rdi
  call   <printf@plt>
  lea    D229(%rip),%rdi
  call   <printf@plt>
  lea    D258(%rip),%rdi
  call   <printf@plt>
  lea    D66(%rip),%rdi
  call   <printf@plt>
  lea    D20(%rip),%rdi
  call   <printf@plt>
  lea    D312(%rip),%rdi
  call   <printf@plt>
  lea    D232(%rip),%rdi
  call   <printf@plt>
L124:
  lea    D213(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L135
  lea    D155(%rip),%rdi
  call   <printf@plt>
  lea    0x20(%rsp),%rdi
  mov    $0xa,%esi
  call   <es1@plt>
L135:
  lea    D197(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L102
  lea    D216(%rip),%rdi
  call   <printf@plt>
  lea    0x20(%rsp),%rdi
  mov    $0xa,%esi
  call   <es2@plt>
L102:
  lea    D103(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L137
  lea    D12(%rip),%rdi
  call   <printf@plt>
  lea    0x20(%rsp),%rdi
  mov    $0xa,%esi
  call   <es3@plt>
L137:
  lea    D165(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L77
  lea    D144(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rdi
  mov    $0x6,%esi
  call   <es4@plt>
L77:
  lea    D321(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L48
  lea    D329(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rdi
  mov    $0x6,%esi
  call   <es5@plt>
L48:
  lea    D287(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L82
  lea    D34(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rdi
  mov    $0x6,%esi
  call   <es6@plt>
L82:
  lea    D65(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L112
  lea    D18(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rdi
  mov    $0x6,%esi
  call   <es7@plt>
L112:
  lea    D85(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L12
  lea    D344(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rdi
  mov    $0x6,%esi
  call   <es8@plt>
L12:
  lea    D22(%rip),%rsi
  mov    %rbx,%rdi
  call   <strstr@plt>
  test   %rax,%rax
  je     L40
  lea    D191(%rip),%rdi
  call   <printf@plt>
  mov    %rsp,%rdi
  mov    $0x6,%esi
  call   <es9@plt>
L40:
  test   %ebp,%ebp
  jne    L31
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L51
  add    $0x58,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L51:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: label: D41
type_guessed: string
name: read_data
arguments: label: D308
type_guessed: string
name: read_data
arguments: label: D178
type_guessed: string
name: read_data
arguments: label: D153
type_guessed: string
name: read_data
arguments: label: D238
type_guessed: f32[4]
name: read_data
arguments: label: D21
type_guessed: f32[2]
name: read_data
arguments: label: D347
type_guessed: byte[16]
name: read_data
arguments: label: D365
type_guessed: byte[8]
name: read_data
arguments: label: D123
type_guessed: byte[16]
name: read_data
arguments: label: D254
type_guessed: string
name: read_data
arguments: label: D370
type_guessed: string
name: read_data
arguments: label: D170
type_guessed: string
name: read_data
arguments: label: D402
type_guessed: string
name: read_data
arguments: label: D271
type_guessed: string
name: read_data
arguments: label: D104
type_guessed: string
name: read_data
arguments: label: D113
type_guessed: string
name: read_data
arguments: label: D282
type_guessed: string
name: read_data
arguments: label: D229
type_guessed: string
name: read_data
arguments: label: D258
type_guessed: string
name: read_data
arguments: label: D66
type_guessed: string
name: read_data
arguments: label: D20
type_guessed: string
name: read_data
arguments: label: D312
type_guessed: string
name: read_data
arguments: label: D232
type_guessed: string
name: read_data
arguments: label: D213
type_guessed: string
name: read_data
arguments: label: D155
type_guessed: string
name: read_data
arguments: label: D197
type_guessed: string
name: read_data
arguments: label: D216
type_guessed: string
name: read_data
arguments: label: D103
type_guessed: string
name: read_data
arguments: label: D12
type_guessed: string
name: read_data
arguments: label: D165
type_guessed: string
name: read_data
arguments: label: D144
type_guessed: string
name: read_data
arguments: label: D321
type_guessed: string
name: read_data
arguments: label: D329
type_guessed: string
name: read_data
arguments: label: D287
type_guessed: string
name: read_data
arguments: label: D34
type_guessed: string
name: read_data
arguments: label: D65
type_guessed: string
name: read_data
arguments: label: D18
type_guessed: string
name: read_data
arguments: label: D85
type_guessed: string
name: read_data
arguments: label: D344
type_guessed: string
name: read_data
arguments: label: D22
type_guessed: string
name: read_data
arguments: label: D191
type_guessed: string

tool: D41: :c> 

tool: D308: %s

tool: D178: quit

tool: D153: windows

tool: {"D238": [35.400001525878906,46.70000076293945,77.55000305175781,11.100000381469727]}

tool: {"D21": [9.039999961853027,0.75]}

tool: {"D347": [0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00]}

tool: {"D365": [0x09,0x00,0x00,0x00,0x0a,0x00,0x00,0x00]}

tool: {"D123": [0x05,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x08,0x00,0x00,0x00]}

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


tool: D370: Bye Bye! See you later! 


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


tool: D402: menu

tool: D271: Action:
 

tool: D104: 	 es1 -> see result of es1


tool: D113: 	 es2 -> see result of es2


tool: D282: 	 es3 -> see result of es3


tool: D229: 	 es4 -> see result of es4


tool: D258: 	 es5 -> see result of es5


tool: D66: 	 es6 -> see result of es6


tool: D20: 	 es7 -> see result of es7


tool: D312: 	 es8 -> see result of es8


tool: D232: 	 es9 -> see result of es9


tool: D213: es1

tool: D155: Ris es1: 


tool: D197: es2

tool: D216: Ris es2: 


tool: D103: es3

tool: D12: Ris es3: 


tool: D165: es4

tool: D144: Ris es4: 


tool: D321: es5

tool: D329: Ris es5: 


tool: D287: es6

tool: D34: Ris es6: 


tool: D65: es7

tool: D18: Ris es7: 


tool: D85: es8

tool: D344: Ris es8: 


tool: D22: es9

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