user: 请从给定的汇编指令推导出C源代码：

```asm
<IntegerUnpacker_8>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x38(%rbp)
  mov    %rsi,-0x40(%rbp)
  mov    %edx,-0x44(%rbp)
  mov    %ecx,-0x48(%rbp)
  mov    %r8d,-0x4c(%rbp)
  mov    %r9d,-0x50(%rbp)
  mov    -0x38(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x40(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  movl   $0x0,-0x28(%rbp)
  cmpl   $0x8,-0x44(%rbp)
  jg     L186
  mov    -0x48(%rbp),%eax
  cmp    -0x44(%rbp),%eax
  jg     L186
  mov    -0x50(%rbp),%eax
  lea    0x1f(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x5,%eax
  cltq
  shl    $0x2,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x50(%rbp),%eax
  cltd
  shr    $0x1b,%edx
  add    %edx,%eax
  and    $0x1f,%eax
  sub    %edx,%eax
  mov    %eax,%edx
  mov    $0x20,%eax
  sub    %edx,%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    (%rax),%eax
  mov    %eax,-0x30(%rbp)
  cmpl   $0xffffffff,-0x44(%rbp)
  jne    L215
  mov    -0x48(%rbp),%eax
  sub    $0x1,%eax
  mov    $0x1,%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  neg    %eax
  mov    %eax,-0x28(%rbp)
L215:
  cmpl   $0x20,-0x2c(%rbp)
  jne    L293
  cmpl   $0x8,-0x44(%rbp)
  jne    L179
  jmp    L180
L184:
  mov    -0x30(%rbp),%eax
  shr    $0x18,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x10,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x8,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    -0x30(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    (%rax),%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x30(%rbp),%eax
  shr    $0x18,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x10,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x8,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    -0x30(%rbp),%edx
  mov    %dl,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    (%rax),%eax
  mov    %eax,-0x30(%rbp)
  subl   $0x8,-0x4c(%rbp)
L180:
  cmpl   $0x7,-0x4c(%rbp)
  jg     L184
L179:
  cmpl   $0x6,-0x44(%rbp)
  jne    L24
  jmp    L12
L94:
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    (%rax),%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    (%rax),%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    (%rax),%eax
  mov    %eax,-0x1c(%rbp)
  mov    -0x30(%rbp),%eax
  shr    $0x1a,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x14,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3f,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0xe,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3f,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x8,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3f,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x2,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3f,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shl    $0x4,%eax
  and    $0x30,%eax
  mov    %eax,%edx
  mov    -0x24(%rbp),%eax
  shr    $0x1c,%eax
  mov    %edx,%ecx
  or     %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x24(%rbp),%eax
  shr    $0x16,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3f,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x24(%rbp),%eax
  shr    $0x10,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3f,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x24(%rbp),%eax
  shr    $0xa,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3f,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x24(%rbp),%eax
  shr    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3f,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x24(%rbp),%eax
  shl    $0x2,%eax
  and    $0x3c,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%eax
  shr    $0x1e,%eax
  mov    %edx,%ecx
  or     %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x20(%rbp),%eax
  shr    $0x18,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3f,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x20(%rbp),%eax
  shr    $0x12,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3f,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x20(%rbp),%eax
  shr    $0xc,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3f,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x20(%rbp),%eax
  shr    $0x6,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3f,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x20(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3f,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x1c(%rbp),%eax
  mov    %eax,-0x30(%rbp)
  subl   $0x10,-0x4c(%rbp)
L12:
  cmpl   $0xf,-0x4c(%rbp)
  jg     L94
L24:
  cmpl   $0x4,-0x44(%rbp)
  jne    L138
  jmp    L103
L77:
  mov    -0x30(%rbp),%eax
  shr    $0x1c,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x18,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0xf,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x14,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0xf,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x10,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0xf,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0xc,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0xf,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x8,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0xf,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0xf,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0xf,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    (%rax),%eax
  mov    %eax,-0x30(%rbp)
  subl   $0x8,-0x4c(%rbp)
L103:
  cmpl   $0x7,-0x4c(%rbp)
  jg     L77
L138:
  cmpl   $0x2,-0x44(%rbp)
  jne    L3
  jmp    L287
L201:
  mov    -0x30(%rbp),%eax
  shr    $0x1e,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x1c,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x1a,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x18,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x16,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x14,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x12,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x10,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0xe,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0xc,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0xa,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x8,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x6,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x2,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x3,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    (%rax),%eax
  mov    %eax,-0x30(%rbp)
  subl   $0x10,-0x4c(%rbp)
L287:
  cmpl   $0xf,-0x4c(%rbp)
  jg     L201
L3:
  cmpl   $0x1,-0x44(%rbp)
  jne    L293
  jmp    L303
L225:
  mov    -0x30(%rbp),%eax
  shr    $0x1f,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x1e,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x1d,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x1c,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x1b,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x1a,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x19,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x18,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x17,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x16,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x15,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x14,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x13,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x12,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x11,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x10,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0xf,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0xe,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0xd,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0xc,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0xb,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0xa,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x9,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x8,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x7,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x6,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x5,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x3,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    $0x2,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  shr    %eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  and    $0x1,%ecx
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x30(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  and    $0x1,%edx
  mov    %dl,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    (%rax),%eax
  mov    %eax,-0x30(%rbp)
  subl   $0x20,-0x4c(%rbp)
L303:
  cmpl   $0x1f,-0x4c(%rbp)
  jg     L225
L293:
  mov    -0x30(%rbp),%eax
  mov    %rax,-0x8(%rbp)
  shlq   $0x20,-0x8(%rbp)
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    (%rax),%eax
  mov    %eax,%eax
  or     %rax,-0x8(%rbp)
  cmpl   $0x1f,-0x2c(%rbp)
  jg     L159
  mov    $0x20,%eax
  sub    -0x2c(%rbp),%eax
  mov    %eax,%ecx
  shlq   %cl,-0x8(%rbp)
  jmp    L159
L141:
  mov    $0x40,%eax
  sub    -0x44(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  mov    %eax,%ecx
  shr    %cl,%rdx
  mov    %rdx,%rcx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x44(%rbp),%eax
  mov    %eax,%ecx
  shlq   %cl,-0x8(%rbp)
  mov    -0x44(%rbp),%eax
  sub    %eax,-0x2c(%rbp)
  mov    $0x40,%eax
  sub    -0x44(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  mov    %eax,%ecx
  shr    %cl,%rdx
  mov    %rdx,%rcx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x44(%rbp),%eax
  mov    %eax,%ecx
  shlq   %cl,-0x8(%rbp)
  mov    -0x44(%rbp),%eax
  sub    %eax,-0x2c(%rbp)
  mov    $0x40,%eax
  sub    -0x44(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  mov    %eax,%ecx
  shr    %cl,%rdx
  mov    %rdx,%rcx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x44(%rbp),%eax
  mov    %eax,%ecx
  shlq   %cl,-0x8(%rbp)
  mov    -0x44(%rbp),%eax
  sub    %eax,-0x2c(%rbp)
  mov    $0x40,%eax
  sub    -0x44(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  mov    %eax,%ecx
  shr    %cl,%rdx
  mov    %rdx,%rcx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x44(%rbp),%eax
  mov    %eax,%ecx
  shlq   %cl,-0x8(%rbp)
  mov    -0x44(%rbp),%eax
  sub    %eax,-0x2c(%rbp)
  cmpl   $0x0,-0x2c(%rbp)
  jg     L194
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    (%rax),%eax
  mov    %eax,-0x30(%rbp)
  cmpl   $0x0,-0x2c(%rbp)
  jne    L35
  mov    -0x30(%rbp),%eax
  or     %rax,-0x8(%rbp)
  jmp    L260
L35:
  mov    -0x2c(%rbp),%eax
  neg    %eax
  mov    %eax,%ecx
  shrq   %cl,-0x8(%rbp)
  mov    -0x30(%rbp),%eax
  or     %rax,-0x8(%rbp)
  mov    -0x2c(%rbp),%eax
  neg    %eax
  mov    %eax,%ecx
  shlq   %cl,-0x8(%rbp)
L260:
  addl   $0x20,-0x2c(%rbp)
L194:
  subl   $0x4,-0x4c(%rbp)
L159:
  cmpl   $0x3,-0x4c(%rbp)
  jg     L141
  jmp    L175
L133:
  mov    $0x40,%eax
  sub    -0x44(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  mov    %eax,%ecx
  shr    %cl,%rdx
  mov    %rdx,%rcx
  mov    -0x10(%rbp),%rax
  lea    0x1(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    %ecx,%edx
  mov    %dl,(%rax)
  mov    -0x44(%rbp),%eax
  mov    %eax,%ecx
  shlq   %cl,-0x8(%rbp)
  mov    -0x44(%rbp),%eax
  sub    %eax,-0x2c(%rbp)
  cmpl   $0x0,-0x2c(%rbp)
  jg     L175
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    (%rax),%eax
  mov    %eax,-0x30(%rbp)
  cmpl   $0x0,-0x2c(%rbp)
  jne    L284
  mov    -0x30(%rbp),%eax
  or     %rax,-0x8(%rbp)
  jmp    L31
L284:
  mov    -0x2c(%rbp),%eax
  neg    %eax
  mov    %eax,%ecx
  shrq   %cl,-0x8(%rbp)
  mov    -0x30(%rbp),%eax
  or     %rax,-0x8(%rbp)
  mov    -0x2c(%rbp),%eax
  neg    %eax
  mov    %eax,%ecx
  shlq   %cl,-0x8(%rbp)
L31:
  addl   $0x20,-0x2c(%rbp)
L175:
  mov    -0x4c(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    %edx,-0x4c(%rbp)
  test   %eax,%eax
  jg     L133
  jmp    L257
L186:
  nop
L257:
  pop    %rbp
  ret
```

