user: 下面的汇编指令对应的C源代码是什么：

```asm
<byte_array_to_bit_array>:
  endbr64
  mov    %rdx,%rcx
  test   %rsi,%rsi
  je     L46
  lea    (%rdi,%rsi,4),%rax
  mov    %rsi,%r8
  shl    $0x5,%r8
  cmp    %rax,%rdx
  setae  %al
  add    %rdx,%r8
  cmp    %r8,%rdi
  setae  %dl
  or     %dl,%al
  je     L11
  cmp    $0x1,%rsi
  je     L11
  lea    -0x1(%rsi),%rax
  cmp    $0x2,%rax
  jbe    L28
  mov    %rsi,%r8
  movdqa D23(%rip),%xmm3
  mov    %rdi,%rdx
  mov    %rcx,%rax
  shr    $0x2,%r8
  shl    $0x4,%r8
  add    %rdi,%r8
  cs nopw 0x0(%rax,%rax,1)
L67:
  movdqu (%rdx),%xmm0
  add    $0x10,%rdx
  sub    $0xffffffffffffff80,%rax
  movdqa %xmm0,%xmm8
  movdqa %xmm0,%xmm7
  movdqa %xmm0,%xmm9
  movdqa %xmm0,%xmm1
  movdqa %xmm0,%xmm6
  movdqa %xmm0,%xmm2
  movdqa %xmm0,%xmm4
  psrad  $0x7,%xmm0
  pand   %xmm3,%xmm8
  psrad  $0x2,%xmm9
  psrad  $0x3,%xmm1
  pand   %xmm3,%xmm0
  psrad  $0x6,%xmm4
  pand   %xmm3,%xmm9
  pand   %xmm3,%xmm1
  pand   %xmm3,%xmm4
  psrad  $0x5,%xmm2
  movdqa %xmm0,%xmm5
  punpckldq %xmm1,%xmm5
  punpckhdq %xmm1,%xmm0
  pand   %xmm3,%xmm2
  psrad  $0x1,%xmm7
  psrad  $0x4,%xmm6
  movdqa %xmm4,%xmm1
  punpckhdq %xmm9,%xmm4
  pand   %xmm3,%xmm7
  pand   %xmm3,%xmm6
  movdqa %xmm4,%xmm10
  movdqa %xmm2,%xmm4
  punpckhdq %xmm7,%xmm2
  punpckldq %xmm7,%xmm4
  movdqa %xmm6,%xmm7
  punpckhdq %xmm8,%xmm6
  punpckldq %xmm9,%xmm1
  movdqa %xmm6,%xmm9
  movdqa %xmm5,%xmm6
  punpckldq %xmm8,%xmm7
  punpckldq %xmm4,%xmm6
  punpckhdq %xmm4,%xmm5
  movdqa %xmm1,%xmm8
  movdqa %xmm0,%xmm4
  punpckhdq %xmm7,%xmm1
  punpckldq %xmm2,%xmm4
  punpckhdq %xmm2,%xmm0
  punpckldq %xmm7,%xmm8
  movdqa %xmm10,%xmm2
  movdqa %xmm10,%xmm7
  punpckldq %xmm9,%xmm7
  punpckhdq %xmm9,%xmm2
  movdqa %xmm6,%xmm9
  punpckhdq %xmm8,%xmm6
  punpckldq %xmm8,%xmm9
  movups %xmm6,-0x70(%rax)
  movdqa %xmm5,%xmm6
  punpckhdq %xmm1,%xmm5
  punpckldq %xmm1,%xmm6
  movdqa %xmm4,%xmm1
  punpckhdq %xmm7,%xmm4
  movups %xmm5,-0x50(%rax)
  punpckldq %xmm7,%xmm1
  movups %xmm9,-0x80(%rax)
  movups %xmm1,-0x40(%rax)
  movdqa %xmm0,%xmm1
  punpckhdq %xmm2,%xmm0
  punpckldq %xmm2,%xmm1
  movups %xmm6,-0x60(%rax)
  movups %xmm4,-0x30(%rax)
  movups %xmm1,-0x20(%rax)
  movups %xmm0,-0x10(%rax)
  cmp    %rdx,%r8
  jne    L67
  mov    %rsi,%r8
  and    $0xfffffffffffffffc,%r8
  mov    %r8d,%edx
  cmp    %r8,%rsi
  je     L46
  sub    %r8,%rsi
  cmp    $0x1,%rsi
  je     L42
L9:
  movq   (%rdi,%r8,4),%xmm0
  mov    %r8,%rax
  movq   D23(%rip),%xmm2
  shl    $0x5,%rax
  movdqa %xmm0,%xmm10
  movdqa %xmm0,%xmm6
  movdqa %xmm0,%xmm7
  add    %rcx,%rax
  movdqa %xmm0,%xmm5
  movdqa %xmm0,%xmm3
  movdqa %xmm0,%xmm4
  movdqa %xmm0,%xmm1
  psrad  $0x7,%xmm0
  pand   %xmm2,%xmm10
  psrad  $0x1,%xmm6
  psrad  $0x2,%xmm7
  pand   %xmm2,%xmm0
  psrad  $0x3,%xmm5
  psrad  $0x4,%xmm3
  pand   %xmm2,%xmm6
  psrad  $0x5,%xmm4
  psrad  $0x6,%xmm1
  pand   %xmm2,%xmm7
  pand   %xmm2,%xmm5
  pand   %xmm2,%xmm3
  pand   %xmm2,%xmm4
  pand   %xmm2,%xmm1
  movdqa %xmm0,%xmm2
  movdqa %xmm4,%xmm8
  punpckldq %xmm5,%xmm2
  punpckldq %xmm5,%xmm0
  movdqa %xmm3,%xmm9
  movdqa %xmm1,%xmm5
  punpckldq %xmm6,%xmm8
  punpckldq %xmm7,%xmm1
  punpckldq %xmm7,%xmm5
  punpckldq %xmm10,%xmm9
  movdqa %xmm2,%xmm7
  punpckldq %xmm8,%xmm7
  pshufd $0xe,%xmm0,%xmm0
  punpckldq %xmm6,%xmm4
  punpckldq %xmm8,%xmm2
  movdqa %xmm5,%xmm8
  punpckldq %xmm9,%xmm5
  pshufd $0xe,%xmm4,%xmm4
  pshufd $0xe,%xmm1,%xmm1
  movdqa %xmm0,%xmm6
  pshufd $0xe,%xmm5,%xmm5
  punpckldq %xmm10,%xmm3
  punpckldq %xmm4,%xmm6
  pshufd $0xe,%xmm3,%xmm3
  punpckldq %xmm4,%xmm0
  movdqa %xmm5,%xmm4
  movdqa %xmm1,%xmm5
  punpckldq %xmm9,%xmm8
  punpckldq %xmm3,%xmm1
  punpckldq %xmm3,%xmm5
  movdqa %xmm7,%xmm3
  pshufd $0xe,%xmm2,%xmm2
  punpckldq %xmm8,%xmm3
  pshufd $0xe,%xmm0,%xmm0
  pshufd $0xe,%xmm1,%xmm1
  movq   %xmm3,(%rax)
  movdqa %xmm2,%xmm3
  punpckldq %xmm4,%xmm2
  punpckldq %xmm8,%xmm7
  pshufd $0xe,%xmm2,%xmm2
  pshufd $0xe,%xmm7,%xmm7
  punpckldq %xmm4,%xmm3
  movq   %xmm2,0x18(%rax)
  movdqa %xmm6,%xmm2
  punpckldq %xmm5,%xmm6
  punpckldq %xmm5,%xmm2
  pshufd $0xe,%xmm6,%xmm6
  movq   %xmm7,0x8(%rax)
  movq   %xmm2,0x20(%rax)
  movdqa %xmm0,%xmm2
  punpckldq %xmm1,%xmm0
  punpckldq %xmm1,%xmm2
  pshufd $0xe,%xmm0,%xmm0
  movq   %xmm3,0x10(%rax)
  movq   %xmm6,0x28(%rax)
  movq   %xmm2,0x30(%rax)
  movq   %xmm0,0x38(%rax)
  mov    %rsi,%rax
  and    $0xfffffffffffffffe,%rax
  add    %rax,%r8
  add    %eax,%edx
  cmp    %rax,%rsi
  je     L46
  movdqa D23(%rip),%xmm3
L42:
  mov    (%rdi,%r8,4),%eax
  shl    $0x3,%edx
  movslq %edx,%rdx
  mov    %eax,%esi
  lea    (%rcx,%rdx,4),%rdx
  mov    %eax,%edi
  mov    %eax,%ecx
  sar    $0x5,%esi
  sar    $0x7,%edi
  movd   %esi,%xmm1
  mov    %eax,%esi
  sar    $0x6,%ecx
  movd   %edi,%xmm0
  sar    $0x4,%esi
  mov    %eax,%edi
  movd   %esi,%xmm5
  sar    $0x3,%edi
  punpckldq %xmm5,%xmm1
  movd   %ecx,%xmm5
  mov    %eax,%ecx
  punpckldq %xmm5,%xmm0
  sar    $0x2,%ecx
  movd   %eax,%xmm5
  punpcklqdq %xmm1,%xmm0
  pand   %xmm3,%xmm0
  movups %xmm0,(%rdx)
  movd   %edi,%xmm0
  mov    %eax,%edi
  sar    %edi
  movd   %edi,%xmm1
  punpckldq %xmm5,%xmm1
  movd   %ecx,%xmm5
  punpckldq %xmm5,%xmm0
  punpcklqdq %xmm1,%xmm0
  pand   %xmm3,%xmm0
  movups %xmm0,0x10(%rdx)
  ret
L11:
  movdqa D23(%rip),%xmm3
  mov    %rcx,%rax
  nopl   0x0(%rax)
L68:
  mov    (%rdi),%edx
  add    $0x20,%rax
  add    $0x4,%rdi
  mov    %edx,%esi
  mov    %edx,%ecx
  movd   %edx,%xmm2
  sar    $0x7,%esi
  sar    $0x6,%ecx
  movd   %esi,%xmm0
  mov    %edx,%esi
  sar    $0x5,%esi
  movd   %esi,%xmm1
  mov    %edx,%esi
  sar    $0x4,%esi
  movd   %esi,%xmm5
  mov    %edx,%esi
  punpckldq %xmm5,%xmm1
  movd   %ecx,%xmm5
  mov    %edx,%ecx
  sar    %esi
  punpckldq %xmm5,%xmm0
  sar    $0x3,%ecx
  punpcklqdq %xmm1,%xmm0
  movd   %esi,%xmm1
  pand   %xmm3,%xmm0
  punpckldq %xmm2,%xmm1
  movups %xmm0,-0x20(%rax)
  movd   %ecx,%xmm0
  mov    %edx,%ecx
  sar    $0x2,%ecx
  movd   %ecx,%xmm7
  punpckldq %xmm7,%xmm0
  punpcklqdq %xmm1,%xmm0
  pand   %xmm3,%xmm0
  movups %xmm0,-0x10(%rax)
  cmp    %r8,%rax
  jne    L68
L46:
  ret
L28:
  xor    %edx,%edx
  xor    %r8d,%r8d
  jmp    L9
```

tool_calls: name: unpack_data
arguments: data_label: D23
type_guessed: byte[16]

tool: {"D23": [0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00]}

assistant: ```c
void byte_array_to_bit_array(uint8_t *byte_array, size_t size, uint8_t *bit_array) {
  int i;
  for (i = 0; i < size; i++) {
    uint8_t t = byte_array[i];
    int j;
    for (j = 8 * i + 7; j >= 8 * i; j--) {
      bit_array[j] = t & 1;
      t >>= 1;
    }
  }
}
```