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

```asm
<main>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x58,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x48(%rsp)
  xor    %eax,%eax
  mov    %rsp,%rdx
  mov    $0xfffffff8,%eax
L8:
  mov    %eax,(%rdx)
  add    $0x1,%eax
  add    $0x4,%rdx
  cmp    $0x8,%eax
  jne    L8
  mov    %rsp,%rbp
  mov    $0x10,%edx
  mov    %rbp,%rsi
  mov    $0xfffffffffffffff8,%rdi
  mov    $0x0,%eax
  call   <binsearch@plt>
  mov    %eax,%ecx
  mov    $0xfffffffffffffff8,%r9
  lea    D93(%rip),%r8
  lea    D95(%rip),%r13
  mov    %r13,%rdx
  mov    $0x14,%esi
  lea    D34(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x10,%edx
  mov    %rbp,%rsi
  mov    $0xfffffffffffffff8,%rdi
  mov    $0x0,%eax
  call   <binsearch1@plt>
  mov    %eax,%ecx
  mov    $0xfffffffffffffff8,%r9
  lea    D93(%rip),%r8
  lea    D13(%rip),%r12
  mov    %r12,%rdx
  mov    $0x14,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x10,%edx
  mov    %rbp,%rsi
  mov    $0x7,%edi
  mov    $0x0,%eax
  call   <binsearch@plt>
  mov    %eax,%ecx
  mov    $0x7,%r9d
  lea    D93(%rip),%r8
  mov    %r13,%rdx
  mov    $0x14,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x10,%edx
  mov    %rbp,%rsi
  mov    $0x7,%edi
  mov    $0x0,%eax
  call   <binsearch1@plt>
  mov    %eax,%ecx
  mov    $0x7,%r9d
  lea    D93(%rip),%r8
  mov    %r12,%rdx
  mov    $0x14,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x10,%edx
  mov    %rbp,%rsi
  mov    $0xffffffffffffffff,%rdi
  mov    $0x0,%eax
  call   <binsearch@plt>
  mov    %eax,%ecx
  mov    $0xffffffffffffffff,%r9
  lea    D93(%rip),%r8
  mov    %r13,%rdx
  mov    $0x14,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x10,%edx
  mov    %rbp,%rsi
  mov    $0xffffffffffffffff,%rdi
  mov    $0x0,%eax
  call   <binsearch1@plt>
  mov    %eax,%ecx
  mov    $0xffffffffffffffff,%r9
  lea    D93(%rip),%r8
  mov    %r12,%rdx
  mov    $0x14,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x10,%edx
  mov    %rbp,%rsi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <binsearch@plt>
  mov    %eax,%ecx
  mov    $0x0,%r9d
  lea    D93(%rip),%r8
  mov    %r13,%rdx
  mov    $0x14,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x10,%edx
  mov    %rbp,%rsi
  mov    $0x0,%edi
  mov    $0x0,%eax
  call   <binsearch1@plt>
  mov    %eax,%ecx
  mov    $0x0,%r9d
  lea    D93(%rip),%r8
  mov    %r12,%rdx
  mov    $0x14,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x10,%edx
  mov    %rbp,%rsi
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <binsearch@plt>
  mov    %eax,%ecx
  mov    $0x2,%r9d
  lea    D93(%rip),%r8
  mov    %r13,%rdx
  mov    $0x14,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x10,%edx
  mov    %rbp,%rsi
  mov    $0x2,%edi
  mov    $0x0,%eax
  call   <binsearch1@plt>
  mov    %eax,%ecx
  mov    $0x2,%r9d
  lea    D93(%rip),%r8
  mov    %r12,%rdx
  mov    $0x14,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x10,%edx
  mov    %rbp,%rsi
  mov    $0x8,%edi
  mov    $0x0,%eax
  call   <binsearch@plt>
  mov    %eax,%ecx
  mov    $0x8,%r9d
  lea    D93(%rip),%r8
  mov    %r13,%rdx
  mov    $0x14,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x10,%edx
  mov    %rbp,%rsi
  mov    $0x8,%edi
  mov    $0x0,%eax
  call   <binsearch1@plt>
  mov    %eax,%ecx
  mov    $0x8,%r9d
  lea    D93(%rip),%r8
  mov    %r12,%rdx
  mov    $0x14,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x10,%edx
  mov    %rbp,%rsi
  mov    $0xfffffffffffffff7,%rdi
  mov    $0x0,%eax
  call   <binsearch@plt>
  mov    %eax,%ecx
  mov    $0xfffffffffffffff7,%r9
  lea    D93(%rip),%r8
  mov    %r13,%rdx
  mov    $0x14,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x10,%edx
  mov    %rbp,%rsi
  mov    $0xfffffffffffffff7,%rdi
  mov    $0x0,%eax
  call   <binsearch1@plt>
  mov    %eax,%ecx
  mov    $0xfffffffffffffff7,%r9
  lea    D93(%rip),%r8
  mov    %r12,%rdx
  mov    $0x14,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    0x48(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L11
  mov    $0x0,%eax
  add    $0x58,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
L11:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: data_tag: D93
type_infered: string
name: unpack_data
arguments: data_tag: D95
type_infered: string
name: unpack_data
arguments: data_tag: D34
type_infered: string
name: unpack_data
arguments: data_tag: D13
type_infered: string

tool: D93: for term

tool: D95: binsearch returned:

tool: D34: %*s %i %s %li


tool: D13: binsearch1 returned:

assistant: ```c
int main() {
  int array[16];
  int w1 = 20;
  int r;
  long term;
  unsigned int i;
  int j = -(16 / 2);
  for (i = 0; i < 16; i++, j++)
    array[i] = j;
  term = -8;
  r = binsearch(term, array, 16);
  printf("%*s %i %s %li\n", w1, "binsearch returned:", r, "for term", term);
  r = binsearch1(term, array, 16);
  printf("%*s %i %s %li\n", w1, "binsearch1 returned:", r, "for term", term);
  term = 7;
  r = binsearch(term, array, 16);
  printf("%*s %i %s %li\n", w1, "binsearch returned:", r, "for term", term);
  r = binsearch1(term, array, 16);
  printf("%*s %i %s %li\n", w1, "binsearch1 returned:", r, "for term", term);
  term = -1;
  r = binsearch(term, array, 16);
  printf("%*s %i %s %li\n", w1, "binsearch returned:", r, "for term", term);
  r = binsearch1(term, array, 16);
  printf("%*s %i %s %li\n", w1, "binsearch1 returned:", r, "for term", term);
  term = 0;
  r = binsearch(term, array, 16);
  printf("%*s %i %s %li\n", w1, "binsearch returned:", r, "for term", term);
  r = binsearch1(term, array, 16);
  printf("%*s %i %s %li\n", w1, "binsearch1 returned:", r, "for term", term);
  term = 2;
  r = binsearch(term, array, 16);
  printf("%*s %i %s %li\n", w1, "binsearch returned:", r, "for term", term);
  r = binsearch1(term, array, 16);
  printf("%*s %i %s %li\n", w1, "binsearch1 returned:", r, "for term", term);
  term = 8;
  r = binsearch(term, array, 16);
  printf("%*s %i %s %li\n", w1, "binsearch returned:", r, "for term", term);
  r = binsearch1(term, array, 16);
  printf("%*s %i %s %li\n", w1, "binsearch1 returned:", r, "for term", term);
  term = -9;
  r = binsearch(term, array, 16);
  printf("%*s %i %s %li\n", w1, "binsearch returned:", r, "for term", term);
  r = binsearch1(term, array, 16);
  printf("%*s %i %s %li\n", w1, "binsearch1 returned:", r, "for term", term);
}
```