#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 *);
int /*<<< orphan*/ strncmp(char *, char *, int);
char toupper(char);
char *nysiis(const char *str) {
  size_t len = strlen(str);
  char c1, c2, c3;
  char *copy = alloca((len + 1) * sizeof(char));
  memcpy(copy, str, len + 1);
  if (!copy) {
    return NULL;
  }
  if (!*copy) {
    return calloc(1, sizeof(char));
  }
  char *code = calloc(len + 1, sizeof(char));
  if (!code) {
    return NULL;
  }
  char *p, *cp;
  if (!strncmp(copy, "MAC", 3)) {
    copy[1] = 'C';
  } else if (!strncmp(copy, "KN", 3)) {
    copy[0] = 'N';
  } else if (copy[0] == 'K') {
    copy[0] = 'C';
  } else if (!strncmp(copy, "PH", 2)) {
    copy[0] = 'F';
    copy[1] = 'F';
  } else if (!strncmp(copy, "SCH", 3)) {
    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++) = toupper(*(p++));
  while ((c1 = toupper(*p))) {
    if (c1 == ' ') {
      break;
    }
    switch (c1) {
    case 'E':
      if (toupper(*(p + 1)) == 'V') {
        *cp = 'A';
        *(++cp) = 'F';
        break;
      }
      *cp = 'A';
      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 (toupper(*(p + 1)) == 'N') {
        *cp = 'N';
      } else {
        *cp = 'C';
      }
      break;
    case 'S':
      if (toupper(*(p + 1)) == 'C' && toupper(*(p + 2)) == 'H') {
        *(cp++) = 'S';
        *(cp++) = 'S';
        *cp = 'S';
      } else {
        *cp = 'S';
      }
      break;
    case 'P':
      if (toupper(*(p + 1)) == 'H') {
        *cp = 'F';
        *(++cp) = 'F';
      } else {
        *cp = 'P';
      }
      break;
    case 'H':
      c2 = toupper(*(p + 1));
      c3 = toupper(*(p - 1));
      if (!((c2) == 'A' || (c2) == 'E' || (c2) == 'I' || (c2) == 'O' ||
            (c2) == 'U') ||
          !((c3) == 'A' || (c3) == 'E' || (c3) == 'I' || (c3) == 'O' ||
            (c3) == 'U')) {
        *cp = c3;
      } else {
        *cp = 'H';
      }
      break;
    case 'W':
      c2 = toupper(*(p - 1));
      if (((c2) == 'A' || (c2) == 'E' || (c2) == 'I' || (c2) == 'O' ||
           (c2) == 'U')) {
        *cp = c2;
      } else {
        *cp = 'W';
      }
      break;
    default:
      *cp = toupper(c1);
    }
    if (*cp != *(cp - 1) || cp == code + 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)
mov    -0x28(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x18(%rbp),%rdx
add    $0x1,%rdx
call   1080 <memcpy@plt>
cmpq   $0x0,-0x28(%rbp)
jne    11bb <nysiis+0x5b>
movq   $0x0,-0x8(%rbp)
jmp    1840 <nysiis+0x6e0>
mov    -0x28(%rbp),%rax
cmpb   $0x0,(%rax)
jne    11e0 <nysiis+0x80>
mov    $0x1,%edi
mov    $0x1,%esi
call   1060 <calloc@plt>
mov    %rax,-0x8(%rbp)
jmp    1840 <nysiis+0x6e0>
mov    -0x18(%rbp),%rdi
add    $0x1,%rdi
mov    $0x1,%esi
call   1060 <calloc@plt>
mov    %rax,-0x30(%rbp)
cmpq   $0x0,-0x30(%rbp)
jne    120e <nysiis+0xae>
movq   $0x0,-0x8(%rbp)
jmp    1840 <nysiis+0x6e0>
mov    -0x28(%rbp),%rdi
lea    0xe4f(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    1239 <nysiis+0xd9>
mov    -0x28(%rbp),%rax
movb   $0x43,0x1(%rax)
jmp    12f3 <nysiis+0x193>
mov    -0x28(%rbp),%rdi
lea    0xe28(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    1263 <nysiis+0x103>
mov    -0x28(%rbp),%rax
movb   $0x4e,(%rax)
jmp    12ee <nysiis+0x18e>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x4b,%eax
jne    127f <nysiis+0x11f>
mov    -0x28(%rbp),%rax
movb   $0x43,(%rax)
jmp    12e9 <nysiis+0x189>
mov    -0x28(%rbp),%rdi
lea    0xde5(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    12b1 <nysiis+0x151>
mov    -0x28(%rbp),%rax
movb   $0x46,(%rax)
mov    -0x28(%rbp),%rax
movb   $0x46,0x1(%rax)
jmp    12e4 <nysiis+0x184>
mov    -0x28(%rbp),%rdi
lea    0xdb6(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    12df <nysiis+0x17f>
mov    -0x28(%rbp),%rax
movb   $0x53,0x1(%rax)
mov    -0x28(%rbp),%rax
movb   $0x53,0x2(%rax)
jmp    12e4 <nysiis+0x184>
jmp    12e9 <nysiis+0x189>
jmp    12ee <nysiis+0x18e>
jmp    12f3 <nysiis+0x193>
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    1363 <nysiis+0x203>
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     133e <nysiis+0x1de>
movsbl -0x1a(%rbp),%eax
cmp    $0x49,%eax
jne    135e <nysiis+0x1fe>
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    1436 <nysiis+0x2d6>
movsbl -0x19(%rbp),%eax
cmp    $0x54,%eax
jne    13ce <nysiis+0x26e>
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     13a9 <nysiis+0x249>
movsbl -0x1a(%rbp),%eax
cmp    $0x52,%eax
je     13a9 <nysiis+0x249>
movsbl -0x1a(%rbp),%eax
cmp    $0x4e,%eax
jne    13c9 <nysiis+0x269>
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    1431 <nysiis+0x2d1>
movsbl -0x19(%rbp),%eax
cmp    $0x44,%eax
jne    142c <nysiis+0x2cc>
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     1407 <nysiis+0x2a7>
movsbl -0x1a(%rbp),%eax
cmp    $0x4e,%eax
jne    1427 <nysiis+0x2c7>
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    142c <nysiis+0x2cc>
jmp    1431 <nysiis+0x2d1>
jmp    1436 <nysiis+0x2d6>
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)
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)
mov    -0x38(%rbp),%rax
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %al,-0x19(%rbp)
cmp    $0x0,%al
je     179b <nysiis+0x63b>
movsbl -0x19(%rbp),%eax
cmp    $0x20,%eax
jne    1499 <nysiis+0x339>
jmp    179b <nysiis+0x63b>
movsbl -0x19(%rbp),%eax
add    $0xffffffbf,%eax
mov    %eax,%ecx
mov    %rcx,-0x48(%rbp)
sub    $0x19,%eax
ja     1741 <nysiis+0x5e1>
mov    -0x48(%rbp),%rax
lea    0xb46(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x38(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1040 <toupper@plt>
movsbl %al,%eax
cmp    $0x56,%eax
jne    14fb <nysiis+0x39b>
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)
jmp    1752 <nysiis+0x5f2>
mov    -0x40(%rbp),%rax
movb   $0x41,(%rax)
jmp    1752 <nysiis+0x5f2>
mov    -0x40(%rbp),%rax
movb   $0x41,(%rax)
jmp    1752 <nysiis+0x5f2>
mov    -0x40(%rbp),%rax
movb   $0x47,(%rax)
jmp    1752 <nysiis+0x5f2>
mov    -0x40(%rbp),%rax
movb   $0x53,(%rax)
jmp    1752 <nysiis+0x5f2>
mov    -0x40(%rbp),%rax
movb   $0x4e,(%rax)
jmp    1752 <nysiis+0x5f2>
mov    -0x38(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1040 <toupper@plt>
movsbl %al,%eax
cmp    $0x4e,%eax
jne    155c <nysiis+0x3fc>
mov    -0x40(%rbp),%rax
movb   $0x4e,(%rax)
jmp    1563 <nysiis+0x403>
mov    -0x40(%rbp),%rax
movb   $0x43,(%rax)
jmp    1752 <nysiis+0x5f2>
mov    -0x38(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1040 <toupper@plt>
movsbl %al,%eax
cmp    $0x43,%eax
jne    15ca <nysiis+0x46a>
mov    -0x38(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1040 <toupper@plt>
movsbl %al,%eax
cmp    $0x48,%eax
jne    15ca <nysiis+0x46a>
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)
jmp    15d1 <nysiis+0x471>
mov    -0x40(%rbp),%rax
movb   $0x53,(%rax)
jmp    1752 <nysiis+0x5f2>
mov    -0x38(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1040 <toupper@plt>
movsbl %al,%eax
cmp    $0x48,%eax
jne    160e <nysiis+0x4ae>
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)
jmp    1615 <nysiis+0x4b5>
mov    -0x40(%rbp),%rax
movb   $0x50,(%rax)
jmp    1752 <nysiis+0x5f2>
mov    -0x38(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1040 <toupper@plt>
mov    %al,-0x1a(%rbp)
mov    -0x38(%rbp),%rax
movsbl -0x1(%rax),%edi
call   1040 <toupper@plt>
mov    %al,-0x1b(%rbp)
movsbl -0x1a(%rbp),%eax
cmp    $0x41,%eax
je     167b <nysiis+0x51b>
movsbl -0x1a(%rbp),%eax
cmp    $0x45,%eax
je     167b <nysiis+0x51b>
movsbl -0x1a(%rbp),%eax
cmp    $0x49,%eax
je     167b <nysiis+0x51b>
movsbl -0x1a(%rbp),%eax
cmp    $0x4f,%eax
je     167b <nysiis+0x51b>
movsbl -0x1a(%rbp),%eax
cmp    $0x55,%eax
jne    16bc <nysiis+0x55c>
movsbl -0x1b(%rbp),%eax
cmp    $0x41,%eax
je     16ca <nysiis+0x56a>
movsbl -0x1b(%rbp),%eax
cmp    $0x45,%eax
je     16ca <nysiis+0x56a>
movsbl -0x1b(%rbp),%eax
cmp    $0x49,%eax
je     16ca <nysiis+0x56a>
movsbl -0x1b(%rbp),%eax
cmp    $0x4f,%eax
je     16ca <nysiis+0x56a>
movsbl -0x1b(%rbp),%eax
cmp    $0x55,%eax
je     16ca <nysiis+0x56a>
mov    -0x1b(%rbp),%cl
mov    -0x40(%rbp),%rax
mov    %cl,(%rax)
jmp    16d1 <nysiis+0x571>
mov    -0x40(%rbp),%rax
movb   $0x48,(%rax)
jmp    1752 <nysiis+0x5f2>
mov    -0x38(%rbp),%rax
movsbl -0x1(%rax),%edi
call   1040 <toupper@plt>
mov    %al,-0x1a(%rbp)
movsbl -0x1a(%rbp),%eax
cmp    $0x41,%eax
je     1727 <nysiis+0x5c7>
movsbl -0x1a(%rbp),%eax
cmp    $0x45,%eax
je     1727 <nysiis+0x5c7>
movsbl -0x1a(%rbp),%eax
cmp    $0x49,%eax
je     1727 <nysiis+0x5c7>
movsbl -0x1a(%rbp),%eax
cmp    $0x4f,%eax
je     1727 <nysiis+0x5c7>
movsbl -0x1a(%rbp),%eax
cmp    $0x55,%eax
jne    1735 <nysiis+0x5d5>
mov    -0x1a(%rbp),%cl
mov    -0x40(%rbp),%rax
mov    %cl,(%rax)
jmp    173c <nysiis+0x5dc>
mov    -0x40(%rbp),%rax
movb   $0x57,(%rax)
jmp    1752 <nysiis+0x5f2>
movsbl -0x19(%rbp),%edi
call   1040 <toupper@plt>
mov    %al,%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
jne    177e <nysiis+0x61e>
mov    -0x40(%rbp),%rax
mov    -0x30(%rbp),%rcx
add    $0x1,%rcx
cmp    %rcx,%rax
jne    178a <nysiis+0x62a>
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    1470 <nysiis+0x310>
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    17d1 <nysiis+0x671>
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0xffffffffffffffff,%rcx
mov    %rcx,-0x40(%rbp)
movb   $0x0,-0x1(%rax)
jmp    181f <nysiis+0x6bf>
movsbl -0x19(%rbp),%eax
cmp    $0x59,%eax
jne    181a <nysiis+0x6ba>
mov    -0x40(%rbp),%rax
movsbl -0x2(%rax),%eax
cmp    $0x41,%eax
jne    1815 <nysiis+0x6b5>
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    181a <nysiis+0x6ba>
jmp    181f <nysiis+0x6bf>
mov    -0x40(%rbp),%rax
movsbl -0x1(%rax),%eax
cmp    $0x41,%eax
jne    1838 <nysiis+0x6d8>
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   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdi,%rbp
call   1050 <strlen@plt>
mov    %rax,%r15
lea    0x1(%rax),%r14
mov    %r14,%rdi
call   1070 <alloca@plt>
mov    %rax,%rbx
mov    %rax,%rdi
mov    %rbp,%rsi
mov    %r14,%rdx
call   1080 <memcpy@plt>
test   %rbx,%rbx
je     11ec <nysiis+0x8c>
cmpb   $0x0,(%rbx)
je     1201 <nysiis+0xa1>
mov    %r14,%rdi
mov    $0x1,%esi
call   1060 <calloc@plt>
test   %rax,%rax
je     11ec <nysiis+0x8c>
mov    %rax,%r14
lea    0xeaf(%rip),%rsi
mov    %rbx,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     121e <nysiis+0xbe>
lea    0xe9b(%rip),%rsi
mov    %rbx,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1224 <nysiis+0xc4>
cmpb   $0x4b,(%rbx)
jne    1229 <nysiis+0xc9>
movb   $0x43,(%rbx)
jmp    1266 <nysiis+0x106>
xor    %r14d,%r14d
mov    %r14,%rax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    $0x1,%edi
mov    $0x1,%esi
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
jmp    1060 <calloc@plt>
movb   $0x43,0x1(%rbx)
jmp    1266 <nysiis+0x106>
movb   $0x4e,(%rbx)
jmp    1266 <nysiis+0x106>
lea    0xe3f(%rip),%rsi
mov    %rbx,%rdi
mov    $0x2,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
je     1261 <nysiis+0x101>
lea    0xe2a(%rip),%rsi
mov    %rbx,%rdi
mov    $0x3,%edx
call   1030 <strncmp@plt>
test   %eax,%eax
jne    1266 <nysiis+0x106>
movw   $0x5353,0x1(%rbx)
jmp    1266 <nysiis+0x106>
movw   $0x4646,(%rbx)
mov    -0x1(%r15,%rbx,1),%al
cmp    $0x44,%al
je     128e <nysiis+0x12e>
cmp    $0x54,%al
je     129d <nysiis+0x13d>
cmp    $0x45,%al
jne    12be <nysiis+0x15e>
mov    -0x2(%r15,%rbx,1),%al
cmp    $0x49,%al
je     1284 <nysiis+0x124>
cmp    $0x45,%al
jne    12be <nysiis+0x15e>
movw   $0x2059,-0x2(%rbx,%r15,1)
20
jmp    12be <nysiis+0x15e>
mov    -0x2(%r15,%rbx,1),%al
cmp    $0x52,%al
je     12b6 <nysiis+0x156>
cmp    $0x4e,%al
je     12b6 <nysiis+0x156>
jmp    12be <nysiis+0x15e>
mov    -0x2(%r15,%rbx,1),%al
add    $0xbc,%al
cmp    $0xe,%al
ja     12be <nysiis+0x15e>
movzbl %al,%eax
mov    $0x4401,%ecx
bt     %rax,%rcx
jae    12be <nysiis+0x15e>
movw   $0x2044,-0x2(%rbx,%r15,1)
20
movsbl (%rbx),%edi
call   1040 <toupper@plt>
mov    %al,(%r14)
lea    0x1(%r14),%r13
movsbl 0x1(%rbx),%edi
call   1040 <toupper@plt>
test   $0xdf,%al
je     149e <nysiis+0x33e>
add    $0x3,%rbx
mov    $0x1,%ebp
lea    0xd12(%rip),%r12
jmp    1335 <nysiis+0x1d5>
movb   $0x53,0x0(%r13)
cs nopw 0x0(%rax,%rax,1)
nop
movzbl (%r14,%rbp,1),%eax
cmp    -0x1(%r14,%rbp,1),%al
setne  %al
cmp    $0x1,%rbp
sete   %cl
or     %al,%cl
movzbl %cl,%eax
add    %rax,%rbp
lea    (%r14,%rbp,1),%r13
movsbl -0x1(%rbx),%edi
call   1040 <toupper@plt>
add    $0x1,%rbx
test   $0xdf,%al
je     149e <nysiis+0x33e>
movsbl %al,%edi
lea    -0x41(%rdi),%eax
cmp    $0x19,%eax
ja     1350 <nysiis+0x1f0>
movslq (%r12,%rax,4),%rax
add    %r12,%rax
jmp    *%rax
movb   $0x41,0x0(%r13)
jmp    1300 <nysiis+0x1a0>
call   1040 <toupper@plt>
mov    %al,0x0(%r13)
jmp    1300 <nysiis+0x1a0>
movsbl -0x1(%rbx),%edi
call   1040 <toupper@plt>
movb   $0x41,0x0(%r13)
cmp    $0x56,%al
jne    1300 <nysiis+0x1a0>
jmp    1406 <nysiis+0x2a6>
movsbl -0x1(%rbx),%edi
call   1040 <toupper@plt>
mov    %eax,%r15d
movsbl -0x3(%rbx),%edi
call   1040 <toupper@plt>
add    $0xbf,%r15b
ror    %r15b
cmp    $0xa,%r15b
ja     1477 <nysiis+0x317>
movzbl %r15b,%ecx
mov    $0x495,%edx
bt     %rcx,%rdx
jae    1477 <nysiis+0x317>
lea    -0x41(%rax),%ecx
ror    %cl
cmp    $0xa,%cl
ja     1477 <nysiis+0x317>
movzbl %cl,%ecx
mov    $0x495,%edx
bt     %rcx,%rdx
jae    1477 <nysiis+0x317>
movb   $0x48,0x0(%r13)
jmp    1300 <nysiis+0x1a0>
movsbl -0x1(%rbx),%edi
call   1040 <toupper@plt>
cmp    $0x4e,%al
jne    1480 <nysiis+0x320>
movb   $0x4e,0x0(%r13)
jmp    1300 <nysiis+0x1a0>
movsbl -0x1(%rbx),%edi
call   1040 <toupper@plt>
cmp    $0x48,%al
jne    148a <nysiis+0x32a>
movb   $0x46,0x0(%r13)
movb   $0x46,0x1(%r14,%rbp,1)
add    $0x1,%rbp
jmp    1300 <nysiis+0x1a0>
movb   $0x47,0x0(%r13)
jmp    1300 <nysiis+0x1a0>
movsbl -0x1(%rbx),%edi
call   1040 <toupper@plt>
cmp    $0x43,%al
jne    12f0 <nysiis+0x190>
movsbl (%rbx),%edi
call   1040 <toupper@plt>
cmp    $0x48,%al
jne    12f0 <nysiis+0x190>
movb   $0x53,0x0(%r13)
movw   $0x5353,0x1(%rbp,%r14,1)
53
add    $0x2,%rbp
jmp    1300 <nysiis+0x1a0>
movsbl -0x3(%rbx),%edi
call   1040 <toupper@plt>
lea    -0x41(%rax),%ecx
ror    %cl
cmp    $0xa,%cl
ja     1494 <nysiis+0x334>
movzbl %cl,%ecx
mov    $0x495,%edx
bt     %rcx,%rdx
jae    1494 <nysiis+0x334>
mov    %al,0x0(%r13)
jmp    1300 <nysiis+0x1a0>
movb   $0x43,0x0(%r13)
jmp    1300 <nysiis+0x1a0>
movb   $0x50,0x0(%r13)
jmp    1300 <nysiis+0x1a0>
movb   $0x57,0x0(%r13)
jmp    1300 <nysiis+0x1a0>
movb   $0x0,0x0(%r13)
lea    -0x1(%r13),%rax
mov    -0x1(%r13),%cl
cmp    $0x59,%cl
je     14bd <nysiis+0x35d>
cmp    $0x53,%cl
jne    14d0 <nysiis+0x370>
movb   $0x0,(%rax)
mov    %rax,%r13
jmp    14d0 <nysiis+0x370>
cmpb   $0x41,-0x2(%r13)
jne    14d0 <nysiis+0x370>
add    $0xfffffffffffffffe,%r13
movb   $0x0,(%rax)
movb   $0x59,0x0(%r13)
cmpb   $0x41,-0x1(%r13)
jne    11ef <nysiis+0x8f>
movb   $0x0,-0x1(%r13)
jmp    11ef <nysiis+0x8f>

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

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