#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 main() {
  char cards[13];
  int i = 0, j, temp;
  printf("Enter 13 cards in a random order, from 2 to A:(10=T) \n");
  while (i < 13) {
    scanf("%c", &cards[i]);
    if (cards[i] >= '2' && cards[i] <= '9')
      i++;
    if (cards[i] == 'T' || cards[i] == 'J' || cards[i] == 'Q' ||
        cards[i] == 'K' || cards[i] == 'A')
      i++;
  }
  for (i = 0; i < 13; i++) {
    switch (cards[i]) {
    case 'T':
      cards[i] = 100;
      break;
    case 'J':
      cards[i] = 101;
      break;
    case 'Q':
      cards[i] = 102;
      break;
    case 'K':
      cards[i] = 103;
      break;
    case 'A':
      cards[i] = 104;
      break;
    }
  }
  for (i = 0; i < 13; i++) {
    for (j = 0; j < 13; j++) {
      if (cards[i] < cards[j]) {
        temp = cards[j];
        cards[j] = cards[i];
        cards[i] = temp;
      }
    }
  }
  for (i = 0; i < 13; i++) {
    switch (cards[i]) {
    case 100:
      cards[i] = 'T';
      break;
    case 101:
      cards[i] = 'J';
      break;
    case 102:
      cards[i] = 'Q';
      break;
    case 103:
      cards[i] = 'K';
      break;
    case 104:
      cards[i] = 'A';
      break;
    }
    printf("%c", cards[i]);
  }
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x18(%rbp)
lea    0xf27(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
cmpl   $0xd,-0x18(%rbp)
jge    11fa <main+0xda>
movslq -0x18(%rbp),%rax
lea    -0x11(%rbp),%rsi
add    %rax,%rsi
lea    0xf3b(%rip),%rdi
call   1040 <scanf@plt>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
cmp    $0x32,%eax
jl     1192 <main+0x72>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
cmp    $0x39,%eax
jg     1192 <main+0x72>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
cmp    $0x54,%eax
je     11ec <main+0xcc>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
cmp    $0x4a,%eax
je     11ec <main+0xcc>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
cmp    $0x51,%eax
je     11ec <main+0xcc>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
cmp    $0x4b,%eax
je     11ec <main+0xcc>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
cmp    $0x41,%eax
jne    11f5 <main+0xd5>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1144 <main+0x24>
movl   $0x0,-0x18(%rbp)
cmpl   $0xd,-0x18(%rbp)
jge    128e <main+0x16e>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
add    $0xffffffbf,%eax
mov    %eax,%ecx
mov    %rcx,-0x28(%rbp)
sub    $0x13,%eax
ja     127b <main+0x15b>
mov    -0x28(%rbp),%rax
lea    0xde3(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movslq -0x18(%rbp),%rax
movb   $0x64,-0x11(%rbp,%rax,1)
jmp    127b <main+0x15b>
movslq -0x18(%rbp),%rax
movb   $0x65,-0x11(%rbp,%rax,1)
jmp    127b <main+0x15b>
movslq -0x18(%rbp),%rax
movb   $0x66,-0x11(%rbp,%rax,1)
jmp    127b <main+0x15b>
movslq -0x18(%rbp),%rax
movb   $0x67,-0x11(%rbp,%rax,1)
jmp    127b <main+0x15b>
movslq -0x18(%rbp),%rax
movb   $0x68,-0x11(%rbp,%rax,1)
jmp    1280 <main+0x160>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1201 <main+0xe1>
movl   $0x0,-0x18(%rbp)
cmpl   $0xd,-0x18(%rbp)
jge    1319 <main+0x1f9>
movl   $0x0,-0x1c(%rbp)
cmpl   $0xd,-0x1c(%rbp)
jge    1306 <main+0x1e6>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
movslq -0x1c(%rbp),%rcx
movsbl -0x11(%rbp,%rcx,1),%ecx
cmp    %ecx,%eax
jge    12f3 <main+0x1d3>
movslq -0x1c(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
mov    %eax,-0x20(%rbp)
movslq -0x18(%rbp),%rax
mov    -0x11(%rbp,%rax,1),%cl
movslq -0x1c(%rbp),%rax
mov    %cl,-0x11(%rbp,%rax,1)
mov    -0x20(%rbp),%eax
mov    %al,%cl
movslq -0x18(%rbp),%rax
mov    %cl,-0x11(%rbp,%rax,1)
jmp    12f8 <main+0x1d8>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    12a6 <main+0x186>
jmp    130b <main+0x1eb>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1295 <main+0x175>
movl   $0x0,-0x18(%rbp)
cmpl   $0xd,-0x18(%rbp)
jge    13bf <main+0x29f>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
add    $0xffffff9c,%eax
mov    %eax,%ecx
mov    %rcx,-0x30(%rbp)
sub    $0x4,%eax
ja     139a <main+0x27a>
mov    -0x30(%rbp),%rax
lea    0xcb0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movslq -0x18(%rbp),%rax
movb   $0x54,-0x11(%rbp,%rax,1)
jmp    139a <main+0x27a>
movslq -0x18(%rbp),%rax
movb   $0x4a,-0x11(%rbp,%rax,1)
jmp    139a <main+0x27a>
movslq -0x18(%rbp),%rax
movb   $0x51,-0x11(%rbp,%rax,1)
jmp    139a <main+0x27a>
movslq -0x18(%rbp),%rax
movb   $0x4b,-0x11(%rbp,%rax,1)
jmp    139a <main+0x27a>
movslq -0x18(%rbp),%rax
movb   $0x41,-0x11(%rbp,%rax,1)
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%esi
lea    0xcf1(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1320 <main+0x200>
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %rbx
sub    $0x10,%rsp
lea    0x12d3(%rip),%rdi
call   1040 <puts@plt>
xor    %ebx,%ebx
lea    0x12c2(%rip),%r14
mov    $0x90601,%r15d
jmp    1165 <main+0x35>
cs nopw 0x0(%rax,%rax,1)
cmp    $0xd,%ebx
jge    11a0 <main+0x70>
movslq %ebx,%rbx
lea    (%rsp,%rbx,1),%rsi
add    $0x3,%rsi
mov    %r14,%rdi
call   1050 <scanf@plt>
movzbl 0x3(%rsp,%rbx,1),%eax
add    $0xce,%al
cmp    $0x8,%al
adc    $0x0,%ebx
movslq %ebx,%rax
movzbl 0x3(%rsp,%rax,1),%eax
add    $0xbf,%al
cmp    $0x13,%al
ja     1160 <main+0x30>
movzbl %al,%eax
bt     %rax,%r15
jae    1160 <main+0x30>
add    $0x1,%ebx
jmp    1160 <main+0x30>
movsbl 0x3(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     11d1 <main+0xa1>
mov    $0x64,%al
lea    0xe4a(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    11cd <main+0x9d>
mov    $0x65,%al
jmp    11cd <main+0x9d>
mov    $0x67,%al
jmp    11cd <main+0x9d>
mov    $0x66,%al
mov    %al,0x3(%rsp)
movsbl 0x4(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     1202 <main+0xd2>
mov    $0x64,%al
lea    0xe69(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    11fe <main+0xce>
mov    $0x65,%al
jmp    11fe <main+0xce>
mov    $0x67,%al
jmp    11fe <main+0xce>
mov    $0x66,%al
mov    %al,0x4(%rsp)
movsbl 0x5(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     1233 <main+0x103>
mov    $0x64,%al
lea    0xe88(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    122f <main+0xff>
mov    $0x65,%al
jmp    122f <main+0xff>
mov    $0x67,%al
jmp    122f <main+0xff>
mov    $0x66,%al
mov    %al,0x5(%rsp)
movsbl 0x6(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     1264 <main+0x134>
mov    $0x64,%al
lea    0xea7(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    1260 <main+0x130>
mov    $0x65,%al
jmp    1260 <main+0x130>
mov    $0x67,%al
jmp    1260 <main+0x130>
mov    $0x66,%al
mov    %al,0x6(%rsp)
movsbl 0x7(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     1295 <main+0x165>
mov    $0x64,%al
lea    0xec6(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    1291 <main+0x161>
mov    $0x65,%al
jmp    1291 <main+0x161>
mov    $0x67,%al
jmp    1291 <main+0x161>
mov    $0x66,%al
mov    %al,0x7(%rsp)
movsbl 0x8(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     12c6 <main+0x196>
mov    $0x64,%al
lea    0xee5(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    12c2 <main+0x192>
mov    $0x65,%al
jmp    12c2 <main+0x192>
mov    $0x67,%al
jmp    12c2 <main+0x192>
mov    $0x66,%al
mov    %al,0x8(%rsp)
movsbl 0x9(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     12f7 <main+0x1c7>
mov    $0x64,%al
lea    0xf04(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    12f3 <main+0x1c3>
mov    $0x65,%al
jmp    12f3 <main+0x1c3>
mov    $0x67,%al
jmp    12f3 <main+0x1c3>
mov    $0x66,%al
mov    %al,0x9(%rsp)
movsbl 0xa(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     1328 <main+0x1f8>
mov    $0x64,%al
lea    0xf23(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    1324 <main+0x1f4>
mov    $0x65,%al
jmp    1324 <main+0x1f4>
mov    $0x67,%al
jmp    1324 <main+0x1f4>
mov    $0x66,%al
mov    %al,0xa(%rsp)
movsbl 0xb(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     1359 <main+0x229>
mov    $0x64,%al
lea    0xf42(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    1355 <main+0x225>
mov    $0x65,%al
jmp    1355 <main+0x225>
mov    $0x67,%al
jmp    1355 <main+0x225>
mov    $0x66,%al
mov    %al,0xb(%rsp)
movsbl 0xc(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     138a <main+0x25a>
mov    $0x64,%al
lea    0xf61(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    1386 <main+0x256>
mov    $0x65,%al
jmp    1386 <main+0x256>
mov    $0x67,%al
jmp    1386 <main+0x256>
mov    $0x66,%al
mov    %al,0xc(%rsp)
movsbl 0xd(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     13bb <main+0x28b>
mov    $0x64,%al
lea    0xf80(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    13b7 <main+0x287>
mov    $0x65,%al
jmp    13b7 <main+0x287>
mov    $0x67,%al
jmp    13b7 <main+0x287>
mov    $0x66,%al
mov    %al,0xd(%rsp)
movsbl 0xe(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     13ec <main+0x2bc>
mov    $0x64,%al
lea    0xf9f(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    13e8 <main+0x2b8>
mov    $0x65,%al
jmp    13e8 <main+0x2b8>
mov    $0x67,%al
jmp    13e8 <main+0x2b8>
mov    $0x66,%al
mov    %al,0xe(%rsp)
movsbl 0xf(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     141d <main+0x2ed>
mov    $0x64,%al
lea    0xfbe(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    1419 <main+0x2e9>
mov    $0x65,%al
jmp    1419 <main+0x2e9>
mov    $0x67,%al
jmp    1419 <main+0x2e9>
mov    $0x66,%al
mov    %al,0xf(%rsp)
xor    %eax,%eax
jmp    143e <main+0x30e>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%rax
cmp    $0xd,%rax
je     15dc <main+0x4ac>
movzbl 0x3(%rsp,%rax,1),%edx
movzbl 0x3(%rsp),%ecx
cmp    %cl,%dl
jge    1460 <main+0x330>
mov    %dl,0x3(%rsp)
mov    %cl,0x3(%rsp,%rax,1)
jmp    1462 <main+0x332>
cs nopw 0x0(%rax,%rax,1)
mov    %edx,%ecx
movzbl 0x4(%rsp),%edx
cmp    %dl,%cl
jge    1480 <main+0x350>
mov    %cl,0x4(%rsp)
mov    %dl,0x3(%rsp,%rax,1)
jmp    1482 <main+0x352>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ecx,%edx
movzbl 0x5(%rsp),%ecx
cmp    %cl,%dl
jge    14a0 <main+0x370>
mov    %dl,0x5(%rsp)
mov    %cl,0x3(%rsp,%rax,1)
jmp    14a2 <main+0x372>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %edx,%ecx
movzbl 0x6(%rsp),%edx
cmp    %dl,%cl
jge    14c0 <main+0x390>
mov    %cl,0x6(%rsp)
mov    %dl,0x3(%rsp,%rax,1)
jmp    14c2 <main+0x392>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ecx,%edx
movzbl 0x7(%rsp),%ecx
cmp    %cl,%dl
jge    14e0 <main+0x3b0>
mov    %dl,0x7(%rsp)
mov    %cl,0x3(%rsp,%rax,1)
jmp    14e2 <main+0x3b2>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %edx,%ecx
movzbl 0x8(%rsp),%edx
cmp    %dl,%cl
jge    1500 <main+0x3d0>
mov    %cl,0x8(%rsp)
mov    %dl,0x3(%rsp,%rax,1)
jmp    1502 <main+0x3d2>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ecx,%edx
movzbl 0x9(%rsp),%ecx
cmp    %cl,%dl
jge    1520 <main+0x3f0>
mov    %dl,0x9(%rsp)
mov    %cl,0x3(%rsp,%rax,1)
jmp    1522 <main+0x3f2>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %edx,%ecx
movzbl 0xa(%rsp),%edx
cmp    %dl,%cl
jge    1540 <main+0x410>
mov    %cl,0xa(%rsp)
mov    %dl,0x3(%rsp,%rax,1)
jmp    1542 <main+0x412>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ecx,%edx
movzbl 0xb(%rsp),%ecx
cmp    %cl,%dl
jge    1560 <main+0x430>
mov    %dl,0xb(%rsp)
mov    %cl,0x3(%rsp,%rax,1)
jmp    1562 <main+0x432>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %edx,%ecx
movzbl 0xc(%rsp),%edx
cmp    %dl,%cl
jge    1580 <main+0x450>
mov    %cl,0xc(%rsp)
mov    %dl,0x3(%rsp,%rax,1)
jmp    1582 <main+0x452>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ecx,%edx
movzbl 0xd(%rsp),%ecx
cmp    %cl,%dl
jge    15a0 <main+0x470>
mov    %dl,0xd(%rsp)
mov    %cl,0x3(%rsp,%rax,1)
jmp    15a2 <main+0x472>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %edx,%ecx
movzbl 0xe(%rsp),%edx
cmp    %dl,%cl
jge    15c0 <main+0x490>
mov    %cl,0xe(%rsp)
mov    %dl,0x3(%rsp,%rax,1)
jmp    15c2 <main+0x492>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ecx,%edx
movzbl 0xf(%rsp),%ecx
cmp    %cl,%dl
jge    1430 <main+0x300>
mov    %dl,0xf(%rsp)
mov    %cl,0x3(%rsp,%rax,1)
jmp    1430 <main+0x300>
xor    %ebx,%ebx
movabs $0x414b514a54,%r14
jmp    1602 <main+0x4d2>
nopw   0x0(%rax,%rax,1)
movsbl %al,%edi
call   1030 <putchar@plt>
add    $0x1,%rbx
cmp    $0xd,%rbx
je     1620 <main+0x4f0>
movsbl 0x3(%rsp,%rbx,1),%eax
mov    %eax,%ecx
add    $0xffffff9c,%ecx
cmp    $0x4,%ecx
ja     15f0 <main+0x4c0>
shl    $0x3,%ecx
mov    %r14,%rax
shr    %cl,%rax
mov    %al,0x3(%rsp,%rbx,1)
jmp    15f0 <main+0x4c0>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

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

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