#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*/ fgets(char *, int, int /*<<< orphan*/);
int /*<<< orphan*/ printf(char *, char *);
int /*<<< orphan*/ stdin;
int strlen(char *);
int main() {
  int j, i, l, pom;
  char s[13];
  fgets(s, 13, stdin);
  l = strlen(s);
  for (i = 0; i < l; i++) {
    if (s[i] == 'T')
      s[i] = 110;
    if (s[i] == 'J')
      s[i] = 111;
    if (s[i] == 'Q')
      s[i] = 112;
    if (s[i] == 'K')
      s[i] = 113;
    if (s[i] == 'A')
      s[i] = 124;
  }
  for (i = 0; i < l; i++) {
    for (j = 0; j < l; j++)
      if (s[j] > s[j + 1]) {
        pom = s[j];
        s[j] = s[j + 1];
        s[j + 1] = pom;
      }
  }
  for (i = 0; i < l; i++) {
    if (s[i] == 110)
      s[i] = 'T';
    if (s[i] == 111)
      s[i] = 'J';
    if (s[i] == 112)
      s[i] = 'Q';
    if (s[i] == 113)
      s[i] = 'K';
    if (s[i] == 124)
      s[i] = 'A';
  }
  printf("%s Deck = Sorted ", s);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0x21(%rbp),%rdi
mov    0x2e9e(%rip),%rax
mov    (%rax),%edx
mov    $0xd,%esi
call   1050 <fgets@plt>
lea    -0x21(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x10(%rbp)
movl   $0x0,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    120f <main+0xdf>
movslq -0xc(%rbp),%rax
movsbl -0x21(%rbp,%rax,1),%eax
cmp    $0x54,%eax
jne    1190 <main+0x60>
movslq -0xc(%rbp),%rax
movb   $0x6e,-0x21(%rbp,%rax,1)
movslq -0xc(%rbp),%rax
movsbl -0x21(%rbp,%rax,1),%eax
cmp    $0x4a,%eax
jne    11ab <main+0x7b>
movslq -0xc(%rbp),%rax
movb   $0x6f,-0x21(%rbp,%rax,1)
movslq -0xc(%rbp),%rax
movsbl -0x21(%rbp,%rax,1),%eax
cmp    $0x51,%eax
jne    11c6 <main+0x96>
movslq -0xc(%rbp),%rax
movb   $0x70,-0x21(%rbp,%rax,1)
movslq -0xc(%rbp),%rax
movsbl -0x21(%rbp,%rax,1),%eax
cmp    $0x4b,%eax
jne    11e1 <main+0xb1>
movslq -0xc(%rbp),%rax
movb   $0x71,-0x21(%rbp,%rax,1)
movslq -0xc(%rbp),%rax
movsbl -0x21(%rbp,%rax,1),%eax
cmp    $0x41,%eax
jne    11fc <main+0xcc>
movslq -0xc(%rbp),%rax
movb   $0x7c,-0x21(%rbp,%rax,1)
jmp    1201 <main+0xd1>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1169 <main+0x39>
movl   $0x0,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    12ab <main+0x17b>
movl   $0x0,-0x8(%rbp)
mov    -0x8(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1298 <main+0x168>
movslq -0x8(%rbp),%rax
movsbl -0x21(%rbp,%rax,1),%eax
mov    -0x8(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl -0x21(%rbp,%rcx,1),%ecx
cmp    %ecx,%eax
jle    1285 <main+0x155>
movslq -0x8(%rbp),%rax
movsbl -0x21(%rbp,%rax,1),%eax
mov    %eax,-0x14(%rbp)
mov    -0x8(%rbp),%eax
add    $0x1,%eax
cltq
mov    -0x21(%rbp,%rax,1),%cl
movslq -0x8(%rbp),%rax
mov    %cl,-0x21(%rbp,%rax,1)
mov    -0x14(%rbp),%eax
mov    %al,%cl
mov    -0x8(%rbp),%eax
add    $0x1,%eax
cltq
mov    %cl,-0x21(%rbp,%rax,1)
jmp    128a <main+0x15a>
mov    -0x8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x8(%rbp)
jmp    1229 <main+0xf9>
jmp    129d <main+0x16d>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    1216 <main+0xe6>
movl   $0x0,-0xc(%rbp)
mov    -0xc(%rbp),%eax
cmp    -0x10(%rbp),%eax
jge    1358 <main+0x228>
movslq -0xc(%rbp),%rax
movsbl -0x21(%rbp,%rax,1),%eax
cmp    $0x6e,%eax
jne    12d9 <main+0x1a9>
movslq -0xc(%rbp),%rax
movb   $0x54,-0x21(%rbp,%rax,1)
movslq -0xc(%rbp),%rax
movsbl -0x21(%rbp,%rax,1),%eax
cmp    $0x6f,%eax
jne    12f4 <main+0x1c4>
movslq -0xc(%rbp),%rax
movb   $0x4a,-0x21(%rbp,%rax,1)
movslq -0xc(%rbp),%rax
movsbl -0x21(%rbp,%rax,1),%eax
cmp    $0x70,%eax
jne    130f <main+0x1df>
movslq -0xc(%rbp),%rax
movb   $0x51,-0x21(%rbp,%rax,1)
movslq -0xc(%rbp),%rax
movsbl -0x21(%rbp,%rax,1),%eax
cmp    $0x71,%eax
jne    132a <main+0x1fa>
movslq -0xc(%rbp),%rax
movb   $0x4b,-0x21(%rbp,%rax,1)
movslq -0xc(%rbp),%rax
movsbl -0x21(%rbp,%rax,1),%eax
cmp    $0x7c,%eax
jne    1345 <main+0x215>
movslq -0xc(%rbp),%rax
movb   $0x41,-0x21(%rbp,%rax,1)
jmp    134a <main+0x21a>
mov    -0xc(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xc(%rbp)
jmp    12b2 <main+0x182>
lea    -0x21(%rbp),%rsi
lea    0xc9d(%rip),%rdi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
sub    $0x18,%rsp
mov    0x2eaa(%rip),%rax
mov    (%rax),%edx
lea    0xb(%rsp),%r14
mov    %r14,%rdi
mov    $0xd,%esi
call   1050 <fgets@plt>
mov    %r14,%rdi
call   1030 <strlen@plt>
test   %eax,%eax
jle    13b6 <main+0x286>
mov    %eax,%r8d
mov    %r8,%r9
add    $0xffffffffffffffff,%r9
je     11fb <main+0xcb>
mov    %r8d,%edi
and    $0xfffffffe,%edi
xor    %esi,%esi
lea    0xecf(%rip),%r10
lea    0xe78(%rip),%rcx
jmp    119d <main+0x6d>
mov    $0x6f,%dl
nopl   0x0(%rax)
mov    %dl,0xc(%rsp,%rsi,1)
add    $0x2,%rsi
cmp    %rsi,%rdi
je     11fd <main+0xcd>
movzbl 0xb(%rsp,%rsi,1),%ebx
add    $0xbf,%bl
cmp    $0x13,%bl
ja     11d4 <main+0xa4>
mov    $0x6e,%dl
movzbl %bl,%ebx
movslq (%rcx,%rbx,4),%rbx
add    %rcx,%rbx
jmp    *%rbx
mov    $0x7c,%dl
jmp    11d0 <main+0xa0>
mov    $0x6f,%dl
jmp    11d0 <main+0xa0>
mov    $0x71,%dl
jmp    11d0 <main+0xa0>
mov    $0x70,%dl
cs nopw 0x0(%rax,%rax,1)
mov    %dl,0xb(%rsp,%rsi,1)
movzbl 0xc(%rsp,%rsi,1),%ebx
add    $0xbf,%bl
cmp    $0x13,%bl
ja     1194 <main+0x64>
mov    $0x6e,%dl
movzbl %bl,%ebx
movslq (%r10,%rbx,4),%rbx
add    %r10,%rbx
jmp    *%rbx
mov    $0x7c,%dl
jmp    1190 <main+0x60>
mov    $0x71,%dl
jmp    1190 <main+0x60>
mov    $0x70,%dl
jmp    1190 <main+0x60>
xor    %esi,%esi
test   $0x1,%r8b
je     1236 <main+0x106>
mov    0xb(%rsp,%rsi,1),%dl
add    $0xbf,%dl
cmp    $0x13,%dl
ja     1236 <main+0x106>
mov    $0x6e,%cl
movzbl %dl,%edx
lea    0xe85(%rip),%rdi
movslq (%rdi,%rdx,4),%rdx
add    %rdi,%rdx
jmp    *%rdx
mov    $0x7c,%cl
jmp    1232 <main+0x102>
mov    $0x6f,%cl
jmp    1232 <main+0x102>
mov    $0x71,%cl
jmp    1232 <main+0x102>
mov    $0x70,%cl
mov    %cl,0xb(%rsp,%rsi,1)
test   %eax,%eax
jle    13b6 <main+0x286>
mov    %r8d,%esi
and    $0xfffffffe,%esi
xor    %r10d,%r10d
jmp    125d <main+0x12d>
nopl   0x0(%rax)
add    $0x1,%r10d
cmp    %eax,%r10d
je     12e2 <main+0x1b2>
mov    0xb(%rsp),%cl
test   %r9,%r9
je     12c0 <main+0x190>
xor    %edi,%edi
jmp    1280 <main+0x150>
nopw   0x0(%rax,%rax,1)
mov    %bl,0xc(%rsp,%rdi,1)
mov    %cl,0xd(%rsp,%rdi,1)
mov    %rdx,%rdi
cmp    %rdx,%rsi
je     12c2 <main+0x192>
movzbl 0xc(%rsp,%rdi,1),%edx
cmp    %dl,%cl
jle    12a0 <main+0x170>
mov    %dl,0xb(%rsp,%rdi,1)
mov    %cl,0xc(%rsp,%rdi,1)
jmp    12a2 <main+0x172>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    %edx,%ecx
lea    0x2(%rdi),%rdx
movzbl 0xd(%rsp,%rdi,1),%ebx
cmp    %bl,%cl
jg     1270 <main+0x140>
mov    %ebx,%ecx
jmp    1278 <main+0x148>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
xor    %edx,%edx
test   $0x1,%r8b
je     1250 <main+0x120>
mov    0x1(%rdx,%r14,1),%bl
cmp    %bl,%cl
jle    1250 <main+0x120>
mov    %bl,0xb(%rsp,%rdx,1)
mov    %cl,0xc(%rsp,%rdx,1)
jmp    1250 <main+0x120>
test   %eax,%eax
jle    13b6 <main+0x286>
test   %r9,%r9
je     137b <main+0x24b>
mov    %r8d,%edx
and    $0xfffffffe,%edx
xor    %eax,%eax
lea    0xe2a(%rip),%rsi
lea    0xde7(%rip),%rdi
jmp    131d <main+0x1ed>
mov    $0x4a,%bl
nopl   (%rax)
mov    %bl,0xc(%rsp,%rax,1)
add    $0x2,%rax
cmp    %rax,%rdx
je     137d <main+0x24d>
movzbl 0xb(%rsp,%rax,1),%ecx
add    $0x92,%cl
cmp    $0xe,%cl
ja     1354 <main+0x224>
mov    $0x54,%bl
movzbl %cl,%ecx
movslq (%rdi,%rcx,4),%rcx
add    %rdi,%rcx
jmp    *%rcx
mov    $0x4a,%bl
jmp    1350 <main+0x220>
mov    $0x51,%bl
jmp    1350 <main+0x220>
mov    $0x4b,%bl
jmp    1350 <main+0x220>
mov    $0x41,%bl
cs nopw 0x0(%rax,%rax,1)
mov    %bl,0xb(%rsp,%rax,1)
movzbl 0xc(%rsp,%rax,1),%ecx
add    $0x92,%cl
cmp    $0xe,%cl
ja     1314 <main+0x1e4>
mov    $0x54,%bl
movzbl %cl,%ecx
movslq (%rsi,%rcx,4),%rcx
add    %rsi,%rcx
jmp    *%rcx
mov    $0x51,%bl
jmp    1310 <main+0x1e0>
mov    $0x4b,%bl
jmp    1310 <main+0x1e0>
mov    $0x41,%bl
jmp    1310 <main+0x1e0>
xor    %eax,%eax
test   $0x1,%r8b
je     13b6 <main+0x286>
mov    0xb(%rsp,%rax,1),%dl
add    $0x92,%dl
cmp    $0xe,%dl
ja     13b6 <main+0x286>
mov    $0x54,%cl
movzbl %dl,%edx
lea    0xdcd(%rip),%rsi
movslq (%rsi,%rdx,4),%rdx
add    %rsi,%rdx
jmp    *%rdx
mov    $0x4a,%cl
jmp    13b2 <main+0x282>
mov    $0x51,%cl
jmp    13b2 <main+0x282>
mov    $0x4b,%cl
jmp    13b2 <main+0x282>
mov    $0x41,%cl
mov    %cl,0xb(%rsp,%rax,1)
lea    0xde7(%rip),%rdi
lea    0xb(%rsp),%rsi
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x18,%rsp
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
@stdin = global i32 0
@.str = [18 x i8] c"%s Deck = Sorted \00"
define i32 @main() {
%1 = alloca [13 x i8]
%2 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 0
%3 = load i32, i32* @stdin
%4 = call i32 @fgets(i8* %2, i32 13, i32 %3)
%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 [ 111, %23 ], [ 113, %21 ], [ 112, %22 ], [ 124, %20 ], [ 110, %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 %28, 1
%30 = icmp eq i64 %9, 0
%31 = and i64 %28, 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 [ 111, %38 ], [ 113, %40 ], [ 112, %39 ], [ 124, %41 ], [ 110, %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 [ 111, %51 ], [ 113, %49 ], [ 112, %50 ], [ 124, %48 ], [ 110, %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 = %99, %27
%59 = phi i32 [ 0, %27 ], [ %100, %99 ]
%60 = load i8, i8* %2
br i1 %30, label %89, label %67
61: ; preds = %99
br i1 %6, label %62, label %139
62: ; preds = %61
%63 = and i64 %28, 1
%64 = icmp eq i64 %9, 0
br i1 %64, label %127, label %65
65: ; preds = %62
%66 = and i64 %28, 4294967294
br label %102
67: ; preds = %58, %85
%68 = phi i8 [ %86, %85 ], [ %60, %58 ]
%69 = phi i64 [ %79, %85 ], [ 0, %58 ]
%70 = phi i64 [ %87, %85 ], [ 0, %58 ]
%71 = or i64 %69, 1
%72 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %71
%73 = load i8, i8* %72
%74 = icmp sgt i8 %68, %73
br i1 %74, label %75, label %77
75: ; preds = %67
%76 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %69
store i8 %73, i8* %76
store i8 %68, i8* %72
br label %77
77: ; preds = %67, %75
%78 = phi i8 [ %73, %67 ], [ %68, %75 ]
%79 = add nuw nsw i64 %69, 2
%80 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %79
%81 = load i8, i8* %80
%82 = icmp sgt i8 %78, %81
br i1 %82, label %83, label %85
83: ; preds = %77
%84 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %71
store i8 %81, i8* %84
store i8 %78, i8* %80
br label %85
85: ; preds = %83, %77
%86 = phi i8 [ %81, %77 ], [ %78, %83 ]
%87 = add i64 %70, 2
%88 = icmp eq i64 %87, %31
br i1 %88, label %89, label %67
89: ; preds = %85, %58
%90 = phi i8 [ %60, %58 ], [ %86, %85 ]
%91 = phi i64 [ 0, %58 ], [ %79, %85 ]
br i1 %32, label %99, label %92
92: ; preds = %89
%93 = add nuw nsw i64 %91, 1
%94 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %93
%95 = load i8, i8* %94
%96 = icmp sgt i8 %90, %95
br i1 %96, label %97, label %99
97: ; preds = %92
%98 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %91
store i8 %95, i8* %98
store i8 %90, i8* %94
br label %99
99: ; preds = %92, %97, %89
%100 = add nuw nsw i32 %59, 1
%101 = icmp eq i32 %100, %5
br i1 %101, label %61, label %58
102: ; preds = %123, %65
%103 = phi i64 [ 0, %65 ], [ %124, %123 ]
%104 = phi i64 [ 0, %65 ], [ %125, %123 ]
%105 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %103
%106 = load i8, i8* %105
switch i8 %106, label %113 [
i8 110, label %111
i8 111, label %107
i8 112, label %108
i8 113, label %109
i8 124, label %110
]
107: ; preds = %102
br label %111
108: ; preds = %102
br label %111
109: ; preds = %102
br label %111
110: ; preds = %102
br label %111
111: ; preds = %102, %110, %108, %109, %107
%112 = phi i8 [ 74, %107 ], [ 75, %109 ], [ 81, %108 ], [ 65, %110 ], [ 84, %102 ]
store i8 %112, i8* %105
br label %113
113: ; preds = %111, %102
%114 = or i64 %103, 1
%115 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %114
%116 = load i8, i8* %115
switch i8 %116, label %123 [
i8 110, label %121
i8 111, label %120
i8 112, label %119
i8 113, label %118
i8 124, label %117
]
117: ; preds = %113
br label %121
118: ; preds = %113
br label %121
119: ; preds = %113
br label %121
120: ; preds = %113
br label %121
121: ; preds = %120, %119, %118, %117, %113
%122 = phi i8 [ 74, %120 ], [ 75, %118 ], [ 81, %119 ], [ 65, %117 ], [ 84, %113 ]
store i8 %122, i8* %115
br label %123
123: ; preds = %121, %113
%124 = add nuw nsw i64 %103, 2
%125 = add i64 %104, 2
%126 = icmp eq i64 %125, %66
br i1 %126, label %127, label %102
127: ; preds = %123, %62
%128 = phi i64 [ 0, %62 ], [ %124, %123 ]
%129 = icmp eq i64 %63, 0
br i1 %129, label %139, label %130
130: ; preds = %127
%131 = getelementptr inbounds [13 x i8], [13 x i8]* %1, i64 0, i64 %128
%132 = load i8, i8* %131
switch i8 %132, label %139 [
i8 110, label %137
i8 111, label %136
i8 112, label %135
i8 113, label %134
i8 124, label %133
]
133: ; preds = %130
br label %137
134: ; preds = %130
br label %137
135: ; preds = %130
br label %137
136: ; preds = %130
br label %137
137: ; preds = %136, %135, %134, %133, %130
%138 = phi i8 [ 74, %136 ], [ 75, %134 ], [ 81, %135 ], [ 65, %133 ], [ 84, %130 ]
store i8 %138, i8* %131
br label %139
139: ; preds = %127, %137, %130, %0, %26, %61
%140 = call i32 @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str, i64 0, i64 0), i8* %2)
ret i32 0
}