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];
}


x86 assembly (clang, -O0):
<s9_decode>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x10(%rbp),%rax
mov    (%rax),%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%eax
shr    $0x1c,%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    %rax,-0x28(%rbp)
sub    $0x8,%rax
ja     19f5 <s9_decode+0x8f5>
mov    -0x28(%rbp),%rax
lea    0xec1(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x1,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x2,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x3,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x4,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x5,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x6,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x7,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x8,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x9,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xa,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xb,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xc,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xd,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xe,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xf,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x10,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x11,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x12,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x13,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x14,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x15,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x16,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x17,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x18,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x19,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x1a,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x1b,%ecx
and    $0x1,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    19f5 <s9_decode+0x8f5>
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
and    $0x3,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x2,%ecx
and    $0x3,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x4,%ecx
and    $0x3,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x6,%ecx
and    $0x3,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x8,%ecx
and    $0x3,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xa,%ecx
and    $0x3,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xc,%ecx
and    $0x3,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xe,%ecx
and    $0x3,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x10,%ecx
and    $0x3,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x12,%ecx
and    $0x3,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x14,%ecx
and    $0x3,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x16,%ecx
and    $0x3,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x18,%ecx
and    $0x3,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x1a,%ecx
and    $0x3,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    19f5 <s9_decode+0x8f5>
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
and    $0x7,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x3,%ecx
and    $0x7,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x6,%ecx
and    $0x7,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x9,%ecx
and    $0x7,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xc,%ecx
and    $0x7,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xf,%ecx
and    $0x7,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x12,%ecx
and    $0x7,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x15,%ecx
and    $0x7,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x18,%ecx
and    $0x7,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    19f5 <s9_decode+0x8f5>
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
and    $0xf,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x4,%ecx
and    $0xf,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x8,%ecx
and    $0xf,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xc,%ecx
and    $0xf,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x10,%ecx
and    $0xf,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x14,%ecx
and    $0xf,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x18,%ecx
and    $0xf,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    19f5 <s9_decode+0x8f5>
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
and    $0x1f,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x5,%ecx
and    $0x1f,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xa,%ecx
and    $0x1f,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xf,%ecx
and    $0x1f,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x14,%ecx
and    $0x1f,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    19f5 <s9_decode+0x8f5>
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
and    $0x7f,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x7,%ecx
and    $0x7f,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xe,%ecx
and    $0x7f,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x15,%ecx
and    $0x7f,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    19f5 <s9_decode+0x8f5>
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
and    $0x1ff,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x9,%ecx
and    $0x1ff,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0x12,%ecx
and    $0x1ff,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    19f5 <s9_decode+0x8f5>
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
and    $0x3fff,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
shr    $0xe,%ecx
and    $0x3fff,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
jmp    19f5 <s9_decode+0x8f5>
mov    -0x8(%rbp),%rax
mov    (%rax),%ecx
and    $0xfffffff,%ecx
mov    -0x18(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x18(%rbp),%rax
add    $0x4,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rcx
mov    -0x10(%rbp),%rax
mov    %rcx,(%rax)
movslq -0x1c(%rbp),%rcx
lea    0x2625(%rip),%rax
mov    (%rax,%rcx,4),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<s9_decode>:
mov    (%rsi),%r9
mov    (%rdi),%edx
mov    %rdx,%r8
shr    $0x1c,%r8
cmp    $0x8,%r8d
ja     14a8 <s9_decode+0x3a8>
lea    0xee3(%rip),%rcx
movslq (%rcx,%r8,4),%rax
add    %rcx,%rax
jmp    *%rax
and    $0x1,%edx
mov    %edx,(%r9)
mov    (%rdi),%eax
shr    %eax
and    $0x1,%eax
mov    %eax,0x4(%r9)
mov    (%rdi),%eax
shr    $0x2,%eax
and    $0x1,%eax
mov    %eax,0x8(%r9)
mov    (%rdi),%eax
shr    $0x3,%eax
and    $0x1,%eax
mov    %eax,0xc(%r9)
mov    (%rdi),%eax
shr    $0x4,%eax
and    $0x1,%eax
mov    %eax,0x10(%r9)
mov    (%rdi),%eax
shr    $0x5,%eax
and    $0x1,%eax
mov    %eax,0x14(%r9)
mov    (%rdi),%eax
shr    $0x6,%eax
and    $0x1,%eax
mov    %eax,0x18(%r9)
mov    (%rdi),%eax
shr    $0x7,%eax
and    $0x1,%eax
mov    %eax,0x1c(%r9)
mov    (%rdi),%eax
shr    $0x8,%eax
and    $0x1,%eax
mov    %eax,0x20(%r9)
mov    (%rdi),%eax
shr    $0x9,%eax
and    $0x1,%eax
mov    %eax,0x24(%r9)
mov    (%rdi),%eax
shr    $0xa,%eax
and    $0x1,%eax
mov    %eax,0x28(%r9)
mov    (%rdi),%eax
shr    $0xb,%eax
and    $0x1,%eax
mov    %eax,0x2c(%r9)
mov    (%rdi),%eax
shr    $0xc,%eax
and    $0x1,%eax
mov    %eax,0x30(%r9)
mov    (%rdi),%eax
shr    $0xd,%eax
and    $0x1,%eax
mov    %eax,0x34(%r9)
mov    (%rdi),%eax
shr    $0xe,%eax
and    $0x1,%eax
mov    %eax,0x38(%r9)
mov    (%rdi),%eax
shr    $0xf,%eax
and    $0x1,%eax
mov    %eax,0x3c(%r9)
mov    (%rdi),%eax
shr    $0x10,%eax
and    $0x1,%eax
mov    %eax,0x40(%r9)
mov    (%rdi),%eax
shr    $0x11,%eax
and    $0x1,%eax
mov    %eax,0x44(%r9)
mov    (%rdi),%eax
shr    $0x12,%eax
and    $0x1,%eax
mov    %eax,0x48(%r9)
mov    (%rdi),%eax
shr    $0x13,%eax
and    $0x1,%eax
mov    %eax,0x4c(%r9)
mov    (%rdi),%eax
shr    $0x14,%eax
and    $0x1,%eax
mov    %eax,0x50(%r9)
mov    (%rdi),%eax
shr    $0x15,%eax
and    $0x1,%eax
mov    %eax,0x54(%r9)
mov    (%rdi),%eax
shr    $0x16,%eax
and    $0x1,%eax
mov    %eax,0x58(%r9)
mov    (%rdi),%eax
shr    $0x17,%eax
and    $0x1,%eax
mov    %eax,0x5c(%r9)
mov    (%rdi),%eax
shr    $0x18,%eax
and    $0x1,%eax
mov    %eax,0x60(%r9)
mov    (%rdi),%eax
shr    $0x19,%eax
and    $0x1,%eax
mov    %eax,0x64(%r9)
mov    (%rdi),%eax
shr    $0x1a,%eax
and    $0x1,%eax
mov    %eax,0x68(%r9)
mov    (%rdi),%eax
shr    $0x1b,%eax
and    $0x1,%eax
mov    %eax,0x6c(%r9)
add    $0x70,%r9
jmp    14a8 <s9_decode+0x3a8>
and    $0x3,%edx
mov    %edx,(%r9)
mov    (%rdi),%eax
shr    $0x2,%eax
and    $0x3,%eax
mov    %eax,0x4(%r9)
mov    (%rdi),%eax
shr    $0x4,%eax
and    $0x3,%eax
mov    %eax,0x8(%r9)
mov    (%rdi),%eax
shr    $0x6,%eax
and    $0x3,%eax
mov    %eax,0xc(%r9)
mov    (%rdi),%eax
shr    $0x8,%eax
and    $0x3,%eax
mov    %eax,0x10(%r9)
mov    (%rdi),%eax
shr    $0xa,%eax
and    $0x3,%eax
mov    %eax,0x14(%r9)
mov    (%rdi),%eax
shr    $0xc,%eax
and    $0x3,%eax
mov    %eax,0x18(%r9)
mov    (%rdi),%eax
shr    $0xe,%eax
and    $0x3,%eax
mov    %eax,0x1c(%r9)
movzwl 0x2(%rdi),%eax
and    $0x3,%eax
mov    %eax,0x20(%r9)
mov    (%rdi),%eax
shr    $0x12,%eax
and    $0x3,%eax
mov    %eax,0x24(%r9)
mov    (%rdi),%eax
shr    $0x14,%eax
and    $0x3,%eax
mov    %eax,0x28(%r9)
mov    (%rdi),%eax
shr    $0x16,%eax
and    $0x3,%eax
mov    %eax,0x2c(%r9)
movzbl 0x3(%rdi),%eax
and    $0x3,%eax
mov    %eax,0x30(%r9)
mov    (%rdi),%eax
shr    $0x1a,%eax
and    $0x3,%eax
mov    %eax,0x34(%r9)
add    $0x38,%r9
jmp    14a8 <s9_decode+0x3a8>
and    $0x7,%edx
mov    %edx,(%r9)
mov    (%rdi),%eax
shr    $0x3,%eax
and    $0x7,%eax
mov    %eax,0x4(%r9)
mov    (%rdi),%eax
shr    $0x6,%eax
and    $0x7,%eax
mov    %eax,0x8(%r9)
mov    (%rdi),%eax
shr    $0x9,%eax
and    $0x7,%eax
mov    %eax,0xc(%r9)
mov    (%rdi),%eax
shr    $0xc,%eax
and    $0x7,%eax
mov    %eax,0x10(%r9)
mov    (%rdi),%eax
shr    $0xf,%eax
and    $0x7,%eax
mov    %eax,0x14(%r9)
mov    (%rdi),%eax
shr    $0x12,%eax
and    $0x7,%eax
mov    %eax,0x18(%r9)
mov    (%rdi),%eax
shr    $0x15,%eax
and    $0x7,%eax
mov    %eax,0x1c(%r9)
movzbl 0x3(%rdi),%eax
and    $0x7,%eax
mov    %eax,0x20(%r9)
add    $0x24,%r9
jmp    14a8 <s9_decode+0x3a8>
and    $0xf,%edx
mov    %edx,(%r9)
mov    (%rdi),%eax
shr    $0x4,%eax
and    $0xf,%eax
mov    %eax,0x4(%r9)
mov    (%rdi),%eax
shr    $0x8,%eax
and    $0xf,%eax
mov    %eax,0x8(%r9)
mov    (%rdi),%eax
shr    $0xc,%eax
and    $0xf,%eax
mov    %eax,0xc(%r9)
movzwl 0x2(%rdi),%eax
and    $0xf,%eax
mov    %eax,0x10(%r9)
mov    (%rdi),%eax
shr    $0x14,%eax
and    $0xf,%eax
mov    %eax,0x14(%r9)
movzbl 0x3(%rdi),%eax
and    $0xf,%eax
mov    %eax,0x18(%r9)
add    $0x1c,%r9
jmp    14a8 <s9_decode+0x3a8>
and    $0x1f,%edx
mov    %edx,(%r9)
mov    (%rdi),%eax
shr    $0x5,%eax
and    $0x1f,%eax
mov    %eax,0x4(%r9)
mov    (%rdi),%eax
shr    $0xa,%eax
and    $0x1f,%eax
mov    %eax,0x8(%r9)
mov    (%rdi),%eax
shr    $0xf,%eax
and    $0x1f,%eax
mov    %eax,0xc(%r9)
mov    (%rdi),%eax
shr    $0x14,%eax
and    $0x1f,%eax
mov    %eax,0x10(%r9)
add    $0x14,%r9
jmp    14a8 <s9_decode+0x3a8>
and    $0x7f,%edx
mov    %edx,(%r9)
mov    (%rdi),%eax
shr    $0x7,%eax
and    $0x7f,%eax
mov    %eax,0x4(%r9)
mov    (%rdi),%eax
shr    $0xe,%eax
and    $0x7f,%eax
mov    %eax,0x8(%r9)
mov    (%rdi),%eax
shr    $0x15,%eax
and    $0x7f,%eax
mov    %eax,0xc(%r9)
add    $0x10,%r9
jmp    14a8 <s9_decode+0x3a8>
and    $0x1ff,%edx
mov    %edx,(%r9)
mov    (%rdi),%eax
shr    $0x9,%eax
and    $0x1ff,%eax
mov    %eax,0x4(%r9)
mov    (%rdi),%eax
shr    $0x12,%eax
and    $0x1ff,%eax
mov    %eax,0x8(%r9)
add    $0xc,%r9
jmp    14a8 <s9_decode+0x3a8>
and    $0x3fff,%edx
mov    %edx,(%r9)
mov    (%rdi),%eax
shr    $0xe,%eax
and    $0x3fff,%eax
mov    %eax,0x4(%r9)
add    $0x8,%r9
jmp    14a8 <s9_decode+0x3a8>
and    $0xfffffff,%edx
mov    %edx,(%r9)
add    $0x4,%r9
mov    %r9,(%rsi)
lea    0xb7e(%rip),%rax
mov    (%rax,%r8,4),%eax
ret

LLVM IR (-O0):
@s9_decode.conum = internal global [9 x i32] [i32 28, i32 14, i32 9, i32 7, i32 5, i32 4, i32 3, i32 2, i32 1]
define i32 @s9_decode(i32* %0, i32** %1) {
%3 = alloca i32*
%4 = alloca i32**
%5 = alloca i32*
%6 = alloca i32
store i32* %0, i32** %3
store i32** %1, i32*** %4
%7 = load i32**, i32*** %4
%8 = load i32*, i32** %7
store i32* %8, i32** %5
%9 = load i32*, i32** %3
%10 = load i32, i32* %9
%11 = lshr i32 %10, 28
store i32 %11, i32* %6
%12 = load i32, i32* %6
switch i32 %12, label %524 [
i32 0, label %13
i32 1, label %209
i32 2, label %307
i32 3, label %370
i32 4, label %419
i32 5, label %454
i32 6, label %482
i32 7, label %503
i32 8, label %517
]
13: ; preds = %2
%14 = load i32*, i32** %3
%15 = load i32, i32* %14
%16 = and i32 %15, 1
%17 = load i32*, i32** %5
store i32 %16, i32* %17
%18 = load i32*, i32** %5
%19 = getelementptr inbounds i32, i32* %18, i32 1
store i32* %19, i32** %5
%20 = load i32*, i32** %3
%21 = load i32, i32* %20
%22 = lshr i32 %21, 1
%23 = and i32 %22, 1
%24 = load i32*, i32** %5
store i32 %23, i32* %24
%25 = load i32*, i32** %5
%26 = getelementptr inbounds i32, i32* %25, i32 1
store i32* %26, i32** %5
%27 = load i32*, i32** %3
%28 = load i32, i32* %27
%29 = lshr i32 %28, 2
%30 = and i32 %29, 1
%31 = load i32*, i32** %5
store i32 %30, i32* %31
%32 = load i32*, i32** %5
%33 = getelementptr inbounds i32, i32* %32, i32 1
store i32* %33, i32** %5
%34 = load i32*, i32** %3
%35 = load i32, i32* %34
%36 = lshr i32 %35, 3
%37 = and i32 %36, 1
%38 = load i32*, i32** %5
store i32 %37, i32* %38
%39 = load i32*, i32** %5
%40 = getelementptr inbounds i32, i32* %39, i32 1
store i32* %40, i32** %5
%41 = load i32*, i32** %3
%42 = load i32, i32* %41
%43 = lshr i32 %42, 4
%44 = and i32 %43, 1
%45 = load i32*, i32** %5
store i32 %44, i32* %45
%46 = load i32*, i32** %5
%47 = getelementptr inbounds i32, i32* %46, i32 1
store i32* %47, i32** %5
%48 = load i32*, i32** %3
%49 = load i32, i32* %48
%50 = lshr i32 %49, 5
%51 = and i32 %50, 1
%52 = load i32*, i32** %5
store i32 %51, i32* %52
%53 = load i32*, i32** %5
%54 = getelementptr inbounds i32, i32* %53, i32 1
store i32* %54, i32** %5
%55 = load i32*, i32** %3
%56 = load i32, i32* %55
%57 = lshr i32 %56, 6
%58 = and i32 %57, 1
%59 = load i32*, i32** %5
store i32 %58, i32* %59
%60 = load i32*, i32** %5
%61 = getelementptr inbounds i32, i32* %60, i32 1
store i32* %61, i32** %5
%62 = load i32*, i32** %3
%63 = load i32, i32* %62
%64 = lshr i32 %63, 7
%65 = and i32 %64, 1
%66 = load i32*, i32** %5
store i32 %65, i32* %66
%67 = load i32*, i32** %5
%68 = getelementptr inbounds i32, i32* %67, i32 1
store i32* %68, i32** %5
%69 = load i32*, i32** %3
%70 = load i32, i32* %69
%71 = lshr i32 %70, 8
%72 = and i32 %71, 1
%73 = load i32*, i32** %5
store i32 %72, i32* %73
%74 = load i32*, i32** %5
%75 = getelementptr inbounds i32, i32* %74, i32 1
store i32* %75, i32** %5
%76 = load i32*, i32** %3
%77 = load i32, i32* %76
%78 = lshr i32 %77, 9
%79 = and i32 %78, 1
%80 = load i32*, i32** %5
store i32 %79, i32* %80
%81 = load i32*, i32** %5
%82 = getelementptr inbounds i32, i32* %81, i32 1
store i32* %82, i32** %5
%83 = load i32*, i32** %3
%84 = load i32, i32* %83
%85 = lshr i32 %84, 10
%86 = and i32 %85, 1
%87 = load i32*, i32** %5
store i32 %86, i32* %87
%88 = load i32*, i32** %5
%89 = getelementptr inbounds i32, i32* %88, i32 1
store i32* %89, i32** %5
%90 = load i32*, i32** %3
%91 = load i32, i32* %90
%92 = lshr i32 %91, 11
%93 = and i32 %92, 1
%94 = load i32*, i32** %5
store i32 %93, i32* %94
%95 = load i32*, i32** %5
%96 = getelementptr inbounds i32, i32* %95, i32 1
store i32* %96, i32** %5
%97 = load i32*, i32** %3
%98 = load i32, i32* %97
%99 = lshr i32 %98, 12
%100 = and i32 %99, 1
%101 = load i32*, i32** %5
store i32 %100, i32* %101
%102 = load i32*, i32** %5
%103 = getelementptr inbounds i32, i32* %102, i32 1
store i32* %103, i32** %5
%104 = load i32*, i32** %3
%105 = load i32, i32* %104
%106 = lshr i32 %105, 13
%107 = and i32 %106, 1
%108 = load i32*, i32** %5
store i32 %107, i32* %108
%109 = load i32*, i32** %5
%110 = getelementptr inbounds i32, i32* %109, i32 1
store i32* %110, i32** %5
%111 = load i32*, i32** %3
%112 = load i32, i32* %111
%113 = lshr i32 %112, 14
%114 = and i32 %113, 1
%115 = load i32*, i32** %5
store i32 %114, i32* %115
%116 = load i32*, i32** %5
%117 = getelementptr inbounds i32, i32* %116, i32 1
store i32* %117, i32** %5
%118 = load i32*, i32** %3
%119 = load i32, i32* %118
%120 = lshr i32 %119, 15
%121 = and i32 %120, 1
%122 = load i32*, i32** %5
store i32 %121, i32* %122
%123 = load i32*, i32** %5
%124 = getelementptr inbounds i32, i32* %123, i32 1
store i32* %124, i32** %5
%125 = load i32*, i32** %3
%126 = load i32, i32* %125
%127 = lshr i32 %126, 16
%128 = and i32 %127, 1
%129 = load i32*, i32** %5
store i32 %128, i32* %129
%130 = load i32*, i32** %5
%131 = getelementptr inbounds i32, i32* %130, i32 1
store i32* %131, i32** %5
%132 = load i32*, i32** %3
%133 = load i32, i32* %132
%134 = lshr i32 %133, 17
%135 = and i32 %134, 1
%136 = load i32*, i32** %5
store i32 %135, i32* %136
%137 = load i32*, i32** %5
%138 = getelementptr inbounds i32, i32* %137, i32 1
store i32* %138, i32** %5
%139 = load i32*, i32** %3
%140 = load i32, i32* %139
%141 = lshr i32 %140, 18
%142 = and i32 %141, 1
%143 = load i32*, i32** %5
store i32 %142, i32* %143
%144 = load i32*, i32** %5
%145 = getelementptr inbounds i32, i32* %144, i32 1
store i32* %145, i32** %5
%146 = load i32*, i32** %3
%147 = load i32, i32* %146
%148 = lshr i32 %147, 19
%149 = and i32 %148, 1
%150 = load i32*, i32** %5
store i32 %149, i32* %150
%151 = load i32*, i32** %5
%152 = getelementptr inbounds i32, i32* %151, i32 1
store i32* %152, i32** %5
%153 = load i32*, i32** %3
%154 = load i32, i32* %153
%155 = lshr i32 %154, 20
%156 = and i32 %155, 1
%157 = load i32*, i32** %5
store i32 %156, i32* %157
%158 = load i32*, i32** %5
%159 = getelementptr inbounds i32, i32* %158, i32 1
store i32* %159, i32** %5
%160 = load i32*, i32** %3
%161 = load i32, i32* %160
%162 = lshr i32 %161, 21
%163 = and i32 %162, 1
%164 = load i32*, i32** %5
store i32 %163, i32* %164
%165 = load i32*, i32** %5
%166 = getelementptr inbounds i32, i32* %165, i32 1
store i32* %166, i32** %5
%167 = load i32*, i32** %3
%168 = load i32, i32* %167
%169 = lshr i32 %168, 22
%170 = and i32 %169, 1
%171 = load i32*, i32** %5
store i32 %170, i32* %171
%172 = load i32*, i32** %5
%173 = getelementptr inbounds i32, i32* %172, i32 1
store i32* %173, i32** %5
%174 = load i32*, i32** %3
%175 = load i32, i32* %174
%176 = lshr i32 %175, 23
%177 = and i32 %176, 1
%178 = load i32*, i32** %5
store i32 %177, i32* %178
%179 = load i32*, i32** %5
%180 = getelementptr inbounds i32, i32* %179, i32 1
store i32* %180, i32** %5
%181 = load i32*, i32** %3
%182 = load i32, i32* %181
%183 = lshr i32 %182, 24
%184 = and i32 %183, 1
%185 = load i32*, i32** %5
store i32 %184, i32* %185
%186 = load i32*, i32** %5
%187 = getelementptr inbounds i32, i32* %186, i32 1
store i32* %187, i32** %5
%188 = load i32*, i32** %3
%189 = load i32, i32* %188
%190 = lshr i32 %189, 25
%191 = and i32 %190, 1
%192 = load i32*, i32** %5
store i32 %191, i32* %192
%193 = load i32*, i32** %5
%194 = getelementptr inbounds i32, i32* %193, i32 1
store i32* %194, i32** %5
%195 = load i32*, i32** %3
%196 = load i32, i32* %195
%197 = lshr i32 %196, 26
%198 = and i32 %197, 1
%199 = load i32*, i32** %5
store i32 %198, i32* %199
%200 = load i32*, i32** %5
%201 = getelementptr inbounds i32, i32* %200, i32 1
store i32* %201, i32** %5
%202 = load i32*, i32** %3
%203 = load i32, i32* %202
%204 = lshr i32 %203, 27
%205 = and i32 %204, 1
%206 = load i32*, i32** %5
store i32 %205, i32* %206
%207 = load i32*, i32** %5
%208 = getelementptr inbounds i32, i32* %207, i32 1
store i32* %208, i32** %5
br label %524
209: ; preds = %2
%210 = load i32*, i32** %3
%211 = load i32, i32* %210
%212 = and i32 %211, 3
%213 = load i32*, i32** %5
store i32 %212, i32* %213
%214 = load i32*, i32** %5
%215 = getelementptr inbounds i32, i32* %214, i32 1
store i32* %215, i32** %5
%216 = load i32*, i32** %3
%217 = load i32, i32* %216
%218 = lshr i32 %217, 2
%219 = and i32 %218, 3
%220 = load i32*, i32** %5
store i32 %219, i32* %220
%221 = load i32*, i32** %5
%222 = getelementptr inbounds i32, i32* %221, i32 1
store i32* %222, i32** %5
%223 = load i32*, i32** %3
%224 = load i32, i32* %223
%225 = lshr i32 %224, 4
%226 = and i32 %225, 3
%227 = load i32*, i32** %5
store i32 %226, i32* %227
%228 = load i32*, i32** %5
%229 = getelementptr inbounds i32, i32* %228, i32 1
store i32* %229, i32** %5
%230 = load i32*, i32** %3
%231 = load i32, i32* %230
%232 = lshr i32 %231, 6
%233 = and i32 %232, 3
%234 = load i32*, i32** %5
store i32 %233, i32* %234
%235 = load i32*, i32** %5
%236 = getelementptr inbounds i32, i32* %235, i32 1
store i32* %236, i32** %5
%237 = load i32*, i32** %3
%238 = load i32, i32* %237
%239 = lshr i32 %238, 8
%240 = and i32 %239, 3
%241 = load i32*, i32** %5
store i32 %240, i32* %241
%242 = load i32*, i32** %5
%243 = getelementptr inbounds i32, i32* %242, i32 1
store i32* %243, i32** %5
%244 = load i32*, i32** %3
%245 = load i32, i32* %244
%246 = lshr i32 %245, 10
%247 = and i32 %246, 3
%248 = load i32*, i32** %5
store i32 %247, i32* %248
%249 = load i32*, i32** %5
%250 = getelementptr inbounds i32, i32* %249, i32 1
store i32* %250, i32** %5
%251 = load i32*, i32** %3
%252 = load i32, i32* %251
%253 = lshr i32 %252, 12
%254 = and i32 %253, 3
%255 = load i32*, i32** %5
store i32 %254, i32* %255
%256 = load i32*, i32** %5
%257 = getelementptr inbounds i32, i32* %256, i32 1
store i32* %257, i32** %5
%258 = load i32*, i32** %3
%259 = load i32, i32* %258
%260 = lshr i32 %259, 14
%261 = and i32 %260, 3
%262 = load i32*, i32** %5
store i32 %261, i32* %262
%263 = load i32*, i32** %5
%264 = getelementptr inbounds i32, i32* %263, i32 1
store i32* %264, i32** %5
%265 = load i32*, i32** %3
%266 = load i32, i32* %265
%267 = lshr i32 %266, 16
%268 = and i32 %267, 3
%269 = load i32*, i32** %5
store i32 %268, i32* %269
%270 = load i32*, i32** %5
%271 = getelementptr inbounds i32, i32* %270, i32 1
store i32* %271, i32** %5
%272 = load i32*, i32** %3
%273 = load i32, i32* %272
%274 = lshr i32 %273, 18
%275 = and i32 %274, 3
%276 = load i32*, i32** %5
store i32 %275, i32* %276
%277 = load i32*, i32** %5
%278 = getelementptr inbounds i32, i32* %277, i32 1
store i32* %278, i32** %5
%279 = load i32*, i32** %3
%280 = load i32, i32* %279
%281 = lshr i32 %280, 20
%282 = and i32 %281, 3
%283 = load i32*, i32** %5
store i32 %282, i32* %283
%284 = load i32*, i32** %5
%285 = getelementptr inbounds i32, i32* %284, i32 1
store i32* %285, i32** %5
%286 = load i32*, i32** %3
%287 = load i32, i32* %286
%288 = lshr i32 %287, 22
%289 = and i32 %288, 3
%290 = load i32*, i32** %5
store i32 %289, i32* %290
%291 = load i32*, i32** %5
%292 = getelementptr inbounds i32, i32* %291, i32 1
store i32* %292, i32** %5
%293 = load i32*, i32** %3
%294 = load i32, i32* %293
%295 = lshr i32 %294, 24
%296 = and i32 %295, 3
%297 = load i32*, i32** %5
store i32 %296, i32* %297
%298 = load i32*, i32** %5
%299 = getelementptr inbounds i32, i32* %298, i32 1
store i32* %299, i32** %5
%300 = load i32*, i32** %3
%301 = load i32, i32* %300
%302 = lshr i32 %301, 26
%303 = and i32 %302, 3
%304 = load i32*, i32** %5
store i32 %303, i32* %304
%305 = load i32*, i32** %5
%306 = getelementptr inbounds i32, i32* %305, i32 1
store i32* %306, i32** %5
br label %524
307: ; preds = %2
%308 = load i32*, i32** %3
%309 = load i32, i32* %308
%310 = and i32 %309, 7
%311 = load i32*, i32** %5
store i32 %310, i32* %311
%312 = load i32*, i32** %5
%313 = getelementptr inbounds i32, i32* %312, i32 1
store i32* %313, i32** %5
%314 = load i32*, i32** %3
%315 = load i32, i32* %314
%316 = lshr i32 %315, 3
%317 = and i32 %316, 7
%318 = load i32*, i32** %5
store i32 %317, i32* %318
%319 = load i32*, i32** %5
%320 = getelementptr inbounds i32, i32* %319, i32 1
store i32* %320, i32** %5
%321 = load i32*, i32** %3
%322 = load i32, i32* %321
%323 = lshr i32 %322, 6
%324 = and i32 %323, 7
%325 = load i32*, i32** %5
store i32 %324, i32* %325
%326 = load i32*, i32** %5
%327 = getelementptr inbounds i32, i32* %326, i32 1
store i32* %327, i32** %5
%328 = load i32*, i32** %3
%329 = load i32, i32* %328
%330 = lshr i32 %329, 9
%331 = and i32 %330, 7
%332 = load i32*, i32** %5
store i32 %331, i32* %332
%333 = load i32*, i32** %5
%334 = getelementptr inbounds i32, i32* %333, i32 1
store i32* %334, i32** %5
%335 = load i32*, i32** %3
%336 = load i32, i32* %335
%337 = lshr i32 %336, 12
%338 = and i32 %337, 7
%339 = load i32*, i32** %5
store i32 %338, i32* %339
%340 = load i32*, i32** %5
%341 = getelementptr inbounds i32, i32* %340, i32 1
store i32* %341, i32** %5
%342 = load i32*, i32** %3
%343 = load i32, i32* %342
%344 = lshr i32 %343, 15
%345 = and i32 %344, 7
%346 = load i32*, i32** %5
store i32 %345, i32* %346
%347 = load i32*, i32** %5
%348 = getelementptr inbounds i32, i32* %347, i32 1
store i32* %348, i32** %5
%349 = load i32*, i32** %3
%350 = load i32, i32* %349
%351 = lshr i32 %350, 18
%352 = and i32 %351, 7
%353 = load i32*, i32** %5
store i32 %352, i32* %353
%354 = load i32*, i32** %5
%355 = getelementptr inbounds i32, i32* %354, i32 1
store i32* %355, i32** %5
%356 = load i32*, i32** %3
%357 = load i32, i32* %356
%358 = lshr i32 %357, 21
%359 = and i32 %358, 7
%360 = load i32*, i32** %5
store i32 %359, i32* %360
%361 = load i32*, i32** %5
%362 = getelementptr inbounds i32, i32* %361, i32 1
store i32* %362, i32** %5
%363 = load i32*, i32** %3
%364 = load i32, i32* %363
%365 = lshr i32 %364, 24
%366 = and i32 %365, 7
%367 = load i32*, i32** %5
store i32 %366, i32* %367
%368 = load i32*, i32** %5
%369 = getelementptr inbounds i32, i32* %368, i32 1
store i32* %369, i32** %5
br label %524
370: ; preds = %2
%371 = load i32*, i32** %3
%372 = load i32, i32* %371
%373 = and i32 %372, 15
%374 = load i32*, i32** %5
store i32 %373, i32* %374
%375 = load i32*, i32** %5
%376 = getelementptr inbounds i32, i32* %375, i32 1
store i32* %376, i32** %5
%377 = load i32*, i32** %3
%378 = load i32, i32* %377
%379 = lshr i32 %378, 4
%380 = and i32 %379, 15
%381 = load i32*, i32** %5
store i32 %380, i32* %381
%382 = load i32*, i32** %5
%383 = getelementptr inbounds i32, i32* %382, i32 1
store i32* %383, i32** %5
%384 = load i32*, i32** %3
%385 = load i32, i32* %384
%386 = lshr i32 %385, 8
%387 = and i32 %386, 15
%388 = load i32*, i32** %5
store i32 %387, i32* %388
%389 = load i32*, i32** %5
%390 = getelementptr inbounds i32, i32* %389, i32 1
store i32* %390, i32** %5
%391 = load i32*, i32** %3
%392 = load i32, i32* %391
%393 = lshr i32 %392, 12
%394 = and i32 %393, 15
%395 = load i32*, i32** %5
store i32 %394, i32* %395
%396 = load i32*, i32** %5
%397 = getelementptr inbounds i32, i32* %396, i32 1
store i32* %397, i32** %5
%398 = load i32*, i32** %3
%399 = load i32, i32* %398
%400 = lshr i32 %399, 16
%401 = and i32 %400, 15
%402 = load i32*, i32** %5
store i32 %401, i32* %402
%403 = load i32*, i32** %5
%404 = getelementptr inbounds i32, i32* %403, i32 1
store i32* %404, i32** %5
%405 = load i32*, i32** %3
%406 = load i32, i32* %405
%407 = lshr i32 %406, 20
%408 = and i32 %407, 15
%409 = load i32*, i32** %5
store i32 %408, i32* %409
%410 = load i32*, i32** %5
%411 = getelementptr inbounds i32, i32* %410, i32 1
store i32* %411, i32** %5
%412 = load i32*, i32** %3
%413 = load i32, i32* %412
%414 = lshr i32 %413, 24
%415 = and i32 %414, 15
%416 = load i32*, i32** %5
store i32 %415, i32* %416
%417 = load i32*, i32** %5
%418 = getelementptr inbounds i32, i32* %417, i32 1
store i32* %418, i32** %5
br label %524
419: ; preds = %2
%420 = load i32*, i32** %3
%421 = load i32, i32* %420
%422 = and i32 %421, 31
%423 = load i32*, i32** %5
store i32 %422, i32* %423
%424 = load i32*, i32** %5
%425 = getelementptr inbounds i32, i32* %424, i32 1
store i32* %425, i32** %5
%426 = load i32*, i32** %3
%427 = load i32, i32* %426
%428 = lshr i32 %427, 5
%429 = and i32 %428, 31
%430 = load i32*, i32** %5
store i32 %429, i32* %430
%431 = load i32*, i32** %5
%432 = getelementptr inbounds i32, i32* %431, i32 1
store i32* %432, i32** %5
%433 = load i32*, i32** %3
%434 = load i32, i32* %433
%435 = lshr i32 %434, 10
%436 = and i32 %435, 31
%437 = load i32*, i32** %5
store i32 %436, i32* %437
%438 = load i32*, i32** %5
%439 = getelementptr inbounds i32, i32* %438, i32 1
store i32* %439, i32** %5
%440 = load i32*, i32** %3
%441 = load i32, i32* %440
%442 = lshr i32 %441, 15
%443 = and i32 %442, 31
%444 = load i32*, i32** %5
store i32 %443, i32* %444
%445 = load i32*, i32** %5
%446 = getelementptr inbounds i32, i32* %445, i32 1
store i32* %446, i32** %5
%447 = load i32*, i32** %3
%448 = load i32, i32* %447
%449 = lshr i32 %448, 20
%450 = and i32 %449, 31
%451 = load i32*, i32** %5
store i32 %450, i32* %451
%452 = load i32*, i32** %5
%453 = getelementptr inbounds i32, i32* %452, i32 1
store i32* %453, i32** %5
br label %524
454: ; preds = %2
%455 = load i32*, i32** %3
%456 = load i32, i32* %455
%457 = and i32 %456, 127
%458 = load i32*, i32** %5
store i32 %457, i32* %458
%459 = load i32*, i32** %5
%460 = getelementptr inbounds i32, i32* %459, i32 1
store i32* %460, i32** %5
%461 = load i32*, i32** %3
%462 = load i32, i32* %461
%463 = lshr i32 %462, 7
%464 = and i32 %463, 127
%465 = load i32*, i32** %5
store i32 %464, i32* %465
%466 = load i32*, i32** %5
%467 = getelementptr inbounds i32, i32* %466, i32 1
store i32* %467, i32** %5
%468 = load i32*, i32** %3
%469 = load i32, i32* %468
%470 = lshr i32 %469, 14
%471 = and i32 %470, 127
%472 = load i32*, i32** %5
store i32 %471, i32* %472
%473 = load i32*, i32** %5
%474 = getelementptr inbounds i32, i32* %473, i32 1
store i32* %474, i32** %5
%475 = load i32*, i32** %3
%476 = load i32, i32* %475
%477 = lshr i32 %476, 21
%478 = and i32 %477, 127
%479 = load i32*, i32** %5
store i32 %478, i32* %479
%480 = load i32*, i32** %5
%481 = getelementptr inbounds i32, i32* %480, i32 1
store i32* %481, i32** %5
br label %524
482: ; preds = %2
%483 = load i32*, i32** %3
%484 = load i32, i32* %483
%485 = and i32 %484, 511
%486 = load i32*, i32** %5
store i32 %485, i32* %486
%487 = load i32*, i32** %5
%488 = getelementptr inbounds i32, i32* %487, i32 1
store i32* %488, i32** %5
%489 = load i32*, i32** %3
%490 = load i32, i32* %489
%491 = lshr i32 %490, 9
%492 = and i32 %491, 511
%493 = load i32*, i32** %5
store i32 %492, i32* %493
%494 = load i32*, i32** %5
%495 = getelementptr inbounds i32, i32* %494, i32 1
store i32* %495, i32** %5
%496 = load i32*, i32** %3
%497 = load i32, i32* %496
%498 = lshr i32 %497, 18
%499 = and i32 %498, 511
%500 = load i32*, i32** %5
store i32 %499, i32* %500
%501 = load i32*, i32** %5
%502 = getelementptr inbounds i32, i32* %501, i32 1
store i32* %502, i32** %5
br label %524
503: ; preds = %2
%504 = load i32*, i32** %3
%505 = load i32, i32* %504
%506 = and i32 %505, 16383
%507 = load i32*, i32** %5
store i32 %506, i32* %507
%508 = load i32*, i32** %5
%509 = getelementptr inbounds i32, i32* %508, i32 1
store i32* %509, i32** %5
%510 = load i32*, i32** %3
%511 = load i32, i32* %510
%512 = lshr i32 %511, 14
%513 = and i32 %512, 16383
%514 = load i32*, i32** %5
store i32 %513, i32* %514
%515 = load i32*, i32** %5
%516 = getelementptr inbounds i32, i32* %515, i32 1
store i32* %516, i32** %5
br label %524
517: ; preds = %2
%518 = load i32*, i32** %3
%519 = load i32, i32* %518
%520 = and i32 %519, 268435455
%521 = load i32*, i32** %5
store i32 %520, i32* %521
%522 = load i32*, i32** %5
%523 = getelementptr inbounds i32, i32* %522, i32 1
store i32* %523, i32** %5
br label %524
524: ; preds = %2, %517, %503, %482, %454, %419, %370, %307, %209, %13
%525 = load i32*, i32** %5
%526 = load i32**, i32*** %4
store i32* %525, i32** %526
%527 = load i32, i32* %6
%528 = sext i32 %527 to i64
%529 = getelementptr inbounds [9 x i32], [9 x i32]* @s9_decode.conum, i64 0, i64 %528
%530 = load i32, i32* %529
ret i32 %530
}

LLVM IR (-O2):
@s9_decode.conum = internal unnamed_addr constant [9 x i32] [i32 28, i32 14, i32 9, i32 7, i32 5, i32 4, i32 3, i32 2, i32 1]
define i32 @s9_decode(i32* %0, i32** nocapture %1) {
%3 = load i32*, i32** %1
%4 = load i32, i32* %0
%5 = lshr i32 %4, 28
switch i32 %5, label %289 [
i32 0, label %6
i32 1, label %117
i32 2, label %172
i32 3, label %207
i32 4, label %234
i32 5, label %253
i32 6, label %268
i32 7, label %279
i32 8, label %286
]
6: ; preds = %2
%7 = and i32 %4, 1
store i32 %7, i32* %3
%8 = getelementptr inbounds i32, i32* %3, i64 1
%9 = load i32, i32* %0
%10 = lshr i32 %9, 1
%11 = and i32 %10, 1
store i32 %11, i32* %8
%12 = getelementptr inbounds i32, i32* %3, i64 2
%13 = load i32, i32* %0
%14 = lshr i32 %13, 2
%15 = and i32 %14, 1
store i32 %15, i32* %12
%16 = getelementptr inbounds i32, i32* %3, i64 3
%17 = load i32, i32* %0
%18 = lshr i32 %17, 3
%19 = and i32 %18, 1
store i32 %19, i32* %16
%20 = getelementptr inbounds i32, i32* %3, i64 4
%21 = load i32, i32* %0
%22 = lshr i32 %21, 4
%23 = and i32 %22, 1
store i32 %23, i32* %20
%24 = getelementptr inbounds i32, i32* %3, i64 5
%25 = load i32, i32* %0
%26 = lshr i32 %25, 5
%27 = and i32 %26, 1
store i32 %27, i32* %24
%28 = getelementptr inbounds i32, i32* %3, i64 6
%29 = load i32, i32* %0
%30 = lshr i32 %29, 6
%31 = and i32 %30, 1
store i32 %31, i32* %28
%32 = getelementptr inbounds i32, i32* %3, i64 7
%33 = load i32, i32* %0
%34 = lshr i32 %33, 7
%35 = and i32 %34, 1
store i32 %35, i32* %32
%36 = getelementptr inbounds i32, i32* %3, i64 8
%37 = load i32, i32* %0
%38 = lshr i32 %37, 8
%39 = and i32 %38, 1
store i32 %39, i32* %36
%40 = getelementptr inbounds i32, i32* %3, i64 9
%41 = load i32, i32* %0
%42 = lshr i32 %41, 9
%43 = and i32 %42, 1
store i32 %43, i32* %40
%44 = getelementptr inbounds i32, i32* %3, i64 10
%45 = load i32, i32* %0
%46 = lshr i32 %45, 10
%47 = and i32 %46, 1
store i32 %47, i32* %44
%48 = getelementptr inbounds i32, i32* %3, i64 11
%49 = load i32, i32* %0
%50 = lshr i32 %49, 11
%51 = and i32 %50, 1
store i32 %51, i32* %48
%52 = getelementptr inbounds i32, i32* %3, i64 12
%53 = load i32, i32* %0
%54 = lshr i32 %53, 12
%55 = and i32 %54, 1
store i32 %55, i32* %52
%56 = getelementptr inbounds i32, i32* %3, i64 13
%57 = load i32, i32* %0
%58 = lshr i32 %57, 13
%59 = and i32 %58, 1
store i32 %59, i32* %56
%60 = getelementptr inbounds i32, i32* %3, i64 14
%61 = load i32, i32* %0
%62 = lshr i32 %61, 14
%63 = and i32 %62, 1
store i32 %63, i32* %60
%64 = getelementptr inbounds i32, i32* %3, i64 15
%65 = load i32, i32* %0
%66 = lshr i32 %65, 15
%67 = and i32 %66, 1
store i32 %67, i32* %64
%68 = getelementptr inbounds i32, i32* %3, i64 16
%69 = load i32, i32* %0
%70 = lshr i32 %69, 16
%71 = and i32 %70, 1
store i32 %71, i32* %68
%72 = getelementptr inbounds i32, i32* %3, i64 17
%73 = load i32, i32* %0
%74 = lshr i32 %73, 17
%75 = and i32 %74, 1
store i32 %75, i32* %72
%76 = getelementptr inbounds i32, i32* %3, i64 18
%77 = load i32, i32* %0
%78 = lshr i32 %77, 18
%79 = and i32 %78, 1
store i32 %79, i32* %76
%80 = getelementptr inbounds i32, i32* %3, i64 19
%81 = load i32, i32* %0
%82 = lshr i32 %81, 19
%83 = and i32 %82, 1
store i32 %83, i32* %80
%84 = getelementptr inbounds i32, i32* %3, i64 20
%85 = load i32, i32* %0
%86 = lshr i32 %85, 20
%87 = and i32 %86, 1
store i32 %87, i32* %84
%88 = getelementptr inbounds i32, i32* %3, i64 21
%89 = load i32, i32* %0
%90 = lshr i32 %89, 21
%91 = and i32 %90, 1
store i32 %91, i32* %88
%92 = getelementptr inbounds i32, i32* %3, i64 22
%93 = load i32, i32* %0
%94 = lshr i32 %93, 22
%95 = and i32 %94, 1
store i32 %95, i32* %92
%96 = getelementptr inbounds i32, i32* %3, i64 23
%97 = load i32, i32* %0
%98 = lshr i32 %97, 23
%99 = and i32 %98, 1
store i32 %99, i32* %96
%100 = getelementptr inbounds i32, i32* %3, i64 24
%101 = load i32, i32* %0
%102 = lshr i32 %101, 24
%103 = and i32 %102, 1
store i32 %103, i32* %100
%104 = getelementptr inbounds i32, i32* %3, i64 25
%105 = load i32, i32* %0
%106 = lshr i32 %105, 25
%107 = and i32 %106, 1
store i32 %107, i32* %104
%108 = getelementptr inbounds i32, i32* %3, i64 26
%109 = load i32, i32* %0
%110 = lshr i32 %109, 26
%111 = and i32 %110, 1
store i32 %111, i32* %108
%112 = getelementptr inbounds i32, i32* %3, i64 27
%113 = load i32, i32* %0
%114 = lshr i32 %113, 27
%115 = and i32 %114, 1
store i32 %115, i32* %112
%116 = getelementptr inbounds i32, i32* %3, i64 28
br label %289
117: ; preds = %2
%118 = and i32 %4, 3
store i32 %118, i32* %3
%119 = getelementptr inbounds i32, i32* %3, i64 1
%120 = load i32, i32* %0
%121 = lshr i32 %120, 2
%122 = and i32 %121, 3
store i32 %122, i32* %119
%123 = getelementptr inbounds i32, i32* %3, i64 2
%124 = load i32, i32* %0
%125 = lshr i32 %124, 4
%126 = and i32 %125, 3
store i32 %126, i32* %123
%127 = getelementptr inbounds i32, i32* %3, i64 3
%128 = load i32, i32* %0
%129 = lshr i32 %128, 6
%130 = and i32 %129, 3
store i32 %130, i32* %127
%131 = getelementptr inbounds i32, i32* %3, i64 4
%132 = load i32, i32* %0
%133 = lshr i32 %132, 8
%134 = and i32 %133, 3
store i32 %134, i32* %131
%135 = getelementptr inbounds i32, i32* %3, i64 5
%136 = load i32, i32* %0
%137 = lshr i32 %136, 10
%138 = and i32 %137, 3
store i32 %138, i32* %135
%139 = getelementptr inbounds i32, i32* %3, i64 6
%140 = load i32, i32* %0
%141 = lshr i32 %140, 12
%142 = and i32 %141, 3
store i32 %142, i32* %139
%143 = getelementptr inbounds i32, i32* %3, i64 7
%144 = load i32, i32* %0
%145 = lshr i32 %144, 14
%146 = and i32 %145, 3
store i32 %146, i32* %143
%147 = getelementptr inbounds i32, i32* %3, i64 8
%148 = load i32, i32* %0
%149 = lshr i32 %148, 16
%150 = and i32 %149, 3
store i32 %150, i32* %147
%151 = getelementptr inbounds i32, i32* %3, i64 9
%152 = load i32, i32* %0
%153 = lshr i32 %152, 18
%154 = and i32 %153, 3
store i32 %154, i32* %151
%155 = getelementptr inbounds i32, i32* %3, i64 10
%156 = load i32, i32* %0
%157 = lshr i32 %156, 20
%158 = and i32 %157, 3
store i32 %158, i32* %155
%159 = getelementptr inbounds i32, i32* %3, i64 11
%160 = load i32, i32* %0
%161 = lshr i32 %160, 22
%162 = and i32 %161, 3
store i32 %162, i32* %159
%163 = getelementptr inbounds i32, i32* %3, i64 12
%164 = load i32, i32* %0
%165 = lshr i32 %164, 24
%166 = and i32 %165, 3
store i32 %166, i32* %163
%167 = getelementptr inbounds i32, i32* %3, i64 13
%168 = load i32, i32* %0
%169 = lshr i32 %168, 26
%170 = and i32 %169, 3
store i32 %170, i32* %167
%171 = getelementptr inbounds i32, i32* %3, i64 14
br label %289
172: ; preds = %2
%173 = and i32 %4, 7
store i32 %173, i32* %3
%174 = getelementptr inbounds i32, i32* %3, i64 1
%175 = load i32, i32* %0
%176 = lshr i32 %175, 3
%177 = and i32 %176, 7
store i32 %177, i32* %174
%178 = getelementptr inbounds i32, i32* %3, i64 2
%179 = load i32, i32* %0
%180 = lshr i32 %179, 6
%181 = and i32 %180, 7
store i32 %181, i32* %178
%182 = getelementptr inbounds i32, i32* %3, i64 3
%183 = load i32, i32* %0
%184 = lshr i32 %183, 9
%185 = and i32 %184, 7
store i32 %185, i32* %182
%186 = getelementptr inbounds i32, i32* %3, i64 4
%187 = load i32, i32* %0
%188 = lshr i32 %187, 12
%189 = and i32 %188, 7
store i32 %189, i32* %186
%190 = getelementptr inbounds i32, i32* %3, i64 5
%191 = load i32, i32* %0
%192 = lshr i32 %191, 15
%193 = and i32 %192, 7
store i32 %193, i32* %190
%194 = getelementptr inbounds i32, i32* %3, i64 6
%195 = load i32, i32* %0
%196 = lshr i32 %195, 18
%197 = and i32 %196, 7
store i32 %197, i32* %194
%198 = getelementptr inbounds i32, i32* %3, i64 7
%199 = load i32, i32* %0
%200 = lshr i32 %199, 21
%201 = and i32 %200, 7
store i32 %201, i32* %198
%202 = getelementptr inbounds i32, i32* %3, i64 8
%203 = load i32, i32* %0
%204 = lshr i32 %203, 24
%205 = and i32 %204, 7
store i32 %205, i32* %202
%206 = getelementptr inbounds i32, i32* %3, i64 9
br label %289
207: ; preds = %2
%208 = and i32 %4, 15
store i32 %208, i32* %3
%209 = getelementptr inbounds i32, i32* %3, i64 1
%210 = load i32, i32* %0
%211 = lshr i32 %210, 4
%212 = and i32 %211, 15
store i32 %212, i32* %209
%213 = getelementptr inbounds i32, i32* %3, i64 2
%214 = load i32, i32* %0
%215 = lshr i32 %214, 8
%216 = and i32 %215, 15
store i32 %216, i32* %213
%217 = getelementptr inbounds i32, i32* %3, i64 3
%218 = load i32, i32* %0
%219 = lshr i32 %218, 12
%220 = and i32 %219, 15
store i32 %220, i32* %217
%221 = getelementptr inbounds i32, i32* %3, i64 4
%222 = load i32, i32* %0
%223 = lshr i32 %222, 16
%224 = and i32 %223, 15
store i32 %224, i32* %221
%225 = getelementptr inbounds i32, i32* %3, i64 5
%226 = load i32, i32* %0
%227 = lshr i32 %226, 20
%228 = and i32 %227, 15
store i32 %228, i32* %225
%229 = getelementptr inbounds i32, i32* %3, i64 6
%230 = load i32, i32* %0
%231 = lshr i32 %230, 24
%232 = and i32 %231, 15
store i32 %232, i32* %229
%233 = getelementptr inbounds i32, i32* %3, i64 7
br label %289
234: ; preds = %2
%235 = and i32 %4, 31
store i32 %235, i32* %3
%236 = getelementptr inbounds i32, i32* %3, i64 1
%237 = load i32, i32* %0
%238 = lshr i32 %237, 5
%239 = and i32 %238, 31
store i32 %239, i32* %236
%240 = getelementptr inbounds i32, i32* %3, i64 2
%241 = load i32, i32* %0
%242 = lshr i32 %241, 10
%243 = and i32 %242, 31
store i32 %243, i32* %240
%244 = getelementptr inbounds i32, i32* %3, i64 3
%245 = load i32, i32* %0
%246 = lshr i32 %245, 15
%247 = and i32 %246, 31
store i32 %247, i32* %244
%248 = getelementptr inbounds i32, i32* %3, i64 4
%249 = load i32, i32* %0
%250 = lshr i32 %249, 20
%251 = and i32 %250, 31
store i32 %251, i32* %248
%252 = getelementptr inbounds i32, i32* %3, i64 5
br label %289
253: ; preds = %2
%254 = and i32 %4, 127
store i32 %254, i32* %3
%255 = getelementptr inbounds i32, i32* %3, i64 1
%256 = load i32, i32* %0
%257 = lshr i32 %256, 7
%258 = and i32 %257, 127
store i32 %258, i32* %255
%259 = getelementptr inbounds i32, i32* %3, i64 2
%260 = load i32, i32* %0
%261 = lshr i32 %260, 14
%262 = and i32 %261, 127
store i32 %262, i32* %259
%263 = getelementptr inbounds i32, i32* %3, i64 3
%264 = load i32, i32* %0
%265 = lshr i32 %264, 21
%266 = and i32 %265, 127
store i32 %266, i32* %263
%267 = getelementptr inbounds i32, i32* %3, i64 4
br label %289
268: ; preds = %2
%269 = and i32 %4, 511
store i32 %269, i32* %3
%270 = getelementptr inbounds i32, i32* %3, i64 1
%271 = load i32, i32* %0
%272 = lshr i32 %271, 9
%273 = and i32 %272, 511
store i32 %273, i32* %270
%274 = getelementptr inbounds i32, i32* %3, i64 2
%275 = load i32, i32* %0
%276 = lshr i32 %275, 18
%277 = and i32 %276, 511
store i32 %277, i32* %274
%278 = getelementptr inbounds i32, i32* %3, i64 3
br label %289
279: ; preds = %2
%280 = and i32 %4, 16383
store i32 %280, i32* %3
%281 = getelementptr inbounds i32, i32* %3, i64 1
%282 = load i32, i32* %0
%283 = lshr i32 %282, 14
%284 = and i32 %283, 16383
store i32 %284, i32* %281
%285 = getelementptr inbounds i32, i32* %3, i64 2
br label %289
286: ; preds = %2
%287 = and i32 %4, 268435455
store i32 %287, i32* %3
%288 = getelementptr inbounds i32, i32* %3, i64 1
br label %289
289: ; preds = %2, %286, %279, %268, %253, %234, %207, %172, %117, %6
%290 = phi i32* [ %3, %2 ], [ %288, %286 ], [ %285, %279 ], [ %278, %268 ], [ %267, %253 ], [ %252, %234 ], [ %233, %207 ], [ %206, %172 ], [ %171, %117 ], [ %116, %6 ]
store i32* %290, i32** %1
%291 = zext i32 %5 to i64
%292 = getelementptr inbounds [9 x i32], [9 x i32]* @s9_decode.conum, i64 0, i64 %291
%293 = load i32, i32* %292
ret i32 %293
}