user: Converte this assembly snippet into its equivalent C code:

```asm
<simdscand1>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %edx,-0x14(%rbp)
  cmpl   $0x20,-0x14(%rbp)
  ja     L136
  mov    -0x14(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D11(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D11(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan1@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan2@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan3@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan4@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan5@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan6@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan7@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan8@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan9@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan10@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan11@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan12@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan13@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan14@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan15@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan16@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan17@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan18@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan19@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan20@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan21@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan22@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan23@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan24@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan25@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan26@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan27@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan28@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan29@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan30@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan31@plt>
  jmp    L312
  mov    -0x10(%rbp),%rdx
  mov    -0x8(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <iunpackscan32@plt>
  jmp    L312
L136:
  nop
L312:
  jmp    L160
  nop
L160:
  leave
  ret
```

assistant: ```c
void simdscand1(__m128i *initOffset, const __m128i *in, uint32_t bit) {
  switch (bit) {
  case 0:
    return;
    break;
  case 1:
    iunpackscan1(initOffset, in);
    break;
  case 2:
    iunpackscan2(initOffset, in);
    break;
  case 3:
    iunpackscan3(initOffset, in);
    break;
  case 4:
    iunpackscan4(initOffset, in);
    break;
  case 5:
    iunpackscan5(initOffset, in);
    break;
  case 6:
    iunpackscan6(initOffset, in);
    break;
  case 7:
    iunpackscan7(initOffset, in);
    break;
  case 8:
    iunpackscan8(initOffset, in);
    break;
  case 9:
    iunpackscan9(initOffset, in);
    break;
  case 10:
    iunpackscan10(initOffset, in);
    break;
  case 11:
    iunpackscan11(initOffset, in);
    break;
  case 12:
    iunpackscan12(initOffset, in);
    break;
  case 13:
    iunpackscan13(initOffset, in);
    break;
  case 14:
    iunpackscan14(initOffset, in);
    break;
  case 15:
    iunpackscan15(initOffset, in);
    break;
  case 16:
    iunpackscan16(initOffset, in);
    break;
  case 17:
    iunpackscan17(initOffset, in);
    break;
  case 18:
    iunpackscan18(initOffset, in);
    break;
  case 19:
    iunpackscan19(initOffset, in);
    break;
  case 20:
    iunpackscan20(initOffset, in);
    break;
  case 21:
    iunpackscan21(initOffset, in);
    break;
  case 22:
    iunpackscan22(initOffset, in);
    break;
  case 23:
    iunpackscan23(initOffset, in);
    break;
  case 24:
    iunpackscan24(initOffset, in);
    break;
  case 25:
    iunpackscan25(initOffset, in);
    break;
  case 26:
    iunpackscan26(initOffset, in);
    break;
  case 27:
    iunpackscan27(initOffset, in);
    break;
  case 28:
    iunpackscan28(initOffset, in);
    break;
  case 29:
    iunpackscan29(initOffset, in);
    break;
  case 30:
    iunpackscan30(initOffset, in);
    break;
  case 31:
    iunpackscan31(initOffset, in);
    break;
  case 32:
    iunpackscan32(initOffset, in);
    break;
  default:
    break;
  }
  return;
}
```