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

```asm
<test_reconstruct>:
  endbr64
  push   %rbp
  lea    D100(%rip),%rsi
  lea    D11(%rip),%rdi
  sub    $0x30,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x28(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rbp
  call   <printf@plt>
  xor    %esi,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  movl   $0x0,(%rsp)
  call   <test_one_decoding_13_6@plt>
  xor    %edi,%edi
  test   %eax,%eax
  sete   %dil
  xor    %eax,%eax
  call   <assert@plt>
  mov    D91(%rip),%rax
  mov    $0x6,%esi
  mov    %rbp,%rdi
  movdqa D77(%rip),%xmm0
  mov    %rax,0x10(%rsp)
  xor    %eax,%eax
  movaps %xmm0,(%rsp)
  call   <test_one_decoding_13_6@plt>
  xor    %edi,%edi
  test   %eax,%eax
  sete   %dil
  xor    %eax,%eax
  call   <assert@plt>
  mov    D95(%rip),%rax
  mov    $0x6,%esi
  mov    %rbp,%rdi
  movdqa D24(%rip),%xmm0
  mov    %rax,0x10(%rsp)
  xor    %eax,%eax
  movaps %xmm0,(%rsp)
  call   <test_one_decoding_13_6@plt>
  xor    %edi,%edi
  test   %eax,%eax
  sete   %dil
  xor    %eax,%eax
  call   <assert@plt>
  mov    $0x4,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  movdqa D88(%rip),%xmm0
  movaps %xmm0,(%rsp)
  call   <test_one_decoding_13_6@plt>
  xor    %edi,%edi
  test   %eax,%eax
  sete   %dil
  xor    %eax,%eax
  call   <assert@plt>
  mov    $0x4,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  movdqa D118(%rip),%xmm2
  movaps %xmm2,(%rsp)
  call   <test_one_decoding_13_6@plt>
  xor    %edi,%edi
  test   %eax,%eax
  setne  %dil
  xor    %eax,%eax
  call   <assert@plt>
  mov    $0x4,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  movdqa D35(%rip),%xmm1
  movaps %xmm1,(%rsp)
  call   <test_one_decoding_13_6@plt>
  xor    %edi,%edi
  test   %eax,%eax
  setne  %dil
  xor    %eax,%eax
  call   <assert@plt>
  mov    $0x8,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  movdqa D118(%rip),%xmm2
  movdqa D35(%rip),%xmm1
  movaps %xmm2,(%rsp)
  movaps %xmm1,0x10(%rsp)
  call   <test_one_decoding_13_6@plt>
  xor    %edi,%edi
  test   %eax,%eax
  setne  %dil
  xor    %eax,%eax
  call   <assert@plt>
  mov    D106(%rip),%rax
  mov    %rbp,%rdi
  movdqa D88(%rip),%xmm0
  mov    $0x7,%esi
  movl   $0x41,0x18(%rsp)
  mov    %rax,0x10(%rsp)
  xor    %eax,%eax
  movaps %xmm0,(%rsp)
  call   <test_one_decoding_13_6@plt>
  xor    %edi,%edi
  test   %eax,%eax
  setne  %dil
  xor    %eax,%eax
  call   <assert@plt>
  mov    0x28(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L7
  add    $0x30,%rsp
  pop    %rbp
  ret
L7:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: data_label: D100
data_type: string
name: unpack_data
arguments: data_label: D11
data_type: string
name: unpack_data
arguments: data_label: D91
data_type: byte[8]
name: unpack_data
arguments: data_label: D77
data_type: byte[16]
name: unpack_data
arguments: data_label: D95
data_type: byte[8]
name: unpack_data
arguments: data_label: D24
data_type: byte[16]
name: unpack_data
arguments: data_label: D88
data_type: byte[16]
name: unpack_data
arguments: data_label: D118
data_type: byte[16]
name: unpack_data
arguments: data_label: D35
data_type: byte[16]
name: unpack_data
arguments: data_label: D106
data_type: byte[8]

tool: D100: test_reconstruct

tool: D11: %s:


tool: {"D91": [0x0e,0x00,0x00,0x00,0x13,0x00,0x00,0x00]}

tool: {"D77": [0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x0c,0x00,0x00,0x00]}

tool: {"D95": [0x13,0x00,0x00,0x00,0x41,0x00,0x00,0x00]}

tool: {"D24": [0x00,0x00,0x00,0x00,0x09,0x00,0x00,0x00,0x3d,0x00,0x00,0x00,0x0c,0x00,0x00,0x00]}

tool: {"D88": [0x0b,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x0a,0x00,0x00,0x00,0x09,0x00,0x00,0x00]}

tool: {"D118": [0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x08,0x00,0x00,0x00]}

tool: {"D35": [0x0a,0x00,0x00,0x00,0x0b,0x00,0x00,0x00,0x0e,0x00,0x00,0x00,0x12,0x00,0x00,0x00]}

tool: {"D106": [0x3f,0x00,0x00,0x00,0x40,0x00,0x00,0x00]}

assistant: ```c
void test_reconstruct(void) {
  printf("%s:\n", __FUNCTION__);
  {
    int erases[] = {0};
    int err;
    err = test_one_decoding_13_6(erases, 0);
    assert(0 == err);
  }
  {
    int erases[] = {0, 1, 9, 10 + 2, 10 + 4, 10 + 9};
    int erases_count = sizeof(erases) / sizeof(int);
    int err;
    err = test_one_decoding_13_6(erases, erases_count);
    assert(0 == err);
  }
  {
    int erases[] = {0, 9, (10 * 6) + 1, 10 + 2, 10 + 9, (10 * 6) + 3 + 2};
    int erases_count = sizeof(erases) / sizeof(int);
    int err;
    err = test_one_decoding_13_6(erases, erases_count);
    assert(0 == err);
  }
  {
    int erases[] = {11, 12, 10, 9};
    int erases_count = sizeof(erases) / sizeof(int);
    int err;
    err = test_one_decoding_13_6(erases, erases_count);
    assert(0 == err);
  }
  {
    int erases[] = {0, 1, 4, 8};
    int erases_count = sizeof(erases) / sizeof(int);
    int err;
    err = test_one_decoding_13_6(erases, erases_count);
    assert(0 != err);
  }
  {
    int erases[] = {10, 11, 14, 18};
    int erases_count = sizeof(erases) / sizeof(int);
    int err;
    err = test_one_decoding_13_6(erases, erases_count);
    assert(0 != err);
  }
  {
    int erases[] = {0, 1, 4, 8, 10, 11, 14, 18};
    int erases_count = sizeof(erases) / sizeof(int);
    int err;
    err = test_one_decoding_13_6(erases, erases_count);
    assert(0 != err);
  }
  {
    int erases[] = {11, 12, 10, 9, (10 * 6) + 3 + 0, (10 * 6) + 3 + 1, (10 * 6) + 3 + 2};
    int erases_count = sizeof(erases) / sizeof(int);
    int err;
    err = test_one_decoding_13_6(erases, erases_count);
    assert(0 != err);
  }
}
```