#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 */

/* Variables and functions */
int /*<<< orphan*/ printf(char *);
void check_wins4(int *user_array) {
  printf("\n\t\tYou selected Option 4 - Check Winnings\n");
  static int bonus = 42;
  static int win_nums[6] = {1, 3, 5, 7, 9, 11};
  register int i, j;
  int win = 0;
  int plus_bonus = 0;
  for (i = 0; i < 6; i++) {
    for (j = 0; j < 6; j++) {
      if (*(win_nums + i) == *(user_array + j)) {
        win++;
      }
    }
  }
  for (i = 0; i < 6; i++) {
    if (*(user_array + i) == bonus) {
      plus_bonus++;
    }
  }
  if (win == 6) {
    printf("\nMatch 6: Congratulations You Win - JACKPOT!!");
  } else if (win == 5 && plus_bonus == 1) {
    printf("\nMatch 5 + Bonus: Congratulations You Win - NEW CAR!!");
  } else if (win == 5 && plus_bonus == 0) {
    printf("\nMatch 5: Congratulations You Win - HOLIDAY!!");
  } else if (win == 4 && plus_bonus == 1) {
    printf("\nMatch 4 + Bonus: Congratulations You Win - WEEKEND AWAY!!");
  } else if (win == 4 && plus_bonus == 0) {
    printf("\nMatch 4: Congratulations You Win - NIGHT OUT!!");
  } else if (win == 3 && plus_bonus == 1) {
    printf("\nMatch 3 + Bonus: Congratulations You Win - CINEMA TICKET!!");
  } else {
    printf("\nSorry, Bad Luck! - NO WINS");
  }
}


