int SoundEx(char *SoundEx, char *WordString, int LengthOption,
            int CensusOption) {
  int InSz = 31;
  char WordStr[32];
  int SoundExLen, WSLen, i;
  char FirstLetter, *p, *p2;
  SoundExLen = WSLen = 0;
  SoundEx[0] = 0;
  if (CensusOption) {
    LengthOption = 4;
  }
  if (LengthOption) {
    SoundExLen = LengthOption;
  }
  if (SoundExLen > 10) {
    SoundExLen = 10;
  }
  if (SoundExLen < 4) {
    SoundExLen = 4;
  }
  if (!WordString) {
    return (0);
  }
  for (p = WordString, p2 = WordStr, i = 0; (*p); p++, p2++, i++) {
    if (i >= InSz)
      break;
    (*p2) = (*p);
  }
  (*p2) = 0;
  for (p = WordStr; (*p); p++) {
    if ((*p) >= 'a' && (*p) <= 'z') {
      (*p) -= 0x20;
    }
  }
  for (p = WordStr; (*p); p++) {
    if ((*p) < 'A' || (*p) > 'Z') {
      (*p) = ' ';
    }
  }
  for (i = 0, p = p2 = WordStr; (*p); p++) {
    if (!i) {
      if ((*p) != ' ') {
        (*p2) = (*p);
        p2++;
        i++;
      }
    } else {
      (*p2) = (*p);
      p2++;
    }
  }
  (*p2) = 0;
  for (i = 0, p = WordStr; (*p); p++)
    i++;
  for (; i; i--) {
    if (WordStr[i] == ' ') {
      WordStr[i] = 0;
    } else {
      break;
    }
  }
  for (WSLen = 0, p = WordStr; (*p); p++)
    WSLen++;
  if (!WSLen) {
    return (0);
  }
  if (!CensusOption) {
    if (WordStr[0] == 'P' && WordStr[1] == 'S') {
      WordStr[0] = '_';
    }
    if (WordStr[0] == 'P' && WordStr[1] == 'F') {
      WordStr[0] = '_';
    }
    for (i = 0; i < WSLen; i++) {
      if (WordStr[i] == 'D' && WordStr[i + 1] == 'G') {
        WordStr[i] = '_';
        i++;
        continue;
      }
      if (WordStr[i] == 'G' && WordStr[i + 1] == 'H') {
        WordStr[i] = '_';
        i++;
        continue;
      }
      if (WordStr[i] == 'K' && WordStr[i + 1] == 'N') {
        WordStr[i] = '_';
        i++;
        continue;
      }
      if (WordStr[i] == 'G' && WordStr[i + 1] == 'N') {
        WordStr[i] = '_';
        i++;
        continue;
      }
      if (WordStr[i] == 'M' && WordStr[i + 1] == 'B') {
        WordStr[i + 1] = '_';
        i++;
        continue;
      }
      if (WordStr[i] == 'P' && WordStr[i + 1] == 'H') {
        WordStr[i] = 'F';
        WordStr[i + 1] = '_';
        i++;
        continue;
      }
      if (WordStr[i] == 'T' && WordStr[i + 1] == 'C' && WordStr[i + 2] == 'H') {
        WordStr[i] = '_';
        i++;
        i++;
        continue;
      }
      if (WordStr[i] == 'M' && WordStr[i + 1] == 'P' &&
          (WordStr[i + 2] == 'S' || WordStr[i + 2] == 'T' ||
           WordStr[i + 2] == 'Z')) {
        WordStr[i + 1] = '_';
        i++;
      }
    }
  }
  for (p = p2 = WordStr; (*p); p++) {
    (*p2) = (*p);
    if ((*p2) != '_') {
      p2++;
    }
  }
  (*p2) = 0;
  FirstLetter = WordStr[0];
  if (FirstLetter == 'H' || FirstLetter == 'W') {
    WordStr[0] = '-';
  }
  if (CensusOption == 1) {
    for (p = &(WordStr[1]); (*p); p++) {
      if ((*p) == 'H' || (*p) == 'W') {
        (*p) = '.';
      }
    }
  }
  for (p = WordStr; (*p); p++) {
    if ((*p) == 'A' || (*p) == 'E' || (*p) == 'I' || (*p) == 'O' ||
        (*p) == 'U' || (*p) == 'Y' || (*p) == 'H' || (*p) == 'W') {
      (*p) = '0';
    }
    if ((*p) == 'B' || (*p) == 'P' || (*p) == 'F' || (*p) == 'V') {
      (*p) = '1';
    }
    if ((*p) == 'C' || (*p) == 'S' || (*p) == 'G' || (*p) == 'J' ||
        (*p) == 'K' || (*p) == 'Q' || (*p) == 'X' || (*p) == 'Z') {
      (*p) = '2';
    }
    if ((*p) == 'D' || (*p) == 'T') {
      (*p) = '3';
    }
    if ((*p) == 'L') {
      (*p) = '4';
    }
    if ((*p) == 'M' || (*p) == 'N') {
      (*p) = '5';
    }
    if ((*p) == 'R') {
      (*p) = '6';
    }
  }
  if (CensusOption == 1) {
    for (p = p2 = &WordStr[1]; (*p); p++) {
      (*p2) = (*p);
      if ((*p2) != '.') {
        p2++;
      }
    }
    (*p2) = 0;
  }
  for (p = p2 = &(WordStr[0]); (*p); p++) {
    (*p2) = (*p);
    if ((*p2) != p[1]) {
      p2++;
    }
  }
  (*p2) = 0;
  for (p = p2 = &WordStr[1]; (*p); p++) {
    (*p2) = (*p);
    if ((*p2) != ' ' && (*p2) != '0') {
      p2++;
    }
  }
  (*p2) = 0;
  for (WSLen = 0, p = WordStr; (*p); p++)
    WSLen++;
  for (i = WSLen; i < SoundExLen; i++) {
    WordStr[i] = '0';
  }
  WordStr[SoundExLen] = 0;
  WordStr[0] = FirstLetter;
  for (p2 = SoundEx, p = WordStr; (*p); p++, p2++) {
    (*p2) = (*p);
  }
  (*p2) = 0;
  return (SoundExLen);
}


