#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));
  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;
  }
  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';
        ++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 (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';
        p += 2;
      } else {
        *cp = 'S';
      }
      break;
    case 'P':
      if (toupper(*(p + 1)) == 'H') {
        *cp = 'F';
        *(++cp) = 'F';
        p++;
      } 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')) {
        if ((c3) == 'A' || (c3) == 'E' || (c3) == 'I' || (c3) == 'O' ||
            (c3) == 'U') {
          *cp = 'A';
        } else {
          *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++;
    }
    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    189d <nysiis+0x73d>
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    189d <nysiis+0x73d>
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    189d <nysiis+0x73d>
mov    -0x28(%rbp),%rdi
lea    0xe47(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    1241 <nysiis+0xe1>
mov    -0x28(%rbp),%rax
movb   $0x43,0x1(%rax)
jmp    12fb <nysiis+0x19b>
mov    -0x28(%rbp),%rdi
lea    0xe20(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    126b <nysiis+0x10b>
mov    -0x28(%rbp),%rax
movb   $0x4e,(%rax)
jmp    12f6 <nysiis+0x196>
mov    -0x28(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x4b,%eax
jne    1287 <nysiis+0x127>
mov    -0x28(%rbp),%rax
movb   $0x43,(%rax)
jmp    12f1 <nysiis+0x191>
mov    -0x28(%rbp),%rdi
lea    0xddd(%rip),%rsi
mov    $0x2,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    12b9 <nysiis+0x159>
mov    -0x28(%rbp),%rax
movb   $0x46,(%rax)
mov    -0x28(%rbp),%rax
movb   $0x46,0x1(%rax)
jmp    12ec <nysiis+0x18c>
mov    -0x28(%rbp),%rdi
lea    0xdae(%rip),%rsi
mov    $0x3,%edx
call   1030 <strncmp@plt>
cmp    $0x0,%eax
jne    12e7 <nysiis+0x187>
mov    -0x28(%rbp),%rax
movb   $0x53,0x1(%rax)
mov    -0x28(%rbp),%rax
movb   $0x53,0x2(%rax)
jmp    12ec <nysiis+0x18c>
jmp    12f1 <nysiis+0x191>
jmp    12f6 <nysiis+0x196>
jmp    12fb <nysiis+0x19b>
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    136b <nysiis+0x20b>
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     1346 <nysiis+0x1e6>
movsbl -0x1a(%rbp),%eax
cmp    $0x49,%eax
jne    1366 <nysiis+0x206>
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    143e <nysiis+0x2de>
movsbl -0x19(%rbp),%eax
cmp    $0x54,%eax
jne    13d6 <nysiis+0x276>
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     13b1 <nysiis+0x251>
movsbl -0x1a(%rbp),%eax
cmp    $0x52,%eax
je     13b1 <nysiis+0x251>
movsbl -0x1a(%rbp),%eax
cmp    $0x4e,%eax
jne    13d1 <nysiis+0x271>
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    1439 <nysiis+0x2d9>
movsbl -0x19(%rbp),%eax
cmp    $0x44,%eax
jne    1434 <nysiis+0x2d4>
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     140f <nysiis+0x2af>
movsbl -0x1a(%rbp),%eax
cmp    $0x4e,%eax
jne    142f <nysiis+0x2cf>
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    1434 <nysiis+0x2d4>
jmp    1439 <nysiis+0x2d9>
jmp    143e <nysiis+0x2de>
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     17f8 <nysiis+0x698>
movsbl -0x19(%rbp),%eax
cmp    $0x20,%eax
jne    14a1 <nysiis+0x341>
jmp    17f8 <nysiis+0x698>
movsbl -0x19(%rbp),%eax
add    $0xffffffbf,%eax
mov    %eax,%ecx
mov    %rcx,-0x48(%rbp)
sub    $0x19,%eax
ja     17b3 <nysiis+0x653>
mov    -0x48(%rbp),%rax
lea    0xb3e(%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    150f <nysiis+0x3af>
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    17c4 <nysiis+0x664>
jmp    1514 <nysiis+0x3b4>
mov    -0x40(%rbp),%rax
movb   $0x41,(%rax)
jmp    17c4 <nysiis+0x664>
mov    -0x40(%rbp),%rax
movb   $0x47,(%rax)
jmp    17c4 <nysiis+0x664>
mov    -0x40(%rbp),%rax
movb   $0x53,(%rax)
jmp    17c4 <nysiis+0x664>
mov    -0x40(%rbp),%rax
movb   $0x4e,(%rax)
jmp    17c4 <nysiis+0x664>
mov    -0x38(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1040 <toupper@plt>
movsbl %al,%eax
cmp    $0x4e,%eax
jne    1569 <nysiis+0x409>
mov    -0x40(%rbp),%rax
movb   $0x4e,(%rax)
jmp    1570 <nysiis+0x410>
mov    -0x40(%rbp),%rax
movb   $0x43,(%rax)
jmp    17c4 <nysiis+0x664>
mov    -0x38(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1040 <toupper@plt>
movsbl %al,%eax
cmp    $0x43,%eax
jne    15e3 <nysiis+0x483>
mov    -0x38(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1040 <toupper@plt>
movsbl %al,%eax
cmp    $0x48,%eax
jne    15e3 <nysiis+0x483>
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    15ea <nysiis+0x48a>
mov    -0x40(%rbp),%rax
movb   $0x53,(%rax)
jmp    17c4 <nysiis+0x664>
mov    -0x38(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1040 <toupper@plt>
movsbl %al,%eax
cmp    $0x48,%eax
jne    1633 <nysiis+0x4d3>
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    163a <nysiis+0x4da>
mov    -0x40(%rbp),%rax
movb   $0x50,(%rax)
jmp    17c4 <nysiis+0x664>
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     16a0 <nysiis+0x540>
movsbl -0x1a(%rbp),%eax
cmp    $0x45,%eax
je     16a0 <nysiis+0x540>
movsbl -0x1a(%rbp),%eax
cmp    $0x49,%eax
je     16a0 <nysiis+0x540>
movsbl -0x1a(%rbp),%eax
cmp    $0x4f,%eax
je     16a0 <nysiis+0x540>
movsbl -0x1a(%rbp),%eax
cmp    $0x55,%eax
jne    16e1 <nysiis+0x581>
movsbl -0x1b(%rbp),%eax
cmp    $0x41,%eax
je     173c <nysiis+0x5dc>
movsbl -0x1b(%rbp),%eax
cmp    $0x45,%eax
je     173c <nysiis+0x5dc>
movsbl -0x1b(%rbp),%eax
cmp    $0x49,%eax
je     173c <nysiis+0x5dc>
movsbl -0x1b(%rbp),%eax
cmp    $0x4f,%eax
je     173c <nysiis+0x5dc>
movsbl -0x1b(%rbp),%eax
cmp    $0x55,%eax
je     173c <nysiis+0x5dc>
movsbl -0x1b(%rbp),%eax
cmp    $0x41,%eax
je     1722 <nysiis+0x5c2>
movsbl -0x1b(%rbp),%eax
cmp    $0x45,%eax
je     1722 <nysiis+0x5c2>
movsbl -0x1b(%rbp),%eax
cmp    $0x49,%eax
je     1722 <nysiis+0x5c2>
movsbl -0x1b(%rbp),%eax
cmp    $0x4f,%eax
je     1722 <nysiis+0x5c2>
movsbl -0x1b(%rbp),%eax
cmp    $0x55,%eax
jne    172e <nysiis+0x5ce>
mov    -0x40(%rbp),%rax
movb   $0x41,(%rax)
jmp    1737 <nysiis+0x5d7>
mov    -0x1b(%rbp),%cl
mov    -0x40(%rbp),%rax
mov    %cl,(%rax)
jmp    1743 <nysiis+0x5e3>
mov    -0x40(%rbp),%rax
movb   $0x48,(%rax)
jmp    17c4 <nysiis+0x664>
mov    -0x38(%rbp),%rax
movsbl -0x1(%rax),%edi
call   1040 <toupper@plt>
mov    %al,-0x1a(%rbp)
movsbl -0x1a(%rbp),%eax
cmp    $0x41,%eax
je     1799 <nysiis+0x639>
movsbl -0x1a(%rbp),%eax
cmp    $0x45,%eax
je     1799 <nysiis+0x639>
movsbl -0x1a(%rbp),%eax
cmp    $0x49,%eax
je     1799 <nysiis+0x639>
movsbl -0x1a(%rbp),%eax
cmp    $0x4f,%eax
je     1799 <nysiis+0x639>
movsbl -0x1a(%rbp),%eax
cmp    $0x55,%eax
jne    17a7 <nysiis+0x647>
mov    -0x1a(%rbp),%cl
mov    -0x40(%rbp),%rax
mov    %cl,(%rax)
jmp    17ae <nysiis+0x64e>
mov    -0x40(%rbp),%rax
movb   $0x57,(%rax)
jmp    17c4 <nysiis+0x664>
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
je     17e7 <nysiis+0x687>
mov    -0x40(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x40(%rbp)
mov    -0x38(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x38(%rbp)
jmp    1478 <nysiis+0x318>
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    182e <nysiis+0x6ce>
mov    -0x40(%rbp),%rax
mov    %rax,%rcx
add    $0xffffffffffffffff,%rcx
mov    %rcx,-0x40(%rbp)
movb   $0x0,-0x1(%rax)
jmp    187c <nysiis+0x71c>
movsbl -0x19(%rbp),%eax
cmp    $0x59,%eax
jne    1877 <nysiis+0x717>
mov    -0x40(%rbp),%rax
movsbl -0x2(%rax),%eax
cmp    $0x41,%eax
jne    1872 <nysiis+0x712>
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    1877 <nysiis+0x717>
jmp    187c <nysiis+0x71c>
mov    -0x40(%rbp),%rax
movsbl -0x1(%rax),%eax
cmp    $0x41,%eax
jne    1895 <nysiis+0x735>
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,%r12
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,%r15
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    %r15,%r14
mov    -0x1(%r12,%rbx,1),%al
cmp    $0x44,%al
je     1291 <nysiis+0x131>
cmp    $0x54,%al
je     12a0 <nysiis+0x140>
cmp    $0x45,%al
jne    12c1 <nysiis+0x161>
mov    -0x2(%r12,%rbx,1),%al
cmp    $0x49,%al
je     1287 <nysiis+0x127>
cmp    $0x45,%al
jne    12c1 <nysiis+0x161>
movw   $0x2059,-0x2(%rbx,%r12,1)
20
jmp    12c1 <nysiis+0x161>
mov    -0x2(%r12,%rbx,1),%al
cmp    $0x52,%al
je     12b9 <nysiis+0x159>
cmp    $0x4e,%al
je     12b9 <nysiis+0x159>
jmp    12c1 <nysiis+0x161>
mov    -0x2(%r12,%rbx,1),%al
add    $0xbc,%al
cmp    $0xe,%al
ja     12c1 <nysiis+0x161>
movzbl %al,%eax
mov    $0x4401,%ecx
bt     %rax,%rcx
jae    12c1 <nysiis+0x161>
movw   $0x2044,-0x2(%rbx,%r12,1)
20
movsbl (%rbx),%edi
call   1040 <toupper@plt>
add    $0x1,%r15
mov    %al,(%r14)
movsbl 0x1(%rbx),%edi
call   1040 <toupper@plt>
test   $0xdf,%al
je     14bf <nysiis+0x35f>
mov    %rbx,%r13
add    $0x1,%r13
lea    0xd11(%rip),%r12
jmp    132a <nysiis+0x1ca>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movb   $0x41,(%r15)
mov    $0x41,%al
mov    %r13,%rbx
xor    %ecx,%ecx
cmp    -0x1(%r15),%al
setne  %cl
add    %rcx,%r15
add    $0x1,%r13
movsbl 0x1(%rbx),%edi
call   1040 <toupper@plt>
test   $0xdf,%al
je     14bf <nysiis+0x35f>
movsbl %al,%edi
lea    -0x41(%rdi),%eax
cmp    $0x19,%eax
ja     135a <nysiis+0x1fa>
movslq (%r12,%rax,4),%rax
add    %r12,%rax
jmp    *%rax
movsbl 0x2(%rbx),%edi
call   1040 <toupper@plt>
cmp    $0x56,%al
jne    1300 <nysiis+0x1a0>
add    $0x2,%rbx
movw   $0x4641,(%r15)
jmp    13fd <nysiis+0x29d>
call   1040 <toupper@plt>
jmp    1478 <nysiis+0x318>
movsbl 0x2(%rbx),%edi
call   1040 <toupper@plt>
mov    %eax,%ebp
movsbl (%rbx),%edi
call   1040 <toupper@plt>
add    $0xbf,%bpl
ror    %bpl
cmp    $0xa,%bpl
ja     1496 <nysiis+0x336>
movzbl %bpl,%ecx
mov    $0x495,%edx
bt     %rcx,%rdx
jae    1496 <nysiis+0x336>
lea    -0x41(%rax),%ecx
ror    %cl
cmp    $0xa,%cl
ja     149b <nysiis+0x33b>
movzbl %cl,%edx
mov    $0x495,%esi
bt     %rdx,%rsi
jae    149b <nysiis+0x33b>
movb   $0x48,(%r15)
mov    $0x48,%al
jmp    1306 <nysiis+0x1a6>
movsbl 0x2(%rbx),%edi
call   1040 <toupper@plt>
cmp    $0x4e,%al
jne    1480 <nysiis+0x320>
movb   $0x4e,(%r15)
mov    $0x4e,%al
jmp    1306 <nysiis+0x1a6>
movsbl 0x2(%rbx),%edi
call   1040 <toupper@plt>
cmp    $0x48,%al
jne    148b <nysiis+0x32b>
add    $0x2,%rbx
movw   $0x4646,(%r15)
add    $0x1,%r15
mov    $0x46,%al
mov    %rbx,%r13
jmp    1306 <nysiis+0x1a6>
movb   $0x47,(%r15)
mov    $0x47,%al
jmp    1306 <nysiis+0x1a6>
movsbl 0x2(%rbx),%edi
call   1040 <toupper@plt>
cmp    $0x43,%al
jne    144d <nysiis+0x2ed>
movsbl 0x3(%rbx),%edi
call   1040 <toupper@plt>
cmp    $0x48,%al
jne    144d <nysiis+0x2ed>
add    $0x3,%rbx
movw   $0x5353,(%r15)
movb   $0x53,0x2(%r15)
add    $0x2,%r15
mov    $0x53,%al
mov    %rbx,%r13
jmp    1306 <nysiis+0x1a6>
movb   $0x53,(%r15)
mov    $0x53,%al
jmp    1306 <nysiis+0x1a6>
movsbl (%rbx),%edi
call   1040 <toupper@plt>
lea    -0x41(%rax),%ecx
ror    %cl
cmp    $0xa,%cl
ja     14b4 <nysiis+0x354>
movzbl %cl,%ecx
mov    $0x495,%edx
bt     %rcx,%rdx
jae    14b4 <nysiis+0x354>
mov    %al,(%r15)
jmp    1306 <nysiis+0x1a6>
movb   $0x43,(%r15)
mov    $0x43,%al
jmp    1306 <nysiis+0x1a6>
movb   $0x50,(%r15)
mov    $0x50,%al
jmp    1306 <nysiis+0x1a6>
lea    -0x41(%rax),%ecx
ror    %cl
cmp    $0xa,%cl
ja     1478 <nysiis+0x318>
movzbl %cl,%ecx
mov    $0x495,%edx
bt     %rcx,%rdx
jb     1300 <nysiis+0x1a0>
jmp    1478 <nysiis+0x318>
movb   $0x57,(%r15)
mov    $0x57,%al
jmp    1306 <nysiis+0x1a6>
movb   $0x0,(%r15)
lea    -0x1(%r15),%rax
mov    -0x1(%r15),%cl
cmp    $0x59,%cl
je     14dd <nysiis+0x37d>
cmp    $0x53,%cl
jne    14ef <nysiis+0x38f>
movb   $0x0,(%rax)
mov    %rax,%r15
jmp    14ef <nysiis+0x38f>
cmpb   $0x41,-0x2(%r15)
jne    14ef <nysiis+0x38f>
add    $0xfffffffffffffffe,%r15
movb   $0x0,(%rax)
movb   $0x59,(%r15)
cmpb   $0x41,-0x1(%r15)
jne    11ef <nysiis+0x8f>
movb   $0x0,-0x1(%r15)
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
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 %438
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 %438
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 %438
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 = %396, %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 %399
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 %399
195: ; preds = %190
%196 = load i8, i8* %5
%197 = sext i8 %196 to i32
switch i32 %197, label %380 [
i32 69, label %198
i32 65, label %212
i32 73, label %212
i32 79, label %212
i32 85, label %212
i32 81, label %214
i32 90, label %216
i32 77, label %218
i32 75, label %220
i32 83, label %232
i32 80, label %257
i32 72, label %273
i32 87, label %350
]
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 %211
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
%209 = load i8*, i8** %10
%210 = getelementptr inbounds i8, i8* %209, i32 1
store i8* %210, i8** %10
br label %384
211: ; preds = %198
br label %212
212: ; preds = %195, %195, %195, %195, %211
%213 = load i8*, i8** %11
store i8 65, i8* %213
br label %384
214: ; preds = %195
%215 = load i8*, i8** %11
store i8 71, i8* %215
br label %384
216: ; preds = %195
%217 = load i8*, i8** %11
store i8 83, i8* %217
br label %384
218: ; preds = %195
%219 = load i8*, i8** %11
store i8 78, i8* %219
br label %384
220: ; preds = %195
%221 = load i8*, i8** %10
%222 = getelementptr inbounds i8, i8* %221, i64 1
%223 = load i8, i8* %222
%224 = call signext i8 @toupper(i8 signext %223)
%225 = sext i8 %224 to i32
%226 = icmp eq i32 %225, 78
br i1 %226, label %227, label %229
227: ; preds = %220
%228 = load i8*, i8** %11
store i8 78, i8* %228
br label %231
229: ; preds = %220
%230 = load i8*, i8** %11
store i8 67, i8* %230
br label %231
231: ; preds = %229, %227
br label %384
232: ; preds = %195
%233 = load i8*, i8** %10
%234 = getelementptr inbounds i8, i8* %233, i64 1
%235 = load i8, i8* %234
%236 = call signext i8 @toupper(i8 signext %235)
%237 = sext i8 %236 to i32
%238 = icmp eq i32 %237, 67
br i1 %238, label %239, label %254
239: ; preds = %232
%240 = load i8*, i8** %10
%241 = getelementptr inbounds i8, i8* %240, i64 2
%242 = load i8, i8* %241
%243 = call signext i8 @toupper(i8 signext %242)
%244 = sext i8 %243 to i32
%245 = icmp eq i32 %244, 72
br i1 %245, label %246, label %254
246: ; preds = %239
%247 = load i8*, i8** %11
%248 = getelementptr inbounds i8, i8* %247, i32 1
store i8* %248, i8** %11
store i8 83, i8* %247
%249 = load i8*, i8** %11
%250 = getelementptr inbounds i8, i8* %249, i32 1
store i8* %250, i8** %11
store i8 83, i8* %249
%251 = load i8*, i8** %11
store i8 83, i8* %251
%252 = load i8*, i8** %10
%253 = getelementptr inbounds i8, i8* %252, i64 2
store i8* %253, i8** %10
br label %256
254: ; preds = %239, %232
%255 = load i8*, i8** %11
store i8 83, i8* %255
br label %256
256: ; preds = %254, %246
br label %384
257: ; preds = %195
%258 = load i8*, i8** %10
%259 = getelementptr inbounds i8, i8* %258, i64 1
%260 = load i8, i8* %259
%261 = call signext i8 @toupper(i8 signext %260)
%262 = sext i8 %261 to i32
%263 = icmp eq i32 %262, 72
br i1 %263, label %264, label %270
264: ; preds = %257
%265 = load i8*, i8** %11
store i8 70, i8* %265
%266 = load i8*, i8** %11
%267 = getelementptr inbounds i8, i8* %266, i32 1
store i8* %267, i8** %11
store i8 70, i8* %267
%268 = load i8*, i8** %10
%269 = getelementptr inbounds i8, i8* %268, i32 1
store i8* %269, i8** %10
br label %272
270: ; preds = %257
%271 = load i8*, i8** %11
store i8 80, i8* %271
br label %272
272: ; preds = %270, %264
br label %384
273: ; preds = %195
%274 = load i8*, i8** %10
%275 = getelementptr inbounds i8, i8* %274, i64 1
%276 = load i8, i8* %275
%277 = call signext i8 @toupper(i8 signext %276)
store i8 %277, i8* %6
%278 = load i8*, i8** %10
%279 = getelementptr inbounds i8, i8* %278, i64 -1
%280 = load i8, i8* %279
%281 = call signext i8 @toupper(i8 signext %280)
store i8 %281, i8* %7
%282 = load i8, i8* %6
%283 = sext i8 %282 to i32
%284 = icmp eq i32 %283, 65
br i1 %284, label %301, label %285
285: ; preds = %273
%286 = load i8, i8* %6
%287 = sext i8 %286 to i32
%288 = icmp eq i32 %287, 69
br i1 %288, label %301, label %289
289: ; preds = %285
%290 = load i8, i8* %6
%291 = sext i8 %290 to i32
%292 = icmp eq i32 %291, 73
br i1 %292, label %301, label %293
293: ; preds = %289
%294 = load i8, i8* %6
%295 = sext i8 %294 to i32
%296 = icmp eq i32 %295, 79
br i1 %296, label %301, label %297
297: ; preds = %293
%298 = load i8, i8* %6
%299 = sext i8 %298 to i32
%300 = icmp eq i32 %299, 85
br i1 %300, label %301, label %321
301: ; preds = %297, %293, %289, %285, %273
%302 = load i8, i8* %7
%303 = sext i8 %302 to i32
%304 = icmp eq i32 %303, 65
br i1 %304, label %347, label %305
305: ; preds = %301
%306 = load i8, i8* %7
%307 = sext i8 %306 to i32
%308 = icmp eq i32 %307, 69
br i1 %308, label %347, label %309
309: ; preds = %305
%310 = load i8, i8* %7
%311 = sext i8 %310 to i32
%312 = icmp eq i32 %311, 73
br i1 %312, label %347, label %313
313: ; preds = %309
%314 = load i8, i8* %7
%315 = sext i8 %314 to i32
%316 = icmp eq i32 %315, 79
br i1 %316, label %347, label %317
317: ; preds = %313
%318 = load i8, i8* %7
%319 = sext i8 %318 to i32
%320 = icmp eq i32 %319, 85
br i1 %320, label %347, label %321
321: ; preds = %317, %297
%322 = load i8, i8* %7
%323 = sext i8 %322 to i32
%324 = icmp eq i32 %323, 65
br i1 %324, label %341, label %325
325: ; preds = %321
%326 = load i8, i8* %7
%327 = sext i8 %326 to i32
%328 = icmp eq i32 %327, 69
br i1 %328, label %341, label %329
329: ; preds = %325
%330 = load i8, i8* %7
%331 = sext i8 %330 to i32
%332 = icmp eq i32 %331, 73
br i1 %332, label %341, label %333
333: ; preds = %329
%334 = load i8, i8* %7
%335 = sext i8 %334 to i32
%336 = icmp eq i32 %335, 79
br i1 %336, label %341, label %337
337: ; preds = %333
%338 = load i8, i8* %7
%339 = sext i8 %338 to i32
%340 = icmp eq i32 %339, 85
br i1 %340, label %341, label %343
341: ; preds = %337, %333, %329, %325, %321
%342 = load i8*, i8** %11
store i8 65, i8* %342
br label %346
343: ; preds = %337
%344 = load i8, i8* %7
%345 = load i8*, i8** %11
store i8 %344, i8* %345
br label %346
346: ; preds = %343, %341
br label %349
347: ; preds = %317, %313, %309, %305, %301
%348 = load i8*, i8** %11
store i8 72, i8* %348
br label %349
349: ; preds = %347, %346
br label %384
350: ; preds = %195
%351 = load i8*, i8** %10
%352 = getelementptr inbounds i8, i8* %351, i64 -1
%353 = load i8, i8* %352
%354 = call signext i8 @toupper(i8 signext %353)
store i8 %354, i8* %6
%355 = load i8, i8* %6
%356 = sext i8 %355 to i32
%357 = icmp eq i32 %356, 65
br i1 %357, label %374, label %358
358: ; preds = %350
%359 = load i8, i8* %6
%360 = sext i8 %359 to i32
%361 = icmp eq i32 %360, 69
br i1 %361, label %374, label %362
362: ; preds = %358
%363 = load i8, i8* %6
%364 = sext i8 %363 to i32
%365 = icmp eq i32 %364, 73
br i1 %365, label %374, label %366
366: ; preds = %362
%367 = load i8, i8* %6
%368 = sext i8 %367 to i32
%369 = icmp eq i32 %368, 79
br i1 %369, label %374, label %370
370: ; preds = %366
%371 = load i8, i8* %6
%372 = sext i8 %371 to i32
%373 = icmp eq i32 %372, 85
br i1 %373, label %374, label %377
374: ; preds = %370, %366, %362, %358, %350
%375 = load i8, i8* %6
%376 = load i8*, i8** %11
store i8 %375, i8* %376
br label %379
377: ; preds = %370
%378 = load i8*, i8** %11
store i8 87, i8* %378
br label %379
379: ; preds = %377, %374
br label %384
380: ; preds = %195
%381 = load i8, i8* %5
%382 = call signext i8 @toupper(i8 signext %381)
%383 = load i8*, i8** %11
store i8 %382, i8* %383
br label %384
384: ; preds = %380, %379, %349, %272, %256, %231, %218, %216, %214, %212, %205
%385 = load i8*, i8** %11
%386 = load i8, i8* %385
%387 = sext i8 %386 to i32
%388 = load i8*, i8** %11
%389 = getelementptr inbounds i8, i8* %388, i64 -1
%390 = load i8, i8* %389
%391 = sext i8 %390 to i32
%392 = icmp ne i32 %387, %391
br i1 %392, label %393, label %396
393: ; preds = %384
%394 = load i8*, i8** %11
%395 = getelementptr inbounds i8, i8* %394, i32 1
store i8* %395, i8** %11
br label %396
396: ; preds = %393, %384
%397 = load i8*, i8** %10
%398 = getelementptr inbounds i8, i8* %397, i32 1
store i8* %398, i8** %10
br label %185
399: ; preds = %194, %185
%400 = load i8*, i8** %11
store i8 0, i8* %400
%401 = load i8*, i8** %11
%402 = getelementptr inbounds i8, i8* %401, i64 -1
%403 = load i8, i8* %402
store i8 %403, i8* %5
%404 = load i8, i8* %5
%405 = sext i8 %404 to i32
%406 = icmp eq i32 %405, 83
br i1 %406, label %407, label %410
407: ; preds = %399
%408 = load i8*, i8** %11
%409 = getelementptr inbounds i8, i8* %408, i32 -1
store i8* %409, i8** %11
store i8 0, i8* %409
br label %427
410: ; preds = %399
%411 = load i8, i8* %5
%412 = sext i8 %411 to i32
%413 = icmp eq i32 %412, 89
br i1 %413, label %414, label %426
414: ; preds = %410
%415 = load i8*, i8** %11
%416 = getelementptr inbounds i8, i8* %415, i64 -2
%417 = load i8, i8* %416
%418 = sext i8 %417 to i32
%419 = icmp eq i32 %418, 65
br i1 %419, label %420, label %425
420: ; preds = %414
%421 = load i8*, i8** %11
%422 = getelementptr inbounds i8, i8* %421, i32 -1
store i8* %422, i8** %11
store i8 0, i8* %422
%423 = load i8*, i8** %11
%424 = getelementptr inbounds i8, i8* %423, i32 -1
store i8* %424, i8** %11
store i8 89, i8* %424
br label %425
425: ; preds = %420, %414
br label %426
426: ; preds = %425, %410
br label %427
427: ; preds = %426, %407
%428 = load i8*, i8** %11
%429 = getelementptr inbounds i8, i8* %428, i64 -1
%430 = load i8, i8* %429
%431 = sext i8 %430 to i32
%432 = icmp eq i32 %431, 65
br i1 %432, label %433, label %436
433: ; preds = %427
%434 = load i8*, i8** %11
%435 = getelementptr inbounds i8, i8* %434, i64 -1
store i8 0, i8* %435
br label %436
436: ; preds = %433, %427
%437 = load i8*, i8** %9
store i8* %437, i8** %2
br label %438
438: ; preds = %436, %38, %30, %25
%439 = load i8*, i8** %2
ret i8* %439
}

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 = 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)
%61 = getelementptr inbounds i8, i8* %13, i64 1
store i8 %60, i8* %13
%62 = getelementptr inbounds i8, i8* %4, i64 1
%63 = load i8, i8* %62
%64 = tail call signext i8 @toupper(i8 signext %63)
%65 = and i8 %64, -33
%66 = icmp eq i8 %65, 0
br i1 %66, label %155, label %67
67: ; preds = %58, %141
%68 = phi i8 [ %152, %141 ], [ %64, %58 ]
%69 = phi i8* [ %150, %141 ], [ %62, %58 ]
%70 = phi i8* [ %149, %141 ], [ %61, %58 ]
%71 = phi i8* [ %143, %141 ], [ %4, %58 ]
%72 = sext i8 %68 to i32
switch i32 %72, label %139 [
i32 69, label %73
i32 65, label %80
i32 73, label %80
i32 79, label %80
i32 85, label %80
i32 81, label %81
i32 90, label %82
i32 77, label %83
i32 75, label %84
i32 83, label %91
i32 80, label %105
i32 72, label %113
i32 87, label %132
]
73: ; preds = %67
%74 = getelementptr inbounds i8, i8* %71, i64 2
%75 = load i8, i8* %74
%76 = tail call signext i8 @toupper(i8 signext %75)
%77 = icmp eq i8 %76, 86
br i1 %77, label %78, label %80
78: ; preds = %73
store i8 65, i8* %70
%79 = getelementptr inbounds i8, i8* %70, i64 1
store i8 70, i8* %79
br label %141
80: ; preds = %73, %67, %67, %67, %67
store i8 65, i8* %70
br label %141
81: ; preds = %67
store i8 71, i8* %70
br label %141
82: ; preds = %67
store i8 83, i8* %70
br label %141
83: ; preds = %67
store i8 78, i8* %70
br label %141
84: ; preds = %67
%85 = getelementptr inbounds i8, i8* %71, i64 2
%86 = load i8, i8* %85
%87 = tail call signext i8 @toupper(i8 signext %86)
%88 = icmp eq i8 %87, 78
br i1 %88, label %89, label %90
89: ; preds = %84
store i8 78, i8* %70
br label %141
90: ; preds = %84
store i8 67, i8* %70
br label %141
91: ; preds = %67
%92 = getelementptr inbounds i8, i8* %71, i64 2
%93 = load i8, i8* %92
%94 = tail call signext i8 @toupper(i8 signext %93)
%95 = icmp eq i8 %94, 67
br i1 %95, label %96, label %104
96: ; preds = %91
%97 = getelementptr inbounds i8, i8* %71, i64 3
%98 = load i8, i8* %97
%99 = tail call signext i8 @toupper(i8 signext %98)
%100 = icmp eq i8 %99, 72
br i1 %100, label %101, label %104
101: ; preds = %96
%102 = getelementptr inbounds i8, i8* %70, i64 1
store i8 83, i8* %70
%103 = getelementptr inbounds i8, i8* %70, i64 2
store i8 83, i8* %102
store i8 83, i8* %103
br label %141
104: ; preds = %96, %91
store i8 83, i8* %70
br label %141
105: ; preds = %67
%106 = getelementptr inbounds i8, i8* %71, i64 2
%107 = load i8, i8* %106
%108 = tail call signext i8 @toupper(i8 signext %107)
%109 = icmp eq i8 %108, 72
br i1 %109, label %110, label %112
110: ; preds = %105
store i8 70, i8* %70
%111 = getelementptr inbounds i8, i8* %70, i64 1
store i8 70, i8* %111
br label %141
112: ; preds = %105
store i8 80, i8* %70
br label %141
113: ; preds = %67
%114 = getelementptr inbounds i8, i8* %71, i64 2
%115 = load i8, i8* %114
%116 = tail call signext i8 @toupper(i8 signext %115)
%117 = load i8, i8* %71
%118 = tail call signext i8 @toupper(i8 signext %117)
%119 = add i8 %116, -65
%120 = tail call i8 @llvm.fshl.i8(i8 %119, i8 %119, i8 7)
switch i8 %120, label %121 [
i8 10, label %124
i8 7, label %124
i8 4, label %124
i8 2, label %124
i8 0, label %124
]
121: ; preds = %113
%122 = add i8 %118, -65
%123 = tail call i8 @llvm.fshl.i8(i8 %122, i8 %122, i8 7)
br label %127
124: ; preds = %113, %113, %113, %113, %113
%125 = add i8 %118, -65
%126 = tail call i8 @llvm.fshl.i8(i8 %125, i8 %125, i8 7)
switch i8 %126, label %127 [
i8 10, label %131
i8 7, label %131
i8 4, label %131
i8 2, label %131
i8 0, label %131
]
127: ; preds = %121, %124
%128 = phi i8 [ %123, %121 ], [ %126, %124 ]
switch i8 %128, label %130 [
i8 10, label %129
i8 7, label %129
i8 4, label %129
i8 2, label %129
i8 0, label %129
]
129: ; preds = %127, %127, %127, %127, %127
store i8 65, i8* %70
br label %141
130: ; preds = %127
store i8 %118, i8* %70
br label %141
131: ; preds = %124, %124, %124, %124, %124
store i8 72, i8* %70
br label %141
132: ; preds = %67
%133 = load i8, i8* %71
%134 = tail call signext i8 @toupper(i8 signext %133)
%135 = add i8 %134, -65
%136 = tail call i8 @llvm.fshl.i8(i8 %135, i8 %135, i8 7)
switch i8 %136, label %138 [
i8 10, label %137
i8 7, label %137
i8 4, label %137
i8 2, label %137
i8 0, label %137
]
137: ; preds = %132, %132, %132, %132, %132
store i8 %134, i8* %70
br label %141
138: ; preds = %132
store i8 87, i8* %70
br label %141
139: ; preds = %67
%140 = tail call signext i8 @toupper(i8 signext %68)
store i8 %140, i8* %70
br label %141
141: ; preds = %137, %138, %131, %130, %129, %110, %112, %101, %104, %89, %90, %139, %83, %82, %81, %80, %78
%142 = phi i8 [ %140, %139 ], [ %134, %137 ], [ 87, %138 ], [ 72, %131 ], [ 65, %129 ], [ %118, %130 ], [ 70, %110 ], [ 80, %112 ], [ 83, %101 ], [ 83, %104 ], [ 78, %89 ], [ 67, %90 ], [ 78, %83 ], [ 83, %82 ], [ 71, %81 ], [ 65, %80 ], [ 70, %78 ]
%143 = phi i8* [ %69, %139 ], [ %69, %137 ], [ %69, %138 ], [ %69, %131 ], [ %69, %129 ], [ %69, %130 ], [ %106, %110 ], [ %69, %112 ], [ %97, %101 ], [ %69, %104 ], [ %69, %89 ], [ %69, %90 ], [ %69, %83 ], [ %69, %82 ], [ %69, %81 ], [ %69, %80 ], [ %74, %78 ]
%144 = phi i8* [ %70, %139 ], [ %70, %137 ], [ %70, %138 ], [ %70, %131 ], [ %70, %129 ], [ %70, %130 ], [ %111, %110 ], [ %70, %112 ], [ %103, %101 ], [ %70, %104 ], [ %70, %89 ], [ %70, %90 ], [ %70, %83 ], [ %70, %82 ], [ %70, %81 ], [ %70, %80 ], [ %79, %78 ]
%145 = getelementptr inbounds i8, i8* %144, i64 -1
%146 = load i8, i8* %145
%147 = icmp ne i8 %142, %146
%148 = zext i1 %147 to i64
%149 = getelementptr i8, i8* %144, i64 %148
%150 = getelementptr inbounds i8, i8* %143, i64 1
%151 = load i8, i8* %150
%152 = tail call signext i8 @toupper(i8 signext %151)
%153 = and i8 %152, -33
%154 = icmp eq i8 %153, 0
br i1 %154, label %155, label %67
155: ; preds = %141, %58
%156 = phi i8* [ %61, %58 ], [ %149, %141 ]
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
}