#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 */
char EOF;
char getchar();
int /*<<< orphan*/ printf(char *, int, int);
int main() {
  int data[26][2];
  int i, c, d;
  int swap[2];
  char ch;
  for (i = 0; i < 26; i++) {
    data[i][0] = i;
    data[i][1] = 0;
  }
  while (1) {
    ch = getchar();
    if (ch == EOF) {
      break;
    }
    if (ch >= 'A' && ch <= 'Z') {
      ch = ch + ('a' - 'A');
    }
    if (ch >= 'a' && ch <= 'z') {
      data[ch - 'a'][1]++;
    }
  }
  for (c = 0; c < 25; c++) {
    for (d = 0; d < 25 - c - 1; d++) {
      if (data[d][1] < data[d + 1][1]) {
        swap[0] = data[d][0];
        swap[1] = data[d][1];
        data[d][0] = data[d + 1][0];
        data[d][1] = data[d + 1][1];
        data[d + 1][0] = swap[0];
        data[d + 1][1] = swap[1];
      } else if (data[d][1] == data[d + 1][1]) {
        if (data[d][0] > data[d + 1][0]) {
          swap[0] = data[d][0];
          swap[1] = data[d][1];
          data[d][0] = data[d + 1][0];
          data[d][1] = data[d + 1][1];
          data[d + 1][0] = swap[0];
          data[d + 1][1] = swap[1];
        }
      }
    }
  }
  for (i = 0; i < 26; i++) {
    printf("%c: %d\n", data[i][0] + 'a', data[i][1]);
  }
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x100,%rsp
movl   $0x0,-0x4(%rbp)
movl   $0x0,-0xe4(%rbp)
cmpl   $0x1a,-0xe4(%rbp)
jge    1183 <main+0x63>
mov    -0xe4(%rbp),%ecx
movslq -0xe4(%rbp),%rax
mov    %ecx,-0xe0(%rbp,%rax,8)
movslq -0xe4(%rbp),%rax
movl   $0x0,-0xdc(%rbp,%rax,8)
mov    -0xe4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe4(%rbp)
jmp    113c <main+0x1c>
jmp    1188 <main+0x68>
mov    $0x0,%al
call   1040 <getchar@plt>
mov    %al,-0xf5(%rbp)
movsbl -0xf5(%rbp),%eax
mov    0x2e45(%rip),%rcx
movsbl (%rcx),%ecx
cmp    %ecx,%eax
jne    11b3 <main+0x93>
jmp    1225 <main+0x105>
movsbl -0xf5(%rbp),%eax
cmp    $0x41,%eax
jl     11e3 <main+0xc3>
movsbl -0xf5(%rbp),%eax
cmp    $0x5a,%eax
jg     11e3 <main+0xc3>
movsbl -0xf5(%rbp),%eax
add    $0x20,%eax
mov    %al,-0xf5(%rbp)
movsbl -0xf5(%rbp),%eax
cmp    $0x61,%eax
jl     1220 <main+0x100>
movsbl -0xf5(%rbp),%eax
cmp    $0x7a,%eax
jg     1220 <main+0x100>
movsbl -0xf5(%rbp),%eax
sub    $0x61,%eax
cltq
mov    -0xdc(%rbp,%rax,8),%ecx
add    $0x1,%ecx
mov    %ecx,-0xdc(%rbp,%rax,8)
jmp    1188 <main+0x68>
movl   $0x0,-0xe8(%rbp)
cmpl   $0x19,-0xe8(%rbp)
jge    1448 <main+0x328>
movl   $0x0,-0xec(%rbp)
mov    -0xec(%rbp),%eax
mov    $0x19,%ecx
sub    -0xe8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    142f <main+0x30f>
movslq -0xec(%rbp),%rax
mov    -0xdc(%rbp,%rax,8),%eax
mov    -0xec(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmp    -0xdc(%rbp,%rcx,8),%eax
jge    1326 <main+0x206>
movslq -0xec(%rbp),%rax
mov    -0xe0(%rbp,%rax,8),%eax
mov    %eax,-0xf4(%rbp)
movslq -0xec(%rbp),%rax
mov    -0xdc(%rbp,%rax,8),%eax
mov    %eax,-0xf0(%rbp)
mov    -0xec(%rbp),%eax
add    $0x1,%eax
cltq
mov    -0xe0(%rbp,%rax,8),%ecx
movslq -0xec(%rbp),%rax
mov    %ecx,-0xe0(%rbp,%rax,8)
mov    -0xec(%rbp),%eax
add    $0x1,%eax
cltq
mov    -0xdc(%rbp,%rax,8),%ecx
movslq -0xec(%rbp),%rax
mov    %ecx,-0xdc(%rbp,%rax,8)
mov    -0xf4(%rbp),%ecx
mov    -0xec(%rbp),%eax
add    $0x1,%eax
cltq
mov    %ecx,-0xe0(%rbp,%rax,8)
mov    -0xf0(%rbp),%ecx
mov    -0xec(%rbp),%eax
add    $0x1,%eax
cltq
mov    %ecx,-0xdc(%rbp,%rax,8)
jmp    1416 <main+0x2f6>
movslq -0xec(%rbp),%rax
mov    -0xdc(%rbp,%rax,8),%eax
mov    -0xec(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmp    -0xdc(%rbp,%rcx,8),%eax
jne    1411 <main+0x2f1>
movslq -0xec(%rbp),%rax
mov    -0xe0(%rbp,%rax,8),%eax
mov    -0xec(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmp    -0xe0(%rbp,%rcx,8),%eax
jle    140c <main+0x2ec>
movslq -0xec(%rbp),%rax
mov    -0xe0(%rbp,%rax,8),%eax
mov    %eax,-0xf4(%rbp)
movslq -0xec(%rbp),%rax
mov    -0xdc(%rbp,%rax,8),%eax
mov    %eax,-0xf0(%rbp)
mov    -0xec(%rbp),%eax
add    $0x1,%eax
cltq
mov    -0xe0(%rbp,%rax,8),%ecx
movslq -0xec(%rbp),%rax
mov    %ecx,-0xe0(%rbp,%rax,8)
mov    -0xec(%rbp),%eax
add    $0x1,%eax
cltq
mov    -0xdc(%rbp,%rax,8),%ecx
movslq -0xec(%rbp),%rax
mov    %ecx,-0xdc(%rbp,%rax,8)
mov    -0xf4(%rbp),%ecx
mov    -0xec(%rbp),%eax
add    $0x1,%eax
cltq
mov    %ecx,-0xe0(%rbp,%rax,8)
mov    -0xf0(%rbp),%ecx
mov    -0xec(%rbp),%eax
add    $0x1,%eax
cltq
mov    %ecx,-0xdc(%rbp,%rax,8)
jmp    1411 <main+0x2f1>
jmp    1416 <main+0x2f6>
jmp    141b <main+0x2fb>
mov    -0xec(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xec(%rbp)
jmp    1246 <main+0x126>
jmp    1434 <main+0x314>
mov    -0xe8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe8(%rbp)
jmp    122f <main+0x10f>
movl   $0x0,-0xe4(%rbp)
cmpl   $0x1a,-0xe4(%rbp)
jge    149e <main+0x37e>
movslq -0xe4(%rbp),%rax
mov    -0xe0(%rbp,%rax,8),%esi
add    $0x61,%esi
movslq -0xe4(%rbp),%rax
mov    -0xdc(%rbp,%rax,8),%edx
lea    0xb7b(%rip),%rdi
call   1030 <printf@plt>
mov    -0xe4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xe4(%rbp)
jmp    1452 <main+0x332>
xor    %eax,%eax
add    $0x100,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %r14
push   %rbx
sub    $0xd8,%rsp
movaps 0xecf(%rip),%xmm0
movaps %xmm0,(%rsp)
movaps 0xed4(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movaps 0xed8(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0xedc(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0xee0(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0xee4(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0xee8(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xeec(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xef0(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xef1(%rip),%xmm0
movaps %xmm0,0x90(%rsp)
movaps 0xef2(%rip),%xmm0
movaps %xmm0,0xa0(%rsp)
movaps 0xef3(%rip),%xmm0
movaps %xmm0,0xb0(%rsp)
movaps 0xef4(%rip),%xmm0
movaps %xmm0,0xc0(%rsp)
xor    %eax,%eax
call   1040 <getchar@plt>
mov    0x2e06(%rip),%rbx
jmp    11f7 <main+0xd7>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
xor    %eax,%eax
call   1040 <getchar@plt>
cmp    (%rbx),%al
je     1222 <main+0x102>
lea    -0x41(%rax),%ecx
lea    0x20(%rax),%edx
cmp    $0x1a,%cl
movzbl %al,%ecx
movzbl %dl,%eax
cmovae %ecx,%eax
lea    -0x61(%rax),%ecx
cmp    $0x19,%cl
ja     11f0 <main+0xd0>
movzbl %al,%eax
add    $0xffffff9f,%eax
addl   $0x1,0x4(%rsp,%rax,8)
jmp    11f0 <main+0xd0>
xor    %r8d,%r8d
jmp    123a <main+0x11a>
nopw   0x0(%rax,%rax,1)
add    $0x1,%r8
cmp    $0x19,%r8
je     12a8 <main+0x188>
cmp    $0x17,%r8
ja     1230 <main+0x110>
mov    $0x18,%r9d
sub    %r8,%r9
mov    0x4(%rsp),%ebx
xor    %edx,%edx
jmp    127f <main+0x15f>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    (%rsp,%rdi,8),%eax
mov    0x8(%rsp,%rdi,8),%ecx
mov    %ecx,(%rsp,%rdi,8)
mov    %esi,0x4(%rsp,%rdi,8)
mov    %eax,0x8(%rsp,%rdi,8)
mov    %ebx,0xc(%rsp,%rdi,8)
mov    %ebx,%esi
mov    %esi,%ebx
cmp    %r9,%rdx
jae    1230 <main+0x110>
mov    %rdx,%rdi
add    $0x1,%rdx
mov    0xc(%rsp,%rdi,8),%esi
cmp    %esi,%ebx
jl     1260 <main+0x140>
jne    1278 <main+0x158>
mov    (%rsp,%rdi,8),%esi
mov    0x8(%rsp,%rdi,8),%eax
cmp    %eax,%esi
jle    1276 <main+0x156>
mov    %eax,(%rsp,%rdi,8)
mov    %ebx,0x4(%rsp,%rdi,8)
mov    %esi,0x8(%rsp,%rdi,8)
jmp    1272 <main+0x152>
xor    %ebx,%ebx
lea    0xe1f(%rip),%r14
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    (%rsp,%rbx,8),%esi
mov    0x4(%rsp,%rbx,8),%edx
add    $0x61,%esi
mov    %r14,%rdi
call   1030 <printf@plt>
add    $0x1,%rbx
cmp    $0x1a,%rbx
jne    12c0 <main+0x1a0>
xor    %eax,%eax
add    $0xd8,%rsp
pop    %rbx
pop    %r14
ret

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

LLVM IR (-O2):
@EOF = global i8 0
@.str = [8 x i8] c"%c: %d\0A\00"
define i32 @main() {
%1 = alloca [26 x [2 x i32]]
%2 = bitcast [26 x [2 x i32]]* %1 to i8*
%3 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 0, i64 1
%4 = bitcast [26 x [2 x i32]]* %1 to <4 x i32>*
store <4 x i32> <i32 0, i32 0, i32 1, i32 0>, <4 x i32>* %4
%5 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 2, i64 0
%6 = bitcast i32* %5 to <4 x i32>*
store <4 x i32> <i32 2, i32 0, i32 3, i32 0>, <4 x i32>* %6
%7 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 4, i64 0
%8 = bitcast i32* %7 to <4 x i32>*
store <4 x i32> <i32 4, i32 0, i32 5, i32 0>, <4 x i32>* %8
%9 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 6, i64 0
%10 = bitcast i32* %9 to <4 x i32>*
store <4 x i32> <i32 6, i32 0, i32 7, i32 0>, <4 x i32>* %10
%11 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 8, i64 0
%12 = bitcast i32* %11 to <4 x i32>*
store <4 x i32> <i32 8, i32 0, i32 9, i32 0>, <4 x i32>* %12
%13 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 10, i64 0
%14 = bitcast i32* %13 to <4 x i32>*
store <4 x i32> <i32 10, i32 0, i32 11, i32 0>, <4 x i32>* %14
%15 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 12, i64 0
%16 = bitcast i32* %15 to <4 x i32>*
store <4 x i32> <i32 12, i32 0, i32 13, i32 0>, <4 x i32>* %16
%17 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 14, i64 0
%18 = bitcast i32* %17 to <4 x i32>*
store <4 x i32> <i32 14, i32 0, i32 15, i32 0>, <4 x i32>* %18
%19 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 16, i64 0
%20 = bitcast i32* %19 to <4 x i32>*
store <4 x i32> <i32 16, i32 0, i32 17, i32 0>, <4 x i32>* %20
%21 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 18, i64 0
%22 = bitcast i32* %21 to <4 x i32>*
store <4 x i32> <i32 18, i32 0, i32 19, i32 0>, <4 x i32>* %22
%23 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 20, i64 0
%24 = bitcast i32* %23 to <4 x i32>*
store <4 x i32> <i32 20, i32 0, i32 21, i32 0>, <4 x i32>* %24
%25 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 22, i64 0
%26 = bitcast i32* %25 to <4 x i32>*
store <4 x i32> <i32 22, i32 0, i32 23, i32 0>, <4 x i32>* %26
%27 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 24, i64 0
%28 = bitcast i32* %27 to <4 x i32>*
store <4 x i32> <i32 24, i32 0, i32 25, i32 0>, <4 x i32>* %28
%29 = tail call signext i8 (...) @getchar()
%30 = load i8, i8* @EOF
%31 = icmp eq i8 %29, %30
br i1 %31, label %51, label %32
32: ; preds = %0, %47
%33 = phi i8 [ %48, %47 ], [ %29, %0 ]
%34 = add i8 %33, -65
%35 = icmp ult i8 %34, 26
%36 = add i8 %33, 32
%37 = select i1 %35, i8 %36, i8 %33
%38 = add i8 %37, -97
%39 = icmp ult i8 %38, 26
br i1 %39, label %40, label %47
40: ; preds = %32
%41 = zext i8 %37 to i64
%42 = add nuw nsw i64 %41, 4294967199
%43 = and i64 %42, 4294967295
%44 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 %43, i64 1
%45 = load i32, i32* %44
%46 = add nsw i32 %45, 1
store i32 %46, i32* %44
br label %47
47: ; preds = %40, %32
%48 = tail call signext i8 (...) @getchar()
%49 = load i8, i8* @EOF
%50 = icmp eq i8 %48, %49
br i1 %50, label %51, label %32
51: ; preds = %47, %0
br label %52
52: ; preds = %51, %86
%53 = phi i64 [ %87, %86 ], [ 0, %51 ]
%54 = sub nuw nsw i64 24, %53
%55 = icmp ult i64 %53, 24
br i1 %55, label %56, label %86
56: ; preds = %52
%57 = load i32, i32* %3
br label %58
58: ; preds = %56, %83
%59 = phi i32 [ %57, %56 ], [ %84, %83 ]
%60 = phi i64 [ 0, %56 ], [ %63, %83 ]
%61 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 %60
%62 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 %60, i64 1
%63 = add nuw nsw i64 %60, 1
%64 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 %63
%65 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 %63, i64 1
%66 = load i32, i32* %65
%67 = icmp slt i32 %59, %66
br i1 %67, label %68, label %73
68: ; preds = %58
%69 = getelementptr inbounds [2 x i32], [2 x i32]* %61, i64 0, i64 0
%70 = load i32, i32* %69
%71 = getelementptr inbounds [2 x i32], [2 x i32]* %64, i64 0, i64 0
%72 = load i32, i32* %71
store i32 %72, i32* %69
store i32 %66, i32* %62
store i32 %70, i32* %71
br label %82
73: ; preds = %58
%74 = icmp eq i32 %59, %66
br i1 %74, label %75, label %83
75: ; preds = %73
%76 = getelementptr inbounds [2 x i32], [2 x i32]* %61, i64 0, i64 0
%77 = load i32, i32* %76
%78 = getelementptr inbounds [2 x i32], [2 x i32]* %64, i64 0, i64 0
%79 = load i32, i32* %78
%80 = icmp sgt i32 %77, %79
br i1 %80, label %81, label %83
81: ; preds = %75
store i32 %79, i32* %76
store i32 %59, i32* %62
store i32 %77, i32* %78
br label %82
82: ; preds = %81, %68
store i32 %59, i32* %65
br label %83
83: ; preds = %82, %75, %73
%84 = phi i32 [ %59, %75 ], [ %66, %73 ], [ %59, %82 ]
%85 = icmp ult i64 %63, %54
br i1 %85, label %58, label %86
86: ; preds = %83, %52
%87 = add nuw nsw i64 %53, 1
%88 = icmp eq i64 %87, 25
br i1 %88, label %89, label %52
89: ; preds = %86, %89
%90 = phi i64 [ %97, %89 ], [ 0, %86 ]
%91 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 %90, i64 0
%92 = load i32, i32* %91
%93 = add nsw i32 %92, 97
%94 = getelementptr inbounds [26 x [2 x i32]], [26 x [2 x i32]]* %1, i64 0, i64 %90, i64 1
%95 = load i32, i32* %94
%96 = tail call i32 @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str, i64 0, i64 0), i32 %93, i32 %95)
%97 = add nuw nsw i64 %90, 1
%98 = icmp eq i64 %97, 26
br i1 %98, label %99, label %89
99: ; preds = %89
ret i32 0
}