#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 scoreplay(char play[]) {
  if (1)
    printf("enters scoreplay\n");
  int score = 0, i;
  for (i = 0; i < 7; i++) {
    if (play[i] == 'Q' || play[i] == 'Z')
      score += 10;
    else if (play[i] == 'J' || play[i] == 'X')
      score += 8;
    else if (play[i] == 'K')
      score += 5;
    else if (play[i] == 'F' || play[i] == 'H' || play[i] == 'V' ||
             play[i] == 'W' || play[i] == 'Y')
      score += 4;
    else if (play[i] == 'B' || play[i] == 'C' || play[i] == 'M' ||
             play[i] == 'P')
      score += 3;
    else if (play[i] == 'D' || play[i] == 'G')
      score += 2;
    else if (play[i] == 'E' || play[i] == 'A' || play[i] == 'I' ||
             play[i] == 'O' || play[i] == 'N' || play[i] == 'R' ||
             play[i] == 'T' || play[i] == 'L' || play[i] == 'S' ||
             play[i] == 'U')
      score += 1;
  }
  if (1)
    printf("exits scoreplay\n");
  return score;
}


x86 assembly (clang, -O0):
<scoreplay>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
lea    0xedd(%rip),%rdi
call   1030 <printf@plt>
movl   $0x0,-0xc(%rbp)
movl   $0x0,-0x10(%rbp)
cmpl   $0x7,-0x10(%rbp)
jge    13f0 <scoreplay+0x2e0>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x51,%eax
je     116a <scoreplay+0x5a>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x5a,%eax
jne    1178 <scoreplay+0x68>
mov    -0xc(%rbp),%eax
add    $0xa,%eax
mov    %eax,-0xc(%rbp)
jmp    13dd <scoreplay+0x2cd>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4a,%eax
je     11a2 <scoreplay+0x92>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x58,%eax
jne    11b0 <scoreplay+0xa0>
mov    -0xc(%rbp),%eax
add    $0x8,%eax
mov    %eax,-0xc(%rbp)
jmp    13d8 <scoreplay+0x2c8>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4b,%eax
jne    11d3 <scoreplay+0xc3>
mov    -0xc(%rbp),%eax
add    $0x5,%eax
mov    %eax,-0xc(%rbp)
jmp    13d3 <scoreplay+0x2c3>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x46,%eax
je     123c <scoreplay+0x12c>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x48,%eax
je     123c <scoreplay+0x12c>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x56,%eax
je     123c <scoreplay+0x12c>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x57,%eax
je     123c <scoreplay+0x12c>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x59,%eax
jne    124a <scoreplay+0x13a>
mov    -0xc(%rbp),%eax
add    $0x4,%eax
mov    %eax,-0xc(%rbp)
jmp    13ce <scoreplay+0x2be>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x42,%eax
je     129e <scoreplay+0x18e>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x43,%eax
je     129e <scoreplay+0x18e>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4d,%eax
je     129e <scoreplay+0x18e>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x50,%eax
jne    12ac <scoreplay+0x19c>
mov    -0xc(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0xc(%rbp)
jmp    13c9 <scoreplay+0x2b9>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x44,%eax
je     12d6 <scoreplay+0x1c6>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x47,%eax
jne    12e4 <scoreplay+0x1d4>
mov    -0xc(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0xc(%rbp)
jmp    13c4 <scoreplay+0x2b4>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x45,%eax
je     13b6 <scoreplay+0x2a6>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x41,%eax
je     13b6 <scoreplay+0x2a6>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x49,%eax
je     13b6 <scoreplay+0x2a6>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4f,%eax
je     13b6 <scoreplay+0x2a6>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4e,%eax
je     13b6 <scoreplay+0x2a6>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x52,%eax
je     13b6 <scoreplay+0x2a6>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x54,%eax
je     13b6 <scoreplay+0x2a6>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x4c,%eax
je     13b6 <scoreplay+0x2a6>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x53,%eax
je     13b6 <scoreplay+0x2a6>
mov    -0x8(%rbp),%rax
movslq -0x10(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x55,%eax
jne    13bf <scoreplay+0x2af>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    13c4 <scoreplay+0x2b4>
jmp    13c9 <scoreplay+0x2b9>
jmp    13ce <scoreplay+0x2be>
jmp    13d3 <scoreplay+0x2c3>
jmp    13d8 <scoreplay+0x2c8>
jmp    13dd <scoreplay+0x2cd>
jmp    13e2 <scoreplay+0x2d2>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1136 <scoreplay+0x26>
lea    0xc1b(%rip),%rdi
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<scoreplay>:
push   %r14
push   %rbx
push   %rax
mov    %rdi,%r14
lea    0x11ba(%rip),%rdi
call   1030 <puts@plt>
mov    (%r14),%al
add    $0xbf,%al
xor    %ebx,%ebx
cmp    $0x19,%al
ja     113c <scoreplay+0x2c>
movsbq %al,%rax
lea    0x1137(%rip),%rcx
mov    (%rcx,%rax,4),%ebx
mov    0x1(%r14),%al
add    $0xbf,%al
cmp    $0x19,%al
ja     117a <scoreplay+0x6a>
movzbl %al,%eax
lea    0xeb0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
add    $0x1,%ebx
jmp    117a <scoreplay+0x6a>
add    $0x4,%ebx
jmp    117a <scoreplay+0x6a>
add    $0x3,%ebx
jmp    117a <scoreplay+0x6a>
add    $0x2,%ebx
jmp    117a <scoreplay+0x6a>
add    $0x8,%ebx
jmp    117a <scoreplay+0x6a>
add    $0xa,%ebx
jmp    117a <scoreplay+0x6a>
add    $0x5,%ebx
mov    0x2(%r14),%al
add    $0xbf,%al
cmp    $0x19,%al
ja     11b8 <scoreplay+0xa8>
movzbl %al,%eax
lea    0xeda(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
add    $0x1,%ebx
jmp    11b8 <scoreplay+0xa8>
add    $0x4,%ebx
jmp    11b8 <scoreplay+0xa8>
add    $0x3,%ebx
jmp    11b8 <scoreplay+0xa8>
add    $0x2,%ebx
jmp    11b8 <scoreplay+0xa8>
add    $0x8,%ebx
jmp    11b8 <scoreplay+0xa8>
add    $0xa,%ebx
jmp    11b8 <scoreplay+0xa8>
add    $0x5,%ebx
mov    0x3(%r14),%al
add    $0xbf,%al
cmp    $0x19,%al
ja     11f6 <scoreplay+0xe6>
movzbl %al,%eax
lea    0xf04(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
add    $0x1,%ebx
jmp    11f6 <scoreplay+0xe6>
add    $0x4,%ebx
jmp    11f6 <scoreplay+0xe6>
add    $0x3,%ebx
jmp    11f6 <scoreplay+0xe6>
add    $0x2,%ebx
jmp    11f6 <scoreplay+0xe6>
add    $0x8,%ebx
jmp    11f6 <scoreplay+0xe6>
add    $0xa,%ebx
jmp    11f6 <scoreplay+0xe6>
add    $0x5,%ebx
mov    0x4(%r14),%al
add    $0xbf,%al
cmp    $0x19,%al
ja     1234 <scoreplay+0x124>
movzbl %al,%eax
lea    0xf2e(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
add    $0x1,%ebx
jmp    1234 <scoreplay+0x124>
add    $0x4,%ebx
jmp    1234 <scoreplay+0x124>
add    $0x3,%ebx
jmp    1234 <scoreplay+0x124>
add    $0x2,%ebx
jmp    1234 <scoreplay+0x124>
add    $0x8,%ebx
jmp    1234 <scoreplay+0x124>
add    $0xa,%ebx
jmp    1234 <scoreplay+0x124>
add    $0x5,%ebx
mov    0x5(%r14),%al
add    $0xbf,%al
cmp    $0x19,%al
ja     1272 <scoreplay+0x162>
movzbl %al,%eax
lea    0xf58(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
add    $0x1,%ebx
jmp    1272 <scoreplay+0x162>
add    $0x4,%ebx
jmp    1272 <scoreplay+0x162>
add    $0x3,%ebx
jmp    1272 <scoreplay+0x162>
add    $0x2,%ebx
jmp    1272 <scoreplay+0x162>
add    $0x8,%ebx
jmp    1272 <scoreplay+0x162>
add    $0xa,%ebx
jmp    1272 <scoreplay+0x162>
add    $0x5,%ebx
mov    0x6(%r14),%al
add    $0xbf,%al
cmp    $0x19,%al
ja     12b0 <scoreplay+0x1a0>
movzbl %al,%eax
lea    0xf82(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
add    $0x1,%ebx
jmp    12b0 <scoreplay+0x1a0>
add    $0x4,%ebx
jmp    12b0 <scoreplay+0x1a0>
add    $0x3,%ebx
jmp    12b0 <scoreplay+0x1a0>
add    $0x2,%ebx
jmp    12b0 <scoreplay+0x1a0>
add    $0x8,%ebx
jmp    12b0 <scoreplay+0x1a0>
add    $0xa,%ebx
jmp    12b0 <scoreplay+0x1a0>
add    $0x5,%ebx
lea    0x1032(%rip),%rdi
call   1030 <puts@plt>
mov    %ebx,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret

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

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