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

```asm
<main>:
  endbr64
  push   %r12
  pxor   %xmm1,%xmm1
  lea    D32(%rip),%rdi
  push   %rbp
  sub    $0xc8,%rsp
  movdqa D124(%rip),%xmm0
  mov    %fs:0x28,%rax
  mov    %rax,0xb8(%rsp)
  xor    %eax,%eax
  movaps %xmm1,0x90(%rsp)
  lea    0x10(%rsp),%rbp
  lea    0xc(%rsp),%r12
  movaps %xmm0,0x10(%rsp)
  movdqa D85(%rip),%xmm0
  mov    %rbp,%rsi
  movaps %xmm1,0xa0(%rsp)
  movdqa D153(%rip),%xmm1
  movaps %xmm0,0x20(%rsp)
  movdqa D57(%rip),%xmm0
  movaps %xmm1,0x60(%rsp)
  movdqa D103(%rip),%xmm1
  movaps %xmm0,0x30(%rsp)
  movdqa D79(%rip),%xmm0
  movaps %xmm1,0x70(%rsp)
  movaps %xmm0,0x40(%rsp)
  movdqa D45(%rip),%xmm0
  movl   $0xc,0xc(%rsp)
  movaps %xmm0,0x50(%rsp)
  movaps %xmm0,0x80(%rsp)
  call   <printArray@plt>
  mov    %rbp,%rdi
  call   <insertion_sort_full_array@plt>
  mov    %rbp,%rsi
  lea    D51(%rip),%rdi
  lea    0x60(%rsp),%rbp
  call   <printArray@plt>
  mov    %rbp,%rsi
  lea    D3(%rip),%rdi
  call   <printArray@plt>
  mov    0xc(%rsp),%esi
  mov    %rbp,%rdi
  call   <insertion_sort_partial_array@plt>
  mov    %rbp,%rsi
  lea    D102(%rip),%rdi
  call   <printArray@plt>
  mov    $0x63,%edx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <append_and_sort@plt>
  mov    %rbp,%rsi
  lea    D68(%rip),%rdi
  call   <printArray@plt>
  xor    %edx,%edx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <insertion_sort_from_tail@plt>
  mov    %rbp,%rsi
  lea    D19(%rip),%rdi
  call   <printArray@plt>
  mov    $0x64,%edx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <insertion_sort_from_front@plt>
  mov    %rbp,%rsi
  lea    D159(%rip),%rdi
  call   <printArray@plt>
  xor    %edx,%edx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <remove_element@plt>
  lea    D157(%rip),%rdi
  mov    %eax,%esi
  call   <printf@plt>
  mov    %rbp,%rsi
  lea    D76(%rip),%rdi
  call   <printArray@plt>
  mov    0xb8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L9
  add    $0xc8,%rsp
  xor    %eax,%eax
  pop    %rbp
  pop    %r12
  ret
L9:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_tag: D32
datatype: string
name: retrieve_data
arguments: data_tag: D124
datatype: byte[16]
name: retrieve_data
arguments: data_tag: D85
datatype: byte[16]
name: retrieve_data
arguments: data_tag: D153
datatype: byte[16]
name: retrieve_data
arguments: data_tag: D57
datatype: byte[16]
name: retrieve_data
arguments: data_tag: D103
datatype: byte[16]
name: retrieve_data
arguments: data_tag: D79
datatype: byte[16]
name: retrieve_data
arguments: data_tag: D45
datatype: byte[16]
name: retrieve_data
arguments: data_tag: D51
datatype: string
name: retrieve_data
arguments: data_tag: D3
datatype: string
name: retrieve_data
arguments: data_tag: D102
datatype: string
name: retrieve_data
arguments: data_tag: D68
datatype: string
name: retrieve_data
arguments: data_tag: D19
datatype: string
name: retrieve_data
arguments: data_tag: D159
datatype: string
name: retrieve_data
arguments: data_tag: D157
datatype: string
name: retrieve_data
arguments: data_tag: D76
datatype: string

tool: D32: [full] Original Array: 

tool: {"D124": [0x13,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x11,0x00,0x00,0x00,0x10,0x00,0x00,0x00]}

tool: {"D85": [0x0f,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x0d,0x00,0x00,0x00,0x0c,0x00,0x00,0x00]}

tool: {"D153": [0x13,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0x0d,0x00,0x00,0x00]}

tool: {"D57": [0x0b,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00]}

tool: {"D103": [0x14,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00]}

tool: {"D79": [0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x06,0x00,0x00,0x00]}

tool: {"D45": [0x07,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x0a,0x00,0x00,0x00]}

tool: D51: [full] sorted Array: 

tool: D3: [partial] Original Array: 

tool: D102: [partial] sorted Array: 

tool: D68: added 99 to Array: 

tool: D19: added 0 to Array: 

tool: D159: added 100 to Array: 

tool: D157: Removed 0 from i[%d]

tool: D76: Removed 0 from Array: 

assistant: ```c
int main() {
  int array[20] = {19, 18, 17, 16, 15, 14, 13, 12, 11, 20, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  int array2[20] = {19, 18, 15, 13, 20, 1, 3, 4, 7, 8, 9, 10};
  int tam = 12;
  printArray("[full] Original Array: ", array);
  insertion_sort_full_array(array);
  printArray("[full] sorted Array: ", array);
  printArray("[partial] Original Array: ", array2);
  insertion_sort_partial_array(array2, tam);
  printArray("[partial] sorted Array: ", array2);
  append_and_sort(&array2, &tam, 99);
  printArray("added 99 to Array: ", array2);
  insertion_sort_from_tail(&array2, &tam, 0);
  printArray("added 0 to Array: ", array2);
  insertion_sort_from_front(&array2, &tam, 100);
  printArray("added 100 to Array: ", array2);
  printf(("Removed 0 from i[%d]"), remove_element(&array2, &tam, 0));
  printArray("Removed 0 from Array: ", array2);
  return 0;
}
```