#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 */
scalar_t__ strcmp(char *, char *);
int /*<<< orphan*/ strncmp(char *, char *, int);
int TypeAtom(char *s, char *res) {
  if (!strncmp(s, "C", 1)) {
    if (!strcmp(s, "C") ||
        (!strcmp(s, "CG") &&
         (!strcmp(res, "ASN") || !strcmp(res, "ASP") || !strcmp(res, "HIS") ||
          !strcmp(res, "PHE") || !strcmp(res, "TYR") || !strcmp(res, "TRP"))) ||
        (!strcmp(s, "CD") && (!strcmp(res, "GLN") || !strcmp(res, "GLU"))) ||
        (!strcmp(s, "CZ") && (!strcmp(res, "ARG") || !strcmp(res, "TYR"))) ||
        (!strcmp(s, "CD2") && !strcmp(res, "TRP")) ||
        (!strcmp(s, "CE2") && !strcmp(res, "TRP")))
      return 0;
    else if ((!strcmp(s, "CD1") &&
              (!strcmp(res, "PHE") || !strcmp(res, "TYR"))) ||
             (!strcmp(s, "CD2") &&
              (!strcmp(res, "HIS") || !strcmp(res, "PHE") ||
               !strcmp(res, "TYR"))) ||
             (!strcmp(s, "CZ") && !strcmp(res, "PHE")) ||
             (!strcmp(res, "TRP") &&
              (!strncmp(s, "CH", 2) || !strncmp(s, "CZ", 2) ||
               !strcmp(s, "CE3") || !strcmp(s, "CD1"))))
      return 1;
    else if ((!strcmp(s, "CA") && strcmp(res, "GLY")) ||
             (!strcmp(s, "CB") && (!strcmp(res, "ILE") || !strcmp(res, "THR") ||
                                   !strcmp(res, "VAL"))) ||
             (!strcmp(s, "CG") && !strcmp(res, "LEU")))
      return 2;
    else if ((!strcmp(s, "CB") && !strcmp(res, "ALA")) ||
             (!strcmp(s, "CD1") &&
              (!strcmp(res, "ILE") || !strcmp(res, "LEU"))) ||
             (!strcmp(s, "CD2") && !strcmp(res, "LEU")) ||
             (!strcmp(s, "CG1") && !strcmp(res, "VAL")) ||
             (!strcmp(s, "CG2") &&
              (!strcmp(res, "ILE") || !strcmp(res, "THR") ||
               !strcmp(res, "VAL"))))
      return 4;
    else
      return 3;
  } else if (!strncmp(s, "N", 1)) {
    if ((!strcmp(s, "N") && !strcmp(res, "PRO")) ||
        (!strcmp(s, "NE2") && !strcmp(res, "HIS")))
      return 5;
    else if (!strcmp(s, "NZ"))
      return 8;
    else if (!strcmp(s, "N") || (!strcmp(s, "ND1") && !strcmp(res, "HIS")) ||
             (!strcmp(s, "NE") && !strcmp(res, "ARG")) ||
             (!strcmp(s, "NE1") && !strcmp(res, "TRP")))
      return 6;
    else
      return 7;
  } else if (!strncmp(s, "O", 1)) {
    if (!strcmp(s, "OH") || !strcmp(s, "OG") || !strcmp(s, "OG1"))
      return 10;
    else
      return 9;
  } else if (!strncmp(s, "S", 1)) {
    if (!strcmp(res, "MET"))
      return 11;
    else
      return 12;
  } else
    return -500;
}


