#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 *, char *);
int main() {
  char cards[13];
  int i = 0, j, temp;
  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)
cmpl   $0xd,-0x18(%rbp)
jge    11ec <main+0xcc>
movslq -0x18(%rbp),%rax
lea    -0x11(%rbp),%rsi
add    %rax,%rsi
lea    0xf12(%rip),%rdi
call   1040 <scanf@plt>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
cmp    $0x32,%eax
jl     1184 <main+0x64>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
cmp    $0x39,%eax
jg     1184 <main+0x64>
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     11de <main+0xbe>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
cmp    $0x4a,%eax
je     11de <main+0xbe>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
cmp    $0x51,%eax
je     11de <main+0xbe>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
cmp    $0x4b,%eax
je     11de <main+0xbe>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
cmp    $0x41,%eax
jne    11e7 <main+0xc7>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1136 <main+0x16>
movl   $0x0,-0x18(%rbp)
cmpl   $0xd,-0x18(%rbp)
jge    1280 <main+0x160>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
add    $0xffffffbf,%eax
mov    %eax,%ecx
mov    %rcx,-0x28(%rbp)
sub    $0x13,%eax
ja     126d <main+0x14d>
mov    -0x28(%rbp),%rax
lea    0xdf1(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movslq -0x18(%rbp),%rax
movb   $0x64,-0x11(%rbp,%rax,1)
jmp    126d <main+0x14d>
movslq -0x18(%rbp),%rax
movb   $0x65,-0x11(%rbp,%rax,1)
jmp    126d <main+0x14d>
movslq -0x18(%rbp),%rax
movb   $0x66,-0x11(%rbp,%rax,1)
jmp    126d <main+0x14d>
movslq -0x18(%rbp),%rax
movb   $0x67,-0x11(%rbp,%rax,1)
jmp    126d <main+0x14d>
movslq -0x18(%rbp),%rax
movb   $0x68,-0x11(%rbp,%rax,1)
jmp    1272 <main+0x152>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    11f3 <main+0xd3>
movl   $0x0,-0x18(%rbp)
cmpl   $0xd,-0x18(%rbp)
jge    130b <main+0x1eb>
movl   $0x0,-0x1c(%rbp)
cmpl   $0xd,-0x1c(%rbp)
jge    12f8 <main+0x1d8>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
movslq -0x1c(%rbp),%rcx
movsbl -0x11(%rbp,%rcx,1),%ecx
cmp    %ecx,%eax
jge    12e5 <main+0x1c5>
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    12ea <main+0x1ca>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1298 <main+0x178>
jmp    12fd <main+0x1dd>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1287 <main+0x167>
movl   $0x0,-0x18(%rbp)
cmpl   $0xd,-0x18(%rbp)
jge    13af <main+0x28f>
movslq -0x18(%rbp),%rax
movsbl -0x11(%rbp,%rax,1),%eax
add    $0xffffff9c,%eax
mov    %eax,%ecx
mov    %rcx,-0x30(%rbp)
sub    $0x4,%eax
ja     138c <main+0x26c>
mov    -0x30(%rbp),%rax
lea    0xcbe(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movslq -0x18(%rbp),%rax
movb   $0x54,-0x11(%rbp,%rax,1)
jmp    138c <main+0x26c>
movslq -0x18(%rbp),%rax
movb   $0x4a,-0x11(%rbp,%rax,1)
jmp    138c <main+0x26c>
movslq -0x18(%rbp),%rax
movb   $0x51,-0x11(%rbp,%rax,1)
jmp    138c <main+0x26c>
movslq -0x18(%rbp),%rax
movb   $0x4b,-0x11(%rbp,%rax,1)
jmp    138c <main+0x26c>
movslq -0x18(%rbp),%rax
movb   $0x41,-0x11(%rbp,%rax,1)
movslq -0x18(%rbp),%rax
lea    0xccd(%rip),%rdi
movsbl -0x11(%rbp,%rax,1),%esi
call   1030 <printf@plt>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    1312 <main+0x1f2>
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r15
push   %r14
push   %rbx
sub    $0x10,%rsp
xor    %ebx,%ebx
lea    0x12de(%rip),%r14
mov    $0x90601,%r15d
jmp    1145 <main+0x25>
nopw   0x0(%rax,%rax,1)
cmp    $0xd,%ebx
jge    1180 <main+0x60>
movslq %ebx,%rbx
lea    (%rsp,%rbx,1),%rsi
add    $0x3,%rsi
mov    %r14,%rdi
call   1040 <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     1140 <main+0x20>
movzbl %al,%eax
bt     %rax,%r15
jae    1140 <main+0x20>
add    $0x1,%ebx
jmp    1140 <main+0x20>
movsbl 0x3(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     11b1 <main+0x91>
mov    $0x64,%al
lea    0xe6a(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    11ad <main+0x8d>
mov    $0x65,%al
jmp    11ad <main+0x8d>
mov    $0x67,%al
jmp    11ad <main+0x8d>
mov    $0x66,%al
mov    %al,0x3(%rsp)
movsbl 0x4(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     11e2 <main+0xc2>
mov    $0x64,%al
lea    0xe89(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    11de <main+0xbe>
mov    $0x65,%al
jmp    11de <main+0xbe>
mov    $0x67,%al
jmp    11de <main+0xbe>
mov    $0x66,%al
mov    %al,0x4(%rsp)
movsbl 0x5(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     1213 <main+0xf3>
mov    $0x64,%al
lea    0xea8(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    120f <main+0xef>
mov    $0x65,%al
jmp    120f <main+0xef>
mov    $0x67,%al
jmp    120f <main+0xef>
mov    $0x66,%al
mov    %al,0x5(%rsp)
movsbl 0x6(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     1244 <main+0x124>
mov    $0x64,%al
lea    0xec7(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    1240 <main+0x120>
mov    $0x65,%al
jmp    1240 <main+0x120>
mov    $0x67,%al
jmp    1240 <main+0x120>
mov    $0x66,%al
mov    %al,0x6(%rsp)
movsbl 0x7(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     1275 <main+0x155>
mov    $0x64,%al
lea    0xee6(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    1271 <main+0x151>
mov    $0x65,%al
jmp    1271 <main+0x151>
mov    $0x67,%al
jmp    1271 <main+0x151>
mov    $0x66,%al
mov    %al,0x7(%rsp)
movsbl 0x8(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     12a6 <main+0x186>
mov    $0x64,%al
lea    0xf05(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    12a2 <main+0x182>
mov    $0x65,%al
jmp    12a2 <main+0x182>
mov    $0x67,%al
jmp    12a2 <main+0x182>
mov    $0x66,%al
mov    %al,0x8(%rsp)
movsbl 0x9(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     12d7 <main+0x1b7>
mov    $0x64,%al
lea    0xf24(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    12d3 <main+0x1b3>
mov    $0x65,%al
jmp    12d3 <main+0x1b3>
mov    $0x67,%al
jmp    12d3 <main+0x1b3>
mov    $0x66,%al
mov    %al,0x9(%rsp)
movsbl 0xa(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     1308 <main+0x1e8>
mov    $0x64,%al
lea    0xf43(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    1304 <main+0x1e4>
mov    $0x65,%al
jmp    1304 <main+0x1e4>
mov    $0x67,%al
jmp    1304 <main+0x1e4>
mov    $0x66,%al
mov    %al,0xa(%rsp)
movsbl 0xb(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     1339 <main+0x219>
mov    $0x64,%al
lea    0xf62(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    1335 <main+0x215>
mov    $0x65,%al
jmp    1335 <main+0x215>
mov    $0x67,%al
jmp    1335 <main+0x215>
mov    $0x66,%al
mov    %al,0xb(%rsp)
movsbl 0xc(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     136a <main+0x24a>
mov    $0x64,%al
lea    0xf81(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    1366 <main+0x246>
mov    $0x65,%al
jmp    1366 <main+0x246>
mov    $0x67,%al
jmp    1366 <main+0x246>
mov    $0x66,%al
mov    %al,0xc(%rsp)
movsbl 0xd(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     139b <main+0x27b>
mov    $0x64,%al
lea    0xfa0(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    1397 <main+0x277>
mov    $0x65,%al
jmp    1397 <main+0x277>
mov    $0x67,%al
jmp    1397 <main+0x277>
mov    $0x66,%al
mov    %al,0xd(%rsp)
movsbl 0xe(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     13cc <main+0x2ac>
mov    $0x64,%al
lea    0xfbf(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    13c8 <main+0x2a8>
mov    $0x65,%al
jmp    13c8 <main+0x2a8>
mov    $0x67,%al
jmp    13c8 <main+0x2a8>
mov    $0x66,%al
mov    %al,0xe(%rsp)
movsbl 0xf(%rsp),%ecx
add    $0xffffffbf,%ecx
cmp    $0x13,%ecx
ja     13fd <main+0x2dd>
mov    $0x64,%al
lea    0xfde(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x68,%al
jmp    13f9 <main+0x2d9>
mov    $0x65,%al
jmp    13f9 <main+0x2d9>
mov    $0x67,%al
jmp    13f9 <main+0x2d9>
mov    $0x66,%al
mov    %al,0xf(%rsp)
xor    %eax,%eax
jmp    141e <main+0x2fe>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
add    $0x1,%rax
cmp    $0xd,%rax
je     15bc <main+0x49c>
movzbl 0x3(%rsp,%rax,1),%edx
movzbl 0x3(%rsp),%ecx
cmp    %cl,%dl
jge    1440 <main+0x320>
mov    %dl,0x3(%rsp)
mov    %cl,0x3(%rsp,%rax,1)
jmp    1442 <main+0x322>
cs nopw 0x0(%rax,%rax,1)
mov    %edx,%ecx
movzbl 0x4(%rsp),%edx
cmp    %dl,%cl
jge    1460 <main+0x340>
mov    %cl,0x4(%rsp)
mov    %dl,0x3(%rsp,%rax,1)
jmp    1462 <main+0x342>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ecx,%edx
movzbl 0x5(%rsp),%ecx
cmp    %cl,%dl
jge    1480 <main+0x360>
mov    %dl,0x5(%rsp)
mov    %cl,0x3(%rsp,%rax,1)
jmp    1482 <main+0x362>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %edx,%ecx
movzbl 0x6(%rsp),%edx
cmp    %dl,%cl
jge    14a0 <main+0x380>
mov    %cl,0x6(%rsp)
mov    %dl,0x3(%rsp,%rax,1)
jmp    14a2 <main+0x382>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ecx,%edx
movzbl 0x7(%rsp),%ecx
cmp    %cl,%dl
jge    14c0 <main+0x3a0>
mov    %dl,0x7(%rsp)
mov    %cl,0x3(%rsp,%rax,1)
jmp    14c2 <main+0x3a2>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %edx,%ecx
movzbl 0x8(%rsp),%edx
cmp    %dl,%cl
jge    14e0 <main+0x3c0>
mov    %cl,0x8(%rsp)
mov    %dl,0x3(%rsp,%rax,1)
jmp    14e2 <main+0x3c2>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ecx,%edx
movzbl 0x9(%rsp),%ecx
cmp    %cl,%dl
jge    1500 <main+0x3e0>
mov    %dl,0x9(%rsp)
mov    %cl,0x3(%rsp,%rax,1)
jmp    1502 <main+0x3e2>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %edx,%ecx
movzbl 0xa(%rsp),%edx
cmp    %dl,%cl
jge    1520 <main+0x400>
mov    %cl,0xa(%rsp)
mov    %dl,0x3(%rsp,%rax,1)
jmp    1522 <main+0x402>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ecx,%edx
movzbl 0xb(%rsp),%ecx
cmp    %cl,%dl
jge    1540 <main+0x420>
mov    %dl,0xb(%rsp)
mov    %cl,0x3(%rsp,%rax,1)
jmp    1542 <main+0x422>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %edx,%ecx
movzbl 0xc(%rsp),%edx
cmp    %dl,%cl
jge    1560 <main+0x440>
mov    %cl,0xc(%rsp)
mov    %dl,0x3(%rsp,%rax,1)
jmp    1562 <main+0x442>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ecx,%edx
movzbl 0xd(%rsp),%ecx
cmp    %cl,%dl
jge    1580 <main+0x460>
mov    %dl,0xd(%rsp)
mov    %cl,0x3(%rsp,%rax,1)
jmp    1582 <main+0x462>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %edx,%ecx
movzbl 0xe(%rsp),%edx
cmp    %dl,%cl
jge    15a0 <main+0x480>
mov    %cl,0xe(%rsp)
mov    %dl,0x3(%rsp,%rax,1)
jmp    15a2 <main+0x482>
cs nopw 0x0(%rax,%rax,1)
nop
mov    %ecx,%edx
movzbl 0xf(%rsp),%ecx
cmp    %cl,%dl
jge    1410 <main+0x2f0>
mov    %dl,0xf(%rsp)
mov    %cl,0x3(%rsp,%rax,1)
jmp    1410 <main+0x2f0>
xor    %ebx,%ebx
movabs $0x414b514a54,%r15
lea    0xe41(%rip),%r14
jmp    15f5 <main+0x4d5>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsbl %al,%esi
mov    %r14,%rdi
call   1030 <printf@plt>
add    $0x1,%rbx
cmp    $0xd,%rbx
je     1613 <main+0x4f3>
movsbl 0x3(%rsp,%rbx,1),%eax
mov    %eax,%ecx
add    $0xffffff9c,%ecx
cmp    $0x4,%ecx
ja     15e0 <main+0x4c0>
shl    $0x3,%ecx
mov    %r15,%rax
shr    %cl,%rax
mov    %al,0x3(%rsp,%rbx,1)
jmp    15e0 <main+0x4c0>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbx
pop    %r14
pop    %r15
ret

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

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