#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 /*<<< orphan*/ strcat(char *, char *);
int strlen(char *);
int main() {
  char s[27], c, s1[27], s2[27];
  int i, a, b, l, k, n = 0, m = 0, h, j = 9;
  for (i = 0; i < 13; i++)
    scanf("%s", &s[i]);
  l = strlen(s);
  for (i = 0; i < l; i++) {
    for (a = 0, b = 1; b <= l; a++, b++) {
      if (s[a] > s[b]) {
        c = s[a];
        s[a] = s[b];
        s[b] = c;
      }
    }
  }
  for (i = 0; i <= l; i++) {
    if (s[i] == '2') {
      s2[m] = s[i];
      m++;
    }
    if (s[i] == '3') {
      s2[m] = s[i];
      m++;
    }
    if (s[i] == '4') {
      s2[m] = s[i];
      m++;
    }
    if (s[i] == '5') {
      s2[m] = s[i];
      m++;
    }
    if (s[i] == '6') {
      s2[m] = s[i];
      m++;
    }
    if (s[i] == '7') {
      s2[m] = s[i];
      m++;
    }
    if (s[i] == '8') {
      s2[m] = s[i];
      m++;
    }
    if (s[i] == '9') {
      s2[m] = s[i];
      m++;
    }
  }
  for (i = 0; i <= l; i++) {
    if (s[i] == 'A') {
      s1[n] = '4';
      n++;
    }
    if (s[i] == 'K') {
      s1[n] = '3';
      n++;
    }
    if (s[i] == 'Q') {
      s1[n] = '2';
      n++;
    }
    if (s[i] == 'J') {
      s1[n] = '1';
      n++;
    }
    if (s[i] == 'T') {
      s1[n] = '0';
      n++;
    }
  }
  k = strlen(s1);
  for (i = 0; i < k; i++) {
    for (a = 0, b = 1; b <= k; a++, b++) {
      if (s1[a] > s1[b]) {
        c = s1[a];
        s1[a] = s1[b];
        s1[b] = c;
      }
    }
  }
  for (i = 0; i < k; i++) {
    if (s1[i] == '4') {
      s1[i] = 'A';
    }
    if (s1[i] == '3') {
      s1[i] = 'K';
    }
    if (s1[i] == '2') {
      s1[i] = 'Q';
    }
    if (s1[i] == '1') {
      s1[i] = 'J';
    }
    if (s1[i] == '0') {
      s1[i] = 'T';
    }
  }
  h = strlen(s2);
  strcat(s, s1);
  for (i = 0; i < k; i++, j++)
    s[j] = s1[i];
  for (i = 0; i <= l + 1; i++)
    printf("%c", s[i]);
  printf("\n");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x90,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0x78(%rbp)
movl   $0x0,-0x7c(%rbp)
movl   $0x9,-0x84(%rbp)
movl   $0x0,-0x64(%rbp)
cmpl   $0xd,-0x64(%rbp)
jge    11a0 <main+0x60>
movslq -0x64(%rbp),%rax
lea    -0x20(%rbp),%rsi
add    %rax,%rsi
lea    0xe73(%rip),%rdi
call   1050 <scanf@plt>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1171 <main+0x31>
lea    -0x20(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x70(%rbp)
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x70(%rbp),%eax
jge    1248 <main+0x108>
movl   $0x0,-0x68(%rbp)
movl   $0x1,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0x70(%rbp),%eax
jg     1235 <main+0xf5>
movslq -0x68(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
movslq -0x6c(%rbp),%rcx
movsbl -0x20(%rbp,%rcx,1),%ecx
cmp    %ecx,%eax
jle    1219 <main+0xd9>
movslq -0x68(%rbp),%rax
mov    -0x20(%rbp,%rax,1),%al
mov    %al,-0x21(%rbp)
movslq -0x6c(%rbp),%rax
mov    -0x20(%rbp,%rax,1),%cl
movslq -0x68(%rbp),%rax
mov    %cl,-0x20(%rbp,%rax,1)
mov    -0x21(%rbp),%cl
movslq -0x6c(%rbp),%rax
mov    %cl,-0x20(%rbp,%rax,1)
jmp    121e <main+0xde>
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    11cd <main+0x8d>
jmp    123a <main+0xfa>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    11b3 <main+0x73>
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x70(%rbp),%eax
jg     13c6 <main+0x286>
movslq -0x64(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x32,%eax
jne    1286 <main+0x146>
movslq -0x64(%rbp),%rax
mov    -0x20(%rbp,%rax,1),%cl
movslq -0x7c(%rbp),%rax
mov    %cl,-0x60(%rbp,%rax,1)
mov    -0x7c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
movslq -0x64(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x33,%eax
jne    12b1 <main+0x171>
movslq -0x64(%rbp),%rax
mov    -0x20(%rbp,%rax,1),%cl
movslq -0x7c(%rbp),%rax
mov    %cl,-0x60(%rbp,%rax,1)
mov    -0x7c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
movslq -0x64(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x34,%eax
jne    12dc <main+0x19c>
movslq -0x64(%rbp),%rax
mov    -0x20(%rbp,%rax,1),%cl
movslq -0x7c(%rbp),%rax
mov    %cl,-0x60(%rbp,%rax,1)
mov    -0x7c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
movslq -0x64(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x35,%eax
jne    1307 <main+0x1c7>
movslq -0x64(%rbp),%rax
mov    -0x20(%rbp,%rax,1),%cl
movslq -0x7c(%rbp),%rax
mov    %cl,-0x60(%rbp,%rax,1)
mov    -0x7c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
movslq -0x64(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x36,%eax
jne    1332 <main+0x1f2>
movslq -0x64(%rbp),%rax
mov    -0x20(%rbp,%rax,1),%cl
movslq -0x7c(%rbp),%rax
mov    %cl,-0x60(%rbp,%rax,1)
mov    -0x7c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
movslq -0x64(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x37,%eax
jne    135d <main+0x21d>
movslq -0x64(%rbp),%rax
mov    -0x20(%rbp,%rax,1),%cl
movslq -0x7c(%rbp),%rax
mov    %cl,-0x60(%rbp,%rax,1)
mov    -0x7c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
movslq -0x64(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x38,%eax
jne    1388 <main+0x248>
movslq -0x64(%rbp),%rax
mov    -0x20(%rbp,%rax,1),%cl
movslq -0x7c(%rbp),%rax
mov    %cl,-0x60(%rbp,%rax,1)
mov    -0x7c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
movslq -0x64(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x39,%eax
jne    13b3 <main+0x273>
movslq -0x64(%rbp),%rax
mov    -0x20(%rbp,%rax,1),%cl
movslq -0x7c(%rbp),%rax
mov    %cl,-0x60(%rbp,%rax,1)
mov    -0x7c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x7c(%rbp)
jmp    13b8 <main+0x278>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    124f <main+0x10f>
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x70(%rbp),%eax
jg     14a0 <main+0x360>
movslq -0x64(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x41,%eax
jne    13fd <main+0x2bd>
movslq -0x78(%rbp),%rax
movb   $0x34,-0x40(%rbp,%rax,1)
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
movslq -0x64(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x4b,%eax
jne    1421 <main+0x2e1>
movslq -0x78(%rbp),%rax
movb   $0x33,-0x40(%rbp,%rax,1)
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
movslq -0x64(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x51,%eax
jne    1445 <main+0x305>
movslq -0x78(%rbp),%rax
movb   $0x32,-0x40(%rbp,%rax,1)
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
movslq -0x64(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x4a,%eax
jne    1469 <main+0x329>
movslq -0x78(%rbp),%rax
movb   $0x31,-0x40(%rbp,%rax,1)
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
movslq -0x64(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%eax
cmp    $0x54,%eax
jne    148d <main+0x34d>
movslq -0x78(%rbp),%rax
movb   $0x30,-0x40(%rbp,%rax,1)
mov    -0x78(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x78(%rbp)
jmp    1492 <main+0x352>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    13cd <main+0x28d>
lea    -0x40(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x74(%rbp)
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x74(%rbp),%eax
jge    1548 <main+0x408>
movl   $0x0,-0x68(%rbp)
movl   $0x1,-0x6c(%rbp)
mov    -0x6c(%rbp),%eax
cmp    -0x74(%rbp),%eax
jg     1535 <main+0x3f5>
movslq -0x68(%rbp),%rax
movsbl -0x40(%rbp,%rax,1),%eax
movslq -0x6c(%rbp),%rcx
movsbl -0x40(%rbp,%rcx,1),%ecx
cmp    %ecx,%eax
jle    1519 <main+0x3d9>
movslq -0x68(%rbp),%rax
mov    -0x40(%rbp,%rax,1),%al
mov    %al,-0x21(%rbp)
movslq -0x6c(%rbp),%rax
mov    -0x40(%rbp,%rax,1),%cl
movslq -0x68(%rbp),%rax
mov    %cl,-0x40(%rbp,%rax,1)
mov    -0x21(%rbp),%cl
movslq -0x6c(%rbp),%rax
mov    %cl,-0x40(%rbp,%rax,1)
jmp    151e <main+0x3de>
mov    -0x68(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x68(%rbp)
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    14cd <main+0x38d>
jmp    153a <main+0x3fa>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    14b3 <main+0x373>
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x74(%rbp),%eax
jge    15f5 <main+0x4b5>
movslq -0x64(%rbp),%rax
movsbl -0x40(%rbp,%rax,1),%eax
cmp    $0x34,%eax
jne    1576 <main+0x436>
movslq -0x64(%rbp),%rax
movb   $0x41,-0x40(%rbp,%rax,1)
movslq -0x64(%rbp),%rax
movsbl -0x40(%rbp,%rax,1),%eax
cmp    $0x33,%eax
jne    1591 <main+0x451>
movslq -0x64(%rbp),%rax
movb   $0x4b,-0x40(%rbp,%rax,1)
movslq -0x64(%rbp),%rax
movsbl -0x40(%rbp,%rax,1),%eax
cmp    $0x32,%eax
jne    15ac <main+0x46c>
movslq -0x64(%rbp),%rax
movb   $0x51,-0x40(%rbp,%rax,1)
movslq -0x64(%rbp),%rax
movsbl -0x40(%rbp,%rax,1),%eax
cmp    $0x31,%eax
jne    15c7 <main+0x487>
movslq -0x64(%rbp),%rax
movb   $0x4a,-0x40(%rbp,%rax,1)
movslq -0x64(%rbp),%rax
movsbl -0x40(%rbp,%rax,1),%eax
cmp    $0x30,%eax
jne    15e2 <main+0x4a2>
movslq -0x64(%rbp),%rax
movb   $0x54,-0x40(%rbp,%rax,1)
jmp    15e7 <main+0x4a7>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    154f <main+0x40f>
lea    -0x60(%rbp),%rdi
call   1030 <strlen@plt>
mov    %eax,-0x80(%rbp)
lea    -0x20(%rbp),%rdi
lea    -0x40(%rbp),%rsi
call   1060 <strcat@plt>
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
cmp    -0x74(%rbp),%eax
jge    1651 <main+0x511>
movslq -0x64(%rbp),%rax
mov    -0x40(%rbp,%rax,1),%cl
movslq -0x84(%rbp),%rax
mov    %cl,-0x20(%rbp,%rax,1)
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
mov    -0x84(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x84(%rbp)
jmp    1615 <main+0x4d5>
movl   $0x0,-0x64(%rbp)
mov    -0x64(%rbp),%eax
mov    -0x70(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jg     168e <main+0x54e>
movslq -0x64(%rbp),%rax
movsbl -0x20(%rbp,%rax,1),%esi
lea    0x98a(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
mov    -0x64(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x64(%rbp)
jmp    1658 <main+0x518>
lea    0x971(%rip),%rdi
mov    $0x0,%al
call   1040 <printf@plt>
xor    %eax,%eax
add    $0x90,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
lea    0xf8b(%rip),%rbp
mov    %rsp,%rbx
mov    %rbp,%rdi
mov    %rbx,%rsi
call   1060 <scanf@plt>
lea    0x1(%rsp),%rsi
mov    %rbp,%rdi
call   1060 <scanf@plt>
lea    0x2(%rsp),%rsi
mov    %rbp,%rdi
call   1060 <scanf@plt>
lea    0x3(%rsp),%rsi
mov    %rbp,%rdi
call   1060 <scanf@plt>
lea    0x4(%rsp),%rsi
mov    %rbp,%rdi
call   1060 <scanf@plt>
lea    0x5(%rsp),%rsi
mov    %rbp,%rdi
call   1060 <scanf@plt>
lea    0x6(%rsp),%rsi
mov    %rbp,%rdi
call   1060 <scanf@plt>
lea    0x7(%rsp),%rsi
mov    %rbp,%rdi
call   1060 <scanf@plt>
lea    0x8(%rsp),%rsi
mov    %rbp,%rdi
call   1060 <scanf@plt>
lea    0x9(%rsp),%r14
mov    %rbp,%rdi
mov    %r14,%rsi
call   1060 <scanf@plt>
lea    0xa(%rsp),%rsi
mov    %rbp,%rdi
call   1060 <scanf@plt>
lea    0xb(%rsp),%rsi
mov    %rbp,%rdi
call   1060 <scanf@plt>
lea    0xc(%rsp),%rsi
mov    %rbp,%rdi
call   1060 <scanf@plt>
mov    %rbx,%rdi
call   1040 <strlen@plt>
mov    %eax,%r15d
mov    %eax,%r9d
test   %eax,%eax
jle    12e7 <main+0x197>
mov    %r9d,%eax
and    $0xfffffffe,%eax
xor    %edx,%edx
jmp    124c <main+0xfc>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x1,%edx
cmp    %r15d,%edx
je     12e7 <main+0x197>
cmp    $0x1,%r15d
jne    1270 <main+0x120>
mov    $0x1,%edi
xor    %esi,%esi
test   $0x1,%r9b
je     1240 <main+0xf0>
jmp    12ce <main+0x17e>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
xor    %esi,%esi
jmp    1289 <main+0x139>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0x2,%rsi
cmp    %rsi,%rax
je     12c0 <main+0x170>
movzbl (%rsp,%rsi,1),%ebx
movzbl 0x1(%rsp,%rsi,1),%ecx
cmp    %cl,%bl
jle    129d <main+0x14d>
mov    %cl,(%rsp,%rsi,1)
mov    %bl,0x1(%rsp,%rsi,1)
movzbl 0x1(%rsp,%rsi,1),%ebx
movzbl 0x2(%rsp,%rsi,1),%ecx
cmp    %cl,%bl
jle    1280 <main+0x130>
mov    %cl,0x1(%rsp,%rsi,1)
mov    %bl,0x2(%rsp,%rsi,1)
jmp    1280 <main+0x130>
cs nopw 0x0(%rax,%rax,1)
nop
lea    0x1(%rsi),%rdi
test   $0x1,%r9b
je     1240 <main+0xf0>
mov    (%rsp,%rsi,1),%bl
mov    (%rsp,%rdi,1),%cl
cmp    %cl,%bl
jle    1240 <main+0xf0>
mov    %cl,(%rsp,%rsi,1)
mov    %bl,(%rsp,%rdi,1)
jmp    1240 <main+0xf0>
test   %r15d,%r15d
js     144e <main+0x2fe>
lea    0x1(%r9),%r8
test   %r15d,%r15d
je     1348 <main+0x1f8>
mov    %r8d,%edi
and    $0xfffffffe,%edi
xor    %esi,%esi
xor    %edx,%edx
jmp    1319 <main+0x1c9>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x2,%rsi
cmp    %rsi,%rdi
je     134c <main+0x1fc>
movzbl (%rsp,%rsi,1),%ebp
lea    -0x32(%rbp),%eax
cmp    $0x7,%al
ja     132f <main+0x1df>
movslq %edx,%rdx
mov    %bpl,0x40(%rsp,%rdx,1)
add    $0x1,%edx
movzbl 0x1(%rsp,%rsi,1),%ebp
lea    -0x32(%rbp),%eax
cmp    $0x7,%al
ja     1310 <main+0x1c0>
movslq %edx,%rdx
mov    %bpl,0x40(%rsp,%rdx,1)
add    $0x1,%edx
jmp    1310 <main+0x1c0>
xor    %esi,%esi
xor    %edx,%edx
test   $0x1,%r8b
je     1365 <main+0x215>
mov    (%rsp,%rsi,1),%sil
lea    -0x32(%rsi),%eax
cmp    $0x7,%al
ja     1365 <main+0x215>
movslq %edx,%rax
mov    %sil,0x40(%rsp,%rax,1)
test   %r15d,%r15d
js     144e <main+0x2fe>
test   %r9,%r9
je     140f <main+0x2bf>
mov    %r8d,%esi
and    $0xfffffffe,%esi
xor    %edx,%edx
lea    0xcca(%rip),%rdi
lea    0xc73(%rip),%rbp
xor    %ecx,%ecx
jmp    13b3 <main+0x263>
mov    $0x33,%bl
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movslq %ecx,%rcx
mov    %bl,0x20(%rsp,%rcx,1)
add    $0x1,%ecx
add    $0x2,%rdx
cmp    %rdx,%rsi
je     1413 <main+0x2c3>
movzbl (%rsp,%rdx,1),%eax
add    $0xbf,%al
cmp    $0x13,%al
ja     13ea <main+0x29a>
mov    $0x34,%bl
movzbl %al,%eax
movslq 0x0(%rbp,%rax,4),%rax
add    %rbp,%rax
jmp    *%rax
mov    $0x31,%bl
jmp    13e0 <main+0x290>
mov    $0x33,%bl
jmp    13e0 <main+0x290>
mov    $0x32,%bl
jmp    13e0 <main+0x290>
mov    $0x30,%bl
nopw   0x0(%rax,%rax,1)
movslq %ecx,%rcx
mov    %bl,0x20(%rsp,%rcx,1)
add    $0x1,%ecx
movzbl 0x1(%rsp,%rdx,1),%eax
add    $0xbf,%al
cmp    $0x13,%al
ja     13aa <main+0x25a>
mov    $0x34,%bl
movzbl %al,%eax
movslq (%rdi,%rax,4),%rax
add    %rdi,%rax
jmp    *%rax
mov    $0x31,%bl
jmp    13a0 <main+0x250>
mov    $0x32,%bl
jmp    13a0 <main+0x250>
mov    $0x30,%bl
jmp    13a0 <main+0x250>
xor    %edx,%edx
xor    %ecx,%ecx
test   $0x1,%r8b
je     144e <main+0x2fe>
mov    (%rsp,%rdx,1),%dl
add    $0xbf,%dl
cmp    $0x13,%dl
ja     144e <main+0x2fe>
mov    $0x34,%al
movzbl %dl,%edx
lea    0xc70(%rip),%rsi
movslq (%rsi,%rdx,4),%rdx
add    %rsi,%rdx
jmp    *%rdx
mov    $0x31,%al
jmp    1447 <main+0x2f7>
mov    $0x33,%al
jmp    1447 <main+0x2f7>
mov    $0x32,%al
jmp    1447 <main+0x2f7>
mov    $0x30,%al
movslq %ecx,%rcx
mov    %al,0x20(%rsp,%rcx,1)
lea    0x20(%rsp),%rdi
call   1040 <strlen@plt>
test   %eax,%eax
jle    1587 <main+0x437>
mov    %eax,%r13d
mov    %eax,%r12d
lea    -0x1(%r12),%rbp
mov    %r12d,%ecx
and    $0xfffffffe,%ecx
xor    %edx,%edx
jmp    148c <main+0x33c>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x1,%edx
cmp    %r13d,%edx
je     151a <main+0x3ca>
test   %rbp,%rbp
je     14f0 <main+0x3a0>
xor    %esi,%esi
jmp    14a9 <main+0x359>
cs nopw 0x0(%rax,%rax,1)
nop
add    $0x2,%rsi
cmp    %rsi,%rcx
je     14e0 <main+0x390>
movzbl 0x20(%rsp,%rsi,1),%ebx
movzbl 0x21(%rsp,%rsi,1),%eax
cmp    %al,%bl
jle    14bf <main+0x36f>
mov    %al,0x20(%rsp,%rsi,1)
mov    %bl,0x21(%rsp,%rsi,1)
movzbl 0x21(%rsp,%rsi,1),%ebx
movzbl 0x22(%rsp,%rsi,1),%eax
cmp    %al,%bl
jle    14a0 <main+0x350>
mov    %al,0x21(%rsp,%rsi,1)
mov    %bl,0x22(%rsp,%rsi,1)
jmp    14a0 <main+0x350>
nopw   0x0(%rax,%rax,1)
lea    0x1(%rsi),%rdi
test   $0x1,%r12b
je     1480 <main+0x330>
jmp    14fd <main+0x3ad>
nopl   0x0(%rax)
mov    $0x1,%edi
xor    %esi,%esi
test   $0x1,%r12b
je     1480 <main+0x330>
mov    0x20(%rsp,%rsi,1),%bl
mov    0x20(%rsp,%rdi,1),%al
cmp    %al,%bl
jle    1480 <main+0x330>
mov    %al,0x20(%rsp,%rsi,1)
mov    %bl,0x20(%rsp,%rdi,1)
jmp    1480 <main+0x330>
test   %r13d,%r13d
jle    1587 <main+0x437>
test   %rbp,%rbp
je     15a0 <main+0x450>
movabs $0x414b514a54,%rdx
mov    %r12d,%esi
and    $0xfffffffe,%esi
xor    %eax,%eax
jmp    1549 <main+0x3f9>
nopl   0x0(%rax)
add    $0x2,%rax
cmp    %rax,%rsi
je     15a2 <main+0x452>
movzbl 0x20(%rsp,%rax,1),%ecx
add    $0xd0,%cl
cmp    $0x4,%cl
ja     1567 <main+0x417>
movzbl %cl,%ecx
shl    $0x3,%ecx
mov    %rdx,%rdi
shr    %cl,%rdi
mov    %dil,0x20(%rsp,%rax,1)
movzbl 0x21(%rsp,%rax,1),%ecx
add    $0xd0,%cl
cmp    $0x4,%cl
ja     1540 <main+0x3f0>
movzbl %cl,%ecx
shl    $0x3,%ecx
mov    %rdx,%rdi
shr    %cl,%rdi
mov    %dil,0x21(%rsp,%rax,1)
jmp    1540 <main+0x3f0>
lea    0x40(%rsp),%rdi
call   1040 <strlen@plt>
mov    %rsp,%rdi
lea    0x20(%rsp),%rsi
call   1070 <strcat@plt>
jmp    15f7 <main+0x4a7>
xor    %eax,%eax
test   $0x1,%r12b
je     15cb <main+0x47b>
mov    0x20(%rsp,%rax,1),%cl
add    $0xd0,%cl
cmp    $0x4,%cl
ja     15cb <main+0x47b>
movzbl %cl,%ecx
shl    $0x3,%ecx
movabs $0x414b514a54,%rdx
shr    %cl,%rdx
mov    %dl,0x20(%rsp,%rax,1)
lea    0x40(%rsp),%rdi
call   1040 <strlen@plt>
mov    %rsp,%rdi
lea    0x20(%rsp),%rsi
call   1070 <strcat@plt>
test   %r13d,%r13d
jle    15f7 <main+0x4a7>
lea    0x20(%rsp),%rsi
mov    %r14,%rdi
mov    %r12,%rdx
call   1050 <memcpy@plt>
cmp    $0xffffffff,%r15d
jl     1622 <main+0x4d2>
add    $0x2,%r15d
xor    %ebx,%ebx
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movsbl (%rsp,%rbx,1),%edi
call   1030 <putchar@plt>
add    $0x1,%rbx
cmp    %rbx,%r15
jne    1610 <main+0x4c0>
mov    $0xa,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [3 x i8] c"%s\00"
@.str.1 = [3 x i8] c"%c\00"
@.str.2 = [2 x i8] c"\0A\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [27 x i8]
%3 = alloca i8
%4 = alloca [27 x i8]
%5 = alloca [27 x i8]
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
store i32 0, i32* %1
store i32 0, i32* %11
store i32 0, i32* %12
store i32 9, i32* %14
store i32 0, i32* %6
br label %15
15: ; preds = %23, %0
%16 = load i32, i32* %6
%17 = icmp slt i32 %16, 13
br i1 %17, label %18, label %26
18: ; preds = %15
%19 = load i32, i32* %6
%20 = sext i32 %19 to i64
%21 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %20
%22 = call i32 @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str, i64 0, i64 0), i8* %21)
br label %23
23: ; preds = %18
%24 = load i32, i32* %6
%25 = add nsw i32 %24, 1
store i32 %25, i32* %6
br label %15
26: ; preds = %15
%27 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 0
%28 = call i32 @strlen(i8* %27)
store i32 %28, i32* %9
store i32 0, i32* %6
br label %29
29: ; preds = %73, %26
%30 = load i32, i32* %6
%31 = load i32, i32* %9
%32 = icmp slt i32 %30, %31
br i1 %32, label %33, label %76
33: ; preds = %29
store i32 0, i32* %7
store i32 1, i32* %8
br label %34
34: ; preds = %67, %33
%35 = load i32, i32* %8
%36 = load i32, i32* %9
%37 = icmp sle i32 %35, %36
br i1 %37, label %38, label %72
38: ; preds = %34
%39 = load i32, i32* %7
%40 = sext i32 %39 to i64
%41 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %40
%42 = load i8, i8* %41
%43 = sext i8 %42 to i32
%44 = load i32, i32* %8
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %45
%47 = load i8, i8* %46
%48 = sext i8 %47 to i32
%49 = icmp sgt i32 %43, %48
br i1 %49, label %50, label %66
50: ; preds = %38
%51 = load i32, i32* %7
%52 = sext i32 %51 to i64
%53 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %52
%54 = load i8, i8* %53
store i8 %54, i8* %3
%55 = load i32, i32* %8
%56 = sext i32 %55 to i64
%57 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %56
%58 = load i8, i8* %57
%59 = load i32, i32* %7
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %60
store i8 %58, i8* %61
%62 = load i8, i8* %3
%63 = load i32, i32* %8
%64 = sext i32 %63 to i64
%65 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %64
store i8 %62, i8* %65
br label %66
66: ; preds = %50, %38
br label %67
67: ; preds = %66
%68 = load i32, i32* %7
%69 = add nsw i32 %68, 1
store i32 %69, i32* %7
%70 = load i32, i32* %8
%71 = add nsw i32 %70, 1
store i32 %71, i32* %8
br label %34
72: ; preds = %34
br label %73
73: ; preds = %72
%74 = load i32, i32* %6
%75 = add nsw i32 %74, 1
store i32 %75, i32* %6
br label %29
76: ; preds = %29
store i32 0, i32* %6
br label %77
77: ; preds = %218, %76
%78 = load i32, i32* %6
%79 = load i32, i32* %9
%80 = icmp sle i32 %78, %79
br i1 %80, label %81, label %221
81: ; preds = %77
%82 = load i32, i32* %6
%83 = sext i32 %82 to i64
%84 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %83
%85 = load i8, i8* %84
%86 = sext i8 %85 to i32
%87 = icmp eq i32 %86, 50
br i1 %87, label %88, label %98
88: ; preds = %81
%89 = load i32, i32* %6
%90 = sext i32 %89 to i64
%91 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %90
%92 = load i8, i8* %91
%93 = load i32, i32* %12
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds [27 x i8], [27 x i8]* %5, i64 0, i64 %94
store i8 %92, i8* %95
%96 = load i32, i32* %12
%97 = add nsw i32 %96, 1
store i32 %97, i32* %12
br label %98
98: ; preds = %88, %81
%99 = load i32, i32* %6
%100 = sext i32 %99 to i64
%101 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %100
%102 = load i8, i8* %101
%103 = sext i8 %102 to i32
%104 = icmp eq i32 %103, 51
br i1 %104, label %105, label %115
105: ; preds = %98
%106 = load i32, i32* %6
%107 = sext i32 %106 to i64
%108 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %107
%109 = load i8, i8* %108
%110 = load i32, i32* %12
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds [27 x i8], [27 x i8]* %5, i64 0, i64 %111
store i8 %109, i8* %112
%113 = load i32, i32* %12
%114 = add nsw i32 %113, 1
store i32 %114, i32* %12
br label %115
115: ; preds = %105, %98
%116 = load i32, i32* %6
%117 = sext i32 %116 to i64
%118 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %117
%119 = load i8, i8* %118
%120 = sext i8 %119 to i32
%121 = icmp eq i32 %120, 52
br i1 %121, label %122, label %132
122: ; preds = %115
%123 = load i32, i32* %6
%124 = sext i32 %123 to i64
%125 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %124
%126 = load i8, i8* %125
%127 = load i32, i32* %12
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds [27 x i8], [27 x i8]* %5, i64 0, i64 %128
store i8 %126, i8* %129
%130 = load i32, i32* %12
%131 = add nsw i32 %130, 1
store i32 %131, i32* %12
br label %132
132: ; preds = %122, %115
%133 = load i32, i32* %6
%134 = sext i32 %133 to i64
%135 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %134
%136 = load i8, i8* %135
%137 = sext i8 %136 to i32
%138 = icmp eq i32 %137, 53
br i1 %138, label %139, label %149
139: ; preds = %132
%140 = load i32, i32* %6
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %141
%143 = load i8, i8* %142
%144 = load i32, i32* %12
%145 = sext i32 %144 to i64
%146 = getelementptr inbounds [27 x i8], [27 x i8]* %5, i64 0, i64 %145
store i8 %143, i8* %146
%147 = load i32, i32* %12
%148 = add nsw i32 %147, 1
store i32 %148, i32* %12
br label %149
149: ; preds = %139, %132
%150 = load i32, i32* %6
%151 = sext i32 %150 to i64
%152 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %151
%153 = load i8, i8* %152
%154 = sext i8 %153 to i32
%155 = icmp eq i32 %154, 54
br i1 %155, label %156, label %166
156: ; preds = %149
%157 = load i32, i32* %6
%158 = sext i32 %157 to i64
%159 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %158
%160 = load i8, i8* %159
%161 = load i32, i32* %12
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds [27 x i8], [27 x i8]* %5, i64 0, i64 %162
store i8 %160, i8* %163
%164 = load i32, i32* %12
%165 = add nsw i32 %164, 1
store i32 %165, i32* %12
br label %166
166: ; preds = %156, %149
%167 = load i32, i32* %6
%168 = sext i32 %167 to i64
%169 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %168
%170 = load i8, i8* %169
%171 = sext i8 %170 to i32
%172 = icmp eq i32 %171, 55
br i1 %172, label %173, label %183
173: ; preds = %166
%174 = load i32, i32* %6
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %175
%177 = load i8, i8* %176
%178 = load i32, i32* %12
%179 = sext i32 %178 to i64
%180 = getelementptr inbounds [27 x i8], [27 x i8]* %5, i64 0, i64 %179
store i8 %177, i8* %180
%181 = load i32, i32* %12
%182 = add nsw i32 %181, 1
store i32 %182, i32* %12
br label %183
183: ; preds = %173, %166
%184 = load i32, i32* %6
%185 = sext i32 %184 to i64
%186 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %185
%187 = load i8, i8* %186
%188 = sext i8 %187 to i32
%189 = icmp eq i32 %188, 56
br i1 %189, label %190, label %200
190: ; preds = %183
%191 = load i32, i32* %6
%192 = sext i32 %191 to i64
%193 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %192
%194 = load i8, i8* %193
%195 = load i32, i32* %12
%196 = sext i32 %195 to i64
%197 = getelementptr inbounds [27 x i8], [27 x i8]* %5, i64 0, i64 %196
store i8 %194, i8* %197
%198 = load i32, i32* %12
%199 = add nsw i32 %198, 1
store i32 %199, i32* %12
br label %200
200: ; preds = %190, %183
%201 = load i32, i32* %6
%202 = sext i32 %201 to i64
%203 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %202
%204 = load i8, i8* %203
%205 = sext i8 %204 to i32
%206 = icmp eq i32 %205, 57
br i1 %206, label %207, label %217
207: ; preds = %200
%208 = load i32, i32* %6
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %209
%211 = load i8, i8* %210
%212 = load i32, i32* %12
%213 = sext i32 %212 to i64
%214 = getelementptr inbounds [27 x i8], [27 x i8]* %5, i64 0, i64 %213
store i8 %211, i8* %214
%215 = load i32, i32* %12
%216 = add nsw i32 %215, 1
store i32 %216, i32* %12
br label %217
217: ; preds = %207, %200
br label %218
218: ; preds = %217
%219 = load i32, i32* %6
%220 = add nsw i32 %219, 1
store i32 %220, i32* %6
br label %77
221: ; preds = %77
store i32 0, i32* %6
br label %222
222: ; preds = %292, %221
%223 = load i32, i32* %6
%224 = load i32, i32* %9
%225 = icmp sle i32 %223, %224
br i1 %225, label %226, label %295
226: ; preds = %222
%227 = load i32, i32* %6
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %228
%230 = load i8, i8* %229
%231 = sext i8 %230 to i32
%232 = icmp eq i32 %231, 65
br i1 %232, label %233, label %239
233: ; preds = %226
%234 = load i32, i32* %11
%235 = sext i32 %234 to i64
%236 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %235
store i8 52, i8* %236
%237 = load i32, i32* %11
%238 = add nsw i32 %237, 1
store i32 %238, i32* %11
br label %239
239: ; preds = %233, %226
%240 = load i32, i32* %6
%241 = sext i32 %240 to i64
%242 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %241
%243 = load i8, i8* %242
%244 = sext i8 %243 to i32
%245 = icmp eq i32 %244, 75
br i1 %245, label %246, label %252
246: ; preds = %239
%247 = load i32, i32* %11
%248 = sext i32 %247 to i64
%249 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %248
store i8 51, i8* %249
%250 = load i32, i32* %11
%251 = add nsw i32 %250, 1
store i32 %251, i32* %11
br label %252
252: ; preds = %246, %239
%253 = load i32, i32* %6
%254 = sext i32 %253 to i64
%255 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %254
%256 = load i8, i8* %255
%257 = sext i8 %256 to i32
%258 = icmp eq i32 %257, 81
br i1 %258, label %259, label %265
259: ; preds = %252
%260 = load i32, i32* %11
%261 = sext i32 %260 to i64
%262 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %261
store i8 50, i8* %262
%263 = load i32, i32* %11
%264 = add nsw i32 %263, 1
store i32 %264, i32* %11
br label %265
265: ; preds = %259, %252
%266 = load i32, i32* %6
%267 = sext i32 %266 to i64
%268 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %267
%269 = load i8, i8* %268
%270 = sext i8 %269 to i32
%271 = icmp eq i32 %270, 74
br i1 %271, label %272, label %278
272: ; preds = %265
%273 = load i32, i32* %11
%274 = sext i32 %273 to i64
%275 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %274
store i8 49, i8* %275
%276 = load i32, i32* %11
%277 = add nsw i32 %276, 1
store i32 %277, i32* %11
br label %278
278: ; preds = %272, %265
%279 = load i32, i32* %6
%280 = sext i32 %279 to i64
%281 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %280
%282 = load i8, i8* %281
%283 = sext i8 %282 to i32
%284 = icmp eq i32 %283, 84
br i1 %284, label %285, label %291
285: ; preds = %278
%286 = load i32, i32* %11
%287 = sext i32 %286 to i64
%288 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %287
store i8 48, i8* %288
%289 = load i32, i32* %11
%290 = add nsw i32 %289, 1
store i32 %290, i32* %11
br label %291
291: ; preds = %285, %278
br label %292
292: ; preds = %291
%293 = load i32, i32* %6
%294 = add nsw i32 %293, 1
store i32 %294, i32* %6
br label %222
295: ; preds = %222
%296 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 0
%297 = call i32 @strlen(i8* %296)
store i32 %297, i32* %10
store i32 0, i32* %6
br label %298
298: ; preds = %342, %295
%299 = load i32, i32* %6
%300 = load i32, i32* %10
%301 = icmp slt i32 %299, %300
br i1 %301, label %302, label %345
302: ; preds = %298
store i32 0, i32* %7
store i32 1, i32* %8
br label %303
303: ; preds = %336, %302
%304 = load i32, i32* %8
%305 = load i32, i32* %10
%306 = icmp sle i32 %304, %305
br i1 %306, label %307, label %341
307: ; preds = %303
%308 = load i32, i32* %7
%309 = sext i32 %308 to i64
%310 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %309
%311 = load i8, i8* %310
%312 = sext i8 %311 to i32
%313 = load i32, i32* %8
%314 = sext i32 %313 to i64
%315 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %314
%316 = load i8, i8* %315
%317 = sext i8 %316 to i32
%318 = icmp sgt i32 %312, %317
br i1 %318, label %319, label %335
319: ; preds = %307
%320 = load i32, i32* %7
%321 = sext i32 %320 to i64
%322 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %321
%323 = load i8, i8* %322
store i8 %323, i8* %3
%324 = load i32, i32* %8
%325 = sext i32 %324 to i64
%326 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %325
%327 = load i8, i8* %326
%328 = load i32, i32* %7
%329 = sext i32 %328 to i64
%330 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %329
store i8 %327, i8* %330
%331 = load i8, i8* %3
%332 = load i32, i32* %8
%333 = sext i32 %332 to i64
%334 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %333
store i8 %331, i8* %334
br label %335
335: ; preds = %319, %307
br label %336
336: ; preds = %335
%337 = load i32, i32* %7
%338 = add nsw i32 %337, 1
store i32 %338, i32* %7
%339 = load i32, i32* %8
%340 = add nsw i32 %339, 1
store i32 %340, i32* %8
br label %303
341: ; preds = %303
br label %342
342: ; preds = %341
%343 = load i32, i32* %6
%344 = add nsw i32 %343, 1
store i32 %344, i32* %6
br label %298
345: ; preds = %298
store i32 0, i32* %6
br label %346
346: ; preds = %406, %345
%347 = load i32, i32* %6
%348 = load i32, i32* %10
%349 = icmp slt i32 %347, %348
br i1 %349, label %350, label %409
350: ; preds = %346
%351 = load i32, i32* %6
%352 = sext i32 %351 to i64
%353 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %352
%354 = load i8, i8* %353
%355 = sext i8 %354 to i32
%356 = icmp eq i32 %355, 52
br i1 %356, label %357, label %361
357: ; preds = %350
%358 = load i32, i32* %6
%359 = sext i32 %358 to i64
%360 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %359
store i8 65, i8* %360
br label %361
361: ; preds = %357, %350
%362 = load i32, i32* %6
%363 = sext i32 %362 to i64
%364 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %363
%365 = load i8, i8* %364
%366 = sext i8 %365 to i32
%367 = icmp eq i32 %366, 51
br i1 %367, label %368, label %372
368: ; preds = %361
%369 = load i32, i32* %6
%370 = sext i32 %369 to i64
%371 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %370
store i8 75, i8* %371
br label %372
372: ; preds = %368, %361
%373 = load i32, i32* %6
%374 = sext i32 %373 to i64
%375 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %374
%376 = load i8, i8* %375
%377 = sext i8 %376 to i32
%378 = icmp eq i32 %377, 50
br i1 %378, label %379, label %383
379: ; preds = %372
%380 = load i32, i32* %6
%381 = sext i32 %380 to i64
%382 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %381
store i8 81, i8* %382
br label %383
383: ; preds = %379, %372
%384 = load i32, i32* %6
%385 = sext i32 %384 to i64
%386 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %385
%387 = load i8, i8* %386
%388 = sext i8 %387 to i32
%389 = icmp eq i32 %388, 49
br i1 %389, label %390, label %394
390: ; preds = %383
%391 = load i32, i32* %6
%392 = sext i32 %391 to i64
%393 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %392
store i8 74, i8* %393
br label %394
394: ; preds = %390, %383
%395 = load i32, i32* %6
%396 = sext i32 %395 to i64
%397 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %396
%398 = load i8, i8* %397
%399 = sext i8 %398 to i32
%400 = icmp eq i32 %399, 48
br i1 %400, label %401, label %405
401: ; preds = %394
%402 = load i32, i32* %6
%403 = sext i32 %402 to i64
%404 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %403
store i8 84, i8* %404
br label %405
405: ; preds = %401, %394
br label %406
406: ; preds = %405
%407 = load i32, i32* %6
%408 = add nsw i32 %407, 1
store i32 %408, i32* %6
br label %346
409: ; preds = %346
%410 = getelementptr inbounds [27 x i8], [27 x i8]* %5, i64 0, i64 0
%411 = call i32 @strlen(i8* %410)
store i32 %411, i32* %13
%412 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 0
%413 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 0
%414 = call i32 @strcat(i8* %412, i8* %413)
store i32 0, i32* %6
br label %415
415: ; preds = %427, %409
%416 = load i32, i32* %6
%417 = load i32, i32* %10
%418 = icmp slt i32 %416, %417
br i1 %418, label %419, label %432
419: ; preds = %415
%420 = load i32, i32* %6
%421 = sext i32 %420 to i64
%422 = getelementptr inbounds [27 x i8], [27 x i8]* %4, i64 0, i64 %421
%423 = load i8, i8* %422
%424 = load i32, i32* %14
%425 = sext i32 %424 to i64
%426 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %425
store i8 %423, i8* %426
br label %427
427: ; preds = %419
%428 = load i32, i32* %6
%429 = add nsw i32 %428, 1
store i32 %429, i32* %6
%430 = load i32, i32* %14
%431 = add nsw i32 %430, 1
store i32 %431, i32* %14
br label %415
432: ; preds = %415
store i32 0, i32* %6
br label %433
433: ; preds = %445, %432
%434 = load i32, i32* %6
%435 = load i32, i32* %9
%436 = add nsw i32 %435, 1
%437 = icmp sle i32 %434, %436
br i1 %437, label %438, label %448
438: ; preds = %433
%439 = load i32, i32* %6
%440 = sext i32 %439 to i64
%441 = getelementptr inbounds [27 x i8], [27 x i8]* %2, i64 0, i64 %440
%442 = load i8, i8* %441
%443 = sext i8 %442 to i32
%444 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32 %443)
br label %445
445: ; preds = %438
%446 = load i32, i32* %6
%447 = add nsw i32 %446, 1
store i32 %447, i32* %6
br label %433
448: ; preds = %433
%449 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
ret i32 0
}

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