user: What is the c source code of the assembly code below:

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    $0x0,%eax
  call   <init_palette@plt>
  movq   $0xa0000,-0x8(%rbp)
  movl   $0x140,-0x10(%rbp)
  movl   $0xc8,-0xc(%rbp)
  mov    -0xc(%rbp),%eax
  lea    -0x1d(%rax),%edx
  mov    -0x10(%rbp),%eax
  lea    -0x1(%rax),%ecx
  mov    -0x10(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   %rdx
  mov    %ecx,%r9d
  mov    $0x0,%r8d
  mov    $0x0,%ecx
  mov    $0xe,%edx
  mov    %rax,%rdi
  call   <boxfill8@plt>
  add    $0x10,%rsp
  mov    -0xc(%rbp),%eax
  lea    -0x1c(%rax),%edx
  mov    -0x10(%rbp),%eax
  lea    -0x1(%rax),%edi
  mov    -0xc(%rbp),%eax
  lea    -0x1c(%rax),%ecx
  mov    -0x10(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   %rdx
  mov    %edi,%r9d
  mov    %ecx,%r8d
  mov    $0x0,%ecx
  mov    $0x8,%edx
  mov    %rax,%rdi
  call   <boxfill8@plt>
  add    $0x10,%rsp
  mov    -0xc(%rbp),%eax
  lea    -0x1b(%rax),%edx
  mov    -0x10(%rbp),%eax
  lea    -0x1(%rax),%edi
  mov    -0xc(%rbp),%eax
  lea    -0x1b(%rax),%ecx
  mov    -0x10(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   %rdx
  mov    %edi,%r9d
  mov    %ecx,%r8d
  mov    $0x0,%ecx
  mov    $0x7,%edx
  mov    %rax,%rdi
  call   <boxfill8@plt>
  add    $0x10,%rsp
  mov    -0xc(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x10(%rbp),%eax
  lea    -0x1(%rax),%edi
  mov    -0xc(%rbp),%eax
  lea    -0x1a(%rax),%ecx
  mov    -0x10(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   %rdx
  mov    %edi,%r9d
  mov    %ecx,%r8d
  mov    $0x0,%ecx
  mov    $0x8,%edx
  mov    %rax,%rdi
  call   <boxfill8@plt>
  add    $0x10,%rsp
  mov    -0xc(%rbp),%eax
  lea    -0x18(%rax),%edx
  mov    -0xc(%rbp),%eax
  lea    -0x18(%rax),%ecx
  mov    -0x10(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   %rdx
  mov    $0x3b,%r9d
  mov    %ecx,%r8d
  mov    $0x3,%ecx
  mov    $0x7,%edx
  mov    %rax,%rdi
  call   <boxfill8@plt>
  add    $0x10,%rsp
  mov    -0xc(%rbp),%eax
  lea    -0x4(%rax),%edx
  mov    -0xc(%rbp),%eax
  lea    -0x18(%rax),%ecx
  mov    -0x10(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   %rdx
  mov    $0x2,%r9d
  mov    %ecx,%r8d
  mov    $0x2,%ecx
  mov    $0x7,%edx
  mov    %rax,%rdi
  call   <boxfill8@plt>
  add    $0x10,%rsp
  mov    -0xc(%rbp),%eax
  lea    -0x4(%rax),%edx
  mov    -0xc(%rbp),%eax
  lea    -0x4(%rax),%ecx
  mov    -0x10(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   %rdx
  mov    $0x3b,%r9d
  mov    %ecx,%r8d
  mov    $0x3,%ecx
  mov    $0xf,%edx
  mov    %rax,%rdi
  call   <boxfill8@plt>
  add    $0x10,%rsp
  mov    -0xc(%rbp),%eax
  lea    -0x5(%rax),%edx
  mov    -0xc(%rbp),%eax
  lea    -0x17(%rax),%ecx
  mov    -0x10(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   %rdx
  mov    $0x3b,%r9d
  mov    %ecx,%r8d
  mov    $0x3b,%ecx
  mov    $0xf,%edx
  mov    %rax,%rdi
  call   <boxfill8@plt>
  add    $0x10,%rsp
  mov    -0xc(%rbp),%eax
  lea    -0x3(%rax),%edx
  mov    -0xc(%rbp),%eax
  lea    -0x3(%rax),%ecx
  mov    -0x10(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   %rdx
  mov    $0x3b,%r9d
  mov    %ecx,%r8d
  mov    $0x2,%ecx
  mov    $0x0,%edx
  mov    %rax,%rdi
  call   <boxfill8@plt>
  add    $0x10,%rsp
  mov    -0xc(%rbp),%eax
  lea    -0x3(%rax),%edx
  mov    -0xc(%rbp),%eax
  lea    -0x18(%rax),%ecx
  mov    -0x10(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   %rdx
  mov    $0x3c,%r9d
  mov    %ecx,%r8d
  mov    $0x3c,%ecx
  mov    $0x0,%edx
  mov    %rax,%rdi
  call   <boxfill8@plt>
  add    $0x10,%rsp
  mov    -0xc(%rbp),%eax
  lea    -0x18(%rax),%ecx
  mov    -0x10(%rbp),%eax
  lea    -0x4(%rax),%r8d
  mov    -0xc(%rbp),%eax
  lea    -0x18(%rax),%edi
  mov    -0x10(%rbp),%eax
  lea    -0x2f(%rax),%edx
  mov    -0x10(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   %rcx
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %edx,%ecx
  mov    $0xf,%edx
  mov    %rax,%rdi
  call   <boxfill8@plt>
  add    $0x10,%rsp
  mov    -0xc(%rbp),%eax
  lea    -0x4(%rax),%ecx
  mov    -0x10(%rbp),%eax
  lea    -0x2f(%rax),%r8d
  mov    -0xc(%rbp),%eax
  lea    -0x17(%rax),%edi
  mov    -0x10(%rbp),%eax
  lea    -0x2f(%rax),%edx
  mov    -0x10(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   %rcx
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %edx,%ecx
  mov    $0xf,%edx
  mov    %rax,%rdi
  call   <boxfill8@plt>
  add    $0x10,%rsp
  mov    -0xc(%rbp),%eax
  lea    -0x3(%rax),%ecx
  mov    -0x10(%rbp),%eax
  lea    -0x4(%rax),%r8d
  mov    -0xc(%rbp),%eax
  lea    -0x3(%rax),%edi
  mov    -0x10(%rbp),%eax
  lea    -0x2f(%rax),%edx
  mov    -0x10(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   %rcx
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %edx,%ecx
  mov    $0x7,%edx
  mov    %rax,%rdi
  call   <boxfill8@plt>
  add    $0x10,%rsp
  mov    -0xc(%rbp),%eax
  lea    -0x3(%rax),%ecx
  mov    -0x10(%rbp),%eax
  lea    -0x3(%rax),%r8d
  mov    -0xc(%rbp),%eax
  lea    -0x18(%rax),%edi
  mov    -0x10(%rbp),%eax
  lea    -0x3(%rax),%edx
  mov    -0x10(%rbp),%esi
  mov    -0x8(%rbp),%rax
  sub    $0x8,%rsp
  push   %rcx
  mov    %r8d,%r9d
  mov    %edi,%r8d
  mov    %edx,%ecx
  mov    $0x7,%edx
  mov    %rax,%rdi
  call   <boxfill8@plt>
  add    $0x10,%rsp
L6:
  mov    $0x0,%eax
  call   <_io_hlt@plt>
  jmp    L6
```

assistant: ```c
void main() {
  init_palette();
  char *vram;
  int xsize, ysize;
  vram = (char *)0xa0000;
  xsize = 320;
  ysize = 200;
  boxfill8(vram, xsize, 14, 0, 0, xsize - 1, ysize - 29);
  boxfill8(vram, xsize, 8, 0, ysize - 28, xsize - 1, ysize - 28);
  boxfill8(vram, xsize, 7, 0, ysize - 27, xsize - 1, ysize - 27);
  boxfill8(vram, xsize, 8, 0, ysize - 26, xsize - 1, ysize - 1);
  boxfill8(vram, xsize, 7, 3, ysize - 24, 59, ysize - 24);
  boxfill8(vram, xsize, 7, 2, ysize - 24, 2, ysize - 4);
  boxfill8(vram, xsize, 15, 3, ysize - 4, 59, ysize - 4);
  boxfill8(vram, xsize, 15, 59, ysize - 23, 59, ysize - 5);
  boxfill8(vram, xsize, 0, 2, ysize - 3, 59, ysize - 3);
  boxfill8(vram, xsize, 0, 60, ysize - 24, 60, ysize - 3);
  boxfill8(vram, xsize, 15, xsize - 47, ysize - 24, xsize - 4, ysize - 24);
  boxfill8(vram, xsize, 15, xsize - 47, ysize - 23, xsize - 47, ysize - 4);
  boxfill8(vram, xsize, 7, xsize - 47, ysize - 3, xsize - 4, ysize - 3);
  boxfill8(vram, xsize, 7, xsize - 3, ysize - 24, xsize - 3, ysize - 3);
  for (;;) {
    _io_hlt();
  }
}
```