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

```asm
<s9_decode>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    -0x20(%rbp),%rax
  mov    (%rax),%rax
  mov    %rax,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x1c,%eax
  mov    %eax,-0xc(%rbp)
  cmpl   $0x8,-0xc(%rbp)
  ja     L3
  mov    -0xc(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D13(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D13(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    %eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x2,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x3,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x4,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x5,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x6,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x7,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x8,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x9,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xa,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xb,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xc,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xd,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xe,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xf,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x10,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x11,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x12,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x13,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x14,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x15,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x16,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x17,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x18,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x19,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x1a,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x1b,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  jmp    L3
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  and    $0x3,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x2,%eax
  and    $0x3,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x4,%eax
  and    $0x3,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x6,%eax
  and    $0x3,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x8,%eax
  and    $0x3,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xa,%eax
  and    $0x3,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xc,%eax
  and    $0x3,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xe,%eax
  and    $0x3,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x10,%eax
  and    $0x3,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x12,%eax
  and    $0x3,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x14,%eax
  and    $0x3,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x16,%eax
  and    $0x3,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x18,%eax
  and    $0x3,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x1a,%eax
  and    $0x3,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  jmp    L3
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  and    $0x7,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x3,%eax
  and    $0x7,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x6,%eax
  and    $0x7,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x9,%eax
  and    $0x7,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xc,%eax
  and    $0x7,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xf,%eax
  and    $0x7,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x12,%eax
  and    $0x7,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x15,%eax
  and    $0x7,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x18,%eax
  and    $0x7,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  jmp    L3
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  and    $0xf,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x4,%eax
  and    $0xf,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x8,%eax
  and    $0xf,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xc,%eax
  and    $0xf,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x10,%eax
  and    $0xf,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x14,%eax
  and    $0xf,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x18,%eax
  and    $0xf,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  jmp    L3
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  and    $0x1f,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x5,%eax
  and    $0x1f,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xa,%eax
  and    $0x1f,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xf,%eax
  and    $0x1f,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x14,%eax
  and    $0x1f,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  jmp    L3
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  and    $0x7f,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x7,%eax
  and    $0x7f,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xe,%eax
  and    $0x7f,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x15,%eax
  and    $0x7f,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  jmp    L3
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  and    $0x1ff,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x9,%eax
  and    $0x1ff,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0x12,%eax
  and    $0x1ff,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  jmp    L3
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  and    $0x3fff,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  shr    $0xe,%eax
  and    $0x3fff,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  jmp    L3
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  and    $0xfffffff,%eax
  mov    %eax,%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,(%rax)
  addq   $0x4,-0x8(%rbp)
  nop
L3:
  mov    -0x20(%rbp),%rax
  mov    -0x8(%rbp),%rdx
  mov    %rdx,(%rax)
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  lea    D15(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  pop    %rbp
  ret
```

