#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 *, ...);
int badhand(char hand[]) {
  if (1)
    printf("enters badhand\n");
  int i, j, k, count = 0, frequency[26][3] = {{0}};
  for (i = 0; i < 26; i++) {
    frequency[i][0] = i + 'A';
    if (frequency[i][0] == 'J' || frequency[i][0] == 'K' ||
        frequency[i][0] == 'Q' || frequency[i][0] == 'X' ||
        frequency[i][0] == 'Z')
      frequency[i][1] = 1;
    else if (frequency[i][0] == 'B' || frequency[i][0] == 'C' ||
             frequency[i][0] == 'F' || frequency[i][0] == 'H' ||
             frequency[i][0] == 'M' || frequency[i][0] == 'P' ||
             frequency[i][0] == 'V' || frequency[i][0] == 'W' ||
             frequency[i][0] == 'Y')
      frequency[i][1] = 2;
    else if (frequency[i][0] == 'G')
      frequency[i][1] = 3;
    else if (frequency[i][0] == 'D' || frequency[i][0] == 'L' ||
             frequency[i][0] == 'S' || frequency[i][0] == 'U')
      frequency[i][1] = 4;
    else if (frequency[i][0] == 'N' || frequency[i][0] == 'R' ||
             frequency[i][0] == 'T')
      frequency[i][1] = 6;
    else if (frequency[i][0] == 'O')
      frequency[i][1] = 8;
    else if (frequency[i][0] == 'A' || frequency[i][0] == 'I')
      frequency[i][1] = 9;
    else if (frequency[i][0] == 'E')
      frequency[i][1] = 12;
  }
  for (i = 0; i < 26; i++) {
    for (j = 0; j < 7; j++) {
      if (frequency[i][0] == hand[j])
        frequency[i][2]++;
      if (frequency[i][2] > frequency[i][1])
        return 1;
    }
  }
  if (1) {
    for (i = 0; i < 26; i++)
      printf("%c %d %d\n", frequency[i][0], frequency[i][1], frequency[i][2]);
  }
  return 0;
}


