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

```asm
<__memchr>:
  endbr64
  mov    %rdi,%rax
  mov    %esi,%ecx
  test   %rdx,%rdx
  jne    L32
  jmp    L21
  nopl   0x0(%rax,%rax,1)
L269:
  cmp    %cl,(%rax)
  je     L165
  add    $0x1,%rax
  sub    $0x1,%rdx
  je     L21
L32:
  test   $0x7,%al
  jne    L269
  movzbl %sil,%esi
  mov    %esi,%edi
  shl    $0x8,%edi
  or     %edi,%esi
  movslq %esi,%rsi
  mov    %rsi,%r10
  shl    $0x10,%r10
  or     %rsi,%r10
  mov    D8(%rip),%rsi
  mov    (%rsi),%r9d
  sar    %r9d
  and    $0xfefefeff,%r9d
  cmp    $0x7,%rdx
  ja     L143
  jmp    L115
  nopl   0x0(%rax)
L261:
  mov    %rsi,%rdx
L143:
  mov    %rax,%r8
  lea    0x8(%rax),%rax
  mov    (%r8),%rdi
  xor    %r10,%rdi
  lea    (%r9,%rdi,1),%rsi
  xor    %rdi,%rsi
  or     %r9,%rsi
  cmp    $0xffffffffffffffff,%rsi
  je     L163
  cmp    %cl,-0x8(%rax)
  je     L139
  cmp    %cl,-0x7(%rax)
  je     L45
  cmp    %cl,-0x6(%rax)
  je     L149
  cmp    %cl,-0x5(%rax)
  je     L182
  cmp    %cl,-0x4(%rax)
  je     L148
  cmp    %cl,-0x3(%rax)
  je     L244
  cmp    %cl,-0x2(%rax)
  je     L24
  cmp    %cl,-0x1(%rax)
  je     L44
L163:
  lea    -0x8(%rdx),%rsi
  cmp    $0x7,%rsi
  ja     L261
  sub    $0x9,%rdx
  test   %rsi,%rsi
  je     L21
L289:
  mov    %rax,%r8
  lea    0x1(%rax,%rdx,1),%rax
  jmp    L205
  nopl   (%rax)
L129:
  add    $0x1,%r8
  cmp    %rax,%r8
  je     L21
L205:
  cmp    %cl,(%r8)
  jne    L129
L139:
  mov    %r8,%rax
  ret
  nopw   0x0(%rax,%rax,1)
L21:
  xor    %r8d,%r8d
  mov    %r8,%rax
  ret
  nopw   0x0(%rax,%rax,1)
L165:
  mov    %rax,%r8
  mov    %r8,%rax
  ret
L45:
  add    $0x1,%r8
  jmp    L139
L149:
  add    $0x2,%r8
  jmp    L139
L182:
  add    $0x3,%r8
  jmp    L139
L148:
  add    $0x4,%r8
  jmp    L139
L244:
  add    $0x5,%r8
  jmp    L139
L24:
  add    $0x6,%r8
  jmp    L139
L44:
  add    $0x7,%r8
  jmp    L139
L115:
  sub    $0x1,%rdx
  jmp    L289
```

assistant: ```c
void *__memchr(void const *s, int c_in, size_t n) {
  const unsigned char *char_ptr;
  const unsigned long int *longword_ptr;
  unsigned long int longword, magic_bits, charmask;
  unsigned char c;
  int i;
  c = (unsigned char)c_in;
  for (char_ptr = (const unsigned char *)s; n > 0 && (size_t)char_ptr % sizeof longword != 0; --n, ++char_ptr)
    if (*char_ptr == c)
      return (void *)char_ptr;
  longword_ptr = (const unsigned long int *)char_ptr;
  magic_bits = 0xfefefefe;
  charmask = c | (c << 8);
  charmask |= charmask << 16;
  magic_bits = (ULONG_MAX >> 1) & (magic_bits | 1);
  while (n >= sizeof longword) {
    longword = *longword_ptr++ ^ charmask;
    if ((((longword + magic_bits) ^ ~longword) & ~magic_bits) != 0) {
      const unsigned char *cp = (const unsigned char *)(longword_ptr - 1);
      if (cp[0] == c)
        return (void *)cp;
      if (cp[1] == c)
        return (void *)&cp[1];
      if (cp[2] == c)
        return (void *)&cp[2];
      if (cp[3] == c)
        return (void *)&cp[3];
      if (4 < sizeof longword && cp[4] == c)
        return (void *)&cp[4];
      if (5 < sizeof longword && cp[5] == c)
        return (void *)&cp[5];
      if (6 < sizeof longword && cp[6] == c)
        return (void *)&cp[6];
      if (7 < sizeof longword && cp[7] == c)
        return (void *)&cp[7];
      if (8 < sizeof longword)
        for (i = 8; i < sizeof longword; i++)
          if (cp[i] == c)
            return (void *)&cp[i];
    }
    n -= sizeof longword;
  }
  char_ptr = (const unsigned char *)longword_ptr;
  while (n-- > 0) {
    if (*char_ptr == c)
      return (void *)char_ptr;
    else
      ++char_ptr;
  }
  return 0;
}
```