#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 winner_check(int *inputs) {
  int i;
  int user_score = 0;
  int jackpot = 6;
  int car = 15;
  int holiday = 5;
  int away = 14;
  int night = 4;
  int ticket = 13;
  if (*(inputs) == 1 || *(inputs) == 3 || *(inputs) == 5 || *(inputs) == 7 ||
      *(inputs) == 9 || *(inputs) == 11) {
    user_score += 1;
  }
  if (*(inputs + 1) == 1 || *(inputs + 1) == 3 || *(inputs + 1) == 5 ||
      *(inputs + 1) == 7 || *(inputs + 1) == 9 || *(inputs + 1) == 11) {
    user_score += 1;
  }
  if (*(inputs + 2) == 1 || *(inputs + 2) == 3 || *(inputs + 2) == 5 ||
      *(inputs + 2) == 7 || *(inputs + 2) == 9 || *(inputs + 2) == 11) {
    user_score += 1;
  }
  if (*(inputs + 3) == 1 || *(inputs + 3) == 3 || *(inputs + 3) == 5 ||
      *(inputs + 3) == 7 || *(inputs + 3) == 9 || *(inputs + 3) == 11) {
    user_score += 1;
  }
  if (*(inputs + 4) == 1 || *(inputs + 4) == 3 || *(inputs + 4) == 5 ||
      *(inputs + 4) == 7 || *(inputs + 4) == 9 || *(inputs + 4) == 11) {
    user_score += 1;
  }
  if (*(inputs + 5) == 1 || *(inputs + 5) == 3 || *(inputs + 5) == 5 ||
      *(inputs + 5) == 7 || *(inputs + 5) == 9 || *(inputs + 5) == 11) {
    user_score += 1;
  } else if (*(inputs + 5) == 42) {
    user_score += 10;
  }
  if (user_score == 6 || user_score == 16) {
    printf("\nJackpot\n");
  } else if (user_score == 15) {
    printf("\nNew Car\n");
  } else if (user_score == 5) {
    printf("\nHoliday\n");
  } else if (user_score == 14) {
    printf("\nWeekend Away\n");
  } else if (user_score == 4) {
    printf("\nNight Out\n");
  } else if (user_score == 13) {
    printf("\nCinema Ticket\n");
  } else {
    printf("\nYou don't win anything\n");
  }
}