assistant: ```c
void IntegerUnpacker_8(void *stream, void *dst, int nbits, int nbitt, int n, int offset) {
  unsigned int *packed = (unsigned int *)stream;
  char *unpacked = (char *)dst;
  unsigned long long temp;
  unsigned int token, token1, token2, token3;
  int bleft;
  int signed_offset = 0;
  if (nbits > 8 || nbitt > nbits)
    return;
  packed += offset / 32;
  bleft = 32 - (offset % 32);
  token = *packed++;
  if (nbits == -1)
    signed_offset = -(1 << (nbitt - 1));
  if (bleft == 32) {
    if (nbits == 8) {
      while (n > 7) {
        *unpacked++ = ((token >> 24));
        *unpacked++ = ((token >> 16) & 0xFF);
        *unpacked++ = ((token >> 8) & 0xFF);
        *unpacked++ = (token & 0xFF);
        token = *packed++;
        *unpacked++ = ((token >> 24));
        *unpacked++ = ((token >> 16) & 0xFF);
        *unpacked++ = ((token >> 8) & 0xFF);
        *unpacked++ = (token & 0xFF);
        token = *packed++;
        n -= 8;
      }
    }
    if (nbits == 6) {
      while (n > 15) {
        token2 = *packed++;
        token3 = *packed++;
        token1 = *packed++;
        *unpacked++ = ((token >> 26));
        *unpacked++ = ((token >> 20) & 0x3F);
        *unpacked++ = ((token >> 14) & 0x3F);
        *unpacked++ = ((token >> 8) & 0x3F);
        *unpacked++ = ((token >> 2) & 0x3F);
        *unpacked++ = (((token & 0x3) << 4) | (token2 >> 28));
        *unpacked++ = ((token2 >> 22) & 0x3F);
        *unpacked++ = ((token2 >> 16) & 0x3F);
        *unpacked++ = ((token2 >> 10) & 0x3F);
        *unpacked++ = ((token2 >> 4) & 0x3F);
        *unpacked++ = (((token2 & 0xF) << 2) | (token3 >> 30));
        *unpacked++ = ((token3 >> 24) & 0x3F);
        *unpacked++ = ((token3 >> 18) & 0x3F);
        *unpacked++ = ((token3 >> 12) & 0x3F);
        *unpacked++ = ((token3 >> 6) & 0x3F);
        *unpacked++ = (token3 & 0x3F);
        token = token1;
        n -= 16;
      }
    }
    if (nbits == 4) {
      while (n > 7) {
        *unpacked++ = ((token >> 28));
        *unpacked++ = ((token >> 24) & 0xF);
        *unpacked++ = ((token >> 20) & 0xF);
        *unpacked++ = ((token >> 16) & 0xF);
        *unpacked++ = ((token >> 12) & 0xF);
        *unpacked++ = ((token >> 8) & 0xF);
        *unpacked++ = ((token >> 4) & 0xF);
        *unpacked++ = (token & 0xF);
        token = *packed++;
        n -= 8;
      }
    }
    if (nbits == 2) {
      while (n > 15) {
        *unpacked++ = ((token >> 30));
        *unpacked++ = ((token >> 28) & 0x3);
        *unpacked++ = ((token >> 26) & 0x3);
        *unpacked++ = ((token >> 24) & 0x3);
        *unpacked++ = ((token >> 22) & 0x3);
        *unpacked++ = ((token >> 20) & 0x3);
        *unpacked++ = ((token >> 18) & 0x3);
        *unpacked++ = ((token >> 16) & 0x3);
        *unpacked++ = ((token >> 14) & 0x3);
        *unpacked++ = ((token >> 12) & 0x3);
        *unpacked++ = ((token >> 10) & 0x3);
        *unpacked++ = ((token >> 8) & 0x3);
        *unpacked++ = ((token >> 6) & 0x3);
        *unpacked++ = ((token >> 4) & 0x3);
        *unpacked++ = ((token >> 2) & 0x3);
        *unpacked++ = (token & 0x3);
        token = *packed++;
        n -= 16;
      }
    }
    if (nbits == 1) {
      while (n > 31) {
        *unpacked++ = ((token >> 31) & 1);
        *unpacked++ = ((token >> 30) & 1);
        *unpacked++ = ((token >> 29) & 1);
        *unpacked++ = ((token >> 28) & 1);
        *unpacked++ = ((token >> 27) & 1);
        *unpacked++ = ((token >> 26) & 1);
        *unpacked++ = ((token >> 25) & 1);
        *unpacked++ = ((token >> 24) & 1);
        *unpacked++ = ((token >> 23) & 1);
        *unpacked++ = ((token >> 22) & 1);
        *unpacked++ = ((token >> 21) & 1);
        *unpacked++ = ((token >> 20) & 1);
        *unpacked++ = ((token >> 19) & 1);
        *unpacked++ = ((token >> 18) & 1);
        *unpacked++ = ((token >> 17) & 1);
        *unpacked++ = ((token >> 16) & 1);
        *unpacked++ = ((token >> 15) & 1);
        *unpacked++ = ((token >> 14) & 1);
        *unpacked++ = ((token >> 13) & 1);
        *unpacked++ = ((token >> 12) & 1);
        *unpacked++ = ((token >> 11) & 1);
        *unpacked++ = ((token >> 10) & 1);
        *unpacked++ = ((token >> 9) & 1);
        *unpacked++ = ((token >> 8) & 1);
        *unpacked++ = ((token >> 7) & 1);
        *unpacked++ = ((token >> 6) & 1);
        *unpacked++ = ((token >> 5) & 1);
        *unpacked++ = ((token >> 4) & 1);
        *unpacked++ = ((token >> 3) & 1);
        *unpacked++ = ((token >> 2) & 1);
        *unpacked++ = ((token >> 1) & 1);
        *unpacked++ = (token & 1);
        token = *packed++;
        n -= 32;
      }
    }
  }
  temp = token;
  temp <<= 32;
  temp |= *packed++;
  if (bleft < 32)
    temp <<= (32 - bleft);
  while (n > 3) {
    *unpacked++ = (temp >> (64 - nbits));
    temp <<= nbits;
    bleft -= nbits;
    *unpacked++ = (temp >> (64 - nbits));
    temp <<= nbits;
    bleft -= nbits;
    *unpacked++ = (temp >> (64 - nbits));
    temp <<= nbits;
    bleft -= nbits;
    *unpacked++ = (temp >> (64 - nbits));
    temp <<= nbits;
    bleft -= nbits;
    if (bleft <= 0) {
      token = *packed++;
      if (bleft == 0) {
        temp |= token;
      } else {
        temp = temp >> (-bleft);
        temp |= token;
        temp <<= (-bleft);
      }
      bleft += 32;
    }
    n -= 4;
  }
  while (n-- > 0) {
    *unpacked++ = (temp >> (64 - nbits));
    temp <<= nbits;
    bleft -= nbits;
    if (bleft <= 0) {
      token = *packed++;
      if (bleft == 0) {
        temp |= token;
      } else {
        temp = temp >> (-bleft);
        temp |= token;
        temp <<= (-bleft);
      }
      bleft += 32;
    }
  }
}
```