#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 */
typedef unsigned char uint8_t;

/* Variables and functions */
uint8_t getAminoAcid(uint8_t f, uint8_t s, uint8_t t) {
  if (f == 'U') {
    if (s == 'U') {
      if (t == 'U') {
        return 'F';
      } else if (t == 'C') {
        return 'F';
      } else if (t == 'A') {
        return 'L';
      } else if (t == 'G') {
        return 'L';
      }
    } else if (s == 'C') {
      return 'S';
    } else if (s == 'A') {
      if (t == 'U') {
        return 'Y';
      } else if (t == 'C') {
        return 'Y';
      } else if (t == 'A') {
        return (0xFE);
      } else if (t == 'G') {
        return (0xFE);
      }
    } else if (s == 'G') {
      if (t == 'U') {
        return 'C';
      } else if (t == 'C') {
        return 'C';
      } else if (t == 'A') {
        return (0xFE);
      } else if (t == 'G') {
        return 'W';
      }
    }
  } else if (f == 'C') {
    if (s == 'U') {
      return 'L';
    } else if (s == 'C') {
      return 'P';
    } else if (s == 'A') {
      if (t == 'U') {
        return 'H';
      } else if (t == 'C') {
        return 'H';
      } else if (t == 'A') {
        return 'Q';
      } else if (t == 'G') {
        return 'Q';
      }
    } else if (s == 'G') {
      return 'R';
    }
  } else if (f == 'A') {
    if (s == 'U') {
      if (t == 'U') {
        return 'I';
      } else if (t == 'C') {
        return 'I';
      } else if (t == 'A') {
        return 'I';
      } else if (t == 'G') {
        return 'M';
      }
    } else if (s == 'C') {
      return 'T';
    } else if (s == 'A') {
      if (t == 'U') {
        return 'N';
      } else if (t == 'C') {
        return 'N';
      } else if (t == 'A') {
        return 'K';
      } else if (t == 'G') {
        return 'K';
      }
    } else if (s == 'G') {
      if (t == 'U') {
        return 'S';
      } else if (t == 'C') {
        return 'S';
      } else if (t == 'A') {
        return 'R';
      } else if (t == 'G') {
        return 'R';
      }
    }
  } else if (f == 'G') {
    if (s == 'U') {
      return 'V';
    } else if (s == 'C') {
      return 'A';
    } else if (s == 'A') {
      if (t == 'U') {
        return 'D';
      } else if (t == 'C') {
        return 'D';
      } else if (t == 'A') {
        return 'E';
      } else if (t == 'G') {
        return 'E';
      }
    } else if (s == 'G') {
      return 'G';
    }
  }
  return 0;
}


