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

```asm
<get_string>:
  endbr64
  movslq %edx,%r9
  mov    %rdi,%r8
  mov    %rsi,%rdi
  movabs $0x8888888888888889,%rsi
  mov    %r9,%rax
  mov    %r9,%rcx
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%r9
  movzbl (%r8,%r9,1),%eax
  lea    0x1(%rcx),%r9d
  movslq %r9d,%r9
  mov    %al,(%rdi)
  mov    %r9,%rax
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%r9
  movzbl (%r8,%r9,1),%eax
  lea    0x2(%rcx),%r9d
  movslq %r9d,%r9
  mov    %al,0x1(%rdi)
  mov    %r9,%rax
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%r9
  movzbl (%r8,%r9,1),%eax
  lea    0x3(%rcx),%r9d
  movslq %r9d,%r9
  mov    %al,0x2(%rdi)
  mov    %r9,%rax
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%r9
  movzbl (%r8,%r9,1),%eax
  lea    0x4(%rcx),%r9d
  movslq %r9d,%r9
  mov    %al,0x3(%rdi)
  mov    %r9,%rax
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%r9
  movzbl (%r8,%r9,1),%eax
  lea    0x5(%rcx),%r9d
  movslq %r9d,%r9
  mov    %al,0x4(%rdi)
  mov    %r9,%rax
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%r9
  movzbl (%r8,%r9,1),%eax
  lea    0x6(%rcx),%r9d
  movslq %r9d,%r9
  mov    %al,0x5(%rdi)
  mov    %r9,%rax
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%r9
  movzbl (%r8,%r9,1),%eax
  lea    0x7(%rcx),%r9d
  movslq %r9d,%r9
  mov    %al,0x6(%rdi)
  mov    %r9,%rax
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%r9
  movzbl (%r8,%r9,1),%eax
  lea    0x8(%rcx),%r9d
  movslq %r9d,%r9
  mov    %al,0x7(%rdi)
  mov    %r9,%rax
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%r9
  movzbl (%r8,%r9,1),%eax
  lea    0x9(%rcx),%r9d
  movslq %r9d,%r9
  mov    %al,0x8(%rdi)
  mov    %r9,%rax
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%r9
  movzbl (%r8,%r9,1),%eax
  lea    0xa(%rcx),%r9d
  movslq %r9d,%r9
  mov    %al,0x9(%rdi)
  mov    %r9,%rax
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%r9
  movzbl (%r8,%r9,1),%eax
  lea    0xb(%rcx),%r9d
  movslq %r9d,%r9
  mov    %al,0xa(%rdi)
  mov    %r9,%rax
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%r9
  movzbl (%r8,%r9,1),%eax
  lea    0xc(%rcx),%r9d
  movslq %r9d,%r9
  mov    %al,0xb(%rdi)
  mov    %r9,%rax
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%r9
  movzbl (%r8,%r9,1),%eax
  lea    0xd(%rcx),%r9d
  add    $0xe,%ecx
  movslq %r9d,%r9
  movslq %ecx,%rcx
  mov    %al,0xc(%rdi)
  mov    %r9,%rax
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%r9
  movzbl (%r8,%r9,1),%eax
  mov    %al,0xd(%rdi)
  mov    %rcx,%rax
  mul    %rsi
  shr    $0x3,%rdx
  mov    %rdx,%rax
  shl    $0x4,%rax
  sub    %rdx,%rax
  sub    %rax,%rcx
  movzbl (%r8,%rcx,1),%eax
  movb   $0x0,0xf(%rdi)
  mov    %al,0xe(%rdi)
  xor    %eax,%eax
  ret
```

assistant: ```c
int get_string(src, des, off) const char *src;
char *des;
int off;
{
  int i;
  for (i = 0; i < (int)(20 - sizeof(int) - 1); i++)
    des[i] = src[(off + i) % (20 - sizeof(int) - 1)];
  des[20 - sizeof(int) - 1] = '\0';
  return (0);
}
```