user: Converte this assembly snippet into its equivalent C code:

```asm
<main>:
  endbr64
  sub    $0x8,%rsp
  xor    %eax,%eax
  call   <test_create_doubly_linked_list_element_int@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_create_doubly_linked_list_element_float@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_create_doubly_linked_list_element_char@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_create_doubly_linked_list_empty@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_create_doubly_linked_list_int@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_create_doubly_linked_list_float@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_create_doubly_linked_list_char@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_get_head_doubly_linked_list@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_get_tail_doubly_linked_list@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_get_element_at_doubly_linked_list@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_get_size_doubly_linked_list@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_is_equal_doubly_linked_list@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_shallow_copy_doubly_linked_list@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_prepend_doubly_linked_list@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_append_doubly_linked_list@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_remove_element_none_doubly_linked_list@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_remove_element_from_empty_doubly_linked_list@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_remove_element_head_doubly_linked_list@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_remove_element_middle_doubly_linked_list@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_remove_element_tail_doubly_linked_list@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_remove_element_at_doubly_linked_list_zero@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_remove_element_at_doubly_linked_list_one@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_remove_element_at_doubly_linked_list_two@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  call   <test_remove_all_doubly_linked_list@plt>
  xor    %edi,%edi
  test   %rax,%rax
  sete   %dil
  call   <assert@plt>
  xor    %eax,%eax
  add    $0x8,%rsp
  ret
```

assistant: ```c
int main() {
  assert(test_create_doubly_linked_list_element_int() == 0);
  assert(test_create_doubly_linked_list_element_float() == 0);
  assert(test_create_doubly_linked_list_element_char() == 0);
  assert(test_create_doubly_linked_list_empty() == 0);
  assert(test_create_doubly_linked_list_int() == 0);
  assert(test_create_doubly_linked_list_float() == 0);
  assert(test_create_doubly_linked_list_char() == 0);
  assert(test_get_head_doubly_linked_list() == 0);
  assert(test_get_tail_doubly_linked_list() == 0);
  assert(test_get_element_at_doubly_linked_list() == 0);
  assert(test_get_size_doubly_linked_list() == 0);
  assert(test_is_equal_doubly_linked_list() == 0);
  assert(test_shallow_copy_doubly_linked_list() == 0);
  assert(test_prepend_doubly_linked_list() == 0);
  assert(test_append_doubly_linked_list() == 0);
  assert(test_remove_element_none_doubly_linked_list() == 0);
  assert(test_remove_element_from_empty_doubly_linked_list() == 0);
  assert(test_remove_element_head_doubly_linked_list() == 0);
  assert(test_remove_element_middle_doubly_linked_list() == 0);
  assert(test_remove_element_tail_doubly_linked_list() == 0);
  assert(test_remove_element_at_doubly_linked_list_zero() == 0);
  assert(test_remove_element_at_doubly_linked_list_one() == 0);
  assert(test_remove_element_at_doubly_linked_list_two() == 0);
  assert(test_remove_all_doubly_linked_list() == 0);
  return 0;
}
```