#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 /*<<< orphan*/ scanf(char *, char *);
int strlen(char *);
int main() {
  int a, i, k;
  char cards[13], m;
  printf("Vuvedi Deck::");
  scanf("%s", cards);
  i = strlen(cards);
  for (a = 0; a < i; a++) {
    if (cards[a] == 'T')
      cards[a] = 58;
    if (cards[a] == 'J')
      cards[a] = 59;
    if (cards[a] == 'Q')
      cards[a] = 60;
    if (cards[a] == 'K')
      cards[a] = 61;
    if (cards[a] == 'A')
      cards[a] = 62;
  }
  for (a = 0; a < i; a++) {
    for (k = 0; k < i; k++)
      if (cards[a] < cards[k]) {
        m = cards[k];
        cards[k] = cards[a];
        cards[a] = m;
      }
  }
  for (a = 0; a < i; a++) {
    if (cards[a] == 58)
      cards[a] = 'T';
    if (cards[a] == 59)
      cards[a] = 'J';
    if (cards[a] == 60)
      cards[a] = 'Q';
    if (cards[a] == 61)
      cards[a] = 'K';
    if (cards[a] == 62)
      cards[a] = 'A';
  }
  printf("%s", cards);
  printf("\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
movl   $0x0,-0x4(%rbp)
lea    0xeba(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    -0x1d(%rbp),%rsi
lea    0xeb6(%rip),%rdi
call   1050 <scanf@plt>
lea    -0x1d(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0xc(%rbp)
movl   $0x0,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    1216 <main+0xe6>
movslq -0x8(%rbp),%rax
movsbl -0x1d(%rbp,%rax,1),%eax
cmp    $0x54,%eax
jne    1197 <main+0x67>
movslq -0x8(%rbp),%rax
movb   $0x3a,-0x1d(%rbp,%rax,1)
movslq -0x8(%rbp),%rax
movsbl -0x1d(%rbp,%rax,1),%eax
cmp    $0x4a,%eax
jne    11b2 <main+0x82>
movslq -0x8(%rbp),%rax
movb   $0x3b,-0x1d(%rbp,%rax,1)
movslq -0x8(%rbp),%rax
movsbl -0x1d(%rbp,%rax,1),%eax
cmp    $0x51,%eax
jne    11cd <main+0x9d>
movslq -0x8(%rbp),%rax
movb   $0x3c,-0x1d(%rbp,%rax,1)
movslq -0x8(%rbp),%rax
movsbl -0x1d(%rbp,%rax,1),%eax
cmp    $0x4b,%eax
jne    11e8 <main+0xb8>
movslq -0x8(%rbp),%rax
movb   $0x3d,-0x1d(%rbp,%rax,1)
movslq -0x8(%rbp),%rax
movsbl -0x1d(%rbp,%rax,1),%eax
cmp    $0x41,%eax
jne    1203 <main+0xd3>
movslq -0x8(%rbp),%rax
movb   $0x3e,-0x1d(%rbp,%rax,1)
jmp    1208 <main+0xd8>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1170 <main+0x40>
movl   $0x0,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    12a2 <main+0x172>
movl   $0x0,-0x10(%rbp)
mov    -0x10(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    128f <main+0x15f>
movslq -0x8(%rbp),%rax
movsbl -0x1d(%rbp,%rax,1),%eax
movslq -0x10(%rbp),%rcx
movsbl -0x1d(%rbp,%rcx,1),%ecx
cmp    %ecx,%eax
jge    127c <main+0x14c>
movslq -0x10(%rbp),%rax
mov    -0x1d(%rbp,%rax,1),%al
mov    %al,-0x1e(%rbp)
movslq -0x8(%rbp),%rax
mov    -0x1d(%rbp,%rax,1),%cl
movslq -0x10(%rbp),%rax
mov    %cl,-0x1d(%rbp,%rax,1)
mov    -0x1e(%rbp),%cl
movslq -0x8(%rbp),%rax
mov    %cl,-0x1d(%rbp,%rax,1)
jmp    1281 <main+0x151>
mov    -0x10(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x10(%rbp)
jmp    1230 <main+0x100>
jmp    1294 <main+0x164>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    121d <main+0xed>
movl   $0x0,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0xc(%rbp),%eax
jge    134f <main+0x21f>
movslq -0x8(%rbp),%rax
movsbl -0x1d(%rbp,%rax,1),%eax
cmp    $0x3a,%eax
jne    12d0 <main+0x1a0>
movslq -0x8(%rbp),%rax
movb   $0x54,-0x1d(%rbp,%rax,1)
movslq -0x8(%rbp),%rax
movsbl -0x1d(%rbp,%rax,1),%eax
cmp    $0x3b,%eax
jne    12eb <main+0x1bb>
movslq -0x8(%rbp),%rax
movb   $0x4a,-0x1d(%rbp,%rax,1)
movslq -0x8(%rbp),%rax
movsbl -0x1d(%rbp,%rax,1),%eax
cmp    $0x3c,%eax
jne    1306 <main+0x1d6>
movslq -0x8(%rbp),%rax
movb   $0x51,-0x1d(%rbp,%rax,1)
movslq -0x8(%rbp),%rax
movsbl -0x1d(%rbp,%rax,1),%eax
cmp    $0x3d,%eax
jne    1321 <main+0x1f1>
movslq -0x8(%rbp),%rax
movb   $0x4b,-0x1d(%rbp,%rax,1)
movslq -0x8(%rbp),%rax
movsbl -0x1d(%rbp,%rax,1),%eax
cmp    $0x3e,%eax
jne    133c <main+0x20c>
movslq -0x8(%rbp),%rax
movb   $0x41,-0x1d(%rbp,%rax,1)
jmp    1341 <main+0x211>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    12a9 <main+0x179>
lea    -0x1d(%rbp),%rsi
lea    0xcb4(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
lea    0xca9(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbx
sub    $0x10,%rsp
lea    0xfa4(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xfa4(%rip),%rdi
lea    0x3(%rsp),%rbx
mov    %rbx,%rsi
call   1060 <scanf@plt>
mov    %rbx,%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jle    1370 <main+0x230>
mov    %eax,%r9d
mov    %r9,%r8
add    $0xffffffffffffffff,%r8
je     121b <main+0xdb>
mov    %r9d,%edi
and    $0xfffffffe,%edi
xor    %esi,%esi
lea    0xeba(%rip),%r10
lea    0xe63(%rip),%rcx
jmp    11bd <main+0x7d>
mov    $0x3b,%dl
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %dl,0x4(%rsp,%rsi,1)
add    $0x2,%rsi
cmp    %rsi,%rdi
je     121d <main+0xdd>
movzbl 0x3(%rsp,%rsi,1),%ebx
add    $0xbf,%bl
cmp    $0x13,%bl
ja     11f4 <main+0xb4>
mov    $0x3a,%dl
movzbl %bl,%ebx
movslq (%rcx,%rbx,4),%rbx
add    %rcx,%rbx
jmp    *%rbx
mov    $0x3e,%dl
jmp    11f0 <main+0xb0>
mov    $0x3b,%dl
jmp    11f0 <main+0xb0>
mov    $0x3d,%dl
jmp    11f0 <main+0xb0>
mov    $0x3c,%dl
cs nopw 0x0(%rax,%rax,1)
mov    %dl,0x3(%rsp,%rsi,1)
movzbl 0x4(%rsp,%rsi,1),%ebx
add    $0xbf,%bl
cmp    $0x13,%bl
ja     11b4 <main+0x74>
mov    $0x3a,%dl
movzbl %bl,%ebx
movslq (%r10,%rbx,4),%rbx
add    %r10,%rbx
jmp    *%rbx
mov    $0x3e,%dl
jmp    11b0 <main+0x70>
mov    $0x3d,%dl
jmp    11b0 <main+0x70>
mov    $0x3c,%dl
jmp    11b0 <main+0x70>
xor    %esi,%esi
test   $0x1,%r9b
je     1256 <main+0x116>
mov    0x3(%rsp,%rsi,1),%dl
add    $0xbf,%dl
cmp    $0x13,%dl
ja     1256 <main+0x116>
mov    $0x3a,%cl
movzbl %dl,%edx
lea    0xe65(%rip),%rdi
movslq (%rdi,%rdx,4),%rdx
add    %rdi,%rdx
jmp    *%rdx
mov    $0x3e,%cl
jmp    1252 <main+0x112>
mov    $0x3b,%cl
jmp    1252 <main+0x112>
mov    $0x3d,%cl
jmp    1252 <main+0x112>
mov    $0x3c,%cl
mov    %cl,0x3(%rsp,%rsi,1)
test   %eax,%eax
jle    1370 <main+0x230>
mov    %r9d,%esi
and    $0xfffffffe,%esi
xor    %ecx,%ecx
jmp    1279 <main+0x139>
nopl   0x0(%rax,%rax,1)
add    $0x1,%rcx
cmp    %r9,%rcx
je     12df <main+0x19f>
mov    0x3(%rsp,%rcx,1),%bl
xor    %edi,%edi
test   %r8,%r8
jne    12b1 <main+0x171>
test   $0x1,%r9b
je     1270 <main+0x130>
mov    0x3(%rsp,%rdi,1),%dl
cmp    %dl,%bl
jge    1270 <main+0x130>
mov    %bl,0x3(%rsp,%rdi,1)
mov    %dl,0x3(%rsp,%rcx,1)
jmp    1270 <main+0x130>
nopl   0x0(%rax)
mov    %dl,0x4(%rsp,%rdi,1)
mov    %bl,0x3(%rsp,%rcx,1)
add    $0x2,%rdi
cmp    %rdi,%rsi
je     1284 <main+0x144>
movzbl 0x3(%rsp,%rdi,1),%edx
cmp    %dl,%bl
jge    12d0 <main+0x190>
mov    %bl,0x3(%rsp,%rdi,1)
mov    %dl,0x3(%rsp,%rcx,1)
jmp    12d2 <main+0x192>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %ebx,%edx
movzbl 0x4(%rsp,%rdi,1),%ebx
cmp    %bl,%dl
jl     12a0 <main+0x160>
mov    %edx,%ebx
jmp    12a8 <main+0x168>
test   %eax,%eax
jle    1370 <main+0x230>
test   %r8,%r8
je     1345 <main+0x205>
movabs $0x414b514a54,%rsi
mov    %r9d,%edi
and    $0xfffffffe,%edi
xor    %eax,%eax
jmp    1309 <main+0x1c9>
add    $0x2,%rax
cmp    %rax,%rdi
je     1347 <main+0x207>
movzbl 0x3(%rsp,%rax,1),%ecx
add    $0xc6,%cl
cmp    $0x4,%cl
ja     1326 <main+0x1e6>
movzbl %cl,%ecx
shl    $0x3,%ecx
mov    %rsi,%rdx
shr    %cl,%rdx
mov    %dl,0x3(%rsp,%rax,1)
movzbl 0x4(%rsp,%rax,1),%ecx
add    $0xc6,%cl
cmp    $0x4,%cl
ja     1300 <main+0x1c0>
movzbl %cl,%ecx
shl    $0x3,%ecx
mov    %rsi,%rdx
shr    %cl,%rdx
mov    %dl,0x4(%rsp,%rax,1)
jmp    1300 <main+0x1c0>
xor    %eax,%eax
test   $0x1,%r9b
je     1370 <main+0x230>
mov    0x3(%rsp,%rax,1),%cl
add    $0xc6,%cl
cmp    $0x4,%cl
ja     1370 <main+0x230>
movzbl %cl,%ecx
shl    $0x3,%ecx
movabs $0x414b514a54,%rdx
shr    %cl,%rdx
mov    %dl,0x3(%rsp,%rax,1)
lea    0xd87(%rip),%rdi
lea    0x3(%rsp),%rsi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbx
ret

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

LLVM IR (-O2):
@.str = [14 x i8] c"Vuvedi Deck::\00"
@.str.1 = [3 x i8] c"%s\00"
define i32 @main() {
%1 = alloca [13 x i8]
%2 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 0
%3 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([14 x i8], [14 x i8]* @.str, i64 0, i64 0))
%4 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* %2)
%5 = call i32 @strlen(i8* %2)
%6 = icmp sgt i32 %5, 0
br i1 %6, label %7, label %139
7: ; preds = %0
%8 = zext i32 %5 to i64
%9 = add nsw i64 %8, -1
%10 = and i64 %8, 1
%11 = icmp eq i64 %9, 0
br i1 %11, label %14, label %12
12: ; preds = %7
%13 = and i64 %8, 4294967294
br label %33
14: ; preds = %54, %7
%15 = phi i64 [ 0, %7 ], [ %55, %54 ]
%16 = icmp eq i64 %10, 0
br i1 %16, label %26, label %17
17: ; preds = %14
%18 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %15
%19 = load i8, i8* %18
switch i8 %19, label %26 [
i8 84, label %24
i8 74, label %23
i8 81, label %22
i8 75, label %21
i8 65, label %20
]
20: ; preds = %17
br label %24
21: ; preds = %17
br label %24
22: ; preds = %17
br label %24
23: ; preds = %17
br label %24
24: ; preds = %23, %22, %21, %20, %17
%25 = phi i8 [ 59, %23 ], [ 61, %21 ], [ 60, %22 ], [ 62, %20 ], [ 58, %17 ]
store i8 %25, i8* %18
br label %26
26: ; preds = %17, %24, %14
br i1 %6, label %27, label %139
27: ; preds = %26
%28 = zext i32 %5 to i64
%29 = and i64 %8, 1
%30 = icmp eq i64 %9, 0
%31 = and i64 %8, 4294967294
%32 = icmp eq i64 %29, 0
br label %58
33: ; preds = %54, %12
%34 = phi i64 [ 0, %12 ], [ %55, %54 ]
%35 = phi i64 [ 0, %12 ], [ %56, %54 ]
%36 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %34
%37 = load i8, i8* %36
switch i8 %37, label %44 [
i8 84, label %42
i8 74, label %38
i8 81, label %39
i8 75, label %40
i8 65, label %41
]
38: ; preds = %33
br label %42
39: ; preds = %33
br label %42
40: ; preds = %33
br label %42
41: ; preds = %33
br label %42
42: ; preds = %33, %41, %39, %40, %38
%43 = phi i8 [ 59, %38 ], [ 61, %40 ], [ 60, %39 ], [ 62, %41 ], [ 58, %33 ]
store i8 %43, i8* %36
br label %44
44: ; preds = %42, %33
%45 = or i64 %34, 1
%46 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %45
%47 = load i8, i8* %46
switch i8 %47, label %54 [
i8 84, label %52
i8 74, label %51
i8 81, label %50
i8 75, label %49
i8 65, label %48
]
48: ; preds = %44
br label %52
49: ; preds = %44
br label %52
50: ; preds = %44
br label %52
51: ; preds = %44
br label %52
52: ; preds = %51, %50, %49, %48, %44
%53 = phi i8 [ 59, %51 ], [ 61, %49 ], [ 60, %50 ], [ 62, %48 ], [ 58, %44 ]
store i8 %53, i8* %46
br label %54
54: ; preds = %52, %44
%55 = add nuw nsw i64 %34, 2
%56 = add i64 %35, 2
%57 = icmp eq i64 %56, %13
br i1 %57, label %14, label %33
58: ; preds = %96, %27
%59 = phi i64 [ 0, %27 ], [ %97, %96 ]
%60 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %59
%61 = load i8, i8* %60
br i1 %30, label %88, label %68
62: ; preds = %96
br i1 %6, label %63, label %139
63: ; preds = %62
%64 = and i64 %8, 1
%65 = icmp eq i64 %9, 0
br i1 %65, label %126, label %66
66: ; preds = %63
%67 = and i64 %8, 4294967294
br label %99
68: ; preds = %58, %83
%69 = phi i8 [ %84, %83 ], [ %61, %58 ]
%70 = phi i64 [ %85, %83 ], [ 0, %58 ]
%71 = phi i64 [ %86, %83 ], [ 0, %58 ]
%72 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %70
%73 = load i8, i8* %72
%74 = icmp slt i8 %69, %73
br i1 %74, label %75, label %76
75: ; preds = %68
store i8 %69, i8* %72
store i8 %73, i8* %60
br label %76
76: ; preds = %68, %75
%77 = phi i8 [ %69, %68 ], [ %73, %75 ]
%78 = or i64 %70, 1
%79 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %78
%80 = load i8, i8* %79
%81 = icmp slt i8 %77, %80
br i1 %81, label %82, label %83
82: ; preds = %76
store i8 %77, i8* %79
store i8 %80, i8* %60
br label %83
83: ; preds = %82, %76
%84 = phi i8 [ %77, %76 ], [ %80, %82 ]
%85 = add nuw nsw i64 %70, 2
%86 = add i64 %71, 2
%87 = icmp eq i64 %86, %31
br i1 %87, label %88, label %68
88: ; preds = %83, %58
%89 = phi i8 [ %61, %58 ], [ %84, %83 ]
%90 = phi i64 [ 0, %58 ], [ %85, %83 ]
br i1 %32, label %96, label %91
91: ; preds = %88
%92 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %90
%93 = load i8, i8* %92
%94 = icmp slt i8 %89, %93
br i1 %94, label %95, label %96
95: ; preds = %91
store i8 %89, i8* %92
store i8 %93, i8* %60
br label %96
96: ; preds = %91, %95, %88
%97 = add nuw nsw i64 %59, 1
%98 = icmp eq i64 %97, %28
br i1 %98, label %62, label %58
99: ; preds = %122, %66
%100 = phi i64 [ 0, %66 ], [ %123, %122 ]
%101 = phi i64 [ 0, %66 ], [ %124, %122 ]
%102 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %100
%103 = load i8, i8* %102
%104 = add i8 %103, -58
%105 = icmp ult i8 %104, 5
br i1 %105, label %106, label %111
106: ; preds = %99
%107 = zext i8 %104 to i40
%108 = shl nuw nsw i40 %107, 3
%109 = lshr i40 280436492884, %108
%110 = trunc i40 %109 to i8
store i8 %110, i8* %102
br label %111
111: ; preds = %99, %106
%112 = or i64 %100, 1
%113 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %112
%114 = load i8, i8* %113
%115 = add i8 %114, -58
%116 = icmp ult i8 %115, 5
br i1 %116, label %117, label %122
117: ; preds = %111
%118 = zext i8 %115 to i40
%119 = shl nuw nsw i40 %118, 3
%120 = lshr i40 280436492884, %119
%121 = trunc i40 %120 to i8
store i8 %121, i8* %113
br label %122
122: ; preds = %117, %111
%123 = add nuw nsw i64 %100, 2
%124 = add i64 %101, 2
%125 = icmp eq i64 %124, %67
br i1 %125, label %126, label %99
126: ; preds = %122, %63
%127 = phi i64 [ 0, %63 ], [ %123, %122 ]
%128 = icmp eq i64 %64, 0
br i1 %128, label %139, label %129
129: ; preds = %126
%130 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %127
%131 = load i8, i8* %130
%132 = add i8 %131, -58
%133 = icmp ult i8 %132, 5
br i1 %133, label %134, label %139
134: ; preds = %129
%135 = zext i8 %132 to i40
%136 = shl nuw nsw i40 %135, 3
%137 = lshr i40 280436492884, %136
%138 = trunc i40 %137 to i8
store i8 %138, i8* %130
br label %139
139: ; preds = %126, %134, %129, %0, %26, %62
%140 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i8* %2)
%141 = call i32 @putchar(i32 10)
ret i32 0
}