#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 */
int GetSMoGType(char *);
int /*<<< orphan*/ strcmp(char *, char *);
int /*<<< orphan*/ strncmp(char *, char *, int);
int SMoGType(char *atomname, char *residue) {
  if (!strncmp(atomname, "H", 1))
    return (GetSMoGType("H"));
  else if (!(strcmp(atomname, "C")))
    return (GetSMoGType("CC"));
  else if (!(strcmp(atomname, "CA")))
    return (GetSMoGType("CA"));
  else if (!(strcmp(atomname, "CB"))) {
    if ((!(strcmp(residue, "SER"))) || (!(strcmp(residue, "THR"))))
      return (GetSMoGType("CP"));
    else
      return (GetSMoGType("C3"));
  } else if (!(strncmp(atomname, "CG", 2))) {
    if ((!(strcmp(residue, "ASP"))) || (!(strcmp(residue, "ASN"))))
      return (GetSMoGType("CC"));
    else if ((!(strcmp(residue, "PHE"))) || (!(strcmp(residue, "TYR"))) ||
             (!(strcmp(residue, "HIS"))) || (!(strcmp(residue, "TRP"))))
      return (GetSMoGType("C2"));
    else
      return (GetSMoGType("C3"));
  } else if (!(strncmp(atomname, "CD", 2))) {
    if ((!(strcmp(residue, "GLU"))) || (!(strcmp(residue, "GLN"))))
      return (GetSMoGType("CC"));
    else if (!(strcmp(residue, "ARG")))
      return (GetSMoGType("CP"));
    else if (!(strcmp(residue, "PRO")))
      return (GetSMoGType("CA"));
    else if ((!(strcmp(residue, "PHE"))) || (!(strcmp(residue, "TYR"))) ||
             (!(strcmp(residue, "HIS"))) || (!(strcmp(residue, "TRP"))))
      return (GetSMoGType("C2"));
    else
      return (GetSMoGType("C3"));
  } else if (!(strncmp(atomname, "CE", 2))) {
    if ((!(strcmp(residue, "LYS"))) || (!(strcmp(residue, "HIS"))))
      return (GetSMoGType("CP"));
    else
      return (GetSMoGType("C2"));
  } else if (!(strncmp(atomname, "CZ", 2))) {
    if (!(strcmp(residue, "ARG")))
      return (GetSMoGType("CC"));
    else if (!(strcmp(residue, "TYR")))
      return (GetSMoGType("CP"));
    else
      return (GetSMoGType("C2"));
  } else if (!(strncmp(atomname, "CH", 2)))
    return (GetSMoGType("C2"));
  else if (!(strcmp(atomname, "N")))
    return (GetSMoGType("NM"));
  else if (!(strncmp(atomname, "ND", 2))) {
    if (!(strcmp(residue, "HIS")))
      return (GetSMoGType("NC"));
    else
      return (GetSMoGType("ND"));
  } else if (!(strncmp(atomname, "NE", 2))) {
    if (!(strcmp(residue, "HIS")))
      return (GetSMoGType("NC"));
    else
      return (GetSMoGType("ND"));
  } else if (!(strcmp(atomname, "NZ")))
    return (GetSMoGType("NC"));
  else if (!(strncmp(atomname, "NH", 2)))
    return (GetSMoGType("NC"));
  else if (!(strcmp(atomname, "O")))
    if (!(strncmp(residue, "HOH", 3)))
      return (GetSMoGType("OD"));
    else
      return (GetSMoGType("OB"));
  else if (!(strncmp(atomname, "OG", 2)))
    return (GetSMoGType("OD"));
  else if (!(strncmp(atomname, "OD", 2))) {
    if (!(strcmp(residue, "ASP")))
      return (GetSMoGType("OC"));
    else
      return (GetSMoGType("OB"));
  } else if (!(strncmp(atomname, "OE", 2))) {
    if (!(strcmp(residue, "GLU")))
      return (GetSMoGType("OC"));
    else
      return (GetSMoGType("OB"));
  } else if (!(strncmp(atomname, "OH", 2)))
    return (GetSMoGType("OD"));
  else if (!(strncmp(atomname, "S", 1)))
    return (GetSMoGType("SP"));
  else if (!(strncmp(atomname, "OXT", 3)))
    return (GetSMoGType("OC"));
  else if (!(strncmp(atomname, "OCT", 3)))
    return (GetSMoGType("OC"));
  else if (!strncmp(atomname, "ME", 2) || !strncmp(atomname, "ZN", 2) ||
           !strncmp(atomname, "FE", 2) || !strncmp(atomname, "MG", 2) ||
           !strncmp(atomname, "MN", 2) || !strncmp(atomname, "CU", 2))
    return (GetSMoGType("ME"));
  else {
    return (GetSMoGType("H"));
  }
  return -500;
}


