user: 下面的汇编指令对应的C源代码是什么:

```asm
<main>:
  endbr64
  push   %r14
  lea    D20(%rip),%rdi
  push   %r13
  push   %r12
  push   %rbp
  sub    $0x8,%rsp
  call   <running@plt>
  lea    D35(%rip),%rdi
  call   <testing@plt>
  mov    $0x4,%edi
  call   <test_hasht_new@plt>
  lea    D43(%rip),%rdi
  mov    %rax,%rbp
  call   <strdup@plt>
  lea    D108(%rip),%rdi
  mov    %rax,%r12
  call   <strdup@plt>
  lea    D63(%rip),%rdi
  mov    %rax,%r13
  call   <testing@plt>
  mov    %r13,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <test_hasht_insert@plt>
  lea    D58(%rip),%rdi
  call   <testing@plt>
  mov    %r13,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <test_hasht_search@plt>
  lea    D118(%rip),%rdi
  call   <testing@plt>
  mov    %r13,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <test_hasht_insert_duplicate@plt>
  lea    D0(%rip),%rdi
  call   <testing@plt>
  lea    D116(%rip),%rdi
  call   <strdup@plt>
  lea    D87(%rip),%rdi
  mov    %rax,%r14
  call   <strdup@plt>
  mov    %r14,%rsi
  mov    %rbp,%rdi
  mov    %rax,%rdx
  call   <test_hasht_insert@plt>
  mov    $0x2,%esi
  mov    %rbp,%rdi
  call   <test_hasht_used@plt>
  lea    D106(%rip),%rdi
  call   <testing@plt>
  mov    $0x4,%esi
  mov    %rbp,%rdi
  call   <test_hasht_resize@plt>
  lea    D66(%rip),%rdi
  call   <testing@plt>
  mov    %r13,%rdx
  mov    %r12,%rsi
  mov    %rbp,%rdi
  call   <test_hasht_delete@plt>
  mov    %rbp,%rdi
  call   <hasht_free@plt>
  add    $0x8,%rsp
  xor    %eax,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D20
type: string
name: extract_symbolic_data
arguments: data_label: D35
type: string
name: extract_symbolic_data
arguments: data_label: D43
type: string
name: extract_symbolic_data
arguments: data_label: D108
type: string
name: extract_symbolic_data
arguments: data_label: D63
type: string
name: extract_symbolic_data
arguments: data_label: D58
type: string
name: extract_symbolic_data
arguments: data_label: D118
type: string
name: extract_symbolic_data
arguments: data_label: D0
type: string
name: extract_symbolic_data
arguments: data_label: D116
type: string
name: extract_symbolic_data
arguments: data_label: D87
type: string
name: extract_symbolic_data
arguments: data_label: D106
type: string
name: extract_symbolic_data
arguments: data_label: D66
type: string

tool: D20: hash table

tool: D35: new

tool: D43: foo

tool: D108: bar

tool: D63: insert

tool: D58: search

tool: D118: insert duplicate

tool: D0: size

tool: D116: the answer?

tool: D87: 42

tool: D106: resize

tool: D66: remove

assistant: ```c
int main() {
  running("hash table");
  testing("new");
  size_t size = 4;
  struct hasht *t = test_hasht_new(size);
  char *k = strdup("foo");
  char *v = strdup("bar");
  testing("insert");
  test_hasht_insert(t, k, v);
  testing("search");
  test_hasht_search(t, k, v);
  testing("insert duplicate");
  test_hasht_insert_duplicate(t, k, v);
  testing("size");
  char *k2 = strdup("the answer?");
  char *v2 = strdup("42");
  test_hasht_insert(t, k2, v2);
  test_hasht_used(t, 2);
  testing("resize");
  test_hasht_resize(t, size);
  testing("remove");
  test_hasht_delete(t, k, v);
  hasht_free(t);
}
```