user: 提供的汇编代码用C语言表示会是什么样子:

```asm
<select>:
  endbr64
  mov    %rsi,%r9
  mov    %rdi,%rax
  mov    %rdx,%rsi
  mov    %rcx,%r10
  lea    0x4(%rcx),%rdx
  sub    $0x1,%r8d
  mov    %r9,%rcx
  sub    %rdx,%rax
  cmp    $0x8,%rax
  seta   %al
  sub    %rdx,%rcx
  cmp    $0x8,%rcx
  lea    0x4(%rdi),%rcx
  seta   %dl
  and    %edx,%eax
  mov    %r9,%rdx
  sub    %rcx,%rdx
  cmp    $0x8,%rdx
  seta   %dl
  and    %edx,%eax
  lea    0xf(%rsi),%rdx
  sub    %rdi,%rdx
  cmp    $0x1e,%rdx
  seta   %dl
  test   %dl,%al
  je     L10
  lea    0x4(%rsi),%rdx
  mov    %r9,%rax
  sub    %rdx,%rax
  cmp    $0x8,%rax
  jbe    L10
  movdqu (%r10),%xmm4
  movdqu (%rsi),%xmm1
  movd   %r8d,%xmm3
  pshufd $0x0,%xmm3,%xmm0
  pxor   %xmm4,%xmm1
  movdqa %xmm4,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,(%rdi)
  movdqu (%rsi),%xmm5
  pxor   %xmm5,%xmm1
  movups %xmm1,(%r9)
  movdqu 0x10(%r10),%xmm6
  movdqu 0x10(%rsi),%xmm1
  pxor   %xmm6,%xmm1
  movdqa %xmm6,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,0x10(%rdi)
  movdqu 0x10(%rsi),%xmm7
  pxor   %xmm7,%xmm1
  movups %xmm1,0x10(%r9)
  movdqu 0x20(%r10),%xmm3
  movdqu 0x20(%rsi),%xmm1
  pxor   %xmm3,%xmm1
  movdqa %xmm3,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,0x20(%rdi)
  movdqu 0x20(%rsi),%xmm4
  pxor   %xmm4,%xmm1
  movups %xmm1,0x20(%r9)
  movdqu 0x30(%r10),%xmm5
  movdqu 0x30(%rsi),%xmm1
  pxor   %xmm5,%xmm1
  movdqa %xmm5,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,0x30(%rdi)
  movdqu 0x30(%rsi),%xmm6
  pxor   %xmm6,%xmm1
  movups %xmm1,0x30(%r9)
  movdqu 0x40(%r10),%xmm7
  movdqu 0x40(%rsi),%xmm1
  pxor   %xmm7,%xmm1
  movdqa %xmm7,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,0x40(%rdi)
  movdqu 0x40(%rsi),%xmm3
  pxor   %xmm3,%xmm1
  movups %xmm1,0x40(%r9)
  movdqu 0x50(%r10),%xmm4
  movdqu 0x50(%rsi),%xmm1
  pxor   %xmm4,%xmm1
  movdqa %xmm4,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,0x50(%rdi)
  movdqu 0x50(%rsi),%xmm5
  pxor   %xmm5,%xmm1
  movups %xmm1,0x50(%r9)
  movdqu 0x60(%r10),%xmm6
  movdqu 0x60(%rsi),%xmm1
  pxor   %xmm6,%xmm1
  movdqa %xmm6,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,0x60(%rdi)
  movdqu 0x60(%rsi),%xmm7
  pxor   %xmm7,%xmm1
  movups %xmm1,0x60(%r9)
  movdqu 0x70(%r10),%xmm3
  movdqu 0x70(%rsi),%xmm1
  pxor   %xmm3,%xmm1
  movdqa %xmm3,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,0x70(%rdi)
  movdqu 0x70(%rsi),%xmm4
  pxor   %xmm4,%xmm1
  movups %xmm1,0x70(%r9)
  movdqu 0x80(%rsi),%xmm1
  movdqu 0x80(%r10),%xmm5
  pxor   %xmm5,%xmm1
  movdqa %xmm5,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,0x80(%rdi)
  movdqu 0x80(%rsi),%xmm6
  pxor   %xmm6,%xmm1
  movups %xmm1,0x80(%r9)
  movdqu 0x90(%rsi),%xmm1
  movdqu 0x90(%r10),%xmm7
  pxor   %xmm7,%xmm1
  movdqa %xmm7,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,0x90(%rdi)
  movdqu 0x90(%rsi),%xmm3
  pxor   %xmm3,%xmm1
  movups %xmm1,0x90(%r9)
  movdqu 0xa0(%rsi),%xmm1
  movdqu 0xa0(%r10),%xmm4
  pxor   %xmm4,%xmm1
  movdqa %xmm4,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,0xa0(%rdi)
  movdqu 0xa0(%rsi),%xmm5
  pxor   %xmm5,%xmm1
  movups %xmm1,0xa0(%r9)
  movdqu 0xb0(%rsi),%xmm1
  movdqu 0xb0(%r10),%xmm6
  pxor   %xmm6,%xmm1
  movdqa %xmm6,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,0xb0(%rdi)
  movdqu 0xb0(%rsi),%xmm7
  pxor   %xmm7,%xmm1
  movups %xmm1,0xb0(%r9)
  movdqu 0xc0(%rsi),%xmm1
  movdqu 0xc0(%r10),%xmm3
  pxor   %xmm3,%xmm1
  movdqa %xmm3,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,0xc0(%rdi)
  movdqu 0xc0(%rsi),%xmm4
  pxor   %xmm4,%xmm1
  movups %xmm1,0xc0(%r9)
  movdqu 0xd0(%rsi),%xmm1
  movdqu 0xd0(%r10),%xmm5
  pxor   %xmm5,%xmm1
  movdqa %xmm5,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,0xd0(%rdi)
  movdqu 0xd0(%rsi),%xmm6
  pxor   %xmm6,%xmm1
  movups %xmm1,0xd0(%r9)
  movdqu 0xe0(%rsi),%xmm1
  movdqu 0xe0(%r10),%xmm7
  pxor   %xmm7,%xmm1
  movdqa %xmm7,%xmm2
  pand   %xmm0,%xmm1
  pxor   %xmm1,%xmm2
  movups %xmm2,0xe0(%rdi)
  movdqu 0xe0(%rsi),%xmm3
  pxor   %xmm3,%xmm1
  movups %xmm1,0xe0(%r9)
  movdqu 0xf0(%rsi),%xmm1
  movdqu 0xf0(%r10),%xmm2
  pxor   %xmm2,%xmm1
  pand   %xmm1,%xmm0
  pxor   %xmm0,%xmm2
  movups %xmm2,0xf0(%rdi)
  movdqu 0xf0(%rsi),%xmm1
  pxor   %xmm1,%xmm0
  movups %xmm0,0xf0(%r9)
  ret
L10:
  xor    %eax,%eax
  nopw   0x0(%rax,%rax,1)
L4:
  mov    (%r10,%rax,1),%ecx
  mov    (%rsi,%rax,1),%edx
  xor    %ecx,%edx
  and    %r8d,%edx
  xor    %edx,%ecx
  mov    %ecx,(%rdi,%rax,1)
  xor    (%rsi,%rax,1),%edx
  mov    %edx,(%r9,%rax,1)
  add    $0x4,%rax
  cmp    $0x100,%rax
  jne    L4
  ret
```

assistant: ```c
void select(unsigned int p[64], unsigned int q[64], const unsigned int r[64], const unsigned int s[64], unsigned int b) {
  unsigned int j;
  unsigned int t;
  unsigned int bminus1;
  bminus1 = b - 1;
  for (j = 0; j < 64; ++j) {
    t = bminus1 & (r[j] ^ s[j]);
    p[j] = s[j] ^ t;
    q[j] = r[j] ^ t;
  }
}
```