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

```asm
<print_board>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%rbp
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D90(%rip),%rbx
  mov    %rbx,%rdi
  call   <puts@plt>
  lea    D57(%rip),%rdi
  call   <puts@plt>
  mov    %rbx,%rdi
  call   <puts@plt>
  add    $0x20,%rbp
  mov    $0x0,%r12d
  lea    D100(%rip),%r15
  jmp    L13
L37:
  call   <piece_name@plt>
  mov    %rax,%rsi
  mov    %r13,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L33:
  add    $0x4,%rbx
  cmp    %rbp,%rbx
  je     L51
L62:
  mov    (%rbx),%edi
  test   %edi,%edi
  jg     L37
  js     L57
  mov    %r15,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L33
L57:
  call   <piece_name@plt>
  mov    %rax,%rsi
  mov    %r14,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L33
L51:
  mov    %r12d,%esi
  lea    D61(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D87(%rip),%rdi
  call   <puts@plt>
  add    $0x20,%rbp
  cmp    $0x8,%r12d
  je     L4
L13:
  lea    D87(%rip),%rdi
  call   <puts@plt>
  add    $0x1,%r12d
  mov    %r12d,%esi
  lea    D25(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x20(%rbp),%rbx
  lea    D19(%rip),%r14
  lea    D103(%rip),%r13
  jmp    L62
L4:
  lea    D90(%rip),%rbx
  mov    %rbx,%rdi
  call   <puts@plt>
  lea    D57(%rip),%rdi
  call   <puts@plt>
  mov    %rbx,%rdi
  call   <puts@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: read_data
arguments: data_label: D90
type_infered: string
name: read_data
arguments: data_label: D57
type_infered: string
name: read_data
arguments: data_label: D100
type_infered: string
name: read_data
arguments: data_label: D61
type_infered: string
name: read_data
arguments: data_label: D87
type_infered: string
name: read_data
arguments: data_label: D25
type_infered: string
name: read_data
arguments: data_label: D19
type_infered: string
name: read_data
arguments: data_label: D103
type_infered: string

tool: D90: ## ## ***************************************************************** ## ##

tool: D57:   *   |   A   |   B   |   C   |   D   |   E   |   F   |   G   |   H   |   *  

tool: D100: 0	

tool: D61: | %d |


tool: D87: *****                                                                   *****

tool: D25: | %d |	

tool: D19: b%s	

tool: D103: w%s	

assistant: ```c
void print_board(int boardcopy[8][8]) {
  int a, b;
  printf("\n");
  printf("## ## ***************************************************************** ## ##\n");
  printf("  *   |   A   |   B   |   C   |   D   |   E   |   F   |   G   |   H   |   *  \n");
  printf("## ## ***************************************************************** ## ##\n");
  for (a = 0; a < 8; a++) {
    printf("*****                                                                   *****\n");
    printf("| %d |\t", a + 1);
    for (b = 0; b < 8; b++) {
      if (boardcopy[a][b] > 0)
        printf("w%s\t", piece_name(boardcopy[a][b]));
      else if (boardcopy[a][b] < 0)
        printf("b%s\t", piece_name(boardcopy[a][b]));
      else
        printf("0\t");
    }
    printf("| %d |\n", a + 1);
    printf("*****                                                                   *****\n");
  }
  printf("## ## ***************************************************************** ## ##\n");
  printf("  *   |   A   |   B   |   C   |   D   |   E   |   F   |   G   |   H   |   *  \n");
  printf("## ## ***************************************************************** ## ##\n");
}
```