x86 assembly (clang, -O0):
<badhand>:
push   %rbp
mov    %rsp,%rbp
sub    $0x160,%rsp
mov    %rdi,-0x10(%rbp)
lea    0xeca(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x20(%rbp)
lea    -0x160(%rbp),%rdi
xor    %esi,%esi
mov    $0x138,%edx
call   1040 <memset@plt>
movl   $0x0,-0x14(%rbp)
cmpl   $0x1a,-0x14(%rbp)
jge    1561 <badhand+0x441>
mov    -0x14(%rbp),%ecx
add    $0x41,%ecx
movslq -0x14(%rbp),%rdx
lea    -0x160(%rbp),%rax
imul   $0xc,%rdx,%rdx
add    %rdx,%rax
mov    %ecx,(%rax)
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x4a,(%rax)
je     1209 <badhand+0xe9>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x4b,(%rax)
je     1209 <badhand+0xe9>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x51,(%rax)
je     1209 <badhand+0xe9>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x58,(%rax)
je     1209 <badhand+0xe9>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x5a,(%rax)
jne    1227 <badhand+0x107>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movl   $0x1,0x4(%rax)
jmp    154e <badhand+0x42e>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x42,(%rax)
je     131a <badhand+0x1fa>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x43,(%rax)
je     131a <badhand+0x1fa>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x46,(%rax)
je     131a <badhand+0x1fa>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x48,(%rax)
je     131a <badhand+0x1fa>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x4d,(%rax)
je     131a <badhand+0x1fa>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x50,(%rax)
je     131a <badhand+0x1fa>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x56,(%rax)
je     131a <badhand+0x1fa>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x57,(%rax)
je     131a <badhand+0x1fa>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x59,(%rax)
jne    1338 <badhand+0x218>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movl   $0x2,0x4(%rax)
jmp    1549 <badhand+0x429>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x47,(%rax)
jne    1371 <badhand+0x251>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movl   $0x3,0x4(%rax)
jmp    1544 <badhand+0x424>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x44,(%rax)
je     13dd <badhand+0x2bd>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x4c,(%rax)
je     13dd <badhand+0x2bd>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x53,(%rax)
je     13dd <badhand+0x2bd>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x55,(%rax)
jne    13fb <badhand+0x2db>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movl   $0x4,0x4(%rax)
jmp    153f <badhand+0x41f>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x4e,(%rax)
je     144c <badhand+0x32c>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x52,(%rax)
je     144c <badhand+0x32c>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x54,(%rax)
jne    146a <badhand+0x34a>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movl   $0x6,0x4(%rax)
jmp    153a <badhand+0x41a>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x4f,(%rax)
jne    14a3 <badhand+0x383>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movl   $0x8,0x4(%rax)
jmp    1535 <badhand+0x415>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x41,(%rax)
je     14d9 <badhand+0x3b9>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x49,(%rax)
jne    14f7 <badhand+0x3d7>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movl   $0x9,0x4(%rax)
jmp    1530 <badhand+0x410>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
cmpl   $0x45,(%rax)
jne    152b <badhand+0x40b>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movl   $0xc,0x4(%rax)
jmp    1530 <badhand+0x410>
jmp    1535 <badhand+0x415>
jmp    153a <badhand+0x41a>
jmp    153f <badhand+0x41f>
jmp    1544 <badhand+0x424>
jmp    1549 <badhand+0x429>
jmp    154e <badhand+0x42e>
jmp    1553 <badhand+0x433>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    115e <badhand+0x3e>
movl   $0x0,-0x14(%rbp)
cmpl   $0x1a,-0x14(%rbp)
jge    1628 <badhand+0x508>
movl   $0x0,-0x18(%rbp)
cmpl   $0x7,-0x18(%rbp)
jge    1615 <badhand+0x4f5>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    (%rax),%eax
mov    -0x10(%rbp),%rcx
movslq -0x18(%rbp),%rdx
movsbl (%rcx,%rdx,1),%ecx
cmp    %ecx,%eax
jne    15c6 <badhand+0x4a6>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    0x8(%rax),%ecx
add    $0x1,%ecx
mov    %ecx,0x8(%rax)
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    0x8(%rax),%eax
movslq -0x14(%rbp),%rdx
lea    -0x160(%rbp),%rcx
imul   $0xc,%rdx,%rdx
add    %rdx,%rcx
cmp    0x4(%rcx),%eax
jle    1602 <badhand+0x4e2>
movl   $0x1,-0x4(%rbp)
jmp    169a <badhand+0x57a>
jmp    1607 <badhand+0x4e7>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1579 <badhand+0x459>
jmp    161a <badhand+0x4fa>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1568 <badhand+0x448>
movl   $0x0,-0x14(%rbp)
cmpl   $0x1a,-0x14(%rbp)
jge    1693 <badhand+0x573>
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    (%rax),%esi
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    0x4(%rax),%edx
movslq -0x14(%rbp),%rcx
lea    -0x160(%rbp),%rax
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    0x8(%rax),%ecx
lea    0x992(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    162f <badhand+0x50f>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x160,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<badhand>:
push   %rbp
push   %r14
push   %rbx
sub    $0x140,%rsp
mov    %rdi,%rbx
lea    0xec5(%rip),%rdi
call   1030 <puts@plt>
mov    %rsp,%rdi
mov    $0x138,%edx
xor    %esi,%esi
call   1050 <memset@plt>
lea    0x4(%rsp),%rax
mov    $0xfffffffffffffff8,%rcx
mov    $0x1ffff77,%edx
lea    0xeab(%rip),%rsi
jmp    1194 <badhand+0x64>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x1c(%rsi,%rcx,4),%edi
mov    %edi,(%rax)
add    $0xc,%rax
add    $0x1,%rcx
cmp    $0x12,%rcx
je     11c5 <badhand+0x95>
lea    0x49(%rcx),%edi
mov    %edi,-0x4(%rax)
lea    0x7(%rcx),%rdi
cmp    $0x19,%edi
jae    11a8 <badhand+0x78>
bt     %edi,%edx
jb     1180 <badhand+0x50>
mov    $0x9,%edi
cmp    $0xfffffffffffffff8,%rcx
je     1184 <badhand+0x54>
test   %rcx,%rcx
je     1184 <badhand+0x54>
mov    $0xc,%edi
cmp    $0xfffffffffffffffc,%rcx
je     1184 <badhand+0x54>
jmp    1186 <badhand+0x56>
movsbl (%rbx),%r8d
mov    $0x8,%eax
mov    -0x8(%rsp,%rax,1),%edi
mov    -0x4(%rsp,%rax,1),%esi
xor    %ecx,%ecx
cmp    %r8d,%edi
sete   %cl
add    (%rsp,%rax,1),%ecx
cmp    %esi,%ecx
jg     12a4 <badhand+0x174>
movsbl 0x1(%rbx),%ebp
xor    %edx,%edx
cmp    %ebp,%edi
sete   %dl
add    %edx,%ecx
cmp    %esi,%ecx
jg     12a4 <badhand+0x174>
movsbl 0x2(%rbx),%edx
xor    %ebp,%ebp
cmp    %edx,%edi
sete   %bpl
add    %ebp,%ecx
cmp    %esi,%ecx
jg     12a4 <badhand+0x174>
movsbl 0x3(%rbx),%edx
xor    %ebp,%ebp
cmp    %edx,%edi
sete   %bpl
add    %ebp,%ecx
cmp    %esi,%ecx
jg     12a4 <badhand+0x174>
movsbl 0x4(%rbx),%edx
xor    %ebp,%ebp
cmp    %edx,%edi
sete   %bpl
add    %ebp,%ecx
cmp    %esi,%ecx
jg     12a4 <badhand+0x174>
movsbl 0x5(%rbx),%edx
xor    %ebp,%ebp
cmp    %edx,%edi
sete   %bpl
add    %ebp,%ecx
cmp    %esi,%ecx
jg     12a4 <badhand+0x174>
movsbl 0x6(%rbx),%edx
xor    %ebp,%ebp
cmp    %edx,%edi
sete   %bpl
add    %ebp,%ecx
cmp    %esi,%ecx
jg     12a4 <badhand+0x174>
mov    %ecx,(%rsp,%rax,1)
add    $0xc,%rax
cmp    $0x140,%rax
jne    11ce <badhand+0x9e>
mov    $0x8,%ebx
lea    0xd85(%rip),%r14
xor    %ebp,%ebp
nopl   (%rax)
mov    -0x8(%rsp,%rbx,1),%esi
mov    -0x4(%rsp,%rbx,1),%edx
mov    (%rsp,%rbx,1),%ecx
mov    %r14,%rdi
xor    %eax,%eax
call   1040 <printf@plt>
add    $0xc,%rbx
cmp    $0x140,%rbx
jne    1280 <badhand+0x150>
jmp    12ac <badhand+0x17c>
mov    %ecx,(%rsp,%rax,1)
mov    $0x1,%ebp
mov    %ebp,%eax
add    $0x140,%rsp
pop    %rbx
pop    %r14
pop    %rbp
ret

LLVM IR (-O0):
@.str = [16 x i8] c"enters badhand\0A\00"
@.str.1 = [10 x i8] c"%c %d %d\0A\00"
define i32 @badhand(i8* %0) {
%2 = alloca i32
%3 = alloca i8*
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca [26 x [3 x i32]]
store i8* %0, i8** %3
%9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([16 x i8], [16 x i8]* @.str, i64 0, i64 0))
store i32 0, i32* %7
%10 = bitcast [26 x [3 x i32]]* %8 to i8*
store i32 0, i32* %4
br label %11
11: ; preds = %250, %1
%12 = load i32, i32* %4
%13 = icmp slt i32 %12, 26
br i1 %13, label %14, label %253
14: ; preds = %11
%15 = load i32, i32* %4
%16 = add nsw i32 %15, 65
%17 = load i32, i32* %4
%18 = sext i32 %17 to i64
%19 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %18
%20 = getelementptr inbounds [3 x i32], [3 x i32]* %19, i64 0, i64 0
store i32 %16, i32* %20
%21 = load i32, i32* %4
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %22
%24 = getelementptr inbounds [3 x i32], [3 x i32]* %23, i64 0, i64 0
%25 = load i32, i32* %24
%26 = icmp eq i32 %25, 74
br i1 %26, label %55, label %27
27: ; preds = %14
%28 = load i32, i32* %4
%29 = sext i32 %28 to i64
%30 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %29
%31 = getelementptr inbounds [3 x i32], [3 x i32]* %30, i64 0, i64 0
%32 = load i32, i32* %31
%33 = icmp eq i32 %32, 75
br i1 %33, label %55, label %34
34: ; preds = %27
%35 = load i32, i32* %4
%36 = sext i32 %35 to i64
%37 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %36
%38 = getelementptr inbounds [3 x i32], [3 x i32]* %37, i64 0, i64 0
%39 = load i32, i32* %38
%40 = icmp eq i32 %39, 81
br i1 %40, label %55, label %41
41: ; preds = %34
%42 = load i32, i32* %4
%43 = sext i32 %42 to i64
%44 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %43
%45 = getelementptr inbounds [3 x i32], [3 x i32]* %44, i64 0, i64 0
%46 = load i32, i32* %45
%47 = icmp eq i32 %46, 88
br i1 %47, label %55, label %48
48: ; preds = %41
%49 = load i32, i32* %4
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %50
%52 = getelementptr inbounds [3 x i32], [3 x i32]* %51, i64 0, i64 0
%53 = load i32, i32* %52
%54 = icmp eq i32 %53, 90
br i1 %54, label %55, label %60
55: ; preds = %48, %41, %34, %27, %14
%56 = load i32, i32* %4
%57 = sext i32 %56 to i64
%58 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %57
%59 = getelementptr inbounds [3 x i32], [3 x i32]* %58, i64 0, i64 1
store i32 1, i32* %59
br label %249
60: ; preds = %48
%61 = load i32, i32* %4
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %62
%64 = getelementptr inbounds [3 x i32], [3 x i32]* %63, i64 0, i64 0
%65 = load i32, i32* %64
%66 = icmp eq i32 %65, 66
br i1 %66, label %123, label %67
67: ; preds = %60
%68 = load i32, i32* %4
%69 = sext i32 %68 to i64
%70 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %69
%71 = getelementptr inbounds [3 x i32], [3 x i32]* %70, i64 0, i64 0
%72 = load i32, i32* %71
%73 = icmp eq i32 %72, 67
br i1 %73, label %123, label %74
74: ; preds = %67
%75 = load i32, i32* %4
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %76
%78 = getelementptr inbounds [3 x i32], [3 x i32]* %77, i64 0, i64 0
%79 = load i32, i32* %78
%80 = icmp eq i32 %79, 70
br i1 %80, label %123, label %81
81: ; preds = %74
%82 = load i32, i32* %4
%83 = sext i32 %82 to i64
%84 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %83
%85 = getelementptr inbounds [3 x i32], [3 x i32]* %84, i64 0, i64 0
%86 = load i32, i32* %85
%87 = icmp eq i32 %86, 72
br i1 %87, label %123, label %88
88: ; preds = %81
%89 = load i32, i32* %4
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %90
%92 = getelementptr inbounds [3 x i32], [3 x i32]* %91, i64 0, i64 0
%93 = load i32, i32* %92
%94 = icmp eq i32 %93, 77
br i1 %94, label %123, label %95
95: ; preds = %88
%96 = load i32, i32* %4
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %97
%99 = getelementptr inbounds [3 x i32], [3 x i32]* %98, i64 0, i64 0
%100 = load i32, i32* %99
%101 = icmp eq i32 %100, 80
br i1 %101, label %123, label %102
102: ; preds = %95
%103 = load i32, i32* %4
%104 = sext i32 %103 to i64
%105 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %104
%106 = getelementptr inbounds [3 x i32], [3 x i32]* %105, i64 0, i64 0
%107 = load i32, i32* %106
%108 = icmp eq i32 %107, 86
br i1 %108, label %123, label %109
109: ; preds = %102
%110 = load i32, i32* %4
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %111
%113 = getelementptr inbounds [3 x i32], [3 x i32]* %112, i64 0, i64 0
%114 = load i32, i32* %113
%115 = icmp eq i32 %114, 87
br i1 %115, label %123, label %116
116: ; preds = %109
%117 = load i32, i32* %4
%118 = sext i32 %117 to i64
%119 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %118
%120 = getelementptr inbounds [3 x i32], [3 x i32]* %119, i64 0, i64 0
%121 = load i32, i32* %120
%122 = icmp eq i32 %121, 89
br i1 %122, label %123, label %128
123: ; preds = %116, %109, %102, %95, %88, %81, %74, %67, %60
%124 = load i32, i32* %4
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %125
%127 = getelementptr inbounds [3 x i32], [3 x i32]* %126, i64 0, i64 1
store i32 2, i32* %127
br label %248
128: ; preds = %116
%129 = load i32, i32* %4
%130 = sext i32 %129 to i64
%131 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %130
%132 = getelementptr inbounds [3 x i32], [3 x i32]* %131, i64 0, i64 0
%133 = load i32, i32* %132
%134 = icmp eq i32 %133, 71
br i1 %134, label %135, label %140
135: ; preds = %128
%136 = load i32, i32* %4
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %137
%139 = getelementptr inbounds [3 x i32], [3 x i32]* %138, i64 0, i64 1
store i32 3, i32* %139
br label %247
140: ; preds = %128
%141 = load i32, i32* %4
%142 = sext i32 %141 to i64
%143 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %142
%144 = getelementptr inbounds [3 x i32], [3 x i32]* %143, i64 0, i64 0
%145 = load i32, i32* %144
%146 = icmp eq i32 %145, 68
br i1 %146, label %168, label %147
147: ; preds = %140
%148 = load i32, i32* %4
%149 = sext i32 %148 to i64
%150 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %149
%151 = getelementptr inbounds [3 x i32], [3 x i32]* %150, i64 0, i64 0
%152 = load i32, i32* %151
%153 = icmp eq i32 %152, 76
br i1 %153, label %168, label %154
154: ; preds = %147
%155 = load i32, i32* %4
%156 = sext i32 %155 to i64
%157 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %156
%158 = getelementptr inbounds [3 x i32], [3 x i32]* %157, i64 0, i64 0
%159 = load i32, i32* %158
%160 = icmp eq i32 %159, 83
br i1 %160, label %168, label %161
161: ; preds = %154
%162 = load i32, i32* %4
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %163
%165 = getelementptr inbounds [3 x i32], [3 x i32]* %164, i64 0, i64 0
%166 = load i32, i32* %165
%167 = icmp eq i32 %166, 85
br i1 %167, label %168, label %173
168: ; preds = %161, %154, %147, %140
%169 = load i32, i32* %4
%170 = sext i32 %169 to i64
%171 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %170
%172 = getelementptr inbounds [3 x i32], [3 x i32]* %171, i64 0, i64 1
store i32 4, i32* %172
br label %246
173: ; preds = %161
%174 = load i32, i32* %4
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %175
%177 = getelementptr inbounds [3 x i32], [3 x i32]* %176, i64 0, i64 0
%178 = load i32, i32* %177
%179 = icmp eq i32 %178, 78
br i1 %179, label %194, label %180
180: ; preds = %173
%181 = load i32, i32* %4
%182 = sext i32 %181 to i64
%183 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %182
%184 = getelementptr inbounds [3 x i32], [3 x i32]* %183, i64 0, i64 0
%185 = load i32, i32* %184
%186 = icmp eq i32 %185, 82
br i1 %186, label %194, label %187
187: ; preds = %180
%188 = load i32, i32* %4
%189 = sext i32 %188 to i64
%190 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %189
%191 = getelementptr inbounds [3 x i32], [3 x i32]* %190, i64 0, i64 0
%192 = load i32, i32* %191
%193 = icmp eq i32 %192, 84
br i1 %193, label %194, label %199
194: ; preds = %187, %180, %173
%195 = load i32, i32* %4
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %196
%198 = getelementptr inbounds [3 x i32], [3 x i32]* %197, i64 0, i64 1
store i32 6, i32* %198
br label %245
199: ; preds = %187
%200 = load i32, i32* %4
%201 = sext i32 %200 to i64
%202 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %201
%203 = getelementptr inbounds [3 x i32], [3 x i32]* %202, i64 0, i64 0
%204 = load i32, i32* %203
%205 = icmp eq i32 %204, 79
br i1 %205, label %206, label %211
206: ; preds = %199
%207 = load i32, i32* %4
%208 = sext i32 %207 to i64
%209 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %208
%210 = getelementptr inbounds [3 x i32], [3 x i32]* %209, i64 0, i64 1
store i32 8, i32* %210
br label %244
211: ; preds = %199
%212 = load i32, i32* %4
%213 = sext i32 %212 to i64
%214 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %213
%215 = getelementptr inbounds [3 x i32], [3 x i32]* %214, i64 0, i64 0
%216 = load i32, i32* %215
%217 = icmp eq i32 %216, 65
br i1 %217, label %225, label %218
218: ; preds = %211
%219 = load i32, i32* %4
%220 = sext i32 %219 to i64
%221 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %220
%222 = getelementptr inbounds [3 x i32], [3 x i32]* %221, i64 0, i64 0
%223 = load i32, i32* %222
%224 = icmp eq i32 %223, 73
br i1 %224, label %225, label %230
225: ; preds = %218, %211
%226 = load i32, i32* %4
%227 = sext i32 %226 to i64
%228 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %227
%229 = getelementptr inbounds [3 x i32], [3 x i32]* %228, i64 0, i64 1
store i32 9, i32* %229
br label %243
230: ; preds = %218
%231 = load i32, i32* %4
%232 = sext i32 %231 to i64
%233 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %232
%234 = getelementptr inbounds [3 x i32], [3 x i32]* %233, i64 0, i64 0
%235 = load i32, i32* %234
%236 = icmp eq i32 %235, 69
br i1 %236, label %237, label %242
237: ; preds = %230
%238 = load i32, i32* %4
%239 = sext i32 %238 to i64
%240 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %239
%241 = getelementptr inbounds [3 x i32], [3 x i32]* %240, i64 0, i64 1
store i32 12, i32* %241
br label %242
242: ; preds = %237, %230
br label %243
243: ; preds = %242, %225
br label %244
244: ; preds = %243, %206
br label %245
245: ; preds = %244, %194
br label %246
246: ; preds = %245, %168
br label %247
247: ; preds = %246, %135
br label %248
248: ; preds = %247, %123
br label %249
249: ; preds = %248, %55
br label %250
250: ; preds = %249
%251 = load i32, i32* %4
%252 = add nsw i32 %251, 1
store i32 %252, i32* %4
br label %11
253: ; preds = %11
store i32 0, i32* %4
br label %254
254: ; preds = %299, %253
%255 = load i32, i32* %4
%256 = icmp slt i32 %255, 26
br i1 %256, label %257, label %302
257: ; preds = %254
store i32 0, i32* %5
br label %258
258: ; preds = %295, %257
%259 = load i32, i32* %5
%260 = icmp slt i32 %259, 7
br i1 %260, label %261, label %298
261: ; preds = %258
%262 = load i32, i32* %4
%263 = sext i32 %262 to i64
%264 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %263
%265 = getelementptr inbounds [3 x i32], [3 x i32]* %264, i64 0, i64 0
%266 = load i32, i32* %265
%267 = load i8*, i8** %3
%268 = load i32, i32* %5
%269 = sext i32 %268 to i64
%270 = getelementptr inbounds i8, i8* %267, i64 %269
%271 = load i8, i8* %270
%272 = sext i8 %271 to i32
%273 = icmp eq i32 %266, %272
br i1 %273, label %274, label %281
274: ; preds = %261
%275 = load i32, i32* %4
%276 = sext i32 %275 to i64
%277 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %276
%278 = getelementptr inbounds [3 x i32], [3 x i32]* %277, i64 0, i64 2
%279 = load i32, i32* %278
%280 = add nsw i32 %279, 1
store i32 %280, i32* %278
br label %281
281: ; preds = %274, %261
%282 = load i32, i32* %4
%283 = sext i32 %282 to i64
%284 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %283
%285 = getelementptr inbounds [3 x i32], [3 x i32]* %284, i64 0, i64 2
%286 = load i32, i32* %285
%287 = load i32, i32* %4
%288 = sext i32 %287 to i64
%289 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %288
%290 = getelementptr inbounds [3 x i32], [3 x i32]* %289, i64 0, i64 1
%291 = load i32, i32* %290
%292 = icmp sgt i32 %286, %291
br i1 %292, label %293, label %294
293: ; preds = %281
store i32 1, i32* %2
br label %327
294: ; preds = %281
br label %295
295: ; preds = %294
%296 = load i32, i32* %5
%297 = add nsw i32 %296, 1
store i32 %297, i32* %5
br label %258
298: ; preds = %258
br label %299
299: ; preds = %298
%300 = load i32, i32* %4
%301 = add nsw i32 %300, 1
store i32 %301, i32* %4
br label %254
302: ; preds = %254
store i32 0, i32* %4
br label %303
303: ; preds = %323, %302
%304 = load i32, i32* %4
%305 = icmp slt i32 %304, 26
br i1 %305, label %306, label %326
306: ; preds = %303
%307 = load i32, i32* %4
%308 = sext i32 %307 to i64
%309 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %308
%310 = getelementptr inbounds [3 x i32], [3 x i32]* %309, i64 0, i64 0
%311 = load i32, i32* %310
%312 = load i32, i32* %4
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %313
%315 = getelementptr inbounds [3 x i32], [3 x i32]* %314, i64 0, i64 1
%316 = load i32, i32* %315
%317 = load i32, i32* %4
%318 = sext i32 %317 to i64
%319 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %8, i64 0, i64 %318
%320 = getelementptr inbounds [3 x i32], [3 x i32]* %319, i64 0, i64 2
%321 = load i32, i32* %320
%322 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.1, i64 0, i64 0), i32 %311, i32 %316, i32 %321)
br label %323
323: ; preds = %306
%324 = load i32, i32* %4
%325 = add nsw i32 %324, 1
store i32 %325, i32* %4
br label %303
326: ; preds = %303
store i32 0, i32* %2
br label %327
327: ; preds = %326, %293
%328 = load i32, i32* %2
ret i32 %328
}

