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

```asm
<salloc_test>:
  endbr64
  sub    $0x8,%rsp
  lea    D48(%rip),%rdi
  call   <test_begin@plt>
  xor    %eax,%eax
  call   <salloc_init_test@plt>
  lea    D39(%rip),%rdi
  mov    %eax,%esi
  call   <run_case@plt>
  xor    %eax,%eax
  call   <salloc_basic_alloc@plt>
  lea    D92(%rip),%rdi
  mov    %eax,%esi
  call   <run_case@plt>
  xor    %eax,%eax
  call   <salloc_full_alloc@plt>
  lea    D75(%rip),%rdi
  mov    %eax,%esi
  call   <run_case@plt>
  xor    %eax,%eax
  call   <salloc_overflow_alloc@plt>
  lea    D85(%rip),%rdi
  mov    %eax,%esi
  call   <run_case@plt>
  xor    %eax,%eax
  call   <salloc_multiple_alloc@plt>
  lea    D5(%rip),%rdi
  mov    %eax,%esi
  call   <run_case@plt>
  xor    %eax,%eax
  call   <salloc_alloc_not_enough@plt>
  lea    D82(%rip),%rdi
  mov    %eax,%esi
  call   <run_case@plt>
  xor    %eax,%eax
  call   <salloc_basic_free@plt>
  lea    D62(%rip),%rdi
  mov    %eax,%esi
  call   <run_case@plt>
  xor    %eax,%eax
  call   <salloc_full_free@plt>
  lea    D149(%rip),%rdi
  mov    %eax,%esi
  call   <run_case@plt>
  xor    %eax,%eax
  call   <salloc_multiple_free@plt>
  lea    D7(%rip),%rdi
  mov    %eax,%esi
  call   <run_case@plt>
  xor    %eax,%eax
  call   <salloc_free_join_tail@plt>
  lea    D145(%rip),%rdi
  mov    %eax,%esi
  call   <run_case@plt>
  xor    %eax,%eax
  call   <salloc_free_join_head@plt>
  lea    D6(%rip),%rdi
  mov    %eax,%esi
  call   <run_case@plt>
  xor    %eax,%eax
  call   <salloc_free_join_mid@plt>
  lea    D55(%rip),%rdi
  mov    %eax,%esi
  call   <run_case@plt>
  xor    %eax,%eax
  call   <salloc_free_join_consecutive@plt>
  lea    D37(%rip),%rdi
  mov    %eax,%esi
  call   <run_case@plt>
  xor    %eax,%eax
  call   <salloc_free_all@plt>
  lea    D100(%rip),%rdi
  mov    %eax,%esi
  call   <run_case@plt>
  xor    %eax,%eax
  add    $0x8,%rsp
  jmp    1220 <test_end@plt>
```

tool_calls: name: extract_symbolic_data
arguments: label: D48
type_infered: string
name: extract_symbolic_data
arguments: label: D39
type_infered: string
name: extract_symbolic_data
arguments: label: D92
type_infered: string
name: extract_symbolic_data
arguments: label: D75
type_infered: string
name: extract_symbolic_data
arguments: label: D85
type_infered: string
name: extract_symbolic_data
arguments: label: D5
type_infered: string
name: extract_symbolic_data
arguments: label: D82
type_infered: string
name: extract_symbolic_data
arguments: label: D62
type_infered: string
name: extract_symbolic_data
arguments: label: D149
type_infered: string
name: extract_symbolic_data
arguments: label: D7
type_infered: string
name: extract_symbolic_data
arguments: label: D145
type_infered: string
name: extract_symbolic_data
arguments: label: D6
type_infered: string
name: extract_symbolic_data
arguments: label: D55
type_infered: string
name: extract_symbolic_data
arguments: label: D37
type_infered: string
name: extract_symbolic_data
arguments: label: D100
type_infered: string

tool: D48: salloc test

tool: D39: salloc_init_test

tool: D92: salloc_basic_alloc

tool: D75: salloc_full_alloc

tool: D85: salloc_overflow_alloc

tool: D5: salloc_multiple_alloc

tool: D82: salloc_alloc_not_enough

tool: D62: salloc_basic_free

tool: D149: salloc_full_free

tool: D7: salloc_multiple_free

tool: D145: salloc_free_join_tail

tool: D6: salloc_free_join_head

tool: D55: salloc_free_join_mid

tool: D37: salloc_free_join_consecutive

tool: D100: salloc_free_all

assistant: ```c
void salloc_test(void) {
  test_begin("salloc test");
  run_case("salloc_init_test", salloc_init_test());
  run_case("salloc_basic_alloc", salloc_basic_alloc());
  run_case("salloc_full_alloc", salloc_full_alloc());
  run_case("salloc_overflow_alloc", salloc_overflow_alloc());
  run_case("salloc_multiple_alloc", salloc_multiple_alloc());
  run_case("salloc_alloc_not_enough", salloc_alloc_not_enough());
  run_case("salloc_basic_free", salloc_basic_free());
  run_case("salloc_full_free", salloc_full_free());
  run_case("salloc_multiple_free", salloc_multiple_free());
  run_case("salloc_free_join_tail", salloc_free_join_tail());
  run_case("salloc_free_join_head", salloc_free_join_head());
  run_case("salloc_free_join_mid", salloc_free_join_mid());
  run_case("salloc_free_join_consecutive", salloc_free_join_consecutive());
  run_case("salloc_free_all", salloc_free_all());
  test_end();
}
```