x86 assembly (clang, -O0):
<winner_check>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
movl   $0x0,-0x10(%rbp)
movl   $0x6,-0x14(%rbp)
movl   $0xf,-0x18(%rbp)
movl   $0x5,-0x1c(%rbp)
movl   $0xe,-0x20(%rbp)
movl   $0x4,-0x24(%rbp)
movl   $0xd,-0x28(%rbp)
mov    -0x8(%rbp),%rax
cmpl   $0x1,(%rax)
je     119b <winner_check+0x8b>
mov    -0x8(%rbp),%rax
cmpl   $0x3,(%rax)
je     119b <winner_check+0x8b>
mov    -0x8(%rbp),%rax
cmpl   $0x5,(%rax)
je     119b <winner_check+0x8b>
mov    -0x8(%rbp),%rax
cmpl   $0x7,(%rax)
je     119b <winner_check+0x8b>
mov    -0x8(%rbp),%rax
cmpl   $0x9,(%rax)
je     119b <winner_check+0x8b>
mov    -0x8(%rbp),%rax
cmpl   $0xb,(%rax)
jne    11a4 <winner_check+0x94>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
cmpl   $0x1,0x4(%rax)
je     11f8 <winner_check+0xe8>
mov    -0x8(%rbp),%rax
cmpl   $0x3,0x4(%rax)
je     11f8 <winner_check+0xe8>
mov    -0x8(%rbp),%rax
cmpl   $0x5,0x4(%rax)
je     11f8 <winner_check+0xe8>
mov    -0x8(%rbp),%rax
cmpl   $0x7,0x4(%rax)
je     11f8 <winner_check+0xe8>
mov    -0x8(%rbp),%rax
cmpl   $0x9,0x4(%rax)
je     11f8 <winner_check+0xe8>
mov    -0x8(%rbp),%rax
cmpl   $0xb,0x4(%rax)
jne    1201 <winner_check+0xf1>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
cmpl   $0x1,0x8(%rax)
je     1255 <winner_check+0x145>
mov    -0x8(%rbp),%rax
cmpl   $0x3,0x8(%rax)
je     1255 <winner_check+0x145>
mov    -0x8(%rbp),%rax
cmpl   $0x5,0x8(%rax)
je     1255 <winner_check+0x145>
mov    -0x8(%rbp),%rax
cmpl   $0x7,0x8(%rax)
je     1255 <winner_check+0x145>
mov    -0x8(%rbp),%rax
cmpl   $0x9,0x8(%rax)
je     1255 <winner_check+0x145>
mov    -0x8(%rbp),%rax
cmpl   $0xb,0x8(%rax)
jne    125e <winner_check+0x14e>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
cmpl   $0x1,0xc(%rax)
je     12b2 <winner_check+0x1a2>
mov    -0x8(%rbp),%rax
cmpl   $0x3,0xc(%rax)
je     12b2 <winner_check+0x1a2>
mov    -0x8(%rbp),%rax
cmpl   $0x5,0xc(%rax)
je     12b2 <winner_check+0x1a2>
mov    -0x8(%rbp),%rax
cmpl   $0x7,0xc(%rax)
je     12b2 <winner_check+0x1a2>
mov    -0x8(%rbp),%rax
cmpl   $0x9,0xc(%rax)
je     12b2 <winner_check+0x1a2>
mov    -0x8(%rbp),%rax
cmpl   $0xb,0xc(%rax)
jne    12bb <winner_check+0x1ab>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
cmpl   $0x1,0x10(%rax)
je     130f <winner_check+0x1ff>
mov    -0x8(%rbp),%rax
cmpl   $0x3,0x10(%rax)
je     130f <winner_check+0x1ff>
mov    -0x8(%rbp),%rax
cmpl   $0x5,0x10(%rax)
je     130f <winner_check+0x1ff>
mov    -0x8(%rbp),%rax
cmpl   $0x7,0x10(%rax)
je     130f <winner_check+0x1ff>
mov    -0x8(%rbp),%rax
cmpl   $0x9,0x10(%rax)
je     130f <winner_check+0x1ff>
mov    -0x8(%rbp),%rax
cmpl   $0xb,0x10(%rax)
jne    1318 <winner_check+0x208>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
mov    -0x8(%rbp),%rax
cmpl   $0x1,0x14(%rax)
je     136c <winner_check+0x25c>
mov    -0x8(%rbp),%rax
cmpl   $0x3,0x14(%rax)
je     136c <winner_check+0x25c>
mov    -0x8(%rbp),%rax
cmpl   $0x5,0x14(%rax)
je     136c <winner_check+0x25c>
mov    -0x8(%rbp),%rax
cmpl   $0x7,0x14(%rax)
je     136c <winner_check+0x25c>
mov    -0x8(%rbp),%rax
cmpl   $0x9,0x14(%rax)
je     136c <winner_check+0x25c>
mov    -0x8(%rbp),%rax
cmpl   $0xb,0x14(%rax)
jne    137a <winner_check+0x26a>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1396 <winner_check+0x286>
mov    -0x8(%rbp),%rax
cmpl   $0x2a,0x14(%rax)
jne    1391 <winner_check+0x281>
mov    -0x10(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0x10(%rbp)
jmp    1396 <winner_check+0x286>
cmpl   $0x6,-0x10(%rbp)
je     13aa <winner_check+0x29a>
cmpl   $0x10,-0x10(%rbp)
jne    13bb <winner_check+0x2ab>
lea    0xc4f(%rip),%rdi
call   1030 <printf@plt>
jmp    1467 <winner_check+0x357>
cmpl   $0xf,-0x10(%rbp)
jne    13d6 <winner_check+0x2c6>
lea    0xc3e(%rip),%rdi
call   1030 <printf@plt>
jmp    1462 <winner_check+0x352>
cmpl   $0x5,-0x10(%rbp)
jne    13f1 <winner_check+0x2e1>
lea    0xc2d(%rip),%rdi
call   1030 <printf@plt>
jmp    145d <winner_check+0x34d>
cmpl   $0xe,-0x10(%rbp)
jne    140c <winner_check+0x2fc>
lea    0xc1c(%rip),%rdi
call   1030 <printf@plt>
jmp    1458 <winner_check+0x348>
cmpl   $0x4,-0x10(%rbp)
jne    1427 <winner_check+0x317>
lea    0xc10(%rip),%rdi
call   1030 <printf@plt>
jmp    1453 <winner_check+0x343>
cmpl   $0xd,-0x10(%rbp)
jne    1442 <winner_check+0x332>
lea    0xc01(%rip),%rdi
call   1030 <printf@plt>
jmp    144e <winner_check+0x33e>
lea    0xc00(%rip),%rdi
call   1030 <printf@plt>
jmp    1453 <winner_check+0x343>
jmp    1458 <winner_check+0x348>
jmp    145d <winner_check+0x34d>
jmp    1462 <winner_check+0x352>
jmp    1467 <winner_check+0x357>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<winner_check>:
mov    (%rdi),%ecx
add    $0xffffffff,%ecx
xor    %eax,%eax
cmp    $0xa,%ecx
ja     1129 <winner_check+0x19>
movslq %ecx,%rax
lea    0xf36(%rip),%rcx
mov    (%rcx,%rax,4),%eax
mov    0x4(%rdi),%ecx
cmp    $0xb,%ecx
ja     113e <winner_check+0x2e>
mov    $0xaaa,%edx
bt     %ecx,%edx
jae    113e <winner_check+0x2e>
add    $0x1,%eax
mov    0x8(%rdi),%ecx
cmp    $0xb,%ecx
ja     1153 <winner_check+0x43>
mov    $0xaaa,%edx
bt     %ecx,%edx
jae    1153 <winner_check+0x43>
add    $0x1,%eax
mov    0xc(%rdi),%ecx
cmp    $0xb,%ecx
ja     1168 <winner_check+0x58>
mov    $0xaaa,%edx
bt     %ecx,%edx
jae    1168 <winner_check+0x58>
add    $0x1,%eax
mov    0x10(%rdi),%ecx
cmp    $0xb,%ecx
ja     117d <winner_check+0x6d>
mov    $0xaaa,%edx
bt     %ecx,%edx
jae    117d <winner_check+0x6d>
add    $0x1,%eax
mov    0x14(%rdi),%ecx
cmp    $0x2a,%rcx
ja     1194 <winner_check+0x84>
mov    $0xaaa,%edx
bt     %rcx,%rdx
jae    11bd <winner_check+0xad>
add    $0x1,%eax
add    $0xfffffffc,%eax
cmp    $0xb,%eax
ja     11b1 <winner_check+0xa1>
cltq
lea    0xee3(%rip),%rcx
movslq (%rcx,%rax,4),%rdi
add    %rcx,%rdi
jmp    1030 <puts@plt>
lea    0xe48(%rip),%rdi
jmp    1030 <puts@plt>
cmp    $0x2a,%rcx
jne    1194 <winner_check+0x84>
add    $0xa,%eax
jmp    1194 <winner_check+0x84>

LLVM IR (-O0):
@.str = [10 x i8] c"\0AJackpot\0A\00"
@.str.1 = [10 x i8] c"\0ANew Car\0A\00"
@.str.2 = [10 x i8] c"\0AHoliday\0A\00"
@.str.3 = [15 x i8] c"\0AWeekend Away\0A\00"
@.str.4 = [12 x i8] c"\0ANight Out\0A\00"
@.str.5 = [16 x i8] c"\0ACinema Ticket\0A\00"
@.str.6 = [25 x i8] c"\0AYou don't win anything\0A\00"
define void @winner_check(i32* %0) {
%2 = alloca i32*
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
store i32* %0, i32** %2
store i32 0, i32* %4
store i32 6, i32* %5
store i32 15, i32* %6
store i32 5, i32* %7
store i32 14, i32* %8
store i32 4, i32* %9
store i32 13, i32* %10
%11 = load i32*, i32** %2
%12 = load i32, i32* %11
%13 = icmp eq i32 %12, 1
br i1 %13, label %34, label %14
14: ; preds = %1
%15 = load i32*, i32** %2
%16 = load i32, i32* %15
%17 = icmp eq i32 %16, 3
br i1 %17, label %34, label %18
18: ; preds = %14
%19 = load i32*, i32** %2
%20 = load i32, i32* %19
%21 = icmp eq i32 %20, 5
br i1 %21, label %34, label %22
22: ; preds = %18
%23 = load i32*, i32** %2
%24 = load i32, i32* %23
%25 = icmp eq i32 %24, 7
br i1 %25, label %34, label %26
26: ; preds = %22
%27 = load i32*, i32** %2
%28 = load i32, i32* %27
%29 = icmp eq i32 %28, 9
br i1 %29, label %34, label %30
30: ; preds = %26
%31 = load i32*, i32** %2
%32 = load i32, i32* %31
%33 = icmp eq i32 %32, 11
br i1 %33, label %34, label %37
34: ; preds = %30, %26, %22, %18, %14, %1
%35 = load i32, i32* %4
%36 = add nsw i32 %35, 1
store i32 %36, i32* %4
br label %37
37: ; preds = %34, %30
%38 = load i32*, i32** %2
%39 = getelementptr inbounds i32, i32* %38, i64 1
%40 = load i32, i32* %39
%41 = icmp eq i32 %40, 1
br i1 %41, label %67, label %42
42: ; preds = %37
%43 = load i32*, i32** %2
%44 = getelementptr inbounds i32, i32* %43, i64 1
%45 = load i32, i32* %44
%46 = icmp eq i32 %45, 3
br i1 %46, label %67, label %47
47: ; preds = %42
%48 = load i32*, i32** %2
%49 = getelementptr inbounds i32, i32* %48, i64 1
%50 = load i32, i32* %49
%51 = icmp eq i32 %50, 5
br i1 %51, label %67, label %52
52: ; preds = %47
%53 = load i32*, i32** %2
%54 = getelementptr inbounds i32, i32* %53, i64 1
%55 = load i32, i32* %54
%56 = icmp eq i32 %55, 7
br i1 %56, label %67, label %57
57: ; preds = %52
%58 = load i32*, i32** %2
%59 = getelementptr inbounds i32, i32* %58, i64 1
%60 = load i32, i32* %59
%61 = icmp eq i32 %60, 9
br i1 %61, label %67, label %62
62: ; preds = %57
%63 = load i32*, i32** %2
%64 = getelementptr inbounds i32, i32* %63, i64 1
%65 = load i32, i32* %64
%66 = icmp eq i32 %65, 11
br i1 %66, label %67, label %70
67: ; preds = %62, %57, %52, %47, %42, %37
%68 = load i32, i32* %4
%69 = add nsw i32 %68, 1
store i32 %69, i32* %4
br label %70
70: ; preds = %67, %62
%71 = load i32*, i32** %2
%72 = getelementptr inbounds i32, i32* %71, i64 2
%73 = load i32, i32* %72
%74 = icmp eq i32 %73, 1
br i1 %74, label %100, label %75
75: ; preds = %70
%76 = load i32*, i32** %2
%77 = getelementptr inbounds i32, i32* %76, i64 2
%78 = load i32, i32* %77
%79 = icmp eq i32 %78, 3
br i1 %79, label %100, label %80
80: ; preds = %75
%81 = load i32*, i32** %2
%82 = getelementptr inbounds i32, i32* %81, i64 2
%83 = load i32, i32* %82
%84 = icmp eq i32 %83, 5
br i1 %84, label %100, label %85
85: ; preds = %80
%86 = load i32*, i32** %2
%87 = getelementptr inbounds i32, i32* %86, i64 2
%88 = load i32, i32* %87
%89 = icmp eq i32 %88, 7
br i1 %89, label %100, label %90
90: ; preds = %85
%91 = load i32*, i32** %2
%92 = getelementptr inbounds i32, i32* %91, i64 2
%93 = load i32, i32* %92
%94 = icmp eq i32 %93, 9
br i1 %94, label %100, label %95
95: ; preds = %90
%96 = load i32*, i32** %2
%97 = getelementptr inbounds i32, i32* %96, i64 2
%98 = load i32, i32* %97
%99 = icmp eq i32 %98, 11
br i1 %99, label %100, label %103
100: ; preds = %95, %90, %85, %80, %75, %70
%101 = load i32, i32* %4
%102 = add nsw i32 %101, 1
store i32 %102, i32* %4
br label %103
103: ; preds = %100, %95
%104 = load i32*, i32** %2
%105 = getelementptr inbounds i32, i32* %104, i64 3
%106 = load i32, i32* %105
%107 = icmp eq i32 %106, 1
br i1 %107, label %133, label %108
108: ; preds = %103
%109 = load i32*, i32** %2
%110 = getelementptr inbounds i32, i32* %109, i64 3
%111 = load i32, i32* %110
%112 = icmp eq i32 %111, 3
br i1 %112, label %133, label %113
113: ; preds = %108
%114 = load i32*, i32** %2
%115 = getelementptr inbounds i32, i32* %114, i64 3
%116 = load i32, i32* %115
%117 = icmp eq i32 %116, 5
br i1 %117, label %133, label %118
118: ; preds = %113
%119 = load i32*, i32** %2
%120 = getelementptr inbounds i32, i32* %119, i64 3
%121 = load i32, i32* %120
%122 = icmp eq i32 %121, 7
br i1 %122, label %133, label %123
123: ; preds = %118
%124 = load i32*, i32** %2
%125 = getelementptr inbounds i32, i32* %124, i64 3
%126 = load i32, i32* %125
%127 = icmp eq i32 %126, 9
br i1 %127, label %133, label %128
128: ; preds = %123
%129 = load i32*, i32** %2
%130 = getelementptr inbounds i32, i32* %129, i64 3
%131 = load i32, i32* %130
%132 = icmp eq i32 %131, 11
br i1 %132, label %133, label %136
133: ; preds = %128, %123, %118, %113, %108, %103
%134 = load i32, i32* %4
%135 = add nsw i32 %134, 1
store i32 %135, i32* %4
br label %136
136: ; preds = %133, %128
%137 = load i32*, i32** %2
%138 = getelementptr inbounds i32, i32* %137, i64 4
%139 = load i32, i32* %138
%140 = icmp eq i32 %139, 1
br i1 %140, label %166, label %141
141: ; preds = %136
%142 = load i32*, i32** %2
%143 = getelementptr inbounds i32, i32* %142, i64 4
%144 = load i32, i32* %143
%145 = icmp eq i32 %144, 3
br i1 %145, label %166, label %146
146: ; preds = %141
%147 = load i32*, i32** %2
%148 = getelementptr inbounds i32, i32* %147, i64 4
%149 = load i32, i32* %148
%150 = icmp eq i32 %149, 5
br i1 %150, label %166, label %151
151: ; preds = %146
%152 = load i32*, i32** %2
%153 = getelementptr inbounds i32, i32* %152, i64 4
%154 = load i32, i32* %153
%155 = icmp eq i32 %154, 7
br i1 %155, label %166, label %156
156: ; preds = %151
%157 = load i32*, i32** %2
%158 = getelementptr inbounds i32, i32* %157, i64 4
%159 = load i32, i32* %158
%160 = icmp eq i32 %159, 9
br i1 %160, label %166, label %161
161: ; preds = %156
%162 = load i32*, i32** %2
%163 = getelementptr inbounds i32, i32* %162, i64 4
%164 = load i32, i32* %163
%165 = icmp eq i32 %164, 11
br i1 %165, label %166, label %169
166: ; preds = %161, %156, %151, %146, %141, %136
%167 = load i32, i32* %4
%168 = add nsw i32 %167, 1
store i32 %168, i32* %4
br label %169
169: ; preds = %166, %161
%170 = load i32*, i32** %2
%171 = getelementptr inbounds i32, i32* %170, i64 5
%172 = load i32, i32* %171
%173 = icmp eq i32 %172, 1
br i1 %173, label %199, label %174
174: ; preds = %169
%175 = load i32*, i32** %2
%176 = getelementptr inbounds i32, i32* %175, i64 5
%177 = load i32, i32* %176
%178 = icmp eq i32 %177, 3
br i1 %178, label %199, label %179
179: ; preds = %174
%180 = load i32*, i32** %2
%181 = getelementptr inbounds i32, i32* %180, i64 5
%182 = load i32, i32* %181
%183 = icmp eq i32 %182, 5
br i1 %183, label %199, label %184
184: ; preds = %179
%185 = load i32*, i32** %2
%186 = getelementptr inbounds i32, i32* %185, i64 5
%187 = load i32, i32* %186
%188 = icmp eq i32 %187, 7
br i1 %188, label %199, label %189
189: ; preds = %184
%190 = load i32*, i32** %2
%191 = getelementptr inbounds i32, i32* %190, i64 5
%192 = load i32, i32* %191
%193 = icmp eq i32 %192, 9
br i1 %193, label %199, label %194
194: ; preds = %189
%195 = load i32*, i32** %2
%196 = getelementptr inbounds i32, i32* %195, i64 5
%197 = load i32, i32* %196
%198 = icmp eq i32 %197, 11
br i1 %198, label %199, label %202
199: ; preds = %194, %189, %184, %179, %174, %169
%200 = load i32, i32* %4
%201 = add nsw i32 %200, 1
store i32 %201, i32* %4
br label %211
202: ; preds = %194
%203 = load i32*, i32** %2
%204 = getelementptr inbounds i32, i32* %203, i64 5
%205 = load i32, i32* %204
%206 = icmp eq i32 %205, 42
br i1 %206, label %207, label %210
207: ; preds = %202
%208 = load i32, i32* %4
%209 = add nsw i32 %208, 10
store i32 %209, i32* %4
br label %210
210: ; preds = %207, %202
br label %211
211: ; preds = %210, %199
%212 = load i32, i32* %4
%213 = icmp eq i32 %212, 6
br i1 %213, label %217, label %214
214: ; preds = %211
%215 = load i32, i32* %4
%216 = icmp eq i32 %215, 16
br i1 %216, label %217, label %219
217: ; preds = %214, %211
%218 = call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str, i64 0, i64 0))
br label %251
219: ; preds = %214
%220 = load i32, i32* %4
%221 = icmp eq i32 %220, 15
br i1 %221, label %222, label %224
222: ; preds = %219
%223 = call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.1, i64 0, i64 0))
br label %250
224: ; preds = %219
%225 = load i32, i32* %4
%226 = icmp eq i32 %225, 5
br i1 %226, label %227, label %229
227: ; preds = %224
%228 = call i32 @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.2, i64 0, i64 0))
br label %249
229: ; preds = %224
%230 = load i32, i32* %4
%231 = icmp eq i32 %230, 14
br i1 %231, label %232, label %234
232: ; preds = %229
%233 = call i32 @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.3, i64 0, i64 0))
br label %248
234: ; preds = %229
%235 = load i32, i32* %4
%236 = icmp eq i32 %235, 4
br i1 %236, label %237, label %239
237: ; preds = %234
%238 = call i32 @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.4, i64 0, i64 0))
br label %247
239: ; preds = %234
%240 = load i32, i32* %4
%241 = icmp eq i32 %240, 13
br i1 %241, label %242, label %244
242: ; preds = %239
%243 = call i32 @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str.5, i64 0, i64 0))
br label %246
244: ; preds = %239
%245 = call i32 @printf(i8* getelementptr inbounds ([25 x i8], [25 x i8]* @.str.6, i64 0, i64 0))
br label %246
246: ; preds = %244, %242
br label %247
247: ; preds = %246, %237
br label %248
248: ; preds = %247, %232
br label %249
249: ; preds = %248, %227
br label %250
250: ; preds = %249, %222
br label %251
251: ; preds = %250, %217
ret void
}

