#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
char *alloca(size_t);
char *calloc(size_t, int);
int /*<<< orphan*/ memcpy(char *, char const *, size_t);
size_t strlen(char const *);
scalar_t__ strncmp(char *, char *, int);
int /*<<< orphan*/ toupper(int /*<<< orphan*/);
char *nysiis(const char *str) {
  size_t len = strlen(str);
  char c1, c2, c3;
  char *copy = alloca((len + 1) * sizeof(char));
  char *code = NULL;
  char *p, *cp;
  memcpy(copy, str, len + 1);
  if (!copy) {
    return NULL;
  }
  if (!*copy) {
    return calloc(1, sizeof(char));
  }
  code = calloc(len + 1, sizeof(char));
  if (!code) {
    return NULL;
  }
  cp = p = copy;
  while (*p) {
    *(cp++) = toupper(*(p++));
  }
  if (strncmp(copy, "MAC", 3) == 0) {
    copy[1] = 'C';
  } else if (strncmp(copy, "KN", 2) == 0) {
    copy[0] = 'N';
  } else if (copy[0] == 'K') {
    copy[0] = 'C';
  } else if (strncmp(copy, "PH", 2) == 0) {
    copy[0] = 'F';
    copy[1] = 'F';
  } else if (strncmp(copy, "SCH", 3) == 0) {
    copy[1] = 'S';
    copy[2] = 'S';
  }
  c1 = copy[len - 1];
  if (c1 == 'E') {
    c2 = copy[len - 2];
    if (c2 == 'E' || c2 == 'I') {
      copy[len - 1] = ' ';
      copy[len - 2] = 'Y';
    }
  } else if (c1 == 'T') {
    c2 = copy[len - 2];
    if (c2 == 'D' || c2 == 'R' || c2 == 'N') {
      copy[len - 1] = ' ';
      copy[len - 2] = 'D';
    }
  } else if (c1 == 'D') {
    c2 = copy[len - 2];
    if (c2 == 'R' || c2 == 'N') {
      copy[len - 1] = ' ';
      copy[len - 2] = 'D';
    }
  }
  cp = code;
  p = copy;
  *(cp++) = *(p++);
  while ((c1 = *p)) {
    if (c1 == ' ') {
      break;
    }
    switch (c1) {
    case 'E':
      if ((*(p + 1)) == 'V') {
        *cp = 'A';
        *(++cp) = 'F';
        ++p;
        break;
      }
    case 'A':
    case 'I':
    case 'O':
    case 'U':
      *cp = 'A';
      break;
    case 'Q':
      *cp = 'G';
      break;
    case 'Z':
      *cp = 'S';
      break;
    case 'M':
      *cp = 'N';
      break;
    case 'K':
      if ((*(p + 1)) == 'N') {
        *cp = 'N';
      } else {
        *cp = 'C';
      }
      break;
    case 'S':
      if ((*(p + 1)) == 'C' && (*(p + 2)) == 'H') {
        *(cp++) = 'S';
        *(cp++) = 'S';
        *cp = 'S';
        p += 2;
      } else {
        *cp = 'S';
      }
      break;
    case 'P':
      if ((*(p + 1)) == 'H') {
        *cp = 'F';
        *(++cp) = 'F';
        p++;
      } else {
        *cp = 'P';
      }
      break;
    case 'H':
      c2 = (*(p + 1));
      c3 = (*(p - 1));
      if (!((c2) == 'A' || (c2) == 'E' || (c2) == 'I' || (c2) == 'O' ||
            (c2) == 'U') ||
          !((c3) == 'A' || (c3) == 'E' || (c3) == 'I' || (c3) == 'O' ||
            (c3) == 'U')) {
        if ((c3) == 'A' || (c3) == 'E' || (c3) == 'I' || (c3) == 'O' ||
            (c3) == 'U') {
          *cp = 'A';
        } else {
          *cp = c3;
        }
      } else {
        *cp = 'H';
      }
      break;
    case 'W':
      c2 = (*(p - 1));
      if (((c2) == 'A' || (c2) == 'E' || (c2) == 'I' || (c2) == 'O' ||
           (c2) == 'U')) {
        *cp = c2;
      } else {
        *cp = 'W';
      }
      break;
    default:
      *cp = (c1);
    }
    if (*cp != *(cp - 1)) {
      cp++;
    }
    p++;
  }
  *cp = '\0';
  c1 = *(cp - 1);
  if (c1 == 'S') {
    *(--cp) = '\0';
  } else if (c1 == 'Y') {
    if (*(cp - 2) == 'A') {
      *(--cp) = '\0';
      *(--cp) = 'Y';
    }
  }
  if (*(cp - 1) == 'A') {
    *(cp - 1) = '\0';
  }
  return code;
}


