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

```asm
<get_10_pixel>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  mov    %edx,-0x20(%rbp)
  mov    %ecx,-0x24(%rbp)
  mov    -0x24(%rbp),%eax
  imul   -0x1c(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x20(%rbp),%eax
  shr    $0x3,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  mov    %eax,%eax
  add    %rcx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x20(%rbp),%eax
  and    $0x7,%eax
  cmp    $0x7,%eax
  ja     L87
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D6(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D6(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    -0x8(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movzwl %ax,%eax
  shl    $0x2,%eax
  and    $0x3fc,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    (%rax),%eax
  sar    $0x6,%eax
  or     %edx,%eax
  jmp    L31
  mov    -0x8(%rbp),%rax
  mov    (%rax),%eax
  movzwl %ax,%eax
  shl    $0x4,%eax
  and    $0x3f0,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  sar    $0x4,%eax
  or     %edx,%eax
  jmp    L31
  mov    -0x8(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  movzwl %ax,%eax
  shl    $0x6,%eax
  and    $0x3c0,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  sar    $0x2,%eax
  or     %edx,%eax
  jmp    L31
  mov    -0x8(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  movzwl %ax,%eax
  shl    $0x8,%eax
  and    $0x300,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  or     %edx,%eax
  jmp    L31
  mov    -0x8(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  movzwl %ax,%eax
  shl    $0x2,%eax
  and    $0x3fc,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%eax
  sar    $0x6,%eax
  or     %edx,%eax
  jmp    L31
  mov    -0x8(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%eax
  movzwl %ax,%eax
  shl    $0x4,%eax
  and    $0x3f0,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  sar    $0x4,%eax
  or     %edx,%eax
  jmp    L31
  mov    -0x8(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  movzwl %ax,%eax
  shl    $0x6,%eax
  and    $0x3c0,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0x24,%rax
  mov    (%rax),%eax
  sar    $0x2,%eax
  or     %edx,%eax
  jmp    L31
  mov    -0x8(%rbp),%rax
  add    $0x24,%rax
  mov    (%rax),%eax
  movzwl %ax,%eax
  shl    $0x8,%eax
  and    $0x300,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0x20,%rax
  mov    (%rax),%eax
  or     %edx,%eax
  jmp    L31
L87:
  mov    $0x0,%eax
L31:
  pop    %rbp
  ret
```

assistant: ```c
unsigned get_10_pixel(uint8_t *p, unsigned row_bytes, unsigned x, unsigned y) {
  uint8_t *addr = p + y * row_bytes + (x >> 3) * 10;
  switch (x & 7) {
  case 0:
    return ((0x3fc & (((unsigned short)addr[1]) << 2)) | (addr[0] >> 6));
  case 1:
    return ((0x3f0 & (((unsigned short)addr[0]) << 4)) | (addr[3] >> 4));
  case 2:
    return ((0x3c0 & (((unsigned short)addr[3]) << 6)) | (addr[2] >> 2));
  case 3:
    return ((0x300 & (((unsigned short)addr[2]) << 8)) | (addr[5]));
  case 4:
    return ((0x3fc & (((unsigned short)addr[4]) << 2)) | (addr[7] >> 6));
  case 5:
    return ((0x3f0 & (((unsigned short)addr[7]) << 4)) | (addr[6] >> 4));
  case 6:
    return ((0x3c0 & (((unsigned short)addr[6]) << 6)) | (addr[9] >> 2));
  case 7:
    return ((0x300 & (((unsigned short)addr[9]) << 8)) | (addr[8]));
  }
  return 0;
}
```