user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<expand0>:
  endbr64
  movzbl (%rdi),%ecx
  sar    $0x7,%ecx
  mov    %cl,(%rsi)
  movzbl (%rdi),%ecx
  sar    $0x6,%ecx
  and    $0x1,%ecx
  mov    %cl,0x1(%rsi)
  movzbl (%rdi),%ecx
  sar    $0x5,%ecx
  and    $0x1,%ecx
  mov    %cl,0x2(%rsi)
  movzbl (%rdi),%ecx
  sar    $0x4,%ecx
  and    $0x1,%ecx
  mov    %cl,0x3(%rsi)
  movzbl (%rdi),%ecx
  sar    $0x3,%ecx
  and    $0x1,%ecx
  mov    %cl,0x4(%rsi)
  movzbl (%rdi),%ecx
  sar    $0x2,%ecx
  and    $0x1,%ecx
  mov    %cl,0x5(%rsi)
  movzbl (%rdi),%ecx
  sar    %ecx
  and    $0x1,%ecx
  mov    %cl,0x6(%rsi)
  movzbl (%rdi),%ecx
  and    $0x1,%ecx
  mov    %cl,0x7(%rsi)
  movzbl 0x1(%rdi),%ecx
  sar    $0x7,%ecx
  mov    %cl,0x8(%rsi)
  movzbl 0x1(%rdi),%ecx
  sar    $0x6,%ecx
  and    $0x1,%ecx
  mov    %cl,0x9(%rsi)
  movzbl 0x1(%rdi),%ecx
  sar    $0x5,%ecx
  and    $0x1,%ecx
  mov    %cl,0xa(%rsi)
  movzbl 0x1(%rdi),%ecx
  sar    $0x4,%ecx
  and    $0x1,%ecx
  mov    %cl,0xb(%rsi)
  movzbl 0x1(%rdi),%ecx
  sar    $0x3,%ecx
  and    $0x1,%ecx
  mov    %cl,0xc(%rsi)
  movzbl 0x1(%rdi),%ecx
  sar    $0x2,%ecx
  and    $0x1,%ecx
  mov    %cl,0xd(%rsi)
  movzbl 0x1(%rdi),%ecx
  sar    %ecx
  and    $0x1,%ecx
  mov    %cl,0xe(%rsi)
  movzbl 0x1(%rdi),%ecx
  and    $0x1,%ecx
  mov    %cl,0xf(%rsi)
  movzbl 0x2(%rdi),%ecx
  sar    $0x7,%ecx
  mov    %cl,0x10(%rsi)
  movzbl 0x2(%rdi),%ecx
  sar    $0x6,%ecx
  and    $0x1,%ecx
  mov    %cl,0x11(%rsi)
  movzbl 0x2(%rdi),%ecx
  sar    $0x5,%ecx
  and    $0x1,%ecx
  mov    %cl,0x12(%rsi)
  movzbl 0x2(%rdi),%ecx
  sar    $0x4,%ecx
  and    $0x1,%ecx
  mov    %cl,0x13(%rsi)
  movzbl 0x2(%rdi),%ecx
  sar    $0x3,%ecx
  and    $0x1,%ecx
  mov    %cl,0x14(%rsi)
  movzbl 0x2(%rdi),%ecx
  sar    $0x2,%ecx
  and    $0x1,%ecx
  mov    %cl,0x15(%rsi)
  movzbl 0x2(%rdi),%ecx
  sar    %ecx
  and    $0x1,%ecx
  mov    %cl,0x16(%rsi)
  movzbl 0x2(%rdi),%ecx
  and    $0x1,%ecx
  mov    %cl,0x17(%rsi)
  movzbl 0x3(%rdi),%ecx
  sar    $0x7,%ecx
  mov    %cl,0x18(%rsi)
  movzbl 0x3(%rdi),%ecx
  sar    $0x6,%ecx
  and    $0x1,%ecx
  mov    %cl,0x19(%rsi)
  movzbl 0x3(%rdi),%ecx
  sar    $0x5,%ecx
  and    $0x1,%ecx
  mov    %cl,0x1a(%rsi)
  movzbl 0x3(%rdi),%ecx
  sar    $0x4,%ecx
  and    $0x1,%ecx
  mov    %cl,0x1b(%rsi)
  movzbl 0x3(%rdi),%ecx
  sar    $0x3,%ecx
  and    $0x1,%ecx
  mov    %cl,0x1c(%rsi)
  movzbl 0x3(%rdi),%ecx
  sar    $0x2,%ecx
  and    $0x1,%ecx
  mov    %cl,0x1d(%rsi)
  movzbl 0x3(%rdi),%ecx
  sar    %ecx
  and    $0x1,%ecx
  mov    %cl,0x1e(%rsi)
  movzbl 0x3(%rdi),%ecx
  and    $0x1,%ecx
  mov    %cl,0x1f(%rsi)
  movzbl 0x4(%rdi),%ecx
  sar    $0x7,%ecx
  mov    %cl,0x20(%rsi)
  movzbl 0x4(%rdi),%ecx
  sar    $0x6,%ecx
  and    $0x1,%ecx
  mov    %cl,0x21(%rsi)
  movzbl 0x4(%rdi),%ecx
  sar    $0x5,%ecx
  and    $0x1,%ecx
  mov    %cl,0x22(%rsi)
  movzbl 0x4(%rdi),%ecx
  sar    $0x4,%ecx
  and    $0x1,%ecx
  mov    %cl,0x23(%rsi)
  movzbl 0x4(%rdi),%ecx
  sar    $0x3,%ecx
  and    $0x1,%ecx
  mov    %cl,0x24(%rsi)
  movzbl 0x4(%rdi),%ecx
  sar    $0x2,%ecx
  and    $0x1,%ecx
  mov    %cl,0x25(%rsi)
  movzbl 0x4(%rdi),%ecx
  sar    %ecx
  and    $0x1,%ecx
  mov    %cl,0x26(%rsi)
  movzbl 0x4(%rdi),%ecx
  and    $0x1,%ecx
  mov    %cl,0x27(%rsi)
  movzbl 0x5(%rdi),%ecx
  sar    $0x7,%ecx
  mov    %cl,0x28(%rsi)
  movzbl 0x5(%rdi),%ecx
  sar    $0x6,%ecx
  and    $0x1,%ecx
  mov    %cl,0x29(%rsi)
  movzbl 0x5(%rdi),%ecx
  sar    $0x5,%ecx
  and    $0x1,%ecx
  mov    %cl,0x2a(%rsi)
  movzbl 0x5(%rdi),%ecx
  sar    $0x4,%ecx
  and    $0x1,%ecx
  mov    %cl,0x2b(%rsi)
  movzbl 0x5(%rdi),%ecx
  sar    $0x3,%ecx
  and    $0x1,%ecx
  mov    %cl,0x2c(%rsi)
  movzbl 0x5(%rdi),%ecx
  sar    $0x2,%ecx
  and    $0x1,%ecx
  mov    %cl,0x2d(%rsi)
  movzbl 0x5(%rdi),%ecx
  sar    %ecx
  and    $0x1,%ecx
  mov    %cl,0x2e(%rsi)
  movzbl 0x5(%rdi),%ecx
  and    $0x1,%ecx
  mov    %cl,0x2f(%rsi)
  movzbl 0x6(%rdi),%ecx
  sar    $0x7,%ecx
  mov    %cl,0x30(%rsi)
  movzbl 0x6(%rdi),%ecx
  sar    $0x6,%ecx
  and    $0x1,%ecx
  mov    %cl,0x31(%rsi)
  movzbl 0x6(%rdi),%ecx
  sar    $0x5,%ecx
  and    $0x1,%ecx
  mov    %cl,0x32(%rsi)
  movzbl 0x6(%rdi),%ecx
  sar    $0x4,%ecx
  and    $0x1,%ecx
  mov    %cl,0x33(%rsi)
  movzbl 0x6(%rdi),%ecx
  sar    $0x3,%ecx
  and    $0x1,%ecx
  mov    %cl,0x34(%rsi)
  movzbl 0x6(%rdi),%ecx
  sar    $0x2,%ecx
  and    $0x1,%ecx
  mov    %cl,0x35(%rsi)
  movzbl 0x6(%rdi),%ecx
  sar    %ecx
  and    $0x1,%ecx
  mov    %cl,0x36(%rsi)
  movzbl 0x6(%rdi),%ecx
  and    $0x1,%ecx
  mov    %cl,0x37(%rsi)
  movzbl 0x7(%rdi),%ecx
  sar    $0x7,%ecx
  mov    %cl,0x38(%rsi)
  movzbl 0x7(%rdi),%ecx
  sar    $0x6,%ecx
  and    $0x1,%ecx
  mov    %cl,0x39(%rsi)
  movzbl 0x7(%rdi),%ecx
  sar    $0x5,%ecx
  and    $0x1,%ecx
  mov    %cl,0x3a(%rsi)
  movzbl 0x7(%rdi),%ecx
  sar    $0x4,%ecx
  and    $0x1,%ecx
  mov    %cl,0x3b(%rsi)
  movzbl 0x7(%rdi),%ecx
  sar    $0x3,%ecx
  and    $0x1,%ecx
  mov    %cl,0x3c(%rsi)
  movzbl 0x7(%rdi),%ecx
  sar    $0x2,%ecx
  and    $0x1,%ecx
  mov    %cl,0x3d(%rsi)
  movzbl 0x7(%rdi),%ecx
  sar    %ecx
  and    $0x1,%ecx
  mov    %cl,0x3e(%rsi)
  movzbl 0x7(%rdi),%edx
  and    $0x1,%edx
  mov    %dl,0x3f(%rsi)
  ret
```

assistant: ```c
void expand0(unsigned char *in, unsigned char *out) {
  int divide;
  int i, j;
  for (i = 0; i < 8; i++) {
    divide = 0x80;
    for (j = 0; j < 8; j++) {
      *out++ = (in[i] / divide) & 1;
      divide /= 2;
    }
  }
}
```