x86 assembly (clang, -O0):
<check_wins4>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x8(%rbp)
lea    0xedd(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0xc(%rbp)
cmpl   $0x6,-0xc(%rbp)
jge    11a6 <check_wins4+0x96>
movl   $0x0,-0x10(%rbp)
cmpl   $0x6,-0x10(%rbp)
jge    1193 <check_wins4+0x83>
movslq -0xc(%rbp),%rcx
lea    0x2edd(%rip),%rax
mov    (%rax,%rcx,4),%eax
mov    -0x8(%rbp),%rcx
movslq -0x10(%rbp),%rdx
cmp    (%rcx,%rdx,4),%eax
jne    1180 <check_wins4+0x70>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1185 <check_wins4+0x75>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    114e <check_wins4+0x3e>
jmp    1198 <check_wins4+0x88>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    113d <check_wins4+0x2d>
movl   $0x0,-0xc(%rbp)
cmpl   $0x6,-0xc(%rbp)
jge    11ea <check_wins4+0xda>
mov    -0x8(%rbp),%rax
movslq -0xc(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    0x2e68(%rip),%eax
jne    11d7 <check_wins4+0xc7>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    11dc <check_wins4+0xcc>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    11ad <check_wins4+0x9d>
cmpl   $0x6,-0x14(%rbp)
jne    1205 <check_wins4+0xf5>
lea    0xe30(%rip),%rdi
call   1030 <printf@plt>
jmp    12e3 <check_wins4+0x1d3>
cmpl   $0x5,-0x14(%rbp)
jne    122a <check_wins4+0x11a>
cmpl   $0x1,-0x18(%rbp)
jne    122a <check_wins4+0x11a>
lea    0xe39(%rip),%rdi
call   1030 <printf@plt>
jmp    12de <check_wins4+0x1ce>
cmpl   $0x5,-0x14(%rbp)
jne    124f <check_wins4+0x13f>
cmpl   $0x0,-0x18(%rbp)
jne    124f <check_wins4+0x13f>
lea    0xe4a(%rip),%rdi
call   1030 <printf@plt>
jmp    12d9 <check_wins4+0x1c9>
cmpl   $0x4,-0x14(%rbp)
jne    1274 <check_wins4+0x164>
cmpl   $0x1,-0x18(%rbp)
jne    1274 <check_wins4+0x164>
lea    0xe53(%rip),%rdi
call   1030 <printf@plt>
jmp    12d4 <check_wins4+0x1c4>
cmpl   $0x4,-0x14(%rbp)
jne    1299 <check_wins4+0x189>
cmpl   $0x0,-0x18(%rbp)
jne    1299 <check_wins4+0x189>
lea    0xe69(%rip),%rdi
call   1030 <printf@plt>
jmp    12cf <check_wins4+0x1bf>
cmpl   $0x3,-0x14(%rbp)
jne    12be <check_wins4+0x1ae>
cmpl   $0x1,-0x18(%rbp)
jne    12be <check_wins4+0x1ae>
lea    0xe74(%rip),%rdi
call   1030 <printf@plt>
jmp    12ca <check_wins4+0x1ba>
lea    0xe9f(%rip),%rdi
call   1030 <printf@plt>
jmp    12cf <check_wins4+0x1bf>
jmp    12d4 <check_wins4+0x1c4>
jmp    12d9 <check_wins4+0x1c9>
jmp    12de <check_wins4+0x1ce>
jmp    12e3 <check_wins4+0x1d3>
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<check_wins4>:
push   %rbp
push   %r15
push   %r14
push   %rbx
push   %rax
mov    %rdi,%rbp
lea    0x10c4(%rip),%rdi
call   1030 <puts@plt>
movups 0x0(%rbp),%xmm0
movsd  0x10(%rbp),%xmm4
movaps %xmm4,%xmm1
movlhps %xmm0,%xmm1
movaps %xmm0,%xmm2
shufps $0x21,%xmm1,%xmm2
movaps %xmm1,%xmm3
shufps $0x24,%xmm2,%xmm3
movaps %xmm0,%xmm2
shufps $0x4e,%xmm1,%xmm2
shufps $0xb1,%xmm0,%xmm4
pcmpeqd 0xe9a(%rip),%xmm4
pshufd $0x1b,%xmm0,%xmm5
pcmpeqd 0xe9d(%rip),%xmm5
packssdw %xmm4,%xmm5
packsswb %xmm5,%xmm5
pmovmskb %xmm5,%edi
mov    %edi,%eax
and    $0x10,%al
shr    $0x4,%al
mov    %edi,%edx
and    $0x20,%dl
shr    $0x5,%dl
mov    %edi,%ecx
and    $0x40,%cl
shr    $0x6,%cl
mov    %edi,%ebx
shr    $0x7,%bl
movzbl %bl,%r14d
movzbl %cl,%ecx
movzbl %dl,%r11d
movzbl %al,%r10d
xor    %esi,%esi
cmpl   $0x2a,0x10(%rbp)
sete   %r9b
xor    %r15d,%r15d
cmpl   $0x2a,0x14(%rbp)
sete   %r8b
movdqa 0xe59(%rip),%xmm4
pcmpeqd %xmm1,%xmm4
movdqa 0xe5d(%rip),%xmm5
pcmpeqd %xmm2,%xmm5
packssdw %xmm5,%xmm4
pcmpeqd 0xe5d(%rip),%xmm3
movdqa 0xe65(%rip),%xmm5
pcmpeqd %xmm0,%xmm5
packssdw %xmm3,%xmm5
packsswb %xmm5,%xmm4
pmovmskb %xmm4,%ebx
shl    $0x10,%ebx
pcmpeqd 0xe5a(%rip),%xmm1
movdqa 0xe62(%rip),%xmm3
pcmpeqd %xmm0,%xmm3
pcmpeqd 0xe66(%rip),%xmm2
packssdw %xmm1,%xmm3
pcmpeqd 0xe6a(%rip),%xmm0
packssdw %xmm0,%xmm2
packsswb %xmm2,%xmm3
pmovmskb %xmm3,%ebp
or     %ebx,%ebp
mov    %ebp,%ebx
shr    %ebx
and    $0x55555555,%ebx
sub    %ebx,%ebp
mov    %ebp,%ebx
and    $0x33333333,%ebx
shr    $0x2,%ebp
and    $0x33333333,%ebp
add    %ebx,%ebp
mov    %ebp,%ebx
shr    $0x4,%ebx
add    %ebp,%ebx
and    $0xf0f0f0f,%ebx
imul   $0x1010101,%ebx,%ebx
shr    $0x18,%ebx
add    %r14d,%ebx
add    %ecx,%ebx
add    %r11d,%ebx
add    %r10d,%ebx
cmp    $0x6,%ebx
jne    1285 <check_wins4+0x165>
lea    0xe20(%rip),%rdi
jmp    1322 <check_wins4+0x202>
mov    %edi,%ecx
and    $0x2,%cl
shr    %cl
mov    %edi,%eax
and    $0x4,%al
shr    $0x2,%al
mov    %edi,%edx
and    $0x8,%dl
shr    $0x3,%dl
movzbl %dl,%edx
movzbl %al,%eax
add    %edx,%eax
movzbl %cl,%ecx
add    %eax,%ecx
and    $0x1,%edi
add    %ecx,%edi
mov    %r9b,%sil
add    %edi,%esi
mov    %r8b,%r15b
add    %esi,%r15d
cmp    $0x5,%ebx
jne    12cc <check_wins4+0x1ac>
cmp    $0x1,%r15d
jne    12cc <check_wins4+0x1ac>
lea    0xe04(%rip),%rdi
jmp    1322 <check_wins4+0x202>
cmp    $0x5,%ebx
jne    12df <check_wins4+0x1bf>
test   %r15d,%r15d
jne    12df <check_wins4+0x1bf>
lea    0xe27(%rip),%rdi
jmp    1322 <check_wins4+0x202>
cmp    $0x4,%ebx
jne    12f3 <check_wins4+0x1d3>
cmp    $0x1,%r15d
jne    12f3 <check_wins4+0x1d3>
lea    0xe41(%rip),%rdi
jmp    1322 <check_wins4+0x202>
cmp    $0x4,%ebx
jne    1306 <check_wins4+0x1e6>
test   %r15d,%r15d
jne    1306 <check_wins4+0x1e6>
lea    0xe69(%rip),%rdi
jmp    1322 <check_wins4+0x202>
xor    $0x1,%r15d
xor    $0x3,%ebx
lea    0xe89(%rip),%rax
lea    0xebe(%rip),%rdi
or     %r15d,%ebx
cmove  %rax,%rdi
add    $0x8,%rsp
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
jmp    1040 <printf@plt>

LLVM IR (-O0):
@.str = [43 x i8] c"\0A\09\09You selected Option 4 - Check Winnings\0A\00"
@check_wins4.bonus = internal global i32 42
@check_wins4.win_nums = internal global [6 x i32] [i32 1, i32 3, i32 5, i32 7, i32 9, i32 11]
@.str.1 = [46 x i8] c"\0AMatch 6: Congratulations You Win - JACKPOT!!\00"
@.str.2 = [54 x i8] c"\0AMatch 5 + Bonus: Congratulations You Win - NEW CAR!!\00"
@.str.3 = [46 x i8] c"\0AMatch 5: Congratulations You Win - HOLIDAY!!\00"
@.str.4 = [59 x i8] c"\0AMatch 4 + Bonus: Congratulations You Win - WEEKEND AWAY!!\00"
@.str.5 = [48 x i8] c"\0AMatch 4: Congratulations You Win - NIGHT OUT!!\00"
@.str.6 = [60 x i8] c"\0AMatch 3 + Bonus: Congratulations You Win - CINEMA TICKET!!\00"
@.str.7 = [28 x i8] c"\0ASorry, Bad Luck! - NO WINS\00"
define void @check_wins4(i32* %0) {
%2 = alloca i32*
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
store i32* %0, i32** %2
%7 = call i32 @printf(i8* getelementptr inbounds ([43 x i8], [43 x i8]* @.str, i64 0, i64 0))
store i32 0, i32* %5
store i32 0, i32* %6
store i32 0, i32* %3
br label %8
8: ; preds = %34, %1
%9 = load i32, i32* %3
%10 = icmp slt i32 %9, 6
br i1 %10, label %11, label %37
11: ; preds = %8
store i32 0, i32* %4
br label %12
12: ; preds = %30, %11
%13 = load i32, i32* %4
%14 = icmp slt i32 %13, 6
br i1 %14, label %15, label %33
15: ; preds = %12
%16 = load i32, i32* %3
%17 = sext i32 %16 to i64
%18 = getelementptr inbounds i32, i32* getelementptr inbounds ([6 x i32], [6 x i32]* @check_wins4.win_nums, i64 0, i64 0), i64 %17
%19 = load i32, i32* %18
%20 = load i32*, i32** %2
%21 = load i32, i32* %4
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds i32, i32* %20, i64 %22
%24 = load i32, i32* %23
%25 = icmp eq i32 %19, %24
br i1 %25, label %26, label %29
26: ; preds = %15
%27 = load i32, i32* %5
%28 = add nsw i32 %27, 1
store i32 %28, i32* %5
br label %29
29: ; preds = %26, %15
br label %30
30: ; preds = %29
%31 = load i32, i32* %4
%32 = add nsw i32 %31, 1
store i32 %32, i32* %4
br label %12
33: ; preds = %12
br label %34
34: ; preds = %33
%35 = load i32, i32* %3
%36 = add nsw i32 %35, 1
store i32 %36, i32* %3
br label %8
37: ; preds = %8
store i32 0, i32* %3
br label %38
38: ; preds = %53, %37
%39 = load i32, i32* %3
%40 = icmp slt i32 %39, 6
br i1 %40, label %41, label %56
41: ; preds = %38
%42 = load i32*, i32** %2
%43 = load i32, i32* %3
%44 = sext i32 %43 to i64
%45 = getelementptr inbounds i32, i32* %42, i64 %44
%46 = load i32, i32* %45
%47 = load i32, i32* @check_wins4.bonus
%48 = icmp eq i32 %46, %47
br i1 %48, label %49, label %52
49: ; preds = %41
%50 = load i32, i32* %6
%51 = add nsw i32 %50, 1
store i32 %51, i32* %6
br label %52
52: ; preds = %49, %41
br label %53
53: ; preds = %52
%54 = load i32, i32* %3
%55 = add nsw i32 %54, 1
store i32 %55, i32* %3
br label %38
56: ; preds = %38
%57 = load i32, i32* %5
%58 = icmp eq i32 %57, 6
br i1 %58, label %59, label %61
59: ; preds = %56
%60 = call i32 @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.1, i64 0, i64 0))
br label %108
61: ; preds = %56
%62 = load i32, i32* %5
%63 = icmp eq i32 %62, 5
br i1 %63, label %64, label %69
64: ; preds = %61
%65 = load i32, i32* %6
%66 = icmp eq i32 %65, 1
br i1 %66, label %67, label %69
67: ; preds = %64
%68 = call i32 @printf(i8* getelementptr inbounds ([54 x i8], [54 x i8]* @.str.2, i64 0, i64 0))
br label %107
69: ; preds = %64, %61
%70 = load i32, i32* %5
%71 = icmp eq i32 %70, 5
br i1 %71, label %72, label %77
72: ; preds = %69
%73 = load i32, i32* %6
%74 = icmp eq i32 %73, 0
br i1 %74, label %75, label %77
75: ; preds = %72
%76 = call i32 @printf(i8* getelementptr inbounds ([46 x i8], [46 x i8]* @.str.3, i64 0, i64 0))
br label %106
77: ; preds = %72, %69
%78 = load i32, i32* %5
%79 = icmp eq i32 %78, 4
br i1 %79, label %80, label %85
80: ; preds = %77
%81 = load i32, i32* %6
%82 = icmp eq i32 %81, 1
br i1 %82, label %83, label %85
83: ; preds = %80
%84 = call i32 @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.4, i64 0, i64 0))
br label %105
85: ; preds = %80, %77
%86 = load i32, i32* %5
%87 = icmp eq i32 %86, 4
br i1 %87, label %88, label %93
88: ; preds = %85
%89 = load i32, i32* %6
%90 = icmp eq i32 %89, 0
br i1 %90, label %91, label %93
91: ; preds = %88
%92 = call i32 @printf(i8* getelementptr inbounds ([48 x i8], [48 x i8]* @.str.5, i64 0, i64 0))
br label %104
93: ; preds = %88, %85
%94 = load i32, i32* %5
%95 = icmp eq i32 %94, 3
br i1 %95, label %96, label %101
96: ; preds = %93
%97 = load i32, i32* %6
%98 = icmp eq i32 %97, 1
br i1 %98, label %99, label %101
99: ; preds = %96
%100 = call i32 @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.6, i64 0, i64 0))
br label %103
101: ; preds = %96, %93
%102 = call i32 @printf(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.7, i64 0, i64 0))
br label %103
103: ; preds = %101, %99
br label %104
104: ; preds = %103, %91
br label %105
105: ; preds = %104, %83
br label %106
106: ; preds = %105, %75
br label %107
107: ; preds = %106, %67
br label %108
108: ; preds = %107, %59
ret void
}