x86 assembly (clang, -O0):
<nysiis>:
push   %rbp
mov    %rsp,%rbp
sub    $0x50,%rsp
mov    %rdi,-0x10(%rbp)
mov    -0x10(%rbp),%rdi
call   1050 <strlen@plt>
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rdi
add    $0x1,%rdi
shl    $0x0,%rdi
call   1070 <alloca@plt>
mov    %rax,-0x28(%rbp)
movq   $0x0,-0x30(%rbp)
mov    -0x28(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x18(%rbp),%rdx
add    $0x1,%rdx
call   1080 <memcpy@plt>
cmpq   $0x0,-0x28(%rbp)
jne    11c3 <nysiis+0x63>
movq   $0x0,-0x8(%rbp)
jmp    1899 <nysiis+0x739>
mov    -0x28(%rbp),%rax
cmpb   $0x0,(%rax)
jne    11e8 <nysiis+0x88>
mov    $0x1,%edi
mov    $0x1,%esi
call   1060 <calloc@plt>
mov    %rax,-0x8(%rbp)
jmp    1899 <nysiis+0x739>
mov    -0x18(%rbp),%rdi
add    $0x1,%rdi
mov    $0x1,%esi
call   1060 <calloc@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x0,-0x30(%rbp)
jne    1216 <nysiis+0xb6>
movq   $0x0,-0x8(%rbp)
jmp    1899 <nysiis+0x739>
mov    -0x28(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rax
cmpb   $0x0,(%rax)
je     125e <nysiis+0xfe>
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %al,%cl
mov    -0x40(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x40(%rbp)
mov    %cl,(%rax)
jmp    1222 <nysiis+0xc2>
mov    -0x28(%rbp),%rdi
lea    0xdff(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    128a <nysiis+0x12a>
mov    -0x28(%rbp),%rax
movb   $0x43,0x1(%rax)
jmp    1347 <nysiis+0x1e7>
mov    -0x28(%rbp),%rdi
lea    0xdd7(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    12b5 <nysiis+0x155>
mov    -0x28(%rbp),%rax
movb   $0x4e,(%rax)
jmp    1342 <nysiis+0x1e2>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x4b,%eax
jne    12d1 <nysiis+0x171>
mov    -0x28(%rbp),%rax
movb   $0x43,(%rax)
jmp    133d <nysiis+0x1dd>
mov    -0x28(%rbp),%rdi
lea    0xd93(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1304 <nysiis+0x1a4>
mov    -0x28(%rbp),%rax
movb   $0x46,(%rax)
mov    -0x28(%rbp),%rax
movb   $0x46,0x1(%rax)
jmp    1338 <nysiis+0x1d8>
mov    -0x28(%rbp),%rdi
lea    0xd63(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%rax
jne    1333 <nysiis+0x1d3>
mov    -0x28(%rbp),%rax
movb   $0x53,0x1(%rax)
mov    -0x28(%rbp),%rax
movb   $0x53,0x2(%rax)
jmp    1338 <nysiis+0x1d8>
jmp    133d <nysiis+0x1dd>
jmp    1342 <nysiis+0x1e2>
jmp    1347 <nysiis+0x1e7>
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x1,%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x19(%rbp)
movsbl -0x19(%rbp),%eax
cmp    $0x45,%eax
jne    13b7 <nysiis+0x257>
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x2,%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x1a(%rbp)
movsbl -0x1a(%rbp),%eax
cmp    $0x45,%eax
je     1392 <nysiis+0x232>
movsbl -0x1a(%rbp),%eax
cmp    $0x49,%eax
jne    13b2 <nysiis+0x252>
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x1,%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x2,%rcx
movb   $0x59,(%rax,%rcx,1)
jmp    148a <nysiis+0x32a>
movsbl -0x19(%rbp),%eax
cmp    $0x54,%eax
jne    1422 <nysiis+0x2c2>
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x2,%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x1a(%rbp)
movsbl -0x1a(%rbp),%eax
cmp    $0x44,%eax
je     13fd <nysiis+0x29d>
movsbl -0x1a(%rbp),%eax
cmp    $0x52,%eax
je     13fd <nysiis+0x29d>
movsbl -0x1a(%rbp),%eax
cmp    $0x4e,%eax
jne    141d <nysiis+0x2bd>
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x1,%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x2,%rcx
movb   $0x44,(%rax,%rcx,1)
jmp    1485 <nysiis+0x325>
movsbl -0x19(%rbp),%eax
cmp    $0x44,%eax
jne    1480 <nysiis+0x320>
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x2,%rcx
mov    (%rax,%rcx,1),%al
mov    %al,-0x1a(%rbp)
movsbl -0x1a(%rbp),%eax
cmp    $0x52,%eax
je     145b <nysiis+0x2fb>
movsbl -0x1a(%rbp),%eax
cmp    $0x4e,%eax
jne    147b <nysiis+0x31b>
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x1,%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%rcx
sub    $0x2,%rcx
movb   $0x44,(%rax,%rcx,1)
jmp    1480 <nysiis+0x320>
jmp    1485 <nysiis+0x325>
jmp    148a <nysiis+0x32a>
mov    -0x30(%rbp),%rax
mov    %rax,-0x40(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0x38(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x38(%rbp)
mov    (%rax),%cl
mov    -0x40(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x40(%rbp)
mov    %cl,(%rax)
mov    -0x38(%rbp),%rax
mov    (%rax),%al
mov    %al,-0x19(%rbp)
cmp    $0x0,%al
je     17f4 <nysiis+0x694>
movsbl -0x19(%rbp),%eax
cmp    $0x20,%eax
jne    14df <nysiis+0x37f>
jmp    17f4 <nysiis+0x694>
movsbl -0x19(%rbp),%eax
add    $0xffffffbf,%eax
mov    %eax,%ecx
mov    %rcx,-0x48(%rbp)
sub    $0x19,%eax
ja     17b7 <nysiis+0x657>
mov    -0x48(%rbp),%rax
lea    0xb00(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x38(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x56,%eax
jne    1545 <nysiis+0x3e5>
mov    -0x40(%rbp),%rax
movb   $0x41,(%rax)
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x40(%rbp)
movb   $0x46,0x1(%rax)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    17c0 <nysiis+0x660>
jmp    154a <nysiis+0x3ea>
mov    -0x40(%rbp),%rax
movb   $0x41,(%rax)
jmp    17c0 <nysiis+0x660>
mov    -0x40(%rbp),%rax
movb   $0x47,(%rax)
jmp    17c0 <nysiis+0x660>
mov    -0x40(%rbp),%rax
movb   $0x53,(%rax)
jmp    17c0 <nysiis+0x660>
mov    -0x40(%rbp),%rax
movb   $0x4e,(%rax)
jmp    17c0 <nysiis+0x660>
mov    -0x38(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x4e,%eax
jne    1597 <nysiis+0x437>
mov    -0x40(%rbp),%rax
movb   $0x4e,(%rax)
jmp    159e <nysiis+0x43e>
mov    -0x40(%rbp),%rax
movb   $0x43,(%rax)
jmp    17c0 <nysiis+0x660>
mov    -0x38(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x43,%eax
jne    1601 <nysiis+0x4a1>
mov    -0x38(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x48,%eax
jne    1601 <nysiis+0x4a1>
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x40(%rbp)
movb   $0x53,(%rax)
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x40(%rbp)
movb   $0x53,(%rax)
mov    -0x40(%rbp),%rax
movb   $0x53,(%rax)
mov    -0x38(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x38(%rbp)
jmp    1608 <nysiis+0x4a8>
mov    -0x40(%rbp),%rax
movb   $0x53,(%rax)
jmp    17c0 <nysiis+0x660>
mov    -0x38(%rbp),%rax
movsbl 0x1(%rax),%eax
cmp    $0x48,%eax
jne    1649 <nysiis+0x4e9>
mov    -0x40(%rbp),%rax
movb   $0x46,(%rax)
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x40(%rbp)
movb   $0x46,0x1(%rax)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    1650 <nysiis+0x4f0>
mov    -0x40(%rbp),%rax
movb   $0x50,(%rax)
jmp    17c0 <nysiis+0x660>
mov    -0x38(%rbp),%rax
mov    0x1(%rax),%al
mov    %al,-0x1a(%rbp)
mov    -0x38(%rbp),%rax
mov    -0x1(%rax),%al
mov    %al,-0x1b(%rbp)
movsbl -0x1a(%rbp),%eax
cmp    $0x41,%eax
je     16aa <nysiis+0x54a>
movsbl -0x1a(%rbp),%eax
cmp    $0x45,%eax
je     16aa <nysiis+0x54a>
movsbl -0x1a(%rbp),%eax
cmp    $0x49,%eax
je     16aa <nysiis+0x54a>
movsbl -0x1a(%rbp),%eax
cmp    $0x4f,%eax
je     16aa <nysiis+0x54a>
movsbl -0x1a(%rbp),%eax
cmp    $0x55,%eax
jne    16eb <nysiis+0x58b>
movsbl -0x1b(%rbp),%eax
cmp    $0x41,%eax
je     1746 <nysiis+0x5e6>
movsbl -0x1b(%rbp),%eax
cmp    $0x45,%eax
je     1746 <nysiis+0x5e6>
movsbl -0x1b(%rbp),%eax
cmp    $0x49,%eax
je     1746 <nysiis+0x5e6>
movsbl -0x1b(%rbp),%eax
cmp    $0x4f,%eax
je     1746 <nysiis+0x5e6>
movsbl -0x1b(%rbp),%eax
cmp    $0x55,%eax
je     1746 <nysiis+0x5e6>
movsbl -0x1b(%rbp),%eax
cmp    $0x41,%eax
je     172c <nysiis+0x5cc>
movsbl -0x1b(%rbp),%eax
cmp    $0x45,%eax
je     172c <nysiis+0x5cc>
movsbl -0x1b(%rbp),%eax
cmp    $0x49,%eax
je     172c <nysiis+0x5cc>
movsbl -0x1b(%rbp),%eax
cmp    $0x4f,%eax
je     172c <nysiis+0x5cc>
movsbl -0x1b(%rbp),%eax
cmp    $0x55,%eax
jne    1738 <nysiis+0x5d8>
mov    -0x40(%rbp),%rax
movb   $0x41,(%rax)
jmp    1741 <nysiis+0x5e1>
mov    -0x1b(%rbp),%cl
mov    -0x40(%rbp),%rax
mov    %cl,(%rax)
jmp    174d <nysiis+0x5ed>
mov    -0x40(%rbp),%rax
movb   $0x48,(%rax)
jmp    17c0 <nysiis+0x660>
mov    -0x38(%rbp),%rax
mov    -0x1(%rax),%al
mov    %al,-0x1a(%rbp)
movsbl -0x1a(%rbp),%eax
cmp    $0x41,%eax
je     179d <nysiis+0x63d>
movsbl -0x1a(%rbp),%eax
cmp    $0x45,%eax
je     179d <nysiis+0x63d>
movsbl -0x1a(%rbp),%eax
cmp    $0x49,%eax
je     179d <nysiis+0x63d>
movsbl -0x1a(%rbp),%eax
cmp    $0x4f,%eax
je     179d <nysiis+0x63d>
movsbl -0x1a(%rbp),%eax
cmp    $0x55,%eax
jne    17ab <nysiis+0x64b>
mov    -0x1a(%rbp),%cl
mov    -0x40(%rbp),%rax
mov    %cl,(%rax)
jmp    17b2 <nysiis+0x652>
mov    -0x40(%rbp),%rax
movb   $0x57,(%rax)
jmp    17c0 <nysiis+0x660>
mov    -0x19(%rbp),%cl
mov    -0x40(%rbp),%rax
mov    %cl,(%rax)
mov    -0x40(%rbp),%rax
movsbl (%rax),%eax
mov    -0x40(%rbp),%rcx
movsbl -0x1(%rcx),%ecx
cmp    %ecx,%eax
je     17e3 <nysiis+0x683>
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    14bc <nysiis+0x35c>
mov    -0x40(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x40(%rbp),%rax
mov    -0x1(%rax),%al
mov    %al,-0x19(%rbp)
movsbl -0x19(%rbp),%eax
cmp    $0x53,%eax
jne    182a <nysiis+0x6ca>
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0xffffffffffffffff,%rcx
mov    %rcx,-0x40(%rbp)
movb   $0x0,-0x1(%rax)
jmp    1878 <nysiis+0x718>
movsbl -0x19(%rbp),%eax
cmp    $0x59,%eax
jne    1873 <nysiis+0x713>
mov    -0x40(%rbp),%rax
movsbl -0x2(%rax),%eax
cmp    $0x41,%eax
jne    186e <nysiis+0x70e>
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0xffffffffffffffff,%rcx
mov    %rcx,-0x40(%rbp)
movb   $0x0,-0x1(%rax)
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0xffffffffffffffff,%rcx
mov    %rcx,-0x40(%rbp)
movb   $0x59,-0x1(%rax)
jmp    1873 <nysiis+0x713>
jmp    1878 <nysiis+0x718>
mov    -0x40(%rbp),%rax
movsbl -0x1(%rax),%eax
cmp    $0x41,%eax
jne    1891 <nysiis+0x731>
mov    -0x40(%rbp),%rax
movb   $0x0,-0x1(%rax)
mov    -0x30(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x50,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<nysiis>:
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
mov    %rdi,%r12
call   1050 <strlen@plt>
mov    %rax,%r15
lea    0x1(%rax),%r14
mov    %r14,%rdi
call   1070 <alloca@plt>
mov    %rax,%r13
mov    %rax,%rdi
mov    %r12,%rsi
mov    %r14,%rdx
call   1080 <memcpy@plt>
test   %r13,%r13
je     1226 <nysiis+0xc6>
cmpb   $0x0,0x0(%r13)
je     1232 <nysiis+0xd2>
mov    %r14,%rdi
mov    $0x1,%esi
call   1060 <calloc@plt>
test   %rax,%rax
je     1226 <nysiis+0xc6>
mov    %rax,%r14
mov    0x0(%r13),%al
test   %al,%al
je     11e6 <nysiis+0x86>
lea    0x1(%r13),%rbx
cs nopw 0x0(%rax,%rax,1)
movsbl %al,%edi
call   1040 <toupper@plt>
mov    %al,-0x1(%rbx)
movzbl (%rbx),%eax
add    $0x1,%rbx
test   %al,%al
jne    11d0 <nysiis+0x70>
lea    0xe7b(%rip),%rsi
mov    %r13,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     124a <nysiis+0xea>
lea    0xe66(%rip),%rsi
mov    %r13,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1251 <nysiis+0xf1>
cmpb   $0x4b,0x0(%r13)
jne    1258 <nysiis+0xf8>
movb   $0x43,0x0(%r13)
jmp    129a <nysiis+0x13a>
xor    %eax,%eax
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
ret
mov    $0x1,%edi
mov    $0x1,%esi
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
jmp    1060 <calloc@plt>
movb   $0x43,0x1(%r13)
jmp    129a <nysiis+0x13a>
movb   $0x4e,0x0(%r13)
jmp    129a <nysiis+0x13a>
lea    0xe10(%rip),%rsi
mov    %r13,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
je     1293 <nysiis+0x133>
lea    0xdfa(%rip),%rsi
mov    %r13,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %rax,%rax
jne    129a <nysiis+0x13a>
movw   $0x5353,0x1(%r13)
jmp    129a <nysiis+0x13a>
movw   $0x4646,0x0(%r13)
mov    %r14,%rax
mov    -0x1(%r15,%r13,1),%cl
cmp    $0x44,%cl
je     12ca <nysiis+0x16a>
cmp    $0x54,%cl
je     12db <nysiis+0x17b>
cmp    $0x45,%cl
jne    12fe <nysiis+0x19e>
mov    -0x2(%r15,%r13,1),%cl
cmp    $0x49,%cl
je     12c0 <nysiis+0x160>
cmp    $0x45,%cl
jne    12fe <nysiis+0x19e>
movw   $0x2059,-0x2(%r13,%r15,1)
20
jmp    12fe <nysiis+0x19e>
mov    -0x2(%r15,%r13,1),%cl
cmp    $0x52,%cl
je     12f6 <nysiis+0x196>
cmp    $0x4e,%cl
je     12f6 <nysiis+0x196>
jmp    12fe <nysiis+0x19e>
mov    -0x2(%r15,%r13,1),%cl
add    $0xbc,%cl
cmp    $0xe,%cl
ja     12fe <nysiis+0x19e>
movzbl %cl,%ecx
mov    $0x4401,%edx
bt     %rcx,%rdx
jae    12fe <nysiis+0x19e>
movw   $0x2044,-0x2(%r13,%r15,1)
20
mov    0x0(%r13),%cl
add    $0x1,%r14
mov    %cl,(%rax)
mov    0x1(%r13),%dil
test   $0xdf,%dil
je     14ad <nysiis+0x34d>
mov    %r13,%rsi
add    $0x1,%rsi
lea    0xcdc(%rip),%rcx
mov    $0x495,%r8d
jmp    1359 <nysiis+0x1f9>
nopl   0x0(%rax)
movb   $0x41,(%r14)
mov    $0x41,%dil
mov    %rsi,%r13
xor    %edx,%edx
cmp    -0x1(%r14),%dil
setne  %dl
add    %rdx,%r14
add    $0x1,%rsi
movzbl 0x1(%r13),%edi
test   $0xdf,%dil
je     14ad <nysiis+0x34d>
movsbl %dil,%ebx
add    $0xffffffbf,%ebx
cmp    $0x19,%ebx
ja     1468 <nysiis+0x308>
movslq (%rcx,%rbx,4),%rbx
add    %rcx,%rbx
jmp    *%rbx
cmpb   $0x56,0x2(%r13)
jne    1330 <nysiis+0x1d0>
add    $0x2,%r13
movw   $0x4641,(%r14)
jmp    13fd <nysiis+0x29d>
movzbl 0x0(%r13),%edi
movzbl 0x2(%r13),%ebx
add    $0xbf,%bl
ror    %bl
cmp    $0xa,%bl
ja     1488 <nysiis+0x328>
movzbl %bl,%ebx
bt     %rbx,%r8
jae    1488 <nysiis+0x328>
lea    -0x41(%rdi),%ebx
ror    %bl
cmp    $0xa,%bl
ja     148d <nysiis+0x32d>
movzbl %bl,%edx
bt     %rdx,%r8
jae    148d <nysiis+0x32d>
movb   $0x48,(%r14)
mov    $0x48,%dil
jmp    1337 <nysiis+0x1d7>
cmpb   $0x4e,0x2(%r13)
jne    1470 <nysiis+0x310>
movb   $0x4e,(%r14)
mov    $0x4e,%dil
jmp    1337 <nysiis+0x1d7>
cmpb   $0x48,0x2(%r13)
jne    147c <nysiis+0x31c>
add    $0x2,%r13
movw   $0x4646,(%r14)
add    $0x1,%r14
mov    $0x46,%dil
mov    %r13,%rsi
jmp    1337 <nysiis+0x1d7>
movb   $0x47,(%r14)
mov    $0x47,%dil
jmp    1337 <nysiis+0x1d7>
cmpb   $0x43,0x2(%r13)
jne    1444 <nysiis+0x2e4>
cmpb   $0x48,0x3(%r13)
jne    1444 <nysiis+0x2e4>
add    $0x3,%r13
movw   $0x5353,(%r14)
movb   $0x53,0x2(%r14)
add    $0x2,%r14
mov    $0x53,%dil
mov    %r13,%rsi
jmp    1337 <nysiis+0x1d7>
movb   $0x53,(%r14)
mov    $0x53,%dil
jmp    1337 <nysiis+0x1d7>
movzbl 0x0(%r13),%edi
lea    -0x41(%rdi),%ebx
ror    %bl
cmp    $0xa,%bl
ja     14a1 <nysiis+0x341>
movzbl %bl,%edx
bt     %rdx,%r8
jae    14a1 <nysiis+0x341>
mov    %dil,(%r14)
jmp    1337 <nysiis+0x1d7>
movb   $0x43,(%r14)
mov    $0x43,%dil
jmp    1337 <nysiis+0x1d7>
movb   $0x50,(%r14)
mov    $0x50,%dil
jmp    1337 <nysiis+0x1d7>
lea    -0x41(%rdi),%ebx
ror    %bl
cmp    $0xa,%bl
ja     1468 <nysiis+0x308>
movzbl %bl,%edx
bt     %rdx,%r8
jb     1330 <nysiis+0x1d0>
jmp    1468 <nysiis+0x308>
movb   $0x57,(%r14)
mov    $0x57,%dil
jmp    1337 <nysiis+0x1d7>
movb   $0x0,(%r14)
lea    -0x1(%r14),%rcx
mov    -0x1(%r14),%dl
cmp    $0x59,%dl
je     14cb <nysiis+0x36b>
cmp    $0x53,%dl
jne    14dd <nysiis+0x37d>
movb   $0x0,(%rcx)
mov    %rcx,%r14
jmp    14dd <nysiis+0x37d>
cmpb   $0x41,-0x2(%r14)
jne    14dd <nysiis+0x37d>
add    $0xfffffffffffffffe,%r14
movb   $0x0,(%rcx)
movb   $0x59,(%r14)
cmpb   $0x41,-0x1(%r14)
jne    1228 <nysiis+0xc8>
movb   $0x0,-0x1(%r14)
jmp    1228 <nysiis+0xc8>

LLVM IR (-O0):
@.str = [4 x i8] c"MAC\00"
@.str.1 = [3 x i8] c"KN\00"
@.str.2 = [3 x i8] c"PH\00"
@.str.3 = [4 x i8] c"SCH\00"
define i8* @nysiis(i8* %0) {
%2 = alloca i8*
%3 = alloca i8*
%4 = alloca i64
%5 = alloca i8
%6 = alloca i8
%7 = alloca i8
%8 = alloca i8*
%9 = alloca i8*
%10 = alloca i8*
%11 = alloca i8*
store i8* %0, i8** %3
%12 = load i8*, i8** %3
%13 = call i64 @strlen(i8* %12)
store i64 %13, i64* %4
%14 = load i64, i64* %4
%15 = add i64 %14, 1
%16 = mul i64 %15, 1
%17 = call i8* @alloca(i64 %16)
store i8* %17, i8** %8
store i8* null, i8** %9
%18 = load i8*, i8** %8
%19 = load i8*, i8** %3
%20 = load i64, i64* %4
%21 = add i64 %20, 1
%22 = call i32 @memcpy(i8* %18, i8* %19, i64 %21)
%23 = load i8*, i8** %8
%24 = icmp ne i8* %23, null
br i1 %24, label %26, label %25
25: ; preds = %1
store i8* null, i8** %2
br label %442
26: ; preds = %1
%27 = load i8*, i8** %8
%28 = load i8, i8* %27
%29 = icmp ne i8 %28, 0
br i1 %29, label %32, label %30
30: ; preds = %26
%31 = call i8* @calloc(i64 1, i32 1)
store i8* %31, i8** %2
br label %442
32: ; preds = %26
%33 = load i64, i64* %4
%34 = add i64 %33, 1
%35 = call i8* @calloc(i64 %34, i32 1)
store i8* %35, i8** %9
%36 = load i8*, i8** %9
%37 = icmp ne i8* %36, null
br i1 %37, label %39, label %38
38: ; preds = %32
store i8* null, i8** %2
br label %442
39: ; preds = %32
%40 = load i8*, i8** %8
store i8* %40, i8** %10
store i8* %40, i8** %11
br label %41
41: ; preds = %45, %39
%42 = load i8*, i8** %10
%43 = load i8, i8* %42
%44 = icmp ne i8 %43, 0
br i1 %44, label %45, label %54
45: ; preds = %41
%46 = load i8*, i8** %10
%47 = getelementptr inbounds i8, i8* %46, i32 1
store i8* %47, i8** %10
%48 = load i8, i8* %46
%49 = sext i8 %48 to i32
%50 = call i32 @toupper(i32 %49)
%51 = trunc i32 %50 to i8
%52 = load i8*, i8** %11
%53 = getelementptr inbounds i8, i8* %52, i32 1
store i8* %53, i8** %11
store i8 %51, i8* %52
br label %41
54: ; preds = %41
%55 = load i8*, i8** %8
%56 = call i64 @strncmp(i8* %55, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 3)
%57 = icmp eq i64 %56, 0
br i1 %57, label %58, label %61
58: ; preds = %54
%59 = load i8*, i8** %8
%60 = getelementptr inbounds i8, i8* %59, i64 1
store i8 67, i8* %60
br label %99
61: ; preds = %54
%62 = load i8*, i8** %8
%63 = call i64 @strncmp(i8* %62, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32 2)
%64 = icmp eq i64 %63, 0
br i1 %64, label %65, label %68
65: ; preds = %61
%66 = load i8*, i8** %8
%67 = getelementptr inbounds i8, i8* %66, i64 0
store i8 78, i8* %67
br label %98
68: ; preds = %61
%69 = load i8*, i8** %8
%70 = getelementptr inbounds i8, i8* %69, i64 0
%71 = load i8, i8* %70
%72 = sext i8 %71 to i32
%73 = icmp eq i32 %72, 75
br i1 %73, label %74, label %77
74: ; preds = %68
%75 = load i8*, i8** %8
%76 = getelementptr inbounds i8, i8* %75, i64 0
store i8 67, i8* %76
br label %97
77: ; preds = %68
%78 = load i8*, i8** %8
%79 = call i64 @strncmp(i8* %78, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32 2)
%80 = icmp eq i64 %79, 0
br i1 %80, label %81, label %86
81: ; preds = %77
%82 = load i8*, i8** %8
%83 = getelementptr inbounds i8, i8* %82, i64 0
store i8 70, i8* %83
%84 = load i8*, i8** %8
%85 = getelementptr inbounds i8, i8* %84, i64 1
store i8 70, i8* %85
br label %96
86: ; preds = %77
%87 = load i8*, i8** %8
%88 = call i64 @strncmp(i8* %87, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 3)
%89 = icmp eq i64 %88, 0
br i1 %89, label %90, label %95
90: ; preds = %86
%91 = load i8*, i8** %8
%92 = getelementptr inbounds i8, i8* %91, i64 1
store i8 83, i8* %92
%93 = load i8*, i8** %8
%94 = getelementptr inbounds i8, i8* %93, i64 2
store i8 83, i8* %94
br label %95
95: ; preds = %90, %86
br label %96
96: ; preds = %95, %81
br label %97
97: ; preds = %96, %74
br label %98
98: ; preds = %97, %65
br label %99
99: ; preds = %98, %58
%100 = load i8*, i8** %8
%101 = load i64, i64* %4
%102 = sub i64 %101, 1
%103 = getelementptr inbounds i8, i8* %100, i64 %102
%104 = load i8, i8* %103
store i8 %104, i8* %5
%105 = load i8, i8* %5
%106 = sext i8 %105 to i32
%107 = icmp eq i32 %106, 69
br i1 %107, label %108, label %131
108: ; preds = %99
%109 = load i8*, i8** %8
%110 = load i64, i64* %4
%111 = sub i64 %110, 2
%112 = getelementptr inbounds i8, i8* %109, i64 %111
%113 = load i8, i8* %112
store i8 %113, i8* %6
%114 = load i8, i8* %6
%115 = sext i8 %114 to i32
%116 = icmp eq i32 %115, 69
br i1 %116, label %121, label %117
117: ; preds = %108
%118 = load i8, i8* %6
%119 = sext i8 %118 to i32
%120 = icmp eq i32 %119, 73
br i1 %120, label %121, label %130
121: ; preds = %117, %108
%122 = load i8*, i8** %8
%123 = load i64, i64* %4
%124 = sub i64 %123, 1
%125 = getelementptr inbounds i8, i8* %122, i64 %124
store i8 32, i8* %125
%126 = load i8*, i8** %8
%127 = load i64, i64* %4
%128 = sub i64 %127, 2
%129 = getelementptr inbounds i8, i8* %126, i64 %128
store i8 89, i8* %129
br label %130
130: ; preds = %121, %117
br label %191
131: ; preds = %99
%132 = load i8, i8* %5
%133 = sext i8 %132 to i32
%134 = icmp eq i32 %133, 84
br i1 %134, label %135, label %162
135: ; preds = %131
%136 = load i8*, i8** %8
%137 = load i64, i64* %4
%138 = sub i64 %137, 2
%139 = getelementptr inbounds i8, i8* %136, i64 %138
%140 = load i8, i8* %139
store i8 %140, i8* %6
%141 = load i8, i8* %6
%142 = sext i8 %141 to i32
%143 = icmp eq i32 %142, 68
br i1 %143, label %152, label %144
144: ; preds = %135
%145 = load i8, i8* %6
%146 = sext i8 %145 to i32
%147 = icmp eq i32 %146, 82
br i1 %147, label %152, label %148
148: ; preds = %144
%149 = load i8, i8* %6
%150 = sext i8 %149 to i32
%151 = icmp eq i32 %150, 78
br i1 %151, label %152, label %161
152: ; preds = %148, %144, %135
%153 = load i8*, i8** %8
%154 = load i64, i64* %4
%155 = sub i64 %154, 1
%156 = getelementptr inbounds i8, i8* %153, i64 %155
store i8 32, i8* %156
%157 = load i8*, i8** %8
%158 = load i64, i64* %4
%159 = sub i64 %158, 2
%160 = getelementptr inbounds i8, i8* %157, i64 %159
store i8 68, i8* %160
br label %161
161: ; preds = %152, %148
br label %190
162: ; preds = %131
%163 = load i8, i8* %5
%164 = sext i8 %163 to i32
%165 = icmp eq i32 %164, 68
br i1 %165, label %166, label %189
166: ; preds = %162
%167 = load i8*, i8** %8
%168 = load i64, i64* %4
%169 = sub i64 %168, 2
%170 = getelementptr inbounds i8, i8* %167, i64 %169
%171 = load i8, i8* %170
store i8 %171, i8* %6
%172 = load i8, i8* %6
%173 = sext i8 %172 to i32
%174 = icmp eq i32 %173, 82
br i1 %174, label %179, label %175
175: ; preds = %166
%176 = load i8, i8* %6
%177 = sext i8 %176 to i32
%178 = icmp eq i32 %177, 78
br i1 %178, label %179, label %188
179: ; preds = %175, %166
%180 = load i8*, i8** %8
%181 = load i64, i64* %4
%182 = sub i64 %181, 1
%183 = getelementptr inbounds i8, i8* %180, i64 %182
store i8 32, i8* %183
%184 = load i8*, i8** %8
%185 = load i64, i64* %4
%186 = sub i64 %185, 2
%187 = getelementptr inbounds i8, i8* %184, i64 %186
store i8 68, i8* %187
br label %188
188: ; preds = %179, %175
br label %189
189: ; preds = %188, %162
br label %190
190: ; preds = %189, %161
br label %191
191: ; preds = %190, %130
%192 = load i8*, i8** %9
store i8* %192, i8** %11
%193 = load i8*, i8** %8
store i8* %193, i8** %10
%194 = load i8*, i8** %10
%195 = getelementptr inbounds i8, i8* %194, i32 1
store i8* %195, i8** %10
%196 = load i8, i8* %194
%197 = load i8*, i8** %11
%198 = getelementptr inbounds i8, i8* %197, i32 1
store i8* %198, i8** %11
store i8 %196, i8* %197
br label %199
199: ; preds = %400, %191
%200 = load i8*, i8** %10
%201 = load i8, i8* %200
store i8 %201, i8* %5
%202 = icmp ne i8 %201, 0
br i1 %202, label %203, label %403
203: ; preds = %199
%204 = load i8, i8* %5
%205 = sext i8 %204 to i32
%206 = icmp eq i32 %205, 32
br i1 %206, label %207, label %208
207: ; preds = %203
br label %403
208: ; preds = %203
%209 = load i8, i8* %5
%210 = sext i8 %209 to i32
switch i32 %210, label %385 [
i32 69, label %211
i32 65, label %224
i32 73, label %224
i32 79, label %224
i32 85, label %224
i32 81, label %226
i32 90, label %228
i32 77, label %230
i32 75, label %232
i32 83, label %243
i32 80, label %266
i32 72, label %281
i32 87, label %356
]
211: ; preds = %208
%212 = load i8*, i8** %10
%213 = getelementptr inbounds i8, i8* %212, i64 1
%214 = load i8, i8* %213
%215 = sext i8 %214 to i32
%216 = icmp eq i32 %215, 86
br i1 %216, label %217, label %223
217: ; preds = %211
%218 = load i8*, i8** %11
store i8 65, i8* %218
%219 = load i8*, i8** %11
%220 = getelementptr inbounds i8, i8* %219, i32 1
store i8* %220, i8** %11
store i8 70, i8* %220
%221 = load i8*, i8** %10
%222 = getelementptr inbounds i8, i8* %221, i32 1
store i8* %222, i8** %10
br label %388
223: ; preds = %211
br label %224
224: ; preds = %208, %208, %208, %208, %223
%225 = load i8*, i8** %11
store i8 65, i8* %225
br label %388
226: ; preds = %208
%227 = load i8*, i8** %11
store i8 71, i8* %227
br label %388
228: ; preds = %208
%229 = load i8*, i8** %11
store i8 83, i8* %229
br label %388
230: ; preds = %208
%231 = load i8*, i8** %11
store i8 78, i8* %231
br label %388
232: ; preds = %208
%233 = load i8*, i8** %10
%234 = getelementptr inbounds i8, i8* %233, i64 1
%235 = load i8, i8* %234
%236 = sext i8 %235 to i32
%237 = icmp eq i32 %236, 78
br i1 %237, label %238, label %240
238: ; preds = %232
%239 = load i8*, i8** %11
store i8 78, i8* %239
br label %242
240: ; preds = %232
%241 = load i8*, i8** %11
store i8 67, i8* %241
br label %242
242: ; preds = %240, %238
br label %388
243: ; preds = %208
%244 = load i8*, i8** %10
%245 = getelementptr inbounds i8, i8* %244, i64 1
%246 = load i8, i8* %245
%247 = sext i8 %246 to i32
%248 = icmp eq i32 %247, 67
br i1 %248, label %249, label %263
249: ; preds = %243
%250 = load i8*, i8** %10
%251 = getelementptr inbounds i8, i8* %250, i64 2
%252 = load i8, i8* %251
%253 = sext i8 %252 to i32
%254 = icmp eq i32 %253, 72
br i1 %254, label %255, label %263
255: ; preds = %249
%256 = load i8*, i8** %11
%257 = getelementptr inbounds i8, i8* %256, i32 1
store i8* %257, i8** %11
store i8 83, i8* %256
%258 = load i8*, i8** %11
%259 = getelementptr inbounds i8, i8* %258, i32 1
store i8* %259, i8** %11
store i8 83, i8* %258
%260 = load i8*, i8** %11
store i8 83, i8* %260
%261 = load i8*, i8** %10
%262 = getelementptr inbounds i8, i8* %261, i64 2
store i8* %262, i8** %10
br label %265
263: ; preds = %249, %243
%264 = load i8*, i8** %11
store i8 83, i8* %264
br label %265
265: ; preds = %263, %255
br label %388
266: ; preds = %208
%267 = load i8*, i8** %10
%268 = getelementptr inbounds i8, i8* %267, i64 1
%269 = load i8, i8* %268
%270 = sext i8 %269 to i32
%271 = icmp eq i32 %270, 72
br i1 %271, label %272, label %278
272: ; preds = %266
%273 = load i8*, i8** %11
store i8 70, i8* %273
%274 = load i8*, i8** %11
%275 = getelementptr inbounds i8, i8* %274, i32 1
store i8* %275, i8** %11
store i8 70, i8* %275
%276 = load i8*, i8** %10
%277 = getelementptr inbounds i8, i8* %276, i32 1
store i8* %277, i8** %10
br label %280
278: ; preds = %266
%279 = load i8*, i8** %11
store i8 80, i8* %279
br label %280
280: ; preds = %278, %272
br label %388
281: ; preds = %208
%282 = load i8*, i8** %10
%283 = getelementptr inbounds i8, i8* %282, i64 1
%284 = load i8, i8* %283
store i8 %284, i8* %6
%285 = load i8*, i8** %10
%286 = getelementptr inbounds i8, i8* %285, i64 -1
%287 = load i8, i8* %286
store i8 %287, i8* %7
%288 = load i8, i8* %6
%289 = sext i8 %288 to i32
%290 = icmp eq i32 %289, 65
br i1 %290, label %307, label %291
291: ; preds = %281
%292 = load i8, i8* %6
%293 = sext i8 %292 to i32
%294 = icmp eq i32 %293, 69
br i1 %294, label %307, label %295
295: ; preds = %291
%296 = load i8, i8* %6
%297 = sext i8 %296 to i32
%298 = icmp eq i32 %297, 73
br i1 %298, label %307, label %299
299: ; preds = %295
%300 = load i8, i8* %6
%301 = sext i8 %300 to i32
%302 = icmp eq i32 %301, 79
br i1 %302, label %307, label %303
303: ; preds = %299
%304 = load i8, i8* %6
%305 = sext i8 %304 to i32
%306 = icmp eq i32 %305, 85
br i1 %306, label %307, label %327
307: ; preds = %303, %299, %295, %291, %281
%308 = load i8, i8* %7
%309 = sext i8 %308 to i32
%310 = icmp eq i32 %309, 65
br i1 %310, label %353, label %311
311: ; preds = %307
%312 = load i8, i8* %7
%313 = sext i8 %312 to i32
%314 = icmp eq i32 %313, 69
br i1 %314, label %353, label %315
315: ; preds = %311
%316 = load i8, i8* %7
%317 = sext i8 %316 to i32
%318 = icmp eq i32 %317, 73
br i1 %318, label %353, label %319
319: ; preds = %315
%320 = load i8, i8* %7
%321 = sext i8 %320 to i32
%322 = icmp eq i32 %321, 79
br i1 %322, label %353, label %323
323: ; preds = %319
%324 = load i8, i8* %7
%325 = sext i8 %324 to i32
%326 = icmp eq i32 %325, 85
br i1 %326, label %353, label %327
327: ; preds = %323, %303
%328 = load i8, i8* %7
%329 = sext i8 %328 to i32
%330 = icmp eq i32 %329, 65
br i1 %330, label %347, label %331
331: ; preds = %327
%332 = load i8, i8* %7
%333 = sext i8 %332 to i32
%334 = icmp eq i32 %333, 69
br i1 %334, label %347, label %335
335: ; preds = %331
%336 = load i8, i8* %7
%337 = sext i8 %336 to i32
%338 = icmp eq i32 %337, 73
br i1 %338, label %347, label %339
339: ; preds = %335
%340 = load i8, i8* %7
%341 = sext i8 %340 to i32
%342 = icmp eq i32 %341, 79
br i1 %342, label %347, label %343
343: ; preds = %339
%344 = load i8, i8* %7
%345 = sext i8 %344 to i32
%346 = icmp eq i32 %345, 85
br i1 %346, label %347, label %349
347: ; preds = %343, %339, %335, %331, %327
%348 = load i8*, i8** %11
store i8 65, i8* %348
br label %352
349: ; preds = %343
%350 = load i8, i8* %7
%351 = load i8*, i8** %11
store i8 %350, i8* %351
br label %352
352: ; preds = %349, %347
br label %355
353: ; preds = %323, %319, %315, %311, %307
%354 = load i8*, i8** %11
store i8 72, i8* %354
br label %355
355: ; preds = %353, %352
br label %388
356: ; preds = %208
%357 = load i8*, i8** %10
%358 = getelementptr inbounds i8, i8* %357, i64 -1
%359 = load i8, i8* %358
store i8 %359, i8* %6
%360 = load i8, i8* %6
%361 = sext i8 %360 to i32
%362 = icmp eq i32 %361, 65
br i1 %362, label %379, label %363
363: ; preds = %356
%364 = load i8, i8* %6
%365 = sext i8 %364 to i32
%366 = icmp eq i32 %365, 69
br i1 %366, label %379, label %367
367: ; preds = %363
%368 = load i8, i8* %6
%369 = sext i8 %368 to i32
%370 = icmp eq i32 %369, 73
br i1 %370, label %379, label %371
371: ; preds = %367
%372 = load i8, i8* %6
%373 = sext i8 %372 to i32
%374 = icmp eq i32 %373, 79
br i1 %374, label %379, label %375
375: ; preds = %371
%376 = load i8, i8* %6
%377 = sext i8 %376 to i32
%378 = icmp eq i32 %377, 85
br i1 %378, label %379, label %382
379: ; preds = %375, %371, %367, %363, %356
%380 = load i8, i8* %6
%381 = load i8*, i8** %11
store i8 %380, i8* %381
br label %384
382: ; preds = %375
%383 = load i8*, i8** %11
store i8 87, i8* %383
br label %384
384: ; preds = %382, %379
br label %388
385: ; preds = %208
%386 = load i8, i8* %5
%387 = load i8*, i8** %11
store i8 %386, i8* %387
br label %388
388: ; preds = %385, %384, %355, %280, %265, %242, %230, %228, %226, %224, %217
%389 = load i8*, i8** %11
%390 = load i8, i8* %389
%391 = sext i8 %390 to i32
%392 = load i8*, i8** %11
%393 = getelementptr inbounds i8, i8* %392, i64 -1
%394 = load i8, i8* %393
%395 = sext i8 %394 to i32
%396 = icmp ne i32 %391, %395
br i1 %396, label %397, label %400
397: ; preds = %388
%398 = load i8*, i8** %11
%399 = getelementptr inbounds i8, i8* %398, i32 1
store i8* %399, i8** %11
br label %400
400: ; preds = %397, %388
%401 = load i8*, i8** %10
%402 = getelementptr inbounds i8, i8* %401, i32 1
store i8* %402, i8** %10
br label %199
403: ; preds = %207, %199
%404 = load i8*, i8** %11
store i8 0, i8* %404
%405 = load i8*, i8** %11
%406 = getelementptr inbounds i8, i8* %405, i64 -1
%407 = load i8, i8* %406
store i8 %407, i8* %5
%408 = load i8, i8* %5
%409 = sext i8 %408 to i32
%410 = icmp eq i32 %409, 83
br i1 %410, label %411, label %414
411: ; preds = %403
%412 = load i8*, i8** %11
%413 = getelementptr inbounds i8, i8* %412, i32 -1
store i8* %413, i8** %11
store i8 0, i8* %413
br label %431
414: ; preds = %403
%415 = load i8, i8* %5
%416 = sext i8 %415 to i32
%417 = icmp eq i32 %416, 89
br i1 %417, label %418, label %430
418: ; preds = %414
%419 = load i8*, i8** %11
%420 = getelementptr inbounds i8, i8* %419, i64 -2
%421 = load i8, i8* %420
%422 = sext i8 %421 to i32
%423 = icmp eq i32 %422, 65
br i1 %423, label %424, label %429
424: ; preds = %418
%425 = load i8*, i8** %11
%426 = getelementptr inbounds i8, i8* %425, i32 -1
store i8* %426, i8** %11
store i8 0, i8* %426
%427 = load i8*, i8** %11
%428 = getelementptr inbounds i8, i8* %427, i32 -1
store i8* %428, i8** %11
store i8 89, i8* %428
br label %429
429: ; preds = %424, %418
br label %430
430: ; preds = %429, %414
br label %431
431: ; preds = %430, %411
%432 = load i8*, i8** %11
%433 = getelementptr inbounds i8, i8* %432, i64 -1
%434 = load i8, i8* %433
%435 = sext i8 %434 to i32
%436 = icmp eq i32 %435, 65
br i1 %436, label %437, label %440
437: ; preds = %431
%438 = load i8*, i8** %11
%439 = getelementptr inbounds i8, i8* %438, i64 -1
store i8 0, i8* %439
br label %440
440: ; preds = %437, %431
%441 = load i8*, i8** %9
store i8* %441, i8** %2
br label %442
442: ; preds = %440, %38, %30, %25
%443 = load i8*, i8** %2
ret i8* %443
}

LLVM IR (-O2):
@.str = [4 x i8] c"MAC\00"
@.str.1 = [3 x i8] c"KN\00"
@.str.2 = [3 x i8] c"PH\00"
@.str.3 = [4 x i8] c"SCH\00"
define i8* @nysiis(i8* %0) {
%2 = tail call i64 @strlen(i8* dereferenceable(1) %0)
%3 = add i64 %2, 1
%4 = tail call i8* @alloca(i64 %3)
%5 = tail call i32 @memcpy(i8* %4, i8* %0, i64 %3)
%6 = icmp eq i8* %4, null
br i1 %6, label %171, label %7
7: ; preds = %1
%8 = load i8, i8* %4
%9 = icmp eq i8 %8, 0
br i1 %9, label %10, label %12
10: ; preds = %7
%11 = tail call i8* @calloc(i64 1, i32 1)
br label %171
12: ; preds = %7
%13 = tail call i8* @calloc(i64 %3, i32 1)
%14 = icmp eq i8* %13, null
br i1 %14, label %171, label %15
15: ; preds = %12
%16 = load i8, i8* %4
%17 = icmp eq i8 %16, 0
br i1 %17, label %27, label %18
18: ; preds = %15, %18
%19 = phi i8 [ %25, %18 ], [ %16, %15 ]
%20 = phi i8* [ %21, %18 ], [ %4, %15 ]
%21 = getelementptr inbounds i8, i8* %20, i64 1
%22 = sext i8 %19 to i32
%23 = tail call i32 @toupper(i32 %22)
%24 = trunc i32 %23 to i8
store i8 %24, i8* %20
%25 = load i8, i8* %21
%26 = icmp eq i8 %25, 0
br i1 %26, label %27, label %18
27: ; preds = %18, %15
%28 = tail call i64 @strncmp(i8* %4, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str, i64 0, i64 0), i32 3)
%29 = icmp eq i64 %28, 0
br i1 %29, label %30, label %32
30: ; preds = %27
%31 = getelementptr inbounds i8, i8* %4, i64 1
store i8 67, i8* %31
br label %51
32: ; preds = %27
%33 = tail call i64 @strncmp(i8* %4, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.1, i64 0, i64 0), i32 2)
%34 = icmp eq i64 %33, 0
br i1 %34, label %35, label %36
35: ; preds = %32
store i8 78, i8* %4
br label %51
36: ; preds = %32
%37 = load i8, i8* %4
%38 = icmp eq i8 %37, 75
br i1 %38, label %39, label %40
39: ; preds = %36
store i8 67, i8* %4
br label %51
40: ; preds = %36
%41 = tail call i64 @strncmp(i8* %4, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.2, i64 0, i64 0), i32 2)
%42 = icmp eq i64 %41, 0
br i1 %42, label %43, label %45
43: ; preds = %40
store i8 70, i8* %4
%44 = getelementptr inbounds i8, i8* %4, i64 1
store i8 70, i8* %44
br label %51
45: ; preds = %40
%46 = tail call i64 @strncmp(i8* %4, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.3, i64 0, i64 0), i32 3)
%47 = icmp eq i64 %46, 0
br i1 %47, label %48, label %51
48: ; preds = %45
%49 = getelementptr inbounds i8, i8* %4, i64 1
store i8 83, i8* %49
%50 = getelementptr inbounds i8, i8* %4, i64 2
store i8 83, i8* %50
br label %51
51: ; preds = %35, %43, %48, %45, %39, %30
%52 = add i64 %2, -1
%53 = getelementptr inbounds i8, i8* %4, i64 %52
%54 = load i8, i8* %53
switch i8 %54, label %70 [
i8 69, label %55
i8 84, label %60
i8 68, label %65
]
55: ; preds = %51
%56 = add i64 %2, -2
%57 = getelementptr inbounds i8, i8* %4, i64 %56
%58 = load i8, i8* %57
switch i8 %58, label %70 [
i8 73, label %59
i8 69, label %59
]
59: ; preds = %55, %55
store i8 32, i8* %53
store i8 89, i8* %57
br label %70
60: ; preds = %51
%61 = add i64 %2, -2
%62 = getelementptr inbounds i8, i8* %4, i64 %61
%63 = load i8, i8* %62
switch i8 %63, label %70 [
i8 82, label %64
i8 78, label %64
i8 68, label %64
]
64: ; preds = %60, %60, %60
store i8 32, i8* %53
store i8 68, i8* %62
br label %70
65: ; preds = %51
%66 = add i64 %2, -2
%67 = getelementptr inbounds i8, i8* %4, i64 %66
%68 = load i8, i8* %67
switch i8 %68, label %70 [
i8 82, label %69
i8 78, label %69
]
69: ; preds = %65, %65
store i8 32, i8* %53
store i8 68, i8* %67
br label %70
70: ; preds = %65, %51, %60, %55, %64, %69, %59
%71 = load i8, i8* %4
%72 = getelementptr inbounds i8, i8* %13, i64 1
store i8 %71, i8* %13
%73 = getelementptr inbounds i8, i8* %4, i64 1
%74 = load i8, i8* %73
%75 = and i8 %74, -33
%76 = icmp eq i8 %75, 0
br i1 %76, label %155, label %77
77: ; preds = %70, %142
%78 = phi i8 [ %152, %142 ], [ %74, %70 ]
%79 = phi i8* [ %151, %142 ], [ %73, %70 ]
%80 = phi i8* [ %150, %142 ], [ %72, %70 ]
%81 = phi i8* [ %144, %142 ], [ %4, %70 ]
%82 = sext i8 %78 to i32
switch i32 %82, label %141 [
i32 69, label %83
i32 65, label %89
i32 73, label %89
i32 79, label %89
i32 85, label %89
i32 81, label %90
i32 90, label %91
i32 77, label %92
i32 75, label %93
i32 83, label %99
i32 80, label %111
i32 72, label %118
i32 87, label %135
]
83: ; preds = %77
%84 = getelementptr inbounds i8, i8* %81, i64 2
%85 = load i8, i8* %84
%86 = icmp eq i8 %85, 86
br i1 %86, label %87, label %89
87: ; preds = %83
store i8 65, i8* %80
%88 = getelementptr inbounds i8, i8* %80, i64 1
store i8 70, i8* %88
br label %142
89: ; preds = %83, %77, %77, %77, %77
store i8 65, i8* %80
br label %142
90: ; preds = %77
store i8 71, i8* %80
br label %142
91: ; preds = %77
store i8 83, i8* %80
br label %142
92: ; preds = %77
store i8 78, i8* %80
br label %142
93: ; preds = %77
%94 = getelementptr inbounds i8, i8* %81, i64 2
%95 = load i8, i8* %94
%96 = icmp eq i8 %95, 78
br i1 %96, label %97, label %98
97: ; preds = %93
store i8 78, i8* %80
br label %142
98: ; preds = %93
store i8 67, i8* %80
br label %142
99: ; preds = %77
%100 = getelementptr inbounds i8, i8* %81, i64 2
%101 = load i8, i8* %100
%102 = icmp eq i8 %101, 67
br i1 %102, label %103, label %110
103: ; preds = %99
%104 = getelementptr inbounds i8, i8* %81, i64 3
%105 = load i8, i8* %104
%106 = icmp eq i8 %105, 72
br i1 %106, label %107, label %110
107: ; preds = %103
%108 = getelementptr inbounds i8, i8* %80, i64 1
store i8 83, i8* %80
%109 = getelementptr inbounds i8, i8* %80, i64 2
store i8 83, i8* %108
store i8 83, i8* %109
br label %142
110: ; preds = %103, %99
store i8 83, i8* %80
br label %142
111: ; preds = %77
%112 = getelementptr inbounds i8, i8* %81, i64 2
%113 = load i8, i8* %112
%114 = icmp eq i8 %113, 72
br i1 %114, label %115, label %117
115: ; preds = %111
store i8 70, i8* %80
%116 = getelementptr inbounds i8, i8* %80, i64 1
store i8 70, i8* %116
br label %142
117: ; preds = %111
store i8 80, i8* %80
br label %142
118: ; preds = %77
%119 = getelementptr inbounds i8, i8* %81, i64 2
%120 = load i8, i8* %119
%121 = load i8, i8* %81
%122 = add i8 %120, -65
%123 = tail call i8 @llvm.fshl.i8(i8 %122, i8 %122, i8 7)
switch i8 %123, label %124 [
i8 10, label %127
i8 7, label %127
i8 4, label %127
i8 2, label %127
i8 0, label %127
]
124: ; preds = %118
%125 = add i8 %121, -65
%126 = tail call i8 @llvm.fshl.i8(i8 %125, i8 %125, i8 7)
br label %130
127: ; preds = %118, %118, %118, %118, %118
%128 = add i8 %121, -65
%129 = tail call i8 @llvm.fshl.i8(i8 %128, i8 %128, i8 7)
switch i8 %129, label %130 [
i8 10, label %134
i8 7, label %134
i8 4, label %134
i8 2, label %134
i8 0, label %134
]
130: ; preds = %124, %127
%131 = phi i8 [ %126, %124 ], [ %129, %127 ]
switch i8 %131, label %133 [
i8 10, label %132
i8 7, label %132
i8 4, label %132
i8 2, label %132
i8 0, label %132
]
132: ; preds = %130, %130, %130, %130, %130
store i8 65, i8* %80
br label %142
133: ; preds = %130
store i8 %121, i8* %80
br label %142
134: ; preds = %127, %127, %127, %127, %127
store i8 72, i8* %80
br label %142
135: ; preds = %77
%136 = load i8, i8* %81
%137 = add i8 %136, -65
%138 = tail call i8 @llvm.fshl.i8(i8 %137, i8 %137, i8 7)
switch i8 %138, label %140 [
i8 10, label %139
i8 7, label %139
i8 4, label %139
i8 2, label %139
i8 0, label %139
]
139: ; preds = %135, %135, %135, %135, %135
store i8 %136, i8* %80
br label %142
140: ; preds = %135
store i8 87, i8* %80
br label %142
141: ; preds = %77
store i8 %78, i8* %80
br label %142
142: ; preds = %139, %140, %134, %133, %132, %115, %117, %107, %110, %97, %98, %141, %92, %91, %90, %89, %87
%143 = phi i8 [ %78, %141 ], [ %136, %139 ], [ 87, %140 ], [ 72, %134 ], [ 65, %132 ], [ %121, %133 ], [ 70, %115 ], [ 80, %117 ], [ 83, %107 ], [ 83, %110 ], [ 78, %97 ], [ 67, %98 ], [ 78, %92 ], [ 83, %91 ], [ 71, %90 ], [ 65, %89 ], [ 70, %87 ]
%144 = phi i8* [ %79, %141 ], [ %79, %139 ], [ %79, %140 ], [ %79, %134 ], [ %79, %132 ], [ %79, %133 ], [ %112, %115 ], [ %79, %117 ], [ %104, %107 ], [ %79, %110 ], [ %79, %97 ], [ %79, %98 ], [ %79, %92 ], [ %79, %91 ], [ %79, %90 ], [ %79, %89 ], [ %84, %87 ]
%145 = phi i8* [ %80, %141 ], [ %80, %139 ], [ %80, %140 ], [ %80, %134 ], [ %80, %132 ], [ %80, %133 ], [ %116, %115 ], [ %80, %117 ], [ %109, %107 ], [ %80, %110 ], [ %80, %97 ], [ %80, %98 ], [ %80, %92 ], [ %80, %91 ], [ %80, %90 ], [ %80, %89 ], [ %88, %87 ]
%146 = getelementptr inbounds i8, i8* %145, i64 -1
%147 = load i8, i8* %146
%148 = icmp ne i8 %143, %147
%149 = zext i1 %148 to i64
%150 = getelementptr i8, i8* %145, i64 %149
%151 = getelementptr inbounds i8, i8* %144, i64 1
%152 = load i8, i8* %151
%153 = and i8 %152, -33
%154 = icmp eq i8 %153, 0
br i1 %154, label %155, label %77
155: ; preds = %142, %70
%156 = phi i8* [ %72, %70 ], [ %150, %142 ]
store i8 0, i8* %156
%157 = getelementptr inbounds i8, i8* %156, i64 -1
%158 = load i8, i8* %157
switch i8 %158, label %165 [
i8 83, label %159
i8 89, label %160
]
159: ; preds = %155
store i8 0, i8* %157
br label %165
160: ; preds = %155
%161 = getelementptr inbounds i8, i8* %156, i64 -2
%162 = load i8, i8* %161
%163 = icmp eq i8 %162, 65
br i1 %163, label %164, label %165
164: ; preds = %160
store i8 0, i8* %157
store i8 89, i8* %161
br label %165
165: ; preds = %155, %164, %160, %159
%166 = phi i8* [ %157, %159 ], [ %161, %164 ], [ %156, %160 ], [ %156, %155 ]
%167 = getelementptr inbounds i8, i8* %166, i64 -1
%168 = load i8, i8* %167
%169 = icmp eq i8 %168, 65
br i1 %169, label %170, label %171
170: ; preds = %165
store i8 0, i8* %167
br label %171
171: ; preds = %165, %170, %12, %1, %10
%172 = phi i8* [ %11, %10 ], [ null, %1 ], [ null, %12 ], [ %13, %170 ], [ %13, %165 ]
ret i8* %172
}