#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 *calloc(int, int);
int strlen(char const *);
char tolower(char const);
int /*<<< orphan*/ toupper(char);
char *metaphone(const char *str) {
  const char *s;
  char c, next, temp = '\0';
  char *result = calloc(strlen(str) * 2 + 1, sizeof(char));
  char *r;
  if (!result) {
    return NULL;
  }
  c = tolower(*str);
  if (c) {
    next = tolower(*(str + 1));
    if ((c == 'k' && next == 'n') || (c == 'g' && next == 'n') ||
        (c == 'p' && next == 'n') || (c == 'a' && next == 'c') ||
        (c == 'w' && next == 'r') || (c == 'a' && next == 'e')) {
      str++;
    }
  }
  next = tolower(*str);
  for (s = str, r = result; next; s++) {
    c = next;
    next = tolower(*(s + 1));
    if (c == next && c != 'c') {
      continue;
    }
    switch (c) {
    case 'a':
    case 'e':
    case 'i':
    case 'o':
    case 'u':
      if (s == str || *(s - 1) == ' ') {
        *r++ = toupper(c);
      }
      break;
    case 'b':
      if (!(s > str && *(s - 1) == 'm') || next) {
        *r++ = 'B';
      }
      break;
    case 'c':
      if ((next == 'i' && *(s + 2) == 'a') || next == 'h') {
        *r++ = 'X';
        next = tolower(*(++s + 1));
      } else if (next == 'i' || next == 'e' || next == 'y') {
        *r++ = 'S';
        next = tolower(*(++s + 1));
      } else {
        *r++ = 'K';
      }
      break;
    case 'd':
      if (next == 'g' &&
          ((temp = *(s + 2)) == 'e' || temp == 'y' || temp == 'i')) {
        *r++ = 'J';
        s += 2;
        next = tolower(*(s + 1));
      } else {
        *r++ = 'T';
      }
      break;
    case 'f':
      *r++ = 'F';
      break;
    case 'g':
      if (next == 'i' || next == 'e' || next == 'y') {
        *r++ = 'J';
      } else if (next != 'h' && next != 'n') {
        *r++ = 'K';
      } else if (next == 'h' && (temp = tolower(*(s + 2))) &&
                 !(((temp) == 'a' || (temp) == 'e' || (temp) == 'i' ||
                    (temp) == 'o' || (temp) == 'u'))) {
        s++;
        next = tolower(*(s + 1));
      } else if (next != 'n') {
        *r++ = 'K';
      }
      break;
    case 'h':
      if (s == str ||
          ((next) == 'a' || (next) == 'e' || (next) == 'i' || (next) == 'o' ||
           (next) == 'u') ||
          (temp = tolower(*(s - 1)) &&
                  ((temp) == 'a' || (temp) == 'e' || (temp) == 'i' ||
                   (temp) == 'o' || (temp) == 'u'))) {
        *r++ = 'H';
      }
      break;
    case 'j':
      *r++ = 'J';
      break;
    case 'k':
      if (s == str || *(s - 1) != 'c') {
        *r++ = 'K';
      }
      break;
    case 'l':
      *r++ = 'L';
      break;
    case 'm':
      *r++ = 'M';
      break;
    case 'n':
      *r++ = 'N';
      break;
    case 'p':
      if (next == 'h') {
        *r++ = 'F';
        next = tolower(*(++s + 1));
      } else {
        *r++ = 'P';
      }
      break;
    case 'q':
      *r++ = 'K';
      break;
    case 'r':
      *r++ = 'R';
      break;
    case 's':
      if (next == 'h') {
        *r++ = 'X';
        next = tolower(*(++s + 1));
      } else if (next == 'i' && (temp = tolower(*(s + 2))) &&
                 (temp == 'o' || temp == 'a')) {
        *r++ = 'X';
        s += 2;
        next = tolower(*(s + 1));
      } else {
        *r++ = 'S';
      }
      break;
    case 't':
      if (next == 'i' && ((temp = tolower(*(s + 2))) == 'a' || temp == 'o')) {
        *r++ = 'X';
      } else if (next == 'h') {
        *r++ = '0';
        next = tolower(*(++s + 1));
      } else if (next != 'c' || (temp = tolower(*(s + 2))) != 'h') {
        *r++ = 'T';
      }
      break;
    case 'v':
      *r++ = 'F';
      break;
    case 'w':
      if (s == str && next == 'h') {
        next = tolower(*(++s + 1));
      }
      if (((next) == 'a' || (next) == 'e' || (next) == 'i' || (next) == 'o' ||
           (next) == 'u')) {
        *r++ = 'W';
      }
      break;
    case 'x':
      if (s == str) {
        if (next == 'h' || (next == 'i' && (temp = tolower(*(s + 2))) &&
                            (temp == 'o' || temp == 'a'))) {
          *r++ = 'X';
        } else {
          *r++ = 'S';
        }
      } else {
        *r++ = 'K';
        *r++ = 'S';
      }
      break;
    case 'y':
      if (((next) == 'a' || (next) == 'e' || (next) == 'i' || (next) == 'o' ||
           (next) == 'u')) {
        *r++ = 'Y';
      }
      break;
    case 'z':
      *r++ = 'S';
      break;
    case ' ':
      if (*r != ' ') {
        *r++ = ' ';
      }
      break;
    }
  }
  return result;
}