LLVM IR (-O2):
@.str.1 = [46 x i8] c"\0AMatch 6: Congratulations You Win - JACKPOT!!\00"
@.str.2 = [54 x i8] c"\0AMatch 5 + Bonus: Congratulations You Win - NEW CAR!!\00"
@.str.3 = [46 x i8] c"\0AMatch 5: Congratulations You Win - HOLIDAY!!\00"
@.str.4 = [59 x i8] c"\0AMatch 4 + Bonus: Congratulations You Win - WEEKEND AWAY!!\00"
@.str.5 = [48 x i8] c"\0AMatch 4: Congratulations You Win - NIGHT OUT!!\00"
@.str.6 = [60 x i8] c"\0AMatch 3 + Bonus: Congratulations You Win - CINEMA TICKET!!\00"
@.str.7 = [28 x i8] c"\0ASorry, Bad Luck! - NO WINS\00"
@str = [42 x i8] c"\0A\09\09You selected Option 4 - Check Winnings\00"
define void @check_wins4(i32* nocapture %0) {
%2 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([42 x i8], [42 x i8]* @str, i64 0, i64 0))
%3 = bitcast i32* %0 to <4 x i32>*
%4 = load <4 x i32>, <4 x i32>* %3
%5 = shufflevector <4 x i32> %4, <4 x i32> poison, <8 x i32> <i32 undef, i32 undef, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef>
%6 = getelementptr inbounds i32, i32* %0, i64 4
%7 = getelementptr inbounds i32, i32* %0, i64 5
%8 = bitcast i32* %6 to <2 x i32>*
%9 = load <2 x i32>, <2 x i32>* %8
%10 = shufflevector <2 x i32> %9, <2 x i32> poison, <8 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%11 = shufflevector <4 x i32> %4, <4 x i32> poison, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%12 = shufflevector <2 x i32> %9, <2 x i32> poison, <32 x i32> <i32 0, i32 1, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%13 = shufflevector <32 x i32> %11, <32 x i32> %12, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 32, i32 33, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%14 = bitcast i32* %0 to <4 x i32>*
%15 = load <4 x i32>, <4 x i32>* %14
%16 = shufflevector <4 x i32> %15, <4 x i32> poison, <32 x i32> <i32 0, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%17 = shufflevector <32 x i32> %13, <32 x i32> %16, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 32, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef, i32 undef>
%18 = shufflevector <32 x i32> %17, <32 x i32> poison, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 1>
%19 = icmp eq <32 x i32> %18, <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 11, i32 11>
%20 = shufflevector <4 x i32> %15, <4 x i32> poison, <8 x i32> <i32 3, i32 2, i32 1, i32 0, i32 undef, i32 undef, i32 undef, i32 undef>
%21 = shufflevector <8 x i32> %20, <8 x i32> %10, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 9, i32 8, i32 undef, i32 undef>
%22 = shufflevector <8 x i32> %21, <8 x i32> %5, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 11, i32 10>
%23 = icmp eq <8 x i32> %22, <i32 42, i32 42, i32 42, i32 42, i32 11, i32 11, i32 11, i32 11>
%24 = extractelement <8 x i1> %23, i64 7
%25 = zext i1 %24 to i32
%26 = extractelement <8 x i1> %23, i64 6
%27 = zext i1 %26 to i32
%28 = extractelement <8 x i1> %23, i64 5
%29 = zext i1 %28 to i32
%30 = extractelement <8 x i1> %23, i64 4
%31 = zext i1 %30 to i32
%32 = extractelement <8 x i1> %23, i64 3
%33 = zext i1 %32 to i32
%34 = extractelement <8 x i1> %23, i64 2
%35 = zext i1 %34 to i32
%36 = add nuw nsw i32 %33, %35
%37 = extractelement <8 x i1> %23, i64 1
%38 = zext i1 %37 to i32
%39 = add nuw nsw i32 %36, %38
%40 = extractelement <8 x i1> %23, i64 0
%41 = zext i1 %40 to i32
%42 = add nuw nsw i32 %39, %41
%43 = load i32, i32* %6
%44 = icmp eq i32 %43, 42
%45 = zext i1 %44 to i32
%46 = add nuw nsw i32 %42, %45
%47 = load i32, i32* %7
%48 = icmp eq i32 %47, 42
%49 = zext i1 %48 to i32
%50 = add nuw nsw i32 %46, %49
%51 = bitcast <32 x i1> %19 to i32
%52 = call i32 @llvm.ctpop.i32(i32 %51)
%53 = add nuw nsw i32 %52, %25
%54 = add nuw nsw i32 %53, %27
%55 = add nuw nsw i32 %54, %29
%56 = add nuw nsw i32 %55, %31
%57 = icmp eq i32 %56, 6
br i1 %57, label %74, label %58
58: ; preds = %1
%59 = icmp eq i32 %56, 5
%60 = icmp eq i32 %50, 1
%61 = select i1 %59, i1 %60, i1 false
br i1 %61, label %74, label %62
62: ; preds = %58
%63 = icmp eq i32 %50, 0
%64 = select i1 %59, i1 %63, i1 false
br i1 %64, label %74, label %65
65: ; preds = %62
%66 = icmp eq i32 %56, 4
%67 = select i1 %66, i1 %60, i1 false
br i1 %67, label %74, label %68
68: ; preds = %65
%69 = select i1 %66, i1 %63, i1 false
br i1 %69, label %74, label %70
70: ; preds = %68
%71 = icmp eq i32 %56, 3
%72 = select i1 %71, i1 %60, i1 false
%73 = select i1 %72, i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.6, i64 0, i64 0), i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.7, i64 0, i64 0)
br label %74
74: ; preds = %70, %68, %65, %62, %58, %1
%75 = phi i8* [ getelementptr inbounds ([46 x i8], [46 x i8]* @.str.1, i64 0, i64 0), %1 ], [ getelementptr inbounds ([54 x i8], [54 x i8]* @.str.2, i64 0, i64 0), %58 ], [ getelementptr inbounds ([46 x i8], [46 x i8]* @.str.3, i64 0, i64 0), %62 ], [ getelementptr inbounds ([59 x i8], [59 x i8]* @.str.4, i64 0, i64 0), %65 ], [ getelementptr inbounds ([48 x i8], [48 x i8]* @.str.5, i64 0, i64 0), %68 ], [ %73, %70 ]
%76 = tail call i32 @printf(i8* dereferenceable(1) %75)
ret void
}