#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*/ fprintf(int /*<<< orphan*/, char *, char);
int /*<<< orphan*/ stderr;
int palindrome(char *site, int length) {
  int pal = 1, i = 0, halflength;
  if (length % 2 == 0)
    halflength = length / 2;
  else
    halflength = (length / 2) + 1;
  length--;
  while ((pal == 1) && i < halflength) {
    switch (*(site + i)) {
    case 'a':
      if (*(site + (length - i)) != 't')
        pal = 0;
      break;
    case 'c':
      if (*(site + (length - i)) != 'g')
        pal = 0;
      break;
    case 'g':
      if (*(site + (length - i)) != 'c')
        pal = 0;
      break;
    case 't':
      if (*(site + (length - i)) != 'a')
        pal = 0;
      break;
    case 'y':
      if (*(site + (length - i)) != 'r')
        pal = 0;
      break;
    case 'r':
      if (*(site + (length - i)) != 'y')
        pal = 0;
      break;
    case 'm':
      if (*(site + (length - i)) != 'k')
        pal = 0;
      break;
    case 'k':
      if (*(site + (length - i)) != 'm')
        pal = 0;
      break;
    case 'w':
      if (*(site + (length - i)) != 'w')
        pal = 0;
      break;
    case 's':
      if (*(site + (length - i)) != 's')
        pal = 0;
      break;
    case 'b':
      if (*(site + (length - i)) != 'v')
        pal = 0;
      break;
    case 'd':
      if (*(site + (length - i)) != 'h')
        pal = 0;
      break;
    case 'h':
      if (*(site + (length - i)) != 'd')
        pal = 0;
      break;
    case 'v':
      if (*(site + (length - i)) != 'b')
        pal = 0;
      break;
    case 'n':
      if (*(site + (length - i)) != 'n')
        pal = 0;
      break;
    default:
      fprintf(stderr, "palindrome doesn't like %c! \n", *(site + i));
      break;
    }
    i++;
  }
  return pal;
}


x86 assembly (clang, -O0):
<palindrome>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
movl   $0x1,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
jne    1154 <palindrome+0x44>
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
mov    %eax,-0x18(%rbp)
jmp    1165 <palindrome+0x55>
mov    -0xc(%rbp),%eax
mov    $0x2,%ecx
cltd
idiv   %ecx
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
xor    %eax,%eax
cmpl   $0x1,-0x10(%rbp)
mov    %al,-0x19(%rbp)
jne    1189 <palindrome+0x79>
mov    -0x14(%rbp),%eax
cmp    -0x18(%rbp),%eax
setl   %al
mov    %al,-0x19(%rbp)
mov    -0x19(%rbp),%al
test   $0x1,%al
jne    1199 <palindrome+0x89>
jmp    1434 <palindrome+0x324>
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
add    $0xffffff9f,%eax
mov    %eax,%ecx
mov    %rcx,-0x28(%rbp)
sub    $0x18,%eax
ja     1405 <palindrome+0x2f5>
mov    -0x28(%rbp),%rax
lea    0xe3e(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x74,%eax
je     11ec <palindrome+0xdc>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x67,%eax
je     1212 <palindrome+0x102>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x63,%eax
je     1238 <palindrome+0x128>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
je     125e <palindrome+0x14e>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x72,%eax
je     1284 <palindrome+0x174>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x79,%eax
je     12aa <palindrome+0x19a>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6b,%eax
je     12d0 <palindrome+0x1c0>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6d,%eax
je     12f6 <palindrome+0x1e6>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x77,%eax
je     131c <palindrome+0x20c>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x73,%eax
je     1342 <palindrome+0x232>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x76,%eax
je     1368 <palindrome+0x258>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x68,%eax
je     138e <palindrome+0x27e>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x64,%eax
je     13b4 <palindrome+0x2a4>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x62,%eax
je     13da <palindrome+0x2ca>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    -0x8(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    -0x14(%rbp),%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6e,%eax
je     1400 <palindrome+0x2f0>
movl   $0x0,-0x10(%rbp)
jmp    1426 <palindrome+0x316>
mov    0x2bd4(%rip),%rax
mov    (%rax),%edi
mov    -0x8(%rbp),%rax
movslq -0x14(%rbp),%rcx
lea    0xc47(%rip),%rsi
movsbl (%rax,%rcx,1),%edx
call   1030 <fprintf@plt>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    116e <palindrome+0x5e>
mov    -0x10(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<palindrome>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %esi,%ecx
and    $0x1,%ecx
mov    %esi,%eax
shr    $0x1f,%eax
add    %esi,%eax
sar    %eax
add    %ecx,%eax
test   %eax,%eax
jle    120d <palindrome+0xfd>
mov    %rdi,%r15
mov    %eax,%r12d
movslq %esi,%rax
lea    (%rax,%rdi,1),%rbx
add    $0xffffffffffffffff,%rbx
mov    $0x1,%ebp
lea    0xf14(%rip),%r14
lea    0xea9(%rip),%r13
jmp    117f <palindrome+0x6f>
cmpb   $0x72,(%rbx)
nopl   0x0(%rax)
sete   %al
test   %al,%al
je     1208 <palindrome+0xf8>
add    $0xffffffffffffffff,%rbx
lea    0x1(%rbp),%rcx
cmp    %r12,%rbp
mov    %rcx,%rbp
jae    1208 <palindrome+0xf8>
movsbl -0x1(%r15,%rbp,1),%eax
lea    -0x61(%rax),%ecx
cmp    $0x18,%ecx
ja     11ab <palindrome+0x9b>
movslq 0x0(%r13,%rcx,4),%rcx
add    %r13,%rcx
jmp    *%rcx
cmpb   $0x74,(%rbx)
jmp    1160 <palindrome+0x50>
cmpb   $0x76,(%rbx)
jmp    1160 <palindrome+0x50>
cmpb   $0x67,(%rbx)
jmp    1160 <palindrome+0x50>
cmpb   $0x68,(%rbx)
jmp    1160 <palindrome+0x50>
mov    0x2e2e(%rip),%rcx
mov    (%rcx),%edi
movsbl %al,%edx
mov    %r14,%rsi
call   1030 <fprintf@plt>
mov    $0x1,%al
test   %al,%al
jne    116b <palindrome+0x5b>
jmp    1208 <palindrome+0xf8>
cmpb   $0x63,(%rbx)
jmp    1160 <palindrome+0x50>
cmpb   $0x64,(%rbx)
jmp    1160 <palindrome+0x50>
cmpb   $0x6d,(%rbx)
jmp    1160 <palindrome+0x50>
cmpb   $0x6b,(%rbx)
jmp    1160 <palindrome+0x50>
cmpb   $0x6e,(%rbx)
jmp    1160 <palindrome+0x50>
cmpb   $0x79,(%rbx)
jmp    1160 <palindrome+0x50>
cmpb   $0x73,(%rbx)
jmp    1160 <palindrome+0x50>
cmpb   $0x61,(%rbx)
jmp    1160 <palindrome+0x50>
cmpb   $0x62,(%rbx)
jmp    1160 <palindrome+0x50>
cmpb   $0x77,(%rbx)
jmp    1160 <palindrome+0x50>
movzbl %al,%eax
jmp    1212 <palindrome+0x102>
mov    $0x1,%eax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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