#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 getchar();
int /*<<< orphan*/ printf(char *);
int main() {
  char c;
  c = getchar();
  if (c >= 'a' || c <= 'z') {
    if (c == 'a')
      printf("z");
    if (c == 'b')
      printf("y");
    if (c == 'c')
      printf("x");
    if (c == 'd')
      printf("w");
    if (c == 'e')
      printf("v");
    if (c == 'f')
      printf("u");
    if (c == 'g')
      printf("t");
    if (c == 'h')
      printf("s");
    if (c == 'i')
      printf("r");
    if (c == 'j')
      printf("q");
    if (c == 'k')
      printf("p");
    if (c == 'l')
      printf("o");
    if (c == 'm')
      printf("n");
    if (c == 'n')
      printf("m");
    if (c == 'o')
      printf("l");
    if (c == 'p')
      printf("k");
    if (c == 'q')
      printf("j");
    if (c == 'r')
      printf("i");
    if (c == 's')
      printf("h");
    if (c == 't')
      printf("g");
    if (c == 'u')
      printf("f");
    if (c == 'v')
      printf("e");
    if (c == 'w')
      printf("d");
    if (c == 'x')
      printf("c");
    if (c == 'y')
      printf("b");
    if (c == 'z')
      printf("a");
  } else
    printf("not acceptable");
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
movl   $0x0,-0x4(%rbp)
mov    $0x0,%al
call   1040 <getchar@plt>
mov    %al,-0x5(%rbp)
movsbl -0x5(%rbp),%eax
cmp    $0x61,%eax
jge    1153 <main+0x33>
movsbl -0x5(%rbp),%eax
cmp    $0x7a,%eax
jg     13e2 <main+0x2c2>
movsbl -0x5(%rbp),%eax
cmp    $0x61,%eax
jne    116c <main+0x4c>
lea    0xe99(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x62,%eax
jne    1185 <main+0x65>
lea    0xe82(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x63,%eax
jne    119e <main+0x7e>
lea    0xe6b(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x64,%eax
jne    11b7 <main+0x97>
lea    0xe54(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x65,%eax
jne    11d0 <main+0xb0>
lea    0xe3d(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x66,%eax
jne    11e9 <main+0xc9>
lea    0xe26(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x67,%eax
jne    1202 <main+0xe2>
lea    0xe0f(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x68,%eax
jne    121b <main+0xfb>
lea    0xdf8(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x69,%eax
jne    1234 <main+0x114>
lea    0xde1(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x6a,%eax
jne    124d <main+0x12d>
lea    0xdca(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x6b,%eax
jne    1266 <main+0x146>
lea    0xdb3(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x6c,%eax
jne    127f <main+0x15f>
lea    0xd9c(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x6d,%eax
jne    1298 <main+0x178>
lea    0xd85(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x6e,%eax
jne    12b1 <main+0x191>
lea    0xd6e(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x6f,%eax
jne    12ca <main+0x1aa>
lea    0xd57(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x70,%eax
jne    12e3 <main+0x1c3>
lea    0xd40(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x71,%eax
jne    12fc <main+0x1dc>
lea    0xd29(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x72,%eax
jne    1315 <main+0x1f5>
lea    0xd12(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x73,%eax
jne    132e <main+0x20e>
lea    0xcfb(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x74,%eax
jne    1347 <main+0x227>
lea    0xce4(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x75,%eax
jne    1360 <main+0x240>
lea    0xccd(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x76,%eax
jne    1379 <main+0x259>
lea    0xccb(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x77,%eax
jne    1392 <main+0x272>
lea    0xc9d(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x78,%eax
jne    13ab <main+0x28b>
lea    0xc86(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x79,%eax
jne    13c4 <main+0x2a4>
lea    0xc6f(%rip),%rdi
call   1030 <printf@plt>
movsbl -0x5(%rbp),%eax
cmp    $0x7a,%eax
jne    13dd <main+0x2bd>
lea    0xc58(%rip),%rdi
call   1030 <printf@plt>
jmp    13ee <main+0x2ce>
lea    0xc49(%rip),%rdi
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rax
xor    %eax,%eax
call   1040 <getchar@plt>
add    $0x9f,%al
cmp    $0x19,%al
ja     113d <main+0x1d>
movzbl %al,%eax
mov    $0x7a,%edi
sub    %eax,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
@.str = [2 x i8] c"z\00"
@.str.1 = [2 x i8] c"y\00"
@.str.2 = [2 x i8] c"x\00"
@.str.3 = [2 x i8] c"w\00"
@.str.4 = [2 x i8] c"v\00"
@.str.5 = [2 x i8] c"u\00"
@.str.6 = [2 x i8] c"t\00"
@.str.7 = [2 x i8] c"s\00"
@.str.8 = [2 x i8] c"r\00"
@.str.9 = [2 x i8] c"q\00"
@.str.10 = [2 x i8] c"p\00"
@.str.11 = [2 x i8] c"o\00"
@.str.12 = [2 x i8] c"n\00"
@.str.13 = [2 x i8] c"m\00"
@.str.14 = [2 x i8] c"l\00"
@.str.15 = [2 x i8] c"k\00"
@.str.16 = [2 x i8] c"j\00"
@.str.17 = [2 x i8] c"i\00"
@.str.18 = [2 x i8] c"h\00"
@.str.19 = [2 x i8] c"g\00"
@.str.20 = [2 x i8] c"f\00"
@.str.21 = [2 x i8] c"e\00"
@.str.22 = [2 x i8] c"d\00"
@.str.23 = [2 x i8] c"c\00"
@.str.24 = [2 x i8] c"b\00"
@.str.25 = [2 x i8] c"a\00"
@.str.26 = [15 x i8] c"not acceptable\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i8
store i32 0, i32* %1
%3 = call signext i8 (...) @getchar()
store i8 %3, i8* %2
%4 = load i8, i8* %2
%5 = sext i8 %4 to i32
%6 = icmp sge i32 %5, 97
br i1 %6, label %11, label %7
7: ; preds = %0
%8 = load i8, i8* %2
%9 = sext i8 %8 to i32
%10 = icmp sle i32 %9, 122
br i1 %10, label %11, label %168
11: ; preds = %7, %0
%12 = load i8, i8* %2
%13 = sext i8 %12 to i32
%14 = icmp eq i32 %13, 97
br i1 %14, label %15, label %17
15: ; preds = %11
%16 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
br label %17
17: ; preds = %15, %11
%18 = load i8, i8* %2
%19 = sext i8 %18 to i32
%20 = icmp eq i32 %19, 98
br i1 %20, label %21, label %23
21: ; preds = %17
%22 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %23
23: ; preds = %21, %17
%24 = load i8, i8* %2
%25 = sext i8 %24 to i32
%26 = icmp eq i32 %25, 99
br i1 %26, label %27, label %29
27: ; preds = %23
%28 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.2, i64 0, i64 0))
br label %29
29: ; preds = %27, %23
%30 = load i8, i8* %2
%31 = sext i8 %30 to i32
%32 = icmp eq i32 %31, 100
br i1 %32, label %33, label %35
33: ; preds = %29
%34 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.3, i64 0, i64 0))
br label %35
35: ; preds = %33, %29
%36 = load i8, i8* %2
%37 = sext i8 %36 to i32
%38 = icmp eq i32 %37, 101
br i1 %38, label %39, label %41
39: ; preds = %35
%40 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.4, i64 0, i64 0))
br label %41
41: ; preds = %39, %35
%42 = load i8, i8* %2
%43 = sext i8 %42 to i32
%44 = icmp eq i32 %43, 102
br i1 %44, label %45, label %47
45: ; preds = %41
%46 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.5, i64 0, i64 0))
br label %47
47: ; preds = %45, %41
%48 = load i8, i8* %2
%49 = sext i8 %48 to i32
%50 = icmp eq i32 %49, 103
br i1 %50, label %51, label %53
51: ; preds = %47
%52 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.6, i64 0, i64 0))
br label %53
53: ; preds = %51, %47
%54 = load i8, i8* %2
%55 = sext i8 %54 to i32
%56 = icmp eq i32 %55, 104
br i1 %56, label %57, label %59
57: ; preds = %53
%58 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0))
br label %59
59: ; preds = %57, %53
%60 = load i8, i8* %2
%61 = sext i8 %60 to i32
%62 = icmp eq i32 %61, 105
br i1 %62, label %63, label %65
63: ; preds = %59
%64 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.8, i64 0, i64 0))
br label %65
65: ; preds = %63, %59
%66 = load i8, i8* %2
%67 = sext i8 %66 to i32
%68 = icmp eq i32 %67, 106
br i1 %68, label %69, label %71
69: ; preds = %65
%70 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.9, i64 0, i64 0))
br label %71
71: ; preds = %69, %65
%72 = load i8, i8* %2
%73 = sext i8 %72 to i32
%74 = icmp eq i32 %73, 107
br i1 %74, label %75, label %77
75: ; preds = %71
%76 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.10, i64 0, i64 0))
br label %77
77: ; preds = %75, %71
%78 = load i8, i8* %2
%79 = sext i8 %78 to i32
%80 = icmp eq i32 %79, 108
br i1 %80, label %81, label %83
81: ; preds = %77
%82 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.11, i64 0, i64 0))
br label %83
83: ; preds = %81, %77
%84 = load i8, i8* %2
%85 = sext i8 %84 to i32
%86 = icmp eq i32 %85, 109
br i1 %86, label %87, label %89
87: ; preds = %83
%88 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i64 0, i64 0))
br label %89
89: ; preds = %87, %83
%90 = load i8, i8* %2
%91 = sext i8 %90 to i32
%92 = icmp eq i32 %91, 110
br i1 %92, label %93, label %95
93: ; preds = %89
%94 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.13, i64 0, i64 0))
br label %95
95: ; preds = %93, %89
%96 = load i8, i8* %2
%97 = sext i8 %96 to i32
%98 = icmp eq i32 %97, 111
br i1 %98, label %99, label %101
99: ; preds = %95
%100 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.14, i64 0, i64 0))
br label %101
101: ; preds = %99, %95
%102 = load i8, i8* %2
%103 = sext i8 %102 to i32
%104 = icmp eq i32 %103, 112
br i1 %104, label %105, label %107
105: ; preds = %101
%106 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.15, i64 0, i64 0))
br label %107
107: ; preds = %105, %101
%108 = load i8, i8* %2
%109 = sext i8 %108 to i32
%110 = icmp eq i32 %109, 113
br i1 %110, label %111, label %113
111: ; preds = %107
%112 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.16, i64 0, i64 0))
br label %113
113: ; preds = %111, %107
%114 = load i8, i8* %2
%115 = sext i8 %114 to i32
%116 = icmp eq i32 %115, 114
br i1 %116, label %117, label %119
117: ; preds = %113
%118 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.17, i64 0, i64 0))
br label %119
119: ; preds = %117, %113
%120 = load i8, i8* %2
%121 = sext i8 %120 to i32
%122 = icmp eq i32 %121, 115
br i1 %122, label %123, label %125
123: ; preds = %119
%124 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.18, i64 0, i64 0))
br label %125
125: ; preds = %123, %119
%126 = load i8, i8* %2
%127 = sext i8 %126 to i32
%128 = icmp eq i32 %127, 116
br i1 %128, label %129, label %131
129: ; preds = %125
%130 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.19, i64 0, i64 0))
br label %131
131: ; preds = %129, %125
%132 = load i8, i8* %2
%133 = sext i8 %132 to i32
%134 = icmp eq i32 %133, 117
br i1 %134, label %135, label %137
135: ; preds = %131
%136 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.20, i64 0, i64 0))
br label %137
137: ; preds = %135, %131
%138 = load i8, i8* %2
%139 = sext i8 %138 to i32
%140 = icmp eq i32 %139, 118
br i1 %140, label %141, label %143
141: ; preds = %137
%142 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.21, i64 0, i64 0))
br label %143
143: ; preds = %141, %137
%144 = load i8, i8* %2
%145 = sext i8 %144 to i32
%146 = icmp eq i32 %145, 119
br i1 %146, label %147, label %149
147: ; preds = %143
%148 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.22, i64 0, i64 0))
br label %149
149: ; preds = %147, %143
%150 = load i8, i8* %2
%151 = sext i8 %150 to i32
%152 = icmp eq i32 %151, 120
br i1 %152, label %153, label %155
153: ; preds = %149
%154 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.23, i64 0, i64 0))
br label %155
155: ; preds = %153, %149
%156 = load i8, i8* %2
%157 = sext i8 %156 to i32
%158 = icmp eq i32 %157, 121
br i1 %158, label %159, label %161
159: ; preds = %155
%160 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.24, i64 0, i64 0))
br label %161
161: ; preds = %159, %155
%162 = load i8, i8* %2
%163 = sext i8 %162 to i32
%164 = icmp eq i32 %163, 122
br i1 %164, label %165, label %167
165: ; preds = %161
%166 = call i32 @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.25, i64 0, i64 0))
br label %167
167: ; preds = %165, %161
br label %170
168: ; preds = %7
%169 = call i32 @printf(i8* getelementptr inbounds ([15 x i8], [15 x i8]* @.str.26, i64 0, i64 0))
br label %170
170: ; preds = %168, %167
ret i32 0
}

LLVM IR (-O2):
define i32 @main() {
%1 = tail call signext i8 (...) @getchar()
%2 = add i8 %1, -97
%3 = icmp ult i8 %2, 26
br i1 %3, label %4, label %8
4: ; preds = %0
%5 = zext i8 %2 to i32
%6 = sub nsw i32 122, %5
%7 = tail call i32 @putchar(i32 %6)
br label %8
8: ; preds = %0, %4
ret i32 0
}