user: 请将以下的汇编代码转换成C语言代码:

```asm
<unpack32_avx2>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xb0,%rsp
  mov    %rdi,-0x98(%rbp)
  mov    %rsi,-0xa0(%rbp)
  mov    %edx,-0xa4(%rbp)
  mov    %ecx,-0xa8(%rbp)
  mov    -0xa4(%rbp),%eax
  lea    0x1f(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x5,%eax
  shl    $0x5,%eax
  mov    %eax,-0xa4(%rbp)
  mov    -0xa4(%rbp),%eax
  lea    0x1f(%rax),%edx
  test   %eax,%eax
  cmovs  %edx,%eax
  sar    $0x5,%eax
  mov    %eax,-0x4(%rbp)
  cmpl   $0x20,-0xa8(%rbp)
  ja     L910
  mov    -0xa8(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D13(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D13(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  movl   $0x0,-0x88(%rbp)
  jmp    L635
L83:
  mov    -0x88(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack0_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x88(%rbp)
L635:
  mov    -0x88(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L83
  jmp    L910
  movl   $0x0,-0x84(%rbp)
  jmp    L438
L971:
  mov    -0x84(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack1_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x84(%rbp)
L438:
  mov    -0x84(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L971
  jmp    L910
  movl   $0x0,-0x80(%rbp)
  jmp    L120
L231:
  mov    -0x80(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack2_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x80(%rbp)
L120:
  mov    -0x80(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L231
  jmp    L910
  movl   $0x0,-0x7c(%rbp)
  jmp    L187
L37:
  mov    -0x7c(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack3_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x7c(%rbp)
L187:
  mov    -0x7c(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L37
  jmp    L910
  movl   $0x0,-0x78(%rbp)
  jmp    L88
L469:
  mov    -0x78(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack4_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x78(%rbp)
L88:
  mov    -0x78(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L469
  jmp    L910
  movl   $0x0,-0x74(%rbp)
  jmp    L326
L620:
  mov    -0x74(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack5_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x74(%rbp)
L326:
  mov    -0x74(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L620
  jmp    L910
  movl   $0x0,-0x70(%rbp)
  jmp    L566
L692:
  mov    -0x70(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack6_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x70(%rbp)
L566:
  mov    -0x70(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L692
  jmp    L910
  movl   $0x0,-0x6c(%rbp)
  jmp    L317
L821:
  mov    -0x6c(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack7_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x6c(%rbp)
L317:
  mov    -0x6c(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L821
  jmp    L910
  movl   $0x0,-0x68(%rbp)
  jmp    L397
L518:
  mov    -0x68(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack8_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x68(%rbp)
L397:
  mov    -0x68(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L518
  jmp    L910
  movl   $0x0,-0x64(%rbp)
  jmp    L311
L871:
  mov    -0x64(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack9_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x64(%rbp)
L311:
  mov    -0x64(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L871
  jmp    L910
  movl   $0x0,-0x60(%rbp)
  jmp    L802
L121:
  mov    -0x60(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack10_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x60(%rbp)
L802:
  mov    -0x60(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L121
  jmp    L910
  movl   $0x0,-0x5c(%rbp)
  jmp    L770
L256:
  mov    -0x5c(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack11_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x5c(%rbp)
L770:
  mov    -0x5c(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L256
  jmp    L910
  movl   $0x0,-0x58(%rbp)
  jmp    L82
L727:
  mov    -0x58(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack12_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x58(%rbp)
L82:
  mov    -0x58(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L727
  jmp    L910
  movl   $0x0,-0x54(%rbp)
  jmp    L916
L947:
  mov    -0x54(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack13_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x54(%rbp)
L916:
  mov    -0x54(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L947
  jmp    L910
  movl   $0x0,-0x50(%rbp)
  jmp    L307
L399:
  mov    -0x50(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack14_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x50(%rbp)
L307:
  mov    -0x50(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L399
  jmp    L910
  movl   $0x0,-0x4c(%rbp)
  jmp    L641
L524:
  mov    -0x4c(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack15_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x4c(%rbp)
L641:
  mov    -0x4c(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L524
  jmp    L910
  movl   $0x0,-0x48(%rbp)
  jmp    L903
L257:
  mov    -0x48(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack16_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x48(%rbp)
L903:
  mov    -0x48(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L257
  jmp    L910
  movl   $0x0,-0x44(%rbp)
  jmp    L899
L340:
  mov    -0x44(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack17_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x44(%rbp)
L899:
  mov    -0x44(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L340
  jmp    L910
  movl   $0x0,-0x40(%rbp)
  jmp    L553
L702:
  mov    -0x40(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack18_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x40(%rbp)
L553:
  mov    -0x40(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L702
  jmp    L910
  movl   $0x0,-0x3c(%rbp)
  jmp    L155
L456:
  mov    -0x3c(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack19_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x3c(%rbp)
L155:
  mov    -0x3c(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L456
  jmp    L910
  movl   $0x0,-0x38(%rbp)
  jmp    L468
L842:
  mov    -0x38(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack20_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x38(%rbp)
L468:
  mov    -0x38(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L842
  jmp    L910
  movl   $0x0,-0x34(%rbp)
  jmp    L416
L732:
  mov    -0x34(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack21_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x34(%rbp)
L416:
  mov    -0x34(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L732
  jmp    L910
  movl   $0x0,-0x30(%rbp)
  jmp    L29
L897:
  mov    -0x30(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack22_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x30(%rbp)
L29:
  mov    -0x30(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L897
  jmp    L910
  movl   $0x0,-0x2c(%rbp)
  jmp    L445
L140:
  mov    -0x2c(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack23_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x2c(%rbp)
L445:
  mov    -0x2c(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L140
  jmp    L910
  movl   $0x0,-0x28(%rbp)
  jmp    L122
L968:
  mov    -0x28(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack24_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x28(%rbp)
L122:
  mov    -0x28(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L968
  jmp    L910
  movl   $0x0,-0x24(%rbp)
  jmp    L39
L162:
  mov    -0x24(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack25_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x24(%rbp)
L39:
  mov    -0x24(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L162
  jmp    L910
  movl   $0x0,-0x20(%rbp)
  jmp    L148
L362:
  mov    -0x20(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack26_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x20(%rbp)
L148:
  mov    -0x20(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L362
  jmp    L910
  movl   $0x0,-0x1c(%rbp)
  jmp    L114
L214:
  mov    -0x1c(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack27_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x1c(%rbp)
L114:
  mov    -0x1c(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L214
  jmp    L910
  movl   $0x0,-0x18(%rbp)
  jmp    L655
L164:
  mov    -0x18(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack28_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x18(%rbp)
L655:
  mov    -0x18(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L164
  jmp    L910
  movl   $0x0,-0x14(%rbp)
  jmp    L43
L763:
  mov    -0x14(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack29_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x14(%rbp)
L43:
  mov    -0x14(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L763
  jmp    L910
  movl   $0x0,-0x10(%rbp)
  jmp    L919
L552:
  mov    -0x10(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack30_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x10(%rbp)
L919:
  mov    -0x10(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L552
  jmp    L910
  movl   $0x0,-0xc(%rbp)
  jmp    L581
L532:
  mov    -0xc(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack31_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0xc(%rbp)
L581:
  mov    -0xc(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L532
  jmp    L910
  movl   $0x0,-0x8(%rbp)
  jmp    L168
L759:
  mov    -0x8(%rbp),%eax
  shl    $0x5,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa0(%rbp),%rax
  add    %rax,%rdx
  mov    -0x98(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <unpack32_32_avx2@plt>
  mov    %rax,-0x98(%rbp)
  addl   $0x1,-0x8(%rbp)
L168:
  mov    -0x8(%rbp),%eax
  cmp    -0x4(%rbp),%eax
  jl     L759
  nop
L910:
  mov    -0xa4(%rbp),%eax
  leave
  ret
```

