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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    $0x0,%eax
  call   <erase@plt>
  movl   $0x0,-0x8(%rbp)
  jmp    L5
L23:
  movl   $0x0,-0x4(%rbp)
  jmp    L17
L18:
  mov    -0x4(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  lea    0x15(%rax),%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <draw_piece@plt>
  addl   $0x1,-0x4(%rbp)
L17:
  cmpl   $0x7,-0x4(%rbp)
  jle    L18
  addl   $0x1,-0x8(%rbp)
L5:
  cmpl   $0x7,-0x8(%rbp)
  jle    L23
  mov    $0x15,%esi
  mov    $0x5,%edi
  call   <draw_piece@plt>
  mov    $0x16,%esi
  mov    $0x3,%edi
  call   <draw_piece@plt>
  mov    $0x17,%esi
  mov    $0x4,%edi
  call   <draw_piece@plt>
  mov    $0x18,%esi
  mov    $0x6,%edi
  call   <draw_piece@plt>
  mov    $0x19,%esi
  mov    $0x7,%edi
  call   <draw_piece@plt>
  mov    $0x1a,%esi
  mov    $0x4,%edi
  call   <draw_piece@plt>
  mov    $0x1b,%esi
  mov    $0x3,%edi
  call   <draw_piece@plt>
  mov    $0x1c,%esi
  mov    $0x5,%edi
  call   <draw_piece@plt>
  mov    $0x1f,%esi
  mov    $0x2,%edi
  call   <draw_piece@plt>
  mov    $0x20,%esi
  mov    $0x2,%edi
  call   <draw_piece@plt>
  mov    $0x21,%esi
  mov    $0x2,%edi
  call   <draw_piece@plt>
  mov    $0x22,%esi
  mov    $0x2,%edi
  call   <draw_piece@plt>
  mov    $0x23,%esi
  mov    $0x2,%edi
  call   <draw_piece@plt>
  mov    $0x24,%esi
  mov    $0x2,%edi
  call   <draw_piece@plt>
  mov    $0x25,%esi
  mov    $0x2,%edi
  call   <draw_piece@plt>
  mov    $0x26,%esi
  mov    $0x2,%edi
  call   <draw_piece@plt>
  mov    $0x51,%esi
  mov    $0xc,%edi
  call   <draw_piece@plt>
  mov    $0x52,%esi
  mov    $0xc,%edi
  call   <draw_piece@plt>
  mov    $0x53,%esi
  mov    $0xc,%edi
  call   <draw_piece@plt>
  mov    $0x54,%esi
  mov    $0xc,%edi
  call   <draw_piece@plt>
  mov    $0x55,%esi
  mov    $0xc,%edi
  call   <draw_piece@plt>
  mov    $0x56,%esi
  mov    $0xc,%edi
  call   <draw_piece@plt>
  mov    $0x57,%esi
  mov    $0xc,%edi
  call   <draw_piece@plt>
  mov    $0x58,%esi
  mov    $0xc,%edi
  call   <draw_piece@plt>
  mov    $0x5b,%esi
  mov    $0xf,%edi
  call   <draw_piece@plt>
  mov    $0x5c,%esi
  mov    $0xd,%edi
  call   <draw_piece@plt>
  mov    $0x5d,%esi
  mov    $0xe,%edi
  call   <draw_piece@plt>
  mov    $0x5e,%esi
  mov    $0x10,%edi
  call   <draw_piece@plt>
  mov    $0x5f,%esi
  mov    $0x11,%edi
  call   <draw_piece@plt>
  mov    $0x60,%esi
  mov    $0xe,%edi
  call   <draw_piece@plt>
  mov    $0x61,%esi
  mov    $0xd,%edi
  call   <draw_piece@plt>
  mov    $0x62,%esi
  mov    $0xf,%edi
  call   <draw_piece@plt>
  mov    $0x36,%esi
  mov    $0x6,%edi
  call   <draw_piece@plt>
  mov    $0x37,%esi
  mov    $0x7,%edi
  call   <draw_piece@plt>
  mov    $0x40,%esi
  mov    $0x10,%edi
  call   <draw_piece@plt>
  mov    $0x41,%esi
  mov    $0x11,%edi
  call   <draw_piece@plt>
  mov    $0x0,%eax
  call   <draw_border@plt>
  mov    $0x0,%eax
  call   <draw_labels@plt>
  mov    $0x0,%eax
  leave
  ret
```

assistant: ```c
main() {
  int r, f;
  erase();
  for (r = 0; r < 8; r++)
    for (f = 0; f < 8; f++)
      draw_piece(0, 21 + f * 10 + r);
  draw_piece(5, 21);
  draw_piece(3, 22);
  draw_piece(4, 23);
  draw_piece(6, 24);
  draw_piece(7, 25);
  draw_piece(4, 26);
  draw_piece(3, 27);
  draw_piece(5, 28);
  draw_piece(2, 31);
  draw_piece(2, 32);
  draw_piece(2, 33);
  draw_piece(2, 34);
  draw_piece(2, 35);
  draw_piece(2, 36);
  draw_piece(2, 37);
  draw_piece(2, 38);
  draw_piece(12, 81);
  draw_piece(12, 82);
  draw_piece(12, 83);
  draw_piece(12, 84);
  draw_piece(12, 85);
  draw_piece(12, 86);
  draw_piece(12, 87);
  draw_piece(12, 88);
  draw_piece(15, 91);
  draw_piece(13, 92);
  draw_piece(14, 93);
  draw_piece(16, 94);
  draw_piece(17, 95);
  draw_piece(14, 96);
  draw_piece(13, 97);
  draw_piece(15, 98);
  draw_piece(6, 54);
  draw_piece(7, 55);
  draw_piece(16, 64);
  draw_piece(17, 65);
  draw_border();
  draw_labels();
}
```