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

```asm
<main>:
  endbr64
  push   %rbx
  mov    $0x4,%edi
  call   <xoinit@plt>
  mov    $0x0,%edi
  call   <xopalette@plt>
  mov    $0x1,%ebx
  jmp    L7
L17:
  mov    %rax,%rdx
  add    $0x50,%rax
L40:
  movb   $0xff,(%rdx)
  add    $0x1,%rdx
  cmp    %rax,%rdx
  jne    L40
  cmp    $0xc7,%ebx
  jg     L11
L0:
  add    $0x1,%ebx
L7:
  lea    -0x1(%rbx),%edi
  call   <xodirectline@plt>
  lea    -0x3(%rbx),%edx
  cmp    $0xc3,%edx
  ja     L17
  movb   $0xf0,(%rax)
  movb   $0x0,0x1(%rax)
  movb   $0x0,0x2(%rax)
  movb   $0x0,0x3(%rax)
  movb   $0x0,0x4(%rax)
  movb   $0x11,0x5(%rax)
  movb   $0x11,0x6(%rax)
  movb   $0x11,0x7(%rax)
  movb   $0x11,0x8(%rax)
  movb   $0x11,0x9(%rax)
  movb   $0x22,0xa(%rax)
  movb   $0x22,0xb(%rax)
  movb   $0x22,0xc(%rax)
  movb   $0x22,0xd(%rax)
  movb   $0x22,0xe(%rax)
  movb   $0x33,0xf(%rax)
  movb   $0x33,0x10(%rax)
  movb   $0x33,0x11(%rax)
  movb   $0x33,0x12(%rax)
  movb   $0x33,0x13(%rax)
  movb   $0x44,0x14(%rax)
  movb   $0x44,0x15(%rax)
  movb   $0x44,0x16(%rax)
  movb   $0x44,0x17(%rax)
  movb   $0x44,0x18(%rax)
  movb   $0x55,0x19(%rax)
  movb   $0x55,0x1a(%rax)
  movb   $0x55,0x1b(%rax)
  movb   $0x55,0x1c(%rax)
  movb   $0x55,0x1d(%rax)
  movb   $0x66,0x1e(%rax)
  movb   $0x66,0x1f(%rax)
  movb   $0x66,0x20(%rax)
  movb   $0x66,0x21(%rax)
  movb   $0x66,0x22(%rax)
  movb   $0x77,0x23(%rax)
  movb   $0x77,0x24(%rax)
  movb   $0x77,0x25(%rax)
  movb   $0x77,0x26(%rax)
  movb   $0x77,0x27(%rax)
  movb   $0x88,0x28(%rax)
  movb   $0x88,0x29(%rax)
  movb   $0x88,0x2a(%rax)
  movb   $0x88,0x2b(%rax)
  movb   $0x88,0x2c(%rax)
  movb   $0x99,0x2d(%rax)
  movb   $0x99,0x2e(%rax)
  movb   $0x99,0x2f(%rax)
  movb   $0x99,0x30(%rax)
  movb   $0x99,0x31(%rax)
  movb   $0xaa,0x32(%rax)
  movb   $0xaa,0x33(%rax)
  movb   $0xaa,0x34(%rax)
  movb   $0xaa,0x35(%rax)
  movb   $0xaa,0x36(%rax)
  movb   $0xbb,0x37(%rax)
  movb   $0xbb,0x38(%rax)
  movb   $0xbb,0x39(%rax)
  movb   $0xbb,0x3a(%rax)
  movb   $0xbb,0x3b(%rax)
  movb   $0xcc,0x3c(%rax)
  movb   $0xcc,0x3d(%rax)
  movb   $0xcc,0x3e(%rax)
  movb   $0xcc,0x3f(%rax)
  movb   $0xcc,0x40(%rax)
  movb   $0xdd,0x41(%rax)
  movb   $0xdd,0x42(%rax)
  movb   $0xdd,0x43(%rax)
  movb   $0xdd,0x44(%rax)
  movb   $0xdd,0x45(%rax)
  movb   $0xee,0x46(%rax)
  movb   $0xee,0x47(%rax)
  movb   $0xee,0x48(%rax)
  movb   $0xee,0x49(%rax)
  movb   $0xee,0x4a(%rax)
  movb   $0xff,0x4b(%rax)
  movb   $0xff,0x4c(%rax)
  movb   $0xff,0x4d(%rax)
  movb   $0xff,0x4e(%rax)
  movb   $0xff,0x4f(%rax)
  jmp    L0
L11:
  mov    $0x0,%eax
  pop    %rbx
  ret
```

assistant: ```c
int main() {
  int i, y;
  unsigned char *p;
  xoinit(4);
  xopalette(0);
  for (y = 0; y < 200; y++) {
    p = xodirectline(y);
    if (y < 2 || y >= 198) {
      for (i = 0; i < 80; i++)
        p[i] = 0xFF;
      continue;
    }
    p[0] = 0xF0;
    for (i = 1; i < 5; i++)
      p[i] = 0x00;
    for (i = 5; i < 10; i++)
      p[i] = 0x11;
    for (i = 10; i < 15; i++)
      p[i] = 0x22;
    for (i = 15; i < 20; i++)
      p[i] = 0x33;
    for (i = 20; i < 25; i++)
      p[i] = 0x44;
    for (i = 25; i < 30; i++)
      p[i] = 0x55;
    for (i = 30; i < 35; i++)
      p[i] = 0x66;
    for (i = 35; i < 40; i++)
      p[i] = 0x77;
    for (i = 40; i < 45; i++)
      p[i] = 0x88;
    for (i = 45; i < 50; i++)
      p[i] = 0x99;
    for (i = 50; i < 55; i++)
      p[i] = 0xAA;
    for (i = 55; i < 60; i++)
      p[i] = 0xBB;
    for (i = 60; i < 65; i++)
      p[i] = 0xCC;
    for (i = 65; i < 70; i++)
      p[i] = 0xDD;
    for (i = 70; i < 75; i++)
      p[i] = 0xEE;
    for (i = 75; i < 80; i++)
      p[i] = 0xFF;
  }
  return 0;
}
```