assistant: ```c
int unpack32_avx2(const uint32_t *in, uint32_t *out, int batch_size, int num_bits) {
  batch_size = batch_size / 32 * 32;
  int num_loops = batch_size / 32;
  switch (num_bits) {
  case 0:
    for (int i = 0; i < num_loops; ++i)
      in = unpack0_32_avx2(in, out + i * 32);
    break;
  case 1:
    for (int i = 0; i < num_loops; ++i)
      in = unpack1_32_avx2(in, out + i * 32);
    break;
  case 2:
    for (int i = 0; i < num_loops; ++i)
      in = unpack2_32_avx2(in, out + i * 32);
    break;
  case 3:
    for (int i = 0; i < num_loops; ++i)
      in = unpack3_32_avx2(in, out + i * 32);
    break;
  case 4:
    for (int i = 0; i < num_loops; ++i)
      in = unpack4_32_avx2(in, out + i * 32);
    break;
  case 5:
    for (int i = 0; i < num_loops; ++i)
      in = unpack5_32_avx2(in, out + i * 32);
    break;
  case 6:
    for (int i = 0; i < num_loops; ++i)
      in = unpack6_32_avx2(in, out + i * 32);
    break;
  case 7:
    for (int i = 0; i < num_loops; ++i)
      in = unpack7_32_avx2(in, out + i * 32);
    break;
  case 8:
    for (int i = 0; i < num_loops; ++i)
      in = unpack8_32_avx2(in, out + i * 32);
    break;
  case 9:
    for (int i = 0; i < num_loops; ++i)
      in = unpack9_32_avx2(in, out + i * 32);
    break;
  case 10:
    for (int i = 0; i < num_loops; ++i)
      in = unpack10_32_avx2(in, out + i * 32);
    break;
  case 11:
    for (int i = 0; i < num_loops; ++i)
      in = unpack11_32_avx2(in, out + i * 32);
    break;
  case 12:
    for (int i = 0; i < num_loops; ++i)
      in = unpack12_32_avx2(in, out + i * 32);
    break;
  case 13:
    for (int i = 0; i < num_loops; ++i)
      in = unpack13_32_avx2(in, out + i * 32);
    break;
  case 14:
    for (int i = 0; i < num_loops; ++i)
      in = unpack14_32_avx2(in, out + i * 32);
    break;
  case 15:
    for (int i = 0; i < num_loops; ++i)
      in = unpack15_32_avx2(in, out + i * 32);
    break;
  case 16:
    for (int i = 0; i < num_loops; ++i)
      in = unpack16_32_avx2(in, out + i * 32);
    break;
  case 17:
    for (int i = 0; i < num_loops; ++i)
      in = unpack17_32_avx2(in, out + i * 32);
    break;
  case 18:
    for (int i = 0; i < num_loops; ++i)
      in = unpack18_32_avx2(in, out + i * 32);
    break;
  case 19:
    for (int i = 0; i < num_loops; ++i)
      in = unpack19_32_avx2(in, out + i * 32);
    break;
  case 20:
    for (int i = 0; i < num_loops; ++i)
      in = unpack20_32_avx2(in, out + i * 32);
    break;
  case 21:
    for (int i = 0; i < num_loops; ++i)
      in = unpack21_32_avx2(in, out + i * 32);
    break;
  case 22:
    for (int i = 0; i < num_loops; ++i)
      in = unpack22_32_avx2(in, out + i * 32);
    break;
  case 23:
    for (int i = 0; i < num_loops; ++i)
      in = unpack23_32_avx2(in, out + i * 32);
    break;
  case 24:
    for (int i = 0; i < num_loops; ++i)
      in = unpack24_32_avx2(in, out + i * 32);
    break;
  case 25:
    for (int i = 0; i < num_loops; ++i)
      in = unpack25_32_avx2(in, out + i * 32);
    break;
  case 26:
    for (int i = 0; i < num_loops; ++i)
      in = unpack26_32_avx2(in, out + i * 32);
    break;
  case 27:
    for (int i = 0; i < num_loops; ++i)
      in = unpack27_32_avx2(in, out + i * 32);
    break;
  case 28:
    for (int i = 0; i < num_loops; ++i)
      in = unpack28_32_avx2(in, out + i * 32);
    break;
  case 29:
    for (int i = 0; i < num_loops; ++i)
      in = unpack29_32_avx2(in, out + i * 32);
    break;
  case 30:
    for (int i = 0; i < num_loops; ++i)
      in = unpack30_32_avx2(in, out + i * 32);
    break;
  case 31:
    for (int i = 0; i < num_loops; ++i)
      in = unpack31_32_avx2(in, out + i * 32);
    break;
  case 32:
    for (int i = 0; i < num_loops; ++i)
      in = unpack32_32_avx2(in, out + i * 32);
    break;
  }
  return batch_size;
}
```