user: 下面的汇编指令对应的C源代码是什么：

```asm
<IntegerPacker_32>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x70,%rsp
  mov    %rdi,-0x58(%rbp)
  mov    %rsi,-0x60(%rbp)
  mov    %edx,-0x64(%rbp)
  mov    %ecx,-0x68(%rbp)
  mov    %r8d,-0x6c(%rbp)
  mov    %r9d,-0x70(%rbp)
  mov    -0x58(%rbp),%rax
  mov    %rax,-0x18(%rbp)
  mov    -0x60(%rbp),%rax
  mov    %rax,-0x10(%rbp)
  cmpl   $0x20,-0x64(%rbp)
  jg     L305
  mov    -0x68(%rbp),%eax
  cmp    -0x64(%rbp),%eax
  jg     L305
  mov    -0x70(%rbp),%eax
  lea    0x1f(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x5,%eax
  cltq
  shl    $0x2,%rax
  add    %rax,-0x18(%rbp)
  mov    -0x70(%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,-0x48(%rbp)
  movl   $0xffffffff,-0x50(%rbp)
  cmpl   $0x1f,-0x68(%rbp)
  jg     L103
  mov    -0x68(%rbp),%eax
  mov    $0xffffffff,%edx
  mov    %eax,%ecx
  shl    %cl,%edx
  mov    %edx,%eax
  not    %eax
  mov    %eax,-0x50(%rbp)
L103:
  cmpl   $0x20,-0x48(%rbp)
  jne    L142
  mov    -0x50(%rbp),%eax
  mov    %eax,-0x40(%rbp)
  cmpl   $0x20,-0x64(%rbp)
  jne    L45
  mov    -0x6c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0x60(%rbp),%rcx
  mov    -0x58(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <memcpy@plt>
  mov    %rax,-0x18(%rbp)
  jmp    L58
L45:
  movq   $0x0,-0x8(%rbp)
  cmpl   $0x18,-0x64(%rbp)
  jne    L96
  jmp    L362
L104:
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x3c(%rbp),%eax
  shl    $0x8,%eax
  mov    %eax,%esi
  mov    -0x38(%rbp),%eax
  shr    $0x10,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     %ecx,%esi
  mov    %esi,%edx
  mov    %edx,(%rax)
  mov    -0x38(%rbp),%eax
  shl    $0x10,%eax
  mov    %eax,%esi
  mov    -0x34(%rbp),%eax
  shr    $0x8,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     %ecx,%esi
  mov    %esi,%edx
  mov    %edx,(%rax)
  mov    -0x34(%rbp),%eax
  shl    $0x18,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     -0x30(%rbp),%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  subl   $0x4,-0x6c(%rbp)
L362:
  cmpl   $0x3,-0x6c(%rbp)
  jg     L104
L96:
  cmpl   $0x10,-0x64(%rbp)
  jne    L275
  jmp    L251
L196:
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x3c(%rbp),%eax
  shl    $0x10,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     -0x38(%rbp),%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x34(%rbp),%eax
  shl    $0x10,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     -0x30(%rbp),%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  subl   $0x4,-0x6c(%rbp)
L251:
  cmpl   $0x3,-0x6c(%rbp)
  jg     L196
L275:
  cmpl   $0xc,-0x64(%rbp)
  jne    L8
  jmp    L376
L297:
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x3c(%rbp),%eax
  shl    $0x14,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  shl    $0x8,%eax
  mov    %edx,%esi
  or     %eax,%esi
  mov    -0x34(%rbp),%eax
  shr    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     %ecx,%esi
  mov    %esi,%edx
  mov    %edx,(%rax)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x34(%rbp),%eax
  shl    $0x1c,%eax
  mov    %eax,%edx
  mov    -0x30(%rbp),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x3c(%rbp),%eax
  shl    $0x4,%eax
  mov    %edx,%esi
  or     %eax,%esi
  mov    -0x38(%rbp),%eax
  shr    $0x8,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     %ecx,%esi
  mov    %esi,%edx
  mov    %edx,(%rax)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x38(%rbp),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x34(%rbp),%eax
  shl    $0xc,%eax
  mov    %edx,%ecx
  or     %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     -0x30(%rbp),%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  subl   $0x8,-0x6c(%rbp)
L376:
  cmpl   $0x7,-0x6c(%rbp)
  jg     L297
L8:
  cmpl   $0x8,-0x64(%rbp)
  jne    L92
  jmp    L446
L2:
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x3c(%rbp),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x34(%rbp),%eax
  shl    $0x8,%eax
  mov    %edx,%ecx
  or     %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     -0x30(%rbp),%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x3c(%rbp),%eax
  shl    $0x18,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x34(%rbp),%eax
  shl    $0x8,%eax
  mov    %edx,%ecx
  or     %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     -0x30(%rbp),%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  subl   $0x8,-0x6c(%rbp)
L446:
  cmpl   $0x7,-0x6c(%rbp)
  jg     L2
L92:
  cmpl   $0x6,-0x64(%rbp)
  jne    L135
  jmp    L1
L326:
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x3c(%rbp),%eax
  shl    $0x1a,%eax
  mov    %eax,%edx
  mov    -0x38(%rbp),%eax
  shl    $0x14,%eax
  or     %eax,%edx
  mov    -0x34(%rbp),%eax
  shl    $0xe,%eax
  or     %eax,%edx
  mov    -0x30(%rbp),%eax
  shl    $0x8,%eax
  or     %eax,%edx
  mov    -0x2c(%rbp),%eax
  shl    $0x2,%eax
  mov    %edx,%esi
  or     %eax,%esi
  mov    -0x28(%rbp),%eax
  shr    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     %ecx,%esi
  mov    %esi,%edx
  mov    %edx,(%rax)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x3c(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x38(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x34(%rbp)
  mov    -0x28(%rbp),%eax
  shl    $0x1c,%eax
  mov    %eax,%edx
  mov    -0x24(%rbp),%eax
  shl    $0x16,%eax
  or     %eax,%edx
  mov    -0x20(%rbp),%eax
  shl    $0x10,%eax
  or     %eax,%edx
  mov    -0x3c(%rbp),%eax
  shl    $0xa,%eax
  or     %eax,%edx
  mov    -0x38(%rbp),%eax
  shl    $0x4,%eax
  mov    %edx,%esi
  or     %eax,%esi
  mov    -0x34(%rbp),%eax
  shr    $0x2,%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     %ecx,%esi
  mov    %esi,%edx
  mov    %edx,(%rax)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x30(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x2c(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x28(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x24(%rbp)
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x34(%rbp),%eax
  shl    $0x1e,%eax
  mov    %eax,%edx
  mov    -0x30(%rbp),%eax
  shl    $0x18,%eax
  or     %eax,%edx
  mov    -0x2c(%rbp),%eax
  shl    $0x12,%eax
  or     %eax,%edx
  mov    -0x28(%rbp),%eax
  shl    $0xc,%eax
  or     %eax,%edx
  mov    -0x24(%rbp),%eax
  shl    $0x6,%eax
  mov    %edx,%ecx
  or     %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     -0x20(%rbp),%ecx
  mov    %ecx,%edx
  mov    %edx,(%rax)
  subl   $0x10,-0x6c(%rbp)
L1:
  cmpl   $0xf,-0x6c(%rbp)
  jg     L326
L135:
  cmpl   $0x4,-0x64(%rbp)
  jne    L148
  jmp    L219
L143:
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  shl    $0x4,%eax
  mov    %eax,%esi
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     %ecx,%esi
  mov    %esi,%edx
  mov    %edx,(%rax)
  subl   $0x8,-0x6c(%rbp)
L219:
  cmpl   $0x7,-0x6c(%rbp)
  jg     L143
L148:
  cmpl   $0x2,-0x64(%rbp)
  jne    L312
  jmp    L361
L46:
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    0x0(,%rax,4),%esi
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x40(%rbp),%eax
  mov    %eax,%ecx
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  or     %ecx,%esi
  mov    %esi,%edx
  mov    %edx,(%rax)
  subl   $0x10,-0x6c(%rbp)
L361:
  cmpl   $0xf,-0x6c(%rbp)
  jg     L46
L312:
  cmpl   $0x1,-0x64(%rbp)
  jne    L142
  jmp    L439
L270:
  movl   $0x0,-0x4c(%rbp)
  movl   $0x8,-0x44(%rbp)
  jmp    L144
L282:
  mov    -0x4c(%rbp),%eax
  lea    (%rax,%rax,1),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    $0x1,%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    (%rax,%rax,1),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    $0x1,%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    (%rax,%rax,1),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    $0x1,%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x4c(%rbp),%eax
  lea    (%rax,%rax,1),%ecx
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    $0x1,%eax
  or     %ecx,%eax
  mov    %eax,-0x4c(%rbp)
L144:
  mov    -0x44(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    %edx,-0x44(%rbp)
  test   %eax,%eax
  jne    L282
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    -0x4c(%rbp),%edx
  mov    %edx,(%rax)
  subl   $0x20,-0x6c(%rbp)
L439:
  cmpl   $0x1f,-0x6c(%rbp)
  jg     L270
L142:
  cmpl   $0x1f,-0x48(%rbp)
  jg     L407
  mov    -0x18(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x48(%rbp),%eax
  mov    %eax,%ecx
  shr    %cl,%edx
  mov    %edx,%eax
  mov    %eax,%eax
  mov    %rax,-0x8(%rbp)
L407:
  mov    -0x50(%rbp),%eax
  mov    %eax,-0x1c(%rbp)
  jmp    L161
L42:
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x1c(%rbp),%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x64(%rbp),%eax
  sub    %eax,-0x48(%rbp)
  mov    -0x64(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  mov    %eax,%ecx
  shl    %cl,%rdx
  mov    -0x4c(%rbp),%eax
  or     %rdx,%rax
  mov    %rax,-0x8(%rbp)
  cmpl   $0x0,-0x48(%rbp)
  jg     L304
  cmpl   $0x0,-0x48(%rbp)
  jns    L347
  mov    -0x48(%rbp),%eax
  neg    %eax
  mov    %eax,%ecx
  shrq   %cl,-0x8(%rbp)
L347:
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    -0x8(%rbp),%rdx
  mov    %edx,(%rax)
  addl   $0x20,-0x48(%rbp)
  mov    -0x4c(%rbp),%eax
  mov    %rax,-0x8(%rbp)
L304:
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x1c(%rbp),%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x64(%rbp),%eax
  sub    %eax,-0x48(%rbp)
  mov    -0x64(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  mov    %eax,%ecx
  shl    %cl,%rdx
  mov    -0x4c(%rbp),%eax
  or     %rdx,%rax
  mov    %rax,-0x8(%rbp)
  cmpl   $0x0,-0x48(%rbp)
  jg     L436
  cmpl   $0x0,-0x48(%rbp)
  jns    L189
  mov    -0x48(%rbp),%eax
  neg    %eax
  mov    %eax,%ecx
  shrq   %cl,-0x8(%rbp)
L189:
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    -0x8(%rbp),%rdx
  mov    %edx,(%rax)
  addl   $0x20,-0x48(%rbp)
  mov    -0x4c(%rbp),%eax
  mov    %rax,-0x8(%rbp)
L436:
  subl   $0x2,-0x6c(%rbp)
L161:
  cmpl   $0x1,-0x6c(%rbp)
  jg     L42
  jmp    L236
L91:
  mov    -0x10(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x10(%rbp)
  mov    (%rax),%eax
  and    -0x1c(%rbp),%eax
  mov    %eax,-0x4c(%rbp)
  mov    -0x64(%rbp),%eax
  sub    %eax,-0x48(%rbp)
  mov    -0x64(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  mov    %eax,%ecx
  shl    %cl,%rdx
  mov    -0x4c(%rbp),%eax
  or     %rdx,%rax
  mov    %rax,-0x8(%rbp)
  cmpl   $0x0,-0x48(%rbp)
  jg     L236
  cmpl   $0x0,-0x48(%rbp)
  jns    L52
  mov    -0x48(%rbp),%eax
  neg    %eax
  mov    %eax,%ecx
  shrq   %cl,-0x8(%rbp)
L52:
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    %rdx,-0x18(%rbp)
  mov    -0x8(%rbp),%rdx
  mov    %edx,(%rax)
  addl   $0x20,-0x48(%rbp)
  mov    -0x4c(%rbp),%eax
  mov    %rax,-0x8(%rbp)
L236:
  mov    -0x6c(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    %edx,-0x6c(%rbp)
  test   %eax,%eax
  jg     L91
  cmpl   $0x1f,-0x48(%rbp)
  jg     L58
  mov    -0x48(%rbp),%eax
  mov    -0x8(%rbp),%rdx
  mov    %eax,%ecx
  shl    %cl,%rdx
  mov    %rdx,%rax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  jmp    L58
L305:
  nop
L58:
  leave
  ret
```