x86 assembly (clang, -O0):
<SMoGType>:
push   %rbp
mov    %rsp,%rbp
sub    $0x20,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    -0x10(%rbp),%rdi
lea    0xf08(%rip),%rsi
mov    $0x1,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    1172 <SMoGType+0x42>
lea    0xeee(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0xe84(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    119f <SMoGType+0x6f>
lea    0xe6e(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0xe59(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    11cc <SMoGType+0x9c>
lea    0xe44(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0xe2f(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    123f <SMoGType+0x10f>
mov    -0x18(%rbp),%rdi
lea    0xe19(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
je     1217 <SMoGType+0xe7>
mov    -0x18(%rbp),%rdi
lea    0xe04(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    122b <SMoGType+0xfb>
lea    0xdf3(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
lea    0xde2(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0xdcd(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    132f <SMoGType+0x1ff>
mov    -0x18(%rbp),%rdi
lea    0xdb2(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
je     128f <SMoGType+0x15f>
mov    -0x18(%rbp),%rdi
lea    0xd9d(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    12a3 <SMoGType+0x173>
lea    0xd6a(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x18(%rbp),%rdi
lea    0xd74(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
je     1307 <SMoGType+0x1d7>
mov    -0x18(%rbp),%rdi
lea    0xd5f(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
je     1307 <SMoGType+0x1d7>
mov    -0x18(%rbp),%rdi
lea    0xd4a(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
je     1307 <SMoGType+0x1d7>
mov    -0x18(%rbp),%rdi
lea    0xd35(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    131b <SMoGType+0x1eb>
lea    0xd24(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
lea    0xcf2(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0xcfb(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    1479 <SMoGType+0x349>
mov    -0x18(%rbp),%rdi
lea    0xce0(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
je     137f <SMoGType+0x24f>
mov    -0x18(%rbp),%rdi
lea    0xccb(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1393 <SMoGType+0x263>
lea    0xc7a(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x18(%rbp),%rdi
lea    0xca2(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    13c0 <SMoGType+0x290>
lea    0xc5e(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x18(%rbp),%rdi
lea    0xc79(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    13ed <SMoGType+0x2bd>
lea    0xc23(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x18(%rbp),%rdi
lea    0xc2a(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
je     1451 <SMoGType+0x321>
mov    -0x18(%rbp),%rdi
lea    0xc15(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
je     1451 <SMoGType+0x321>
mov    -0x18(%rbp),%rdi
lea    0xc00(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
je     1451 <SMoGType+0x321>
mov    -0x18(%rbp),%rdi
lea    0xbeb(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1465 <SMoGType+0x335>
lea    0xbda(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
lea    0xba8(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0xbc4(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    14f1 <SMoGType+0x3c1>
mov    -0x18(%rbp),%rdi
lea    0xba9(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
je     14c9 <SMoGType+0x399>
mov    -0x18(%rbp),%rdi
lea    0xb6f(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    14dd <SMoGType+0x3ad>
lea    0xb41(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
lea    0xb4e(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0xb53(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    157d <SMoGType+0x44d>
mov    -0x18(%rbp),%rdi
lea    0xb26(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    153c <SMoGType+0x40c>
lea    0xad1(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x18(%rbp),%rdi
lea    0xadf(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1569 <SMoGType+0x439>
lea    0xab5(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
lea    0xac2(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0xaca(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    15af <SMoGType+0x47f>
lea    0xa90(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0xa84(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    15dc <SMoGType+0x4ac>
lea    0xa86(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0xa71(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    163b <SMoGType+0x50b>
mov    -0x18(%rbp),%rdi
lea    0xa25(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1627 <SMoGType+0x4f7>
lea    0xa41(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
lea    0xa2a(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0xa18(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    169a <SMoGType+0x56a>
mov    -0x18(%rbp),%rdi
lea    0x9c6(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1686 <SMoGType+0x556>
lea    0x9e2(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
lea    0x9cb(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0x9bc(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    16c7 <SMoGType+0x597>
lea    0x9a1(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0x992(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    16f9 <SMoGType+0x5c9>
lea    0x96f(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0x942(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1758 <SMoGType+0x628>
mov    -0x18(%rbp),%rdi
lea    0x94a(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    1744 <SMoGType+0x614>
lea    0x934(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
lea    0x923(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0x90e(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    178a <SMoGType+0x65a>
lea    0x8ee(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0x8d6(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    17e9 <SMoGType+0x6b9>
mov    -0x18(%rbp),%rdi
lea    0x867(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    17d5 <SMoGType+0x6a5>
lea    0x8ac(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
lea    0x892(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0x883(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    1848 <SMoGType+0x718>
mov    -0x18(%rbp),%rdi
lea    0x826(%rip),%rsi
call   1050 <strcmp@plt>
cmp    $0x0,%eax
jne    1834 <SMoGType+0x704>
lea    0x84d(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
lea    0x833(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0x815(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    187a <SMoGType+0x74a>
lea    0x7fe(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0x7a7(%rip),%rsi
mov    $0x1,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    18ac <SMoGType+0x77c>
lea    0x77c(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0x7c3(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    18de <SMoGType+0x7ae>
lea    0x7a3(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0x795(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    1910 <SMoGType+0x7e0>
lea    0x771(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
mov    -0x10(%rbp),%rdi
lea    0x767(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
je     19c4 <SMoGType+0x894>
mov    -0x10(%rbp),%rdi
lea    0x74c(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
je     19c4 <SMoGType+0x894>
mov    -0x10(%rbp),%rdi
lea    0x731(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
je     19c4 <SMoGType+0x894>
mov    -0x10(%rbp),%rdi
lea    0x716(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
je     19c4 <SMoGType+0x894>
mov    -0x10(%rbp),%rdi
lea    0x6fb(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
je     19c4 <SMoGType+0x894>
mov    -0x10(%rbp),%rdi
lea    0x6e0(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    19d8 <SMoGType+0x8a8>
lea    0x6b7(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
jmp    19e7 <SMoGType+0x8b7>
lea    0x674(%rip),%rdi
call   1040 <GetSMoGType@plt>
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x20,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<SMoGType>:
push   %r15
push   %r14
push   %r12
push   %rbx
push   %rax
mov    %rsi,%r14
mov    %rdi,%rbx
lea    0xf0e(%rip),%r15
mov    %r15,%rsi
mov    $0x1,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xea0(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
lea    0xe90(%rip),%r15
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xe84(%rip),%r12
mov    %rbx,%rdi
mov    %r12,%rsi
call   1050 <strcmp@plt>
test   %eax,%eax
je     145e <SMoGType+0x32e>
lea    0xe6d(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1466 <SMoGType+0x336>
lea    0xe67(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     14a1 <SMoGType+0x371>
lea    0xe69(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     153f <SMoGType+0x40f>
lea    0xe60(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     159c <SMoGType+0x46c>
lea    0xe4b(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     15c1 <SMoGType+0x491>
lea    0xe32(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     160a <SMoGType+0x4da>
lea    0xe02(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     162d <SMoGType+0x4fd>
lea    0xe05(%rip),%r15
mov    %rbx,%rdi
mov    %r15,%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1613 <SMoGType+0x4e3>
lea    0xdec(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1613 <SMoGType+0x4e3>
lea    0xdd3(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
lea    0xdbe(%rip),%r15
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xdb8(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xd7e(%rip),%rsi
mov    %rbx,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     1636 <SMoGType+0x506>
lea    0xd92(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
lea    0xd78(%rip),%r15
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
mov    %rbx,%rdi
mov    %r15,%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     165c <SMoGType+0x52c>
lea    0xd5d(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1665 <SMoGType+0x535>
lea    0xd32(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xcda(%rip),%rsi
mov    %rbx,%rdi
mov    $0x1,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1689 <SMoGType+0x559>
lea    0xd0c(%rip),%rsi
mov    %rbx,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
lea    0xcf2(%rip),%r15
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xced(%rip),%rsi
mov    %rbx,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xcd5(%rip),%r15
mov    %rbx,%rdi
mov    %r15,%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xcb9(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xca0(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xc87(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xc6e(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xc55(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
lea    0xc30(%rip),%rax
lea    0xbfa(%rip),%r15
jmp    15f3 <SMoGType+0x4c3>
mov    %r12,%r15
jmp    15f7 <SMoGType+0x4c7>
lea    0xb9c(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     15b8 <SMoGType+0x488>
lea    0xb89(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
lea    0xb7c(%rip),%rax
lea    0xb78(%rip),%r15
jmp    15f3 <SMoGType+0x4c3>
lea    0xb72(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xb5f(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xb4c(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
lea    0xb4d(%rip),%r15
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xb32(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xb1f(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xb0c(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
lea    0xaff(%rip),%rax
lea    0xada(%rip),%r15
jmp    15f3 <SMoGType+0x4c3>
lea    0xaf2(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xadf(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xacc(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     15b8 <SMoGType+0x488>
lea    0xabd(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
mov    %r12,%r15
test   %eax,%eax
jne    14cf <SMoGType+0x39f>
jmp    15f7 <SMoGType+0x4c7>
lea    0xaa8(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     15b8 <SMoGType+0x488>
lea    0xa74(%rip),%rsi
jmp    15db <SMoGType+0x4ab>
lea    0xa52(%rip),%r15
jmp    15f7 <SMoGType+0x4c7>
lea    0xa78(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
je     15f7 <SMoGType+0x4c7>
lea    0xa4b(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
lea    0xa25(%rip),%rax
lea    0xa3f(%rip),%r15
cmove  %rax,%r15
mov    %r15,%rdi
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
jmp    1040 <GetSMoGType@plt>
lea    0xa21(%rip),%r15
jmp    15f7 <SMoGType+0x4c7>
lea    0xa10(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
lea    0xa30(%rip),%rax
jmp    15f3 <SMoGType+0x4c3>
lea    0xa21(%rip),%r15
jmp    15f7 <SMoGType+0x4c7>
lea    0xa2a(%rip),%rsi
mov    %r14,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
lea    0xa18(%rip),%rax
lea    0xa14(%rip),%r15
jmp    15f3 <SMoGType+0x4c3>
lea    0x9b7(%rip),%rsi
jmp    166c <SMoGType+0x53c>
lea    0x9cc(%rip),%rsi
mov    %r14,%rdi
call   1050 <strcmp@plt>
test   %eax,%eax
lea    0x9f7(%rip),%rax
lea    0x9ea(%rip),%r15
jmp    15f3 <SMoGType+0x4c3>
lea    0x98b(%rip),%r15
jmp    15f7 <SMoGType+0x4c7>

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

LLVM IR (-O2):
@.str = [2 x i8] c"H\00"
@.str.1 = [2 x i8] c"C\00"
@.str.2 = [3 x i8] c"CC\00"
@.str.3 = [3 x i8] c"CA\00"
@.str.4 = [3 x i8] c"CB\00"
@.str.5 = [4 x i8] c"SER\00"
@.str.6 = [4 x i8] c"THR\00"
@.str.7 = [3 x i8] c"CP\00"
@.str.8 = [3 x i8] c"C3\00"
@.str.9 = [3 x i8] c"CG\00"
@.str.10 = [4 x i8] c"ASP\00"
@.str.11 = [4 x i8] c"ASN\00"
@.str.12 = [4 x i8] c"PHE\00"
@.str.13 = [4 x i8] c"TYR\00"
@.str.14 = [4 x i8] c"HIS\00"
@.str.15 = [4 x i8] c"TRP\00"
@.str.16 = [3 x i8] c"C2\00"
@.str.17 = [3 x i8] c"CD\00"
@.str.18 = [4 x i8] c"GLU\00"
@.str.19 = [4 x i8] c"GLN\00"
@.str.20 = [4 x i8] c"ARG\00"
@.str.21 = [4 x i8] c"PRO\00"
@.str.22 = [3 x i8] c"CE\00"
@.str.23 = [4 x i8] c"LYS\00"
@.str.24 = [3 x i8] c"CZ\00"
@.str.25 = [3 x i8] c"CH\00"
@.str.26 = [2 x i8] c"N\00"
@.str.27 = [3 x i8] c"NM\00"
@.str.28 = [3 x i8] c"ND\00"
@.str.29 = [3 x i8] c"NC\00"
@.str.30 = [3 x i8] c"NE\00"
@.str.31 = [3 x i8] c"NZ\00"
@.str.32 = [3 x i8] c"NH\00"
@.str.33 = [2 x i8] c"O\00"
@.str.34 = [4 x i8] c"HOH\00"
@.str.35 = [3 x i8] c"OD\00"
@.str.36 = [3 x i8] c"OB\00"
@.str.37 = [3 x i8] c"OG\00"
@.str.38 = [3 x i8] c"OC\00"
@.str.39 = [3 x i8] c"OE\00"
@.str.40 = [3 x i8] c"OH\00"
@.str.41 = [2 x i8] c"S\00"
@.str.42 = [3 x i8] c"SP\00"
@.str.43 = [4 x i8] c"OXT\00"
@.str.44 = [4 x i8] c"OCT\00"
@.str.45 = [3 x i8] c"ME\00"
@.str.46 = [3 x i8] c"ZN\00"
@.str.47 = [3 x i8] c"FE\00"
@.str.48 = [3 x i8] c"MG\00"
@.str.49 = [3 x i8] c"MN\00"
@.str.50 = [3 x i8] c"CU\00"
define i32 @SMoGType(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 %172, label %5
5: ; preds = %2
%6 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(2) getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
%7 = icmp eq i32 %6, 0
br i1 %7, label %172, label %8
8: ; preds = %5
%9 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0))
%10 = icmp eq i32 %9, 0
br i1 %10, label %172, label %11
11: ; preds = %8
%12 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.4, i64 0, i64 0))
%13 = icmp eq i32 %12, 0
br i1 %13, label %14, label %21
14: ; preds = %11
%15 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.5, i64 0, i64 0))
%16 = icmp eq i32 %15, 0
br i1 %16, label %172, label %17
17: ; preds = %14
%18 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.6, i64 0, i64 0))
%19 = icmp eq i32 %18, 0
%20 = select i1 %19, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0)
br label %172
21: ; preds = %11
%22 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.9, i64 0, i64 0), i32 2)
%23 = icmp eq i32 %22, 0
br i1 %23, label %24, label %43
24: ; preds = %21
%25 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0))
%26 = icmp eq i32 %25, 0
br i1 %26, label %172, label %27
27: ; preds = %24
%28 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.11, i64 0, i64 0))
%29 = icmp eq i32 %28, 0
br i1 %29, label %172, label %30
30: ; preds = %27
%31 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0))
%32 = icmp eq i32 %31, 0
br i1 %32, label %172, label %33
33: ; preds = %30
%34 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0))
%35 = icmp eq i32 %34, 0
br i1 %35, label %172, label %36
36: ; preds = %33
%37 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0))
%38 = icmp eq i32 %37, 0
br i1 %38, label %172, label %39
39: ; preds = %36
%40 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0))
%41 = icmp eq i32 %40, 0
%42 = select i1 %41, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0)
br label %172
43: ; preds = %21
%44 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.17, i64 0, i64 0), i32 2)
%45 = icmp eq i32 %44, 0
br i1 %45, label %46, label %71
46: ; preds = %43
%47 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0))
%48 = icmp eq i32 %47, 0
br i1 %48, label %172, label %49
49: ; preds = %46
%50 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.19, i64 0, i64 0))
%51 = icmp eq i32 %50, 0
br i1 %51, label %172, label %52
52: ; preds = %49
%53 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0))
%54 = icmp eq i32 %53, 0
br i1 %54, label %172, label %55
55: ; preds = %52
%56 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.21, i64 0, i64 0))
%57 = icmp eq i32 %56, 0
br i1 %57, label %172, label %58
58: ; preds = %55
%59 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.12, i64 0, i64 0))
%60 = icmp eq i32 %59, 0
br i1 %60, label %172, label %61
61: ; preds = %58
%62 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0))
%63 = icmp eq i32 %62, 0
br i1 %63, label %172, label %64
64: ; preds = %61
%65 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0))
%66 = icmp eq i32 %65, 0
br i1 %66, label %172, label %67
67: ; preds = %64
%68 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.15, i64 0, i64 0))
%69 = icmp eq i32 %68, 0
%70 = select i1 %69, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.8, i64 0, i64 0)
br label %172
71: ; preds = %43
%72 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.22, i64 0, i64 0), i32 2)
%73 = icmp eq i32 %72, 0
br i1 %73, label %74, label %81
74: ; preds = %71
%75 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.23, i64 0, i64 0))
%76 = icmp eq i32 %75, 0
br i1 %76, label %172, label %77
77: ; preds = %74
%78 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0))
%79 = icmp eq i32 %78, 0
%80 = select i1 %79, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0)
br label %172
81: ; preds = %71
%82 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.24, i64 0, i64 0), i32 2)
%83 = icmp eq i32 %82, 0
br i1 %83, label %84, label %91
84: ; preds = %81
%85 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.20, i64 0, i64 0))
%86 = icmp eq i32 %85, 0
br i1 %86, label %172, label %87
87: ; preds = %84
%88 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.13, i64 0, i64 0))
%89 = icmp eq i32 %88, 0
%90 = select i1 %89, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0)
br label %172
91: ; preds = %81
%92 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.25, i64 0, i64 0), i32 2)
%93 = icmp eq i32 %92, 0
br i1 %93, label %172, label %94
94: ; preds = %91
%95 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(2) getelementptr inbounds ([2 x i8], [2 x i8]* @.str.26, i64 0, i64 0))
%96 = icmp eq i32 %95, 0
br i1 %96, label %172, label %97
97: ; preds = %94
%98 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.28, i64 0, i64 0), i32 2)
%99 = icmp eq i32 %98, 0
br i1 %99, label %100, label %104
100: ; preds = %97
%101 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0))
%102 = icmp eq i32 %101, 0
%103 = select i1 %102, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.29, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.28, i64 0, i64 0)
br label %172
104: ; preds = %97
%105 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.30, i64 0, i64 0), i32 2)
%106 = icmp eq i32 %105, 0
br i1 %106, label %107, label %111
107: ; preds = %104
%108 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.14, i64 0, i64 0))
%109 = icmp eq i32 %108, 0
%110 = select i1 %109, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.29, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.28, i64 0, i64 0)
br label %172
111: ; preds = %104
%112 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(3) getelementptr inbounds ([3 x i8], [3 x i8]* @.str.31, i64 0, i64 0))
%113 = icmp eq i32 %112, 0
br i1 %113, label %172, label %114
114: ; preds = %111
%115 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.32, i64 0, i64 0), i32 2)
%116 = icmp eq i32 %115, 0
br i1 %116, label %172, label %117
117: ; preds = %114
%118 = tail call i32 @strcmp(i8* dereferenceable(1) %0, i8* dereferenceable(2) getelementptr inbounds ([2 x i8], [2 x i8]* @.str.33, i64 0, i64 0))
%119 = icmp eq i32 %118, 0
br i1 %119, label %120, label %124
120: ; preds = %117
%121 = tail call i32 @strncmp(i8* %1, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.34, i64 0, i64 0), i32 3)
%122 = icmp eq i32 %121, 0
%123 = select i1 %122, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.35, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.36, i64 0, i64 0)
br label %172
124: ; preds = %117
%125 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.37, i64 0, i64 0), i32 2)
%126 = icmp eq i32 %125, 0
br i1 %126, label %172, label %127
127: ; preds = %124
%128 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.35, i64 0, i64 0), i32 2)
%129 = icmp eq i32 %128, 0
br i1 %129, label %130, label %134
130: ; preds = %127
%131 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.10, i64 0, i64 0))
%132 = icmp eq i32 %131, 0
%133 = select i1 %132, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.38, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.36, i64 0, i64 0)
br label %172
134: ; preds = %127
%135 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.39, i64 0, i64 0), i32 2)
%136 = icmp eq i32 %135, 0
br i1 %136, label %137, label %141
137: ; preds = %134
%138 = tail call i32 @strcmp(i8* dereferenceable(1) %1, i8* dereferenceable(4) getelementptr inbounds ([4 x i8], [4 x i8]* @.str.18, i64 0, i64 0))
%139 = icmp eq i32 %138, 0
%140 = select i1 %139, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.38, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.36, i64 0, i64 0)
br label %172
141: ; preds = %134
%142 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.40, i64 0, i64 0), i32 2)
%143 = icmp eq i32 %142, 0
br i1 %143, label %172, label %144
144: ; preds = %141
%145 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.41, i64 0, i64 0), i32 1)
%146 = icmp eq i32 %145, 0
br i1 %146, label %172, label %147
147: ; preds = %144
%148 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.43, i64 0, i64 0), i32 3)
%149 = icmp eq i32 %148, 0
br i1 %149, label %172, label %150
150: ; preds = %147
%151 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.44, i64 0, i64 0), i32 3)
%152 = icmp eq i32 %151, 0
br i1 %152, label %172, label %153
153: ; preds = %150
%154 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.45, i64 0, i64 0), i32 2)
%155 = icmp eq i32 %154, 0
br i1 %155, label %172, label %156
156: ; preds = %153
%157 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.46, i64 0, i64 0), i32 2)
%158 = icmp eq i32 %157, 0
br i1 %158, label %172, label %159
159: ; preds = %156
%160 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.47, i64 0, i64 0), i32 2)
%161 = icmp eq i32 %160, 0
br i1 %161, label %172, label %162
162: ; preds = %159
%163 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.48, i64 0, i64 0), i32 2)
%164 = icmp eq i32 %163, 0
br i1 %164, label %172, label %165
165: ; preds = %162
%166 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.49, i64 0, i64 0), i32 2)
%167 = icmp eq i32 %166, 0
br i1 %167, label %172, label %168
168: ; preds = %165
%169 = tail call i32 @strncmp(i8* %0, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.50, i64 0, i64 0), i32 2)
%170 = icmp eq i32 %169, 0
%171 = select i1 %170, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.45, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0)
br label %172
172: ; preds = %168, %77, %67, %39, %17, %153, %156, %159, %162, %165, %150, %147, %144, %141, %137, %130, %124, %120, %114, %111, %107, %100, %94, %91, %87, %84, %74, %58, %61, %64, %55, %52, %46, %49, %30, %33, %36, %24, %27, %14, %8, %5, %2
%173 = phi i8* [ getelementptr inbounds ([2 x i8], [2 x i8]* @.str, i64 0, i64 0), %2 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), %5 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), %8 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0), %14 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), %27 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), %24 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0), %36 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0), %33 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0), %30 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), %49 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), %46 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0), %52 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), %55 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0), %64 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0), %61 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0), %58 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.7, i64 0, i64 0), %74 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), %84 ], [ %90, %87 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.16, i64 0, i64 0), %91 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.27, i64 0, i64 0), %94 ], [ %103, %100 ], [ %110, %107 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.29, i64 0, i64 0), %111 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.29, i64 0, i64 0), %114 ], [ %123, %120 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.35, i64 0, i64 0), %124 ], [ %133, %130 ], [ %140, %137 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.35, i64 0, i64 0), %141 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.42, i64 0, i64 0), %144 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.38, i64 0, i64 0), %147 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.38, i64 0, i64 0), %150 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.45, i64 0, i64 0), %165 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.45, i64 0, i64 0), %162 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.45, i64 0, i64 0), %159 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.45, i64 0, i64 0), %156 ], [ getelementptr inbounds ([3 x i8], [3 x i8]* @.str.45, i64 0, i64 0), %153 ], [ %20, %17 ], [ %42, %39 ], [ %70, %67 ], [ %80, %77 ], [ %171, %168 ]
%174 = tail call i32 @GetSMoGType(i8* %173)
ret i32 %174
}