user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<test_sort>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x78,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x68(%rsp)
  xor    %eax,%eax
  lea    D67(%rip),%rbx
  mov    %rbx,0x8(%rsp)
  lea    D65(%rip),%rax
  mov    %rax,0x20(%rsp)
  lea    D123(%rip),%rax
  mov    %rax,0x28(%rsp)
  lea    D38(%rip),%rcx
  mov    %rcx,0x30(%rsp)
  lea    D79(%rip),%rcx
  mov    %rcx,0x40(%rsp)
  lea    D94(%rip),%rcx
  mov    %rcx,0x48(%rsp)
  lea    D138(%rip),%rcx
  mov    %rcx,0x50(%rsp)
  mov    %rax,0x58(%rsp)
  lea    0x10(%rsp),%rbp
  mov    %rsp,%rdi
  mov    %rbp,%rdx
  mov    $0x0,%esi
  call   <array_sort@plt>
  lea    0x8(%rsp),%rdi
  mov    %rbp,%rdx
  mov    $0x1,%esi
  call   <array_sort@plt>
  mov    %rbx,%rsi
  mov    0x8(%rsp),%rdi
  call   <str_cmp@plt>
  test   %rax,%rax
  jne    L84
L143:
  cmpl   $0x0,0x10(%rsp)
  jne    L54
L86:
  lea    0x10(%rsp),%rdx
  lea    0x20(%rsp),%rdi
  mov    $0x3,%esi
  call   <array_sort@plt>
  lea    D123(%rip),%rsi
  mov    0x20(%rsp),%rdi
  call   <str_cmp@plt>
  test   %rax,%rax
  jne    L145
L121:
  lea    D65(%rip),%rsi
  mov    0x28(%rsp),%rdi
  call   <str_cmp@plt>
  test   %rax,%rax
  jne    L42
L249:
  lea    D38(%rip),%rsi
  mov    0x30(%rsp),%rdi
  call   <str_cmp@plt>
  test   %rax,%rax
  jne    L214
L239:
  cmpl   $0x1,0x10(%rsp)
  jne    L69
  cmpl   $0x0,0x14(%rsp)
  jne    L69
  cmpl   $0x2,0x18(%rsp)
  je     L177
L69:
  mov    $0x59,%edi
  call   <fail_test@plt>
L177:
  lea    0x10(%rsp),%rdx
  lea    0x40(%rsp),%rdi
  mov    $0x4,%esi
  call   <array_sort@plt>
  lea    D138(%rip),%rsi
  mov    0x40(%rsp),%rdi
  call   <str_cmp@plt>
  test   %rax,%rax
  jne    L20
L134:
  lea    D123(%rip),%rsi
  mov    0x48(%rsp),%rdi
  call   <str_cmp@plt>
  test   %rax,%rax
  jne    L4
L117:
  lea    D79(%rip),%rsi
  mov    0x50(%rsp),%rdi
  call   <str_cmp@plt>
  test   %rax,%rax
  jne    L34
L28:
  lea    D94(%rip),%rsi
  mov    0x58(%rsp),%rdi
  call   <str_cmp@plt>
  test   %rax,%rax
  jne    L184
L70:
  cmpl   $0x2,0x10(%rsp)
  jne    L170
  cmpl   $0x3,0x14(%rsp)
  je     L65
L170:
  mov    $0x69,%edi
  call   <fail_test@plt>
L72:
  mov    0x68(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L32
  add    $0x78,%rsp
  pop    %rbx
  pop    %rbp
  ret
L84:
  mov    $0x49,%edi
  call   <fail_test@plt>
  jmp    L143
L54:
  mov    $0x4b,%edi
  call   <fail_test@plt>
  jmp    L86
L145:
  mov    $0x4f,%edi
  call   <fail_test@plt>
  jmp    L121
L42:
  mov    $0x51,%edi
  call   <fail_test@plt>
  jmp    L249
L214:
  mov    $0x53,%edi
  call   <fail_test@plt>
  jmp    L239
L20:
  mov    $0x5d,%edi
  call   <fail_test@plt>
  jmp    L134
L4:
  mov    $0x5f,%edi
  call   <fail_test@plt>
  jmp    L117
L34:
  mov    $0x61,%edi
  call   <fail_test@plt>
  jmp    L28
L184:
  mov    $0x63,%edi
  call   <fail_test@plt>
  jmp    L70
L65:
  cmpl   $0x0,0x18(%rsp)
  jne    L170
  cmpl   $0x1,0x1c(%rsp)
  jne    L170
  jmp    L72
L32:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D67
type: string
name: extract_symbolic_data
arguments: data_label: D65
type: string
name: extract_symbolic_data
arguments: data_label: D123
type: string
name: extract_symbolic_data
arguments: data_label: D38
type: string
name: extract_symbolic_data
arguments: data_label: D79
type: string
name: extract_symbolic_data
arguments: data_label: D94
type: string
name: extract_symbolic_data
arguments: data_label: D138
type: string

tool: D67: one

tool: D65: just

tool: D123: a

tool: D38: test

tool: D79: aa

tool: D94: aaa

tool: 

assistant: ```c
void test_sort() {
  char *empty_words[] = {};
  char *one_word[] = {"one"};
  char *three_words[] = {"just", "a", "test"};
  char *four_words[] = {"aa", "aaa", "", "a"};
  int map[4];
  array_sort(empty_words, 0, map);
  array_sort(one_word, 1, map);
  if (str_cmp(one_word[0], "one") != 0)
    fail_test(73);
  ;
  if (map[0] != 0)
    fail_test(75);
  ;
  array_sort(three_words, 3, map);
  if (str_cmp(three_words[0], "a") != 0)
    fail_test(79);
  ;
  if (str_cmp(three_words[1], "just") != 0)
    fail_test(81);
  ;
  if (str_cmp(three_words[2], "test") != 0)
    fail_test(83);
  ;
  if (map[0] != 1 || map[1] != 0 || map[2] != 2)
    fail_test(89);
  ;
  array_sort(four_words, 4, map);
  if (str_cmp(four_words[0], "") != 0)
    fail_test(93);
  ;
  if (str_cmp(four_words[1], "a") != 0)
    fail_test(95);
  ;
  if (str_cmp(four_words[2], "aa") != 0)
    fail_test(97);
  ;
  if (str_cmp(four_words[3], "aaa") != 0)
    fail_test(99);
  ;
  if (map[0] != 2 || map[1] != 3 || map[2] != 0 || map[3] != 1)
    fail_test(105);
  ;
}
```