x86 assembly (clang, -O0):
<SoundEx>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
mov    %ecx,-0x20(%rbp)
movl   $0x1f,-0x24(%rbp)
movl   $0x0,-0x58(%rbp)
movl   $0x0,-0x54(%rbp)
mov    -0x10(%rbp),%rax
movb   $0x0,(%rax)
cmpl   $0x0,-0x20(%rbp)
je     113f <SoundEx+0x3f>
movl   $0x4,-0x1c(%rbp)
cmpl   $0x0,-0x1c(%rbp)
je     114f <SoundEx+0x4f>
mov    -0x1c(%rbp),%eax
mov    %eax,-0x54(%rbp)
cmpl   $0xa,-0x54(%rbp)
jle    1160 <SoundEx+0x60>
movl   $0xa,-0x54(%rbp)
cmpl   $0x4,-0x54(%rbp)
jge    1171 <SoundEx+0x71>
movl   $0x4,-0x54(%rbp)
cmpq   $0x0,-0x18(%rbp)
jne    1188 <SoundEx+0x88>
movl   $0x0,-0x4(%rbp)
jmp    1bbe <SoundEx+0xabe>
mov    -0x18(%rbp),%rax
mov    %rax,-0x68(%rbp)
lea    -0x50(%rbp),%rax
mov    %rax,-0x70(%rbp)
movl   $0x0,-0x5c(%rbp)
mov    -0x68(%rbp),%rax
cmpb   $0x0,(%rax)
je     11ef <SoundEx+0xef>
mov    -0x5c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jl     11bd <SoundEx+0xbd>
jmp    11ef <SoundEx+0xef>
mov    -0x68(%rbp),%rax
mov    (%rax),%cl
mov    -0x70(%rbp),%rax
mov    %cl,(%rax)
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    119f <SoundEx+0x9f>
mov    -0x70(%rbp),%rax
movb   $0x0,(%rax)
lea    -0x50(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmpb   $0x0,(%rax)
je     124d <SoundEx+0x14d>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x61,%eax
jl     1237 <SoundEx+0x137>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x7a,%eax
jg     1237 <SoundEx+0x137>
mov    -0x68(%rbp),%rax
movsbl (%rax),%ecx
sub    $0x20,%ecx
mov    %cl,(%rax)
jmp    123c <SoundEx+0x13c>
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
jmp    11fe <SoundEx+0xfe>
lea    -0x50(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmpb   $0x0,(%rax)
je     129f <SoundEx+0x19f>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x41,%eax
jl     1282 <SoundEx+0x182>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5a,%eax
jle    1289 <SoundEx+0x189>
mov    -0x68(%rbp),%rax
movb   $0x20,(%rax)
jmp    128e <SoundEx+0x18e>
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
jmp    1255 <SoundEx+0x155>
movl   $0x0,-0x5c(%rbp)
lea    -0x50(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmpb   $0x0,(%rax)
je     132d <SoundEx+0x22d>
cmpl   $0x0,-0x5c(%rbp)
jne    12ff <SoundEx+0x1ff>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
je     12fa <SoundEx+0x1fa>
mov    -0x68(%rbp),%rax
mov    (%rax),%cl
mov    -0x70(%rbp),%rax
mov    %cl,(%rax)
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    1317 <SoundEx+0x217>
mov    -0x68(%rbp),%rax
mov    (%rax),%cl
mov    -0x70(%rbp),%rax
mov    %cl,(%rax)
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
jmp    131c <SoundEx+0x21c>
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
jmp    12b2 <SoundEx+0x1b2>
mov    -0x70(%rbp),%rax
movb   $0x0,(%rax)
movl   $0x0,-0x5c(%rbp)
lea    -0x50(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmpb   $0x0,(%rax)
je     136a <SoundEx+0x26a>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
jmp    1343 <SoundEx+0x243>
jmp    136f <SoundEx+0x26f>
cmpl   $0x0,-0x5c(%rbp)
je     13b1 <SoundEx+0x2b1>
movslq -0x5c(%rbp),%rax
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x20,%eax
jne    1399 <SoundEx+0x299>
movslq -0x5c(%rbp),%rax
movb   $0x0,-0x50(%rbp,%rax,1)
jmp    139e <SoundEx+0x29e>
jmp    13b1 <SoundEx+0x2b1>
jmp    13a3 <SoundEx+0x2a3>
mov    -0x5c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x5c(%rbp)
jmp    136f <SoundEx+0x26f>
movl   $0x0,-0x58(%rbp)
lea    -0x50(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmpb   $0x0,(%rax)
je     13e7 <SoundEx+0x2e7>
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
jmp    13c0 <SoundEx+0x2c0>
cmpl   $0x0,-0x58(%rbp)
jne    13fd <SoundEx+0x2fd>
movl   $0x0,-0x4(%rbp)
jmp    1bbe <SoundEx+0xabe>
cmpl   $0x0,-0x20(%rbp)
jne    16d7 <SoundEx+0x5d7>
movsbl -0x50(%rbp),%eax
cmp    $0x50,%eax
jne    1425 <SoundEx+0x325>
movsbl -0x4f(%rbp),%eax
cmp    $0x53,%eax
jne    1425 <SoundEx+0x325>
movb   $0x5f,-0x50(%rbp)
movsbl -0x50(%rbp),%eax
cmp    $0x50,%eax
jne    1443 <SoundEx+0x343>
movsbl -0x4f(%rbp),%eax
cmp    $0x46,%eax
jne    1443 <SoundEx+0x343>
movb   $0x5f,-0x50(%rbp)
movl   $0x0,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x58(%rbp),%eax
jge    16d2 <SoundEx+0x5d2>
movslq -0x5c(%rbp),%rax
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x44,%eax
jne    1495 <SoundEx+0x395>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x47,%eax
jne    1495 <SoundEx+0x395>
movslq -0x5c(%rbp),%rax
movb   $0x5f,-0x50(%rbp,%rax,1)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    16c4 <SoundEx+0x5c4>
movslq -0x5c(%rbp),%rax
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x47,%eax
jne    14d4 <SoundEx+0x3d4>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x48,%eax
jne    14d4 <SoundEx+0x3d4>
movslq -0x5c(%rbp),%rax
movb   $0x5f,-0x50(%rbp,%rax,1)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    16c4 <SoundEx+0x5c4>
movslq -0x5c(%rbp),%rax
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x4b,%eax
jne    1513 <SoundEx+0x413>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x4e,%eax
jne    1513 <SoundEx+0x413>
movslq -0x5c(%rbp),%rax
movb   $0x5f,-0x50(%rbp,%rax,1)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    16c4 <SoundEx+0x5c4>
movslq -0x5c(%rbp),%rax
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x47,%eax
jne    1552 <SoundEx+0x452>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x4e,%eax
jne    1552 <SoundEx+0x452>
movslq -0x5c(%rbp),%rax
movb   $0x5f,-0x50(%rbp,%rax,1)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    16c4 <SoundEx+0x5c4>
movslq -0x5c(%rbp),%rax
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x4d,%eax
jne    1595 <SoundEx+0x495>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x42,%eax
jne    1595 <SoundEx+0x495>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
cltq
movb   $0x5f,-0x50(%rbp,%rax,1)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    16c4 <SoundEx+0x5c4>
movslq -0x5c(%rbp),%rax
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x50,%eax
jne    15e1 <SoundEx+0x4e1>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x48,%eax
jne    15e1 <SoundEx+0x4e1>
movslq -0x5c(%rbp),%rax
movb   $0x46,-0x50(%rbp,%rax,1)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
cltq
movb   $0x5f,-0x50(%rbp,%rax,1)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    16c4 <SoundEx+0x5c4>
movslq -0x5c(%rbp),%rax
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x54,%eax
jne    163f <SoundEx+0x53f>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x43,%eax
jne    163f <SoundEx+0x53f>
mov    -0x5c(%rbp),%eax
add    $0x2,%eax
cltq
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x48,%eax
jne    163f <SoundEx+0x53f>
movslq -0x5c(%rbp),%rax
movb   $0x5f,-0x50(%rbp,%rax,1)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    16c4 <SoundEx+0x5c4>
movslq -0x5c(%rbp),%rax
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x4d,%eax
jne    16bf <SoundEx+0x5bf>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
cltq
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x50,%eax
jne    16bf <SoundEx+0x5bf>
mov    -0x5c(%rbp),%eax
add    $0x2,%eax
cltq
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x53,%eax
je     16a9 <SoundEx+0x5a9>
mov    -0x5c(%rbp),%eax
add    $0x2,%eax
cltq
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x54,%eax
je     16a9 <SoundEx+0x5a9>
mov    -0x5c(%rbp),%eax
add    $0x2,%eax
cltq
movsbl -0x50(%rbp,%rax,1),%eax
cmp    $0x5a,%eax
jne    16bf <SoundEx+0x5bf>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
cltq
movb   $0x5f,-0x50(%rbp,%rax,1)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    16c4 <SoundEx+0x5c4>
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    144a <SoundEx+0x34a>
jmp    16d7 <SoundEx+0x5d7>
lea    -0x50(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmpb   $0x0,(%rax)
je     172e <SoundEx+0x62e>
mov    -0x68(%rbp),%rax
mov    (%rax),%cl
mov    -0x70(%rbp),%rax
mov    %cl,(%rax)
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5f,%eax
je     1718 <SoundEx+0x618>
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
jmp    171d <SoundEx+0x61d>
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
jmp    16e3 <SoundEx+0x5e3>
mov    -0x70(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x50(%rbp),%al
mov    %al,-0x5d(%rbp)
movsbl -0x5d(%rbp),%eax
cmp    $0x48,%eax
je     1755 <SoundEx+0x655>
movsbl -0x5d(%rbp),%eax
cmp    $0x57,%eax
jne    1759 <SoundEx+0x659>
movb   $0x2d,-0x50(%rbp)
cmpl   $0x1,-0x20(%rbp)
jne    17be <SoundEx+0x6be>
lea    -0x50(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmpb   $0x0,(%rax)
je     17b9 <SoundEx+0x6b9>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x48,%eax
je     179c <SoundEx+0x69c>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x57,%eax
jne    17a3 <SoundEx+0x6a3>
mov    -0x68(%rbp),%rax
movb   $0x2e,(%rax)
jmp    17a8 <SoundEx+0x6a8>
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
jmp    176f <SoundEx+0x66f>
jmp    17be <SoundEx+0x6be>
lea    -0x50(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmpb   $0x0,(%rax)
je     19ba <SoundEx+0x8ba>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x41,%eax
je     1853 <SoundEx+0x753>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x45,%eax
je     1853 <SoundEx+0x753>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x49,%eax
je     1853 <SoundEx+0x753>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x4f,%eax
je     1853 <SoundEx+0x753>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x55,%eax
je     1853 <SoundEx+0x753>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x59,%eax
je     1853 <SoundEx+0x753>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x48,%eax
je     1853 <SoundEx+0x753>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x57,%eax
jne    185a <SoundEx+0x75a>
mov    -0x68(%rbp),%rax
movb   $0x30,(%rax)
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x42,%eax
je     189a <SoundEx+0x79a>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x50,%eax
je     189a <SoundEx+0x79a>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x46,%eax
je     189a <SoundEx+0x79a>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x56,%eax
jne    18a1 <SoundEx+0x7a1>
mov    -0x68(%rbp),%rax
movb   $0x31,(%rax)
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x43,%eax
je     1921 <SoundEx+0x821>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x53,%eax
je     1921 <SoundEx+0x821>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x47,%eax
je     1921 <SoundEx+0x821>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x4a,%eax
je     1921 <SoundEx+0x821>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x4b,%eax
je     1921 <SoundEx+0x821>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x51,%eax
je     1921 <SoundEx+0x821>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x58,%eax
je     1921 <SoundEx+0x821>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x5a,%eax
jne    1928 <SoundEx+0x828>
mov    -0x68(%rbp),%rax
movb   $0x32,(%rax)
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x44,%eax
je     1948 <SoundEx+0x848>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x54,%eax
jne    194f <SoundEx+0x84f>
mov    -0x68(%rbp),%rax
movb   $0x33,(%rax)
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x4c,%eax
jne    1966 <SoundEx+0x866>
mov    -0x68(%rbp),%rax
movb   $0x34,(%rax)
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x4d,%eax
je     1986 <SoundEx+0x886>
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x4e,%eax
jne    198d <SoundEx+0x88d>
mov    -0x68(%rbp),%rax
movb   $0x35,(%rax)
mov    -0x68(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x52,%eax
jne    19a4 <SoundEx+0x8a4>
mov    -0x68(%rbp),%rax
movb   $0x36,(%rax)
jmp    19a9 <SoundEx+0x8a9>
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
jmp    17c6 <SoundEx+0x6c6>
cmpl   $0x1,-0x20(%rbp)
jne    1a26 <SoundEx+0x926>
lea    -0x50(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmpb   $0x0,(%rax)
je     1a1f <SoundEx+0x91f>
mov    -0x68(%rbp),%rax
mov    (%rax),%cl
mov    -0x70(%rbp),%rax
mov    %cl,(%rax)
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x2e,%eax
je     1a09 <SoundEx+0x909>
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
jmp    1a0e <SoundEx+0x90e>
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
jmp    19d4 <SoundEx+0x8d4>
mov    -0x70(%rbp),%rax
movb   $0x0,(%rax)
lea    -0x50(%rbp),%rax
mov    %rax,-0x70(%rbp)
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmpb   $0x0,(%rax)
je     1a84 <SoundEx+0x984>
mov    -0x68(%rbp),%rax
mov    (%rax),%cl
mov    -0x70(%rbp),%rax
mov    %cl,(%rax)
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
mov    -0x68(%rbp),%rcx
movsbl 0x1(%rcx),%ecx
cmp    %ecx,%eax
je     1a6e <SoundEx+0x96e>
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
jmp    1a73 <SoundEx+0x973>
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
jmp    1a32 <SoundEx+0x932>
mov    -0x70(%rbp),%rax
movb   $0x0,(%rax)
lea    -0x50(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmpb   $0x0,(%rax)
je     1af6 <SoundEx+0x9f6>
mov    -0x68(%rbp),%rax
mov    (%rax),%cl
mov    -0x70(%rbp),%rax
mov    %cl,(%rax)
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x20,%eax
je     1ae0 <SoundEx+0x9e0>
mov    -0x70(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x30,%eax
je     1ae0 <SoundEx+0x9e0>
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
jmp    1ae5 <SoundEx+0x9e5>
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
jmp    1a9b <SoundEx+0x99b>
mov    -0x70(%rbp),%rax
movb   $0x0,(%rax)
movl   $0x0,-0x58(%rbp)
lea    -0x50(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmpb   $0x0,(%rax)
je     1b33 <SoundEx+0xa33>
mov    -0x58(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x58(%rbp)
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
jmp    1b0c <SoundEx+0xa0c>
mov    -0x58(%rbp),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x5c(%rbp),%eax
cmp    -0x54(%rbp),%eax
jge    1b5c <SoundEx+0xa5c>
movslq -0x5c(%rbp),%rax
movb   $0x30,-0x50(%rbp,%rax,1)
mov    -0x5c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x5c(%rbp)
jmp    1b39 <SoundEx+0xa39>
movslq -0x54(%rbp),%rax
movb   $0x0,-0x50(%rbp,%rax,1)
mov    -0x5d(%rbp),%al
mov    %al,-0x50(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x70(%rbp)
lea    -0x50(%rbp),%rax
mov    %rax,-0x68(%rbp)
mov    -0x68(%rbp),%rax
cmpb   $0x0,(%rax)
je     1bb1 <SoundEx+0xab1>
mov    -0x68(%rbp),%rax
mov    (%rax),%cl
mov    -0x70(%rbp),%rax
mov    %cl,(%rax)
mov    -0x68(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x68(%rbp)
mov    -0x70(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x70(%rbp)
jmp    1b7b <SoundEx+0xa7b>
mov    -0x70(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x54(%rbp),%eax
mov    %eax,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<SoundEx>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
sub    $0x20,%rsp
movb   $0x0,(%rdi)
test   %ecx,%ecx
mov    $0x4,%eax
cmovne %eax,%edx
cmp    $0xa,%edx
mov    $0xa,%r14d
cmovl  %edx,%r14d
cmp    $0x5,%r14d
cmovl  %eax,%r14d
xor    %eax,%eax
test   %rsi,%rsi
je     15ad <SoundEx+0x49d>
mov    %rdi,%r12
mov    %rsp,%rdx
mov    (%rsi),%bl
mov    %rdx,%rdi
test   %bl,%bl
je     117c <SoundEx+0x6c>
xor    %edi,%edi
nopw   0x0(%rax,%rax,1)
mov    %bl,(%rsp,%rdi,1)
movzbl 0x1(%rsi,%rdi,1),%ebx
lea    0x1(%rdi),%rbp
test   %bl,%bl
je     1178 <SoundEx+0x68>
cmp    $0x1e,%edi
mov    %rbp,%rdi
jb     1160 <SoundEx+0x50>
lea    (%rsp,%rbp,1),%rdi
movb   $0x0,(%rdi)
mov    (%rsp),%sil
test   %sil,%sil
je     1223 <SoundEx+0x113>
lea    0x1(%rsp),%rdi
jmp    11ac <SoundEx+0x9c>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
movzbl (%rdi),%esi
add    $0x1,%rdi
test   %sil,%sil
je     11bf <SoundEx+0xaf>
lea    -0x61(%rsi),%ebp
cmp    $0x19,%bpl
ja     11a0 <SoundEx+0x90>
add    $0xe0,%sil
mov    %sil,-0x1(%rdi)
jmp    11a0 <SoundEx+0x90>
mov    (%rsp),%bl
test   %bl,%bl
je     1223 <SoundEx+0x113>
lea    0x1(%rsp),%rsi
jmp    11db <SoundEx+0xcb>
nopl   (%rax)
movzbl (%rsi),%ebx
add    $0x1,%rsi
test   %bl,%bl
je     11e9 <SoundEx+0xd9>
add    $0xa5,%bl
cmp    $0xe5,%bl
ja     11d0 <SoundEx+0xc0>
movb   $0x20,-0x1(%rsi)
jmp    11d0 <SoundEx+0xc0>
mov    (%rsp),%bl
test   %bl,%bl
je     1223 <SoundEx+0x113>
mov    %rsp,%rdx
lea    0x1(%rsp),%rsi
xor    %edi,%edi
jmp    1216 <SoundEx+0x106>
nopl   0x0(%rax)
mov    %bl,(%rdx)
add    $0x1,%rdx
mov    $0x1,%edi
movzbl (%rsi),%ebx
add    $0x1,%rsi
test   %bl,%bl
je     1223 <SoundEx+0x113>
test   %edi,%edi
jne    1200 <SoundEx+0xf0>
cmp    $0x20,%bl
jne    1200 <SoundEx+0xf0>
xor    %edi,%edi
jmp    120b <SoundEx+0xfb>
movb   $0x0,(%rdx)
cmpb   $0x0,(%rsp)
je     15ad <SoundEx+0x49d>
xor    %eax,%eax
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmpb   $0x0,0x1(%rsp,%rax,1)
lea    0x1(%rax),%rax
jne    1240 <SoundEx+0x130>
jmp    125c <SoundEx+0x14c>
nopl   (%rax)
movb   $0x0,(%rsp,%rax,1)
add    $0xffffffffffffffff,%rax
test   %eax,%eax
je     1262 <SoundEx+0x152>
cmpb   $0x20,(%rsp,%rax,1)
je     1250 <SoundEx+0x140>
mov    (%rsp),%dl
test   %dl,%dl
je     13ab <SoundEx+0x29b>
lea    0x1(%rsp),%rsi
mov    $0xffffffff,%eax
nopw   0x0(%rax,%rax,1)
add    $0x1,%eax
cmpb   $0x0,(%rsi)
lea    0x1(%rsi),%rsi
jne    1280 <SoundEx+0x170>
test   %ecx,%ecx
jne    13b5 <SoundEx+0x2a5>
mov    0x1(%rsp),%bl
cmp    $0x50,%dl
jne    12a2 <SoundEx+0x192>
cmp    $0x53,%bl
je     12ac <SoundEx+0x19c>
cmp    $0x50,%dl
jne    12b2 <SoundEx+0x1a2>
cmp    $0x46,%bl
jne    12b2 <SoundEx+0x1a2>
movb   $0x5f,(%rsp)
mov    $0x5f,%dl
xor    %ebx,%ebx
lea    0xd45(%rip),%r10
mov    %rsp,%r9
mov    $0x83,%r8d
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
add    $0xbc,%dl
cmp    $0x10,%dl
ja     1397 <SoundEx+0x287>
movslq %ebx,%rsi
lea    (%rsp,%rsi,1),%rdi
movzbl %dl,%edx
movslq (%r10,%rdx,4),%rdx
add    %r10,%rdx
jmp    *%rdx
cmpb   $0x47,0x1(%rsp,%rsi,1)
je     1323 <SoundEx+0x213>
jmp    1397 <SoundEx+0x287>
movzbl 0x1(%rsp,%rsi,1),%r11d
add    $0x1,%rsi
mov    %esi,%ebp
cmp    $0x48,%r11b
je     1392 <SoundEx+0x282>
cmp    $0x4e,%r11b
je     1392 <SoundEx+0x282>
jmp    1397 <SoundEx+0x287>
cmpb   $0x4e,0x1(%rsp,%rsi,1)
jne    1397 <SoundEx+0x287>
add    $0x1,%rsi
jmp    1390 <SoundEx+0x280>
lea    0x1(%rsi),%rbp
lea    (%rsp,%rsi,1),%rdi
add    $0x1,%rdi
movzbl 0x1(%rsp,%rsi,1),%edx
cmp    $0x42,%dl
je     1392 <SoundEx+0x282>
cmp    $0x50,%dl
jne    1397 <SoundEx+0x287>
movzbl 0x2(%rsi,%r9,1),%esi
add    $0xad,%sil
cmp    $0x7,%sil
ja     1397 <SoundEx+0x287>
movzbl %sil,%edx
bt     %edx,%r8d
jb     1392 <SoundEx+0x282>
jmp    1397 <SoundEx+0x287>
cmpb   $0x48,0x1(%rsp,%rsi,1)
jne    1397 <SoundEx+0x287>
movb   $0x46,(%rdi)
lea    (%rsp,%rsi,1),%rdi
add    $0x1,%rdi
add    $0x1,%rsi
jmp    1390 <SoundEx+0x280>
cmpb   $0x43,0x1(%rsi,%r9,1)
jne    1397 <SoundEx+0x287>
cmpb   $0x48,0x2(%rsp,%rsi,1)
jne    1397 <SoundEx+0x287>
add    $0x2,%rsi
nopl   0x0(%rax,%rax,1)
mov    %esi,%ebp
movb   $0x5f,(%rdi)
mov    %ebp,%ebx
cmp    %eax,%ebx
jge    13b2 <SoundEx+0x2a2>
movslq %ebx,%rbx
add    $0x1,%rbx
movzbl (%rsp,%rbx,1),%edx
jmp    12d0 <SoundEx+0x1c0>
xor    %eax,%eax
jmp    15ad <SoundEx+0x49d>
mov    (%rsp),%dl
mov    %rsp,%rax
test   %dl,%dl
je     13e9 <SoundEx+0x2d9>
lea    0x1(%rsp),%rsi
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %dl,(%rax)
xor    %edi,%edi
cmp    $0x5f,%dl
setne  %dil
add    %rdi,%rax
movzbl (%rsi),%edx
add    $0x1,%rsi
test   %dl,%dl
jne    13d0 <SoundEx+0x2c0>
movb   $0x0,(%rax)
mov    (%rsp),%r15b
cmp    $0x57,%r15b
je     13fc <SoundEx+0x2ec>
cmp    $0x48,%r15b
jne    1400 <SoundEx+0x2f0>
movb   $0x2d,(%rsp)
cmp    $0x1,%ecx
jne    1428 <SoundEx+0x318>
lea    0x1(%rsp),%rax
jmp    1417 <SoundEx+0x307>
nopl   0x0(%rax)
movb   $0x2e,(%rax)
add    $0x1,%rax
movzbl (%rax),%edx
cmp    $0x48,%dl
je     1410 <SoundEx+0x300>
cmp    $0x57,%dl
je     1410 <SoundEx+0x300>
test   %dl,%dl
jne    1413 <SoundEx+0x303>
mov    %rsp,%rax
lea    0xc12(%rip),%rdi
jmp    1446 <SoundEx+0x336>
mov    $0x34,%bl
cs nopw 0x0(%rax,%rax,1)
mov    %bl,(%rax)
add    $0x1,%rax
movzbl (%rax),%esi
cmp    $0x5a,%rsi
ja     1462 <SoundEx+0x352>
mov    $0x32,%bl
mov    $0x30,%dl
movslq (%rdi,%rsi,4),%rbp
add    %rdi,%rbp
jmp    *%rbp
mov    $0x31,%dl
mov    %dl,(%rax)
mov    %edx,%esi
mov    $0x33,%bl
cmp    $0x44,%sil
je     1440 <SoundEx+0x330>
cmp    $0x54,%sil
je     1440 <SoundEx+0x330>
cmp    $0x4c,%sil
je     1434 <SoundEx+0x324>
lea    -0x4d(%rsi),%edx
mov    $0x35,%bl
cmp    $0x2,%dl
jb     1440 <SoundEx+0x330>
mov    $0x36,%bl
cmp    $0x52,%sil
je     1440 <SoundEx+0x330>
jmp    1442 <SoundEx+0x332>
cmp    $0x1,%ecx
jne    14cc <SoundEx+0x3bc>
lea    0x1(%rsp),%rax
mov    0x1(%rsp),%dl
test   %dl,%dl
je     14c9 <SoundEx+0x3b9>
lea    0x2(%rsp),%rcx
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
mov    %dl,(%rax)
xor    %esi,%esi
cmp    $0x2e,%dl
setne  %sil
add    %rsi,%rax
movzbl (%rcx),%edx
add    $0x1,%rcx
test   %dl,%dl
jne    14b0 <SoundEx+0x3a0>
movb   $0x0,(%rax)
mov    (%rsp),%dl
mov    %rsp,%rax
test   %dl,%dl
je     14fa <SoundEx+0x3ea>
lea    0x1(%rsp),%rcx
nopl   0x0(%rax,%rax,1)
mov    %dl,(%rax)
movzbl (%rcx),%ebx
xor    %esi,%esi
cmp    %bl,%dl
setne  %sil
add    %rsi,%rax
add    $0x1,%rcx
mov    %ebx,%edx
test   %bl,%bl
jne    14e0 <SoundEx+0x3d0>
movb   $0x0,(%rax)
lea    0x1(%rsp),%rax
mov    0x1(%rsp),%dl
test   %dl,%dl
je     153b <SoundEx+0x42b>
lea    0x2(%rsp),%rcx
jmp    152b <SoundEx+0x41b>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax,%rax,1)
movzbl (%rcx),%edx
add    $0x1,%rcx
test   %dl,%dl
je     153b <SoundEx+0x42b>
mov    %dl,(%rax)
or     $0x10,%dl
cmp    $0x30,%dl
je     1520 <SoundEx+0x410>
add    $0x1,%rax
jmp    1520 <SoundEx+0x410>
movb   $0x0,(%rax)
cmpb   $0x0,(%rsp)
je     1562 <SoundEx+0x452>
xor    %edx,%edx
cs nopw 0x0(%rax,%rax,1)
cmpb   $0x0,0x1(%rsp,%rdx,1)
lea    0x1(%rdx),%rdx
jne    1550 <SoundEx+0x440>
cmp    %r14d,%edx
jl     1564 <SoundEx+0x454>
jmp    157d <SoundEx+0x46d>
xor    %edx,%edx
mov    %edx,%eax
lea    (%rsp,%rax,1),%rdi
not    %edx
add    %r14d,%edx
add    $0x1,%rdx
mov    $0x30,%esi
call   1030 <memset@plt>
mov    %r14d,%eax
movb   $0x0,(%rsp,%rax,1)
test   %r15b,%r15b
je     15a5 <SoundEx+0x495>
lea    0x1(%rsp),%rax
xchg   %ax,%ax
mov    %r15b,(%r12)
add    $0x1,%r12
movzbl (%rax),%r15d
add    $0x1,%rax
test   %r15b,%r15b
jne    1590 <SoundEx+0x480>
movb   $0x0,(%r12)
mov    %r14d,%eax
add    $0x20,%rsp
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @SoundEx(i8* %0, i8* %1, i32 %2, i32 %3) {
%5 = alloca i32
%6 = alloca i8*
%7 = alloca i8*
%8 = alloca i32
%9 = alloca i32
%10 = alloca i32
%11 = alloca [32 x i8]
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i8
%16 = alloca i8*
%17 = alloca i8*
store i8* %0, i8** %6
store i8* %1, i8** %7
store i32 %2, i32* %8
store i32 %3, i32* %9
store i32 31, i32* %10
store i32 0, i32* %13
store i32 0, i32* %12
%18 = load i8*, i8** %6
%19 = getelementptr inbounds i8, i8* %18, i64 0
store i8 0, i8* %19
%20 = load i32, i32* %9
%21 = icmp ne i32 %20, 0
br i1 %21, label %22, label %23
22: ; preds = %4
store i32 4, i32* %8
br label %23
23: ; preds = %22, %4
%24 = load i32, i32* %8
%25 = icmp ne i32 %24, 0
br i1 %25, label %26, label %28
26: ; preds = %23
%27 = load i32, i32* %8
store i32 %27, i32* %12
br label %28
28: ; preds = %26, %23
%29 = load i32, i32* %12
%30 = icmp sgt i32 %29, 10
br i1 %30, label %31, label %32
31: ; preds = %28
store i32 10, i32* %12
br label %32
32: ; preds = %31, %28
%33 = load i32, i32* %12
%34 = icmp slt i32 %33, 4
br i1 %34, label %35, label %36
35: ; preds = %32
store i32 4, i32* %12
br label %36
36: ; preds = %35, %32
%37 = load i8*, i8** %7
%38 = icmp ne i8* %37, null
br i1 %38, label %40, label %39
39: ; preds = %36
store i32 0, i32* %5
br label %781
40: ; preds = %36
%41 = load i8*, i8** %7
store i8* %41, i8** %16
%42 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8* %42, i8** %17
store i32 0, i32* %14
br label %43
43: ; preds = %56, %40
%44 = load i8*, i8** %16
%45 = load i8, i8* %44
%46 = icmp ne i8 %45, 0
br i1 %46, label %47, label %63
47: ; preds = %43
%48 = load i32, i32* %14
%49 = load i32, i32* %10
%50 = icmp sge i32 %48, %49
br i1 %50, label %51, label %52
51: ; preds = %47
br label %63
52: ; preds = %47
%53 = load i8*, i8** %16
%54 = load i8, i8* %53
%55 = load i8*, i8** %17
store i8 %54, i8* %55
br label %56
56: ; preds = %52
%57 = load i8*, i8** %16
%58 = getelementptr inbounds i8, i8* %57, i32 1
store i8* %58, i8** %16
%59 = load i8*, i8** %17
%60 = getelementptr inbounds i8, i8* %59, i32 1
store i8* %60, i8** %17
%61 = load i32, i32* %14
%62 = add nsw i32 %61, 1
store i32 %62, i32* %14
br label %43
63: ; preds = %51, %43
%64 = load i8*, i8** %17
store i8 0, i8* %64
%65 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8* %65, i8** %16
br label %66
66: ; preds = %87, %63
%67 = load i8*, i8** %16
%68 = load i8, i8* %67
%69 = icmp ne i8 %68, 0
br i1 %69, label %70, label %90
70: ; preds = %66
%71 = load i8*, i8** %16
%72 = load i8, i8* %71
%73 = sext i8 %72 to i32
%74 = icmp sge i32 %73, 97
br i1 %74, label %75, label %86
75: ; preds = %70
%76 = load i8*, i8** %16
%77 = load i8, i8* %76
%78 = sext i8 %77 to i32
%79 = icmp sle i32 %78, 122
br i1 %79, label %80, label %86
80: ; preds = %75
%81 = load i8*, i8** %16
%82 = load i8, i8* %81
%83 = sext i8 %82 to i32
%84 = sub nsw i32 %83, 32
%85 = trunc i32 %84 to i8
store i8 %85, i8* %81
br label %86
86: ; preds = %80, %75, %70
br label %87
87: ; preds = %86
%88 = load i8*, i8** %16
%89 = getelementptr inbounds i8, i8* %88, i32 1
store i8* %89, i8** %16
br label %66
90: ; preds = %66
%91 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8* %91, i8** %16
br label %92
92: ; preds = %109, %90
%93 = load i8*, i8** %16
%94 = load i8, i8* %93
%95 = icmp ne i8 %94, 0
br i1 %95, label %96, label %112
96: ; preds = %92
%97 = load i8*, i8** %16
%98 = load i8, i8* %97
%99 = sext i8 %98 to i32
%100 = icmp slt i32 %99, 65
br i1 %100, label %106, label %101
101: ; preds = %96
%102 = load i8*, i8** %16
%103 = load i8, i8* %102
%104 = sext i8 %103 to i32
%105 = icmp sgt i32 %104, 90
br i1 %105, label %106, label %108
106: ; preds = %101, %96
%107 = load i8*, i8** %16
store i8 32, i8* %107
br label %108
108: ; preds = %106, %101
br label %109
109: ; preds = %108
%110 = load i8*, i8** %16
%111 = getelementptr inbounds i8, i8* %110, i32 1
store i8* %111, i8** %16
br label %92
112: ; preds = %92
store i32 0, i32* %14
%113 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8* %113, i8** %17
store i8* %113, i8** %16
br label %114
114: ; preds = %142, %112
%115 = load i8*, i8** %16
%116 = load i8, i8* %115
%117 = icmp ne i8 %116, 0
br i1 %117, label %118, label %145
118: ; preds = %114
%119 = load i32, i32* %14
%120 = icmp ne i32 %119, 0
br i1 %120, label %135, label %121
121: ; preds = %118
%122 = load i8*, i8** %16
%123 = load i8, i8* %122
%124 = sext i8 %123 to i32
%125 = icmp ne i32 %124, 32
br i1 %125, label %126, label %134
126: ; preds = %121
%127 = load i8*, i8** %16
%128 = load i8, i8* %127
%129 = load i8*, i8** %17
store i8 %128, i8* %129
%130 = load i8*, i8** %17
%131 = getelementptr inbounds i8, i8* %130, i32 1
store i8* %131, i8** %17
%132 = load i32, i32* %14
%133 = add nsw i32 %132, 1
store i32 %133, i32* %14
br label %134
134: ; preds = %126, %121
br label %141
135: ; preds = %118
%136 = load i8*, i8** %16
%137 = load i8, i8* %136
%138 = load i8*, i8** %17
store i8 %137, i8* %138
%139 = load i8*, i8** %17
%140 = getelementptr inbounds i8, i8* %139, i32 1
store i8* %140, i8** %17
br label %141
141: ; preds = %135, %134
br label %142
142: ; preds = %141
%143 = load i8*, i8** %16
%144 = getelementptr inbounds i8, i8* %143, i32 1
store i8* %144, i8** %16
br label %114
145: ; preds = %114
%146 = load i8*, i8** %17
store i8 0, i8* %146
store i32 0, i32* %14
%147 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8* %147, i8** %16
br label %148
148: ; preds = %155, %145
%149 = load i8*, i8** %16
%150 = load i8, i8* %149
%151 = icmp ne i8 %150, 0
br i1 %151, label %152, label %158
152: ; preds = %148
%153 = load i32, i32* %14
%154 = add nsw i32 %153, 1
store i32 %154, i32* %14
br label %155
155: ; preds = %152
%156 = load i8*, i8** %16
%157 = getelementptr inbounds i8, i8* %156, i32 1
store i8* %157, i8** %16
br label %148
158: ; preds = %148
br label %159
159: ; preds = %175, %158
%160 = load i32, i32* %14
%161 = icmp ne i32 %160, 0
br i1 %161, label %162, label %178
162: ; preds = %159
%163 = load i32, i32* %14
%164 = sext i32 %163 to i64
%165 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %164
%166 = load i8, i8* %165
%167 = sext i8 %166 to i32
%168 = icmp eq i32 %167, 32
br i1 %168, label %169, label %173
169: ; preds = %162
%170 = load i32, i32* %14
%171 = sext i32 %170 to i64
%172 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %171
store i8 0, i8* %172
br label %174
173: ; preds = %162
br label %178
174: ; preds = %169
br label %175
175: ; preds = %174
%176 = load i32, i32* %14
%177 = add nsw i32 %176, -1
store i32 %177, i32* %14
br label %159
178: ; preds = %173, %159
store i32 0, i32* %13
%179 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8* %179, i8** %16
br label %180
180: ; preds = %187, %178
%181 = load i8*, i8** %16
%182 = load i8, i8* %181
%183 = icmp ne i8 %182, 0
br i1 %183, label %184, label %190
184: ; preds = %180
%185 = load i32, i32* %13
%186 = add nsw i32 %185, 1
store i32 %186, i32* %13
br label %187
187: ; preds = %184
%188 = load i8*, i8** %16
%189 = getelementptr inbounds i8, i8* %188, i32 1
store i8* %189, i8** %16
br label %180
190: ; preds = %180
%191 = load i32, i32* %13
%192 = icmp ne i32 %191, 0
br i1 %192, label %194, label %193
193: ; preds = %190
store i32 0, i32* %5
br label %781
194: ; preds = %190
%195 = load i32, i32* %9
%196 = icmp ne i32 %195, 0
br i1 %196, label %439, label %197
197: ; preds = %194
%198 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
%199 = load i8, i8* %198
%200 = sext i8 %199 to i32
%201 = icmp eq i32 %200, 80
br i1 %201, label %202, label %209
202: ; preds = %197
%203 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 1
%204 = load i8, i8* %203
%205 = sext i8 %204 to i32
%206 = icmp eq i32 %205, 83
br i1 %206, label %207, label %209
207: ; preds = %202
%208 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8 95, i8* %208
br label %209
209: ; preds = %207, %202, %197
%210 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
%211 = load i8, i8* %210
%212 = sext i8 %211 to i32
%213 = icmp eq i32 %212, 80
br i1 %213, label %214, label %221
214: ; preds = %209
%215 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 1
%216 = load i8, i8* %215
%217 = sext i8 %216 to i32
%218 = icmp eq i32 %217, 70
br i1 %218, label %219, label %221
219: ; preds = %214
%220 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8 95, i8* %220
br label %221
221: ; preds = %219, %214, %209
store i32 0, i32* %14
br label %222
222: ; preds = %435, %221
%223 = load i32, i32* %14
%224 = load i32, i32* %13
%225 = icmp slt i32 %223, %224
br i1 %225, label %226, label %438
226: ; preds = %222
%227 = load i32, i32* %14
%228 = sext i32 %227 to i64
%229 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %228
%230 = load i8, i8* %229
%231 = sext i8 %230 to i32
%232 = icmp eq i32 %231, 68
br i1 %232, label %233, label %247
233: ; preds = %226
%234 = load i32, i32* %14
%235 = add nsw i32 %234, 1
%236 = sext i32 %235 to i64
%237 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %236
%238 = load i8, i8* %237
%239 = sext i8 %238 to i32
%240 = icmp eq i32 %239, 71
br i1 %240, label %241, label %247
241: ; preds = %233
%242 = load i32, i32* %14
%243 = sext i32 %242 to i64
%244 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %243
store i8 95, i8* %244
%245 = load i32, i32* %14
%246 = add nsw i32 %245, 1
store i32 %246, i32* %14
br label %435
247: ; preds = %233, %226
%248 = load i32, i32* %14
%249 = sext i32 %248 to i64
%250 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %249
%251 = load i8, i8* %250
%252 = sext i8 %251 to i32
%253 = icmp eq i32 %252, 71
br i1 %253, label %254, label %268
254: ; preds = %247
%255 = load i32, i32* %14
%256 = add nsw i32 %255, 1
%257 = sext i32 %256 to i64
%258 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %257
%259 = load i8, i8* %258
%260 = sext i8 %259 to i32
%261 = icmp eq i32 %260, 72
br i1 %261, label %262, label %268
262: ; preds = %254
%263 = load i32, i32* %14
%264 = sext i32 %263 to i64
%265 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %264
store i8 95, i8* %265
%266 = load i32, i32* %14
%267 = add nsw i32 %266, 1
store i32 %267, i32* %14
br label %435
268: ; preds = %254, %247
%269 = load i32, i32* %14
%270 = sext i32 %269 to i64
%271 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %270
%272 = load i8, i8* %271
%273 = sext i8 %272 to i32
%274 = icmp eq i32 %273, 75
br i1 %274, label %275, label %289
275: ; preds = %268
%276 = load i32, i32* %14
%277 = add nsw i32 %276, 1
%278 = sext i32 %277 to i64
%279 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %278
%280 = load i8, i8* %279
%281 = sext i8 %280 to i32
%282 = icmp eq i32 %281, 78
br i1 %282, label %283, label %289
283: ; preds = %275
%284 = load i32, i32* %14
%285 = sext i32 %284 to i64
%286 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %285
store i8 95, i8* %286
%287 = load i32, i32* %14
%288 = add nsw i32 %287, 1
store i32 %288, i32* %14
br label %435
289: ; preds = %275, %268
%290 = load i32, i32* %14
%291 = sext i32 %290 to i64
%292 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %291
%293 = load i8, i8* %292
%294 = sext i8 %293 to i32
%295 = icmp eq i32 %294, 71
br i1 %295, label %296, label %310
296: ; preds = %289
%297 = load i32, i32* %14
%298 = add nsw i32 %297, 1
%299 = sext i32 %298 to i64
%300 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %299
%301 = load i8, i8* %300
%302 = sext i8 %301 to i32
%303 = icmp eq i32 %302, 78
br i1 %303, label %304, label %310
304: ; preds = %296
%305 = load i32, i32* %14
%306 = sext i32 %305 to i64
%307 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %306
store i8 95, i8* %307
%308 = load i32, i32* %14
%309 = add nsw i32 %308, 1
store i32 %309, i32* %14
br label %435
310: ; preds = %296, %289
%311 = load i32, i32* %14
%312 = sext i32 %311 to i64
%313 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %312
%314 = load i8, i8* %313
%315 = sext i8 %314 to i32
%316 = icmp eq i32 %315, 77
br i1 %316, label %317, label %332
317: ; preds = %310
%318 = load i32, i32* %14
%319 = add nsw i32 %318, 1
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %320
%322 = load i8, i8* %321
%323 = sext i8 %322 to i32
%324 = icmp eq i32 %323, 66
br i1 %324, label %325, label %332
325: ; preds = %317
%326 = load i32, i32* %14
%327 = add nsw i32 %326, 1
%328 = sext i32 %327 to i64
%329 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %328
store i8 95, i8* %329
%330 = load i32, i32* %14
%331 = add nsw i32 %330, 1
store i32 %331, i32* %14
br label %435
332: ; preds = %317, %310
%333 = load i32, i32* %14
%334 = sext i32 %333 to i64
%335 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %334
%336 = load i8, i8* %335
%337 = sext i8 %336 to i32
%338 = icmp eq i32 %337, 80
br i1 %338, label %339, label %357
339: ; preds = %332
%340 = load i32, i32* %14
%341 = add nsw i32 %340, 1
%342 = sext i32 %341 to i64
%343 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %342
%344 = load i8, i8* %343
%345 = sext i8 %344 to i32
%346 = icmp eq i32 %345, 72
br i1 %346, label %347, label %357
347: ; preds = %339
%348 = load i32, i32* %14
%349 = sext i32 %348 to i64
%350 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %349
store i8 70, i8* %350
%351 = load i32, i32* %14
%352 = add nsw i32 %351, 1
%353 = sext i32 %352 to i64
%354 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %353
store i8 95, i8* %354
%355 = load i32, i32* %14
%356 = add nsw i32 %355, 1
store i32 %356, i32* %14
br label %435
357: ; preds = %339, %332
%358 = load i32, i32* %14
%359 = sext i32 %358 to i64
%360 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %359
%361 = load i8, i8* %360
%362 = sext i8 %361 to i32
%363 = icmp eq i32 %362, 84
br i1 %363, label %364, label %388
364: ; preds = %357
%365 = load i32, i32* %14
%366 = add nsw i32 %365, 1
%367 = sext i32 %366 to i64
%368 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %367
%369 = load i8, i8* %368
%370 = sext i8 %369 to i32
%371 = icmp eq i32 %370, 67
br i1 %371, label %372, label %388
372: ; preds = %364
%373 = load i32, i32* %14
%374 = add nsw i32 %373, 2
%375 = sext i32 %374 to i64
%376 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %375
%377 = load i8, i8* %376
%378 = sext i8 %377 to i32
%379 = icmp eq i32 %378, 72
br i1 %379, label %380, label %388
380: ; preds = %372
%381 = load i32, i32* %14
%382 = sext i32 %381 to i64
%383 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %382
store i8 95, i8* %383
%384 = load i32, i32* %14
%385 = add nsw i32 %384, 1
store i32 %385, i32* %14
%386 = load i32, i32* %14
%387 = add nsw i32 %386, 1
store i32 %387, i32* %14
br label %435
388: ; preds = %372, %364, %357
%389 = load i32, i32* %14
%390 = sext i32 %389 to i64
%391 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %390
%392 = load i8, i8* %391
%393 = sext i8 %392 to i32
%394 = icmp eq i32 %393, 77
br i1 %394, label %395, label %434
395: ; preds = %388
%396 = load i32, i32* %14
%397 = add nsw i32 %396, 1
%398 = sext i32 %397 to i64
%399 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %398
%400 = load i8, i8* %399
%401 = sext i8 %400 to i32
%402 = icmp eq i32 %401, 80
br i1 %402, label %403, label %434
403: ; preds = %395
%404 = load i32, i32* %14
%405 = add nsw i32 %404, 2
%406 = sext i32 %405 to i64
%407 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %406
%408 = load i8, i8* %407
%409 = sext i8 %408 to i32
%410 = icmp eq i32 %409, 83
br i1 %410, label %427, label %411
411: ; preds = %403
%412 = load i32, i32* %14
%413 = add nsw i32 %412, 2
%414 = sext i32 %413 to i64
%415 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %414
%416 = load i8, i8* %415
%417 = sext i8 %416 to i32
%418 = icmp eq i32 %417, 84
br i1 %418, label %427, label %419
419: ; preds = %411
%420 = load i32, i32* %14
%421 = add nsw i32 %420, 2
%422 = sext i32 %421 to i64
%423 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %422
%424 = load i8, i8* %423
%425 = sext i8 %424 to i32
%426 = icmp eq i32 %425, 90
br i1 %426, label %427, label %434
427: ; preds = %419, %411, %403
%428 = load i32, i32* %14
%429 = add nsw i32 %428, 1
%430 = sext i32 %429 to i64
%431 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %430
store i8 95, i8* %431
%432 = load i32, i32* %14
%433 = add nsw i32 %432, 1
store i32 %433, i32* %14
br label %434
434: ; preds = %427, %419, %395, %388
br label %435
435: ; preds = %434, %380, %347, %325, %304, %283, %262, %241
%436 = load i32, i32* %14
%437 = add nsw i32 %436, 1
store i32 %437, i32* %14
br label %222
438: ; preds = %222
br label %439
439: ; preds = %438, %194
%440 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8* %440, i8** %17
store i8* %440, i8** %16
br label %441
441: ; preds = %457, %439
%442 = load i8*, i8** %16
%443 = load i8, i8* %442
%444 = icmp ne i8 %443, 0
br i1 %444, label %445, label %460
445: ; preds = %441
%446 = load i8*, i8** %16
%447 = load i8, i8* %446
%448 = load i8*, i8** %17
store i8 %447, i8* %448
%449 = load i8*, i8** %17
%450 = load i8, i8* %449
%451 = sext i8 %450 to i32
%452 = icmp ne i32 %451, 95
br i1 %452, label %453, label %456
453: ; preds = %445
%454 = load i8*, i8** %17
%455 = getelementptr inbounds i8, i8* %454, i32 1
store i8* %455, i8** %17
br label %456
456: ; preds = %453, %445
br label %457
457: ; preds = %456
%458 = load i8*, i8** %16
%459 = getelementptr inbounds i8, i8* %458, i32 1
store i8* %459, i8** %16
br label %441
460: ; preds = %441
%461 = load i8*, i8** %17
store i8 0, i8* %461
%462 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
%463 = load i8, i8* %462
store i8 %463, i8* %15
%464 = load i8, i8* %15
%465 = sext i8 %464 to i32
%466 = icmp eq i32 %465, 72
br i1 %466, label %471, label %467
467: ; preds = %460
%468 = load i8, i8* %15
%469 = sext i8 %468 to i32
%470 = icmp eq i32 %469, 87
br i1 %470, label %471, label %473
471: ; preds = %467, %460
%472 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8 45, i8* %472
br label %473
473: ; preds = %471, %467
%474 = load i32, i32* %9
%475 = icmp eq i32 %474, 1
br i1 %475, label %476, label %499
476: ; preds = %473
%477 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 1
store i8* %477, i8** %16
br label %478
478: ; preds = %495, %476
%479 = load i8*, i8** %16
%480 = load i8, i8* %479
%481 = icmp ne i8 %480, 0
br i1 %481, label %482, label %498
482: ; preds = %478
%483 = load i8*, i8** %16
%484 = load i8, i8* %483
%485 = sext i8 %484 to i32
%486 = icmp eq i32 %485, 72
br i1 %486, label %492, label %487
487: ; preds = %482
%488 = load i8*, i8** %16
%489 = load i8, i8* %488
%490 = sext i8 %489 to i32
%491 = icmp eq i32 %490, 87
br i1 %491, label %492, label %494
492: ; preds = %487, %482
%493 = load i8*, i8** %16
store i8 46, i8* %493
br label %494
494: ; preds = %492, %487
br label %495
495: ; preds = %494
%496 = load i8*, i8** %16
%497 = getelementptr inbounds i8, i8* %496, i32 1
store i8* %497, i8** %16
br label %478
498: ; preds = %478
br label %499
499: ; preds = %498, %473
%500 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8* %500, i8** %16
br label %501
501: ; preds = %650, %499
%502 = load i8*, i8** %16
%503 = load i8, i8* %502
%504 = icmp ne i8 %503, 0
br i1 %504, label %505, label %653
505: ; preds = %501
%506 = load i8*, i8** %16
%507 = load i8, i8* %506
%508 = sext i8 %507 to i32
%509 = icmp eq i32 %508, 65
br i1 %509, label %545, label %510
510: ; preds = %505
%511 = load i8*, i8** %16
%512 = load i8, i8* %511
%513 = sext i8 %512 to i32
%514 = icmp eq i32 %513, 69
br i1 %514, label %545, label %515
515: ; preds = %510
%516 = load i8*, i8** %16
%517 = load i8, i8* %516
%518 = sext i8 %517 to i32
%519 = icmp eq i32 %518, 73
br i1 %519, label %545, label %520
520: ; preds = %515
%521 = load i8*, i8** %16
%522 = load i8, i8* %521
%523 = sext i8 %522 to i32
%524 = icmp eq i32 %523, 79
br i1 %524, label %545, label %525
525: ; preds = %520
%526 = load i8*, i8** %16
%527 = load i8, i8* %526
%528 = sext i8 %527 to i32
%529 = icmp eq i32 %528, 85
br i1 %529, label %545, label %530
530: ; preds = %525
%531 = load i8*, i8** %16
%532 = load i8, i8* %531
%533 = sext i8 %532 to i32
%534 = icmp eq i32 %533, 89
br i1 %534, label %545, label %535
535: ; preds = %530
%536 = load i8*, i8** %16
%537 = load i8, i8* %536
%538 = sext i8 %537 to i32
%539 = icmp eq i32 %538, 72
br i1 %539, label %545, label %540
540: ; preds = %535
%541 = load i8*, i8** %16
%542 = load i8, i8* %541
%543 = sext i8 %542 to i32
%544 = icmp eq i32 %543, 87
br i1 %544, label %545, label %547
545: ; preds = %540, %535, %530, %525, %520, %515, %510, %505
%546 = load i8*, i8** %16
store i8 48, i8* %546
br label %547
547: ; preds = %545, %540
%548 = load i8*, i8** %16
%549 = load i8, i8* %548
%550 = sext i8 %549 to i32
%551 = icmp eq i32 %550, 66
br i1 %551, label %567, label %552
552: ; preds = %547
%553 = load i8*, i8** %16
%554 = load i8, i8* %553
%555 = sext i8 %554 to i32
%556 = icmp eq i32 %555, 80
br i1 %556, label %567, label %557
557: ; preds = %552
%558 = load i8*, i8** %16
%559 = load i8, i8* %558
%560 = sext i8 %559 to i32
%561 = icmp eq i32 %560, 70
br i1 %561, label %567, label %562
562: ; preds = %557
%563 = load i8*, i8** %16
%564 = load i8, i8* %563
%565 = sext i8 %564 to i32
%566 = icmp eq i32 %565, 86
br i1 %566, label %567, label %569
567: ; preds = %562, %557, %552, %547
%568 = load i8*, i8** %16
store i8 49, i8* %568
br label %569
569: ; preds = %567, %562
%570 = load i8*, i8** %16
%571 = load i8, i8* %570
%572 = sext i8 %571 to i32
%573 = icmp eq i32 %572, 67
br i1 %573, label %609, label %574
574: ; preds = %569
%575 = load i8*, i8** %16
%576 = load i8, i8* %575
%577 = sext i8 %576 to i32
%578 = icmp eq i32 %577, 83
br i1 %578, label %609, label %579
579: ; preds = %574
%580 = load i8*, i8** %16
%581 = load i8, i8* %580
%582 = sext i8 %581 to i32
%583 = icmp eq i32 %582, 71
br i1 %583, label %609, label %584
584: ; preds = %579
%585 = load i8*, i8** %16
%586 = load i8, i8* %585
%587 = sext i8 %586 to i32
%588 = icmp eq i32 %587, 74
br i1 %588, label %609, label %589
589: ; preds = %584
%590 = load i8*, i8** %16
%591 = load i8, i8* %590
%592 = sext i8 %591 to i32
%593 = icmp eq i32 %592, 75
br i1 %593, label %609, label %594
594: ; preds = %589
%595 = load i8*, i8** %16
%596 = load i8, i8* %595
%597 = sext i8 %596 to i32
%598 = icmp eq i32 %597, 81
br i1 %598, label %609, label %599
599: ; preds = %594
%600 = load i8*, i8** %16
%601 = load i8, i8* %600
%602 = sext i8 %601 to i32
%603 = icmp eq i32 %602, 88
br i1 %603, label %609, label %604
604: ; preds = %599
%605 = load i8*, i8** %16
%606 = load i8, i8* %605
%607 = sext i8 %606 to i32
%608 = icmp eq i32 %607, 90
br i1 %608, label %609, label %611
609: ; preds = %604, %599, %594, %589, %584, %579, %574, %569
%610 = load i8*, i8** %16
store i8 50, i8* %610
br label %611
611: ; preds = %609, %604
%612 = load i8*, i8** %16
%613 = load i8, i8* %612
%614 = sext i8 %613 to i32
%615 = icmp eq i32 %614, 68
br i1 %615, label %621, label %616
616: ; preds = %611
%617 = load i8*, i8** %16
%618 = load i8, i8* %617
%619 = sext i8 %618 to i32
%620 = icmp eq i32 %619, 84
br i1 %620, label %621, label %623
621: ; preds = %616, %611
%622 = load i8*, i8** %16
store i8 51, i8* %622
br label %623
623: ; preds = %621, %616
%624 = load i8*, i8** %16
%625 = load i8, i8* %624
%626 = sext i8 %625 to i32
%627 = icmp eq i32 %626, 76
br i1 %627, label %628, label %630
628: ; preds = %623
%629 = load i8*, i8** %16
store i8 52, i8* %629
br label %630
630: ; preds = %628, %623
%631 = load i8*, i8** %16
%632 = load i8, i8* %631
%633 = sext i8 %632 to i32
%634 = icmp eq i32 %633, 77
br i1 %634, label %640, label %635
635: ; preds = %630
%636 = load i8*, i8** %16
%637 = load i8, i8* %636
%638 = sext i8 %637 to i32
%639 = icmp eq i32 %638, 78
br i1 %639, label %640, label %642
640: ; preds = %635, %630
%641 = load i8*, i8** %16
store i8 53, i8* %641
br label %642
642: ; preds = %640, %635
%643 = load i8*, i8** %16
%644 = load i8, i8* %643
%645 = sext i8 %644 to i32
%646 = icmp eq i32 %645, 82
br i1 %646, label %647, label %649
647: ; preds = %642
%648 = load i8*, i8** %16
store i8 54, i8* %648
br label %649
649: ; preds = %647, %642
br label %650
650: ; preds = %649
%651 = load i8*, i8** %16
%652 = getelementptr inbounds i8, i8* %651, i32 1
store i8* %652, i8** %16
br label %501
653: ; preds = %501
%654 = load i32, i32* %9
%655 = icmp eq i32 %654, 1
br i1 %655, label %656, label %679
656: ; preds = %653
%657 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 1
store i8* %657, i8** %17
store i8* %657, i8** %16
br label %658
658: ; preds = %674, %656
%659 = load i8*, i8** %16
%660 = load i8, i8* %659
%661 = icmp ne i8 %660, 0
br i1 %661, label %662, label %677
662: ; preds = %658
%663 = load i8*, i8** %16
%664 = load i8, i8* %663
%665 = load i8*, i8** %17
store i8 %664, i8* %665
%666 = load i8*, i8** %17
%667 = load i8, i8* %666
%668 = sext i8 %667 to i32
%669 = icmp ne i32 %668, 46
br i1 %669, label %670, label %673
670: ; preds = %662
%671 = load i8*, i8** %17
%672 = getelementptr inbounds i8, i8* %671, i32 1
store i8* %672, i8** %17
br label %673
673: ; preds = %670, %662
br label %674
674: ; preds = %673
%675 = load i8*, i8** %16
%676 = getelementptr inbounds i8, i8* %675, i32 1
store i8* %676, i8** %16
br label %658
677: ; preds = %658
%678 = load i8*, i8** %17
store i8 0, i8* %678
br label %679
679: ; preds = %677, %653
%680 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8* %680, i8** %17
store i8* %680, i8** %16
br label %681
681: ; preds = %701, %679
%682 = load i8*, i8** %16
%683 = load i8, i8* %682
%684 = icmp ne i8 %683, 0
br i1 %684, label %685, label %704
685: ; preds = %681
%686 = load i8*, i8** %16
%687 = load i8, i8* %686
%688 = load i8*, i8** %17
store i8 %687, i8* %688
%689 = load i8*, i8** %17
%690 = load i8, i8* %689
%691 = sext i8 %690 to i32
%692 = load i8*, i8** %16
%693 = getelementptr inbounds i8, i8* %692, i64 1
%694 = load i8, i8* %693
%695 = sext i8 %694 to i32
%696 = icmp ne i32 %691, %695
br i1 %696, label %697, label %700
697: ; preds = %685
%698 = load i8*, i8** %17
%699 = getelementptr inbounds i8, i8* %698, i32 1
store i8* %699, i8** %17
br label %700
700: ; preds = %697, %685
br label %701
701: ; preds = %700
%702 = load i8*, i8** %16
%703 = getelementptr inbounds i8, i8* %702, i32 1
store i8* %703, i8** %16
br label %681
704: ; preds = %681
%705 = load i8*, i8** %17
store i8 0, i8* %705
%706 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 1
store i8* %706, i8** %17
store i8* %706, i8** %16
br label %707
707: ; preds = %728, %704
%708 = load i8*, i8** %16
%709 = load i8, i8* %708
%710 = icmp ne i8 %709, 0
br i1 %710, label %711, label %731
711: ; preds = %707
%712 = load i8*, i8** %16
%713 = load i8, i8* %712
%714 = load i8*, i8** %17
store i8 %713, i8* %714
%715 = load i8*, i8** %17
%716 = load i8, i8* %715
%717 = sext i8 %716 to i32
%718 = icmp ne i32 %717, 32
br i1 %718, label %719, label %727
719: ; preds = %711
%720 = load i8*, i8** %17
%721 = load i8, i8* %720
%722 = sext i8 %721 to i32
%723 = icmp ne i32 %722, 48
br i1 %723, label %724, label %727
724: ; preds = %719
%725 = load i8*, i8** %17
%726 = getelementptr inbounds i8, i8* %725, i32 1
store i8* %726, i8** %17
br label %727
727: ; preds = %724, %719, %711
br label %728
728: ; preds = %727
%729 = load i8*, i8** %16
%730 = getelementptr inbounds i8, i8* %729, i32 1
store i8* %730, i8** %16
br label %707
731: ; preds = %707
%732 = load i8*, i8** %17
store i8 0, i8* %732
store i32 0, i32* %13
%733 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8* %733, i8** %16
br label %734
734: ; preds = %741, %731
%735 = load i8*, i8** %16
%736 = load i8, i8* %735
%737 = icmp ne i8 %736, 0
br i1 %737, label %738, label %744
738: ; preds = %734
%739 = load i32, i32* %13
%740 = add nsw i32 %739, 1
store i32 %740, i32* %13
br label %741
741: ; preds = %738
%742 = load i8*, i8** %16
%743 = getelementptr inbounds i8, i8* %742, i32 1
store i8* %743, i8** %16
br label %734
744: ; preds = %734
%745 = load i32, i32* %13
store i32 %745, i32* %14
br label %746
746: ; preds = %754, %744
%747 = load i32, i32* %14
%748 = load i32, i32* %12
%749 = icmp slt i32 %747, %748
br i1 %749, label %750, label %757
750: ; preds = %746
%751 = load i32, i32* %14
%752 = sext i32 %751 to i64
%753 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %752
store i8 48, i8* %753
br label %754
754: ; preds = %750
%755 = load i32, i32* %14
%756 = add nsw i32 %755, 1
store i32 %756, i32* %14
br label %746
757: ; preds = %746
%758 = load i32, i32* %12
%759 = sext i32 %758 to i64
%760 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 %759
store i8 0, i8* %760
%761 = load i8, i8* %15
%762 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8 %761, i8* %762
%763 = load i8*, i8** %6
store i8* %763, i8** %17
%764 = getelementptr inbounds [32 x i8], [32 x i8]* %11, i64 0, i64 0
store i8* %764, i8** %16
br label %765
765: ; preds = %773, %757
%766 = load i8*, i8** %16
%767 = load i8, i8* %766
%768 = icmp ne i8 %767, 0
br i1 %768, label %769, label %778
769: ; preds = %765
%770 = load i8*, i8** %16
%771 = load i8, i8* %770
%772 = load i8*, i8** %17
store i8 %771, i8* %772
br label %773
773: ; preds = %769
%774 = load i8*, i8** %16
%775 = getelementptr inbounds i8, i8* %774, i32 1
store i8* %775, i8** %16
%776 = load i8*, i8** %17
%777 = getelementptr inbounds i8, i8* %776, i32 1
store i8* %777, i8** %17
br label %765
778: ; preds = %765
%779 = load i8*, i8** %17
store i8 0, i8* %779
%780 = load i32, i32* %12
store i32 %780, i32* %5
br label %781
781: ; preds = %778, %193, %39
%782 = load i32, i32* %5
ret i32 %782
}

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