user: Demonstrate the C code that generates the assembly output below:

```asm
<bmp_dump>:
  endbr64
  mov    %rdi,%rax
  mov    %rsi,%r10
  lea    -0x4a400(%rsi),%r8
  sub    $0x260,%rsp
  lea    0x62ffc(%rdi),%r9
  lea    -0x49fe0(%rsi),%rdi
  lea    0x62a7c(%rax),%rsi
L39:
  lea    0x4(%rsi),%rax
  mov    %r8,%rdx
  cmp    %rdi,%rax
  jae    L37
  lea    0x583(%rsi),%rax
  cmp    %rax,%r8
  jb     L45
L37:
  mov    %r9,%rax
  nopl   0x0(%rax)
L1:
  movdqu (%rdx),%xmm2
  movdqu 0x10(%rdx),%xmm1
  add    $0x30,%rdx
  sub    $0x40,%rax
  movdqu -0x10(%rdx),%xmm0
  movd   %xmm2,%ecx
  mov    %cl,0x40(%rax)
  movaps %xmm2,0x248(%rsp)
  movzbl 0x249(%rsp),%ecx
  mov    %cl,0x41(%rax)
  movaps %xmm2,0x238(%rsp)
  movzbl 0x23a(%rsp),%ecx
  mov    %cl,0x42(%rax)
  movaps %xmm2,0x228(%rsp)
  movzbl 0x22b(%rsp),%ecx
  mov    %cl,0x3c(%rax)
  movaps %xmm2,0x218(%rsp)
  movzbl 0x21c(%rsp),%ecx
  mov    %cl,0x3d(%rax)
  movaps %xmm2,0x208(%rsp)
  movzbl 0x20d(%rsp),%ecx
  mov    %cl,0x3e(%rax)
  movaps %xmm2,0x1f8(%rsp)
  movzbl 0x1fe(%rsp),%ecx
  mov    %cl,0x38(%rax)
  movaps %xmm2,0x1e8(%rsp)
  movzbl 0x1ef(%rsp),%ecx
  mov    %cl,0x39(%rax)
  movaps %xmm2,0x1d8(%rsp)
  movzbl 0x1e0(%rsp),%ecx
  mov    %cl,0x3a(%rax)
  movaps %xmm2,0x1c8(%rsp)
  movzbl 0x1d1(%rsp),%ecx
  mov    %cl,0x34(%rax)
  movaps %xmm2,0x1b8(%rsp)
  movzbl 0x1c2(%rsp),%ecx
  mov    %cl,0x35(%rax)
  movaps %xmm2,0x1a8(%rsp)
  movzbl 0x1b3(%rsp),%ecx
  mov    %cl,0x36(%rax)
  movaps %xmm2,0x198(%rsp)
  movzbl 0x1a4(%rsp),%ecx
  mov    %cl,0x30(%rax)
  movaps %xmm2,0x188(%rsp)
  movzbl 0x195(%rsp),%ecx
  mov    %cl,0x31(%rax)
  movaps %xmm2,0x178(%rsp)
  movzbl 0x186(%rsp),%ecx
  mov    %cl,0x32(%rax)
  movaps %xmm2,0x168(%rsp)
  movzbl 0x177(%rsp),%ecx
  mov    %cl,0x2c(%rax)
  movd   %xmm1,%ecx
  mov    %cl,0x2d(%rax)
  movaps %xmm1,0x158(%rsp)
  movzbl 0x159(%rsp),%ecx
  mov    %cl,0x2e(%rax)
  movaps %xmm1,0x148(%rsp)
  movzbl 0x14a(%rsp),%ecx
  mov    %cl,0x28(%rax)
  movaps %xmm1,0x138(%rsp)
  movzbl 0x13b(%rsp),%ecx
  mov    %cl,0x29(%rax)
  movaps %xmm1,0x128(%rsp)
  movzbl 0x12c(%rsp),%ecx
  mov    %cl,0x2a(%rax)
  movaps %xmm1,0x118(%rsp)
  movzbl 0x11d(%rsp),%ecx
  mov    %cl,0x24(%rax)
  movaps %xmm1,0x108(%rsp)
  movzbl 0x10e(%rsp),%ecx
  mov    %cl,0x25(%rax)
  movaps %xmm1,0xf8(%rsp)
  movzbl 0xff(%rsp),%ecx
  mov    %cl,0x26(%rax)
  movaps %xmm1,0xe8(%rsp)
  movzbl 0xf0(%rsp),%ecx
  mov    %cl,0x20(%rax)
  movaps %xmm1,0xd8(%rsp)
  movzbl 0xe1(%rsp),%ecx
  mov    %cl,0x21(%rax)
  movaps %xmm1,0xc8(%rsp)
  movzbl 0xd2(%rsp),%ecx
  mov    %cl,0x22(%rax)
  movaps %xmm1,0xb8(%rsp)
  movzbl 0xc3(%rsp),%ecx
  mov    %cl,0x1c(%rax)
  movaps %xmm1,0xa8(%rsp)
  movzbl 0xb4(%rsp),%ecx
  mov    %cl,0x1d(%rax)
  movaps %xmm1,0x98(%rsp)
  movzbl 0xa5(%rsp),%ecx
  mov    %cl,0x1e(%rax)
  movaps %xmm1,0x88(%rsp)
  movzbl 0x96(%rsp),%ecx
  mov    %cl,0x18(%rax)
  movaps %xmm1,0x78(%rsp)
  movzbl 0x87(%rsp),%ecx
  mov    %cl,0x19(%rax)
  movd   %xmm0,%ecx
  mov    %cl,0x1a(%rax)
  movaps %xmm0,0x68(%rsp)
  movzbl 0x69(%rsp),%ecx
  mov    %cl,0x14(%rax)
  movaps %xmm0,0x58(%rsp)
  movzbl 0x5a(%rsp),%ecx
  mov    %cl,0x15(%rax)
  movaps %xmm0,0x48(%rsp)
  movzbl 0x4b(%rsp),%ecx
  mov    %cl,0x16(%rax)
  movaps %xmm0,0x38(%rsp)
  movzbl 0x3c(%rsp),%ecx
  mov    %cl,0x10(%rax)
  movaps %xmm0,0x28(%rsp)
  movzbl 0x2d(%rsp),%ecx
  mov    %cl,0x11(%rax)
  movaps %xmm0,0x18(%rsp)
  movzbl 0x1e(%rsp),%ecx
  mov    %cl,0x12(%rax)
  movaps %xmm0,0x8(%rsp)
  movzbl 0xf(%rsp),%ecx
  mov    %cl,0xc(%rax)
  movaps %xmm0,-0x8(%rsp)
  movzbl (%rsp),%ecx
  mov    %cl,0xd(%rax)
  movaps %xmm0,-0x18(%rsp)
  movzbl -0xf(%rsp),%ecx
  mov    %cl,0xe(%rax)
  movaps %xmm0,-0x28(%rsp)
  movzbl -0x1e(%rsp),%ecx
  mov    %cl,0x8(%rax)
  movaps %xmm0,-0x38(%rsp)
  movzbl -0x2d(%rsp),%ecx
  mov    %cl,0x9(%rax)
  movaps %xmm0,-0x48(%rsp)
  movzbl -0x3c(%rsp),%ecx
  mov    %cl,0xa(%rax)
  movaps %xmm0,-0x58(%rsp)
  movzbl -0x4b(%rsp),%ecx
  mov    %cl,0x4(%rax)
  movaps %xmm0,-0x68(%rsp)
  movzbl -0x5a(%rsp),%ecx
  mov    %cl,0x5(%rax)
  movaps %xmm0,-0x78(%rsp)
  movzbl -0x69(%rsp),%ecx
  mov    %cl,0x6(%rax)
  cmp    %rdi,%rdx
  jne    L1
L53:
  sub    $0x580,%r9
  add    $0x420,%r8
  lea    0x420(%rdi),%rax
  sub    $0x580,%rsi
  cmp    %r10,%rdi
  je     L55
  mov    %rax,%rdi
  jmp    L39
L45:
  mov    %r9,%rax
  nopl   0x0(%rax)
L49:
  movzbl (%rdx),%ecx
  sub    $0x4,%rax
  add    $0x3,%rdx
  mov    %cl,0x4(%rax)
  movzbl -0x2(%rdx),%ecx
  mov    %cl,0x5(%rax)
  movzbl -0x1(%rdx),%ecx
  mov    %cl,0x6(%rax)
  cmp    %rsi,%rax
  jne    L49
  jmp    L53
L55:
  add    $0x260,%rsp
  ret
```

assistant: ```c
void bmp_dump(unsigned char *dst, unsigned char *raw) {
  unsigned int y, x = 0;
  unsigned char *top = raw - (352 * 288) * 3;
  unsigned char *t = top;
  dst = dst + (352 * 288 * 4) - 4;
  for (y = 0; y < 288; y++) {
    for (x = 0; x < 352; x++) {
      dst[0] = t[0];
      dst[1] = t[1];
      dst[2] = t[2];
      dst -= 4;
      t += 3;
    }
  }
}
```