#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 && tolower(*(s - 1)) == 'm') || next) {
        *r++ = 'B';
      }
      break;
    case 'c':
      if ((next == 'i' && tolower(*(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 || tolower(*(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    1be1 <metaphone+0xaa1>
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     1bd9 <metaphone+0xa99>
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    1bc8 <metaphone+0xa88>
movsbl -0x19(%rbp),%eax
add    $0xffffffe0,%eax
mov    %eax,%ecx
mov    %rcx,-0x38(%rbp)
sub    $0x5a,%eax
ja     1bc3 <metaphone+0xa83>
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    1bc3 <metaphone+0xa83>
mov    -0x18(%rbp),%rax
cmp    -0x10(%rbp),%rax
jbe    135c <metaphone+0x21c>
mov    -0x18(%rbp),%rax
movsbl -0x1(%rax),%edi
call   1060 <tolower@plt>
movsbl %al,%eax
cmp    $0x6d,%eax
jne    135c <metaphone+0x21c>
movsbl -0x1a(%rbp),%eax
cmp    $0x0,%eax
je     136e <metaphone+0x22e>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x42,(%rax)
jmp    1bc3 <metaphone+0xa83>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
jne    1399 <metaphone+0x259>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
movsbl %al,%eax
cmp    $0x61,%eax
je     13a6 <metaphone+0x266>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
jne    13d8 <metaphone+0x298>
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    1448 <metaphone+0x308>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
je     13ff <metaphone+0x2bf>
movsbl -0x1a(%rbp),%eax
cmp    $0x65,%eax
je     13ff <metaphone+0x2bf>
movsbl -0x1a(%rbp),%eax
cmp    $0x79,%eax
jne    1431 <metaphone+0x2f1>
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    1443 <metaphone+0x303>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4b,(%rax)
jmp    1448 <metaphone+0x308>
jmp    1bc3 <metaphone+0xa83>
movsbl -0x1a(%rbp),%eax
cmp    $0x67,%eax
jne    14bd <metaphone+0x37d>
mov    -0x18(%rbp),%rax
mov    0x2(%rax),%al
mov    %al,-0x1b(%rbp)
movsbl %al,%eax
cmp    $0x65,%eax
je     148a <metaphone+0x34a>
movsbl -0x1b(%rbp),%eax
cmp    $0x79,%eax
je     148a <metaphone+0x34a>
movsbl -0x1b(%rbp),%eax
cmp    $0x69,%eax
jne    14bd <metaphone+0x37d>
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    14cf <metaphone+0x38f>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x54,(%rax)
jmp    1bc3 <metaphone+0xa83>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x46,(%rax)
jmp    1bc3 <metaphone+0xa83>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
je     1512 <metaphone+0x3d2>
movsbl -0x1a(%rbp),%eax
cmp    $0x65,%eax
je     1512 <metaphone+0x3d2>
movsbl -0x1a(%rbp),%eax
cmp    $0x79,%eax
jne    1529 <metaphone+0x3e9>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4a,(%rax)
jmp    1613 <metaphone+0x4d3>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
je     155a <metaphone+0x41a>
movsbl -0x1a(%rbp),%eax
cmp    $0x6e,%eax
je     155a <metaphone+0x41a>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4b,(%rax)
jmp    160e <metaphone+0x4ce>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
jne    15e5 <metaphone+0x4a5>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1b(%rbp)
movsbl %al,%eax
cmp    $0x0,%eax
je     15e5 <metaphone+0x4a5>
movsbl -0x1b(%rbp),%eax
cmp    $0x61,%eax
je     15e5 <metaphone+0x4a5>
movsbl -0x1b(%rbp),%eax
cmp    $0x65,%eax
je     15e5 <metaphone+0x4a5>
movsbl -0x1b(%rbp),%eax
cmp    $0x69,%eax
je     15e5 <metaphone+0x4a5>
movsbl -0x1b(%rbp),%eax
cmp    $0x6f,%eax
je     15e5 <metaphone+0x4a5>
movsbl -0x1b(%rbp),%eax
cmp    $0x75,%eax
je     15e5 <metaphone+0x4a5>
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    1609 <metaphone+0x4c9>
movsbl -0x1a(%rbp),%eax
cmp    $0x6e,%eax
je     1604 <metaphone+0x4c4>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4b,(%rax)
jmp    1609 <metaphone+0x4c9>
jmp    160e <metaphone+0x4ce>
jmp    1613 <metaphone+0x4d3>
jmp    1bc3 <metaphone+0xa83>
mov    -0x18(%rbp),%rax
cmp    -0x10(%rbp),%rax
je     16f7 <metaphone+0x5b7>
movsbl -0x1a(%rbp),%eax
cmp    $0x61,%eax
je     16f7 <metaphone+0x5b7>
movsbl -0x1a(%rbp),%eax
cmp    $0x65,%eax
je     16f7 <metaphone+0x5b7>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
je     16f7 <metaphone+0x5b7>
movsbl -0x1a(%rbp),%eax
cmp    $0x6f,%eax
je     16f7 <metaphone+0x5b7>
movsbl -0x1a(%rbp),%eax
cmp    $0x75,%eax
je     16f7 <metaphone+0x5b7>
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     16e0 <metaphone+0x5a0>
movsbl -0x1b(%rbp),%ecx
mov    $0x1,%al
cmp    $0x61,%ecx
mov    %al,-0x3a(%rbp)
je     16da <metaphone+0x59a>
movsbl -0x1b(%rbp),%ecx
mov    $0x1,%al
cmp    $0x65,%ecx
mov    %al,-0x3a(%rbp)
je     16da <metaphone+0x59a>
movsbl -0x1b(%rbp),%ecx
mov    $0x1,%al
cmp    $0x69,%ecx
mov    %al,-0x3a(%rbp)
je     16da <metaphone+0x59a>
movsbl -0x1b(%rbp),%ecx
mov    $0x1,%al
cmp    $0x6f,%ecx
mov    %al,-0x3a(%rbp)
je     16da <metaphone+0x59a>
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     1709 <metaphone+0x5c9>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x48,(%rax)
jmp    1bc3 <metaphone+0xa83>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4a,(%rax)
jmp    1bc3 <metaphone+0xa83>
mov    -0x18(%rbp),%rax
cmp    -0x10(%rbp),%rax
je     174c <metaphone+0x60c>
mov    -0x18(%rbp),%rax
movsbl -0x1(%rax),%edi
call   1060 <tolower@plt>
movsbl %al,%eax
cmp    $0x63,%eax
je     175e <metaphone+0x61e>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4b,(%rax)
jmp    1bc3 <metaphone+0xa83>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4c,(%rax)
jmp    1bc3 <metaphone+0xa83>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4d,(%rax)
jmp    1bc3 <metaphone+0xa83>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4e,(%rax)
jmp    1bc3 <metaphone+0xa83>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
jne    17e7 <metaphone+0x6a7>
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    17f9 <metaphone+0x6b9>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x50,(%rax)
jmp    1bc3 <metaphone+0xa83>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x4b,(%rax)
jmp    1bc3 <metaphone+0xa83>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x52,(%rax)
jmp    1bc3 <metaphone+0xa83>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
jne    186b <metaphone+0x72b>
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    18f8 <metaphone+0x7b8>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
jne    18e1 <metaphone+0x7a1>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1b(%rbp)
movsbl %al,%eax
cmp    $0x0,%eax
je     18e1 <metaphone+0x7a1>
movsbl -0x1b(%rbp),%eax
cmp    $0x6f,%eax
je     18ae <metaphone+0x76e>
movsbl -0x1b(%rbp),%eax
cmp    $0x61,%eax
jne    18e1 <metaphone+0x7a1>
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    18f3 <metaphone+0x7b3>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x53,(%rax)
jmp    18f8 <metaphone+0x7b8>
jmp    1bc3 <metaphone+0xa83>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
jne    194a <metaphone+0x80a>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1b(%rbp)
movsbl %al,%eax
cmp    $0x61,%eax
je     1933 <metaphone+0x7f3>
movsbl -0x1b(%rbp),%eax
cmp    $0x6f,%eax
jne    194a <metaphone+0x80a>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x58,(%rax)
jmp    19ce <metaphone+0x88e>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
jne    1989 <metaphone+0x849>
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    19c9 <metaphone+0x889>
movsbl -0x1a(%rbp),%eax
cmp    $0x63,%eax
jne    19b2 <metaphone+0x872>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1b(%rbp)
movsbl %al,%eax
cmp    $0x68,%eax
je     19c4 <metaphone+0x884>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x54,(%rax)
jmp    19c9 <metaphone+0x889>
jmp    19ce <metaphone+0x88e>
jmp    1bc3 <metaphone+0xa83>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x46,(%rax)
jmp    1bc3 <metaphone+0xa83>
mov    -0x18(%rbp),%rax
cmp    -0x10(%rbp),%rax
jne    1a20 <metaphone+0x8e0>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
jne    1a20 <metaphone+0x8e0>
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     1a61 <metaphone+0x921>
movsbl -0x1a(%rbp),%eax
cmp    $0x65,%eax
je     1a61 <metaphone+0x921>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
je     1a61 <metaphone+0x921>
movsbl -0x1a(%rbp),%eax
cmp    $0x6f,%eax
je     1a61 <metaphone+0x921>
movsbl -0x1a(%rbp),%eax
cmp    $0x75,%eax
jne    1a73 <metaphone+0x933>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x57,(%rax)
jmp    1bc3 <metaphone+0xa83>
mov    -0x18(%rbp),%rax
cmp    -0x10(%rbp),%rax
jne    1b04 <metaphone+0x9c4>
movsbl -0x1a(%rbp),%eax
cmp    $0x68,%eax
je     1ad6 <metaphone+0x996>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
jne    1aed <metaphone+0x9ad>
mov    -0x18(%rbp),%rax
movsbl 0x2(%rax),%edi
call   1060 <tolower@plt>
mov    %al,-0x1b(%rbp)
movsbl %al,%eax
cmp    $0x0,%eax
je     1aed <metaphone+0x9ad>
movsbl -0x1b(%rbp),%eax
cmp    $0x6f,%eax
je     1ad6 <metaphone+0x996>
movsbl -0x1b(%rbp),%eax
cmp    $0x61,%eax
jne    1aed <metaphone+0x9ad>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x58,(%rax)
jmp    1aff <metaphone+0x9bf>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x53,(%rax)
jmp    1b28 <metaphone+0x9e8>
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    1bc3 <metaphone+0xa83>
movsbl -0x1a(%rbp),%eax
cmp    $0x61,%eax
je     1b6e <metaphone+0xa2e>
movsbl -0x1a(%rbp),%eax
cmp    $0x65,%eax
je     1b6e <metaphone+0xa2e>
movsbl -0x1a(%rbp),%eax
cmp    $0x69,%eax
je     1b6e <metaphone+0xa2e>
movsbl -0x1a(%rbp),%eax
cmp    $0x6f,%eax
je     1b6e <metaphone+0xa2e>
movsbl -0x1a(%rbp),%eax
cmp    $0x75,%eax
jne    1b80 <metaphone+0xa40>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x59,(%rax)
jmp    1bc3 <metaphone+0xa83>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x53,(%rax)
jmp    1bc3 <metaphone+0xa83>
mov    -0x30(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
je     1bbe <metaphone+0xa7e>
mov    -0x30(%rbp),%rax
mov    %rax,%rcx
add    $0x1,%rcx
mov    %rcx,-0x30(%rbp)
movb   $0x20,(%rax)
jmp    1bc3 <metaphone+0xa83>
jmp    1bc8 <metaphone+0xa88>
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     163f <metaphone+0x4ff>
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     163f <metaphone+0x4ff>
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     163f <metaphone+0x4ff>
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    1291 <metaphone+0x151>
movsbl -0x1(%r12),%edi
call   1060 <tolower@plt>
cmp    $0x6d,%al
jne    1291 <metaphone+0x151>
test   %r13b,%r13b
je     163f <metaphone+0x4ff>
movb   $0x42,(%r14)
jmp    11f0 <metaphone+0xb0>
mov    %r13d,%eax
add    $0x9b,%al
cmp    $0x14,%al
ja     162c <metaphone+0x4ec>
movzbl %al,%eax
lea    0xebb(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movsbl 0x2(%r12),%edi
call   1060 <tolower@plt>
cmp    $0x61,%al
je     13ed <metaphone+0x2ad>
movb   $0x53,(%r14)
jmp    158e <metaphone+0x44e>
cmp    $0x67,%r13b
jne    1581 <metaphone+0x441>
movzbl 0x2(%r12),%ecx
lea    -0x65(%rcx),%eax
cmp    $0x14,%al
mov    %rcx,0x8(%rsp)
ja     1581 <metaphone+0x441>
movzbl %al,%eax
mov    $0x100011,%ecx
bt     %rax,%rcx
jae    1581 <metaphone+0x441>
movb   $0x4a,(%r14)
jmp    1521 <metaphone+0x3e1>
lea    -0x65(%r13),%eax
cmp    $0x14,%al
ja     1545 <metaphone+0x405>
movzbl %al,%eax
mov    $0x100011,%ecx
bt     %rax,%rcx
jae    1545 <metaphone+0x405>
movb   $0x4a,(%r14)
jmp    11f0 <metaphone+0xb0>
cmp    %rbp,%r12
je     135e <metaphone+0x21e>
mov    %r13d,%eax
add    $0x9f,%al
ror    %al
cmp    $0xa,%al
ja     15b8 <metaphone+0x478>
movzbl %al,%eax
mov    $0x495,%ecx
bt     %rax,%rcx
jae    15b8 <metaphone+0x478>
movb   $0x48,(%r14)
jmp    11f0 <metaphone+0xb0>
cmp    %rbp,%r12
je     162c <metaphone+0x4ec>
movsbl -0x1(%r12),%edi
call   1060 <tolower@plt>
cmp    $0x63,%al
je     11f4 <metaphone+0xb4>
jmp    162c <metaphone+0x4ec>
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    14c1 <metaphone+0x381>
movb   $0x46,(%r14)
movsbl 0x2(%r12),%edi
call   1060 <tolower@plt>
mov    %eax,%r13d
mov    %rbx,%r12
jmp    14c5 <metaphone+0x385>
movb   $0x52,(%r14)
jmp    11f0 <metaphone+0xb0>
cmp    $0x69,%r13b
je     1505 <metaphone+0x3c5>
cmp    $0x68,%r13b
jne    153c <metaphone+0x3fc>
movb   $0x58,(%r14)
jmp    158e <metaphone+0x44e>
cmp    $0x63,%r13b
je     155e <metaphone+0x41e>
cmp    $0x68,%r13b
je     158a <metaphone+0x44a>
cmp    $0x69,%r13b
jne    1581 <metaphone+0x441>
movsbl 0x2(%r12),%edi
call   1060 <tolower@plt>
cmp    $0x6f,%al
mov    %rax,0x8(%rsp)
je     1430 <metaphone+0x2f0>
cmp    $0x61,%al
jne    1581 <metaphone+0x441>
movb   $0x58,(%r14)
add    $0x1,%r14
mov    $0x69,%r13b
jmp    11f4 <metaphone+0xb4>
cmp    %rbp,%r12
jne    145a <metaphone+0x31a>
cmp    $0x68,%r13b
jne    145a <metaphone+0x31a>
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     14d2 <metaphone+0x392>
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     14fc <metaphone+0x3bc>
cmp    $0x69,%r13b
jne    15a8 <metaphone+0x468>
movsbl 0x2(%rbp),%edi
call   1060 <tolower@plt>
cmp    $0x6f,%al
mov    %rax,0x8(%rsp)
je     14fc <metaphone+0x3bc>
cmp    $0x61,%al
jne    15a8 <metaphone+0x468>
movb   $0x58,(%r14)
jmp    15ac <metaphone+0x46c>
movsbl 0x2(%r12),%edi
call   1060 <tolower@plt>
cmp    $0x6f,%al
mov    %rax,0x8(%rsp)
je     151d <metaphone+0x3dd>
cmp    $0x61,%al
jne    153c <metaphone+0x3fc>
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     15f8 <metaphone+0x4b8>
cmp    $0x6e,%r13b
je     161e <metaphone+0x4de>
jmp    162c <metaphone+0x4ec>
movsbl 0x2(%r12),%edi
call   1060 <tolower@plt>
mov    %rax,0x8(%rsp)
cmp    $0x68,%al
jne    1581 <metaphone+0x441>
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     15ec <metaphone+0x4ac>
mov    0x8(%rsp),%rax
add    $0x9f,%al
ror    %al
cmp    $0xa,%al
ja     15ec <metaphone+0x4ac>
movzbl %al,%eax
mov    $0x1,%cl
mov    %rcx,0x8(%rsp)
mov    $0x495,%ecx
bt     %eax,%ecx
jb     135e <metaphone+0x21e>
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     1635 <metaphone+0x4f5>
movzbl %cl,%edx
mov    $0x104111,%ecx
bt     %rdx,%rcx
jae    1635 <metaphone+0x4f5>
cmp    $0x6e,%r13b
jne    162c <metaphone+0x4ec>
mov    $0x6e,%r13b
jmp    11f4 <metaphone+0xb4>
movb   $0x4b,(%r14)
jmp    11f0 <metaphone+0xb0>
test   %al,%al
jne    1592 <metaphone+0x452>
jmp    161e <metaphone+0x4de>
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 %628
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 = %623, %80
%87 = load i8, i8* %6
%88 = icmp ne i8 %87, 0
br i1 %88, label %89, label %626
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 %623
105: ; preds = %100, %89
%106 = load i8, i8* %5
%107 = sext i8 %106 to i32
switch i32 %107, label %622 [
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 %144
i32 100, label %192
i32 102, label %223
i32 103, label %226
i32 104, label %301
i32 106, label %364
i32 107, label %367
i32 108, label %382
i32 109, label %385
i32 110, label %388
i32 112, label %391
i32 113, label %407
i32 114, label %410
i32 115, label %413
i32 116, label %458
i32 118, label %505
i32 119, label %508
i32 120, label %546
i32 121, label %586
i32 122, label %610
i32 32, label %613
]
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 %622
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 %140
129: ; preds = %125
%130 = load i8*, i8** %4
%131 = getelementptr inbounds i8, i8* %130, i64 -1
%132 = load i8, i8* %131
%133 = call signext i8 @tolower(i8 signext %132)
%134 = sext i8 %133 to i32
%135 = icmp eq i32 %134, 109
br i1 %135, label %136, label %140
136: ; preds = %129
%137 = load i8, i8* %6
%138 = sext i8 %137 to i32
%139 = icmp ne i32 %138, 0
br i1 %139, label %140, label %143
140: ; preds = %136, %129, %125
%141 = load i8*, i8** %9
%142 = getelementptr inbounds i8, i8* %141, i32 1
store i8* %142, i8** %9
store i8 66, i8* %141
br label %143
143: ; preds = %140, %136
br label %622
144: ; preds = %105
%145 = load i8, i8* %6
%146 = sext i8 %145 to i32
%147 = icmp eq i32 %146, 105
br i1 %147, label %148, label %155
148: ; preds = %144
%149 = load i8*, i8** %4
%150 = getelementptr inbounds i8, i8* %149, i64 2
%151 = load i8, i8* %150
%152 = call signext i8 @tolower(i8 signext %151)
%153 = sext i8 %152 to i32
%154 = icmp eq i32 %153, 97
br i1 %154, label %159, label %155
155: ; preds = %148, %144
%156 = load i8, i8* %6
%157 = sext i8 %156 to i32
%158 = icmp eq i32 %157, 104
br i1 %158, label %159, label %167
159: ; preds = %155, %148
%160 = load i8*, i8** %9
%161 = getelementptr inbounds i8, i8* %160, i32 1
store i8* %161, i8** %9
store i8 88, i8* %160
%162 = load i8*, i8** %4
%163 = getelementptr inbounds i8, i8* %162, i32 1
store i8* %163, i8** %4
%164 = getelementptr inbounds i8, i8* %163, i64 1
%165 = load i8, i8* %164
%166 = call signext i8 @tolower(i8 signext %165)
store i8 %166, i8* %6
br label %191
167: ; preds = %155
%168 = load i8, i8* %6
%169 = sext i8 %168 to i32
%170 = icmp eq i32 %169, 105
br i1 %170, label %179, label %171
171: ; preds = %167
%172 = load i8, i8* %6
%173 = sext i8 %172 to i32
%174 = icmp eq i32 %173, 101
br i1 %174, label %179, label %175
175: ; preds = %171
%176 = load i8, i8* %6
%177 = sext i8 %176 to i32
%178 = icmp eq i32 %177, 121
br i1 %178, label %179, label %187
179: ; preds = %175, %171, %167
%180 = load i8*, i8** %9
%181 = getelementptr inbounds i8, i8* %180, i32 1
store i8* %181, i8** %9
store i8 83, i8* %180
%182 = load i8*, i8** %4
%183 = getelementptr inbounds i8, i8* %182, i32 1
store i8* %183, i8** %4
%184 = getelementptr inbounds i8, i8* %183, i64 1
%185 = load i8, i8* %184
%186 = call signext i8 @tolower(i8 signext %185)
store i8 %186, i8* %6
br label %190
187: ; preds = %175
%188 = load i8*, i8** %9
%189 = getelementptr inbounds i8, i8* %188, i32 1
store i8* %189, i8** %9
store i8 75, i8* %188
br label %190
190: ; preds = %187, %179
br label %191
191: ; preds = %190, %159
br label %622
192: ; preds = %105
%193 = load i8, i8* %6
%194 = sext i8 %193 to i32
%195 = icmp eq i32 %194, 103
br i1 %195, label %196, label %219
196: ; preds = %192
%197 = load i8*, i8** %4
%198 = getelementptr inbounds i8, i8* %197, i64 2
%199 = load i8, i8* %198
store i8 %199, i8* %7
%200 = sext i8 %199 to i32
%201 = icmp eq i32 %200, 101
br i1 %201, label %210, label %202
202: ; preds = %196
%203 = load i8, i8* %7
%204 = sext i8 %203 to i32
%205 = icmp eq i32 %204, 121
br i1 %205, label %210, label %206
206: ; preds = %202
%207 = load i8, i8* %7
%208 = sext i8 %207 to i32
%209 = icmp eq i32 %208, 105
br i1 %209, label %210, label %219
210: ; preds = %206, %202, %196
%211 = load i8*, i8** %9
%212 = getelementptr inbounds i8, i8* %211, i32 1
store i8* %212, i8** %9
store i8 74, i8* %211
%213 = load i8*, i8** %4
%214 = getelementptr inbounds i8, i8* %213, i64 2
store i8* %214, i8** %4
%215 = load i8*, i8** %4
%216 = getelementptr inbounds i8, i8* %215, i64 1
%217 = load i8, i8* %216
%218 = call signext i8 @tolower(i8 signext %217)
store i8 %218, i8* %6
br label %222
219: ; preds = %206, %192
%220 = load i8*, i8** %9
%221 = getelementptr inbounds i8, i8* %220, i32 1
store i8* %221, i8** %9
store i8 84, i8* %220
br label %222
222: ; preds = %219, %210
br label %622
223: ; preds = %105
%224 = load i8*, i8** %9
%225 = getelementptr inbounds i8, i8* %224, i32 1
store i8* %225, i8** %9
store i8 70, i8* %224
br label %622
226: ; preds = %105
%227 = load i8, i8* %6
%228 = sext i8 %227 to i32
%229 = icmp eq i32 %228, 105
br i1 %229, label %238, label %230
230: ; preds = %226
%231 = load i8, i8* %6
%232 = sext i8 %231 to i32
%233 = icmp eq i32 %232, 101
br i1 %233, label %238, label %234
234: ; preds = %230
%235 = load i8, i8* %6
%236 = sext i8 %235 to i32
%237 = icmp eq i32 %236, 121
br i1 %237, label %238, label %241
238: ; preds = %234, %230, %226
%239 = load i8*, i8** %9
%240 = getelementptr inbounds i8, i8* %239, i32 1
store i8* %240, i8** %9
store i8 74, i8* %239
br label %300
241: ; preds = %234
%242 = load i8, i8* %6
%243 = sext i8 %242 to i32
%244 = icmp ne i32 %243, 104
br i1 %244, label %245, label %252
245: ; preds = %241
%246 = load i8, i8* %6
%247 = sext i8 %246 to i32
%248 = icmp ne i32 %247, 110
br i1 %248, label %249, label %252
249: ; preds = %245
%250 = load i8*, i8** %9
%251 = getelementptr inbounds i8, i8* %250, i32 1
store i8* %251, i8** %9
store i8 75, i8* %250
br label %299
252: ; preds = %245, %241
%253 = load i8, i8* %6
%254 = sext i8 %253 to i32
%255 = icmp eq i32 %254, 104
br i1 %255, label %256, label %290
256: ; preds = %252
%257 = load i8*, i8** %4
%258 = getelementptr inbounds i8, i8* %257, i64 2
%259 = load i8, i8* %258
%260 = call signext i8 @tolower(i8 signext %259)
store i8 %260, i8* %7
%261 = sext i8 %260 to i32
%262 = icmp ne i32 %261, 0
br i1 %262, label %263, label %290
263: ; preds = %256
%264 = load i8, i8* %7
%265 = sext i8 %264 to i32
%266 = icmp eq i32 %265, 97
br i1 %266, label %290, label %267
267: ; preds = %263
%268 = load i8, i8* %7
%269 = sext i8 %268 to i32
%270 = icmp eq i32 %269, 101
br i1 %270, label %290, label %271
271: ; preds = %267
%272 = load i8, i8* %7
%273 = sext i8 %272 to i32
%274 = icmp eq i32 %273, 105
br i1 %274, label %290, label %275
275: ; preds = %271
%276 = load i8, i8* %7
%277 = sext i8 %276 to i32
%278 = icmp eq i32 %277, 111
br i1 %278, label %290, label %279
279: ; preds = %275
%280 = load i8, i8* %7
%281 = sext i8 %280 to i32
%282 = icmp eq i32 %281, 117
br i1 %282, label %290, label %283
283: ; preds = %279
%284 = load i8*, i8** %4
%285 = getelementptr inbounds i8, i8* %284, i32 1
store i8* %285, i8** %4
%286 = load i8*, i8** %4
%287 = getelementptr inbounds i8, i8* %286, i64 1
%288 = load i8, i8* %287
%289 = call signext i8 @tolower(i8 signext %288)
store i8 %289, i8* %6
br label %298
290: ; preds = %279, %275, %271, %267, %263, %256, %252
%291 = load i8, i8* %6
%292 = sext i8 %291 to i32
%293 = icmp ne i32 %292, 110
br i1 %293, label %294, label %297
294: ; preds = %290
%295 = load i8*, i8** %9
%296 = getelementptr inbounds i8, i8* %295, i32 1
store i8* %296, i8** %9
store i8 75, i8* %295
br label %297
297: ; preds = %294, %290
br label %298
298: ; preds = %297, %283
br label %299
299: ; preds = %298, %249
br label %300
300: ; preds = %299, %238
br label %622
301: ; preds = %105
%302 = load i8*, i8** %4
%303 = load i8*, i8** %3
%304 = icmp eq i8* %302, %303
br i1 %304, label %360, label %305
305: ; preds = %301
%306 = load i8, i8* %6
%307 = sext i8 %306 to i32
%308 = icmp eq i32 %307, 97
br i1 %308, label %360, label %309
309: ; preds = %305
%310 = load i8, i8* %6
%311 = sext i8 %310 to i32
%312 = icmp eq i32 %311, 101
br i1 %312, label %360, label %313
313: ; preds = %309
%314 = load i8, i8* %6
%315 = sext i8 %314 to i32
%316 = icmp eq i32 %315, 105
br i1 %316, label %360, label %317
317: ; preds = %313
%318 = load i8, i8* %6
%319 = sext i8 %318 to i32
%320 = icmp eq i32 %319, 111
br i1 %320, label %360, label %321
321: ; preds = %317
%322 = load i8, i8* %6
%323 = sext i8 %322 to i32
%324 = icmp eq i32 %323, 117
br i1 %324, label %360, label %325
325: ; preds = %321
%326 = load i8*, i8** %4
%327 = getelementptr inbounds i8, i8* %326, i64 -1
%328 = load i8, i8* %327
%329 = call signext i8 @tolower(i8 signext %328)
%330 = sext i8 %329 to i32
%331 = icmp ne i32 %330, 0
br i1 %331, label %332, label %354
332: ; preds = %325
%333 = load i8, i8* %7
%334 = sext i8 %333 to i32
%335 = icmp eq i32 %334, 97
br i1 %335, label %352, label %336
336: ; preds = %332
%337 = load i8, i8* %7
%338 = sext i8 %337 to i32
%339 = icmp eq i32 %338, 101
br i1 %339, label %352, label %340
340: ; preds = %336
%341 = load i8, i8* %7
%342 = sext i8 %341 to i32
%343 = icmp eq i32 %342, 105
br i1 %343, label %352, label %344
344: ; preds = %340
%345 = load i8, i8* %7
%346 = sext i8 %345 to i32
%347 = icmp eq i32 %346, 111
br i1 %347, label %352, label %348
348: ; preds = %344
%349 = load i8, i8* %7
%350 = sext i8 %349 to i32
%351 = icmp eq i32 %350, 117
br label %352
352: ; preds = %348, %344, %340, %336, %332
%353 = phi i1 [ true, %344 ], [ true, %340 ], [ true, %336 ], [ true, %332 ], [ %351, %348 ]
br label %354
354: ; preds = %352, %325
%355 = phi i1 [ false, %325 ], [ %353, %352 ]
%356 = zext i1 %355 to i32
%357 = trunc i32 %356 to i8
store i8 %357, i8* %7
%358 = sext i8 %357 to i32
%359 = icmp ne i32 %358, 0
br i1 %359, label %360, label %363
360: ; preds = %354, %321, %317, %313, %309, %305, %301
%361 = load i8*, i8** %9
%362 = getelementptr inbounds i8, i8* %361, i32 1
store i8* %362, i8** %9
store i8 72, i8* %361
br label %363
363: ; preds = %360, %354
br label %622
364: ; preds = %105
%365 = load i8*, i8** %9
%366 = getelementptr inbounds i8, i8* %365, i32 1
store i8* %366, i8** %9
store i8 74, i8* %365
br label %622
367: ; preds = %105
%368 = load i8*, i8** %4
%369 = load i8*, i8** %3
%370 = icmp eq i8* %368, %369
br i1 %370, label %378, label %371
371: ; preds = %367
%372 = load i8*, i8** %4
%373 = getelementptr inbounds i8, i8* %372, i64 -1
%374 = load i8, i8* %373
%375 = call signext i8 @tolower(i8 signext %374)
%376 = sext i8 %375 to i32
%377 = icmp ne i32 %376, 99
br i1 %377, label %378, label %381
378: ; preds = %371, %367
%379 = load i8*, i8** %9
%380 = getelementptr inbounds i8, i8* %379, i32 1
store i8* %380, i8** %9
store i8 75, i8* %379
br label %381
381: ; preds = %378, %371
br label %622
382: ; preds = %105
%383 = load i8*, i8** %9
%384 = getelementptr inbounds i8, i8* %383, i32 1
store i8* %384, i8** %9
store i8 76, i8* %383
br label %622
385: ; preds = %105
%386 = load i8*, i8** %9
%387 = getelementptr inbounds i8, i8* %386, i32 1
store i8* %387, i8** %9
store i8 77, i8* %386
br label %622
388: ; preds = %105
%389 = load i8*, i8** %9
%390 = getelementptr inbounds i8, i8* %389, i32 1
store i8* %390, i8** %9
store i8 78, i8* %389
br label %622
391: ; preds = %105
%392 = load i8, i8* %6
%393 = sext i8 %392 to i32
%394 = icmp eq i32 %393, 104
br i1 %394, label %395, label %403
395: ; preds = %391
%396 = load i8*, i8** %9
%397 = getelementptr inbounds i8, i8* %396, i32 1
store i8* %397, i8** %9
store i8 70, i8* %396
%398 = load i8*, i8** %4
%399 = getelementptr inbounds i8, i8* %398, i32 1
store i8* %399, i8** %4
%400 = getelementptr inbounds i8, i8* %399, i64 1
%401 = load i8, i8* %400
%402 = call signext i8 @tolower(i8 signext %401)
store i8 %402, i8* %6
br label %406
403: ; preds = %391
%404 = load i8*, i8** %9
%405 = getelementptr inbounds i8, i8* %404, i32 1
store i8* %405, i8** %9
store i8 80, i8* %404
br label %406
406: ; preds = %403, %395
br label %622
407: ; preds = %105
%408 = load i8*, i8** %9
%409 = getelementptr inbounds i8, i8* %408, i32 1
store i8* %409, i8** %9
store i8 75, i8* %408
br label %622
410: ; preds = %105
%411 = load i8*, i8** %9
%412 = getelementptr inbounds i8, i8* %411, i32 1
store i8* %412, i8** %9
store i8 82, i8* %411
br label %622
413: ; preds = %105
%414 = load i8, i8* %6
%415 = sext i8 %414 to i32
%416 = icmp eq i32 %415, 104
br i1 %416, label %417, label %425
417: ; preds = %413
%418 = load i8*, i8** %9
%419 = getelementptr inbounds i8, i8* %418, i32 1
store i8* %419, i8** %9
store i8 88, i8* %418
%420 = load i8*, i8** %4
%421 = getelementptr inbounds i8, i8* %420, i32 1
store i8* %421, i8** %4
%422 = getelementptr inbounds i8, i8* %421, i64 1
%423 = load i8, i8* %422
%424 = call signext i8 @tolower(i8 signext %423)
store i8 %424, i8* %6
br label %457
425: ; preds = %413
%426 = load i8, i8* %6
%427 = sext i8 %426 to i32
%428 = icmp eq i32 %427, 105
br i1 %428, label %429, label %453
429: ; preds = %425
%430 = load i8*, i8** %4
%431 = getelementptr inbounds i8, i8* %430, i64 2
%432 = load i8, i8* %431
%433 = call signext i8 @tolower(i8 signext %432)
store i8 %433, i8* %7
%434 = sext i8 %433 to i32
%435 = icmp ne i32 %434, 0
br i1 %435, label %436, label %453
436: ; preds = %429
%437 = load i8, i8* %7
%438 = sext i8 %437 to i32
%439 = icmp eq i32 %438, 111
br i1 %439, label %444, label %440
440: ; preds = %436
%441 = load i8, i8* %7
%442 = sext i8 %441 to i32
%443 = icmp eq i32 %442, 97
br i1 %443, label %444, label %453
444: ; preds = %440, %436
%445 = load i8*, i8** %9
%446 = getelementptr inbounds i8, i8* %445, i32 1
store i8* %446, i8** %9
store i8 88, i8* %445
%447 = load i8*, i8** %4
%448 = getelementptr inbounds i8, i8* %447, i64 2
store i8* %448, i8** %4
%449 = load i8*, i8** %4
%450 = getelementptr inbounds i8, i8* %449, i64 1
%451 = load i8, i8* %450
%452 = call signext i8 @tolower(i8 signext %451)
store i8 %452, i8* %6
br label %456
453: ; preds = %440, %429, %425
%454 = load i8*, i8** %9
%455 = getelementptr inbounds i8, i8* %454, i32 1
store i8* %455, i8** %9
store i8 83, i8* %454
br label %456
456: ; preds = %453, %444
br label %457
457: ; preds = %456, %417
br label %622
458: ; preds = %105
%459 = load i8, i8* %6
%460 = sext i8 %459 to i32
%461 = icmp eq i32 %460, 105
br i1 %461, label %462, label %476
462: ; preds = %458
%463 = load i8*, i8** %4
%464 = getelementptr inbounds i8, i8* %463, i64 2
%465 = load i8, i8* %464
%466 = call signext i8 @tolower(i8 signext %465)
store i8 %466, i8* %7
%467 = sext i8 %466 to i32
%468 = icmp eq i32 %467, 97
br i1 %468, label %473, label %469
469: ; preds = %462
%470 = load i8, i8* %7
%471 = sext i8 %470 to i32
%472 = icmp eq i32 %471, 111
br i1 %472, label %473, label %476
473: ; preds = %469, %462
%474 = load i8*, i8** %9
%475 = getelementptr inbounds i8, i8* %474, i32 1
store i8* %475, i8** %9
store i8 88, i8* %474
br label %504
476: ; preds = %469, %458
%477 = load i8, i8* %6
%478 = sext i8 %477 to i32
%479 = icmp eq i32 %478, 104
br i1 %479, label %480, label %488
480: ; preds = %476
%481 = load i8*, i8** %9
%482 = getelementptr inbounds i8, i8* %481, i32 1
store i8* %482, i8** %9
store i8 48, i8* %481
%483 = load i8*, i8** %4
%484 = getelementptr inbounds i8, i8* %483, i32 1
store i8* %484, i8** %4
%485 = getelementptr inbounds i8, i8* %484, i64 1
%486 = load i8, i8* %485
%487 = call signext i8 @tolower(i8 signext %486)
store i8 %487, i8* %6
br label %503
488: ; preds = %476
%489 = load i8, i8* %6
%490 = sext i8 %489 to i32
%491 = icmp ne i32 %490, 99
br i1 %491, label %499, label %492
492: ; preds = %488
%493 = load i8*, i8** %4
%494 = getelementptr inbounds i8, i8* %493, i64 2
%495 = load i8, i8* %494
%496 = call signext i8 @tolower(i8 signext %495)
store i8 %496, i8* %7
%497 = sext i8 %496 to i32
%498 = icmp ne i32 %497, 104
br i1 %498, label %499, label %502
499: ; preds = %492, %488
%500 = load i8*, i8** %9
%501 = getelementptr inbounds i8, i8* %500, i32 1
store i8* %501, i8** %9
store i8 84, i8* %500
br label %502
502: ; preds = %499, %492
br label %503
503: ; preds = %502, %480
br label %504
504: ; preds = %503, %473
br label %622
505: ; preds = %105
%506 = load i8*, i8** %9
%507 = getelementptr inbounds i8, i8* %506, i32 1
store i8* %507, i8** %9
store i8 70, i8* %506
br label %622
508: ; preds = %105
%509 = load i8*, i8** %4
%510 = load i8*, i8** %3
%511 = icmp eq i8* %509, %510
br i1 %511, label %512, label %522
512: ; preds = %508
%513 = load i8, i8* %6
%514 = sext i8 %513 to i32
%515 = icmp eq i32 %514, 104
br i1 %515, label %516, label %522
516: ; preds = %512
%517 = load i8*, i8** %4
%518 = getelementptr inbounds i8, i8* %517, i32 1
store i8* %518, i8** %4
%519 = getelementptr inbounds i8, i8* %518, i64 1
%520 = load i8, i8* %519
%521 = call signext i8 @tolower(i8 signext %520)
store i8 %521, i8* %6
br label %522
522: ; preds = %516, %512, %508
%523 = load i8, i8* %6
%524 = sext i8 %523 to i32
%525 = icmp eq i32 %524, 97
br i1 %525, label %542, label %526
526: ; preds = %522
%527 = load i8, i8* %6
%528 = sext i8 %527 to i32
%529 = icmp eq i32 %528, 101
br i1 %529, label %542, label %530
530: ; preds = %526
%531 = load i8, i8* %6
%532 = sext i8 %531 to i32
%533 = icmp eq i32 %532, 105
br i1 %533, label %542, label %534
534: ; preds = %530
%535 = load i8, i8* %6
%536 = sext i8 %535 to i32
%537 = icmp eq i32 %536, 111
br i1 %537, label %542, label %538
538: ; preds = %534
%539 = load i8, i8* %6
%540 = sext i8 %539 to i32
%541 = icmp eq i32 %540, 117
br i1 %541, label %542, label %545
542: ; preds = %538, %534, %530, %526, %522
%543 = load i8*, i8** %9
%544 = getelementptr inbounds i8, i8* %543, i32 1
store i8* %544, i8** %9
store i8 87, i8* %543
br label %545
545: ; preds = %542, %538
br label %622
546: ; preds = %105
%547 = load i8*, i8** %4
%548 = load i8*, i8** %3
%549 = icmp eq i8* %547, %548
br i1 %549, label %550, label %580
550: ; preds = %546
%551 = load i8, i8* %6
%552 = sext i8 %551 to i32
%553 = icmp eq i32 %552, 104
br i1 %553, label %573, label %554
554: ; preds = %550
%555 = load i8, i8* %6
%556 = sext i8 %555 to i32
%557 = icmp eq i32 %556, 105
br i1 %557, label %558, label %576
558: ; preds = %554
%559 = load i8*, i8** %4
%560 = getelementptr inbounds i8, i8* %559, i64 2
%561 = load i8, i8* %560
%562 = call signext i8 @tolower(i8 signext %561)
store i8 %562, i8* %7
%563 = sext i8 %562 to i32
%564 = icmp ne i32 %563, 0
br i1 %564, label %565, label %576
565: ; preds = %558
%566 = load i8, i8* %7
%567 = sext i8 %566 to i32
%568 = icmp eq i32 %567, 111
br i1 %568, label %573, label %569
569: ; preds = %565
%570 = load i8, i8* %7
%571 = sext i8 %570 to i32
%572 = icmp eq i32 %571, 97
br i1 %572, label %573, label %576
573: ; preds = %569, %565, %550
%574 = load i8*, i8** %9
%575 = getelementptr inbounds i8, i8* %574, i32 1
store i8* %575, i8** %9
store i8 88, i8* %574
br label %579
576: ; preds = %569, %558, %554
%577 = load i8*, i8** %9
%578 = getelementptr inbounds i8, i8* %577, i32 1
store i8* %578, i8** %9
store i8 83, i8* %577
br label %579
579: ; preds = %576, %573
br label %585
580: ; preds = %546
%581 = load i8*, i8** %9
%582 = getelementptr inbounds i8, i8* %581, i32 1
store i8* %582, i8** %9
store i8 75, i8* %581
%583 = load i8*, i8** %9
%584 = getelementptr inbounds i8, i8* %583, i32 1
store i8* %584, i8** %9
store i8 83, i8* %583
br label %585
585: ; preds = %580, %579
br label %622
586: ; preds = %105
%587 = load i8, i8* %6
%588 = sext i8 %587 to i32
%589 = icmp eq i32 %588, 97
br i1 %589, label %606, label %590
590: ; preds = %586
%591 = load i8, i8* %6
%592 = sext i8 %591 to i32
%593 = icmp eq i32 %592, 101
br i1 %593, label %606, label %594
594: ; preds = %590
%595 = load i8, i8* %6
%596 = sext i8 %595 to i32
%597 = icmp eq i32 %596, 105
br i1 %597, label %606, label %598
598: ; preds = %594
%599 = load i8, i8* %6
%600 = sext i8 %599 to i32
%601 = icmp eq i32 %600, 111
br i1 %601, label %606, label %602
602: ; preds = %598
%603 = load i8, i8* %6
%604 = sext i8 %603 to i32
%605 = icmp eq i32 %604, 117
br i1 %605, label %606, label %609
606: ; preds = %602, %598, %594, %590, %586
%607 = load i8*, i8** %9
%608 = getelementptr inbounds i8, i8* %607, i32 1
store i8* %608, i8** %9
store i8 89, i8* %607
br label %609
609: ; preds = %606, %602
br label %622
610: ; preds = %105
%611 = load i8*, i8** %9
%612 = getelementptr inbounds i8, i8* %611, i32 1
store i8* %612, i8** %9
store i8 83, i8* %611
br label %622
613: ; preds = %105
%614 = load i8*, i8** %9
%615 = load i8, i8* %614
%616 = sext i8 %615 to i32
%617 = icmp ne i32 %616, 32
br i1 %617, label %618, label %621
618: ; preds = %613
%619 = load i8*, i8** %9
%620 = getelementptr inbounds i8, i8* %619, i32 1
store i8* %620, i8** %9
store i8 32, i8* %619
br label %621
621: ; preds = %618, %613
br label %622
622: ; preds = %105, %621, %610, %609, %585, %545, %505, %504, %457, %410, %407, %406, %388, %385, %382, %381, %364, %363, %300, %223, %222, %191, %143, %124
br label %623
623: ; preds = %622, %104
%624 = load i8*, i8** %4
%625 = getelementptr inbounds i8, i8* %624, i32 1
store i8* %625, i8** %4
br label %86
626: ; preds = %86
%627 = load i8*, i8** %8
store i8* %627, i8** %2
br label %628
628: ; preds = %626, %17
%629 = load i8*, i8** %2
ret i8* %629
}

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