#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int uint32_t;
typedef int /*<<< orphan*/ __m128i;

/* Variables and functions */
int iunpacksearch0(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                   int *);
int iunpacksearch1(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                   int *);
int iunpacksearch10(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch11(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch12(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch13(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch14(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch15(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch16(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch17(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch18(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch19(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch2(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                   int *);
int iunpacksearch20(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch21(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch22(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch23(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch24(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch25(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch26(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch27(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch28(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch29(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch3(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                   int *);
int iunpacksearch30(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch31(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch32(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                    int *);
int iunpacksearch4(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                   int *);
int iunpacksearch5(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                   int *);
int iunpacksearch6(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                   int *);
int iunpacksearch7(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                   int *);
int iunpacksearch8(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                   int *);
int iunpacksearch9(int /*<<< orphan*/ *, int /*<<< orphan*/ const *, int,
                   int *);
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);
}


x86 assembly (clang, -O0):
<simdsearchd1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
mov    %ecx,-0x20(%rbp)
mov    %r8,-0x28(%rbp)
mov    -0x1c(%rbp),%eax
mov    %rax,-0x30(%rbp)
sub    $0x20,%rax
ja     16eb <simdsearchd1+0x3db>
mov    -0x30(%rbp),%rax
lea    0xcba(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   11f0 <iunpacksearch0@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1110 <iunpacksearch1@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1220 <iunpacksearch2@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1120 <iunpacksearch3@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   11d0 <iunpacksearch4@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   10f0 <iunpacksearch5@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   11c0 <iunpacksearch6@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   10c0 <iunpacksearch7@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   11a0 <iunpacksearch8@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   10b0 <iunpacksearch9@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1100 <iunpacksearch10@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1210 <iunpacksearch11@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   10a0 <iunpacksearch12@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   11e0 <iunpacksearch13@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   10e0 <iunpacksearch14@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   11b0 <iunpacksearch15@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   10d0 <iunpacksearch16@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1200 <iunpacksearch17@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1160 <iunpacksearch18@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1040 <iunpacksearch19@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1140 <iunpacksearch20@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1030 <iunpacksearch21@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1130 <iunpacksearch22@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1230 <iunpacksearch23@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1150 <iunpacksearch24@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1080 <iunpacksearch25@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1190 <iunpacksearch26@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1090 <iunpacksearch27@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1180 <iunpacksearch28@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1070 <iunpacksearch29@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1050 <iunpacksearch30@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1170 <iunpacksearch31@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
mov    -0x20(%rbp),%edx
mov    -0x28(%rbp),%rcx
call   1060 <iunpacksearch32@plt>
mov    %eax,-0x4(%rbp)
jmp    16f7 <simdsearchd1+0x3e7>
jmp    16f0 <simdsearchd1+0x3e0>
movl   $0xffffffff,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<simdsearchd1>:
cmp    $0x20,%edx
ja     1331 <simdsearchd1+0x21>
mov    %edx,%eax
lea    0xce2(%rip),%rdx
movslq (%rdx,%rax,4),%rax
add    %rdx,%rax
jmp    *%rax
mov    %ecx,%edx
mov    %r8,%rcx
jmp    11f0 <iunpacksearch0@plt>
mov    $0xffffffff,%eax
ret
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1110 <iunpacksearch1@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1220 <iunpacksearch2@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1120 <iunpacksearch3@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    11d0 <iunpacksearch4@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    10f0 <iunpacksearch5@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    11c0 <iunpacksearch6@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    10c0 <iunpacksearch7@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    11a0 <iunpacksearch8@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    10b0 <iunpacksearch9@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1100 <iunpacksearch10@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1210 <iunpacksearch11@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    10a0 <iunpacksearch12@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    11e0 <iunpacksearch13@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    10e0 <iunpacksearch14@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    11b0 <iunpacksearch15@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    10d0 <iunpacksearch16@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1200 <iunpacksearch17@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1160 <iunpacksearch18@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1040 <iunpacksearch19@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1140 <iunpacksearch20@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1030 <iunpacksearch21@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1130 <iunpacksearch22@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1230 <iunpacksearch23@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1150 <iunpacksearch24@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1080 <iunpacksearch25@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1190 <iunpacksearch26@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1090 <iunpacksearch27@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1180 <iunpacksearch28@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1070 <iunpacksearch29@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1050 <iunpacksearch30@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1170 <iunpacksearch31@plt>
mov    %ecx,%edx
mov    %r8,%rcx
jmp    1060 <iunpacksearch32@plt>

LLVM IR (-O0):
define i32 @simdsearchd1(i32* %0, i32* %1, i32 %2, i32 %3, i32* %4) {
%6 = alloca i32
%7 = alloca i32*
%8 = alloca i32*
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32*
store i32* %0, i32** %7
store i32* %1, i32** %8
store i32 %2, i32* %9
store i32 %3, i32* %10
store i32* %4, i32** %11
%12 = load i32, i32* %9
switch i32 %12, label %211 [
i32 0, label %13
i32 1, label %19
i32 2, label %25
i32 3, label %31
i32 4, label %37
i32 5, label %43
i32 6, label %49
i32 7, label %55
i32 8, label %61
i32 9, label %67
i32 10, label %73
i32 11, label %79
i32 12, label %85
i32 13, label %91
i32 14, label %97
i32 15, label %103
i32 16, label %109
i32 17, label %115
i32 18, label %121
i32 19, label %127
i32 20, label %133
i32 21, label %139
i32 22, label %145
i32 23, label %151
i32 24, label %157
i32 25, label %163
i32 26, label %169
i32 27, label %175
i32 28, label %181
i32 29, label %187
i32 30, label %193
i32 31, label %199
i32 32, label %205
]
13: ; preds = %5
%14 = load i32*, i32** %7
%15 = load i32*, i32** %8
%16 = load i32, i32* %10
%17 = load i32*, i32** %11
%18 = call i32 @iunpacksearch0(i32* %14, i32* %15, i32 %16, i32* %17)
store i32 %18, i32* %6
br label %213
19: ; preds = %5
%20 = load i32*, i32** %7
%21 = load i32*, i32** %8
%22 = load i32, i32* %10
%23 = load i32*, i32** %11
%24 = call i32 @iunpacksearch1(i32* %20, i32* %21, i32 %22, i32* %23)
store i32 %24, i32* %6
br label %213
25: ; preds = %5
%26 = load i32*, i32** %7
%27 = load i32*, i32** %8
%28 = load i32, i32* %10
%29 = load i32*, i32** %11
%30 = call i32 @iunpacksearch2(i32* %26, i32* %27, i32 %28, i32* %29)
store i32 %30, i32* %6
br label %213
31: ; preds = %5
%32 = load i32*, i32** %7
%33 = load i32*, i32** %8
%34 = load i32, i32* %10
%35 = load i32*, i32** %11
%36 = call i32 @iunpacksearch3(i32* %32, i32* %33, i32 %34, i32* %35)
store i32 %36, i32* %6
br label %213
37: ; preds = %5
%38 = load i32*, i32** %7
%39 = load i32*, i32** %8
%40 = load i32, i32* %10
%41 = load i32*, i32** %11
%42 = call i32 @iunpacksearch4(i32* %38, i32* %39, i32 %40, i32* %41)
store i32 %42, i32* %6
br label %213
43: ; preds = %5
%44 = load i32*, i32** %7
%45 = load i32*, i32** %8
%46 = load i32, i32* %10
%47 = load i32*, i32** %11
%48 = call i32 @iunpacksearch5(i32* %44, i32* %45, i32 %46, i32* %47)
store i32 %48, i32* %6
br label %213
49: ; preds = %5
%50 = load i32*, i32** %7
%51 = load i32*, i32** %8
%52 = load i32, i32* %10
%53 = load i32*, i32** %11
%54 = call i32 @iunpacksearch6(i32* %50, i32* %51, i32 %52, i32* %53)
store i32 %54, i32* %6
br label %213
55: ; preds = %5
%56 = load i32*, i32** %7
%57 = load i32*, i32** %8
%58 = load i32, i32* %10
%59 = load i32*, i32** %11
%60 = call i32 @iunpacksearch7(i32* %56, i32* %57, i32 %58, i32* %59)
store i32 %60, i32* %6
br label %213
61: ; preds = %5
%62 = load i32*, i32** %7
%63 = load i32*, i32** %8
%64 = load i32, i32* %10
%65 = load i32*, i32** %11
%66 = call i32 @iunpacksearch8(i32* %62, i32* %63, i32 %64, i32* %65)
store i32 %66, i32* %6
br label %213
67: ; preds = %5
%68 = load i32*, i32** %7
%69 = load i32*, i32** %8
%70 = load i32, i32* %10
%71 = load i32*, i32** %11
%72 = call i32 @iunpacksearch9(i32* %68, i32* %69, i32 %70, i32* %71)
store i32 %72, i32* %6
br label %213
73: ; preds = %5
%74 = load i32*, i32** %7
%75 = load i32*, i32** %8
%76 = load i32, i32* %10
%77 = load i32*, i32** %11
%78 = call i32 @iunpacksearch10(i32* %74, i32* %75, i32 %76, i32* %77)
store i32 %78, i32* %6
br label %213
79: ; preds = %5
%80 = load i32*, i32** %7
%81 = load i32*, i32** %8
%82 = load i32, i32* %10
%83 = load i32*, i32** %11
%84 = call i32 @iunpacksearch11(i32* %80, i32* %81, i32 %82, i32* %83)
store i32 %84, i32* %6
br label %213
85: ; preds = %5
%86 = load i32*, i32** %7
%87 = load i32*, i32** %8
%88 = load i32, i32* %10
%89 = load i32*, i32** %11
%90 = call i32 @iunpacksearch12(i32* %86, i32* %87, i32 %88, i32* %89)
store i32 %90, i32* %6
br label %213
91: ; preds = %5
%92 = load i32*, i32** %7
%93 = load i32*, i32** %8
%94 = load i32, i32* %10
%95 = load i32*, i32** %11
%96 = call i32 @iunpacksearch13(i32* %92, i32* %93, i32 %94, i32* %95)
store i32 %96, i32* %6
br label %213
97: ; preds = %5
%98 = load i32*, i32** %7
%99 = load i32*, i32** %8
%100 = load i32, i32* %10
%101 = load i32*, i32** %11
%102 = call i32 @iunpacksearch14(i32* %98, i32* %99, i32 %100, i32* %101)
store i32 %102, i32* %6
br label %213
103: ; preds = %5
%104 = load i32*, i32** %7
%105 = load i32*, i32** %8
%106 = load i32, i32* %10
%107 = load i32*, i32** %11
%108 = call i32 @iunpacksearch15(i32* %104, i32* %105, i32 %106, i32* %107)
store i32 %108, i32* %6
br label %213
109: ; preds = %5
%110 = load i32*, i32** %7
%111 = load i32*, i32** %8
%112 = load i32, i32* %10
%113 = load i32*, i32** %11
%114 = call i32 @iunpacksearch16(i32* %110, i32* %111, i32 %112, i32* %113)
store i32 %114, i32* %6
br label %213
115: ; preds = %5
%116 = load i32*, i32** %7
%117 = load i32*, i32** %8
%118 = load i32, i32* %10
%119 = load i32*, i32** %11
%120 = call i32 @iunpacksearch17(i32* %116, i32* %117, i32 %118, i32* %119)
store i32 %120, i32* %6
br label %213
121: ; preds = %5
%122 = load i32*, i32** %7
%123 = load i32*, i32** %8
%124 = load i32, i32* %10
%125 = load i32*, i32** %11
%126 = call i32 @iunpacksearch18(i32* %122, i32* %123, i32 %124, i32* %125)
store i32 %126, i32* %6
br label %213
127: ; preds = %5
%128 = load i32*, i32** %7
%129 = load i32*, i32** %8
%130 = load i32, i32* %10
%131 = load i32*, i32** %11
%132 = call i32 @iunpacksearch19(i32* %128, i32* %129, i32 %130, i32* %131)
store i32 %132, i32* %6
br label %213
133: ; preds = %5
%134 = load i32*, i32** %7
%135 = load i32*, i32** %8
%136 = load i32, i32* %10
%137 = load i32*, i32** %11
%138 = call i32 @iunpacksearch20(i32* %134, i32* %135, i32 %136, i32* %137)
store i32 %138, i32* %6
br label %213
139: ; preds = %5
%140 = load i32*, i32** %7
%141 = load i32*, i32** %8
%142 = load i32, i32* %10
%143 = load i32*, i32** %11
%144 = call i32 @iunpacksearch21(i32* %140, i32* %141, i32 %142, i32* %143)
store i32 %144, i32* %6
br label %213
145: ; preds = %5
%146 = load i32*, i32** %7
%147 = load i32*, i32** %8
%148 = load i32, i32* %10
%149 = load i32*, i32** %11
%150 = call i32 @iunpacksearch22(i32* %146, i32* %147, i32 %148, i32* %149)
store i32 %150, i32* %6
br label %213
151: ; preds = %5
%152 = load i32*, i32** %7
%153 = load i32*, i32** %8
%154 = load i32, i32* %10
%155 = load i32*, i32** %11
%156 = call i32 @iunpacksearch23(i32* %152, i32* %153, i32 %154, i32* %155)
store i32 %156, i32* %6
br label %213
157: ; preds = %5
%158 = load i32*, i32** %7
%159 = load i32*, i32** %8
%160 = load i32, i32* %10
%161 = load i32*, i32** %11
%162 = call i32 @iunpacksearch24(i32* %158, i32* %159, i32 %160, i32* %161)
store i32 %162, i32* %6
br label %213
163: ; preds = %5
%164 = load i32*, i32** %7
%165 = load i32*, i32** %8
%166 = load i32, i32* %10
%167 = load i32*, i32** %11
%168 = call i32 @iunpacksearch25(i32* %164, i32* %165, i32 %166, i32* %167)
store i32 %168, i32* %6
br label %213
169: ; preds = %5
%170 = load i32*, i32** %7
%171 = load i32*, i32** %8
%172 = load i32, i32* %10
%173 = load i32*, i32** %11
%174 = call i32 @iunpacksearch26(i32* %170, i32* %171, i32 %172, i32* %173)
store i32 %174, i32* %6
br label %213
175: ; preds = %5
%176 = load i32*, i32** %7
%177 = load i32*, i32** %8
%178 = load i32, i32* %10
%179 = load i32*, i32** %11
%180 = call i32 @iunpacksearch27(i32* %176, i32* %177, i32 %178, i32* %179)
store i32 %180, i32* %6
br label %213
181: ; preds = %5
%182 = load i32*, i32** %7
%183 = load i32*, i32** %8
%184 = load i32, i32* %10
%185 = load i32*, i32** %11
%186 = call i32 @iunpacksearch28(i32* %182, i32* %183, i32 %184, i32* %185)
store i32 %186, i32* %6
br label %213
187: ; preds = %5
%188 = load i32*, i32** %7
%189 = load i32*, i32** %8
%190 = load i32, i32* %10
%191 = load i32*, i32** %11
%192 = call i32 @iunpacksearch29(i32* %188, i32* %189, i32 %190, i32* %191)
store i32 %192, i32* %6
br label %213
193: ; preds = %5
%194 = load i32*, i32** %7
%195 = load i32*, i32** %8
%196 = load i32, i32* %10
%197 = load i32*, i32** %11
%198 = call i32 @iunpacksearch30(i32* %194, i32* %195, i32 %196, i32* %197)
store i32 %198, i32* %6
br label %213
199: ; preds = %5
%200 = load i32*, i32** %7
%201 = load i32*, i32** %8
%202 = load i32, i32* %10
%203 = load i32*, i32** %11
%204 = call i32 @iunpacksearch31(i32* %200, i32* %201, i32 %202, i32* %203)
store i32 %204, i32* %6
br label %213
205: ; preds = %5
%206 = load i32*, i32** %7
%207 = load i32*, i32** %8
%208 = load i32, i32* %10
%209 = load i32*, i32** %11
%210 = call i32 @iunpacksearch32(i32* %206, i32* %207, i32 %208, i32* %209)
store i32 %210, i32* %6
br label %213
211: ; preds = %5
br label %212
212: ; preds = %211
store i32 -1, i32* %6
br label %213
213: ; preds = %212, %205, %199, %193, %187, %181, %175, %169, %163, %157, %151, %145, %139, %133, %127, %121, %115, %109, %103, %97, %91, %85, %79, %73, %67, %61, %55, %49, %43, %37, %31, %25, %19, %13
%214 = load i32, i32* %6
ret i32 %214
}

LLVM IR (-O2):
define i32 @simdsearchd1(i32* %0, i32* %1, i32 %2, i32 %3, i32* %4) {
switch i32 %2, label %72 [
i32 0, label %6
i32 1, label %8
i32 2, label %10
i32 3, label %12
i32 4, label %14
i32 5, label %16
i32 6, label %18
i32 7, label %20
i32 8, label %22
i32 9, label %24
i32 10, label %26
i32 11, label %28
i32 12, label %30
i32 13, label %32
i32 14, label %34
i32 15, label %36
i32 16, label %38
i32 17, label %40
i32 18, label %42
i32 19, label %44
i32 20, label %46
i32 21, label %48
i32 22, label %50
i32 23, label %52
i32 24, label %54
i32 25, label %56
i32 26, label %58
i32 27, label %60
i32 28, label %62
i32 29, label %64
i32 30, label %66
i32 31, label %68
i32 32, label %70
]
6: ; preds = %5
%7 = tail call i32 @iunpacksearch0(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
8: ; preds = %5
%9 = tail call i32 @iunpacksearch1(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
10: ; preds = %5
%11 = tail call i32 @iunpacksearch2(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
12: ; preds = %5
%13 = tail call i32 @iunpacksearch3(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
14: ; preds = %5
%15 = tail call i32 @iunpacksearch4(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
16: ; preds = %5
%17 = tail call i32 @iunpacksearch5(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
18: ; preds = %5
%19 = tail call i32 @iunpacksearch6(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
20: ; preds = %5
%21 = tail call i32 @iunpacksearch7(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
22: ; preds = %5
%23 = tail call i32 @iunpacksearch8(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
24: ; preds = %5
%25 = tail call i32 @iunpacksearch9(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
26: ; preds = %5
%27 = tail call i32 @iunpacksearch10(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
28: ; preds = %5
%29 = tail call i32 @iunpacksearch11(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
30: ; preds = %5
%31 = tail call i32 @iunpacksearch12(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
32: ; preds = %5
%33 = tail call i32 @iunpacksearch13(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
34: ; preds = %5
%35 = tail call i32 @iunpacksearch14(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
36: ; preds = %5
%37 = tail call i32 @iunpacksearch15(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
38: ; preds = %5
%39 = tail call i32 @iunpacksearch16(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
40: ; preds = %5
%41 = tail call i32 @iunpacksearch17(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
42: ; preds = %5
%43 = tail call i32 @iunpacksearch18(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
44: ; preds = %5
%45 = tail call i32 @iunpacksearch19(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
46: ; preds = %5
%47 = tail call i32 @iunpacksearch20(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
48: ; preds = %5
%49 = tail call i32 @iunpacksearch21(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
50: ; preds = %5
%51 = tail call i32 @iunpacksearch22(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
52: ; preds = %5
%53 = tail call i32 @iunpacksearch23(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
54: ; preds = %5
%55 = tail call i32 @iunpacksearch24(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
56: ; preds = %5
%57 = tail call i32 @iunpacksearch25(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
58: ; preds = %5
%59 = tail call i32 @iunpacksearch26(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
60: ; preds = %5
%61 = tail call i32 @iunpacksearch27(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
62: ; preds = %5
%63 = tail call i32 @iunpacksearch28(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
64: ; preds = %5
%65 = tail call i32 @iunpacksearch29(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
66: ; preds = %5
%67 = tail call i32 @iunpacksearch30(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
68: ; preds = %5
%69 = tail call i32 @iunpacksearch31(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
70: ; preds = %5
%71 = tail call i32 @iunpacksearch32(i32* %0, i32* %1, i32 %3, i32* %4)
br label %72
72: ; preds = %5, %70, %68, %66, %64, %62, %60, %58, %56, %54, %52, %50, %48, %46, %44, %42, %40, %38, %36, %34, %32, %30, %28, %26, %24, %22, %20, %18, %16, %14, %12, %10, %8, %6
%73 = phi i32 [ %71, %70 ], [ %69, %68 ], [ %67, %66 ], [ %65, %64 ], [ %63, %62 ], [ %61, %60 ], [ %59, %58 ], [ %57, %56 ], [ %55, %54 ], [ %53, %52 ], [ %51, %50 ], [ %49, %48 ], [ %47, %46 ], [ %45, %44 ], [ %43, %42 ], [ %41, %40 ], [ %39, %38 ], [ %37, %36 ], [ %35, %34 ], [ %33, %32 ], [ %31, %30 ], [ %29, %28 ], [ %27, %26 ], [ %25, %24 ], [ %23, %22 ], [ %21, %20 ], [ %19, %18 ], [ %17, %16 ], [ %15, %14 ], [ %13, %12 ], [ %11, %10 ], [ %9, %8 ], [ %7, %6 ], [ -1, %5 ]
ret i32 %73
}