user: Converte this assembly snippet into its equivalent C code:

```asm
<expand>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    -0x8(%rbp),%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  movzbl %al,%eax
  and    $0x6,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0xf9,%eax
  or     %edx,%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x7,%eax
  or     %edx,%eax
  mov    %eax,%edx
  mov    -0x10(%rbp),%rax
  mov    %dl,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0x87,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  movzbl %al,%eax
  or     %edx,%eax
  sar    $0x3,%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x8(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0x1,%eax
  or     %edx,%eax
  shl    $0x3,%eax
  or     %eax,%ecx
  mov    %ecx,%edx
  mov    -0x10(%rbp),%rax
  add    $0x1,%rax
  mov    %dl,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x2,%eax
  and    $0x3e0,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0x1f,%eax
  or     %edx,%eax
  add    %eax,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x2,%rax
  mov    %dl,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  movzbl %al,%eax
  and    $0x6,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0xf9,%eax
  or     %edx,%eax
  sar    %eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x7,%eax
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x3,%rax
  mov    %dl,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0x87,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  shr    $0x2,%al
  movzbl %al,%eax
  or     %edx,%eax
  sar    $0x3,%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  lea    0x0(,%rax,4),%edx
  mov    -0x8(%rbp),%rax
  add    $0x2,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0x1,%eax
  or     %edx,%eax
  shl    $0x3,%eax
  or     %eax,%ecx
  mov    %ecx,%edx
  mov    -0x10(%rbp),%rax
  add    $0x4,%rax
  mov    %dl,(%rax)
  mov    -0x8(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  shl    $0x2,%eax
  and    $0x3e0,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  add    $0x3,%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0x1f,%eax
  or     %edx,%eax
  add    %eax,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  movzbl (%rax),%eax
  shr    $0x7,%al
  or     %eax,%edx
  mov    -0x10(%rbp),%rax
  add    $0x5,%rax
  mov    %dl,(%rax)
  nop
  pop    %rbp
  ret
```

assistant: ```c
void expand(unsigned char *arg1, unsigned char *arg2) {
  arg2[0] = ((((arg1[0] / 4) & 6) | (arg1[0] & 0xF9)) / 2) | arg1[3] << 7;
  arg2[1] = (((arg1[1] & 0x87) | (arg1[1] >> 2)) >> 3) | (((arg1[0] << 2) | (arg1[0] & 1)) << 3);
  arg2[2] = (((arg1[1] & 0xF8) << 2) | (arg1[1] & 0x1F)) << 1 | arg1[2] >> 7;
  arg2[3] = ((arg1[2] >> 2 & 6) | (arg1[2] & 0xF9)) >> 1 | arg1[1] << 7;
  arg2[4] = (((arg1[3] & 0x87) | (arg1[3] >> 2)) >> 3) | (((arg1[2] << 2) | (arg1[2] & 1)) << 3);
  arg2[5] = (((arg1[3] & 0xF8) << 2 | (arg1[3] & 0x1F)) << 1) | (arg1[0] >> 7);
}
```