#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 *, char);
int /*<<< orphan*/ scanf(char *, int *);
int main() {
  int n, i, j, k, l, a, m[20];
  char s[20];
  scanf("%d", &n);
  k = n;
  while (1 > 0) {
    l = k;
    for (j = 0; l > 0; j++)
      l = l / 16;
    l = k;
    for (i = j; i > 0; i--) {
      m[i - 1] = l % 16;
      l = l / 16;
    }
    a = j;
    for (i = 0; i < a; a--, i++)
      if (m[i] != m[a - 1])
        break;
    if (i >= a) {
      for (i = 0; i < j; i++)
        switch (m[i]) {
        case 10:
          s[i] = 'A';
          break;
        case 11:
          s[i] = 'B';
          break;
        case 12:
          s[i] = 'C';
          break;
        case 13:
          s[i] = 'D';
          break;
        case 14:
          s[i] = 'E';
          break;
        case 15:
          s[i] = 'F';
          break;
        case 9:
          s[i] = '9';
          break;
        case 8:
          s[i] = '8';
          break;
        case 7:
          s[i] = '7';
          break;
        case 6:
          s[i] = '6';
          break;
        case 5:
          s[i] = '5';
          break;
        case 4:
          s[i] = '4';
          break;
        case 3:
          s[i] = '3';
          break;
        case 2:
          s[i] = '2';
          break;
        case 1:
          s[i] = '1';
          break;
        case 0:
          s[i] = '0';
          break;
        }
      for (i = 0; i < j; i++)
        printf("%c", s[i]);
      break;
    }
    k++;
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa0,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xf07(%rip),%rdi
lea    -0x8(%rbp),%rsi
call   1040 <scanf@plt>
mov    -0x8(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x14(%rbp),%eax
mov    %eax,-0x18(%rbp)
movl   $0x0,-0x10(%rbp)
cmpl   $0x0,-0x18(%rbp)
jle    117b <main+0x5b>
mov    -0x18(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,-0x18(%rbp)
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1155 <main+0x35>
mov    -0x14(%rbp),%eax
mov    %eax,-0x18(%rbp)
mov    -0x10(%rbp),%eax
mov    %eax,-0xc(%rbp)
cmpl   $0x0,-0xc(%rbp)
jle    11c4 <main+0xa4>
mov    -0x18(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
cltq
mov    %edx,-0x70(%rbp,%rax,4)
mov    -0x18(%rbp),%eax
mov    $0x10,%ecx
cltd
idiv   %ecx
mov    %eax,-0x18(%rbp)
mov    -0xc(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0xc(%rbp)
jmp    1187 <main+0x67>
mov    -0x10(%rbp),%eax
mov    %eax,-0x1c(%rbp)
movl   $0x0,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jge    1219 <main+0xf9>
movslq -0xc(%rbp),%rax
mov    -0x70(%rbp,%rax,4),%eax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
cmp    -0x70(%rbp,%rcx,4),%eax
je     11fd <main+0xdd>
jmp    1219 <main+0xf9>
jmp    1202 <main+0xe2>
mov    -0x1c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    11d1 <main+0xb1>
mov    -0xc(%rbp),%eax
cmp    -0x1c(%rbp),%eax
jl     13c4 <main+0x2a4>
movl   $0x0,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1386 <main+0x266>
movslq -0xc(%rbp),%rax
mov    -0x70(%rbp,%rax,4),%eax
mov    %rax,-0x98(%rbp)
sub    $0xf,%rax
ja     1373 <main+0x253>
mov    -0x98(%rbp),%rax
lea    0xda1(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movslq -0xc(%rbp),%rax
movb   $0x41,-0x90(%rbp,%rax,1)
41
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x42,-0x90(%rbp,%rax,1)
42
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x43,-0x90(%rbp,%rax,1)
43
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x44,-0x90(%rbp,%rax,1)
44
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x45,-0x90(%rbp,%rax,1)
45
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x46,-0x90(%rbp,%rax,1)
46
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x39,-0x90(%rbp,%rax,1)
39
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x38,-0x90(%rbp,%rax,1)
38
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x37,-0x90(%rbp,%rax,1)
37
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x36,-0x90(%rbp,%rax,1)
36
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x35,-0x90(%rbp,%rax,1)
35
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x34,-0x90(%rbp,%rax,1)
34
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x33,-0x90(%rbp,%rax,1)
33
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x32,-0x90(%rbp,%rax,1)
32
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x31,-0x90(%rbp,%rax,1)
31
jmp    1373 <main+0x253>
movslq -0xc(%rbp),%rax
movb   $0x30,-0x90(%rbp,%rax,1)
30
jmp    1378 <main+0x258>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    122c <main+0x10c>
movl   $0x0,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    13bf <main+0x29f>
movslq -0xc(%rbp),%rax
lea    0xc9f(%rip),%rdi
movsbl -0x90(%rbp,%rax,1),%esi
ff
call   1030 <printf@plt>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    138d <main+0x26d>
jmp    13d2 <main+0x2b2>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1148 <main+0x28>
xor    %eax,%eax
add    $0xa0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %rbx
sub    $0x80,%rsp
lea    0xecd(%rip),%rdi
lea    0xc(%rsp),%rsi
call   1040 <scanf@plt>
mov    0xc(%rsp),%r8d
test   %r8d,%r8d
jle    12c5 <main+0x1a5>
mov    $0xffffffffffffffff,%r9
xor    %edi,%edi
mov    %r8d,%ebx
mov    %r8d,%esi
nopw   0x0(%rax,%rax,1)
mov    %rdi,%rdx
shr    $0x4,%esi
add    $0x1,%r9
add    $0x1,%rdi
cmp    $0x10,%ebx
mov    %esi,%ebx
jae    1160 <main+0x40>
lea    0x1(%r9),%rsi
mov    %r8d,%edi
test   $0x1,%sil
je     11a2 <main+0x82>
lea    0xf(%r8),%edi
test   %r8d,%r8d
cmovns %r8d,%edi
mov    %edi,%esi
and    $0xfffffff0,%esi
mov    %r8d,%ebx
sub    %esi,%ebx
mov    %ebx,0x30(%rsp,%r9,4)
sar    $0x4,%edi
mov    %r9,%rsi
test   %r9d,%r9d
je     11ef <main+0xcf>
add    $0x1,%rsi
nopl   0x0(%rax,%rax,1)
lea    0xf(%rdi),%ebx
lea    0xff(%rdi),%eax
test   %edi,%edi
cmovns %edi,%ebx
cmovns %edi,%eax
mov    %ebx,%ecx
and    $0xfffffff0,%ecx
sub    %ecx,%edi
mov    %edi,0x28(%rsp,%rsi,4)
sar    $0x4,%ebx
lea    0xf(%rbx),%ecx
test   %ebx,%ebx
cmovns %ebx,%ecx
and    $0xfffffff0,%ecx
sub    %ecx,%ebx
mov    %ebx,0x24(%rsp,%rsi,4)
sar    $0x8,%eax
add    $0xfffffffffffffffe,%rsi
mov    %eax,%edi
cmp    $0x1,%rsi
ja     11b0 <main+0x90>
xor    %esi,%esi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    0x30(%rsp,%rsi,4),%eax
cmp    0x30(%rsp,%rdx,4),%eax
jne    1220 <main+0x100>
add    $0x1,%rsi
lea    -0x1(%rdx),%rax
cmp    %rdx,%rsi
mov    %rax,%rdx
jl     1200 <main+0xe0>
jmp    1235 <main+0x115>
nopl   0x0(%rax)
lea    0x1(%r8),%eax
test   %r8d,%r8d
mov    %eax,%r8d
jns    114b <main+0x2b>
jmp    12c5 <main+0x1a5>
lea    0x1(%r9),%r15
test   %r9d,%r9d
je     1281 <main+0x161>
mov    %r15,%rcx
and    $0xfffffffffffffffe,%rcx
xor    %eax,%eax
lea    0xdb8(%rip),%rdx
jmp    1259 <main+0x139>
add    $0x2,%rax
cmp    %rax,%rcx
je     1283 <main+0x163>
movslq 0x30(%rsp,%rax,4),%rsi
cmp    $0xf,%rsi
ja     126c <main+0x14c>
movzbl (%rsi,%rdx,1),%ebx
mov    %bl,0x10(%rsp,%rax,1)
movslq 0x34(%rsp,%rax,4),%rsi
cmp    $0xf,%rsi
ja     1250 <main+0x130>
movzbl (%rsi,%rdx,1),%ebx
mov    %bl,0x11(%rsp,%rax,1)
jmp    1250 <main+0x130>
xor    %eax,%eax
test   $0x1,%r15b
je     12a2 <main+0x182>
movslq 0x30(%rsp,%rax,4),%rcx
cmp    $0xf,%rcx
ja     12a2 <main+0x182>
lea    0xd6b(%rip),%rdx
mov    (%rcx,%rdx,1),%cl
mov    %cl,0x10(%rsp,%rax,1)
lea    0x10(%rsp),%rbx
lea    0xd55(%rip),%r14
xchg   %ax,%ax
movsbl (%rbx),%esi
mov    %r14,%rdi
call   1030 <printf@plt>
add    $0x1,%rbx
add    $0xffffffffffffffff,%r15
jne    12b0 <main+0x190>
xor    %eax,%eax
add    $0x80,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

LLVM IR (-O0):
@.str = [3 x i8] c"%d\00"
@.str.1 = [3 x i8] c"%c\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca [20 x i32]
%9 = alloca [20 x i8]
store i32 0, i32* %1
%10 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i32* %2)
%11 = load i32, i32* %2
store i32 %11, i32* %5
br label %12
12: ; preds = %0, %162
%13 = load i32, i32* %5
store i32 %13, i32* %6
store i32 0, i32* %4
br label %14
14: ; preds = %20, %12
%15 = load i32, i32* %6
%16 = icmp sgt i32 %15, 0
br i1 %16, label %17, label %23
17: ; preds = %14
%18 = load i32, i32* %6
%19 = sdiv i32 %18, 16
store i32 %19, i32* %6
br label %20
20: ; preds = %17
%21 = load i32, i32* %4
%22 = add nsw i32 %21, 1
store i32 %22, i32* %4
br label %14
23: ; preds = %14
%24 = load i32, i32* %5
store i32 %24, i32* %6
%25 = load i32, i32* %4
store i32 %25, i32* %3
br label %26
26: ; preds = %38, %23
%27 = load i32, i32* %3
%28 = icmp sgt i32 %27, 0
br i1 %28, label %29, label %41
29: ; preds = %26
%30 = load i32, i32* %6
%31 = srem i32 %30, 16
%32 = load i32, i32* %3
%33 = sub nsw i32 %32, 1
%34 = sext i32 %33 to i64
%35 = getelementptr inbounds [20 x i32], [20 x i32]* %8, i64 0, i64 %34
store i32 %31, i32* %35
%36 = load i32, i32* %6
%37 = sdiv i32 %36, 16
store i32 %37, i32* %6
br label %38
38: ; preds = %29
%39 = load i32, i32* %3
%40 = add nsw i32 %39, -1
store i32 %40, i32* %3
br label %26
41: ; preds = %26
%42 = load i32, i32* %4
store i32 %42, i32* %7
store i32 0, i32* %3
br label %43
43: ; preds = %60, %41
%44 = load i32, i32* %3
%45 = load i32, i32* %7
%46 = icmp slt i32 %44, %45
br i1 %46, label %47, label %65
47: ; preds = %43
%48 = load i32, i32* %3
%49 = sext i32 %48 to i64
%50 = getelementptr inbounds [20 x i32], [20 x i32]* %8, i64 0, i64 %49
%51 = load i32, i32* %50
%52 = load i32, i32* %7
%53 = sub nsw i32 %52, 1
%54 = sext i32 %53 to i64
%55 = getelementptr inbounds [20 x i32], [20 x i32]* %8, i64 0, i64 %54
%56 = load i32, i32* %55
%57 = icmp ne i32 %51, %56
br i1 %57, label %58, label %59
58: ; preds = %47
br label %65
59: ; preds = %47
br label %60
60: ; preds = %59
%61 = load i32, i32* %7
%62 = add nsw i32 %61, -1
store i32 %62, i32* %7
%63 = load i32, i32* %3
%64 = add nsw i32 %63, 1
store i32 %64, i32* %3
br label %43
65: ; preds = %58, %43
%66 = load i32, i32* %3
%67 = load i32, i32* %7
%68 = icmp sge i32 %66, %67
br i1 %68, label %69, label %162
69: ; preds = %65
store i32 0, i32* %3
br label %70
70: ; preds = %144, %69
%71 = load i32, i32* %3
%72 = load i32, i32* %4
%73 = icmp slt i32 %71, %72
br i1 %73, label %74, label %147
74: ; preds = %70
%75 = load i32, i32* %3
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds [20 x i32], [20 x i32]* %8, i64 0, i64 %76
%78 = load i32, i32* %77
switch i32 %78, label %143 [
i32 10, label %79
i32 11, label %83
i32 12, label %87
i32 13, label %91
i32 14, label %95
i32 15, label %99
i32 9, label %103
i32 8, label %107
i32 7, label %111
i32 6, label %115
i32 5, label %119
i32 4, label %123
i32 3, label %127
i32 2, label %131
i32 1, label %135
i32 0, label %139
]
79: ; preds = %74
%80 = load i32, i32* %3
%81 = sext i32 %80 to i64
%82 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %81
store i8 65, i8* %82
br label %143
83: ; preds = %74
%84 = load i32, i32* %3
%85 = sext i32 %84 to i64
%86 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %85
store i8 66, i8* %86
br label %143
87: ; preds = %74
%88 = load i32, i32* %3
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %89
store i8 67, i8* %90
br label %143
91: ; preds = %74
%92 = load i32, i32* %3
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %93
store i8 68, i8* %94
br label %143
95: ; preds = %74
%96 = load i32, i32* %3
%97 = sext i32 %96 to i64
%98 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %97
store i8 69, i8* %98
br label %143
99: ; preds = %74
%100 = load i32, i32* %3
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %101
store i8 70, i8* %102
br label %143
103: ; preds = %74
%104 = load i32, i32* %3
%105 = sext i32 %104 to i64
%106 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %105
store i8 57, i8* %106
br label %143
107: ; preds = %74
%108 = load i32, i32* %3
%109 = sext i32 %108 to i64
%110 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %109
store i8 56, i8* %110
br label %143
111: ; preds = %74
%112 = load i32, i32* %3
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %113
store i8 55, i8* %114
br label %143
115: ; preds = %74
%116 = load i32, i32* %3
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %117
store i8 54, i8* %118
br label %143
119: ; preds = %74
%120 = load i32, i32* %3
%121 = sext i32 %120 to i64
%122 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %121
store i8 53, i8* %122
br label %143
123: ; preds = %74
%124 = load i32, i32* %3
%125 = sext i32 %124 to i64
%126 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %125
store i8 52, i8* %126
br label %143
127: ; preds = %74
%128 = load i32, i32* %3
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %129
store i8 51, i8* %130
br label %143
131: ; preds = %74
%132 = load i32, i32* %3
%133 = sext i32 %132 to i64
%134 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %133
store i8 50, i8* %134
br label %143
135: ; preds = %74
%136 = load i32, i32* %3
%137 = sext i32 %136 to i64
%138 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %137
store i8 49, i8* %138
br label %143
139: ; preds = %74
%140 = load i32, i32* %3
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %141
store i8 48, i8* %142
br label %143
143: ; preds = %74, %139, %135, %131, %127, %123, %119, %115, %111, %107, %103, %99, %95, %91, %87, %83, %79
br label %144
144: ; preds = %143
%145 = load i32, i32* %3
%146 = add nsw i32 %145, 1
store i32 %146, i32* %3
br label %70
147: ; preds = %70
store i32 0, i32* %3
br label %148
148: ; preds = %158, %147
%149 = load i32, i32* %3
%150 = load i32, i32* %4
%151 = icmp slt i32 %149, %150
br i1 %151, label %152, label %161
152: ; preds = %148
%153 = load i32, i32* %3
%154 = sext i32 %153 to i64
%155 = getelementptr inbounds [20 x i8], [20 x i8]* %9, i64 0, i64 %154
%156 = load i8, i8* %155
%157 = call i32 @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8 signext %156)
br label %158
158: ; preds = %152
%159 = load i32, i32* %3
%160 = add nsw i32 %159, 1
store i32 %160, i32* %3
br label %148
161: ; preds = %148
br label %165
162: ; preds = %65
%163 = load i32, i32* %5
%164 = add nsw i32 %163, 1
store i32 %164, i32* %5
br label %12
165: ; preds = %161
ret i32 0
}

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