LLVM IR (-O2):
@str = [24 x i8] c"\0AYou don't win anything\00"
@str.7 = [15 x i8] c"\0ACinema Ticket\00"
@str.8 = [11 x i8] c"\0ANight Out\00"
@str.9 = [14 x i8] c"\0AWeekend Away\00"
@str.10 = [9 x i8] c"\0AHoliday\00"
@str.11 = [9 x i8] c"\0ANew Car\00"
@str.12 = [9 x i8] c"\0AJackpot\00"
@switch.table.winner_check = [11 x i32] [i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1, i32 0, i32 1]
@reltable.winner_check = [12 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([11 x i8]* @str.8 to i64), i64 ptrtoint ([12 x i32]* @reltable.winner_check to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @str.10 to i64), i64 ptrtoint ([12 x i32]* @reltable.winner_check to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @str.12 to i64), i64 ptrtoint ([12 x i32]* @reltable.winner_check to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([24 x i8]* @str to i64), i64 ptrtoint ([12 x i32]* @reltable.winner_check to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([24 x i8]* @str to i64), i64 ptrtoint ([12 x i32]* @reltable.winner_check to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([24 x i8]* @str to i64), i64 ptrtoint ([12 x i32]* @reltable.winner_check to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([24 x i8]* @str to i64), i64 ptrtoint ([12 x i32]* @reltable.winner_check to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([24 x i8]* @str to i64), i64 ptrtoint ([12 x i32]* @reltable.winner_check to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([24 x i8]* @str to i64), i64 ptrtoint ([12 x i32]* @reltable.winner_check to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([15 x i8]* @str.7 to i64), i64 ptrtoint ([12 x i32]* @reltable.winner_check to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([14 x i8]* @str.9 to i64), i64 ptrtoint ([12 x i32]* @reltable.winner_check to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([9 x i8]* @str.11 to i64), i64 ptrtoint ([12 x i32]* @reltable.winner_check to i64)) to i32)]
define void @winner_check(i32* nocapture %0) {
%2 = load i32, i32* %0
%3 = add i32 %2, -1
%4 = icmp ult i32 %3, 11
br i1 %4, label %5, label %9
5: ; preds = %1
%6 = sext i32 %3 to i64
%7 = getelementptr inbounds [11 x i32], [11 x i32]* @switch.table.winner_check, i64 0, i64 %6
%8 = load i32, i32* %7
br label %9
9: ; preds = %5, %1
%10 = phi i32 [ 0, %1 ], [ %8, %5 ]
%11 = getelementptr inbounds i32, i32* %0, i64 1
%12 = load i32, i32* %11
switch i32 %12, label %15 [
i32 1, label %13
i32 3, label %13
i32 5, label %13
i32 7, label %13
i32 9, label %13
i32 11, label %13
]
13: ; preds = %9, %9, %9, %9, %9, %9
%14 = add nuw nsw i32 %10, 1
br label %15
15: ; preds = %9, %13
%16 = phi i32 [ %14, %13 ], [ %10, %9 ]
%17 = getelementptr inbounds i32, i32* %0, i64 2
%18 = load i32, i32* %17
switch i32 %18, label %21 [
i32 1, label %19
i32 3, label %19
i32 5, label %19
i32 7, label %19
i32 9, label %19
i32 11, label %19
]
19: ; preds = %15, %15, %15, %15, %15, %15
%20 = add nuw nsw i32 %16, 1
br label %21
21: ; preds = %15, %19
%22 = phi i32 [ %20, %19 ], [ %16, %15 ]
%23 = getelementptr inbounds i32, i32* %0, i64 3
%24 = load i32, i32* %23
switch i32 %24, label %27 [
i32 1, label %25
i32 3, label %25
i32 5, label %25
i32 7, label %25
i32 9, label %25
i32 11, label %25
]
25: ; preds = %21, %21, %21, %21, %21, %21
%26 = add nuw nsw i32 %22, 1
br label %27
27: ; preds = %21, %25
%28 = phi i32 [ %26, %25 ], [ %22, %21 ]
%29 = getelementptr inbounds i32, i32* %0, i64 4
%30 = load i32, i32* %29
switch i32 %30, label %33 [
i32 1, label %31
i32 3, label %31
i32 5, label %31
i32 7, label %31
i32 9, label %31
i32 11, label %31
]
31: ; preds = %27, %27, %27, %27, %27, %27
%32 = add nuw nsw i32 %28, 1
br label %33
33: ; preds = %27, %31
%34 = phi i32 [ %32, %31 ], [ %28, %27 ]
%35 = getelementptr inbounds i32, i32* %0, i64 5
%36 = load i32, i32* %35
switch i32 %36, label %41 [
i32 1, label %37
i32 3, label %37
i32 5, label %37
i32 7, label %37
i32 9, label %37
i32 11, label %37
i32 42, label %39
]
37: ; preds = %33, %33, %33, %33, %33, %33
%38 = add nuw nsw i32 %34, 1
br label %41
39: ; preds = %33
%40 = add nuw nsw i32 %34, 10
br label %41
41: ; preds = %33, %39, %37
%42 = phi i32 [ %38, %37 ], [ %40, %39 ], [ %34, %33 ]
%43 = add i32 %42, -4
%44 = icmp ult i32 %43, 12
br i1 %44, label %45, label %49
45: ; preds = %41
%46 = sext i32 %43 to i64
%47 = shl i64 %46, 2
%48 = call i8* @llvm.load.relative.i64(i8* bitcast ([12 x i32]* @reltable.winner_check to i8*), i64 %47)
br label %49
49: ; preds = %41, %45
%50 = phi i8* [ %48, %45 ], [ getelementptr inbounds ([24 x i8], [24 x i8]* @str, i64 0, i64 0), %41 ]
%51 = tail call i32 @puts(i8* dereferenceable(1) %50)
ret void
}