char *OneToThree(char One) {
  if (One == 'A')
    return ("ALA");
  else if (One == 'R')
    return ("ARG");
  else if (One == 'N')
    return ("ASN");
  else if (One == 'D')
    return ("ASP");
  else if (One == 'B')
    return ("ASX");
  else if (One == 'C')
    return ("CYS");
  else if (One == 'Q')
    return ("GLN");
  else if (One == 'E')
    return ("GLU");
  else if (One == 'Z')
    return ("GLX");
  else if (One == 'G')
    return ("GLY");
  else if (One == 'H')
    return ("HIS");
  else if (One == 'I')
    return ("ILE");
  else if (One == 'L')
    return ("LEU");
  else if (One == 'K')
    return ("LYS");
  else if (One == 'M')
    return ("MET");
  else if (One == 'P')
    return ("PRO");
  else if (One == 'F')
    return ("PHE");
  else if (One == 'S')
    return ("SER");
  else if (One == 'T')
    return ("THR");
  else if (One == 'W')
    return ("TRP");
  else if (One == 'Y')
    return ("TYR");
  else if (One == 'V')
    return ("VAL");
  else if (One == 'X')
    return ("UNK");
  else
    return ("***");
}


x86 assembly (clang, -O0):
<OneToThree>:
push   %rbp
mov    %rsp,%rbp
mov    %dil,%al
mov    %al,-0x9(%rbp)
movsbl -0x9(%rbp),%eax
cmp    $0x41,%eax
jne    1127 <OneToThree+0x27>
lea    0xee2(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x52,%eax
jne    1144 <OneToThree+0x44>
lea    0xec9(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x4e,%eax
jne    1161 <OneToThree+0x61>
lea    0xeb0(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x44,%eax
jne    117e <OneToThree+0x7e>
lea    0xe97(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x42,%eax
jne    119b <OneToThree+0x9b>
lea    0xe7e(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x43,%eax
jne    11b8 <OneToThree+0xb8>
lea    0xe65(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x51,%eax
jne    11d5 <OneToThree+0xd5>
lea    0xe4c(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x45,%eax
jne    11f2 <OneToThree+0xf2>
lea    0xe33(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x5a,%eax
jne    120f <OneToThree+0x10f>
lea    0xe1a(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x47,%eax
jne    122c <OneToThree+0x12c>
lea    0xe01(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x48,%eax
jne    1249 <OneToThree+0x149>
lea    0xde8(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x49,%eax
jne    1266 <OneToThree+0x166>
lea    0xdcf(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x4c,%eax
jne    1283 <OneToThree+0x183>
lea    0xdb6(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x4b,%eax
jne    12a0 <OneToThree+0x1a0>
lea    0xd9d(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x4d,%eax
jne    12bd <OneToThree+0x1bd>
lea    0xd84(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x50,%eax
jne    12da <OneToThree+0x1da>
lea    0xd6b(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x46,%eax
jne    12f7 <OneToThree+0x1f7>
lea    0xd52(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x53,%eax
jne    1314 <OneToThree+0x214>
lea    0xd39(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x54,%eax
jne    1331 <OneToThree+0x231>
lea    0xd20(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x57,%eax
jne    134e <OneToThree+0x24e>
lea    0xd07(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x59,%eax
jne    136b <OneToThree+0x26b>
lea    0xcee(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x56,%eax
jne    1388 <OneToThree+0x288>
lea    0xcd5(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
movsbl -0x9(%rbp),%eax
cmp    $0x58,%eax
jne    13a5 <OneToThree+0x2a5>
lea    0xcbc(%rip),%rax
mov    %rax,-0x8(%rbp)
jmp    13b0 <OneToThree+0x2b0>
lea    0xcb0(%rip),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<OneToThree>:
add    $0xbf,%dil
cmp    $0x19,%dil
ja     111d <OneToThree+0x1d>
movsbq %dil,%rax
lea    0xf4b(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
ret
lea    0xf38(%rip),%rax
ret

LLVM IR (-O0):
@.str = [4 x i8] c"ALA\00"
@.str.1 = [4 x i8] c"ARG\00"
@.str.2 = [4 x i8] c"ASN\00"
@.str.3 = [4 x i8] c"ASP\00"
@.str.4 = [4 x i8] c"ASX\00"
@.str.5 = [4 x i8] c"CYS\00"
@.str.6 = [4 x i8] c"GLN\00"
@.str.7 = [4 x i8] c"GLU\00"
@.str.8 = [4 x i8] c"GLX\00"
@.str.9 = [4 x i8] c"GLY\00"
@.str.10 = [4 x i8] c"HIS\00"
@.str.11 = [4 x i8] c"ILE\00"
@.str.12 = [4 x i8] c"LEU\00"
@.str.13 = [4 x i8] c"LYS\00"
@.str.14 = [4 x i8] c"MET\00"
@.str.15 = [4 x i8] c"PRO\00"
@.str.16 = [4 x i8] c"PHE\00"
@.str.17 = [4 x i8] c"SER\00"
@.str.18 = [4 x i8] c"THR\00"
@.str.19 = [4 x i8] c"TRP\00"
@.str.20 = [4 x i8] c"TYR\00"
@.str.21 = [4 x i8] c"VAL\00"
@.str.22 = [4 x i8] c"UNK\00"
@.str.23 = [4 x i8] c"***\00"
define i8* @OneToThree(i8 signext %0) {
%2 = alloca i8*
%3 = alloca i8
store i8 %0, i8* %3
%4 = load i8, i8* %3
%5 = sext i8 %4 to i32
%6 = icmp eq i32 %5, 65
br i1 %6, label %7, label %8
7: ; preds = %1
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i8** %2
br label %119
8: ; preds = %1
%9 = load i8, i8* %3
%10 = sext i8 %9 to i32
%11 = icmp eq i32 %10, 82
br i1 %11, label %12, label %13
12: ; preds = %8
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.1, i64 0, i64 0), i8** %2
br label %119
13: ; preds = %8
%14 = load i8, i8* %3
%15 = sext i8 %14 to i32
%16 = icmp eq i32 %15, 78
br i1 %16, label %17, label %18
17: ; preds = %13
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0), i8** %2
br label %119
18: ; preds = %13
%19 = load i8, i8* %3
%20 = sext i8 %19 to i32
%21 = icmp eq i32 %20, 68
br i1 %21, label %22, label %23
22: ; preds = %18
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i8** %2
br label %119
23: ; preds = %18
%24 = load i8, i8* %3
%25 = sext i8 %24 to i32
%26 = icmp eq i32 %25, 66
br i1 %26, label %27, label %28
27: ; preds = %23
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0), i8** %2
br label %119
28: ; preds = %23
%29 = load i8, i8* %3
%30 = sext i8 %29 to i32
%31 = icmp eq i32 %30, 67
br i1 %31, label %32, label %33
32: ; preds = %28
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0), i8** %2
br label %119
33: ; preds = %28
%34 = load i8, i8* %3
%35 = sext i8 %34 to i32
%36 = icmp eq i32 %35, 81
br i1 %36, label %37, label %38
37: ; preds = %33
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0), i8** %2
br label %119
38: ; preds = %33
%39 = load i8, i8* %3
%40 = sext i8 %39 to i32
%41 = icmp eq i32 %40, 69
br i1 %41, label %42, label %43
42: ; preds = %38
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0), i8** %2
br label %119
43: ; preds = %38
%44 = load i8, i8* %3
%45 = sext i8 %44 to i32
%46 = icmp eq i32 %45, 90
br i1 %46, label %47, label %48
47: ; preds = %43
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0), i8** %2
br label %119
48: ; preds = %43
%49 = load i8, i8* %3
%50 = sext i8 %49 to i32
%51 = icmp eq i32 %50, 71
br i1 %51, label %52, label %53
52: ; preds = %48
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0), i8** %2
br label %119
53: ; preds = %48
%54 = load i8, i8* %3
%55 = sext i8 %54 to i32
%56 = icmp eq i32 %55, 72
br i1 %56, label %57, label %58
57: ; preds = %53
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0), i8** %2
br label %119
58: ; preds = %53
%59 = load i8, i8* %3
%60 = sext i8 %59 to i32
%61 = icmp eq i32 %60, 73
br i1 %61, label %62, label %63
62: ; preds = %58
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0), i8** %2
br label %119
63: ; preds = %58
%64 = load i8, i8* %3
%65 = sext i8 %64 to i32
%66 = icmp eq i32 %65, 76
br i1 %66, label %67, label %68
67: ; preds = %63
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0), i8** %2
br label %119
68: ; preds = %63
%69 = load i8, i8* %3
%70 = sext i8 %69 to i32
%71 = icmp eq i32 %70, 75
br i1 %71, label %72, label %73
72: ; preds = %68
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0), i8** %2
br label %119
73: ; preds = %68
%74 = load i8, i8* %3
%75 = sext i8 %74 to i32
%76 = icmp eq i32 %75, 77
br i1 %76, label %77, label %78
77: ; preds = %73
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0), i8** %2
br label %119
78: ; preds = %73
%79 = load i8, i8* %3
%80 = sext i8 %79 to i32
%81 = icmp eq i32 %80, 80
br i1 %81, label %82, label %83
82: ; preds = %78
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0), i8** %2
br label %119
83: ; preds = %78
%84 = load i8, i8* %3
%85 = sext i8 %84 to i32
%86 = icmp eq i32 %85, 70
br i1 %86, label %87, label %88
87: ; preds = %83
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.16, i64 0, i64 0), i8** %2
br label %119
88: ; preds = %83
%89 = load i8, i8* %3
%90 = sext i8 %89 to i32
%91 = icmp eq i32 %90, 83
br i1 %91, label %92, label %93
92: ; preds = %88
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0), i8** %2
br label %119
93: ; preds = %88
%94 = load i8, i8* %3
%95 = sext i8 %94 to i32
%96 = icmp eq i32 %95, 84
br i1 %96, label %97, label %98
97: ; preds = %93
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0), i8** %2
br label %119
98: ; preds = %93
%99 = load i8, i8* %3
%100 = sext i8 %99 to i32
%101 = icmp eq i32 %100, 87
br i1 %101, label %102, label %103
102: ; preds = %98
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.19, i64 0, i64 0), i8** %2
br label %119
103: ; preds = %98
%104 = load i8, i8* %3
%105 = sext i8 %104 to i32
%106 = icmp eq i32 %105, 89
br i1 %106, label %107, label %108
107: ; preds = %103
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0), i8** %2
br label %119
108: ; preds = %103
%109 = load i8, i8* %3
%110 = sext i8 %109 to i32
%111 = icmp eq i32 %110, 86
br i1 %111, label %112, label %113
112: ; preds = %108
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0), i8** %2
br label %119
113: ; preds = %108
%114 = load i8, i8* %3
%115 = sext i8 %114 to i32
%116 = icmp eq i32 %115, 88
br i1 %116, label %117, label %118
117: ; preds = %113
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0), i8** %2
br label %119
118: ; preds = %113
store i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0), i8** %2
br label %119
119: ; preds = %118, %117, %112, %107, %102, %97, %92, %87, %82, %77, %72, %67, %62, %57, %52, %47, %42, %37, %32, %27, %22, %17, %12, %7
%120 = load i8*, i8** %2
ret i8* %120
}

LLVM IR (-O2):
@.str = [4 x i8] c"ALA\00"
@.str.1 = [4 x i8] c"ARG\00"
@.str.2 = [4 x i8] c"ASN\00"
@.str.3 = [4 x i8] c"ASP\00"
@.str.4 = [4 x i8] c"ASX\00"
@.str.5 = [4 x i8] c"CYS\00"
@.str.6 = [4 x i8] c"GLN\00"
@.str.7 = [4 x i8] c"GLU\00"
@.str.8 = [4 x i8] c"GLX\00"
@.str.9 = [4 x i8] c"GLY\00"
@.str.10 = [4 x i8] c"HIS\00"
@.str.11 = [4 x i8] c"ILE\00"
@.str.12 = [4 x i8] c"LEU\00"
@.str.13 = [4 x i8] c"LYS\00"
@.str.14 = [4 x i8] c"MET\00"
@.str.15 = [4 x i8] c"PRO\00"
@.str.16 = [4 x i8] c"PHE\00"
@.str.17 = [4 x i8] c"SER\00"
@.str.18 = [4 x i8] c"THR\00"
@.str.19 = [4 x i8] c"TRP\00"
@.str.20 = [4 x i8] c"TYR\00"
@.str.21 = [4 x i8] c"VAL\00"
@.str.22 = [4 x i8] c"UNK\00"
@.str.23 = [4 x i8] c"***\00"
@reltable.OneToThree = [26 x i32] [i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.4 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.5 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.3 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.7 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.16 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.9 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.10 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.11 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.23 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.13 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.12 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.14 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.2 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.23 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.15 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.6 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.1 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.17 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.18 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.23 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.21 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.19 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.22 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.20 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32), i32 trunc (i64 sub (i64 ptrtoint ([4 x i8]* @.str.8 to i64), i64 ptrtoint ([26 x i32]* @reltable.OneToThree to i64)) to i32)]
define i8* @OneToThree(i8 signext %0) {
%2 = add i8 %0, -65
%3 = icmp ult i8 %2, 26
br i1 %3, label %4, label %8
4: ; preds = %1
%5 = sext i8 %2 to i64
%6 = shl i64 %5, 2
%7 = call i8* @llvm.load.relative.i64(i8* bitcast ([26 x i32]* @reltable.OneToThree to i8*), i64 %6)
br label %8
8: ; preds = %1, %4
%9 = phi i8* [ %7, %4 ], [ getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0), %1 ]
ret i8* %9
}