assistant: ```c
void IntegerPacker_32(void *stream, void *src, int nbits, int nbitt, int n, int offset) {
  unsigned int *packed = (unsigned int *)stream;
  unsigned int *unpacked = (unsigned int *)src;
  unsigned long long temp;
  unsigned int maskk, token, token1, token2, token3, token4, token5, token6, token7, token8;
  int bleft, i;
  if (nbits > 32 || nbitt > nbits)
    return;
  packed += offset / 32;
  bleft = 32 - (offset % 32);
  maskk = 0xFFFFFFFF;
  if (nbitt < 32)
    maskk = ~(0xFFFFFFFF << nbitt);
  if (bleft == 32) {
    const unsigned int mask = maskk;
    if (nbits == 32) {
      packed = (unsigned int *)memcpy(stream, src, n * sizeof(unsigned int));
      return;
    }
    temp = 0;
    if (nbits == 24) {
      while (n > 3) {
        token1 = (*unpacked++) & mask;
        token2 = (*unpacked++) & mask;
        token3 = (*unpacked++) & mask;
        token4 = (*unpacked++) & mask;
        *packed++ = (token1 << 8) | (token2 >> 16);
        *packed++ = (token2 << 16) | (token3 >> 8);
        *packed++ = (token3 << 24) | token4;
        n -= 4;
      }
    }
    if (nbits == 16) {
      while (n > 3) {
        token1 = (*unpacked++) & mask;
        token2 = (*unpacked++) & mask;
        token3 = (*unpacked++) & mask;
        token4 = (*unpacked++) & mask;
        *packed++ = (token1 << 16) | token2;
        *packed++ = (token3 << 16) | token4;
        n -= 4;
      }
    }
    if (nbits == 12) {
      while (n > 7) {
        token1 = (*unpacked++) & mask;
        token2 = (*unpacked++) & mask;
        token3 = (*unpacked++) & mask;
        token4 = (*unpacked++) & mask;
        *packed++ = (token1 << 20) | (token2 << 8) | (token3 >> 4);
        token1 = (*unpacked++) & mask;
        token2 = (*unpacked++) & mask;
        *packed++ = (token3 << 28) | (token4 << 16) | (token1 << 4) | (token2 >> 8);
        token3 = (*unpacked++) & mask;
        token4 = (*unpacked++) & mask;
        *packed++ = (token2 << 24) | (token3 << 12) | token4;
        n -= 8;
      }
    }
    if (nbits == 8) {
      while (n > 7) {
        token1 = (*unpacked++) & mask;
        token2 = (*unpacked++) & mask;
        token3 = (*unpacked++) & mask;
        token4 = (*unpacked++) & mask;
        *packed++ = (token1 << 24) | (token2 << 16) | (token3 << 8) | token4;
        token1 = (*unpacked++) & mask;
        token2 = (*unpacked++) & mask;
        token3 = (*unpacked++) & mask;
        token4 = (*unpacked++) & mask;
        *packed++ = (token1 << 24) | (token2 << 16) | (token3 << 8) | token4;
        n -= 8;
      }
    }
    if (nbits == 6) {
      while (n > 15) {
        token1 = (*unpacked++) & mask;
        token2 = (*unpacked++) & mask;
        token3 = (*unpacked++) & mask;
        token4 = (*unpacked++) & mask;
        token5 = (*unpacked++) & mask;
        token6 = (*unpacked++) & mask;
        token7 = (*unpacked++) & mask;
        token8 = (*unpacked++) & mask;
        *packed++ = (token1 << 26) | (token2 << 20) | (token3 << 14) | (token4 << 8) | (token5 << 2) | (token6 >> 4);
        token1 = (*unpacked++) & mask;
        token2 = (*unpacked++) & mask;
        token3 = (*unpacked++) & mask;
        *packed++ = (token6 << 28) | (token7 << 22) | (token8 << 16) | (token1 << 10) | (token2 << 4) | (token3 >> 2);
        token4 = (*unpacked++) & mask;
        token5 = (*unpacked++) & mask;
        token6 = (*unpacked++) & mask;
        token7 = (*unpacked++) & mask;
        token8 = (*unpacked++) & mask;
        *packed++ = (token3 << 30) | (token4 << 24) | (token5 << 18) | (token6 << 12) | (token7 << 6) | token8;
        n -= 16;
      }
    }
    if (nbits == 4) {
      while (n > 7) {
        token = (*unpacked++) & mask;
        token = (token << 4) | ((*unpacked++) & mask);
        token = (token << 4) | ((*unpacked++) & mask);
        token = (token << 4) | ((*unpacked++) & mask);
        token = (token << 4) | ((*unpacked++) & mask);
        token = (token << 4) | ((*unpacked++) & mask);
        token = (token << 4) | ((*unpacked++) & mask);
        *packed++ = (token << 4) | ((*unpacked++) & mask);
        n -= 8;
      }
    }
    if (nbits == 2) {
      while (n > 15) {
        token = (*unpacked++) & mask;
        token = (token << 2) | ((*unpacked++) & mask);
        token = (token << 2) | ((*unpacked++) & mask);
        token = (token << 2) | ((*unpacked++) & mask);
        token = (token << 2) | ((*unpacked++) & mask);
        token = (token << 2) | ((*unpacked++) & mask);
        token = (token << 2) | ((*unpacked++) & mask);
        token = (token << 2) | ((*unpacked++) & mask);
        token = (token << 2) | ((*unpacked++) & mask);
        token = (token << 2) | ((*unpacked++) & mask);
        token = (token << 2) | ((*unpacked++) & mask);
        token = (token << 2) | ((*unpacked++) & mask);
        token = (token << 2) | ((*unpacked++) & mask);
        token = (token << 2) | ((*unpacked++) & mask);
        token = (token << 2) | ((*unpacked++) & mask);
        *packed++ = (token << 2) | ((*unpacked++) & mask);
        n -= 16;
      }
    }
    if (nbits == 1) {
      while (n > 31) {
        token = 0;
        i = 8;
        while (i-- != 0) {
          token = (token << 1) | ((*unpacked++) & 1);
          token = (token << 1) | ((*unpacked++) & 1);
          token = (token << 1) | ((*unpacked++) & 1);
          token = (token << 1) | ((*unpacked++) & 1);
        }
        *packed++ = token;
        n -= 32;
      }
    }
  }
  if (bleft < 32)
    temp = *packed >> bleft;
  {
    const unsigned int mask = maskk;
    while (n > 1) {
      token = (*unpacked++) & mask;
      bleft -= nbits;
      temp = (temp << nbits) | token;
      if (bleft <= 0) {
        if (bleft < 0)
          temp >>= (-bleft);
        *packed++ = temp;
        bleft += 32;
        temp = token;
      }
      token = (*unpacked++) & mask;
      bleft -= nbits;
      temp = (temp << nbits) | token;
      if (bleft <= 0) {
        if (bleft < 0)
          temp >>= (-bleft);
        *packed++ = temp;
        bleft += 32;
        temp = token;
      }
      n -= 2;
    }
    while (n-- > 0) {
      token = (*unpacked++) & mask;
      bleft -= nbits;
      temp = (temp << nbits) | token;
      if (bleft <= 0) {
        if (bleft < 0)
          temp >>= (-bleft);
        *packed++ = temp;
        bleft += 32;
        temp = token;
      }
    }
  }
  if (bleft < 32)
    *packed = (temp << bleft);
}
```