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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    $0x4,%edi
  call   <xoinit@plt>
  mov    $0x0,%edi
  call   <xopalette@plt>
  movl   $0x0,-0xc(%rbp)
  jmp    L37
L276:
  mov    -0xc(%rbp),%eax
  mov    %eax,%edi
  call   <xodirectline@plt>
  mov    %rax,-0x8(%rbp)
  cmpl   $0x1,-0xc(%rbp)
  jle    L216
  cmpl   $0xc5,-0xc(%rbp)
  jle    L336
L216:
  movl   $0x0,-0x10(%rbp)
  jmp    L113
L19:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0xff,(%rax)
  addl   $0x1,-0x10(%rbp)
L113:
  cmpl   $0x4f,-0x10(%rbp)
  jle    L19
  jmp    L188
L336:
  mov    -0x8(%rbp),%rax
  movb   $0xf0,(%rax)
  movl   $0x1,-0x10(%rbp)
  jmp    L291
L274:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0x0,(%rax)
  addl   $0x1,-0x10(%rbp)
L291:
  cmpl   $0x4,-0x10(%rbp)
  jle    L274
  movl   $0x5,-0x10(%rbp)
  jmp    L2
L360:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0x11,(%rax)
  addl   $0x1,-0x10(%rbp)
L2:
  cmpl   $0x9,-0x10(%rbp)
  jle    L360
  movl   $0xa,-0x10(%rbp)
  jmp    L350
L225:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0x22,(%rax)
  addl   $0x1,-0x10(%rbp)
L350:
  cmpl   $0xe,-0x10(%rbp)
  jle    L225
  movl   $0xf,-0x10(%rbp)
  jmp    L104
L293:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0x33,(%rax)
  addl   $0x1,-0x10(%rbp)
L104:
  cmpl   $0x13,-0x10(%rbp)
  jle    L293
  movl   $0x14,-0x10(%rbp)
  jmp    L272
L257:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0x44,(%rax)
  addl   $0x1,-0x10(%rbp)
L272:
  cmpl   $0x18,-0x10(%rbp)
  jle    L257
  movl   $0x19,-0x10(%rbp)
  jmp    L348
L352:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0x55,(%rax)
  addl   $0x1,-0x10(%rbp)
L348:
  cmpl   $0x1d,-0x10(%rbp)
  jle    L352
  movl   $0x1e,-0x10(%rbp)
  jmp    L330
L206:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0x66,(%rax)
  addl   $0x1,-0x10(%rbp)
L330:
  cmpl   $0x22,-0x10(%rbp)
  jle    L206
  movl   $0x23,-0x10(%rbp)
  jmp    L358
L12:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0x77,(%rax)
  addl   $0x1,-0x10(%rbp)
L358:
  cmpl   $0x27,-0x10(%rbp)
  jle    L12
  movl   $0x28,-0x10(%rbp)
  jmp    L132
L147:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0x88,(%rax)
  addl   $0x1,-0x10(%rbp)
L132:
  cmpl   $0x2c,-0x10(%rbp)
  jle    L147
  movl   $0x2d,-0x10(%rbp)
  jmp    L364
L238:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0x99,(%rax)
  addl   $0x1,-0x10(%rbp)
L364:
  cmpl   $0x31,-0x10(%rbp)
  jle    L238
  movl   $0x32,-0x10(%rbp)
  jmp    L343
L137:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0xaa,(%rax)
  addl   $0x1,-0x10(%rbp)
L343:
  cmpl   $0x36,-0x10(%rbp)
  jle    L137
  movl   $0x37,-0x10(%rbp)
  jmp    L15
L144:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0xbb,(%rax)
  addl   $0x1,-0x10(%rbp)
L15:
  cmpl   $0x3b,-0x10(%rbp)
  jle    L144
  movl   $0x3c,-0x10(%rbp)
  jmp    L305
L244:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0xcc,(%rax)
  addl   $0x1,-0x10(%rbp)
L305:
  cmpl   $0x40,-0x10(%rbp)
  jle    L244
  movl   $0x41,-0x10(%rbp)
  jmp    L191
L158:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0xdd,(%rax)
  addl   $0x1,-0x10(%rbp)
L191:
  cmpl   $0x45,-0x10(%rbp)
  jle    L158
  movl   $0x46,-0x10(%rbp)
  jmp    L100
L55:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0xee,(%rax)
  addl   $0x1,-0x10(%rbp)
L100:
  cmpl   $0x4a,-0x10(%rbp)
  jle    L55
  movl   $0x4b,-0x10(%rbp)
  jmp    L91
L1:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rdx,%rax
  movb   $0xff,(%rax)
  addl   $0x1,-0x10(%rbp)
L91:
  cmpl   $0x4f,-0x10(%rbp)
  jle    L1
L188:
  addl   $0x1,-0xc(%rbp)
L37:
  cmpl   $0xc7,-0xc(%rbp)
  jle    L276
  mov    $0x0,%eax
  leave
  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;
}
```