user: Please show me the C implementation that matches the assembly code listed below:

```asm
<simdsearchd1>:
  endbr64
  mov    %edx,%eax
  cmp    $0x20,%edx
  ja     L130
  sub    $0x8,%rsp
  mov    %ecx,%edx
  mov    %r8,%rcx
  mov    %eax,%eax
  lea    D5(%rip),%r8
  movslq (%r8,%rax,4),%rax
  add    %r8,%rax
  notrack jmp *%rax
  call   <iunpacksearch0@plt>
L67:
  add    $0x8,%rsp
  ret
  call   <iunpacksearch1@plt>
  jmp    L67
  call   <iunpacksearch2@plt>
  jmp    L67
  call   <iunpacksearch3@plt>
  jmp    L67
  call   <iunpacksearch4@plt>
  jmp    L67
  call   <iunpacksearch5@plt>
  jmp    L67
  call   <iunpacksearch6@plt>
  jmp    L67
  call   <iunpacksearch7@plt>
  jmp    L67
  call   <iunpacksearch8@plt>
  jmp    L67
  call   <iunpacksearch9@plt>
  jmp    L67
  call   <iunpacksearch10@plt>
  jmp    L67
  call   <iunpacksearch11@plt>
  jmp    L67
  call   <iunpacksearch12@plt>
  jmp    L67
  call   <iunpacksearch13@plt>
  jmp    L67
  call   <iunpacksearch14@plt>
  jmp    L67
  call   <iunpacksearch15@plt>
  jmp    L67
  call   <iunpacksearch16@plt>
  jmp    L67
  call   <iunpacksearch17@plt>
  jmp    L67
  call   <iunpacksearch18@plt>
  jmp    L67
  call   <iunpacksearch19@plt>
  jmp    L67
  call   <iunpacksearch20@plt>
  jmp    L67
  call   <iunpacksearch21@plt>
  jmp    L67
  call   <iunpacksearch22@plt>
  jmp    L67
  call   <iunpacksearch23@plt>
  jmp    L67
  call   <iunpacksearch24@plt>
  jmp    L67
  call   <iunpacksearch25@plt>
  jmp    L67
  call   <iunpacksearch26@plt>
  jmp    L67
  call   <iunpacksearch27@plt>
  jmp    L67
  call   <iunpacksearch28@plt>
  jmp    L67
  call   <iunpacksearch29@plt>
  jmp    L67
  call   <iunpacksearch30@plt>
  jmp    L67
  call   <iunpacksearch31@plt>
  jmp    L67
  call   <iunpacksearch32@plt>
  jmp    L67
L130:
  mov    $0xffffffff,%eax
  ret
```

assistant: ```c
int simdsearchd1(__m128i *initOffset, const __m128i *in, uint32_t bit, uint32_t key, uint32_t *presult) {
  switch (bit) {
  case 0:
    return iunpacksearch0(initOffset, in, key, presult);
  case 1:
    return iunpacksearch1(initOffset, in, key, presult);
  case 2:
    return iunpacksearch2(initOffset, in, key, presult);
  case 3:
    return iunpacksearch3(initOffset, in, key, presult);
  case 4:
    return iunpacksearch4(initOffset, in, key, presult);
  case 5:
    return iunpacksearch5(initOffset, in, key, presult);
  case 6:
    return iunpacksearch6(initOffset, in, key, presult);
  case 7:
    return iunpacksearch7(initOffset, in, key, presult);
  case 8:
    return iunpacksearch8(initOffset, in, key, presult);
  case 9:
    return iunpacksearch9(initOffset, in, key, presult);
  case 10:
    return iunpacksearch10(initOffset, in, key, presult);
  case 11:
    return iunpacksearch11(initOffset, in, key, presult);
  case 12:
    return iunpacksearch12(initOffset, in, key, presult);
  case 13:
    return iunpacksearch13(initOffset, in, key, presult);
  case 14:
    return iunpacksearch14(initOffset, in, key, presult);
  case 15:
    return iunpacksearch15(initOffset, in, key, presult);
  case 16:
    return iunpacksearch16(initOffset, in, key, presult);
  case 17:
    return iunpacksearch17(initOffset, in, key, presult);
  case 18:
    return iunpacksearch18(initOffset, in, key, presult);
  case 19:
    return iunpacksearch19(initOffset, in, key, presult);
  case 20:
    return iunpacksearch20(initOffset, in, key, presult);
  case 21:
    return iunpacksearch21(initOffset, in, key, presult);
  case 22:
    return iunpacksearch22(initOffset, in, key, presult);
  case 23:
    return iunpacksearch23(initOffset, in, key, presult);
  case 24:
    return iunpacksearch24(initOffset, in, key, presult);
  case 25:
    return iunpacksearch25(initOffset, in, key, presult);
  case 26:
    return iunpacksearch26(initOffset, in, key, presult);
  case 27:
    return iunpacksearch27(initOffset, in, key, presult);
  case 28:
    return iunpacksearch28(initOffset, in, key, presult);
  case 29:
    return iunpacksearch29(initOffset, in, key, presult);
  case 30:
    return iunpacksearch30(initOffset, in, key, presult);
  case 31:
    return iunpacksearch31(initOffset, in, key, presult);
  case 32:
    return iunpacksearch32(initOffset, in, key, presult);
  default:
    break;
  }
  return (-1);
}
```