assistant: ```c
int s9_decode(unsigned int *_w, unsigned int **pp) {
  static int conum[9] = {28, 14, 9, 7, 5, 4, 3, 2, 1};
  unsigned int *_p = *pp;
  int _k;
  _k = (*_w) >> 28;
  switch (_k) {
  case 0:
    *_p = (*_w) & 1;
    _p++;
    *_p = (*_w >> 1) & 1;
    _p++;
    *_p = (*_w >> 2) & 1;
    _p++;
    *_p = (*_w >> 3) & 1;
    _p++;
    *_p = (*_w >> 4) & 1;
    _p++;
    *_p = (*_w >> 5) & 1;
    _p++;
    *_p = (*_w >> 6) & 1;
    _p++;
    *_p = (*_w >> 7) & 1;
    _p++;
    *_p = (*_w >> 8) & 1;
    _p++;
    *_p = (*_w >> 9) & 1;
    _p++;
    *_p = (*_w >> 10) & 1;
    _p++;
    *_p = (*_w >> 11) & 1;
    _p++;
    *_p = (*_w >> 12) & 1;
    _p++;
    *_p = (*_w >> 13) & 1;
    _p++;
    *_p = (*_w >> 14) & 1;
    _p++;
    *_p = (*_w >> 15) & 1;
    _p++;
    *_p = (*_w >> 16) & 1;
    _p++;
    *_p = (*_w >> 17) & 1;
    _p++;
    *_p = (*_w >> 18) & 1;
    _p++;
    *_p = (*_w >> 19) & 1;
    _p++;
    *_p = (*_w >> 20) & 1;
    _p++;
    *_p = (*_w >> 21) & 1;
    _p++;
    *_p = (*_w >> 22) & 1;
    _p++;
    *_p = (*_w >> 23) & 1;
    _p++;
    *_p = (*_w >> 24) & 1;
    _p++;
    *_p = (*_w >> 25) & 1;
    _p++;
    *_p = (*_w >> 26) & 1;
    _p++;
    *_p = (*_w >> 27) & 1;
    _p++;
    break;
  case 1:
    *_p = (*_w) & 3;
    _p++;
    *_p = (*_w >> 2) & 3;
    _p++;
    *_p = (*_w >> 4) & 3;
    _p++;
    *_p = (*_w >> 6) & 3;
    _p++;
    *_p = (*_w >> 8) & 3;
    _p++;
    *_p = (*_w >> 10) & 3;
    _p++;
    *_p = (*_w >> 12) & 3;
    _p++;
    *_p = (*_w >> 14) & 3;
    _p++;
    *_p = (*_w >> 16) & 3;
    _p++;
    *_p = (*_w >> 18) & 3;
    _p++;
    *_p = (*_w >> 20) & 3;
    _p++;
    *_p = (*_w >> 22) & 3;
    _p++;
    *_p = (*_w >> 24) & 3;
    _p++;
    *_p = (*_w >> 26) & 3;
    _p++;
    break;
  case 2:
    *_p = (*_w) & 7;
    _p++;
    *_p = (*_w >> 3) & 7;
    _p++;
    *_p = (*_w >> 6) & 7;
    _p++;
    *_p = (*_w >> 9) & 7;
    _p++;
    *_p = (*_w >> 12) & 7;
    _p++;
    *_p = (*_w >> 15) & 7;
    _p++;
    *_p = (*_w >> 18) & 7;
    _p++;
    *_p = (*_w >> 21) & 7;
    _p++;
    *_p = (*_w >> 24) & 7;
    _p++;
    break;
  case 3:
    *_p = (*_w) & 15;
    _p++;
    *_p = (*_w >> 4) & 15;
    _p++;
    *_p = (*_w >> 8) & 15;
    _p++;
    *_p = (*_w >> 12) & 15;
    _p++;
    *_p = (*_w >> 16) & 15;
    _p++;
    *_p = (*_w >> 20) & 15;
    _p++;
    *_p = (*_w >> 24) & 15;
    _p++;
    break;
  case 4:
    *_p = (*_w) & 31;
    _p++;
    *_p = (*_w >> 5) & 31;
    _p++;
    *_p = (*_w >> 10) & 31;
    _p++;
    *_p = (*_w >> 15) & 31;
    _p++;
    *_p = (*_w >> 20) & 31;
    _p++;
    break;
  case 5:
    *_p = (*_w) & 127;
    _p++;
    *_p = (*_w >> 7) & 127;
    _p++;
    *_p = (*_w >> 14) & 127;
    _p++;
    *_p = (*_w >> 21) & 127;
    _p++;
    break;
  case 6:
    *_p = (*_w) & 511;
    _p++;
    *_p = (*_w >> 9) & 511;
    _p++;
    *_p = (*_w >> 18) & 511;
    _p++;
    break;
  case 7:
    *_p = (*_w) & 16383;
    _p++;
    *_p = (*_w >> 14) & 16383;
    _p++;
    break;
  case 8:
    *_p = (*_w) & ((1 << 28) - 1);
    _p++;
    break;
  }
  *pp = _p;
  return conum[_k];
}
```