x86 assembly (clang, -O0):
<TypeAtom>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x10(%rbp),%rdi
lea    0xec5(%rip),%rsi
mov    $0x1,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    16f4 <TypeAtom+0x5d4>
mov    -0x10(%rbp),%rdi
lea    0xea7(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1322 <TypeAtom+0x202>
mov    -0x10(%rbp),%rdi
lea    0xe8f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    121e <TypeAtom+0xfe>
mov    -0x18(%rbp),%rdi
lea    0xe78(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1322 <TypeAtom+0x202>
mov    -0x18(%rbp),%rdi
lea    0xe62(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1322 <TypeAtom+0x202>
mov    -0x18(%rbp),%rdi
lea    0xe4c(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1322 <TypeAtom+0x202>
mov    -0x18(%rbp),%rdi
lea    0xe36(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1322 <TypeAtom+0x202>
mov    -0x18(%rbp),%rdi
lea    0xe20(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1322 <TypeAtom+0x202>
mov    -0x18(%rbp),%rdi
lea    0xe0a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1322 <TypeAtom+0x202>
mov    -0x10(%rbp),%rdi
lea    0xdf4(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    126c <TypeAtom+0x14c>
mov    -0x18(%rbp),%rdi
lea    0xddd(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1322 <TypeAtom+0x202>
mov    -0x18(%rbp),%rdi
lea    0xdc7(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1322 <TypeAtom+0x202>
mov    -0x10(%rbp),%rdi
lea    0xdb1(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    12ba <TypeAtom+0x19a>
mov    -0x18(%rbp),%rdi
lea    0xd9a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1322 <TypeAtom+0x202>
mov    -0x18(%rbp),%rdi
lea    0xd6a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1322 <TypeAtom+0x202>
mov    -0x10(%rbp),%rdi
lea    0xd6a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    12ee <TypeAtom+0x1ce>
mov    -0x18(%rbp),%rdi
lea    0xd3a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1322 <TypeAtom+0x202>
mov    -0x10(%rbp),%rdi
lea    0xd3a(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    132e <TypeAtom+0x20e>
mov    -0x18(%rbp),%rdi
lea    0xd06(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    132e <TypeAtom+0x20e>
movl   $0x0,-0x4(%rbp)
jmp    1955 <TypeAtom+0x835>
mov    -0x10(%rbp),%rdi
lea    0xcfe(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    137c <TypeAtom+0x25c>
mov    -0x18(%rbp),%rdi
lea    0xcbe(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     14a2 <TypeAtom+0x382>
mov    -0x18(%rbp),%rdi
lea    0xca8(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     14a2 <TypeAtom+0x382>
mov    -0x10(%rbp),%rdi
lea    0xca8(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    13e4 <TypeAtom+0x2c4>
mov    -0x18(%rbp),%rdi
lea    0xc6c(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     14a2 <TypeAtom+0x382>
mov    -0x18(%rbp),%rdi
lea    0xc56(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     14a2 <TypeAtom+0x382>
mov    -0x18(%rbp),%rdi
lea    0xc40(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     14a2 <TypeAtom+0x382>
mov    -0x10(%rbp),%rdi
lea    0xc39(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1418 <TypeAtom+0x2f8>
mov    -0x18(%rbp),%rdi
lea    0xc08(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     14a2 <TypeAtom+0x382>
mov    -0x18(%rbp),%rdi
lea    0xbf6(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    14ae <TypeAtom+0x38e>
mov    -0x10(%rbp),%rdi
lea    0xbfe(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
je     14a2 <TypeAtom+0x382>
mov    -0x10(%rbp),%rdi
lea    0xbcd(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
je     14a2 <TypeAtom+0x382>
mov    -0x10(%rbp),%rdi
lea    0xbc5(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     14a2 <TypeAtom+0x382>
mov    -0x10(%rbp),%rdi
lea    0xba4(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    14ae <TypeAtom+0x38e>
movl   $0x1,-0x4(%rbp)
jmp    1955 <TypeAtom+0x835>
mov    -0x10(%rbp),%rdi
lea    0xb89(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    14e2 <TypeAtom+0x3c2>
mov    -0x18(%rbp),%rdi
lea    0xb72(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    157e <TypeAtom+0x45e>
mov    -0x10(%rbp),%rdi
lea    0xb5c(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    154a <TypeAtom+0x42a>
mov    -0x18(%rbp),%rdi
lea    0xb45(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     157e <TypeAtom+0x45e>
mov    -0x18(%rbp),%rdi
lea    0xb2f(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     157e <TypeAtom+0x45e>
mov    -0x18(%rbp),%rdi
lea    0xb19(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     157e <TypeAtom+0x45e>
mov    -0x10(%rbp),%rdi
lea    0xaad(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    158a <TypeAtom+0x46a>
mov    -0x18(%rbp),%rdi
lea    0xae9(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    158a <TypeAtom+0x46a>
movl   $0x2,-0x4(%rbp)
jmp    1955 <TypeAtom+0x835>
mov    -0x10(%rbp),%rdi
lea    0xab4(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    15be <TypeAtom+0x49e>
mov    -0x18(%rbp),%rdi
lea    0xaad(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     16dc <TypeAtom+0x5bc>
mov    -0x10(%rbp),%rdi
lea    0xa6e(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    160c <TypeAtom+0x4ec>
mov    -0x18(%rbp),%rdi
lea    0xa69(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     16dc <TypeAtom+0x5bc>
mov    -0x18(%rbp),%rdi
lea    0xa5b(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     16dc <TypeAtom+0x5bc>
mov    -0x10(%rbp),%rdi
lea    0xa18(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1640 <TypeAtom+0x520>
mov    -0x18(%rbp),%rdi
lea    0xa27(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     16dc <TypeAtom+0x5bc>
mov    -0x10(%rbp),%rdi
lea    0xa15(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1674 <TypeAtom+0x554>
mov    -0x18(%rbp),%rdi
lea    0x9ef(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     16dc <TypeAtom+0x5bc>
mov    -0x10(%rbp),%rdi
lea    0x9e5(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    16e8 <TypeAtom+0x5c8>
mov    -0x18(%rbp),%rdi
lea    0x9b3(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     16dc <TypeAtom+0x5bc>
mov    -0x18(%rbp),%rdi
lea    0x99d(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     16dc <TypeAtom+0x5bc>
mov    -0x18(%rbp),%rdi
lea    0x987(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    16e8 <TypeAtom+0x5c8>
movl   $0x4,-0x4(%rbp)
jmp    1955 <TypeAtom+0x835>
movl   $0x3,-0x4(%rbp)
jmp    1955 <TypeAtom+0x835>
mov    -0x10(%rbp),%rdi
lea    0x923(%rip),%rsi
mov    $0x1,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    187a <TypeAtom+0x75a>
mov    -0x10(%rbp),%rdi
lea    0x905(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1746 <TypeAtom+0x626>
mov    -0x18(%rbp),%rdi
lea    0x931(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     177a <TypeAtom+0x65a>
mov    -0x10(%rbp),%rdi
lea    0x91b(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1786 <TypeAtom+0x666>
mov    -0x18(%rbp),%rdi
lea    0x8a2(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1786 <TypeAtom+0x666>
movl   $0x5,-0x4(%rbp)
jmp    1955 <TypeAtom+0x835>
mov    -0x10(%rbp),%rdi
lea    0x8df(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    17ac <TypeAtom+0x68c>
movl   $0x8,-0x4(%rbp)
jmp    1955 <TypeAtom+0x835>
mov    -0x10(%rbp),%rdi
lea    0x86b(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1862 <TypeAtom+0x742>
mov    -0x10(%rbp),%rdi
lea    0x8a2(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    17fa <TypeAtom+0x6da>
mov    -0x18(%rbp),%rdi
lea    0x822(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1862 <TypeAtom+0x742>
mov    -0x10(%rbp),%rdi
lea    0x872(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    182e <TypeAtom+0x70e>
mov    -0x18(%rbp),%rdi
lea    0x80c(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     1862 <TypeAtom+0x742>
mov    -0x10(%rbp),%rdi
lea    0x841(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    186e <TypeAtom+0x74e>
mov    -0x18(%rbp),%rdi
lea    0x7c6(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    186e <TypeAtom+0x74e>
movl   $0x6,-0x4(%rbp)
jmp    1955 <TypeAtom+0x835>
movl   $0x7,-0x4(%rbp)
jmp    1955 <TypeAtom+0x835>
mov    -0x10(%rbp),%rdi
lea    0x7e5(%rip),%rsi
mov    $0x1,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    18fe <TypeAtom+0x7de>
mov    -0x10(%rbp),%rdi
lea    0x7db(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     18e6 <TypeAtom+0x7c6>
mov    -0x10(%rbp),%rdi
lea    0x7c4(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
je     18e6 <TypeAtom+0x7c6>
mov    -0x10(%rbp),%rdi
lea    0x7ad(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    18f2 <TypeAtom+0x7d2>
movl   $0xa,-0x4(%rbp)
jmp    1955 <TypeAtom+0x835>
movl   $0x9,-0x4(%rbp)
jmp    1955 <TypeAtom+0x835>
mov    -0x10(%rbp),%rdi
lea    0x706(%rip),%rsi
mov    $0x1,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    194e <TypeAtom+0x82e>
mov    -0x18(%rbp),%rdi
lea    0x761(%rip),%rsi
call   1040 <strcmp@plt>
cmp    $0x0,%rax
jne    1942 <TypeAtom+0x822>
movl   $0xb,-0x4(%rbp)
jmp    1955 <TypeAtom+0x835>
movl   $0xc,-0x4(%rbp)
jmp    1955 <TypeAtom+0x835>
movl   $0xfffffe0c,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<TypeAtom>:
push   %rbp
push   %r14
push   %rbx
mov    %rsi,%r14
mov    %rdi,%rbx
lea    0xecf(%rip),%rsi
mov    $0x1,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     11b8 <TypeAtom+0x98>
lea    0xedc(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1400 <TypeAtom+0x2e0>
lea    0xf08(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     151b <TypeAtom+0x3fb>
lea    0xe91(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1,%edx
call   1030 <strncmp@plt>
mov    $0xfffffe0c,%ebp
test   %eax,%eax
jne    1885 <TypeAtom+0x765>
lea    0xee9(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
cmp    $0x1,%rax
mov    $0xc,%ebp
sbb    $0x0,%ebp
jmp    1885 <TypeAtom+0x765>
lea    0xe41(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
xor    %ebp,%ebp
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0xe29(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1570 <TypeAtom+0x450>
lea    0xe2c(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1619 <TypeAtom+0x4f9>
lea    0xe1f(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     164e <TypeAtom+0x52e>
lea    0xe0e(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1246 <TypeAtom+0x126>
lea    0xde4(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0xde6(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1272 <TypeAtom+0x152>
lea    0xdb8(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0xdbe(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1683 <TypeAtom+0x563>
lea    0xd9e(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     16bd <TypeAtom+0x59d>
lea    0xd7f(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    12ce <TypeAtom+0x1ae>
lea    0xd54(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     17f5 <TypeAtom+0x6d5>
lea    0xd44(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     170f <TypeAtom+0x5ef>
lea    0xd55(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1781 <TypeAtom+0x661>
lea    0xd44(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     17a3 <TypeAtom+0x683>
lea    0xce5(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1342 <TypeAtom+0x222>
lea    0xd27(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1880 <TypeAtom+0x760>
lea    0xd00(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    136e <TypeAtom+0x24e>
lea    0xcff(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1832 <TypeAtom+0x712>
lea    0xcc2(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     17ff <TypeAtom+0x6df>
lea    0xca2(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    13b2 <TypeAtom+0x292>
lea    0xcb7(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1832 <TypeAtom+0x712>
lea    0xca7(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    13de <TypeAtom+0x2be>
lea    0xc87(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1832 <TypeAtom+0x712>
lea    0xc7f(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1839 <TypeAtom+0x719>
mov    $0x3,%ebp
jmp    1885 <TypeAtom+0x765>
lea    0xc1b(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    142c <TypeAtom+0x30c>
lea    0xc4d(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     160f <TypeAtom+0x4ef>
lea    0xc39(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1458 <TypeAtom+0x338>
lea    0xbc6(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     160f <TypeAtom+0x4ef>
lea    0xc11(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1605 <TypeAtom+0x4e5>
lea    0xbab(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
mov    $0x6,%ebp
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0xbdf(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    14b9 <TypeAtom+0x399>
lea    0xb65(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0xbb7(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    14e5 <TypeAtom+0x3c5>
lea    0xb57(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0xb8e(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1511 <TypeAtom+0x3f1>
lea    0xb19(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
mov    $0x7,%ebp
jmp    1885 <TypeAtom+0x765>
lea    0xb5c(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
mov    $0xa,%ebp
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0xb42(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0xb2d(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
cmp    $0x1,%rax
mov    $0x9,%ebp
adc    $0x0,%ebp
jmp    1885 <TypeAtom+0x765>
lea    0xa8e(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0xa7a(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0xa66(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0xa52(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0xa3e(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0xa2a(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    11ea <TypeAtom+0xca>
jmp    1885 <TypeAtom+0x765>
mov    $0x8,%ebp
jmp    1885 <TypeAtom+0x765>
mov    $0x5,%ebp
jmp    1885 <TypeAtom+0x765>
lea    0xa00(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0x9ec(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1202 <TypeAtom+0xe2>
jmp    1885 <TypeAtom+0x765>
lea    0x9d6(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0x9a8(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    121a <TypeAtom+0xfa>
jmp    1885 <TypeAtom+0x765>
lea    0x987(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
mov    $0x1,%ebp
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0x96e(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    128a <TypeAtom+0x16a>
jmp    1885 <TypeAtom+0x765>
lea    0x949(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
mov    $0x1,%ebp
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0x930(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0x91c(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    12a2 <TypeAtom+0x182>
jmp    1885 <TypeAtom+0x765>
lea    0x925(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
mov    $0x1,%ebp
test   %eax,%eax
je     1885 <TypeAtom+0x765>
lea    0x8f1(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1885 <TypeAtom+0x765>
lea    0x8eb(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0x8cc(%rip),%rsi
mov    %rbx,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    12e6 <TypeAtom+0x1c6>
jmp    1885 <TypeAtom+0x765>
lea    0x8bd(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
mov    $0x2,%ebp
test   %rax,%rax
jne    1885 <TypeAtom+0x765>
jmp    12fe <TypeAtom+0x1de>
lea    0x8a2(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
mov    $0x2,%ebp
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0x889(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0x875(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1316 <TypeAtom+0x1f6>
jmp    1885 <TypeAtom+0x765>
mov    $0x1,%ebp
jmp    1885 <TypeAtom+0x765>
lea    0x846(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
mov    $0x4,%ebp
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0x839(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    1386 <TypeAtom+0x266>
jmp    1885 <TypeAtom+0x765>
mov    $0x4,%ebp
jmp    1885 <TypeAtom+0x765>
lea    0x80c(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
mov    $0x4,%ebp
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0x7f7(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
je     1885 <TypeAtom+0x765>
lea    0x7e7(%rip),%rsi
mov    %r14,%rdi
call   1040 <strcmp@plt>
test   %rax,%rax
jne    13f6 <TypeAtom+0x2d6>
jmp    1885 <TypeAtom+0x765>
mov    $0x2,%ebp
mov    %ebp,%eax
pop    %rbx
pop    %r14
pop    %rbp
ret

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

LLVM IR (-O2):
@.str = [2 x i8] c"C\00"
@.str.1 = [3 x i8] c"CG\00"
@.str.2 = [4 x i8] c"ASN\00"
@.str.3 = [4 x i8] c"ASP\00"
@.str.4 = [4 x i8] c"HIS\00"
@.str.5 = [4 x i8] c"PHE\00"
@.str.6 = [4 x i8] c"TYR\00"
@.str.7 = [4 x i8] c"TRP\00"
@.str.8 = [3 x i8] c"CD\00"
@.str.9 = [4 x i8] c"GLN\00"
@.str.10 = [4 x i8] c"GLU\00"
@.str.11 = [3 x i8] c"CZ\00"
@.str.12 = [4 x i8] c"ARG\00"
@.str.13 = [4 x i8] c"CD2\00"
@.str.14 = [4 x i8] c"CE2\00"
@.str.15 = [4 x i8] c"CD1\00"
@.str.16 = [3 x i8] c"CH\00"
@.str.17 = [4 x i8] c"CE3\00"
@.str.18 = [3 x i8] c"CA\00"
@.str.19 = [4 x i8] c"GLY\00"
@.str.20 = [3 x i8] c"CB\00"
@.str.21 = [4 x i8] c"ILE\00"
@.str.22 = [4 x i8] c"THR\00"
@.str.23 = [4 x i8] c"VAL\00"
@.str.24 = [4 x i8] c"LEU\00"
@.str.25 = [4 x i8] c"ALA\00"
@.str.26 = [4 x i8] c"CG1\00"
@.str.27 = [4 x i8] c"CG2\00"
@.str.28 = [2 x i8] c"N\00"
@.str.29 = [4 x i8] c"PRO\00"
@.str.30 = [4 x i8] c"NE2\00"
@.str.31 = [3 x i8] c"NZ\00"
@.str.32 = [4 x i8] c"ND1\00"
@.str.33 = [3 x i8] c"NE\00"
@.str.34 = [4 x i8] c"NE1\00"
@.str.35 = [2 x i8] c"O\00"
@.str.36 = [3 x i8] c"OH\00"
@.str.37 = [3 x i8] c"OG\00"
@.str.38 = [4 x i8] c"OG1\00"
@.str.39 = [2 x i8] c"S\00"
@.str.40 = [4 x i8] c"MET\00"
define i32 @TypeAtom(i8* %0, i8* %1) {
%3 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), i32 1)
%4 = icmp eq i32 %3, 0
br i1 %4, label %5, label %165
5: ; preds = %2
%6 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0))
%7 = icmp eq i64 %6, 0
br i1 %7, label %225, label %8
8: ; preds = %5
%9 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
%10 = icmp eq i64 %9, 0
br i1 %10, label %11, label %29
11: ; preds = %8
%12 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.2, i64 0, i64 0))
%13 = icmp eq i64 %12, 0
br i1 %13, label %225, label %14
14: ; preds = %11
%15 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0))
%16 = icmp eq i64 %15, 0
br i1 %16, label %225, label %17
17: ; preds = %14
%18 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0))
%19 = icmp eq i64 %18, 0
br i1 %19, label %225, label %20
20: ; preds = %17
%21 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0))
%22 = icmp eq i64 %21, 0
br i1 %22, label %225, label %23
23: ; preds = %20
%24 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%25 = icmp eq i64 %24, 0
br i1 %25, label %225, label %26
26: ; preds = %23
%27 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0))
%28 = icmp eq i64 %27, 0
br i1 %28, label %225, label %29
29: ; preds = %26, %8
%30 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0))
%31 = icmp eq i64 %30, 0
br i1 %31, label %32, label %38
32: ; preds = %29
%33 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.9, i64 0, i64 0))
%34 = icmp eq i64 %33, 0
br i1 %34, label %225, label %35
35: ; preds = %32
%36 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0))
%37 = icmp eq i64 %36, 0
br i1 %37, label %225, label %38
38: ; preds = %35, %29
%39 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0))
%40 = icmp eq i64 %39, 0
br i1 %40, label %41, label %47
41: ; preds = %38
%42 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0))
%43 = icmp eq i64 %42, 0
br i1 %43, label %225, label %44
44: ; preds = %41
%45 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%46 = icmp eq i64 %45, 0
br i1 %46, label %225, label %47
47: ; preds = %44, %38
%48 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0))
%49 = icmp eq i64 %48, 0
br i1 %49, label %50, label %53
50: ; preds = %47
%51 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0))
%52 = icmp eq i64 %51, 0
br i1 %52, label %225, label %53
53: ; preds = %50, %47
%54 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0))
%55 = icmp eq i64 %54, 0
br i1 %55, label %56, label %59
56: ; preds = %53
%57 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0))
%58 = icmp eq i64 %57, 0
br i1 %58, label %225, label %59
59: ; preds = %56, %53
%60 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0))
%61 = icmp eq i64 %60, 0
br i1 %61, label %62, label %68
62: ; preds = %59
%63 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0))
%64 = icmp eq i64 %63, 0
br i1 %64, label %225, label %65
65: ; preds = %62
%66 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%67 = icmp eq i64 %66, 0
br i1 %67, label %225, label %68
68: ; preds = %65, %59
%69 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0))
%70 = icmp eq i64 %69, 0
br i1 %70, label %71, label %80
71: ; preds = %68
%72 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0))
%73 = icmp eq i64 %72, 0
br i1 %73, label %225, label %74
74: ; preds = %71
%75 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0))
%76 = icmp eq i64 %75, 0
br i1 %76, label %225, label %77
77: ; preds = %74
%78 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%79 = icmp eq i64 %78, 0
br i1 %79, label %225, label %80
80: ; preds = %77, %68
%81 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0))
%82 = icmp eq i64 %81, 0
br i1 %82, label %83, label %86
83: ; preds = %80
%84 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0))
%85 = icmp eq i64 %84, 0
br i1 %85, label %225, label %86
86: ; preds = %83, %80
%87 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0))
%88 = icmp eq i64 %87, 0
br i1 %88, label %89, label %101
89: ; preds = %86
%90 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0), i32 2)
%91 = icmp eq i32 %90, 0
br i1 %91, label %225, label %92
92: ; preds = %89
%93 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.11, i64 0, i64 0), i32 2)
%94 = icmp eq i32 %93, 0
br i1 %94, label %225, label %95
95: ; preds = %92
%96 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.17, i64 0, i64 0))
%97 = icmp eq i64 %96, 0
br i1 %97, label %225, label %98
98: ; preds = %95
%99 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0))
%100 = icmp eq i64 %99, 0
br i1 %100, label %225, label %101
101: ; preds = %98, %86
%102 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.18, i64 0, i64 0))
%103 = icmp eq i64 %102, 0
br i1 %103, label %104, label %107
104: ; preds = %101
%105 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.19, i64 0, i64 0))
%106 = icmp eq i64 %105, 0
br i1 %106, label %107, label %225
107: ; preds = %104, %101
%108 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0))
%109 = icmp eq i64 %108, 0
br i1 %109, label %110, label %119
110: ; preds = %107
%111 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0))
%112 = icmp eq i64 %111, 0
br i1 %112, label %225, label %113
113: ; preds = %110
%114 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0))
%115 = icmp eq i64 %114, 0
br i1 %115, label %225, label %116
116: ; preds = %113
%117 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0))
%118 = icmp eq i64 %117, 0
br i1 %118, label %225, label %119
119: ; preds = %116, %107
%120 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0))
%121 = icmp eq i64 %120, 0
br i1 %121, label %122, label %125
122: ; preds = %119
%123 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0))
%124 = icmp eq i64 %123, 0
br i1 %124, label %225, label %125
125: ; preds = %122, %119
%126 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.20, i64 0, i64 0))
%127 = icmp eq i64 %126, 0
br i1 %127, label %128, label %131
128: ; preds = %125
%129 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.25, i64 0, i64 0))
%130 = icmp eq i64 %129, 0
br i1 %130, label %225, label %131
131: ; preds = %128, %125
%132 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0))
%133 = icmp eq i64 %132, 0
br i1 %133, label %134, label %140
134: ; preds = %131
%135 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0))
%136 = icmp eq i64 %135, 0
br i1 %136, label %225, label %137
137: ; preds = %134
%138 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0))
%139 = icmp eq i64 %138, 0
br i1 %139, label %225, label %140
140: ; preds = %137, %131
%141 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0))
%142 = icmp eq i64 %141, 0
br i1 %142, label %143, label %146
143: ; preds = %140
%144 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.24, i64 0, i64 0))
%145 = icmp eq i64 %144, 0
br i1 %145, label %225, label %146
146: ; preds = %143, %140
%147 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.26, i64 0, i64 0))
%148 = icmp eq i64 %147, 0
br i1 %148, label %149, label %152
149: ; preds = %146
%150 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0))
%151 = icmp eq i64 %150, 0
br i1 %151, label %225, label %152
152: ; preds = %149, %146
%153 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.27, i64 0, i64 0))
%154 = icmp eq i64 %153, 0
br i1 %154, label %155, label %164
155: ; preds = %152
%156 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0))
%157 = icmp eq i64 %156, 0
br i1 %157, label %225, label %158
158: ; preds = %155
%159 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.22, i64 0, i64 0))
%160 = icmp eq i64 %159, 0
br i1 %160, label %225, label %161
161: ; preds = %158
%162 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0))
%163 = icmp eq i64 %162, 0
br i1 %163, label %225, label %164
164: ; preds = %161, %152
br label %225
165: ; preds = %2
%166 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.28, i64 0, i64 0), i32 1)
%167 = icmp eq i32 %166, 0
br i1 %167, label %168, label %205
168: ; preds = %165
%169 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.28, i64 0, i64 0))
%170 = icmp eq i64 %169, 0
br i1 %170, label %171, label %174
171: ; preds = %168
%172 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.29, i64 0, i64 0))
%173 = icmp eq i64 %172, 0
br i1 %173, label %225, label %174
174: ; preds = %171, %168
%175 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.30, i64 0, i64 0))
%176 = icmp eq i64 %175, 0
br i1 %176, label %177, label %180
177: ; preds = %174
%178 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0))
%179 = icmp eq i64 %178, 0
br i1 %179, label %225, label %180
180: ; preds = %177, %174
%181 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.31, i64 0, i64 0))
%182 = icmp eq i64 %181, 0
br i1 %182, label %225, label %183
183: ; preds = %180
%184 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.28, i64 0, i64 0))
%185 = icmp eq i64 %184, 0
br i1 %185, label %225, label %186
186: ; preds = %183
%187 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.32, i64 0, i64 0))
%188 = icmp eq i64 %187, 0
br i1 %188, label %189, label %192
189: ; preds = %186
%190 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.4, i64 0, i64 0))
%191 = icmp eq i64 %190, 0
br i1 %191, label %225, label %192
192: ; preds = %189, %186
%193 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.33, i64 0, i64 0))
%194 = icmp eq i64 %193, 0
br i1 %194, label %195, label %198
195: ; preds = %192
%196 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0))
%197 = icmp eq i64 %196, 0
br i1 %197, label %225, label %198
198: ; preds = %195, %192
%199 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.34, i64 0, i64 0))
%200 = icmp eq i64 %199, 0
br i1 %200, label %201, label %204
201: ; preds = %198
%202 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.7, i64 0, i64 0))
%203 = icmp eq i64 %202, 0
br i1 %203, label %225, label %204
204: ; preds = %201, %198
br label %225
205: ; preds = %165
%206 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0), i32 1)
%207 = icmp eq i32 %206, 0
br i1 %207, label %208, label %218
208: ; preds = %205
%209 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.36, i64 0, i64 0))
%210 = icmp eq i64 %209, 0
br i1 %210, label %225, label %211
211: ; preds = %208
%212 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.37, i64 0, i64 0))
%213 = icmp eq i64 %212, 0
br i1 %213, label %225, label %214
214: ; preds = %211
%215 = tail call i64 @strcmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.38, i64 0, i64 0))
%216 = icmp eq i64 %215, 0
%217 = select i1 %216, i32 10, i32 9
br label %225
218: ; preds = %205
%219 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.39, i64 0, i64 0), i32 1)
%220 = icmp eq i32 %219, 0
br i1 %220, label %221, label %225
221: ; preds = %218
%222 = tail call i64 @strcmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.40, i64 0, i64 0))
%223 = icmp eq i64 %222, 0
%224 = select i1 %223, i32 11, i32 12
br label %225
225: ; preds = %214, %218, %221, %208, %211, %183, %189, %195, %201, %180, %171, %177, %128, %134, %137, %143, %149, %155, %158, %161, %104, %110, %113, %116, %122, %62, %65, %71, %74, %77, %83, %89, %92, %95, %98, %5, %11, %14, %17, %20, %23, %26, %32, %35, %41, %44, %50, %56, %204, %164
%226 = phi i32 [ 7, %204 ], [ 3, %164 ], [ 0, %56 ], [ 0, %50 ], [ 0, %44 ], [ 0, %41 ], [ 0, %35 ], [ 0, %32 ], [ 0, %26 ], [ 0, %23 ], [ 0, %20 ], [ 0, %17 ], [ 0, %14 ], [ 0, %11 ], [ 0, %5 ], [ 1, %98 ], [ 1, %95 ], [ 1, %92 ], [ 1, %89 ], [ 1, %83 ], [ 1, %77 ], [ 1, %74 ], [ 1, %71 ], [ 1, %65 ], [ 1, %62 ], [ 2, %122 ], [ 2, %116 ], [ 2, %113 ], [ 2, %110 ], [ 2, %104 ], [ 4, %161 ], [ 4, %158 ], [ 4, %155 ], [ 4, %149 ], [ 4, %143 ], [ 4, %137 ], [ 4, %134 ], [ 4, %128 ], [ 5, %177 ], [ 5, %171 ], [ 8, %180 ], [ 6, %201 ], [ 6, %195 ], [ 6, %189 ], [ 6, %183 ], [ 10, %211 ], [ 10, %208 ], [ %224, %221 ], [ -500, %218 ], [ %217, %214 ]
ret i32 %226
}