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

```asm
<test_desordered_elements>:
  endbr64
  push   %rbp
  pxor   %xmm0,%xmm0
  lea    D20(%rip),%rdi
  sub    $0x60,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x58(%rsp)
  movabs $0x200000001,%rax
  mov    %rsp,%rbp
  movups %xmm0,0x28(%rsp)
  mov    %rbp,%rsi
  movups %xmm0,0x38(%rsp)
  movq   $0x0,0x48(%rsp)
  mov    %rax,(%rsp)
  movabs $0x400000003,%rax
  mov    %rax,0x8(%rsp)
  movabs $0x600000005,%rax
  mov    %rax,0x10(%rsp)
  movabs $0x800000007,%rax
  mov    %rax,0x18(%rsp)
  movabs $0xa00000009,%rax
  mov    %rax,0x20(%rsp)
  call   <printArray@plt>
  mov    $0xb,%edx
  mov    $0xa,%esi
  mov    %rbp,%rdi
  call   <search@plt>
  lea    D62(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    $0x1,%edx
  mov    $0xa,%esi
  mov    %rbp,%rdi
  call   <search@plt>
  lea    D51(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    $0xa,%edx
  mov    $0xa,%esi
  mov    %rbp,%rdi
  call   <search@plt>
  lea    D9(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    $0xb,%edx
  mov    $0xa,%esi
  mov    %rbp,%rdi
  call   <searchR@plt>
  lea    D28(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    $0x1,%edx
  mov    $0xa,%esi
  mov    %rbp,%rdi
  call   <searchR@plt>
  lea    D83(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    $0xa,%edx
  mov    $0xa,%esi
  mov    %rbp,%rdi
  call   <searchR@plt>
  lea    D73(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    $0xb,%ecx
  mov    $0xa,%edx
  mov    %rbp,%rdi
  mov    $0xa,%esi
  call   <search_from_tail@plt>
  lea    D47(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    $0x1,%ecx
  mov    $0xa,%edx
  mov    %rbp,%rdi
  mov    $0xa,%esi
  call   <search_from_tail@plt>
  lea    D31(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    $0xa,%esi
  mov    %rbp,%rdi
  mov    $0xa,%ecx
  mov    $0xa,%edx
  call   <search_from_tail@plt>
  lea    D54(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    0x58(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L0
  add    $0x60,%rsp
  pop    %rbp
  ret
L0:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: label: D20
type_infered: string
name: parse_data
arguments: label: D62
type_infered: string
name: parse_data
arguments: label: D51
type_infered: string
name: parse_data
arguments: label: D9
type_infered: string
name: parse_data
arguments: label: D28
type_infered: string
name: parse_data
arguments: label: D83
type_infered: string
name: parse_data
arguments: label: D73
type_infered: string
name: parse_data
arguments: label: D47
type_infered: string
name: parse_data
arguments: label: D31
type_infered: string
name: parse_data
arguments: label: D54
type_infered: string

tool: D20: Original Array: 

tool: D62: [search] Looking for 11, returned: %d


tool: D51: [search] Looking for 1, returned: %d


tool: D9: [search] Looking for 10, returned: %d


tool: D28: [recursive search] Looking for 11, returned: %d


tool: D83: [recursive search] Looking for 1, returned: %d


tool: D73: [recursive search] Looking for 10, returned: %d


tool: D47: [search recursive from tail] Looking for 11, returned: %d


tool: D31: [search recursive from tail] Looking for 1, returned: %d


tool: D54: [search recursive from tail] Looking for 10, returned: %d


assistant: ```c
void test_desordered_elements() {
  int array[20] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  int tam = 10;
  printArray("Original Array: ", array);
  printf(("[search] Looking for 11, returned: %d\n"), search(array, tam, 11));
  printf(("[search] Looking for 1, returned: %d\n"), search(array, tam, 1));
  printf(("[search] Looking for 10, returned: %d\n"), search(array, tam, 10));
  printf(("[recursive search] Looking for 11, returned: %d\n"), searchR(array, tam, 11));
  printf(("[recursive search] Looking for 1, returned: %d\n"), searchR(array, tam, 1));
  printf(("[recursive search] Looking for 10, returned: %d\n"), searchR(array, tam, 10));
  printf(("[search recursive from tail] Looking for 11, returned: %d\n"), search_from_tail(array, tam, tam, 11));
  printf(("[search recursive from tail] Looking for 1, returned: %d\n"), search_from_tail(array, tam, tam, 1));
  printf(("[search recursive from tail] Looking for 10, returned: %d\n"), search_from_tail(array, tam, tam, 10));
}
```