x86 assembly (clang, -O0):
<metaphone>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    %rdi,-0x10(%rbp)
movb   $0x0,-0x1b(%rbp)
mov    -0x10(%rbp),%rdi
call   1040 <strlen@plt>
mov    %eax,%edi
shl    $0x1,%edi
add    $0x1,%edi
mov    $0x1,%esi
call   1050 <calloc@plt>
mov    %rax,-0x28(%rbp)
cmpq   $0x0,-0x28(%rbp)
jne    1187 <metaphone+0x47>
movq   $0x0,-0x8(%rbp)
jmp    1bc9 <metaphone+0xa89>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x19(%rbp)
cmpb   $0x0,-0x19(%rbp)
je     125d <metaphone+0x11d>
mov    -0x10(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1a(%rbp)
movsbl -0x19(%rbp),%eax
cmp    $0x6b,%eax
jne    11ca <metaphone+0x8a>
movsbl -0x1a(%rbp),%eax
cmp    $0x6e,%eax
je     124c <metaphone+0x10c>
movsbl -0x19(%rbp),%eax
cmp    $0x67,%eax
jne    11e4 <metaphone+0xa4>
movsbl -0x1a(%rbp),%eax
cmp    $0x6e,%eax
je     124c <metaphone+0x10c>
movsbl -0x19(%rbp),%eax
cmp    $0x70,%eax
jne    11fe <metaphone+0xbe>
movsbl -0x1a(%rbp),%eax
cmp    $0x6e,%eax
je     124c <metaphone+0x10c>
movsbl -0x19(%rbp),%eax
cmp    $0x61,%eax
jne    1218 <metaphone+0xd8>
movsbl -0x1a(%rbp),%eax
cmp    $0x63,%eax
je     124c <metaphone+0x10c>
movsbl -0x19(%rbp),%eax
cmp    $0x77,%eax
jne    1232 <metaphone+0xf2>
movsbl -0x1a(%rbp),%eax
cmp    $0x72,%eax
je     124c <metaphone+0x10c>
movsbl -0x19(%rbp),%eax
cmp    $0x61,%eax
jne    1258 <metaphone+0x118>
movsbl -0x1a(%rbp),%eax
cmp    $0x65,%eax
jne    1258 <metaphone+0x118>
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    125d <metaphone+0x11d>
mov    -0x10(%rbp),%rax
movsbl (%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1a(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x28(%rbp),%rax
mov    %rax,-0x30(%rbp)
cmpb   $0x0,-0x1a(%rbp)
je     1bc1 <metaphone+0xa81>
mov    -0x1a(%rbp),%al
mov    %al,-0x19(%rbp)
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1a(%rbp)
movsbl -0x19(%rbp),%eax
movsbl -0x1a(%rbp),%ecx
cmp    %ecx,%eax
jne    12be <metaphone+0x17e>
movsbl -0x19(%rbp),%eax
cmp    $0x63,%eax
je     12be <metaphone+0x17e>
jmp    1bb0 <metaphone+0xa70>
movsbl -0x19(%rbp),%eax
add    $0xffffffe0,%eax
mov    %eax,%ecx
mov    %rcx,-0x38(%rbp)
sub    $0x5a,%eax
ja     1bab <metaphone+0xa6b>
mov    -0x38(%rbp),%rax
lea    0xd21(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x18(%rbp),%rax
cmp    -0x10(%rbp),%rax
je     1307 <metaphone+0x1c7>
mov    -0x18(%rbp),%rax
movsbl -0x1(%rax),%eax
cmp    $0x20,%eax
jne    1323 <metaphone+0x1e3>
movsbl -0x19(%rbp),%edi
call   1030 <toupper@plt>
mov    %al,%cl
mov    -0x30(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x30(%rbp)
mov    %cl,(%rax)
jmp    1bab <metaphone+0xa6b>
mov    -0x18(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    1354 <metaphone+0x214>
mov    -0x18(%rbp),%rax
movsbl -0x1(%rax),%eax
cmp    $0x6d,%eax
jne    1354 <metaphone+0x214>
movsbl -0x1a(%rbp),%eax
cmp    $0x0,%eax
je     1366 <metaphone+0x226>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x42,(%rax)
jmp    1bab <metaphone+0xa6b>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
jne    1389 <metaphone+0x249>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%eax
cmp    $0x61,%eax
je     1396 <metaphone+0x256>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
jne    13c8 <metaphone+0x288>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x58,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1a(%rbp)
jmp    1438 <metaphone+0x2f8>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
je     13ef <metaphone+0x2af>
movsbl -0x1a(%rbp),%eax
cmp    $0x65,%eax
je     13ef <metaphone+0x2af>
movsbl -0x1a(%rbp),%eax
cmp    $0x79,%eax
jne    1421 <metaphone+0x2e1>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x53,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1a(%rbp)
jmp    1433 <metaphone+0x2f3>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4b,(%rax)
jmp    1438 <metaphone+0x2f8>
jmp    1bab <metaphone+0xa6b>
movsbl -0x1a(%rbp),%eax
cmp    $0x67,%eax
jne    14ad <metaphone+0x36d>
mov    -0x18(%rbp),%rax
mov    0x2(%rax),%al
mov    %al,-0x1b(%rbp)
movsbl %al,%eax
cmp    $0x65,%eax
je     147a <metaphone+0x33a>
movsbl -0x1b(%rbp),%eax
cmp    $0x79,%eax
je     147a <metaphone+0x33a>
movsbl -0x1b(%rbp),%eax
cmp    $0x69,%eax
jne    14ad <metaphone+0x36d>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4a,(%rax)
mov    -0x18(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1a(%rbp)
jmp    14bf <metaphone+0x37f>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x54,(%rax)
jmp    1bab <metaphone+0xa6b>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x46,(%rax)
jmp    1bab <metaphone+0xa6b>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
je     1502 <metaphone+0x3c2>
movsbl -0x1a(%rbp),%eax
cmp    $0x65,%eax
je     1502 <metaphone+0x3c2>
movsbl -0x1a(%rbp),%eax
cmp    $0x79,%eax
jne    1519 <metaphone+0x3d9>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4a,(%rax)
jmp    1603 <metaphone+0x4c3>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
je     154a <metaphone+0x40a>
movsbl -0x1a(%rbp),%eax
cmp    $0x6e,%eax
je     154a <metaphone+0x40a>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4b,(%rax)
jmp    15fe <metaphone+0x4be>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
jne    15d5 <metaphone+0x495>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1b(%rbp)
movsbl %al,%eax
cmp    $0x0,%eax
je     15d5 <metaphone+0x495>
movsbl -0x1b(%rbp),%eax
cmp    $0x61,%eax
je     15d5 <metaphone+0x495>
movsbl -0x1b(%rbp),%eax
cmp    $0x65,%eax
je     15d5 <metaphone+0x495>
movsbl -0x1b(%rbp),%eax
cmp    $0x69,%eax
je     15d5 <metaphone+0x495>
movsbl -0x1b(%rbp),%eax
cmp    $0x6f,%eax
je     15d5 <metaphone+0x495>
movsbl -0x1b(%rbp),%eax
cmp    $0x75,%eax
je     15d5 <metaphone+0x495>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1a(%rbp)
jmp    15f9 <metaphone+0x4b9>
movsbl -0x1a(%rbp),%eax
cmp    $0x6e,%eax
je     15f4 <metaphone+0x4b4>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4b,(%rax)
jmp    15f9 <metaphone+0x4b9>
jmp    15fe <metaphone+0x4be>
jmp    1603 <metaphone+0x4c3>
jmp    1bab <metaphone+0xa6b>
mov    -0x18(%rbp),%rax
cmp    -0x10(%rbp),%rax
je     16e7 <metaphone+0x5a7>
movsbl -0x1a(%rbp),%eax
cmp    $0x61,%eax
je     16e7 <metaphone+0x5a7>
movsbl -0x1a(%rbp),%eax
cmp    $0x65,%eax
je     16e7 <metaphone+0x5a7>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
je     16e7 <metaphone+0x5a7>
movsbl -0x1a(%rbp),%eax
cmp    $0x6f,%eax
je     16e7 <metaphone+0x5a7>
movsbl -0x1a(%rbp),%eax
cmp    $0x75,%eax
je     16e7 <metaphone+0x5a7>
mov    -0x18(%rbp),%rax
movsbl -0x1(%rax),%edi
call   1060 <tolower@plt>
movsbl %al,%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x39(%rbp)
je     16d0 <metaphone+0x590>
movsbl -0x1b(%rbp),%ecx
mov    $0x1,%al
cmp    $0x61,%ecx
mov    %al,-0x3a(%rbp)
je     16ca <metaphone+0x58a>
movsbl -0x1b(%rbp),%ecx
mov    $0x1,%al
cmp    $0x65,%ecx
mov    %al,-0x3a(%rbp)
je     16ca <metaphone+0x58a>
movsbl -0x1b(%rbp),%ecx
mov    $0x1,%al
cmp    $0x69,%ecx
mov    %al,-0x3a(%rbp)
je     16ca <metaphone+0x58a>
movsbl -0x1b(%rbp),%ecx
mov    $0x1,%al
cmp    $0x6f,%ecx
mov    %al,-0x3a(%rbp)
je     16ca <metaphone+0x58a>
movsbl -0x1b(%rbp),%eax
cmp    $0x75,%eax
sete   %al
mov    %al,-0x3a(%rbp)
mov    -0x3a(%rbp),%al
mov    %al,-0x39(%rbp)
mov    -0x39(%rbp),%al
and    $0x1,%al
movzbl %al,%eax
mov    %al,-0x1b(%rbp)
movsbl %al,%eax
cmp    $0x0,%eax
je     16f9 <metaphone+0x5b9>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x48,(%rax)
jmp    1bab <metaphone+0xa6b>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4a,(%rax)
jmp    1bab <metaphone+0xa6b>
mov    -0x18(%rbp),%rax
cmp    -0x10(%rbp),%rax
je     1734 <metaphone+0x5f4>
mov    -0x18(%rbp),%rax
movsbl -0x1(%rax),%eax
cmp    $0x63,%eax
je     1746 <metaphone+0x606>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4b,(%rax)
jmp    1bab <metaphone+0xa6b>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4c,(%rax)
jmp    1bab <metaphone+0xa6b>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4d,(%rax)
jmp    1bab <metaphone+0xa6b>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4e,(%rax)
jmp    1bab <metaphone+0xa6b>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
jne    17cf <metaphone+0x68f>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x46,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1a(%rbp)
jmp    17e1 <metaphone+0x6a1>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x50,(%rax)
jmp    1bab <metaphone+0xa6b>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4b,(%rax)
jmp    1bab <metaphone+0xa6b>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x52,(%rax)
jmp    1bab <metaphone+0xa6b>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
jne    1853 <metaphone+0x713>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x58,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1a(%rbp)
jmp    18e0 <metaphone+0x7a0>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
jne    18c9 <metaphone+0x789>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1b(%rbp)
movsbl %al,%eax
cmp    $0x0,%eax
je     18c9 <metaphone+0x789>
movsbl -0x1b(%rbp),%eax
cmp    $0x6f,%eax
je     1896 <metaphone+0x756>
movsbl -0x1b(%rbp),%eax
cmp    $0x61,%eax
jne    18c9 <metaphone+0x789>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x58,(%rax)
mov    -0x18(%rbp),%rax
add    $0x2,%rax
mov    %rax,-0x18(%rbp)
mov    -0x18(%rbp),%rax
movsbl 0x1(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1a(%rbp)
jmp    18db <metaphone+0x79b>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x53,(%rax)
jmp    18e0 <metaphone+0x7a0>
jmp    1bab <metaphone+0xa6b>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
jne    1932 <metaphone+0x7f2>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1b(%rbp)
movsbl %al,%eax
cmp    $0x61,%eax
je     191b <metaphone+0x7db>
movsbl -0x1b(%rbp),%eax
cmp    $0x6f,%eax
jne    1932 <metaphone+0x7f2>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x58,(%rax)
jmp    19b6 <metaphone+0x876>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
jne    1971 <metaphone+0x831>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x30,(%rax)
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1a(%rbp)
jmp    19b1 <metaphone+0x871>
movsbl -0x1a(%rbp),%eax
cmp    $0x63,%eax
jne    199a <metaphone+0x85a>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1b(%rbp)
movsbl %al,%eax
cmp    $0x68,%eax
je     19ac <metaphone+0x86c>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x54,(%rax)
jmp    19b1 <metaphone+0x871>
jmp    19b6 <metaphone+0x876>
jmp    1bab <metaphone+0xa6b>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x46,(%rax)
jmp    1bab <metaphone+0xa6b>
mov    -0x18(%rbp),%rax
cmp    -0x10(%rbp),%rax
jne    1a08 <metaphone+0x8c8>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
jne    1a08 <metaphone+0x8c8>
mov    -0x18(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x18(%rbp)
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1a(%rbp)
movsbl -0x1a(%rbp),%eax
cmp    $0x61,%eax
je     1a49 <metaphone+0x909>
movsbl -0x1a(%rbp),%eax
cmp    $0x65,%eax
je     1a49 <metaphone+0x909>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
je     1a49 <metaphone+0x909>
movsbl -0x1a(%rbp),%eax
cmp    $0x6f,%eax
je     1a49 <metaphone+0x909>
movsbl -0x1a(%rbp),%eax
cmp    $0x75,%eax
jne    1a5b <metaphone+0x91b>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x57,(%rax)
jmp    1bab <metaphone+0xa6b>
mov    -0x18(%rbp),%rax
cmp    -0x10(%rbp),%rax
jne    1aec <metaphone+0x9ac>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
je     1abe <metaphone+0x97e>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
jne    1ad5 <metaphone+0x995>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1b(%rbp)
movsbl %al,%eax
cmp    $0x0,%eax
je     1ad5 <metaphone+0x995>
movsbl -0x1b(%rbp),%eax
cmp    $0x6f,%eax
je     1abe <metaphone+0x97e>
movsbl -0x1b(%rbp),%eax
cmp    $0x61,%eax
jne    1ad5 <metaphone+0x995>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x58,(%rax)
jmp    1ae7 <metaphone+0x9a7>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x53,(%rax)
jmp    1b10 <metaphone+0x9d0>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4b,(%rax)
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x53,(%rax)
jmp    1bab <metaphone+0xa6b>
movsbl -0x1a(%rbp),%eax
cmp    $0x61,%eax
je     1b56 <metaphone+0xa16>
movsbl -0x1a(%rbp),%eax
cmp    $0x65,%eax
je     1b56 <metaphone+0xa16>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
je     1b56 <metaphone+0xa16>
movsbl -0x1a(%rbp),%eax
cmp    $0x6f,%eax
je     1b56 <metaphone+0xa16>
movsbl -0x1a(%rbp),%eax
cmp    $0x75,%eax
jne    1b68 <metaphone+0xa28>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x59,(%rax)
jmp    1bab <metaphone+0xa6b>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x53,(%rax)
jmp    1bab <metaphone+0xa6b>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
je     1ba6 <metaphone+0xa66>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x20,(%rax)
jmp    1bab <metaphone+0xa6b>
jmp    1bb0 <metaphone+0xa70>
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    127c <metaphone+0x13c>
mov    -0x28(%rbp),%rax
mov    %rax,-0x8(%rbp)
mov    -0x8(%rbp),%rax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<metaphone>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x18,%rsp
mov    %rdi,%rbp
call   1040 <strlen@plt>
lea    (%rax,%rax,1),%edi
add    $0x1,%edi
mov    $0x1,%esi
call   1050 <calloc@plt>
mov    %rax,%r15
test   %rax,%rax
je     162a <metaphone+0x4ea>
movsbl 0x0(%rbp),%edi
call   1060 <tolower@plt>
test   %al,%al
je     11c4 <metaphone+0x84>
mov    %eax,%ebx
movsbl 0x1(%rbp),%edi
call   1060 <tolower@plt>
cmp    $0x6b,%bl
jne    1193 <metaphone+0x53>
cmp    $0x6e,%al
je     11c0 <metaphone+0x80>
cmp    $0x67,%bl
jne    119c <metaphone+0x5c>
cmp    $0x6e,%al
je     11c0 <metaphone+0x80>
cmp    $0x70,%bl
jne    11a5 <metaphone+0x65>
cmp    $0x6e,%al
je     11c0 <metaphone+0x80>
cmp    $0x61,%bl
jne    11ae <metaphone+0x6e>
cmp    $0x63,%al
je     11c0 <metaphone+0x80>
cmp    $0x77,%bl
jne    11b7 <metaphone+0x77>
cmp    $0x72,%al
je     11c0 <metaphone+0x80>
cmp    $0x61,%bl
jne    11c4 <metaphone+0x84>
cmp    $0x65,%al
jne    11c4 <metaphone+0x84>
add    $0x1,%rbp
movsbl 0x0(%rbp),%edi
call   1060 <tolower@plt>
test   %al,%al
je     162a <metaphone+0x4ea>
mov    %eax,%ebx
xor    %eax,%eax
mov    %rax,0x8(%rsp)
mov    %r15,%r14
mov    %rbp,%r12
jmp    1204 <metaphone+0xc4>
call   1030 <toupper@plt>
mov    %al,(%r14)
xchg   %ax,%ax
add    $0x1,%r14
add    $0x1,%r12
mov    %r13d,%ebx
test   %r13b,%r13b
je     162a <metaphone+0x4ea>
movsbl 0x1(%r12),%edi
call   1060 <tolower@plt>
mov    %eax,%r13d
cmp    $0x63,%bl
je     1230 <metaphone+0xf0>
cmp    %r13b,%bl
jne    1230 <metaphone+0xf0>
mov    %ebx,%r13d
jmp    11f4 <metaphone+0xb4>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movsbl %bl,%edi
lea    -0x20(%rdi),%eax
cmp    $0x5a,%eax
ja     11f4 <metaphone+0xb4>
lea    0x1(%r12),%rbx
lea    0xdb9(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cmp    %rbp,%r12
je     11e6 <metaphone+0xa6>
cmpb   $0x20,-0x1(%r12)
je     11e6 <metaphone+0xa6>
jmp    11f4 <metaphone+0xb4>
movb   $0x46,(%r14)
jmp    11f0 <metaphone+0xb0>
cmpb   $0x20,(%r14)
je     11f4 <metaphone+0xb4>
movb   $0x20,(%r14)
jmp    11f0 <metaphone+0xb0>
cmp    %rbp,%r12
jbe    128a <metaphone+0x14a>
cmpb   $0x6d,-0x1(%r12)
jne    128a <metaphone+0x14a>
test   %r13b,%r13b
je     162a <metaphone+0x4ea>
movb   $0x42,(%r14)
jmp    11f0 <metaphone+0xb0>
mov    %r13d,%eax
add    $0x9b,%al
cmp    $0x14,%al
ja     1617 <metaphone+0x4d7>
movzbl %al,%eax
lea    0xec2(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cmpb   $0x61,0x2(%r12)
je     13d8 <metaphone+0x298>
movb   $0x53,(%r14)
jmp    1579 <metaphone+0x439>
cmp    $0x67,%r13b
jne    156c <metaphone+0x42c>
movzbl 0x2(%r12),%ecx
lea    -0x65(%rcx),%eax
cmp    $0x14,%al
mov    %rcx,0x8(%rsp)
ja     156c <metaphone+0x42c>
movzbl %al,%eax
mov    $0x100011,%ecx
bt     %rax,%rcx
jae    156c <metaphone+0x42c>
movb   $0x4a,(%r14)
jmp    150c <metaphone+0x3cc>
lea    -0x65(%r13),%eax
cmp    $0x14,%al
ja     1530 <metaphone+0x3f0>
movzbl %al,%eax
mov    $0x100011,%ecx
bt     %rax,%rcx
jae    1530 <metaphone+0x3f0>
movb   $0x4a,(%r14)
jmp    11f0 <metaphone+0xb0>
cmp    %rbp,%r12
je     1350 <metaphone+0x210>
mov    %r13d,%eax
add    $0x9f,%al
ror    %al
cmp    $0xa,%al
ja     15a3 <metaphone+0x463>
movzbl %al,%eax
mov    $0x495,%ecx
bt     %rax,%rcx
jae    15a3 <metaphone+0x463>
movb   $0x48,(%r14)
jmp    11f0 <metaphone+0xb0>
cmp    %rbp,%r12
je     1617 <metaphone+0x4d7>
cmpb   $0x63,-0x1(%r12)
je     11f4 <metaphone+0xb4>
jmp    1617 <metaphone+0x4d7>
movb   $0x4c,(%r14)
jmp    11f0 <metaphone+0xb0>
movb   $0x4d,(%r14)
jmp    11f0 <metaphone+0xb0>
movb   $0x4e,(%r14)
jmp    11f0 <metaphone+0xb0>
mov    %rbp,0x10(%rsp)
lea    0x1(%r14),%rbp
cmp    $0x68,%r13b
jne    14ac <metaphone+0x36c>
movb   $0x46,(%r14)
movsbl 0x2(%r12),%edi
call   1060 <tolower@plt>
mov    %eax,%r13d
mov    %rbx,%r12
jmp    14b0 <metaphone+0x370>
movb   $0x52,(%r14)
jmp    11f0 <metaphone+0xb0>
cmp    $0x69,%r13b
je     14f0 <metaphone+0x3b0>
cmp    $0x68,%r13b
jne    1527 <metaphone+0x3e7>
movb   $0x58,(%r14)
jmp    1579 <metaphone+0x439>
cmp    $0x63,%r13b
je     1549 <metaphone+0x409>
cmp    $0x68,%r13b
je     1575 <metaphone+0x435>
cmp    $0x69,%r13b
jne    156c <metaphone+0x42c>
movsbl 0x2(%r12),%edi
call   1060 <tolower@plt>
cmp    $0x6f,%al
mov    %rax,0x8(%rsp)
je     141b <metaphone+0x2db>
cmp    $0x61,%al
jne    156c <metaphone+0x42c>
movb   $0x58,(%r14)
add    $0x1,%r14
mov    $0x69,%r13b
jmp    11f4 <metaphone+0xb4>
cmp    %rbp,%r12
jne    1445 <metaphone+0x305>
cmp    $0x68,%r13b
jne    1445 <metaphone+0x305>
movsbl 0x2(%rbp),%edi
call   1060 <tolower@plt>
mov    %eax,%r13d
mov    %rbx,%r12
lea    -0x61(%r13),%eax
ror    %al
cmp    $0xa,%al
ja     11f4 <metaphone+0xb4>
movzbl %al,%eax
mov    $0x495,%ecx
bt     %rax,%rcx
jae    11f4 <metaphone+0xb4>
movb   $0x57,(%r14)
jmp    11f0 <metaphone+0xb0>
cmp    %rbp,%r12
je     14bd <metaphone+0x37d>
movw   $0x534b,(%r14)
add    $0x2,%r14
jmp    11f4 <metaphone+0xb4>
mov    %r13d,%eax
add    $0x9f,%al
ror    %al
cmp    $0xa,%al
ja     11f4 <metaphone+0xb4>
movzbl %al,%eax
mov    $0x495,%ecx
bt     %rax,%rcx
jae    11f4 <metaphone+0xb4>
movb   $0x59,(%r14)
jmp    11f0 <metaphone+0xb0>
movb   $0x50,(%r14)
mov    %rbp,%r14
mov    0x10(%rsp),%rbp
jmp    11f4 <metaphone+0xb4>
cmp    $0x68,%r13b
je     14e7 <metaphone+0x3a7>
cmp    $0x69,%r13b
jne    1593 <metaphone+0x453>
movsbl 0x2(%rbp),%edi
call   1060 <tolower@plt>
cmp    $0x6f,%al
mov    %rax,0x8(%rsp)
je     14e7 <metaphone+0x3a7>
cmp    $0x61,%al
jne    1593 <metaphone+0x453>
movb   $0x58,(%r14)
jmp    1597 <metaphone+0x457>
movsbl 0x2(%r12),%edi
call   1060 <tolower@plt>
cmp    $0x6f,%al
mov    %rax,0x8(%rsp)
je     1508 <metaphone+0x3c8>
cmp    $0x61,%al
jne    1527 <metaphone+0x3e7>
movb   $0x58,(%r14)
add    $0x1,%r14
movsbl 0x3(%r12),%edi
add    $0x2,%r12
call   1060 <tolower@plt>
mov    %eax,%r13d
jmp    11f4 <metaphone+0xb4>
movb   $0x53,(%r14)
jmp    11f0 <metaphone+0xb0>
cmp    $0x68,%r13b
je     15e3 <metaphone+0x4a3>
cmp    $0x6e,%r13b
je     1609 <metaphone+0x4c9>
jmp    1617 <metaphone+0x4d7>
movsbl 0x2(%r12),%edi
call   1060 <tolower@plt>
mov    %rax,0x8(%rsp)
cmp    $0x68,%al
jne    156c <metaphone+0x42c>
mov    $0x68,%al
mov    %rax,0x8(%rsp)
mov    $0x63,%r13b
jmp    11f4 <metaphone+0xb4>
movb   $0x54,(%r14)
jmp    11f0 <metaphone+0xb0>
movb   $0x30,(%r14)
add    $0x1,%r14
movsbl 0x2(%r12),%edi
call   1060 <tolower@plt>
mov    %eax,%r13d
mov    %rbx,%r12
jmp    11f4 <metaphone+0xb4>
movb   $0x53,(%r14)
add    $0x1,%r14
mov    %rbp,%r12
jmp    11f4 <metaphone+0xb4>
movsbl -0x1(%r12),%edi
call   1060 <tolower@plt>
test   %al,%al
je     15d7 <metaphone+0x497>
mov    0x8(%rsp),%rax
add    $0x9f,%al
ror    %al
cmp    $0xa,%al
ja     15d7 <metaphone+0x497>
movzbl %al,%eax
mov    $0x1,%cl
mov    %rcx,0x8(%rsp)
mov    $0x495,%ecx
bt     %eax,%ecx
jb     1350 <metaphone+0x210>
xor    %eax,%eax
mov    %rax,0x8(%rsp)
jmp    11f4 <metaphone+0xb4>
movsbl 0x2(%r12),%edi
call   1060 <tolower@plt>
lea    -0x61(%rax),%ecx
cmp    $0x14,%cl
mov    %rax,0x8(%rsp)
ja     1620 <metaphone+0x4e0>
movzbl %cl,%edx
mov    $0x104111,%ecx
bt     %rdx,%rcx
jae    1620 <metaphone+0x4e0>
cmp    $0x6e,%r13b
jne    1617 <metaphone+0x4d7>
mov    $0x6e,%r13b
jmp    11f4 <metaphone+0xb4>
movb   $0x4b,(%r14)
jmp    11f0 <metaphone+0xb0>
test   %al,%al
jne    157d <metaphone+0x43d>
jmp    1609 <metaphone+0x4c9>
mov    %r15,%rax
add    $0x18,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i8* @metaphone(i8* %0) {
%2 = alloca i8*
%3 = alloca i8*
%4 = alloca i8*
%5 = alloca i8
%6 = alloca i8
%7 = alloca i8
%8 = alloca i8*
%9 = alloca i8*
store i8* %0, i8** %3
store i8 0, i8* %7
%10 = load i8*, i8** %3
%11 = call i32 @strlen(i8* %10)
%12 = mul nsw i32 %11, 2
%13 = add nsw i32 %12, 1
%14 = call i8* @calloc(i32 %13, i32 1)
store i8* %14, i8** %8
%15 = load i8*, i8** %8
%16 = icmp ne i8* %15, null
br i1 %16, label %18, label %17
17: ; preds = %1
store i8* null, i8** %2
br label %625
18: ; preds = %1
%19 = load i8*, i8** %3
%20 = load i8, i8* %19
%21 = call signext i8 @tolower(i8 signext %20)
store i8 %21, i8* %5
%22 = load i8, i8* %5
%23 = icmp ne i8 %22, 0
br i1 %23, label %24, label %80
24: ; preds = %18
%25 = load i8*, i8** %3
%26 = getelementptr inbounds i8, i8* %25, i64 1
%27 = load i8, i8* %26
%28 = call signext i8 @tolower(i8 signext %27)
store i8 %28, i8* %6
%29 = load i8, i8* %5
%30 = sext i8 %29 to i32
%31 = icmp eq i32 %30, 107
br i1 %31, label %32, label %36
32: ; preds = %24
%33 = load i8, i8* %6
%34 = sext i8 %33 to i32
%35 = icmp eq i32 %34, 110
br i1 %35, label %76, label %36
36: ; preds = %32, %24
%37 = load i8, i8* %5
%38 = sext i8 %37 to i32
%39 = icmp eq i32 %38, 103
br i1 %39, label %40, label %44
40: ; preds = %36
%41 = load i8, i8* %6
%42 = sext i8 %41 to i32
%43 = icmp eq i32 %42, 110
br i1 %43, label %76, label %44
44: ; preds = %40, %36
%45 = load i8, i8* %5
%46 = sext i8 %45 to i32
%47 = icmp eq i32 %46, 112
br i1 %47, label %48, label %52
48: ; preds = %44
%49 = load i8, i8* %6
%50 = sext i8 %49 to i32
%51 = icmp eq i32 %50, 110
br i1 %51, label %76, label %52
52: ; preds = %48, %44
%53 = load i8, i8* %5
%54 = sext i8 %53 to i32
%55 = icmp eq i32 %54, 97
br i1 %55, label %56, label %60
56: ; preds = %52
%57 = load i8, i8* %6
%58 = sext i8 %57 to i32
%59 = icmp eq i32 %58, 99
br i1 %59, label %76, label %60
60: ; preds = %56, %52
%61 = load i8, i8* %5
%62 = sext i8 %61 to i32
%63 = icmp eq i32 %62, 119
br i1 %63, label %64, label %68
64: ; preds = %60
%65 = load i8, i8* %6
%66 = sext i8 %65 to i32
%67 = icmp eq i32 %66, 114
br i1 %67, label %76, label %68
68: ; preds = %64, %60
%69 = load i8, i8* %5
%70 = sext i8 %69 to i32
%71 = icmp eq i32 %70, 97
br i1 %71, label %72, label %79
72: ; preds = %68
%73 = load i8, i8* %6
%74 = sext i8 %73 to i32
%75 = icmp eq i32 %74, 101
br i1 %75, label %76, label %79
76: ; preds = %72, %64, %56, %48, %40, %32
%77 = load i8*, i8** %3
%78 = getelementptr inbounds i8, i8* %77, i32 1
store i8* %78, i8** %3
br label %79
79: ; preds = %76, %72, %68
br label %80
80: ; preds = %79, %18
%81 = load i8*, i8** %3
%82 = load i8, i8* %81
%83 = call signext i8 @tolower(i8 signext %82)
store i8 %83, i8* %6
%84 = load i8*, i8** %3
store i8* %84, i8** %4
%85 = load i8*, i8** %8
store i8* %85, i8** %9
br label %86
86: ; preds = %620, %80
%87 = load i8, i8* %6
%88 = icmp ne i8 %87, 0
br i1 %88, label %89, label %623
89: ; preds = %86
%90 = load i8, i8* %6
store i8 %90, i8* %5
%91 = load i8*, i8** %4
%92 = getelementptr inbounds i8, i8* %91, i64 1
%93 = load i8, i8* %92
%94 = call signext i8 @tolower(i8 signext %93)
store i8 %94, i8* %6
%95 = load i8, i8* %5
%96 = sext i8 %95 to i32
%97 = load i8, i8* %6
%98 = sext i8 %97 to i32
%99 = icmp eq i32 %96, %98
br i1 %99, label %100, label %105
100: ; preds = %89
%101 = load i8, i8* %5
%102 = sext i8 %101 to i32
%103 = icmp ne i32 %102, 99
br i1 %103, label %104, label %105
104: ; preds = %100
br label %620
105: ; preds = %100, %89
%106 = load i8, i8* %5
%107 = sext i8 %106 to i32
switch i32 %107, label %619 [
i32 97, label %108
i32 101, label %108
i32 105, label %108
i32 111, label %108
i32 117, label %108
i32 98, label %125
i32 99, label %143
i32 100, label %190
i32 102, label %221
i32 103, label %224
i32 104, label %299
i32 106, label %362
i32 107, label %365
i32 108, label %379
i32 109, label %382
i32 110, label %385
i32 112, label %388
i32 113, label %404
i32 114, label %407
i32 115, label %410
i32 116, label %455
i32 118, label %502
i32 119, label %505
i32 120, label %543
i32 121, label %583
i32 122, label %607
i32 32, label %610
]
108: ; preds = %105, %105, %105, %105, %105
%109 = load i8*, i8** %4
%110 = load i8*, i8** %3
%111 = icmp eq i8* %109, %110
br i1 %111, label %118, label %112
112: ; preds = %108
%113 = load i8*, i8** %4
%114 = getelementptr inbounds i8, i8* %113, i64 -1
%115 = load i8, i8* %114
%116 = sext i8 %115 to i32
%117 = icmp eq i32 %116, 32
br i1 %117, label %118, label %124
118: ; preds = %112, %108
%119 = load i8, i8* %5
%120 = call i32 @toupper(i8 signext %119)
%121 = trunc i32 %120 to i8
%122 = load i8*, i8** %9
%123 = getelementptr inbounds i8, i8* %122, i32 1
store i8* %123, i8** %9
store i8 %121, i8* %122
br label %124
124: ; preds = %118, %112
br label %619
125: ; preds = %105
%126 = load i8*, i8** %4
%127 = load i8*, i8** %3
%128 = icmp ugt i8* %126, %127
br i1 %128, label %129, label %139
129: ; preds = %125
%130 = load i8*, i8** %4
%131 = getelementptr inbounds i8, i8* %130, i64 -1
%132 = load i8, i8* %131
%133 = sext i8 %132 to i32
%134 = icmp eq i32 %133, 109
br i1 %134, label %135, label %139
135: ; preds = %129
%136 = load i8, i8* %6
%137 = sext i8 %136 to i32
%138 = icmp ne i32 %137, 0
br i1 %138, label %139, label %142
139: ; preds = %135, %129, %125
%140 = load i8*, i8** %9
%141 = getelementptr inbounds i8, i8* %140, i32 1
store i8* %141, i8** %9
store i8 66, i8* %140
br label %142
142: ; preds = %139, %135
br label %619
143: ; preds = %105
%144 = load i8, i8* %6
%145 = sext i8 %144 to i32
%146 = icmp eq i32 %145, 105
br i1 %146, label %147, label %153
147: ; preds = %143
%148 = load i8*, i8** %4
%149 = getelementptr inbounds i8, i8* %148, i64 2
%150 = load i8, i8* %149
%151 = sext i8 %150 to i32
%152 = icmp eq i32 %151, 97
br i1 %152, label %157, label %153
153: ; preds = %147, %143
%154 = load i8, i8* %6
%155 = sext i8 %154 to i32
%156 = icmp eq i32 %155, 104
br i1 %156, label %157, label %165
157: ; preds = %153, %147
%158 = load i8*, i8** %9
%159 = getelementptr inbounds i8, i8* %158, i32 1
store i8* %159, i8** %9
store i8 88, i8* %158
%160 = load i8*, i8** %4
%161 = getelementptr inbounds i8, i8* %160, i32 1
store i8* %161, i8** %4
%162 = getelementptr inbounds i8, i8* %161, i64 1
%163 = load i8, i8* %162
%164 = call signext i8 @tolower(i8 signext %163)
store i8 %164, i8* %6
br label %189
165: ; preds = %153
%166 = load i8, i8* %6
%167 = sext i8 %166 to i32
%168 = icmp eq i32 %167, 105
br i1 %168, label %177, label %169
169: ; preds = %165
%170 = load i8, i8* %6
%171 = sext i8 %170 to i32
%172 = icmp eq i32 %171, 101
br i1 %172, label %177, label %173
173: ; preds = %169
%174 = load i8, i8* %6
%175 = sext i8 %174 to i32
%176 = icmp eq i32 %175, 121
br i1 %176, label %177, label %185
177: ; preds = %173, %169, %165
%178 = load i8*, i8** %9
%179 = getelementptr inbounds i8, i8* %178, i32 1
store i8* %179, i8** %9
store i8 83, i8* %178
%180 = load i8*, i8** %4
%181 = getelementptr inbounds i8, i8* %180, i32 1
store i8* %181, i8** %4
%182 = getelementptr inbounds i8, i8* %181, i64 1
%183 = load i8, i8* %182
%184 = call signext i8 @tolower(i8 signext %183)
store i8 %184, i8* %6
br label %188
185: ; preds = %173
%186 = load i8*, i8** %9
%187 = getelementptr inbounds i8, i8* %186, i32 1
store i8* %187, i8** %9
store i8 75, i8* %186
br label %188
188: ; preds = %185, %177
br label %189
189: ; preds = %188, %157
br label %619
190: ; preds = %105
%191 = load i8, i8* %6
%192 = sext i8 %191 to i32
%193 = icmp eq i32 %192, 103
br i1 %193, label %194, label %217
194: ; preds = %190
%195 = load i8*, i8** %4
%196 = getelementptr inbounds i8, i8* %195, i64 2
%197 = load i8, i8* %196
store i8 %197, i8* %7
%198 = sext i8 %197 to i32
%199 = icmp eq i32 %198, 101
br i1 %199, label %208, label %200
200: ; preds = %194
%201 = load i8, i8* %7
%202 = sext i8 %201 to i32
%203 = icmp eq i32 %202, 121
br i1 %203, label %208, label %204
204: ; preds = %200
%205 = load i8, i8* %7
%206 = sext i8 %205 to i32
%207 = icmp eq i32 %206, 105
br i1 %207, label %208, label %217
208: ; preds = %204, %200, %194
%209 = load i8*, i8** %9
%210 = getelementptr inbounds i8, i8* %209, i32 1
store i8* %210, i8** %9
store i8 74, i8* %209
%211 = load i8*, i8** %4
%212 = getelementptr inbounds i8, i8* %211, i64 2
store i8* %212, i8** %4
%213 = load i8*, i8** %4
%214 = getelementptr inbounds i8, i8* %213, i64 1
%215 = load i8, i8* %214
%216 = call signext i8 @tolower(i8 signext %215)
store i8 %216, i8* %6
br label %220
217: ; preds = %204, %190
%218 = load i8*, i8** %9
%219 = getelementptr inbounds i8, i8* %218, i32 1
store i8* %219, i8** %9
store i8 84, i8* %218
br label %220
220: ; preds = %217, %208
br label %619
221: ; preds = %105
%222 = load i8*, i8** %9
%223 = getelementptr inbounds i8, i8* %222, i32 1
store i8* %223, i8** %9
store i8 70, i8* %222
br label %619
224: ; preds = %105
%225 = load i8, i8* %6
%226 = sext i8 %225 to i32
%227 = icmp eq i32 %226, 105
br i1 %227, label %236, label %228
228: ; preds = %224
%229 = load i8, i8* %6
%230 = sext i8 %229 to i32
%231 = icmp eq i32 %230, 101
br i1 %231, label %236, label %232
232: ; preds = %228
%233 = load i8, i8* %6
%234 = sext i8 %233 to i32
%235 = icmp eq i32 %234, 121
br i1 %235, label %236, label %239
236: ; preds = %232, %228, %224
%237 = load i8*, i8** %9
%238 = getelementptr inbounds i8, i8* %237, i32 1
store i8* %238, i8** %9
store i8 74, i8* %237
br label %298
239: ; preds = %232
%240 = load i8, i8* %6
%241 = sext i8 %240 to i32
%242 = icmp ne i32 %241, 104
br i1 %242, label %243, label %250
243: ; preds = %239
%244 = load i8, i8* %6
%245 = sext i8 %244 to i32
%246 = icmp ne i32 %245, 110
br i1 %246, label %247, label %250
247: ; preds = %243
%248 = load i8*, i8** %9
%249 = getelementptr inbounds i8, i8* %248, i32 1
store i8* %249, i8** %9
store i8 75, i8* %248
br label %297
250: ; preds = %243, %239
%251 = load i8, i8* %6
%252 = sext i8 %251 to i32
%253 = icmp eq i32 %252, 104
br i1 %253, label %254, label %288
254: ; preds = %250
%255 = load i8*, i8** %4
%256 = getelementptr inbounds i8, i8* %255, i64 2
%257 = load i8, i8* %256
%258 = call signext i8 @tolower(i8 signext %257)
store i8 %258, i8* %7
%259 = sext i8 %258 to i32
%260 = icmp ne i32 %259, 0
br i1 %260, label %261, label %288
261: ; preds = %254
%262 = load i8, i8* %7
%263 = sext i8 %262 to i32
%264 = icmp eq i32 %263, 97
br i1 %264, label %288, label %265
265: ; preds = %261
%266 = load i8, i8* %7
%267 = sext i8 %266 to i32
%268 = icmp eq i32 %267, 101
br i1 %268, label %288, label %269
269: ; preds = %265
%270 = load i8, i8* %7
%271 = sext i8 %270 to i32
%272 = icmp eq i32 %271, 105
br i1 %272, label %288, label %273
273: ; preds = %269
%274 = load i8, i8* %7
%275 = sext i8 %274 to i32
%276 = icmp eq i32 %275, 111
br i1 %276, label %288, label %277
277: ; preds = %273
%278 = load i8, i8* %7
%279 = sext i8 %278 to i32
%280 = icmp eq i32 %279, 117
br i1 %280, label %288, label %281
281: ; preds = %277
%282 = load i8*, i8** %4
%283 = getelementptr inbounds i8, i8* %282, i32 1
store i8* %283, i8** %4
%284 = load i8*, i8** %4
%285 = getelementptr inbounds i8, i8* %284, i64 1
%286 = load i8, i8* %285
%287 = call signext i8 @tolower(i8 signext %286)
store i8 %287, i8* %6
br label %296
288: ; preds = %277, %273, %269, %265, %261, %254, %250
%289 = load i8, i8* %6
%290 = sext i8 %289 to i32
%291 = icmp ne i32 %290, 110
br i1 %291, label %292, label %295
292: ; preds = %288
%293 = load i8*, i8** %9
%294 = getelementptr inbounds i8, i8* %293, i32 1
store i8* %294, i8** %9
store i8 75, i8* %293
br label %295
295: ; preds = %292, %288
br label %296
296: ; preds = %295, %281
br label %297
297: ; preds = %296, %247
br label %298
298: ; preds = %297, %236
br label %619
299: ; preds = %105
%300 = load i8*, i8** %4
%301 = load i8*, i8** %3
%302 = icmp eq i8* %300, %301
br i1 %302, label %358, label %303
303: ; preds = %299
%304 = load i8, i8* %6
%305 = sext i8 %304 to i32
%306 = icmp eq i32 %305, 97
br i1 %306, label %358, label %307
307: ; preds = %303
%308 = load i8, i8* %6
%309 = sext i8 %308 to i32
%310 = icmp eq i32 %309, 101
br i1 %310, label %358, label %311
311: ; preds = %307
%312 = load i8, i8* %6
%313 = sext i8 %312 to i32
%314 = icmp eq i32 %313, 105
br i1 %314, label %358, label %315
315: ; preds = %311
%316 = load i8, i8* %6
%317 = sext i8 %316 to i32
%318 = icmp eq i32 %317, 111
br i1 %318, label %358, label %319
319: ; preds = %315
%320 = load i8, i8* %6
%321 = sext i8 %320 to i32
%322 = icmp eq i32 %321, 117
br i1 %322, label %358, label %323
323: ; preds = %319
%324 = load i8*, i8** %4
%325 = getelementptr inbounds i8, i8* %324, i64 -1
%326 = load i8, i8* %325
%327 = call signext i8 @tolower(i8 signext %326)
%328 = sext i8 %327 to i32
%329 = icmp ne i32 %328, 0
br i1 %329, label %330, label %352
330: ; preds = %323
%331 = load i8, i8* %7
%332 = sext i8 %331 to i32
%333 = icmp eq i32 %332, 97
br i1 %333, label %350, label %334
334: ; preds = %330
%335 = load i8, i8* %7
%336 = sext i8 %335 to i32
%337 = icmp eq i32 %336, 101
br i1 %337, label %350, label %338
338: ; preds = %334
%339 = load i8, i8* %7
%340 = sext i8 %339 to i32
%341 = icmp eq i32 %340, 105
br i1 %341, label %350, label %342
342: ; preds = %338
%343 = load i8, i8* %7
%344 = sext i8 %343 to i32
%345 = icmp eq i32 %344, 111
br i1 %345, label %350, label %346
346: ; preds = %342
%347 = load i8, i8* %7
%348 = sext i8 %347 to i32
%349 = icmp eq i32 %348, 117
br label %350
350: ; preds = %346, %342, %338, %334, %330
%351 = phi i1 [ true, %342 ], [ true, %338 ], [ true, %334 ], [ true, %330 ], [ %349, %346 ]
br label %352
352: ; preds = %350, %323
%353 = phi i1 [ false, %323 ], [ %351, %350 ]
%354 = zext i1 %353 to i32
%355 = trunc i32 %354 to i8
store i8 %355, i8* %7
%356 = sext i8 %355 to i32
%357 = icmp ne i32 %356, 0
br i1 %357, label %358, label %361
358: ; preds = %352, %319, %315, %311, %307, %303, %299
%359 = load i8*, i8** %9
%360 = getelementptr inbounds i8, i8* %359, i32 1
store i8* %360, i8** %9
store i8 72, i8* %359
br label %361
361: ; preds = %358, %352
br label %619
362: ; preds = %105
%363 = load i8*, i8** %9
%364 = getelementptr inbounds i8, i8* %363, i32 1
store i8* %364, i8** %9
store i8 74, i8* %363
br label %619
365: ; preds = %105
%366 = load i8*, i8** %4
%367 = load i8*, i8** %3
%368 = icmp eq i8* %366, %367
br i1 %368, label %375, label %369
369: ; preds = %365
%370 = load i8*, i8** %4
%371 = getelementptr inbounds i8, i8* %370, i64 -1
%372 = load i8, i8* %371
%373 = sext i8 %372 to i32
%374 = icmp ne i32 %373, 99
br i1 %374, label %375, label %378
375: ; preds = %369, %365
%376 = load i8*, i8** %9
%377 = getelementptr inbounds i8, i8* %376, i32 1
store i8* %377, i8** %9
store i8 75, i8* %376
br label %378
378: ; preds = %375, %369
br label %619
379: ; preds = %105
%380 = load i8*, i8** %9
%381 = getelementptr inbounds i8, i8* %380, i32 1
store i8* %381, i8** %9
store i8 76, i8* %380
br label %619
382: ; preds = %105
%383 = load i8*, i8** %9
%384 = getelementptr inbounds i8, i8* %383, i32 1
store i8* %384, i8** %9
store i8 77, i8* %383
br label %619
385: ; preds = %105
%386 = load i8*, i8** %9
%387 = getelementptr inbounds i8, i8* %386, i32 1
store i8* %387, i8** %9
store i8 78, i8* %386
br label %619
388: ; preds = %105
%389 = load i8, i8* %6
%390 = sext i8 %389 to i32
%391 = icmp eq i32 %390, 104
br i1 %391, label %392, label %400
392: ; preds = %388
%393 = load i8*, i8** %9
%394 = getelementptr inbounds i8, i8* %393, i32 1
store i8* %394, i8** %9
store i8 70, i8* %393
%395 = load i8*, i8** %4
%396 = getelementptr inbounds i8, i8* %395, i32 1
store i8* %396, i8** %4
%397 = getelementptr inbounds i8, i8* %396, i64 1
%398 = load i8, i8* %397
%399 = call signext i8 @tolower(i8 signext %398)
store i8 %399, i8* %6
br label %403
400: ; preds = %388
%401 = load i8*, i8** %9
%402 = getelementptr inbounds i8, i8* %401, i32 1
store i8* %402, i8** %9
store i8 80, i8* %401
br label %403
403: ; preds = %400, %392
br label %619
404: ; preds = %105
%405 = load i8*, i8** %9
%406 = getelementptr inbounds i8, i8* %405, i32 1
store i8* %406, i8** %9
store i8 75, i8* %405
br label %619
407: ; preds = %105
%408 = load i8*, i8** %9
%409 = getelementptr inbounds i8, i8* %408, i32 1
store i8* %409, i8** %9
store i8 82, i8* %408
br label %619
410: ; preds = %105
%411 = load i8, i8* %6
%412 = sext i8 %411 to i32
%413 = icmp eq i32 %412, 104
br i1 %413, label %414, label %422
414: ; preds = %410
%415 = load i8*, i8** %9
%416 = getelementptr inbounds i8, i8* %415, i32 1
store i8* %416, i8** %9
store i8 88, i8* %415
%417 = load i8*, i8** %4
%418 = getelementptr inbounds i8, i8* %417, i32 1
store i8* %418, i8** %4
%419 = getelementptr inbounds i8, i8* %418, i64 1
%420 = load i8, i8* %419
%421 = call signext i8 @tolower(i8 signext %420)
store i8 %421, i8* %6
br label %454
422: ; preds = %410
%423 = load i8, i8* %6
%424 = sext i8 %423 to i32
%425 = icmp eq i32 %424, 105
br i1 %425, label %426, label %450
426: ; preds = %422
%427 = load i8*, i8** %4
%428 = getelementptr inbounds i8, i8* %427, i64 2
%429 = load i8, i8* %428
%430 = call signext i8 @tolower(i8 signext %429)
store i8 %430, i8* %7
%431 = sext i8 %430 to i32
%432 = icmp ne i32 %431, 0
br i1 %432, label %433, label %450
433: ; preds = %426
%434 = load i8, i8* %7
%435 = sext i8 %434 to i32
%436 = icmp eq i32 %435, 111
br i1 %436, label %441, label %437
437: ; preds = %433
%438 = load i8, i8* %7
%439 = sext i8 %438 to i32
%440 = icmp eq i32 %439, 97
br i1 %440, label %441, label %450
441: ; preds = %437, %433
%442 = load i8*, i8** %9
%443 = getelementptr inbounds i8, i8* %442, i32 1
store i8* %443, i8** %9
store i8 88, i8* %442
%444 = load i8*, i8** %4
%445 = getelementptr inbounds i8, i8* %444, i64 2
store i8* %445, i8** %4
%446 = load i8*, i8** %4
%447 = getelementptr inbounds i8, i8* %446, i64 1
%448 = load i8, i8* %447
%449 = call signext i8 @tolower(i8 signext %448)
store i8 %449, i8* %6
br label %453
450: ; preds = %437, %426, %422
%451 = load i8*, i8** %9
%452 = getelementptr inbounds i8, i8* %451, i32 1
store i8* %452, i8** %9
store i8 83, i8* %451
br label %453
453: ; preds = %450, %441
br label %454
454: ; preds = %453, %414
br label %619
455: ; preds = %105
%456 = load i8, i8* %6
%457 = sext i8 %456 to i32
%458 = icmp eq i32 %457, 105
br i1 %458, label %459, label %473
459: ; preds = %455
%460 = load i8*, i8** %4
%461 = getelementptr inbounds i8, i8* %460, i64 2
%462 = load i8, i8* %461
%463 = call signext i8 @tolower(i8 signext %462)
store i8 %463, i8* %7
%464 = sext i8 %463 to i32
%465 = icmp eq i32 %464, 97
br i1 %465, label %470, label %466
466: ; preds = %459
%467 = load i8, i8* %7
%468 = sext i8 %467 to i32
%469 = icmp eq i32 %468, 111
br i1 %469, label %470, label %473
470: ; preds = %466, %459
%471 = load i8*, i8** %9
%472 = getelementptr inbounds i8, i8* %471, i32 1
store i8* %472, i8** %9
store i8 88, i8* %471
br label %501
473: ; preds = %466, %455
%474 = load i8, i8* %6
%475 = sext i8 %474 to i32
%476 = icmp eq i32 %475, 104
br i1 %476, label %477, label %485
477: ; preds = %473
%478 = load i8*, i8** %9
%479 = getelementptr inbounds i8, i8* %478, i32 1
store i8* %479, i8** %9
store i8 48, i8* %478
%480 = load i8*, i8** %4
%481 = getelementptr inbounds i8, i8* %480, i32 1
store i8* %481, i8** %4
%482 = getelementptr inbounds i8, i8* %481, i64 1
%483 = load i8, i8* %482
%484 = call signext i8 @tolower(i8 signext %483)
store i8 %484, i8* %6
br label %500
485: ; preds = %473
%486 = load i8, i8* %6
%487 = sext i8 %486 to i32
%488 = icmp ne i32 %487, 99
br i1 %488, label %496, label %489
489: ; preds = %485
%490 = load i8*, i8** %4
%491 = getelementptr inbounds i8, i8* %490, i64 2
%492 = load i8, i8* %491
%493 = call signext i8 @tolower(i8 signext %492)
store i8 %493, i8* %7
%494 = sext i8 %493 to i32
%495 = icmp ne i32 %494, 104
br i1 %495, label %496, label %499
496: ; preds = %489, %485
%497 = load i8*, i8** %9
%498 = getelementptr inbounds i8, i8* %497, i32 1
store i8* %498, i8** %9
store i8 84, i8* %497
br label %499
499: ; preds = %496, %489
br label %500
500: ; preds = %499, %477
br label %501
501: ; preds = %500, %470
br label %619
502: ; preds = %105
%503 = load i8*, i8** %9
%504 = getelementptr inbounds i8, i8* %503, i32 1
store i8* %504, i8** %9
store i8 70, i8* %503
br label %619
505: ; preds = %105
%506 = load i8*, i8** %4
%507 = load i8*, i8** %3
%508 = icmp eq i8* %506, %507
br i1 %508, label %509, label %519
509: ; preds = %505
%510 = load i8, i8* %6
%511 = sext i8 %510 to i32
%512 = icmp eq i32 %511, 104
br i1 %512, label %513, label %519
513: ; preds = %509
%514 = load i8*, i8** %4
%515 = getelementptr inbounds i8, i8* %514, i32 1
store i8* %515, i8** %4
%516 = getelementptr inbounds i8, i8* %515, i64 1
%517 = load i8, i8* %516
%518 = call signext i8 @tolower(i8 signext %517)
store i8 %518, i8* %6
br label %519
519: ; preds = %513, %509, %505
%520 = load i8, i8* %6
%521 = sext i8 %520 to i32
%522 = icmp eq i32 %521, 97
br i1 %522, label %539, label %523
523: ; preds = %519
%524 = load i8, i8* %6
%525 = sext i8 %524 to i32
%526 = icmp eq i32 %525, 101
br i1 %526, label %539, label %527
527: ; preds = %523
%528 = load i8, i8* %6
%529 = sext i8 %528 to i32
%530 = icmp eq i32 %529, 105
br i1 %530, label %539, label %531
531: ; preds = %527
%532 = load i8, i8* %6
%533 = sext i8 %532 to i32
%534 = icmp eq i32 %533, 111
br i1 %534, label %539, label %535
535: ; preds = %531
%536 = load i8, i8* %6
%537 = sext i8 %536 to i32
%538 = icmp eq i32 %537, 117
br i1 %538, label %539, label %542
539: ; preds = %535, %531, %527, %523, %519
%540 = load i8*, i8** %9
%541 = getelementptr inbounds i8, i8* %540, i32 1
store i8* %541, i8** %9
store i8 87, i8* %540
br label %542
542: ; preds = %539, %535
br label %619
543: ; preds = %105
%544 = load i8*, i8** %4
%545 = load i8*, i8** %3
%546 = icmp eq i8* %544, %545
br i1 %546, label %547, label %577
547: ; preds = %543
%548 = load i8, i8* %6
%549 = sext i8 %548 to i32
%550 = icmp eq i32 %549, 104
br i1 %550, label %570, label %551
551: ; preds = %547
%552 = load i8, i8* %6
%553 = sext i8 %552 to i32
%554 = icmp eq i32 %553, 105
br i1 %554, label %555, label %573
555: ; preds = %551
%556 = load i8*, i8** %4
%557 = getelementptr inbounds i8, i8* %556, i64 2
%558 = load i8, i8* %557
%559 = call signext i8 @tolower(i8 signext %558)
store i8 %559, i8* %7
%560 = sext i8 %559 to i32
%561 = icmp ne i32 %560, 0
br i1 %561, label %562, label %573
562: ; preds = %555
%563 = load i8, i8* %7
%564 = sext i8 %563 to i32
%565 = icmp eq i32 %564, 111
br i1 %565, label %570, label %566
566: ; preds = %562
%567 = load i8, i8* %7
%568 = sext i8 %567 to i32
%569 = icmp eq i32 %568, 97
br i1 %569, label %570, label %573
570: ; preds = %566, %562, %547
%571 = load i8*, i8** %9
%572 = getelementptr inbounds i8, i8* %571, i32 1
store i8* %572, i8** %9
store i8 88, i8* %571
br label %576
573: ; preds = %566, %555, %551
%574 = load i8*, i8** %9
%575 = getelementptr inbounds i8, i8* %574, i32 1
store i8* %575, i8** %9
store i8 83, i8* %574
br label %576
576: ; preds = %573, %570
br label %582
577: ; preds = %543
%578 = load i8*, i8** %9
%579 = getelementptr inbounds i8, i8* %578, i32 1
store i8* %579, i8** %9
store i8 75, i8* %578
%580 = load i8*, i8** %9
%581 = getelementptr inbounds i8, i8* %580, i32 1
store i8* %581, i8** %9
store i8 83, i8* %580
br label %582
582: ; preds = %577, %576
br label %619
583: ; preds = %105
%584 = load i8, i8* %6
%585 = sext i8 %584 to i32
%586 = icmp eq i32 %585, 97
br i1 %586, label %603, label %587
587: ; preds = %583
%588 = load i8, i8* %6
%589 = sext i8 %588 to i32
%590 = icmp eq i32 %589, 101
br i1 %590, label %603, label %591
591: ; preds = %587
%592 = load i8, i8* %6
%593 = sext i8 %592 to i32
%594 = icmp eq i32 %593, 105
br i1 %594, label %603, label %595
595: ; preds = %591
%596 = load i8, i8* %6
%597 = sext i8 %596 to i32
%598 = icmp eq i32 %597, 111
br i1 %598, label %603, label %599
599: ; preds = %595
%600 = load i8, i8* %6
%601 = sext i8 %600 to i32
%602 = icmp eq i32 %601, 117
br i1 %602, label %603, label %606
603: ; preds = %599, %595, %591, %587, %583
%604 = load i8*, i8** %9
%605 = getelementptr inbounds i8, i8* %604, i32 1
store i8* %605, i8** %9
store i8 89, i8* %604
br label %606
606: ; preds = %603, %599
br label %619
607: ; preds = %105
%608 = load i8*, i8** %9
%609 = getelementptr inbounds i8, i8* %608, i32 1
store i8* %609, i8** %9
store i8 83, i8* %608
br label %619
610: ; preds = %105
%611 = load i8*, i8** %9
%612 = load i8, i8* %611
%613 = sext i8 %612 to i32
%614 = icmp ne i32 %613, 32
br i1 %614, label %615, label %618
615: ; preds = %610
%616 = load i8*, i8** %9
%617 = getelementptr inbounds i8, i8* %616, i32 1
store i8* %617, i8** %9
store i8 32, i8* %616
br label %618
618: ; preds = %615, %610
br label %619
619: ; preds = %105, %618, %607, %606, %582, %542, %502, %501, %454, %407, %404, %403, %385, %382, %379, %378, %362, %361, %298, %221, %220, %189, %142, %124
br label %620
620: ; preds = %619, %104
%621 = load i8*, i8** %4
%622 = getelementptr inbounds i8, i8* %621, i32 1
store i8* %622, i8** %4
br label %86
623: ; preds = %86
%624 = load i8*, i8** %8
store i8* %624, i8** %2
br label %625
625: ; preds = %623, %17
%626 = load i8*, i8** %2
ret i8* %626
}

LLVM IR (-O2):
define i8* @metaphone(i8* %0) {
%2 = tail call i32 @strlen(i8* %0)
%3 = shl nsw i32 %2, 1
%4 = or i32 %3, 1
%5 = tail call i8* @calloc(i32 %4, i32 1)
%6 = icmp eq i8* %5, null
br i1 %6, label %266, label %7
7: ; preds = %1
%8 = load i8, i8* %0
%9 = tail call signext i8 @tolower(i8 signext %8)
%10 = icmp eq i8 %9, 0
br i1 %10, label %36, label %11
11: ; preds = %7
%12 = getelementptr inbounds i8, i8* %0, i64 1
%13 = load i8, i8* %12
%14 = tail call signext i8 @tolower(i8 signext %13)
%15 = icmp eq i8 %9, 107
%16 = icmp eq i8 %14, 110
%17 = select i1 %15, i1 %16, i1 false
br i1 %17, label %35, label %18
18: ; preds = %11
%19 = icmp eq i8 %9, 103
%20 = select i1 %19, i1 %16, i1 false
br i1 %20, label %35, label %21
21: ; preds = %18
%22 = icmp eq i8 %9, 112
%23 = select i1 %22, i1 %16, i1 false
br i1 %23, label %35, label %24
24: ; preds = %21
%25 = icmp eq i8 %9, 97
%26 = icmp eq i8 %14, 99
%27 = select i1 %25, i1 %26, i1 false
br i1 %27, label %35, label %28
28: ; preds = %24
%29 = icmp eq i8 %9, 119
%30 = icmp eq i8 %14, 114
%31 = select i1 %29, i1 %30, i1 false
br i1 %31, label %35, label %32
32: ; preds = %28
%33 = icmp eq i8 %14, 101
%34 = select i1 %25, i1 %33, i1 false
br i1 %34, label %35, label %36
35: ; preds = %32, %28, %24, %21, %18, %11
br label %36
36: ; preds = %32, %35, %7
%37 = phi i8* [ %12, %35 ], [ %0, %32 ], [ %0, %7 ]
%38 = load i8, i8* %37
%39 = tail call signext i8 @tolower(i8 signext %38)
%40 = icmp eq i8 %39, 0
br i1 %40, label %266, label %41
41: ; preds = %36
%42 = getelementptr inbounds i8, i8* %37, i64 2
%43 = getelementptr inbounds i8, i8* %37, i64 2
br label %44
44: ; preds = %41, %259
%45 = phi i8* [ %263, %259 ], [ %5, %41 ]
%46 = phi i8 [ %262, %259 ], [ 0, %41 ]
%47 = phi i8 [ %261, %259 ], [ %39, %41 ]
%48 = phi i8* [ %264, %259 ], [ %37, %41 ]
%49 = getelementptr inbounds i8, i8* %48, i64 1
%50 = load i8, i8* %49
%51 = tail call signext i8 @tolower(i8 signext %50)
%52 = icmp eq i8 %47, %51
%53 = icmp ne i8 %47, 99
%54 = and i1 %53, %52
br i1 %54, label %259, label %55
55: ; preds = %44
%56 = sext i8 %47 to i32
switch i32 %56, label %259 [
i32 97, label %57
i32 101, label %57
i32 105, label %57
i32 111, label %57
i32 117, label %57
i32 98, label %67
i32 99, label %77
i32 100, label %94
i32 102, label %107
i32 103, label %109
i32 104, label %127
i32 106, label %150
i32 107, label %152
i32 108, label %160
i32 109, label %162
i32 110, label %164
i32 112, label %166
i32 113, label %174
i32 114, label %176
i32 115, label %178
i32 116, label %196
i32 118, label %216
i32 119, label %218
i32 120, label %232
i32 121, label %247
i32 122, label %252
i32 32, label %254
]
57: ; preds = %55, %55, %55, %55, %55
%58 = icmp eq i8* %48, %37
br i1 %58, label %63, label %59
59: ; preds = %57
%60 = getelementptr inbounds i8, i8* %48, i64 -1
%61 = load i8, i8* %60
%62 = icmp eq i8 %61, 32
br i1 %62, label %63, label %259
63: ; preds = %59, %57
%64 = tail call i32 @toupper(i8 signext %47)
%65 = trunc i32 %64 to i8
%66 = getelementptr inbounds i8, i8* %45, i64 1
store i8 %65, i8* %45
br label %259
67: ; preds = %55
%68 = icmp ugt i8* %48, %37
br i1 %68, label %69, label %75
69: ; preds = %67
%70 = getelementptr inbounds i8, i8* %48, i64 -1
%71 = load i8, i8* %70
%72 = icmp ne i8 %71, 109
%73 = icmp ne i8 %51, 0
%74 = select i1 %72, i1 true, i1 %73
br i1 %74, label %75, label %266
75: ; preds = %69, %67
%76 = getelementptr inbounds i8, i8* %45, i64 1
store i8 66, i8* %45
br label %259
77: ; preds = %55
switch i8 %51, label %92 [
i8 105, label %78
i8 104, label %82
i8 121, label %87
i8 101, label %87
]
78: ; preds = %77
%79 = getelementptr inbounds i8, i8* %48, i64 2
%80 = load i8, i8* %79
%81 = icmp eq i8 %80, 97
br i1 %81, label %82, label %87
82: ; preds = %77, %78
%83 = getelementptr inbounds i8, i8* %45, i64 1
store i8 88, i8* %45
%84 = getelementptr inbounds i8, i8* %48, i64 2
%85 = load i8, i8* %84
%86 = tail call signext i8 @tolower(i8 signext %85)
br label %259
87: ; preds = %78, %77, %77
%88 = getelementptr inbounds i8, i8* %45, i64 1
store i8 83, i8* %45
%89 = getelementptr inbounds i8, i8* %48, i64 2
%90 = load i8, i8* %89
%91 = tail call signext i8 @tolower(i8 signext %90)
br label %259
92: ; preds = %77
%93 = getelementptr inbounds i8, i8* %45, i64 1
store i8 75, i8* %45
br label %259
94: ; preds = %55
%95 = icmp eq i8 %51, 103
br i1 %95, label %96, label %104
96: ; preds = %94
%97 = getelementptr inbounds i8, i8* %48, i64 2
%98 = load i8, i8* %97
switch i8 %98, label %104 [
i8 121, label %99
i8 105, label %99
i8 101, label %99
]
99: ; preds = %96, %96, %96
%100 = getelementptr inbounds i8, i8* %45, i64 1
store i8 74, i8* %45
%101 = getelementptr inbounds i8, i8* %48, i64 3
%102 = load i8, i8* %101
%103 = tail call signext i8 @tolower(i8 signext %102)
br label %259
104: ; preds = %96, %94
%105 = phi i8 [ %98, %96 ], [ %46, %94 ]
%106 = getelementptr inbounds i8, i8* %45, i64 1
store i8 84, i8* %45
br label %259
107: ; preds = %55
%108 = getelementptr inbounds i8, i8* %45, i64 1
store i8 70, i8* %45
br label %259
109: ; preds = %55
switch i8 %51, label %112 [
i8 121, label %110
i8 105, label %110
i8 101, label %110
]
110: ; preds = %109, %109, %109
%111 = getelementptr inbounds i8, i8* %45, i64 1
store i8 74, i8* %45
br label %259
112: ; preds = %109
%113 = icmp eq i8 %51, 110
switch i8 %51, label %114 [
i8 104, label %116
i8 110, label %123
]
114: ; preds = %112
%115 = getelementptr inbounds i8, i8* %45, i64 1
store i8 75, i8* %45
br label %259
116: ; preds = %112
%117 = getelementptr inbounds i8, i8* %48, i64 2
%118 = load i8, i8* %117
%119 = tail call signext i8 @tolower(i8 signext %118)
switch i8 %119, label %120 [
i8 117, label %123
i8 111, label %123
i8 105, label %123
i8 101, label %123
i8 97, label %123
i8 0, label %123
]
120: ; preds = %116
%121 = load i8, i8* %117
%122 = tail call signext i8 @tolower(i8 signext %121)
br label %259
123: ; preds = %116, %116, %116, %116, %116, %116, %112
%124 = phi i8 [ %119, %116 ], [ %46, %112 ], [ %119, %116 ], [ %119, %116 ], [ %119, %116 ], [ %119, %116 ], [ %119, %116 ]
br i1 %113, label %259, label %125
125: ; preds = %123
%126 = getelementptr inbounds i8, i8* %45, i64 1
store i8 75, i8* %45
br label %259
127: ; preds = %55
%128 = freeze i8* %48
%129 = icmp eq i8* %128, %37
br i1 %129, label %147, label %130
130: ; preds = %127
%131 = add i8 %51, -97
%132 = tail call i8 @llvm.fshl.i8(i8 %131, i8 %131, i8 7)
switch i8 %132, label %133 [
i8 10, label %147
i8 7, label %147
i8 4, label %147
i8 2, label %147
i8 0, label %147
]
133: ; preds = %130
%134 = getelementptr inbounds i8, i8* %128, i64 -1
%135 = load i8, i8* %134
%136 = tail call signext i8 @tolower(i8 signext %135)
%137 = icmp eq i8 %136, 0
br i1 %137, label %259, label %138
138: ; preds = %133
%139 = add i8 %46, -97
%140 = tail call i8 @llvm.fshl.i8(i8 %139, i8 %139, i8 7)
%141 = icmp ult i8 %140, 11
br i1 %141, label %142, label %259
142: ; preds = %138
%143 = zext i8 %140 to i16
%144 = lshr i16 1173, %143
%145 = and i16 %144, 1
%146 = icmp eq i16 %145, 0
br i1 %146, label %259, label %147
147: ; preds = %142, %130, %130, %130, %130, %130, %127
%148 = phi i8 [ %46, %130 ], [ %46, %127 ], [ %46, %130 ], [ %46, %130 ], [ %46, %130 ], [ %46, %130 ], [ 1, %142 ]
%149 = getelementptr inbounds i8, i8* %45, i64 1
store i8 72, i8* %45
br label %259
150: ; preds = %55
%151 = getelementptr inbounds i8, i8* %45, i64 1
store i8 74, i8* %45
br label %259
152: ; preds = %55
%153 = icmp eq i8* %48, %37
br i1 %153, label %158, label %154
154: ; preds = %152
%155 = getelementptr inbounds i8, i8* %48, i64 -1
%156 = load i8, i8* %155
%157 = icmp eq i8 %156, 99
br i1 %157, label %259, label %158
158: ; preds = %154, %152
%159 = getelementptr inbounds i8, i8* %45, i64 1
store i8 75, i8* %45
br label %259
160: ; preds = %55
%161 = getelementptr inbounds i8, i8* %45, i64 1
store i8 76, i8* %45
br label %259
162: ; preds = %55
%163 = getelementptr inbounds i8, i8* %45, i64 1
store i8 77, i8* %45
br label %259
164: ; preds = %55
%165 = getelementptr inbounds i8, i8* %45, i64 1
store i8 78, i8* %45
br label %259
166: ; preds = %55
%167 = icmp eq i8 %51, 104
%168 = getelementptr inbounds i8, i8* %45, i64 1
br i1 %167, label %169, label %173
169: ; preds = %166
store i8 70, i8* %45
%170 = getelementptr inbounds i8, i8* %48, i64 2
%171 = load i8, i8* %170
%172 = tail call signext i8 @tolower(i8 signext %171)
br label %259
173: ; preds = %166
store i8 80, i8* %45
br label %259
174: ; preds = %55
%175 = getelementptr inbounds i8, i8* %45, i64 1
store i8 75, i8* %45
br label %259
176: ; preds = %55
%177 = getelementptr inbounds i8, i8* %45, i64 1
store i8 82, i8* %45
br label %259
178: ; preds = %55
switch i8 %51, label %193 [
i8 104, label %179
i8 105, label %184
]
179: ; preds = %178
%180 = getelementptr inbounds i8, i8* %45, i64 1
store i8 88, i8* %45
%181 = getelementptr inbounds i8, i8* %48, i64 2
%182 = load i8, i8* %181
%183 = tail call signext i8 @tolower(i8 signext %182)
br label %259
184: ; preds = %178
%185 = getelementptr inbounds i8, i8* %48, i64 2
%186 = load i8, i8* %185
%187 = tail call signext i8 @tolower(i8 signext %186)
switch i8 %187, label %193 [
i8 97, label %188
i8 111, label %188
]
188: ; preds = %184, %184
%189 = getelementptr inbounds i8, i8* %45, i64 1
store i8 88, i8* %45
%190 = getelementptr inbounds i8, i8* %48, i64 3
%191 = load i8, i8* %190
%192 = tail call signext i8 @tolower(i8 signext %191)
br label %259
193: ; preds = %184, %178
%194 = phi i8 [ %46, %178 ], [ %187, %184 ]
%195 = getelementptr inbounds i8, i8* %45, i64 1
store i8 83, i8* %45
br label %259
196: ; preds = %55
switch i8 %51, label %213 [
i8 105, label %197
i8 104, label %203
i8 99, label %208
]
197: ; preds = %196
%198 = getelementptr inbounds i8, i8* %48, i64 2
%199 = load i8, i8* %198
%200 = tail call signext i8 @tolower(i8 signext %199)
switch i8 %200, label %213 [
i8 111, label %201
i8 97, label %201
]
201: ; preds = %197, %197
%202 = getelementptr inbounds i8, i8* %45, i64 1
store i8 88, i8* %45
br label %259
203: ; preds = %196
%204 = getelementptr inbounds i8, i8* %45, i64 1
store i8 48, i8* %45
%205 = getelementptr inbounds i8, i8* %48, i64 2
%206 = load i8, i8* %205
%207 = tail call signext i8 @tolower(i8 signext %206)
br label %259
208: ; preds = %196
%209 = getelementptr inbounds i8, i8* %48, i64 2
%210 = load i8, i8* %209
%211 = tail call signext i8 @tolower(i8 signext %210)
%212 = icmp eq i8 %211, 104
br i1 %212, label %259, label %213
213: ; preds = %196, %197, %208
%214 = phi i8 [ %211, %208 ], [ %200, %197 ], [ %46, %196 ]
%215 = getelementptr inbounds i8, i8* %45, i64 1
store i8 84, i8* %45
br label %259
216: ; preds = %55
%217 = getelementptr inbounds i8, i8* %45, i64 1
store i8 70, i8* %45
br label %259
218: ; preds = %55
%219 = icmp eq i8* %48, %37
%220 = icmp eq i8 %51, 104
%221 = select i1 %219, i1 %220, i1 false
br i1 %221, label %222, label %225
222: ; preds = %218
%223 = load i8, i8* %43
%224 = tail call signext i8 @tolower(i8 signext %223)
br label %225
225: ; preds = %222, %218
%226 = phi i8* [ %49, %222 ], [ %48, %218 ]
%227 = phi i8 [ %224, %222 ], [ %51, %218 ]
%228 = add i8 %227, -97
%229 = tail call i8 @llvm.fshl.i8(i8 %228, i8 %228, i8 7)
switch i8 %229, label %259 [
i8 10, label %230
i8 7, label %230
i8 4, label %230
i8 2, label %230
i8 0, label %230
]
230: ; preds = %225, %225, %225, %225, %225
%231 = getelementptr inbounds i8, i8* %45, i64 1
store i8 87, i8* %45
br label %259
232: ; preds = %55
%233 = icmp eq i8* %48, %37
br i1 %233, label %234, label %244
234: ; preds = %232
switch i8 %51, label %241 [
i8 104, label %238
i8 105, label %235
]
235: ; preds = %234
%236 = load i8, i8* %42
%237 = tail call signext i8 @tolower(i8 signext %236)
switch i8 %237, label %241 [
i8 97, label %238
i8 111, label %238
]
238: ; preds = %235, %235, %234
%239 = phi i8 [ %46, %234 ], [ %237, %235 ], [ %237, %235 ]
%240 = getelementptr inbounds i8, i8* %45, i64 1
store i8 88, i8* %45
br label %259
241: ; preds = %235, %234
%242 = phi i8 [ %46, %234 ], [ %237, %235 ]
%243 = getelementptr inbounds i8, i8* %45, i64 1
store i8 83, i8* %45
br label %259
244: ; preds = %232
%245 = getelementptr inbounds i8, i8* %45, i64 1
store i8 75, i8* %45
%246 = getelementptr inbounds i8, i8* %45, i64 2
store i8 83, i8* %245
br label %259
247: ; preds = %55
%248 = add i8 %51, -97
%249 = tail call i8 @llvm.fshl.i8(i8 %248, i8 %248, i8 7)
switch i8 %249, label %259 [
i8 10, label %250
i8 7, label %250
i8 4, label %250
i8 2, label %250
i8 0, label %250
]
250: ; preds = %247, %247, %247, %247, %247
%251 = getelementptr inbounds i8, i8* %45, i64 1
store i8 89, i8* %45
br label %259
252: ; preds = %55
%253 = getelementptr inbounds i8, i8* %45, i64 1
store i8 83, i8* %45
br label %259
254: ; preds = %55
%255 = load i8, i8* %45
%256 = icmp eq i8 %255, 32
br i1 %256, label %259, label %257
257: ; preds = %254
%258 = getelementptr inbounds i8, i8* %45, i64 1
store i8 32, i8* %45
br label %259
259: ; preds = %142, %138, %133, %247, %225, %107, %150, %160, %162, %164, %174, %176, %216, %252, %55, %63, %59, %75, %87, %92, %82, %104, %99, %114, %123, %125, %120, %110, %147, %158, %154, %173, %169, %188, %193, %179, %203, %213, %208, %201, %230, %238, %241, %244, %250, %257, %254, %44
%260 = phi i8* [ %48, %44 ], [ %48, %55 ], [ %48, %257 ], [ %48, %254 ], [ %48, %252 ], [ %48, %250 ], [ %48, %247 ], [ %37, %238 ], [ %37, %241 ], [ %48, %244 ], [ %226, %230 ], [ %226, %225 ], [ %48, %216 ], [ %48, %201 ], [ %49, %203 ], [ %48, %213 ], [ %48, %208 ], [ %49, %179 ], [ %185, %188 ], [ %48, %193 ], [ %48, %176 ], [ %48, %174 ], [ %49, %169 ], [ %48, %173 ], [ %48, %164 ], [ %48, %162 ], [ %48, %160 ], [ %48, %158 ], [ %48, %154 ], [ %48, %150 ], [ %128, %147 ], [ %48, %110 ], [ %48, %114 ], [ %48, %125 ], [ %48, %123 ], [ %49, %120 ], [ %48, %107 ], [ %97, %99 ], [ %48, %104 ], [ %49, %82 ], [ %49, %87 ], [ %48, %92 ], [ %48, %75 ], [ %48, %63 ], [ %48, %59 ], [ %128, %133 ], [ %128, %138 ], [ %128, %142 ]
%261 = phi i8 [ %47, %44 ], [ %51, %55 ], [ %51, %257 ], [ %51, %254 ], [ %51, %252 ], [ %51, %250 ], [ %51, %247 ], [ %51, %238 ], [ %51, %241 ], [ %51, %244 ], [ %227, %230 ], [ %227, %225 ], [ %51, %216 ], [ 105, %201 ], [ %207, %203 ], [ %51, %213 ], [ 99, %208 ], [ %183, %179 ], [ %192, %188 ], [ %51, %193 ], [ %51, %176 ], [ %51, %174 ], [ %172, %169 ], [ %51, %173 ], [ %51, %164 ], [ %51, %162 ], [ %51, %160 ], [ %51, %158 ], [ %51, %154 ], [ %51, %150 ], [ %51, %147 ], [ %51, %110 ], [ %51, %114 ], [ %51, %125 ], [ 110, %123 ], [ %122, %120 ], [ %51, %107 ], [ %103, %99 ], [ %51, %104 ], [ %86, %82 ], [ %91, %87 ], [ %51, %92 ], [ %51, %75 ], [ %51, %63 ], [ %51, %59 ], [ %51, %133 ], [ %51, %138 ], [ %51, %142 ]
%262 = phi i8 [ %46, %44 ], [ %46, %55 ], [ %46, %257 ], [ %46, %254 ], [ %46, %252 ], [ %46, %250 ], [ %46, %247 ], [ %239, %238 ], [ %242, %241 ], [ %46, %244 ], [ %46, %230 ], [ %46, %225 ], [ %46, %216 ], [ %200, %201 ], [ %46, %203 ], [ %214, %213 ], [ 104, %208 ], [ %46, %179 ], [ %187, %188 ], [ %194, %193 ], [ %46, %176 ], [ %46, %174 ], [ %46, %169 ], [ %46, %173 ], [ %46, %164 ], [ %46, %162 ], [ %46, %160 ], [ %46, %158 ], [ %46, %154 ], [ %46, %150 ], [ %148, %147 ], [ %46, %110 ], [ %46, %114 ], [ %124, %125 ], [ %124, %123 ], [ %119, %120 ], [ %46, %107 ], [ %98, %99 ], [ %105, %104 ], [ %46, %82 ], [ %46, %87 ], [ %46, %92 ], [ %46, %75 ], [ %46, %63 ], [ %46, %59 ], [ 0, %133 ], [ 0, %138 ], [ 0, %142 ]
%263 = phi i8* [ %45, %44 ], [ %45, %55 ], [ %258, %257 ], [ %45, %254 ], [ %253, %252 ], [ %251, %250 ], [ %45, %247 ], [ %240, %238 ], [ %243, %241 ], [ %246, %244 ], [ %231, %230 ], [ %45, %225 ], [ %217, %216 ], [ %202, %201 ], [ %204, %203 ], [ %215, %213 ], [ %45, %208 ], [ %180, %179 ], [ %189, %188 ], [ %195, %193 ], [ %177, %176 ], [ %175, %174 ], [ %168, %169 ], [ %168, %173 ], [ %165, %164 ], [ %163, %162 ], [ %161, %160 ], [ %159, %158 ], [ %45, %154 ], [ %151, %150 ], [ %149, %147 ], [ %111, %110 ], [ %115, %114 ], [ %126, %125 ], [ %45, %123 ], [ %45, %120 ], [ %108, %107 ], [ %100, %99 ], [ %106, %104 ], [ %83, %82 ], [ %88, %87 ], [ %93, %92 ], [ %76, %75 ], [ %66, %63 ], [ %45, %59 ], [ %45, %133 ], [ %45, %138 ], [ %45, %142 ]
%264 = getelementptr inbounds i8, i8* %260, i64 1
%265 = icmp eq i8 %261, 0
br i1 %265, label %266, label %44
266: ; preds = %69, %259, %36, %1
ret i8* %5
}