LLVM IR (-O2):
@.str.1 = [10 x i8] c"%c %d %d\0A\00"
@str = [15 x i8] c"enters badhand\00"
@switch.table.badhand = [25 x i32] [i32 2, i32 2, i32 4, i32 1, i32 2, i32 3, i32 2, i32 1, i32 1, i32 1, i32 4, i32 2, i32 6, i32 8, i32 2, i32 1, i32 6, i32 4, i32 6, i32 4, i32 2, i32 2, i32 1, i32 2, i32 1]
define i32 @badhand(i8* nocapture %0) {
%2 = alloca [26 x [3 x i32]]
%3 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([15 x i8], [15 x i8]* @str, i64 0, i64 0))
%4 = bitcast [26 x [3 x i32]]* %2 to i8*
br label %5
5: ; preds = %1, %30
%6 = phi i64 [ 0, %1 ], [ %31, %30 ]
%7 = add nuw nsw i64 %6, 65
%8 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %2, i64 0, i64 %6, i64 0
%9 = trunc i64 %7 to i32
store i32 %9, i32* %8
%10 = trunc i64 %6 to i32
%11 = add i32 %10, -1
%12 = icmp ult i32 %11, 25
br i1 %12, label %19, label %13
13: ; preds = %19, %5
%14 = icmp eq i64 %6, 0
%15 = icmp eq i64 %7, 73
%16 = select i1 %14, i1 true, i1 %15
br i1 %16, label %27, label %17
17: ; preds = %13
%18 = icmp eq i64 %7, 69
br i1 %18, label %27, label %30
19: ; preds = %5
%20 = lshr i32 33554295, %11
%21 = and i32 %20, 1
%22 = icmp eq i32 %21, 0
br i1 %22, label %13, label %23
23: ; preds = %19
%24 = sext i32 %11 to i64
%25 = getelementptr inbounds [25 x i32], [25 x i32]* @switch.table.badhand, i64 0, i64 %24
%26 = load i32, i32* %25
br label %27
27: ; preds = %23, %17, %13
%28 = phi i32 [ 9, %13 ], [ 12, %17 ], [ %26, %23 ]
%29 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %2, i64 0, i64 %6, i64 1
store i32 %28, i32* %29
br label %30
30: ; preds = %27, %17
%31 = add nuw nsw i64 %6, 1
%32 = icmp eq i64 %31, 26
br i1 %32, label %33, label %5
33: ; preds = %30
%34 = load i8, i8* %0
%35 = sext i8 %34 to i32
%36 = getelementptr inbounds i8, i8* %0, i64 1
%37 = getelementptr inbounds i8, i8* %0, i64 2
%38 = getelementptr inbounds i8, i8* %0, i64 3
%39 = getelementptr inbounds i8, i8* %0, i64 4
%40 = getelementptr inbounds i8, i8* %0, i64 5
%41 = getelementptr inbounds i8, i8* %0, i64 6
br label %42
42: ; preds = %33, %96
%43 = phi i64 [ 0, %33 ], [ %97, %96 ]
%44 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %2, i64 0, i64 %43, i64 0
%45 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %2, i64 0, i64 %43, i64 1
%46 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %2, i64 0, i64 %43, i64 2
%47 = load i32, i32* %46
%48 = load i32, i32* %44
%49 = icmp eq i32 %48, %35
%50 = zext i1 %49 to i32
%51 = add nsw i32 %47, %50
%52 = load i32, i32* %45
%53 = icmp sgt i32 %51, %52
br i1 %53, label %110, label %54
54: ; preds = %42
%55 = load i8, i8* %36
%56 = sext i8 %55 to i32
%57 = icmp eq i32 %48, %56
%58 = zext i1 %57 to i32
%59 = add nsw i32 %51, %58
%60 = icmp sgt i32 %59, %52
br i1 %60, label %110, label %61
61: ; preds = %54
%62 = load i8, i8* %37
%63 = sext i8 %62 to i32
%64 = icmp eq i32 %48, %63
%65 = zext i1 %64 to i32
%66 = add nsw i32 %59, %65
%67 = icmp sgt i32 %66, %52
br i1 %67, label %110, label %68
68: ; preds = %61
%69 = load i8, i8* %38
%70 = sext i8 %69 to i32
%71 = icmp eq i32 %48, %70
%72 = zext i1 %71 to i32
%73 = add nsw i32 %66, %72
%74 = icmp sgt i32 %73, %52
br i1 %74, label %110, label %75
75: ; preds = %68
%76 = load i8, i8* %39
%77 = sext i8 %76 to i32
%78 = icmp eq i32 %48, %77
%79 = zext i1 %78 to i32
%80 = add nsw i32 %73, %79
%81 = icmp sgt i32 %80, %52
br i1 %81, label %110, label %82
82: ; preds = %75
%83 = load i8, i8* %40
%84 = sext i8 %83 to i32
%85 = icmp eq i32 %48, %84
%86 = zext i1 %85 to i32
%87 = add nsw i32 %80, %86
%88 = icmp sgt i32 %87, %52
br i1 %88, label %110, label %89
89: ; preds = %82
%90 = load i8, i8* %41
%91 = sext i8 %90 to i32
%92 = icmp eq i32 %48, %91
%93 = zext i1 %92 to i32
%94 = add nsw i32 %87, %93
%95 = icmp sgt i32 %94, %52
br i1 %95, label %110, label %96
96: ; preds = %89
store i32 %94, i32* %46
%97 = add nuw nsw i64 %43, 1
%98 = icmp eq i64 %97, 26
br i1 %98, label %99, label %42
99: ; preds = %96, %99
%100 = phi i64 [ %108, %99 ], [ 0, %96 ]
%101 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %2, i64 0, i64 %100, i64 0
%102 = load i32, i32* %101
%103 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %2, i64 0, i64 %100, i64 1
%104 = load i32, i32* %103
%105 = getelementptr inbounds [26 x [3 x i32]], [26 x [3 x i32]]* %2, i64 0, i64 %100, i64 2
%106 = load i32, i32* %105
%107 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([10 x i8], [10 x i8]* @.str.1, i64 0, i64 0), i32 %102, i32 %104, i32 %106)
%108 = add nuw nsw i64 %100, 1
%109 = icmp eq i64 %108, 26
br i1 %109, label %112, label %99
110: ; preds = %89, %82, %75, %68, %61, %54, %42
%111 = phi i32 [ %51, %42 ], [ %59, %54 ], [ %66, %61 ], [ %73, %68 ], [ %80, %75 ], [ %87, %82 ], [ %94, %89 ]
store i32 %111, i32* %46
br label %112
112: ; preds = %99, %110
%113 = phi i32 [ 1, %110 ], [ 0, %99 ]
ret i32 %113
}