x86 assembly (clang, -O0):
<getAminoAcid>:
push   %rbp
mov    %rsp,%rbp
mov    %dl,%al
mov    %sil,%cl
mov    %dil,%dl
mov    %dl,-0x2(%rbp)
mov    %cl,-0x3(%rbp)
mov    %al,-0x4(%rbp)
movzbl -0x2(%rbp),%eax
cmp    $0x55,%eax
jne    12b7 <getAminoAcid+0x1b7>
movzbl -0x3(%rbp),%eax
cmp    $0x55,%eax
jne    119b <getAminoAcid+0x9b>
movzbl -0x4(%rbp),%eax
cmp    $0x55,%eax
jne    1145 <getAminoAcid+0x45>
movb   $0x46,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x43,%eax
jne    115b <getAminoAcid+0x5b>
movb   $0x46,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x41,%eax
jne    1171 <getAminoAcid+0x71>
movb   $0x4c,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x47,%eax
jne    1187 <getAminoAcid+0x87>
movb   $0x4c,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
jmp    118c <getAminoAcid+0x8c>
jmp    1191 <getAminoAcid+0x91>
jmp    1196 <getAminoAcid+0x96>
jmp    12b2 <getAminoAcid+0x1b2>
movzbl -0x3(%rbp),%eax
cmp    $0x43,%eax
jne    11b1 <getAminoAcid+0xb1>
movb   $0x53,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x3(%rbp),%eax
cmp    $0x41,%eax
jne    122a <getAminoAcid+0x12a>
movzbl -0x4(%rbp),%eax
cmp    $0x55,%eax
jne    11d4 <getAminoAcid+0xd4>
movb   $0x59,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x43,%eax
jne    11ea <getAminoAcid+0xea>
movb   $0x59,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x41,%eax
jne    1200 <getAminoAcid+0x100>
movb   $0xfe,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x47,%eax
jne    1216 <getAminoAcid+0x116>
movb   $0xfe,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
jmp    121b <getAminoAcid+0x11b>
jmp    1220 <getAminoAcid+0x120>
jmp    1225 <getAminoAcid+0x125>
jmp    12a8 <getAminoAcid+0x1a8>
movzbl -0x3(%rbp),%eax
cmp    $0x47,%eax
jne    12a3 <getAminoAcid+0x1a3>
movzbl -0x4(%rbp),%eax
cmp    $0x55,%eax
jne    124d <getAminoAcid+0x14d>
movb   $0x43,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x43,%eax
jne    1263 <getAminoAcid+0x163>
movb   $0x43,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x41,%eax
jne    1279 <getAminoAcid+0x179>
movb   $0xfe,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x47,%eax
jne    128f <getAminoAcid+0x18f>
movb   $0x57,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
jmp    1294 <getAminoAcid+0x194>
jmp    1299 <getAminoAcid+0x199>
jmp    129e <getAminoAcid+0x19e>
jmp    12a3 <getAminoAcid+0x1a3>
jmp    12a8 <getAminoAcid+0x1a8>
jmp    12ad <getAminoAcid+0x1ad>
jmp    12b2 <getAminoAcid+0x1b2>
jmp    1620 <getAminoAcid+0x520>
movzbl -0x2(%rbp),%eax
cmp    $0x43,%eax
jne    1393 <getAminoAcid+0x293>
movzbl -0x3(%rbp),%eax
cmp    $0x55,%eax
jne    12da <getAminoAcid+0x1da>
movb   $0x4c,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x3(%rbp),%eax
cmp    $0x43,%eax
jne    12f0 <getAminoAcid+0x1f0>
movb   $0x50,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x3(%rbp),%eax
cmp    $0x41,%eax
jne    1369 <getAminoAcid+0x269>
movzbl -0x4(%rbp),%eax
cmp    $0x55,%eax
jne    1313 <getAminoAcid+0x213>
movb   $0x48,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x43,%eax
jne    1329 <getAminoAcid+0x229>
movb   $0x48,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x41,%eax
jne    133f <getAminoAcid+0x23f>
movb   $0x51,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x47,%eax
jne    1355 <getAminoAcid+0x255>
movb   $0x51,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
jmp    135a <getAminoAcid+0x25a>
jmp    135f <getAminoAcid+0x25f>
jmp    1364 <getAminoAcid+0x264>
jmp    1384 <getAminoAcid+0x284>
movzbl -0x3(%rbp),%eax
cmp    $0x47,%eax
jne    137f <getAminoAcid+0x27f>
movb   $0x52,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
jmp    1384 <getAminoAcid+0x284>
jmp    1389 <getAminoAcid+0x289>
jmp    138e <getAminoAcid+0x28e>
jmp    161b <getAminoAcid+0x51b>
movzbl -0x2(%rbp),%eax
cmp    $0x41,%eax
jne    1535 <getAminoAcid+0x435>
movzbl -0x3(%rbp),%eax
cmp    $0x55,%eax
jne    1419 <getAminoAcid+0x319>
movzbl -0x4(%rbp),%eax
cmp    $0x55,%eax
jne    13c3 <getAminoAcid+0x2c3>
movb   $0x49,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x43,%eax
jne    13d9 <getAminoAcid+0x2d9>
movb   $0x49,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x41,%eax
jne    13ef <getAminoAcid+0x2ef>
movb   $0x49,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x47,%eax
jne    1405 <getAminoAcid+0x305>
movb   $0x4d,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
jmp    140a <getAminoAcid+0x30a>
jmp    140f <getAminoAcid+0x30f>
jmp    1414 <getAminoAcid+0x314>
jmp    1530 <getAminoAcid+0x430>
movzbl -0x3(%rbp),%eax
cmp    $0x43,%eax
jne    142f <getAminoAcid+0x32f>
movb   $0x54,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x3(%rbp),%eax
cmp    $0x41,%eax
jne    14a8 <getAminoAcid+0x3a8>
movzbl -0x4(%rbp),%eax
cmp    $0x55,%eax
jne    1452 <getAminoAcid+0x352>
movb   $0x4e,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x43,%eax
jne    1468 <getAminoAcid+0x368>
movb   $0x4e,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x41,%eax
jne    147e <getAminoAcid+0x37e>
movb   $0x4b,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x47,%eax
jne    1494 <getAminoAcid+0x394>
movb   $0x4b,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
jmp    1499 <getAminoAcid+0x399>
jmp    149e <getAminoAcid+0x39e>
jmp    14a3 <getAminoAcid+0x3a3>
jmp    1526 <getAminoAcid+0x426>
movzbl -0x3(%rbp),%eax
cmp    $0x47,%eax
jne    1521 <getAminoAcid+0x421>
movzbl -0x4(%rbp),%eax
cmp    $0x55,%eax
jne    14cb <getAminoAcid+0x3cb>
movb   $0x53,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x43,%eax
jne    14e1 <getAminoAcid+0x3e1>
movb   $0x53,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x41,%eax
jne    14f7 <getAminoAcid+0x3f7>
movb   $0x52,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x47,%eax
jne    150d <getAminoAcid+0x40d>
movb   $0x52,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
jmp    1512 <getAminoAcid+0x412>
jmp    1517 <getAminoAcid+0x417>
jmp    151c <getAminoAcid+0x41c>
jmp    1521 <getAminoAcid+0x421>
jmp    1526 <getAminoAcid+0x426>
jmp    152b <getAminoAcid+0x42b>
jmp    1530 <getAminoAcid+0x430>
jmp    1616 <getAminoAcid+0x516>
movzbl -0x2(%rbp),%eax
cmp    $0x47,%eax
jne    1611 <getAminoAcid+0x511>
movzbl -0x3(%rbp),%eax
cmp    $0x55,%eax
jne    1558 <getAminoAcid+0x458>
movb   $0x56,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x3(%rbp),%eax
cmp    $0x43,%eax
jne    156e <getAminoAcid+0x46e>
movb   $0x41,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x3(%rbp),%eax
cmp    $0x41,%eax
jne    15e7 <getAminoAcid+0x4e7>
movzbl -0x4(%rbp),%eax
cmp    $0x55,%eax
jne    1591 <getAminoAcid+0x491>
movb   $0x44,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x43,%eax
jne    15a7 <getAminoAcid+0x4a7>
movb   $0x44,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x41,%eax
jne    15bd <getAminoAcid+0x4bd>
movb   $0x45,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
movzbl -0x4(%rbp),%eax
cmp    $0x47,%eax
jne    15d3 <getAminoAcid+0x4d3>
movb   $0x45,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
jmp    15d8 <getAminoAcid+0x4d8>
jmp    15dd <getAminoAcid+0x4dd>
jmp    15e2 <getAminoAcid+0x4e2>
jmp    1602 <getAminoAcid+0x502>
movzbl -0x3(%rbp),%eax
cmp    $0x47,%eax
jne    15fd <getAminoAcid+0x4fd>
movb   $0x47,-0x1(%rbp)
jmp    1624 <getAminoAcid+0x524>
jmp    1602 <getAminoAcid+0x502>
jmp    1607 <getAminoAcid+0x507>
jmp    160c <getAminoAcid+0x50c>
jmp    1611 <getAminoAcid+0x511>
jmp    1616 <getAminoAcid+0x516>
jmp    161b <getAminoAcid+0x51b>
jmp    1620 <getAminoAcid+0x520>
movb   $0x0,-0x1(%rbp)
movzbl -0x1(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<getAminoAcid>:
add    $0xbf,%dil
cmp    $0x14,%dil
ja     12c8 <getAminoAcid+0x1c8>
movzbl %dil,%eax
lea    0xee7(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
add    $0xbf,%sil
cmp    $0x14,%sil
ja     12c8 <getAminoAcid+0x1c8>
mov    $0x54,%al
movzbl %sil,%ecx
lea    0xfbf(%rip),%rsi
movslq (%rsi,%rcx,4),%rcx
add    %rsi,%rcx
jmp    *%rcx
add    $0xbf,%dl
cmp    $0x14,%dl
ja     12c8 <getAminoAcid+0x1c8>
mov    $0x4e,%al
movzbl %dl,%ecx
lea    0x1046(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x4b,%al
ret
add    $0xbf,%sil
cmp    $0x14,%sil
ja     12c8 <getAminoAcid+0x1c8>
mov    $0x4c,%al
movzbl %sil,%ecx
lea    0x10c7(%rip),%rsi
movslq (%rsi,%rcx,4),%rcx
add    %rsi,%rcx
jmp    *%rcx
add    $0xbf,%dl
cmp    $0x14,%dl
ja     12c8 <getAminoAcid+0x1c8>
mov    $0x48,%al
movzbl %dl,%ecx
lea    0x10fa(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x51,%al
ret
add    $0xbf,%sil
cmp    $0x14,%sil
ja     12c8 <getAminoAcid+0x1c8>
mov    $0x56,%al
movzbl %sil,%ecx
lea    0xe87(%rip),%rsi
movslq (%rsi,%rcx,4),%rcx
add    %rsi,%rcx
jmp    *%rcx
add    $0xbf,%dl
cmp    $0x14,%dl
ja     12c8 <getAminoAcid+0x1c8>
mov    $0x44,%al
movzbl %dl,%ecx
lea    0xeba(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x45,%al
ret
add    $0xbf,%sil
cmp    $0x14,%sil
ja     12c8 <getAminoAcid+0x1c8>
mov    $0x53,%al
movzbl %sil,%ecx
lea    0x10df(%rip),%rsi
movslq (%rsi,%rcx,4),%rcx
add    %rsi,%rcx
jmp    *%rcx
add    $0xbf,%dl
cmp    $0x14,%dl
ja     12c8 <getAminoAcid+0x1c8>
mov    $0x59,%al
movzbl %dl,%ecx
lea    0x1166(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x41,%al
ret
add    $0xbf,%dl
cmp    $0x14,%dl
ja     12c8 <getAminoAcid+0x1c8>
mov    $0x53,%al
movzbl %dl,%ecx
lea    0xefa(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x52,%al
ret
add    $0xbf,%dl
cmp    $0x14,%dl
ja     12c8 <getAminoAcid+0x1c8>
mov    $0x49,%al
movzbl %dl,%ecx
lea    0xf82(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x4d,%al
ret
mov    $0x50,%al
ret
mov    $0x47,%al
ret
add    $0xbf,%dl
cmp    $0x14,%dl
ja     12c8 <getAminoAcid+0x1c8>
mov    $0x43,%al
movzbl %dl,%ecx
lea    0x10ac(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0xfe,%al
ret
add    $0xbf,%dl
cmp    $0x14,%dl
ja     12c8 <getAminoAcid+0x1c8>
mov    $0x46,%al
movzbl %dl,%ecx
lea    0x1134(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x4c,%al
ret
xor    %eax,%eax
ret
mov    $0x57,%al
ret

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

LLVM IR (-O2):
define zeroext i8 @getAminoAcid(i8 zeroext %0, i8 zeroext %1, i8 zeroext %2) {
switch i8 %0, label %35 [
i8 85, label %4
i8 67, label %14
i8 65, label %20
i8 71, label %29
]
4: ; preds = %3
switch i8 %1, label %35 [
i8 85, label %5
i8 67, label %36
i8 65, label %8
i8 71, label %11
]
5: ; preds = %4
switch i8 %2, label %35 [
i8 85, label %36
i8 67, label %36
i8 65, label %6
i8 71, label %7
]
6: ; preds = %5
br label %36
7: ; preds = %5
br label %36
8: ; preds = %4
switch i8 %2, label %35 [
i8 85, label %36
i8 67, label %36
i8 65, label %9
i8 71, label %10
]
9: ; preds = %8
br label %36
10: ; preds = %8
br label %36
11: ; preds = %4
switch i8 %2, label %35 [
i8 85, label %36
i8 67, label %36
i8 65, label %12
i8 71, label %13
]
12: ; preds = %11
br label %36
13: ; preds = %11
br label %36
14: ; preds = %3
switch i8 %1, label %35 [
i8 85, label %36
i8 67, label %15
i8 65, label %16
i8 71, label %19
]
15: ; preds = %14
br label %36
16: ; preds = %14
switch i8 %2, label %35 [
i8 85, label %36
i8 67, label %36
i8 65, label %17
i8 71, label %18
]
17: ; preds = %16
br label %36
18: ; preds = %16
br label %36
19: ; preds = %14
br label %36
20: ; preds = %3
switch i8 %1, label %35 [
i8 85, label %21
i8 67, label %36
i8 65, label %23
i8 71, label %26
]
21: ; preds = %20
switch i8 %2, label %35 [
i8 85, label %36
i8 67, label %36
i8 65, label %36
i8 71, label %22
]
22: ; preds = %21
br label %36
23: ; preds = %20
switch i8 %2, label %35 [
i8 85, label %36
i8 67, label %36
i8 65, label %24
i8 71, label %25
]
24: ; preds = %23
br label %36
25: ; preds = %23
br label %36
26: ; preds = %20
switch i8 %2, label %35 [
i8 85, label %36
i8 67, label %36
i8 65, label %27
i8 71, label %28
]
27: ; preds = %26
br label %36
28: ; preds = %26
br label %36
29: ; preds = %3
switch i8 %1, label %35 [
i8 85, label %36
i8 67, label %30
i8 65, label %31
i8 71, label %34
]
30: ; preds = %29
br label %36
31: ; preds = %29
switch i8 %2, label %35 [
i8 85, label %36
i8 67, label %36
i8 65, label %32
i8 71, label %33
]
32: ; preds = %31
br label %36
33: ; preds = %31
br label %36
34: ; preds = %29
br label %36
35: ; preds = %29, %31, %3, %26, %20, %23, %21, %14, %16, %11, %4, %8, %5
br label %36
36: ; preds = %29, %31, %31, %26, %26, %20, %23, %23, %21, %21, %21, %14, %16, %16, %11, %11, %4, %8, %8, %5, %5, %35, %34, %33, %32, %30, %28, %27, %25, %24, %22, %19, %18, %17, %15, %13, %12, %10, %9, %7, %6
%37 = phi i8 [ 76, %6 ], [ 76, %7 ], [ 0, %35 ], [ -2, %9 ], [ -2, %10 ], [ -2, %12 ], [ 87, %13 ], [ 80, %15 ], [ 81, %17 ], [ 81, %18 ], [ 82, %19 ], [ 77, %22 ], [ 75, %24 ], [ 75, %25 ], [ 82, %27 ], [ 82, %28 ], [ 65, %30 ], [ 69, %32 ], [ 69, %33 ], [ 71, %34 ], [ 70, %5 ], [ 70, %5 ], [ 83, %4 ], [ 89, %8 ], [ 89, %8 ], [ 67, %11 ], [ 67, %11 ], [ 76, %14 ], [ 72, %16 ], [ 72, %16 ], [ 73, %21 ], [ 73, %21 ], [ 73, %21 ], [ 84, %20 ], [ 78, %23 ], [ 78, %23 ], [ 83, %26 ], [ 83, %26 ], [ 86, %29 ], [ 68, %31 ], [ 68, %31 ]
ret i8 %37
}