char *zoundx_encode(const char *query) {
  char *buffer;
  char *lower;
  int i, j, l, val;
  l = strlen(query);
  lower = calloc(l, sizeof(char));
  for (i = 0; i < l; ++i) {
    lower[i] = tolower(query[i]);
  }
  for (i = 0; i < l; ++i) {
    if ((i + 1) < l && i > 1 &&
        (((lower[i] == 'b' || lower[i] == 'f' || lower[i] == 'p' ||
           lower[i] == 'v') &&
          (lower[i + 1] == 'b' || lower[i + 1] == 'f' || lower[i + 1] == 'p' ||
           lower[i + 1] == 'v')) ||
         ((lower[i] == 'c' || lower[i] == 'g' || lower[i] == 'j' ||
           lower[i] == 'k' || lower[i] == 'q' || lower[i] == 's' ||
           lower[i] == 'x' || lower[i] == 'z') &&
          (lower[i + 1] == 'c' || lower[i + 1] == 'g' || lower[i + 1] == 'j' ||
           lower[i + 1] == 'k' || lower[i + 1] == 'q' || lower[i + 1] == 's' ||
           lower[i + 1] == 'x' || lower[i + 1] == 'z')) ||
         ((lower[i] == 'd' || lower[i] == 't') &&
          (lower[i + 1] == 'd' || lower[i + 1] == 't')) ||
         ((lower[i] == 'l') && (lower[i + 1] == 'l')) ||
         ((lower[i] == 'm' || lower[i] == 'n') &&
          (lower[i + 1] == 'm' || lower[i + 1] == 'n')) ||
         ((lower[i] == 'r') && (lower[i + 1] == 'r')))) {
      lower[i + 1] = ' ';
    }
  }
  l = trim(&lower, shift_whitespaces(lower));
  for (i = 0; i < l; ++i) {
    if ((i + 1) < l && i > 1 && (lower[i] == 'h' || lower[i] == 'w') &&
        (((lower[i - 1] == 'b' || lower[i - 1] == 'f' || lower[i - 1] == 'p' ||
           lower[i - 1] == 'v') &&
          (lower[i + 1] == 'b' || lower[i + 1] == 'f' || lower[i + 1] == 'p' ||
           lower[i + 1] == 'v')) ||
         ((lower[i - 1] == 'c' || lower[i - 1] == 'g' || lower[i - 1] == 'j' ||
           lower[i - 1] == 'k' || lower[i - 1] == 'q' || lower[i - 1] == 's' ||
           lower[i - 1] == 'x' || lower[i - 1] == 'z') &&
          (lower[i + 1] == 'c' || lower[i + 1] == 'g' || lower[i + 1] == 'j' ||
           lower[i + 1] == 'k' || lower[i + 1] == 'q' || lower[i + 1] == 's' ||
           lower[i + 1] == 'x' || lower[i + 1] == 'z')) ||
         ((lower[i - 1] == 'd' || lower[i - 1] == 't') &&
          (lower[i + 1] == 'd' || lower[i + 1] == 't')) ||
         ((lower[i - 1] == 'l') && (lower[i + 1] == 'l')) ||
         ((lower[i - 1] == 'm' || lower[i - 1] == 'n') &&
          (lower[i + 1] == 'm' || lower[i + 1] == 'n')) ||
         ((lower[i - 1] == 'r') && (lower[i + 1] == 'r')))) {
      lower[i] = lower[i + 1] = ' ';
    }
  }
  l = trim(&lower, shift_whitespaces(lower));
  for (i = 1; i < l; ++i) {
    if ((lower[i] == 'a' || lower[i] == 'e' || lower[i] == 'i' ||
         lower[i] == 'o' || lower[i] == 'u' || lower[i] == 'y' ||
         lower[i] == 'h' || lower[i] == 'w')) {
      lower[i] = ' ';
    }
  }
  l = trim(&lower, shift_whitespaces(lower));
  for (i = 1; i < l; ++i) {
    if (((lower[i] == 'b' || lower[i] == 'f' || lower[i] == 'p' ||
          lower[i] == 'v') &&
         (val = 1)) ||
        ((lower[i] == 'c' || lower[i] == 'g' || lower[i] == 'j' ||
          lower[i] == 'k' || lower[i] == 'q' || lower[i] == 's' ||
          lower[i] == 'x' || lower[i] == 'z') &&
         (val = 2)) ||
        ((lower[i] == 'd' || lower[i] == 't') && (val = 3)) ||
        ((lower[i] == 'l') && (val = 4)) ||
        ((lower[i] == 'm' || lower[i] == 'n') && (val = 5)) ||
        ((lower[i] == 'r') && (val = 6))) {
      lower[i] = '0' + (char)val;
    }
  }
  if (l > 4) {
    buffer = calloc(4, sizeof(char));
    for (i = 0; i < 4; ++i) {
      buffer[i] = lower[i];
    }
    free(lower);
    lower = buffer;
  } else if (l < 4 && l > 0) {
    buffer = calloc(4, sizeof(char));
    for (i = 0; i < l; ++i) {
      buffer[i] = lower[i];
    }
    free(lower);
    lower = buffer;
    for (i = l; i < 4; ++i) {
      lower[i] = '0';
    }
  }
  lower[0] = toupper(lower[0]);
  return lower;
}


x86 assembly (clang, -O0):
<zoundx_encode>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    -0x8(%rbp),%rdi
call   1050 <strlen@plt>
mov    %eax,-0x24(%rbp)
movslq -0x24(%rbp),%rdi
mov    $0x1,%esi
call   1070 <calloc@plt>
mov    %rax,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    11d9 <zoundx_encode+0x69>
mov    -0x8(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1090 <tolower@plt>
mov    %al,%dl
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    11a1 <zoundx_encode+0x31>
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    1577 <zoundx_encode+0x407>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    -0x24(%rbp),%eax
jge    1564 <zoundx_encode+0x3f4>
cmpl   $0x1,-0x1c(%rbp)
jle    1564 <zoundx_encode+0x3f4>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x62,%eax
je     1259 <zoundx_encode+0xe9>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x66,%eax
je     1259 <zoundx_encode+0xe9>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x70,%eax
je     1259 <zoundx_encode+0xe9>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x76,%eax
jne    12c1 <zoundx_encode+0x151>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x62,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x66,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x70,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x76,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x63,%eax
je     1369 <zoundx_encode+0x1f9>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x67,%eax
je     1369 <zoundx_encode+0x1f9>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6a,%eax
je     1369 <zoundx_encode+0x1f9>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6b,%eax
je     1369 <zoundx_encode+0x1f9>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x71,%eax
je     1369 <zoundx_encode+0x1f9>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x73,%eax
je     1369 <zoundx_encode+0x1f9>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
je     1369 <zoundx_encode+0x1f9>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jne    1439 <zoundx_encode+0x2c9>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x63,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x67,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6a,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6b,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x71,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x73,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x64,%eax
je     1463 <zoundx_encode+0x2f3>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x74,%eax
jne    1497 <zoundx_encode+0x327>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x64,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x74,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6c,%eax
jne    14c6 <zoundx_encode+0x356>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6c,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6d,%eax
je     14f0 <zoundx_encode+0x380>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6e,%eax
jne    1524 <zoundx_encode+0x3b4>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6d,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6e,%eax
je     1553 <zoundx_encode+0x3e3>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x72,%eax
jne    1564 <zoundx_encode+0x3f4>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x72,%eax
jne    1564 <zoundx_encode+0x3f4>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x20,(%rax,%rcx,1)
jmp    1569 <zoundx_encode+0x3f9>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    11e0 <zoundx_encode+0x70>
mov    -0x18(%rbp),%rdi
mov    $0x0,%al
call   1080 <shift_whitespaces@plt>
mov    %eax,%esi
lea    -0x18(%rbp),%rdi
mov    $0x0,%al
call   1060 <trim@plt>
mov    %eax,-0x24(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    19c0 <zoundx_encode+0x850>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    -0x24(%rbp),%eax
jge    19ad <zoundx_encode+0x83d>
cmpl   $0x1,-0x1c(%rbp)
jle    19ad <zoundx_encode+0x83d>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x68,%eax
je     15e8 <zoundx_encode+0x478>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x77,%eax
jne    19ad <zoundx_encode+0x83d>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x62,%eax
je     1650 <zoundx_encode+0x4e0>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x66,%eax
je     1650 <zoundx_encode+0x4e0>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x70,%eax
je     1650 <zoundx_encode+0x4e0>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x76,%eax
jne    16b8 <zoundx_encode+0x548>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x62,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x66,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x70,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x76,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x63,%eax
je     1788 <zoundx_encode+0x618>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x67,%eax
je     1788 <zoundx_encode+0x618>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6a,%eax
je     1788 <zoundx_encode+0x618>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6b,%eax
je     1788 <zoundx_encode+0x618>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x71,%eax
je     1788 <zoundx_encode+0x618>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x73,%eax
je     1788 <zoundx_encode+0x618>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
je     1788 <zoundx_encode+0x618>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jne    1858 <zoundx_encode+0x6e8>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x63,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x67,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6a,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6b,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x71,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x73,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x64,%eax
je     188c <zoundx_encode+0x71c>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x74,%eax
jne    18c0 <zoundx_encode+0x750>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x64,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x74,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6c,%eax
jne    18f4 <zoundx_encode+0x784>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6c,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6d,%eax
je     1928 <zoundx_encode+0x7b8>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6e,%eax
jne    195c <zoundx_encode+0x7ec>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6d,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6e,%eax
je     1990 <zoundx_encode+0x820>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x72,%eax
jne    19ad <zoundx_encode+0x83d>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x72,%eax
jne    19ad <zoundx_encode+0x83d>
mov    -0x18(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movb   $0x20,(%rax,%rcx,1)
jmp    19b2 <zoundx_encode+0x842>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1599 <zoundx_encode+0x429>
mov    -0x18(%rbp),%rdi
mov    $0x0,%al
call   1080 <shift_whitespaces@plt>
mov    %eax,%esi
lea    -0x18(%rbp),%rdi
mov    $0x0,%al
call   1060 <trim@plt>
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    1ab5 <zoundx_encode+0x945>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x61,%eax
je     1a96 <zoundx_encode+0x926>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x65,%eax
je     1a96 <zoundx_encode+0x926>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x69,%eax
je     1a96 <zoundx_encode+0x926>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6f,%eax
je     1a96 <zoundx_encode+0x926>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x75,%eax
je     1a96 <zoundx_encode+0x926>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x79,%eax
je     1a96 <zoundx_encode+0x926>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x68,%eax
je     1a96 <zoundx_encode+0x926>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x77,%eax
jne    1aa2 <zoundx_encode+0x932>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movb   $0x20,(%rax,%rcx,1)
jmp    1aa7 <zoundx_encode+0x937>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    19e2 <zoundx_encode+0x872>
mov    -0x18(%rbp),%rdi
mov    $0x0,%al
call   1080 <shift_whitespaces@plt>
mov    %eax,%esi
lea    -0x18(%rbp),%rdi
mov    $0x0,%al
call   1060 <trim@plt>
mov    %eax,-0x24(%rbp)
movl   $0x1,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    1cf1 <zoundx_encode+0xb81>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x62,%eax
je     1b37 <zoundx_encode+0x9c7>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x66,%eax
je     1b37 <zoundx_encode+0x9c7>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x70,%eax
je     1b37 <zoundx_encode+0x9c7>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x76,%eax
jne    1b48 <zoundx_encode+0x9d8>
movl   $0x1,-0x28(%rbp)
mov    $0x1,%al
test   $0x1,%al
jne    1cc8 <zoundx_encode+0xb58>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x63,%eax
je     1bf0 <zoundx_encode+0xa80>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x67,%eax
je     1bf0 <zoundx_encode+0xa80>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6a,%eax
je     1bf0 <zoundx_encode+0xa80>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6b,%eax
je     1bf0 <zoundx_encode+0xa80>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x71,%eax
je     1bf0 <zoundx_encode+0xa80>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x73,%eax
je     1bf0 <zoundx_encode+0xa80>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x78,%eax
je     1bf0 <zoundx_encode+0xa80>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x7a,%eax
jne    1c01 <zoundx_encode+0xa91>
movl   $0x2,-0x28(%rbp)
mov    $0x1,%al
test   $0x1,%al
jne    1cc8 <zoundx_encode+0xb58>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x64,%eax
je     1c2b <zoundx_encode+0xabb>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x74,%eax
jne    1c3c <zoundx_encode+0xacc>
movl   $0x3,-0x28(%rbp)
mov    $0x1,%al
test   $0x1,%al
jne    1cc8 <zoundx_encode+0xb58>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6c,%eax
jne    1c62 <zoundx_encode+0xaf2>
movl   $0x4,-0x28(%rbp)
mov    $0x1,%al
test   $0x1,%al
jne    1cc8 <zoundx_encode+0xb58>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6d,%eax
je     1c8c <zoundx_encode+0xb1c>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x6e,%eax
jne    1c9d <zoundx_encode+0xb2d>
movl   $0x5,-0x28(%rbp)
mov    $0x1,%al
test   $0x1,%al
jne    1cc8 <zoundx_encode+0xb58>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x72,%eax
jne    1cde <zoundx_encode+0xb6e>
movl   $0x6,-0x28(%rbp)
mov    $0x1,%al
test   $0x1,%al
jne    1cc8 <zoundx_encode+0xb58>
jmp    1cde <zoundx_encode+0xb6e>
mov    -0x28(%rbp),%eax
movsbl %al,%eax
add    $0x30,%eax
mov    %al,%dl
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
jmp    1ce3 <zoundx_encode+0xb73>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1ad7 <zoundx_encode+0x967>
cmpl   $0x4,-0x24(%rbp)
jle    1d59 <zoundx_encode+0xbe9>
mov    $0x4,%edi
mov    $0x1,%esi
call   1070 <calloc@plt>
mov    %rax,-0x10(%rbp)
movl   $0x0,-0x1c(%rbp)
cmpl   $0x4,-0x1c(%rbp)
jge    1d43 <zoundx_encode+0xbd3>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1d15 <zoundx_encode+0xba5>
mov    -0x18(%rbp),%rdi
call   1030 <free@plt>
mov    -0x10(%rbp),%rax
mov    %rax,-0x18(%rbp)
jmp    1dfc <zoundx_encode+0xc8c>
cmpl   $0x4,-0x24(%rbp)
jge    1df7 <zoundx_encode+0xc87>
cmpl   $0x0,-0x24(%rbp)
jle    1df7 <zoundx_encode+0xc87>
mov    $0x4,%edi
mov    $0x1,%esi
call   1070 <calloc@plt>
mov    %rax,-0x10(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jge    1db7 <zoundx_encode+0xc47>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    (%rax,%rcx,1),%dl
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1d87 <zoundx_encode+0xc17>
mov    -0x18(%rbp),%rdi
call   1030 <free@plt>
mov    -0x10(%rbp),%rax
mov    %rax,-0x18(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,-0x1c(%rbp)
cmpl   $0x4,-0x1c(%rbp)
jge    1df2 <zoundx_encode+0xc82>
mov    -0x18(%rbp),%rax
movslq -0x1c(%rbp),%rcx
movb   $0x30,(%rax,%rcx,1)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1dce <zoundx_encode+0xc5e>
jmp    1df7 <zoundx_encode+0xc87>
jmp    1dfc <zoundx_encode+0xc8c>
mov    -0x18(%rbp),%rax
movsbl (%rax),%edi
call   1040 <toupper@plt>
mov    %al,%cl
mov    -0x18(%rbp),%rax
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<zoundx_encode>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
push   %rax
mov    %rdi,%r12
call   1050 <strlen@plt>
mov    %rax,%r14
movslq %r14d,%rbx
mov    $0x1,%esi
mov    %rbx,%rdi
call   1070 <calloc@plt>
mov    %rax,(%rsp)
test   %ebx,%ebx
jle    1316 <zoundx_encode+0x1a6>
mov    %rax,%r15
mov    %r14d,%r13d
movsbl (%r12),%edi
call   1090 <tolower@plt>
mov    %al,(%r15)
cmp    $0x1,%r13
je     11da <zoundx_encode+0x6a>
mov    $0x1,%ebp
mov    (%rsp),%rbx
movsbl (%r12,%rbp,1),%edi
call   1090 <tolower@plt>
mov    %al,(%rbx,%rbp,1)
add    $0x1,%rbp
cmp    %rbp,%r13
jne    11c0 <zoundx_encode+0x50>
test   %r14d,%r14d
jle    1316 <zoundx_encode+0x1a6>
movslq %r14d,%r12
mov    %r12d,%ecx
xor    %ebp,%ebp
lea    0xe0e(%rip),%r14
mov    $0x14191,%r9d
mov    $0x20002,%r8d
mov    $0x104011,%r10d
mov    $0xa14191,%r11d
jmp    1241 <zoundx_encode+0xd1>
bt     %r15,%r8
jae    1302 <zoundx_encode+0x192>
movzbl 0x1(%rbx,%rbp,1),%edx
mov    %edx,%eax
or     $0x10,%al
cmp    $0x74,%al
jne    12c7 <zoundx_encode+0x157>
nopw   0x0(%rax,%rax,1)
movb   $0x20,0x1(%rbx,%rbp,1)
mov    %rsi,%rbp
cmp    %rsi,%rcx
je     1316 <zoundx_encode+0x1a6>
lea    0x1(%rbp),%rsi
cmp    $0x2,%rbp
jb     1235 <zoundx_encode+0xc5>
cmp    %r12,%rsi
jge    1235 <zoundx_encode+0xc5>
mov    (%rsp),%rbx
movzbl (%rbx,%rbp,1),%edi
lea    -0x62(%rdi),%edx
cmp    $0x18,%dl
ja     12cd <zoundx_encode+0x15d>
movzbl %dl,%eax
movslq (%r14,%rax,4),%rax
add    %r14,%rax
jmp    *%rax
movzbl 0x1(%rbx,%rbp,1),%edx
lea    -0x63(%rdx),%eax
cmp    $0x17,%al
ja     1281 <zoundx_encode+0x111>
movzbl %al,%eax
bt     %rax,%r11
jb     1230 <zoundx_encode+0xc0>
cmp    $0x74,%dil
je     1216 <zoundx_encode+0xa6>
cmp    $0x6c,%dil
je     1308 <zoundx_encode+0x198>
cmp    $0x64,%dil
je     1216 <zoundx_encode+0xa6>
jmp    12cd <zoundx_encode+0x15d>
movzbl 0x1(%rbx,%rbp,1),%edx
lea    -0x62(%rdx),%eax
cmp    $0x14,%al
ja     12aa <zoundx_encode+0x13a>
movzbl %al,%eax
bt     %rax,%r10
jb     1230 <zoundx_encode+0xc0>
lea    -0x63(%rdi),%eax
cmp    $0x11,%al
ja     12cd <zoundx_encode+0x15d>
movzbl %al,%r15d
bt     %r15,%r9
jb     126c <zoundx_encode+0xfc>
jmp    120c <zoundx_encode+0x9c>
movzbl 0x1(%rbx,%rbp,1),%edx
jmp    1308 <zoundx_encode+0x198>
cmp    $0x6c,%dil
je     1308 <zoundx_encode+0x198>
lea    -0x6d(%rdi),%eax
cmp    $0x1,%al
ja     12e8 <zoundx_encode+0x178>
movzbl 0x1(%rbx,%rbp,1),%eax
add    $0x93,%al
cmp    $0x2,%al
jb     1230 <zoundx_encode+0xc0>
jmp    1235 <zoundx_encode+0xc5>
cmp    $0x72,%dil
jne    1235 <zoundx_encode+0xc5>
cmpb   $0x72,0x1(%rbx,%rbp,1)
je     1230 <zoundx_encode+0xc0>
jmp    1235 <zoundx_encode+0xc5>
cmp    $0x9,%r15
jne    12cd <zoundx_encode+0x15d>
cmp    $0x6c,%dl
je     1230 <zoundx_encode+0xc0>
jmp    1235 <zoundx_encode+0xc5>
mov    (%rsp),%rdi
xor    %eax,%eax
call   1080 <shift_whitespaces@plt>
mov    %rsp,%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <trim@plt>
test   %eax,%eax
jle    1499 <zoundx_encode+0x329>
mov    %eax,%eax
xor    %edi,%edi
lea    0xd24(%rip),%r15
mov    $0x14191,%r9d
mov    $0x20002,%r8d
mov    $0x104011,%r10d
mov    $0xa14191,%r11d
jmp    1399 <zoundx_encode+0x229>
bt     %r14,%r8
jae    1485 <zoundx_encode+0x315>
movzbl 0x1(%rdx,%rdi,1),%ebx
mov    %ebx,%ecx
or     $0x10,%cl
cmp    $0x74,%cl
jne    1447 <zoundx_encode+0x2d7>
nopw   0x0(%rax,%rax,1)
movb   $0x20,0x1(%rdx,%rdi,1)
mov    (%rsp),%rcx
movb   $0x20,(%rcx,%rdi,1)
mov    %rsi,%rdi
cmp    %rsi,%rax
je     1499 <zoundx_encode+0x329>
lea    0x1(%rdi),%rsi
cmp    $0x2,%rdi
jb     138d <zoundx_encode+0x21d>
cmp    %rax,%rsi
jae    138d <zoundx_encode+0x21d>
mov    (%rsp),%rdx
movzbl (%rdx,%rdi,1),%ebx
cmp    $0x77,%bl
je     13ba <zoundx_encode+0x24a>
cmp    $0x68,%bl
jne    138d <zoundx_encode+0x21d>
lea    -0x1(%rdi),%ecx
movzbl (%rdx,%rcx,1),%ebp
lea    -0x62(%rbp),%ebx
cmp    $0x18,%bl
ja     144d <zoundx_encode+0x2dd>
movzbl %bl,%ecx
movslq (%r15,%rcx,4),%rcx
add    %r15,%rcx
jmp    *%rcx
movzbl 0x1(%rdx,%rdi,1),%ebx
lea    -0x63(%rbx),%ecx
cmp    $0x17,%cl
ja     13ef <zoundx_encode+0x27f>
movzbl %cl,%ecx
bt     %rcx,%r11
jb     1380 <zoundx_encode+0x210>
cmp    $0x74,%bpl
je     1364 <zoundx_encode+0x1f4>
cmp    $0x6c,%bpl
je     148b <zoundx_encode+0x31b>
cmp    $0x64,%bpl
je     1364 <zoundx_encode+0x1f4>
jmp    144d <zoundx_encode+0x2dd>
movzbl 0x1(%rdx,%rdi,1),%ebx
lea    -0x62(%rbx),%ecx
cmp    $0x14,%cl
ja     1429 <zoundx_encode+0x2b9>
movzbl %cl,%ecx
bt     %rcx,%r10
jb     1380 <zoundx_encode+0x210>
lea    -0x63(%rbp),%ecx
cmp    $0x11,%cl
ja     144d <zoundx_encode+0x2dd>
movzbl %cl,%r14d
bt     %r14,%r9
jb     13d9 <zoundx_encode+0x269>
jmp    135a <zoundx_encode+0x1ea>
movzbl 0x1(%rdx,%rdi,1),%ebx
jmp    148b <zoundx_encode+0x31b>
cmp    $0x6c,%bpl
je     148b <zoundx_encode+0x31b>
lea    -0x6d(%rbp),%ecx
cmp    $0x1,%cl
ja     146b <zoundx_encode+0x2fb>
movzbl 0x1(%rdx,%rdi,1),%ecx
add    $0x93,%cl
cmp    $0x2,%cl
jb     1380 <zoundx_encode+0x210>
jmp    138d <zoundx_encode+0x21d>
cmp    $0x72,%bpl
jne    138d <zoundx_encode+0x21d>
cmpb   $0x72,0x1(%rdx,%rdi,1)
je     1380 <zoundx_encode+0x210>
jmp    138d <zoundx_encode+0x21d>
cmp    $0x9,%r14
jne    144d <zoundx_encode+0x2dd>
cmp    $0x6c,%bl
je     1380 <zoundx_encode+0x210>
jmp    138d <zoundx_encode+0x21d>
mov    (%rsp),%rdi
xor    %eax,%eax
call   1080 <shift_whitespaces@plt>
mov    %rsp,%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <trim@plt>
cmp    $0x2,%eax
jl     14ef <zoundx_encode+0x37f>
mov    %eax,%edx
add    $0xffffffffffffffff,%rdx
mov    $0x1,%ecx
cmp    $0x2,%eax
jne    16ed <zoundx_encode+0x57d>
test   $0x1,%dl
je     14ef <zoundx_encode+0x37f>
mov    (%rsp),%rax
mov    (%rax,%rcx,1),%dl
add    $0x9f,%dl
cmp    $0x18,%dl
ja     14ef <zoundx_encode+0x37f>
movzbl %dl,%edx
mov    $0x1504191,%esi
bt     %rdx,%rsi
jae    14ef <zoundx_encode+0x37f>
movb   $0x20,(%rax,%rcx,1)
mov    (%rsp),%rdi
xor    %eax,%eax
call   1080 <shift_whitespaces@plt>
mov    %rsp,%rdi
mov    %eax,%esi
xor    %eax,%eax
call   1060 <trim@plt>
mov    %eax,%r14d
cmp    $0x2,%eax
jl     159f <zoundx_encode+0x42f>
mov    %r14d,%eax
mov    $0x1,%ecx
mov    $0x157df37,%edx
lea    0xba2(%rip),%rsi
jmp    1539 <zoundx_encode+0x3c9>
nopl   0x0(%rax,%rax,1)
add    $0x1,%rcx
cmp    %rcx,%rax
je     155f <zoundx_encode+0x3ef>
mov    (%rsp),%rdi
movzbl (%rdi,%rcx,1),%ebx
add    $0x9e,%bl
cmp    $0x18,%bl
ja     1530 <zoundx_encode+0x3c0>
movzbl %bl,%ebp
bt     %ebp,%edx
jae    1530 <zoundx_encode+0x3c0>
movsbq %bl,%rbp
movzbl 0x0(%rbp,%rsi,1),%ebx
mov    %bl,(%rdi,%rcx,1)
jmp    1530 <zoundx_encode+0x3c0>
cmp    $0x5,%r14d
jl     159f <zoundx_encode+0x42f>
mov    $0x4,%edi
mov    $0x1,%esi
call   1070 <calloc@plt>
mov    %rax,%rbx
mov    (%rsp),%rdi
mov    (%rdi),%al
mov    %al,(%rbx)
mov    0x1(%rdi),%al
mov    %al,0x1(%rbx)
mov    0x2(%rdi),%al
mov    %al,0x2(%rbx)
mov    0x3(%rdi),%al
mov    %al,0x3(%rbx)
call   1030 <free@plt>
mov    %rbx,(%rsp)
jmp    16cc <zoundx_encode+0x55c>
cmp    $0x4,%r14d
je     16cc <zoundx_encode+0x55c>
test   %r14d,%r14d
jle    16cc <zoundx_encode+0x55c>
mov    $0x4,%edi
mov    $0x1,%esi
call   1070 <calloc@plt>
mov    %rax,%rbx
mov    (%rsp),%rdi
mov    %r14d,%r9d
cmp    $0x8,%r14d
jb     15eb <zoundx_encode+0x47b>
lea    (%rdi,%r9,1),%rcx
cmp    %rcx,%rbx
jae    1764 <zoundx_encode+0x5f4>
lea    (%rbx,%r9,1),%rcx
cmp    %rcx,%rdi
jae    1764 <zoundx_encode+0x5f4>
xor    %ecx,%ecx
mov    %rcx,%rdx
not    %rdx
add    %r9,%rdx
mov    %r9,%rsi
and    $0x3,%rsi
je     1611 <zoundx_encode+0x4a1>
nop
movzbl (%rdi,%rcx,1),%eax
mov    %al,(%rbx,%rcx,1)
add    $0x1,%rcx
add    $0xffffffffffffffff,%rsi
jne    1600 <zoundx_encode+0x490>
cmp    $0x3,%rdx
jb     164b <zoundx_encode+0x4db>
nopw   0x0(%rax,%rax,1)
movzbl (%rdi,%rcx,1),%eax
mov    %al,(%rbx,%rcx,1)
movzbl 0x1(%rdi,%rcx,1),%eax
mov    %al,0x1(%rbx,%rcx,1)
movzbl 0x2(%rdi,%rcx,1),%eax
mov    %al,0x2(%rbx,%rcx,1)
movzbl 0x3(%rdi,%rcx,1),%eax
mov    %al,0x3(%rbx,%rcx,1)
add    $0x4,%rcx
cmp    %rcx,%r9
jne    1620 <zoundx_encode+0x4b0>
call   1030 <free@plt>
mov    %rbx,(%rsp)
cmp    $0x3,%r14d
jg     16cc <zoundx_encode+0x55c>
movslq %r14d,%rax
movb   $0x30,(%rbx,%rax,1)
add    $0x1,%rax
cmp    $0x4,%eax
je     16cc <zoundx_encode+0x55c>
mov    $0x3,%ecx
sub    %r14d,%ecx
and    $0x3,%ecx
je     1691 <zoundx_encode+0x521>
nopw   0x0(%rax,%rax,1)
mov    (%rsp),%rdx
movb   $0x30,(%rdx,%rax,1)
add    $0x1,%rax
add    $0xffffffff,%ecx
jne    1680 <zoundx_encode+0x510>
cmp    $0x3,%r14d
jb     16cc <zoundx_encode+0x55c>
nopw   0x0(%rax,%rax,1)
mov    (%rsp),%rcx
movb   $0x30,(%rcx,%rax,1)
mov    (%rsp),%rcx
movb   $0x30,0x1(%rcx,%rax,1)
mov    (%rsp),%rcx
movb   $0x30,0x2(%rcx,%rax,1)
mov    (%rsp),%rcx
movb   $0x30,0x3(%rcx,%rax,1)
add    $0x4,%rax
cmp    $0x4,%eax
jne    16a0 <zoundx_encode+0x530>
mov    (%rsp),%rbx
movsbl (%rbx),%edi
call   1040 <toupper@plt>
mov    %al,(%rbx)
mov    (%rsp),%rax
add    $0x8,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %rdx,%rax
and    $0xfffffffffffffffe,%rax
neg    %rax
mov    $0x1,%ecx
mov    $0x1504191,%esi
jmp    1726 <zoundx_encode+0x5b6>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    (%rax,%rcx,1),%rdi
add    $0x2,%rdi
add    $0x2,%rcx
cmp    $0x1,%rdi
je     14c9 <zoundx_encode+0x359>
mov    (%rsp),%rdi
movzbl (%rdi,%rcx,1),%ebx
add    $0x9f,%bl
cmp    $0x18,%bl
ja     1743 <zoundx_encode+0x5d3>
movzbl %bl,%ebp
bt     %rbp,%rsi
jae    1743 <zoundx_encode+0x5d3>
movb   $0x20,(%rdi,%rcx,1)
mov    (%rsp),%rdi
movzbl 0x1(%rdi,%rcx,1),%ebx
add    $0x9f,%bl
cmp    $0x18,%bl
ja     1710 <zoundx_encode+0x5a0>
movzbl %bl,%ebp
bt     %rbp,%rsi
jae    1710 <zoundx_encode+0x5a0>
movb   $0x20,0x1(%rdi,%rcx,1)
jmp    1710 <zoundx_encode+0x5a0>
cmp    $0x20,%r14d
jae    1771 <zoundx_encode+0x601>
xor    %ecx,%ecx
jmp    184e <zoundx_encode+0x6de>
mov    %r9d,%ecx
and    $0xffffffe0,%ecx
lea    -0x20(%rcx),%rdx
mov    %rdx,%rsi
shr    $0x5,%rsi
add    $0x1,%rsi
mov    %esi,%r8d
and    $0x3,%r8d
cmp    $0x60,%rdx
jae    1797 <zoundx_encode+0x627>
xor    %edx,%edx
jmp    17f8 <zoundx_encode+0x688>
and    $0xfffffffffffffffc,%rsi
xor    %edx,%edx
nopl   (%rax)
movups (%rdi,%rdx,1),%xmm0
movups 0x10(%rdi,%rdx,1),%xmm1
movups %xmm0,(%rbx,%rdx,1)
movups %xmm1,0x10(%rbx,%rdx,1)
movups 0x20(%rdi,%rdx,1),%xmm0
movups 0x30(%rdi,%rdx,1),%xmm1
movups %xmm0,0x20(%rbx,%rdx,1)
movups %xmm1,0x30(%rbx,%rdx,1)
movups 0x40(%rdi,%rdx,1),%xmm0
movups 0x50(%rdi,%rdx,1),%xmm1
movups %xmm0,0x40(%rbx,%rdx,1)
movups %xmm1,0x50(%rbx,%rdx,1)
movups 0x60(%rdi,%rdx,1),%xmm0
movups 0x70(%rdi,%rdx,1),%xmm1
movups %xmm0,0x60(%rbx,%rdx,1)
movups %xmm1,0x70(%rbx,%rdx,1)
sub    $0xffffffffffffff80,%rdx
add    $0xfffffffffffffffc,%rsi
jne    17a0 <zoundx_encode+0x630>
test   %r8,%r8
je     183b <zoundx_encode+0x6cb>
lea    (%rbx,%rdx,1),%rsi
add    $0x10,%rsi
add    %rdi,%rdx
add    $0x10,%rdx
shl    $0x5,%r8
xor    %ebp,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movups -0x10(%rdx,%rbp,1),%xmm0
movups (%rdx,%rbp,1),%xmm1
movups %xmm0,-0x10(%rsi,%rbp,1)
movups %xmm1,(%rsi,%rbp,1)
add    $0x20,%rbp
cmp    %rbp,%r8
jne    1820 <zoundx_encode+0x6b0>
cmp    %r9,%rcx
je     164b <zoundx_encode+0x4db>
test   $0x18,%r9b
je     15ed <zoundx_encode+0x47d>
mov    %rcx,%rdx
mov    %r9d,%ecx
and    $0xfffffff8,%ecx
nopw   0x0(%rax,%rax,1)
mov    (%rdi,%rdx,1),%rsi
mov    %rsi,(%rbx,%rdx,1)
add    $0x8,%rdx
cmp    %rdx,%rcx
jne    1860 <zoundx_encode+0x6f0>
cmp    %r9,%rcx
je     164b <zoundx_encode+0x4db>
jmp    15ed <zoundx_encode+0x47d>

LLVM IR (-O0):
define i8* @zoundx_encode(i8* %0) {
%2 = alloca i8*
%3 = alloca i8*
%4 = alloca i8*
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = alloca i32
store i8* %0, i8** %2
%9 = load i8*, i8** %2
%10 = call i64 @strlen(i8* %9)
%11 = trunc i64 %10 to i32
store i32 %11, i32* %7
%12 = load i32, i32* %7
%13 = sext i32 %12 to i64
%14 = call i8* @calloc(i64 %13, i64 1)
store i8* %14, i8** %4
store i32 0, i32* %5
br label %15
15: ; preds = %32, %1
%16 = load i32, i32* %5
%17 = load i32, i32* %7
%18 = icmp slt i32 %16, %17
br i1 %18, label %19, label %35
19: ; preds = %15
%20 = load i8*, i8** %2
%21 = load i32, i32* %5
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds i8, i8* %20, i64 %22
%24 = load i8, i8* %23
%25 = sext i8 %24 to i32
%26 = call i32 @tolower(i32 %25)
%27 = trunc i32 %26 to i8
%28 = load i8*, i8** %4
%29 = load i32, i32* %5
%30 = sext i32 %29 to i64
%31 = getelementptr inbounds i8, i8* %28, i64 %30
store i8 %27, i8* %31
br label %32
32: ; preds = %19
%33 = load i32, i32* %5
%34 = add nsw i32 %33, 1
store i32 %34, i32* %5
br label %15
35: ; preds = %15
store i32 0, i32* %5
br label %36
36: ; preds = %361, %35
%37 = load i32, i32* %5
%38 = load i32, i32* %7
%39 = icmp slt i32 %37, %38
br i1 %39, label %40, label %364
40: ; preds = %36
%41 = load i32, i32* %5
%42 = add nsw i32 %41, 1
%43 = load i32, i32* %7
%44 = icmp slt i32 %42, %43
br i1 %44, label %45, label %360
45: ; preds = %40
%46 = load i32, i32* %5
%47 = icmp sgt i32 %46, 1
br i1 %47, label %48, label %360
48: ; preds = %45
%49 = load i8*, i8** %4
%50 = load i32, i32* %5
%51 = sext i32 %50 to i64
%52 = getelementptr inbounds i8, i8* %49, i64 %51
%53 = load i8, i8* %52
%54 = sext i8 %53 to i32
%55 = icmp eq i32 %54, 98
br i1 %55, label %80, label %56
56: ; preds = %48
%57 = load i8*, i8** %4
%58 = load i32, i32* %5
%59 = sext i32 %58 to i64
%60 = getelementptr inbounds i8, i8* %57, i64 %59
%61 = load i8, i8* %60
%62 = sext i8 %61 to i32
%63 = icmp eq i32 %62, 102
br i1 %63, label %80, label %64
64: ; preds = %56
%65 = load i8*, i8** %4
%66 = load i32, i32* %5
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds i8, i8* %65, i64 %67
%69 = load i8, i8* %68
%70 = sext i8 %69 to i32
%71 = icmp eq i32 %70, 112
br i1 %71, label %80, label %72
72: ; preds = %64
%73 = load i8*, i8** %4
%74 = load i32, i32* %5
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds i8, i8* %73, i64 %75
%77 = load i8, i8* %76
%78 = sext i8 %77 to i32
%79 = icmp eq i32 %78, 118
br i1 %79, label %80, label %116
80: ; preds = %72, %64, %56, %48
%81 = load i8*, i8** %4
%82 = load i32, i32* %5
%83 = add nsw i32 %82, 1
%84 = sext i32 %83 to i64
%85 = getelementptr inbounds i8, i8* %81, i64 %84
%86 = load i8, i8* %85
%87 = sext i8 %86 to i32
%88 = icmp eq i32 %87, 98
br i1 %88, label %354, label %89
89: ; preds = %80
%90 = load i8*, i8** %4
%91 = load i32, i32* %5
%92 = add nsw i32 %91, 1
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds i8, i8* %90, i64 %93
%95 = load i8, i8* %94
%96 = sext i8 %95 to i32
%97 = icmp eq i32 %96, 102
br i1 %97, label %354, label %98
98: ; preds = %89
%99 = load i8*, i8** %4
%100 = load i32, i32* %5
%101 = add nsw i32 %100, 1
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds i8, i8* %99, i64 %102
%104 = load i8, i8* %103
%105 = sext i8 %104 to i32
%106 = icmp eq i32 %105, 112
br i1 %106, label %354, label %107
107: ; preds = %98
%108 = load i8*, i8** %4
%109 = load i32, i32* %5
%110 = add nsw i32 %109, 1
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds i8, i8* %108, i64 %111
%113 = load i8, i8* %112
%114 = sext i8 %113 to i32
%115 = icmp eq i32 %114, 118
br i1 %115, label %354, label %116
116: ; preds = %107, %72
%117 = load i8*, i8** %4
%118 = load i32, i32* %5
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds i8, i8* %117, i64 %119
%121 = load i8, i8* %120
%122 = sext i8 %121 to i32
%123 = icmp eq i32 %122, 99
br i1 %123, label %180, label %124
124: ; preds = %116
%125 = load i8*, i8** %4
%126 = load i32, i32* %5
%127 = sext i32 %126 to i64
%128 = getelementptr inbounds i8, i8* %125, i64 %127
%129 = load i8, i8* %128
%130 = sext i8 %129 to i32
%131 = icmp eq i32 %130, 103
br i1 %131, label %180, label %132
132: ; preds = %124
%133 = load i8*, i8** %4
%134 = load i32, i32* %5
%135 = sext i32 %134 to i64
%136 = getelementptr inbounds i8, i8* %133, i64 %135
%137 = load i8, i8* %136
%138 = sext i8 %137 to i32
%139 = icmp eq i32 %138, 106
br i1 %139, label %180, label %140
140: ; preds = %132
%141 = load i8*, i8** %4
%142 = load i32, i32* %5
%143 = sext i32 %142 to i64
%144 = getelementptr inbounds i8, i8* %141, i64 %143
%145 = load i8, i8* %144
%146 = sext i8 %145 to i32
%147 = icmp eq i32 %146, 107
br i1 %147, label %180, label %148
148: ; preds = %140
%149 = load i8*, i8** %4
%150 = load i32, i32* %5
%151 = sext i32 %150 to i64
%152 = getelementptr inbounds i8, i8* %149, i64 %151
%153 = load i8, i8* %152
%154 = sext i8 %153 to i32
%155 = icmp eq i32 %154, 113
br i1 %155, label %180, label %156
156: ; preds = %148
%157 = load i8*, i8** %4
%158 = load i32, i32* %5
%159 = sext i32 %158 to i64
%160 = getelementptr inbounds i8, i8* %157, i64 %159
%161 = load i8, i8* %160
%162 = sext i8 %161 to i32
%163 = icmp eq i32 %162, 115
br i1 %163, label %180, label %164
164: ; preds = %156
%165 = load i8*, i8** %4
%166 = load i32, i32* %5
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds i8, i8* %165, i64 %167
%169 = load i8, i8* %168
%170 = sext i8 %169 to i32
%171 = icmp eq i32 %170, 120
br i1 %171, label %180, label %172
172: ; preds = %164
%173 = load i8*, i8** %4
%174 = load i32, i32* %5
%175 = sext i32 %174 to i64
%176 = getelementptr inbounds i8, i8* %173, i64 %175
%177 = load i8, i8* %176
%178 = sext i8 %177 to i32
%179 = icmp eq i32 %178, 122
br i1 %179, label %180, label %252
180: ; preds = %172, %164, %156, %148, %140, %132, %124, %116
%181 = load i8*, i8** %4
%182 = load i32, i32* %5
%183 = add nsw i32 %182, 1
%184 = sext i32 %183 to i64
%185 = getelementptr inbounds i8, i8* %181, i64 %184
%186 = load i8, i8* %185
%187 = sext i8 %186 to i32
%188 = icmp eq i32 %187, 99
br i1 %188, label %354, label %189
189: ; preds = %180
%190 = load i8*, i8** %4
%191 = load i32, i32* %5
%192 = add nsw i32 %191, 1
%193 = sext i32 %192 to i64
%194 = getelementptr inbounds i8, i8* %190, i64 %193
%195 = load i8, i8* %194
%196 = sext i8 %195 to i32
%197 = icmp eq i32 %196, 103
br i1 %197, label %354, label %198
198: ; preds = %189
%199 = load i8*, i8** %4
%200 = load i32, i32* %5
%201 = add nsw i32 %200, 1
%202 = sext i32 %201 to i64
%203 = getelementptr inbounds i8, i8* %199, i64 %202
%204 = load i8, i8* %203
%205 = sext i8 %204 to i32
%206 = icmp eq i32 %205, 106
br i1 %206, label %354, label %207
207: ; preds = %198
%208 = load i8*, i8** %4
%209 = load i32, i32* %5
%210 = add nsw i32 %209, 1
%211 = sext i32 %210 to i64
%212 = getelementptr inbounds i8, i8* %208, i64 %211
%213 = load i8, i8* %212
%214 = sext i8 %213 to i32
%215 = icmp eq i32 %214, 107
br i1 %215, label %354, label %216
216: ; preds = %207
%217 = load i8*, i8** %4
%218 = load i32, i32* %5
%219 = add nsw i32 %218, 1
%220 = sext i32 %219 to i64
%221 = getelementptr inbounds i8, i8* %217, i64 %220
%222 = load i8, i8* %221
%223 = sext i8 %222 to i32
%224 = icmp eq i32 %223, 113
br i1 %224, label %354, label %225
225: ; preds = %216
%226 = load i8*, i8** %4
%227 = load i32, i32* %5
%228 = add nsw i32 %227, 1
%229 = sext i32 %228 to i64
%230 = getelementptr inbounds i8, i8* %226, i64 %229
%231 = load i8, i8* %230
%232 = sext i8 %231 to i32
%233 = icmp eq i32 %232, 115
br i1 %233, label %354, label %234
234: ; preds = %225
%235 = load i8*, i8** %4
%236 = load i32, i32* %5
%237 = add nsw i32 %236, 1
%238 = sext i32 %237 to i64
%239 = getelementptr inbounds i8, i8* %235, i64 %238
%240 = load i8, i8* %239
%241 = sext i8 %240 to i32
%242 = icmp eq i32 %241, 120
br i1 %242, label %354, label %243
243: ; preds = %234
%244 = load i8*, i8** %4
%245 = load i32, i32* %5
%246 = add nsw i32 %245, 1
%247 = sext i32 %246 to i64
%248 = getelementptr inbounds i8, i8* %244, i64 %247
%249 = load i8, i8* %248
%250 = sext i8 %249 to i32
%251 = icmp eq i32 %250, 122
br i1 %251, label %354, label %252
252: ; preds = %243, %172
%253 = load i8*, i8** %4
%254 = load i32, i32* %5
%255 = sext i32 %254 to i64
%256 = getelementptr inbounds i8, i8* %253, i64 %255
%257 = load i8, i8* %256
%258 = sext i8 %257 to i32
%259 = icmp eq i32 %258, 100
br i1 %259, label %268, label %260
260: ; preds = %252
%261 = load i8*, i8** %4
%262 = load i32, i32* %5
%263 = sext i32 %262 to i64
%264 = getelementptr inbounds i8, i8* %261, i64 %263
%265 = load i8, i8* %264
%266 = sext i8 %265 to i32
%267 = icmp eq i32 %266, 116
br i1 %267, label %268, label %286
268: ; preds = %260, %252
%269 = load i8*, i8** %4
%270 = load i32, i32* %5
%271 = add nsw i32 %270, 1
%272 = sext i32 %271 to i64
%273 = getelementptr inbounds i8, i8* %269, i64 %272
%274 = load i8, i8* %273
%275 = sext i8 %274 to i32
%276 = icmp eq i32 %275, 100
br i1 %276, label %354, label %277
277: ; preds = %268
%278 = load i8*, i8** %4
%279 = load i32, i32* %5
%280 = add nsw i32 %279, 1
%281 = sext i32 %280 to i64
%282 = getelementptr inbounds i8, i8* %278, i64 %281
%283 = load i8, i8* %282
%284 = sext i8 %283 to i32
%285 = icmp eq i32 %284, 116
br i1 %285, label %354, label %286
286: ; preds = %277, %260
%287 = load i8*, i8** %4
%288 = load i32, i32* %5
%289 = sext i32 %288 to i64
%290 = getelementptr inbounds i8, i8* %287, i64 %289
%291 = load i8, i8* %290
%292 = sext i8 %291 to i32
%293 = icmp eq i32 %292, 108
br i1 %293, label %294, label %303
294: ; preds = %286
%295 = load i8*, i8** %4
%296 = load i32, i32* %5
%297 = add nsw i32 %296, 1
%298 = sext i32 %297 to i64
%299 = getelementptr inbounds i8, i8* %295, i64 %298
%300 = load i8, i8* %299
%301 = sext i8 %300 to i32
%302 = icmp eq i32 %301, 108
br i1 %302, label %354, label %303
303: ; preds = %294, %286
%304 = load i8*, i8** %4
%305 = load i32, i32* %5
%306 = sext i32 %305 to i64
%307 = getelementptr inbounds i8, i8* %304, i64 %306
%308 = load i8, i8* %307
%309 = sext i8 %308 to i32
%310 = icmp eq i32 %309, 109
br i1 %310, label %319, label %311
311: ; preds = %303
%312 = load i8*, i8** %4
%313 = load i32, i32* %5
%314 = sext i32 %313 to i64
%315 = getelementptr inbounds i8, i8* %312, i64 %314
%316 = load i8, i8* %315
%317 = sext i8 %316 to i32
%318 = icmp eq i32 %317, 110
br i1 %318, label %319, label %337
319: ; preds = %311, %303
%320 = load i8*, i8** %4
%321 = load i32, i32* %5
%322 = add nsw i32 %321, 1
%323 = sext i32 %322 to i64
%324 = getelementptr inbounds i8, i8* %320, i64 %323
%325 = load i8, i8* %324
%326 = sext i8 %325 to i32
%327 = icmp eq i32 %326, 109
br i1 %327, label %354, label %328
328: ; preds = %319
%329 = load i8*, i8** %4
%330 = load i32, i32* %5
%331 = add nsw i32 %330, 1
%332 = sext i32 %331 to i64
%333 = getelementptr inbounds i8, i8* %329, i64 %332
%334 = load i8, i8* %333
%335 = sext i8 %334 to i32
%336 = icmp eq i32 %335, 110
br i1 %336, label %354, label %337
337: ; preds = %328, %311
%338 = load i8*, i8** %4
%339 = load i32, i32* %5
%340 = sext i32 %339 to i64
%341 = getelementptr inbounds i8, i8* %338, i64 %340
%342 = load i8, i8* %341
%343 = sext i8 %342 to i32
%344 = icmp eq i32 %343, 114
br i1 %344, label %345, label %360
345: ; preds = %337
%346 = load i8*, i8** %4
%347 = load i32, i32* %5
%348 = add nsw i32 %347, 1
%349 = sext i32 %348 to i64
%350 = getelementptr inbounds i8, i8* %346, i64 %349
%351 = load i8, i8* %350
%352 = sext i8 %351 to i32
%353 = icmp eq i32 %352, 114
br i1 %353, label %354, label %360
354: ; preds = %345, %328, %319, %294, %277, %268, %243, %234, %225, %216, %207, %198, %189, %180, %107, %98, %89, %80
%355 = load i8*, i8** %4
%356 = load i32, i32* %5
%357 = add nsw i32 %356, 1
%358 = sext i32 %357 to i64
%359 = getelementptr inbounds i8, i8* %355, i64 %358
store i8 32, i8* %359
br label %360
360: ; preds = %354, %345, %337, %45, %40
br label %361
361: ; preds = %360
%362 = load i32, i32* %5
%363 = add nsw i32 %362, 1
store i32 %363, i32* %5
br label %36
364: ; preds = %36
%365 = load i8*, i8** %4
%366 = call i32 (i8*, ...) bitcast (i32 (...)* @shift_whitespaces to i32 (i8*, ...)*)(i8* %365)
%367 = call i32 (i8**, i32, ...) bitcast (i32 (...)* @trim to i32 (i8**, i32, ...)*)(i8** %4, i32 %366)
store i32 %367, i32* %7
store i32 0, i32* %5
br label %368
368: ; preds = %731, %364
%369 = load i32, i32* %5
%370 = load i32, i32* %7
%371 = icmp slt i32 %369, %370
br i1 %371, label %372, label %734
372: ; preds = %368
%373 = load i32, i32* %5
%374 = add nsw i32 %373, 1
%375 = load i32, i32* %7
%376 = icmp slt i32 %374, %375
br i1 %376, label %377, label %730
377: ; preds = %372
%378 = load i32, i32* %5
%379 = icmp sgt i32 %378, 1
br i1 %379, label %380, label %730
380: ; preds = %377
%381 = load i8*, i8** %4
%382 = load i32, i32* %5
%383 = sext i32 %382 to i64
%384 = getelementptr inbounds i8, i8* %381, i64 %383
%385 = load i8, i8* %384
%386 = sext i8 %385 to i32
%387 = icmp eq i32 %386, 104
br i1 %387, label %396, label %388
388: ; preds = %380
%389 = load i8*, i8** %4
%390 = load i32, i32* %5
%391 = sext i32 %390 to i64
%392 = getelementptr inbounds i8, i8* %389, i64 %391
%393 = load i8, i8* %392
%394 = sext i8 %393 to i32
%395 = icmp eq i32 %394, 119
br i1 %395, label %396, label %730
396: ; preds = %388, %380
%397 = load i8*, i8** %4
%398 = load i32, i32* %5
%399 = sub nsw i32 %398, 1
%400 = sext i32 %399 to i64
%401 = getelementptr inbounds i8, i8* %397, i64 %400
%402 = load i8, i8* %401
%403 = sext i8 %402 to i32
%404 = icmp eq i32 %403, 98
br i1 %404, label %432, label %405
405: ; preds = %396
%406 = load i8*, i8** %4
%407 = load i32, i32* %5
%408 = sub nsw i32 %407, 1
%409 = sext i32 %408 to i64
%410 = getelementptr inbounds i8, i8* %406, i64 %409
%411 = load i8, i8* %410
%412 = sext i8 %411 to i32
%413 = icmp eq i32 %412, 102
br i1 %413, label %432, label %414
414: ; preds = %405
%415 = load i8*, i8** %4
%416 = load i32, i32* %5
%417 = sub nsw i32 %416, 1
%418 = sext i32 %417 to i64
%419 = getelementptr inbounds i8, i8* %415, i64 %418
%420 = load i8, i8* %419
%421 = sext i8 %420 to i32
%422 = icmp eq i32 %421, 112
br i1 %422, label %432, label %423
423: ; preds = %414
%424 = load i8*, i8** %4
%425 = load i32, i32* %5
%426 = sub nsw i32 %425, 1
%427 = sext i32 %426 to i64
%428 = getelementptr inbounds i8, i8* %424, i64 %427
%429 = load i8, i8* %428
%430 = sext i8 %429 to i32
%431 = icmp eq i32 %430, 118
br i1 %431, label %432, label %468
432: ; preds = %423, %414, %405, %396
%433 = load i8*, i8** %4
%434 = load i32, i32* %5
%435 = add nsw i32 %434, 1
%436 = sext i32 %435 to i64
%437 = getelementptr inbounds i8, i8* %433, i64 %436
%438 = load i8, i8* %437
%439 = sext i8 %438 to i32
%440 = icmp eq i32 %439, 98
br i1 %440, label %720, label %441
441: ; preds = %432
%442 = load i8*, i8** %4
%443 = load i32, i32* %5
%444 = add nsw i32 %443, 1
%445 = sext i32 %444 to i64
%446 = getelementptr inbounds i8, i8* %442, i64 %445
%447 = load i8, i8* %446
%448 = sext i8 %447 to i32
%449 = icmp eq i32 %448, 102
br i1 %449, label %720, label %450
450: ; preds = %441
%451 = load i8*, i8** %4
%452 = load i32, i32* %5
%453 = add nsw i32 %452, 1
%454 = sext i32 %453 to i64
%455 = getelementptr inbounds i8, i8* %451, i64 %454
%456 = load i8, i8* %455
%457 = sext i8 %456 to i32
%458 = icmp eq i32 %457, 112
br i1 %458, label %720, label %459
459: ; preds = %450
%460 = load i8*, i8** %4
%461 = load i32, i32* %5
%462 = add nsw i32 %461, 1
%463 = sext i32 %462 to i64
%464 = getelementptr inbounds i8, i8* %460, i64 %463
%465 = load i8, i8* %464
%466 = sext i8 %465 to i32
%467 = icmp eq i32 %466, 118
br i1 %467, label %720, label %468
468: ; preds = %459, %423
%469 = load i8*, i8** %4
%470 = load i32, i32* %5
%471 = sub nsw i32 %470, 1
%472 = sext i32 %471 to i64
%473 = getelementptr inbounds i8, i8* %469, i64 %472
%474 = load i8, i8* %473
%475 = sext i8 %474 to i32
%476 = icmp eq i32 %475, 99
br i1 %476, label %540, label %477
477: ; preds = %468
%478 = load i8*, i8** %4
%479 = load i32, i32* %5
%480 = sub nsw i32 %479, 1
%481 = sext i32 %480 to i64
%482 = getelementptr inbounds i8, i8* %478, i64 %481
%483 = load i8, i8* %482
%484 = sext i8 %483 to i32
%485 = icmp eq i32 %484, 103
br i1 %485, label %540, label %486
486: ; preds = %477
%487 = load i8*, i8** %4
%488 = load i32, i32* %5
%489 = sub nsw i32 %488, 1
%490 = sext i32 %489 to i64
%491 = getelementptr inbounds i8, i8* %487, i64 %490
%492 = load i8, i8* %491
%493 = sext i8 %492 to i32
%494 = icmp eq i32 %493, 106
br i1 %494, label %540, label %495
495: ; preds = %486
%496 = load i8*, i8** %4
%497 = load i32, i32* %5
%498 = sub nsw i32 %497, 1
%499 = sext i32 %498 to i64
%500 = getelementptr inbounds i8, i8* %496, i64 %499
%501 = load i8, i8* %500
%502 = sext i8 %501 to i32
%503 = icmp eq i32 %502, 107
br i1 %503, label %540, label %504
504: ; preds = %495
%505 = load i8*, i8** %4
%506 = load i32, i32* %5
%507 = sub nsw i32 %506, 1
%508 = sext i32 %507 to i64
%509 = getelementptr inbounds i8, i8* %505, i64 %508
%510 = load i8, i8* %509
%511 = sext i8 %510 to i32
%512 = icmp eq i32 %511, 113
br i1 %512, label %540, label %513
513: ; preds = %504
%514 = load i8*, i8** %4
%515 = load i32, i32* %5
%516 = sub nsw i32 %515, 1
%517 = sext i32 %516 to i64
%518 = getelementptr inbounds i8, i8* %514, i64 %517
%519 = load i8, i8* %518
%520 = sext i8 %519 to i32
%521 = icmp eq i32 %520, 115
br i1 %521, label %540, label %522
522: ; preds = %513
%523 = load i8*, i8** %4
%524 = load i32, i32* %5
%525 = sub nsw i32 %524, 1
%526 = sext i32 %525 to i64
%527 = getelementptr inbounds i8, i8* %523, i64 %526
%528 = load i8, i8* %527
%529 = sext i8 %528 to i32
%530 = icmp eq i32 %529, 120
br i1 %530, label %540, label %531
531: ; preds = %522
%532 = load i8*, i8** %4
%533 = load i32, i32* %5
%534 = sub nsw i32 %533, 1
%535 = sext i32 %534 to i64
%536 = getelementptr inbounds i8, i8* %532, i64 %535
%537 = load i8, i8* %536
%538 = sext i8 %537 to i32
%539 = icmp eq i32 %538, 122
br i1 %539, label %540, label %612
540: ; preds = %531, %522, %513, %504, %495, %486, %477, %468
%541 = load i8*, i8** %4
%542 = load i32, i32* %5
%543 = add nsw i32 %542, 1
%544 = sext i32 %543 to i64
%545 = getelementptr inbounds i8, i8* %541, i64 %544
%546 = load i8, i8* %545
%547 = sext i8 %546 to i32
%548 = icmp eq i32 %547, 99
br i1 %548, label %720, label %549
549: ; preds = %540
%550 = load i8*, i8** %4
%551 = load i32, i32* %5
%552 = add nsw i32 %551, 1
%553 = sext i32 %552 to i64
%554 = getelementptr inbounds i8, i8* %550, i64 %553
%555 = load i8, i8* %554
%556 = sext i8 %555 to i32
%557 = icmp eq i32 %556, 103
br i1 %557, label %720, label %558
558: ; preds = %549
%559 = load i8*, i8** %4
%560 = load i32, i32* %5
%561 = add nsw i32 %560, 1
%562 = sext i32 %561 to i64
%563 = getelementptr inbounds i8, i8* %559, i64 %562
%564 = load i8, i8* %563
%565 = sext i8 %564 to i32
%566 = icmp eq i32 %565, 106
br i1 %566, label %720, label %567
567: ; preds = %558
%568 = load i8*, i8** %4
%569 = load i32, i32* %5
%570 = add nsw i32 %569, 1
%571 = sext i32 %570 to i64
%572 = getelementptr inbounds i8, i8* %568, i64 %571
%573 = load i8, i8* %572
%574 = sext i8 %573 to i32
%575 = icmp eq i32 %574, 107
br i1 %575, label %720, label %576
576: ; preds = %567
%577 = load i8*, i8** %4
%578 = load i32, i32* %5
%579 = add nsw i32 %578, 1
%580 = sext i32 %579 to i64
%581 = getelementptr inbounds i8, i8* %577, i64 %580
%582 = load i8, i8* %581
%583 = sext i8 %582 to i32
%584 = icmp eq i32 %583, 113
br i1 %584, label %720, label %585
585: ; preds = %576
%586 = load i8*, i8** %4
%587 = load i32, i32* %5
%588 = add nsw i32 %587, 1
%589 = sext i32 %588 to i64
%590 = getelementptr inbounds i8, i8* %586, i64 %589
%591 = load i8, i8* %590
%592 = sext i8 %591 to i32
%593 = icmp eq i32 %592, 115
br i1 %593, label %720, label %594
594: ; preds = %585
%595 = load i8*, i8** %4
%596 = load i32, i32* %5
%597 = add nsw i32 %596, 1
%598 = sext i32 %597 to i64
%599 = getelementptr inbounds i8, i8* %595, i64 %598
%600 = load i8, i8* %599
%601 = sext i8 %600 to i32
%602 = icmp eq i32 %601, 120
br i1 %602, label %720, label %603
603: ; preds = %594
%604 = load i8*, i8** %4
%605 = load i32, i32* %5
%606 = add nsw i32 %605, 1
%607 = sext i32 %606 to i64
%608 = getelementptr inbounds i8, i8* %604, i64 %607
%609 = load i8, i8* %608
%610 = sext i8 %609 to i32
%611 = icmp eq i32 %610, 122
br i1 %611, label %720, label %612
612: ; preds = %603, %531
%613 = load i8*, i8** %4
%614 = load i32, i32* %5
%615 = sub nsw i32 %614, 1
%616 = sext i32 %615 to i64
%617 = getelementptr inbounds i8, i8* %613, i64 %616
%618 = load i8, i8* %617
%619 = sext i8 %618 to i32
%620 = icmp eq i32 %619, 100
br i1 %620, label %630, label %621
621: ; preds = %612
%622 = load i8*, i8** %4
%623 = load i32, i32* %5
%624 = sub nsw i32 %623, 1
%625 = sext i32 %624 to i64
%626 = getelementptr inbounds i8, i8* %622, i64 %625
%627 = load i8, i8* %626
%628 = sext i8 %627 to i32
%629 = icmp eq i32 %628, 116
br i1 %629, label %630, label %648
630: ; preds = %621, %612
%631 = load i8*, i8** %4
%632 = load i32, i32* %5
%633 = add nsw i32 %632, 1
%634 = sext i32 %633 to i64
%635 = getelementptr inbounds i8, i8* %631, i64 %634
%636 = load i8, i8* %635
%637 = sext i8 %636 to i32
%638 = icmp eq i32 %637, 100
br i1 %638, label %720, label %639
639: ; preds = %630
%640 = load i8*, i8** %4
%641 = load i32, i32* %5
%642 = add nsw i32 %641, 1
%643 = sext i32 %642 to i64
%644 = getelementptr inbounds i8, i8* %640, i64 %643
%645 = load i8, i8* %644
%646 = sext i8 %645 to i32
%647 = icmp eq i32 %646, 116
br i1 %647, label %720, label %648
648: ; preds = %639, %621
%649 = load i8*, i8** %4
%650 = load i32, i32* %5
%651 = sub nsw i32 %650, 1
%652 = sext i32 %651 to i64
%653 = getelementptr inbounds i8, i8* %649, i64 %652
%654 = load i8, i8* %653
%655 = sext i8 %654 to i32
%656 = icmp eq i32 %655, 108
br i1 %656, label %657, label %666
657: ; preds = %648
%658 = load i8*, i8** %4
%659 = load i32, i32* %5
%660 = add nsw i32 %659, 1
%661 = sext i32 %660 to i64
%662 = getelementptr inbounds i8, i8* %658, i64 %661
%663 = load i8, i8* %662
%664 = sext i8 %663 to i32
%665 = icmp eq i32 %664, 108
br i1 %665, label %720, label %666
666: ; preds = %657, %648
%667 = load i8*, i8** %4
%668 = load i32, i32* %5
%669 = sub nsw i32 %668, 1
%670 = sext i32 %669 to i64
%671 = getelementptr inbounds i8, i8* %667, i64 %670
%672 = load i8, i8* %671
%673 = sext i8 %672 to i32
%674 = icmp eq i32 %673, 109
br i1 %674, label %684, label %675
675: ; preds = %666
%676 = load i8*, i8** %4
%677 = load i32, i32* %5
%678 = sub nsw i32 %677, 1
%679 = sext i32 %678 to i64
%680 = getelementptr inbounds i8, i8* %676, i64 %679
%681 = load i8, i8* %680
%682 = sext i8 %681 to i32
%683 = icmp eq i32 %682, 110
br i1 %683, label %684, label %702
684: ; preds = %675, %666
%685 = load i8*, i8** %4
%686 = load i32, i32* %5
%687 = add nsw i32 %686, 1
%688 = sext i32 %687 to i64
%689 = getelementptr inbounds i8, i8* %685, i64 %688
%690 = load i8, i8* %689
%691 = sext i8 %690 to i32
%692 = icmp eq i32 %691, 109
br i1 %692, label %720, label %693
693: ; preds = %684
%694 = load i8*, i8** %4
%695 = load i32, i32* %5
%696 = add nsw i32 %695, 1
%697 = sext i32 %696 to i64
%698 = getelementptr inbounds i8, i8* %694, i64 %697
%699 = load i8, i8* %698
%700 = sext i8 %699 to i32
%701 = icmp eq i32 %700, 110
br i1 %701, label %720, label %702
702: ; preds = %693, %675
%703 = load i8*, i8** %4
%704 = load i32, i32* %5
%705 = sub nsw i32 %704, 1
%706 = sext i32 %705 to i64
%707 = getelementptr inbounds i8, i8* %703, i64 %706
%708 = load i8, i8* %707
%709 = sext i8 %708 to i32
%710 = icmp eq i32 %709, 114
br i1 %710, label %711, label %730
711: ; preds = %702
%712 = load i8*, i8** %4
%713 = load i32, i32* %5
%714 = add nsw i32 %713, 1
%715 = sext i32 %714 to i64
%716 = getelementptr inbounds i8, i8* %712, i64 %715
%717 = load i8, i8* %716
%718 = sext i8 %717 to i32
%719 = icmp eq i32 %718, 114
br i1 %719, label %720, label %730
720: ; preds = %711, %693, %684, %657, %639, %630, %603, %594, %585, %576, %567, %558, %549, %540, %459, %450, %441, %432
%721 = load i8*, i8** %4
%722 = load i32, i32* %5
%723 = add nsw i32 %722, 1
%724 = sext i32 %723 to i64
%725 = getelementptr inbounds i8, i8* %721, i64 %724
store i8 32, i8* %725
%726 = load i8*, i8** %4
%727 = load i32, i32* %5
%728 = sext i32 %727 to i64
%729 = getelementptr inbounds i8, i8* %726, i64 %728
store i8 32, i8* %729
br label %730
730: ; preds = %720, %711, %702, %388, %377, %372
br label %731
731: ; preds = %730
%732 = load i32, i32* %5
%733 = add nsw i32 %732, 1
store i32 %733, i32* %5
br label %368
734: ; preds = %368
%735 = load i8*, i8** %4
%736 = call i32 (i8*, ...) bitcast (i32 (...)* @shift_whitespaces to i32 (i8*, ...)*)(i8* %735)
%737 = call i32 (i8**, i32, ...) bitcast (i32 (...)* @trim to i32 (i8**, i32, ...)*)(i8** %4, i32 %736)
store i32 %737, i32* %7
store i32 1, i32* %5
br label %738
738: ; preds = %812, %734
%739 = load i32, i32* %5
%740 = load i32, i32* %7
%741 = icmp slt i32 %739, %740
br i1 %741, label %742, label %815
742: ; preds = %738
%743 = load i8*, i8** %4
%744 = load i32, i32* %5
%745 = sext i32 %744 to i64
%746 = getelementptr inbounds i8, i8* %743, i64 %745
%747 = load i8, i8* %746
%748 = sext i8 %747 to i32
%749 = icmp eq i32 %748, 97
br i1 %749, label %806, label %750
750: ; preds = %742
%751 = load i8*, i8** %4
%752 = load i32, i32* %5
%753 = sext i32 %752 to i64
%754 = getelementptr inbounds i8, i8* %751, i64 %753
%755 = load i8, i8* %754
%756 = sext i8 %755 to i32
%757 = icmp eq i32 %756, 101
br i1 %757, label %806, label %758
758: ; preds = %750
%759 = load i8*, i8** %4
%760 = load i32, i32* %5
%761 = sext i32 %760 to i64
%762 = getelementptr inbounds i8, i8* %759, i64 %761
%763 = load i8, i8* %762
%764 = sext i8 %763 to i32
%765 = icmp eq i32 %764, 105
br i1 %765, label %806, label %766
766: ; preds = %758
%767 = load i8*, i8** %4
%768 = load i32, i32* %5
%769 = sext i32 %768 to i64
%770 = getelementptr inbounds i8, i8* %767, i64 %769
%771 = load i8, i8* %770
%772 = sext i8 %771 to i32
%773 = icmp eq i32 %772, 111
br i1 %773, label %806, label %774
774: ; preds = %766
%775 = load i8*, i8** %4
%776 = load i32, i32* %5
%777 = sext i32 %776 to i64
%778 = getelementptr inbounds i8, i8* %775, i64 %777
%779 = load i8, i8* %778
%780 = sext i8 %779 to i32
%781 = icmp eq i32 %780, 117
br i1 %781, label %806, label %782
782: ; preds = %774
%783 = load i8*, i8** %4
%784 = load i32, i32* %5
%785 = sext i32 %784 to i64
%786 = getelementptr inbounds i8, i8* %783, i64 %785
%787 = load i8, i8* %786
%788 = sext i8 %787 to i32
%789 = icmp eq i32 %788, 121
br i1 %789, label %806, label %790
790: ; preds = %782
%791 = load i8*, i8** %4
%792 = load i32, i32* %5
%793 = sext i32 %792 to i64
%794 = getelementptr inbounds i8, i8* %791, i64 %793
%795 = load i8, i8* %794
%796 = sext i8 %795 to i32
%797 = icmp eq i32 %796, 104
br i1 %797, label %806, label %798
798: ; preds = %790
%799 = load i8*, i8** %4
%800 = load i32, i32* %5
%801 = sext i32 %800 to i64
%802 = getelementptr inbounds i8, i8* %799, i64 %801
%803 = load i8, i8* %802
%804 = sext i8 %803 to i32
%805 = icmp eq i32 %804, 119
br i1 %805, label %806, label %811
806: ; preds = %798, %790, %782, %774, %766, %758, %750, %742
%807 = load i8*, i8** %4
%808 = load i32, i32* %5
%809 = sext i32 %808 to i64
%810 = getelementptr inbounds i8, i8* %807, i64 %809
store i8 32, i8* %810
br label %811
811: ; preds = %806, %798
br label %812
812: ; preds = %811
%813 = load i32, i32* %5
%814 = add nsw i32 %813, 1
store i32 %814, i32* %5
br label %738
815: ; preds = %738
%816 = load i8*, i8** %4
%817 = call i32 (i8*, ...) bitcast (i32 (...)* @shift_whitespaces to i32 (i8*, ...)*)(i8* %816)
%818 = call i32 (i8**, i32, ...) bitcast (i32 (...)* @trim to i32 (i8**, i32, ...)*)(i8** %4, i32 %817)
store i32 %818, i32* %7
store i32 1, i32* %5
br label %819
819: ; preds = %984, %815
%820 = load i32, i32* %5
%821 = load i32, i32* %7
%822 = icmp slt i32 %820, %821
br i1 %822, label %823, label %987
823: ; preds = %819
%824 = load i8*, i8** %4
%825 = load i32, i32* %5
%826 = sext i32 %825 to i64
%827 = getelementptr inbounds i8, i8* %824, i64 %826
%828 = load i8, i8* %827
%829 = sext i8 %828 to i32
%830 = icmp eq i32 %829, 98
br i1 %830, label %855, label %831
831: ; preds = %823
%832 = load i8*, i8** %4
%833 = load i32, i32* %5
%834 = sext i32 %833 to i64
%835 = getelementptr inbounds i8, i8* %832, i64 %834
%836 = load i8, i8* %835
%837 = sext i8 %836 to i32
%838 = icmp eq i32 %837, 102
br i1 %838, label %855, label %839
839: ; preds = %831
%840 = load i8*, i8** %4
%841 = load i32, i32* %5
%842 = sext i32 %841 to i64
%843 = getelementptr inbounds i8, i8* %840, i64 %842
%844 = load i8, i8* %843
%845 = sext i8 %844 to i32
%846 = icmp eq i32 %845, 112
br i1 %846, label %855, label %847
847: ; preds = %839
%848 = load i8*, i8** %4
%849 = load i32, i32* %5
%850 = sext i32 %849 to i64
%851 = getelementptr inbounds i8, i8* %848, i64 %850
%852 = load i8, i8* %851
%853 = sext i8 %852 to i32
%854 = icmp eq i32 %853, 118
br i1 %854, label %855, label %856
855: ; preds = %847, %839, %831, %823
store i32 1, i32* %8
br i1 true, label %973, label %856
856: ; preds = %855, %847
%857 = load i8*, i8** %4
%858 = load i32, i32* %5
%859 = sext i32 %858 to i64
%860 = getelementptr inbounds i8, i8* %857, i64 %859
%861 = load i8, i8* %860
%862 = sext i8 %861 to i32
%863 = icmp eq i32 %862, 99
br i1 %863, label %920, label %864
864: ; preds = %856
%865 = load i8*, i8** %4
%866 = load i32, i32* %5
%867 = sext i32 %866 to i64
%868 = getelementptr inbounds i8, i8* %865, i64 %867
%869 = load i8, i8* %868
%870 = sext i8 %869 to i32
%871 = icmp eq i32 %870, 103
br i1 %871, label %920, label %872
872: ; preds = %864
%873 = load i8*, i8** %4
%874 = load i32, i32* %5
%875 = sext i32 %874 to i64
%876 = getelementptr inbounds i8, i8* %873, i64 %875
%877 = load i8, i8* %876
%878 = sext i8 %877 to i32
%879 = icmp eq i32 %878, 106
br i1 %879, label %920, label %880
880: ; preds = %872
%881 = load i8*, i8** %4
%882 = load i32, i32* %5
%883 = sext i32 %882 to i64
%884 = getelementptr inbounds i8, i8* %881, i64 %883
%885 = load i8, i8* %884
%886 = sext i8 %885 to i32
%887 = icmp eq i32 %886, 107
br i1 %887, label %920, label %888
888: ; preds = %880
%889 = load i8*, i8** %4
%890 = load i32, i32* %5
%891 = sext i32 %890 to i64
%892 = getelementptr inbounds i8, i8* %889, i64 %891
%893 = load i8, i8* %892
%894 = sext i8 %893 to i32
%895 = icmp eq i32 %894, 113
br i1 %895, label %920, label %896
896: ; preds = %888
%897 = load i8*, i8** %4
%898 = load i32, i32* %5
%899 = sext i32 %898 to i64
%900 = getelementptr inbounds i8, i8* %897, i64 %899
%901 = load i8, i8* %900
%902 = sext i8 %901 to i32
%903 = icmp eq i32 %902, 115
br i1 %903, label %920, label %904
904: ; preds = %896
%905 = load i8*, i8** %4
%906 = load i32, i32* %5
%907 = sext i32 %906 to i64
%908 = getelementptr inbounds i8, i8* %905, i64 %907
%909 = load i8, i8* %908
%910 = sext i8 %909 to i32
%911 = icmp eq i32 %910, 120
br i1 %911, label %920, label %912
912: ; preds = %904
%913 = load i8*, i8** %4
%914 = load i32, i32* %5
%915 = sext i32 %914 to i64
%916 = getelementptr inbounds i8, i8* %913, i64 %915
%917 = load i8, i8* %916
%918 = sext i8 %917 to i32
%919 = icmp eq i32 %918, 122
br i1 %919, label %920, label %921
920: ; preds = %912, %904, %896, %888, %880, %872, %864, %856
store i32 2, i32* %8
br i1 true, label %973, label %921
921: ; preds = %920, %912
%922 = load i8*, i8** %4
%923 = load i32, i32* %5
%924 = sext i32 %923 to i64
%925 = getelementptr inbounds i8, i8* %922, i64 %924
%926 = load i8, i8* %925
%927 = sext i8 %926 to i32
%928 = icmp eq i32 %927, 100
br i1 %928, label %937, label %929
929: ; preds = %921
%930 = load i8*, i8** %4
%931 = load i32, i32* %5
%932 = sext i32 %931 to i64
%933 = getelementptr inbounds i8, i8* %930, i64 %932
%934 = load i8, i8* %933
%935 = sext i8 %934 to i32
%936 = icmp eq i32 %935, 116
br i1 %936, label %937, label %938
937: ; preds = %929, %921
store i32 3, i32* %8
br i1 true, label %973, label %938
938: ; preds = %937, %929
%939 = load i8*, i8** %4
%940 = load i32, i32* %5
%941 = sext i32 %940 to i64
%942 = getelementptr inbounds i8, i8* %939, i64 %941
%943 = load i8, i8* %942
%944 = sext i8 %943 to i32
%945 = icmp eq i32 %944, 108
br i1 %945, label %946, label %947
946: ; preds = %938
store i32 4, i32* %8
br i1 true, label %973, label %947
947: ; preds = %946, %938
%948 = load i8*, i8** %4
%949 = load i32, i32* %5
%950 = sext i32 %949 to i64
%951 = getelementptr inbounds i8, i8* %948, i64 %950
%952 = load i8, i8* %951
%953 = sext i8 %952 to i32
%954 = icmp eq i32 %953, 109
br i1 %954, label %963, label %955
955: ; preds = %947
%956 = load i8*, i8** %4
%957 = load i32, i32* %5
%958 = sext i32 %957 to i64
%959 = getelementptr inbounds i8, i8* %956, i64 %958
%960 = load i8, i8* %959
%961 = sext i8 %960 to i32
%962 = icmp eq i32 %961, 110
br i1 %962, label %963, label %964
963: ; preds = %955, %947
store i32 5, i32* %8
br i1 true, label %973, label %964
964: ; preds = %963, %955
%965 = load i8*, i8** %4
%966 = load i32, i32* %5
%967 = sext i32 %966 to i64
%968 = getelementptr inbounds i8, i8* %965, i64 %967
%969 = load i8, i8* %968
%970 = sext i8 %969 to i32
%971 = icmp eq i32 %970, 114
br i1 %971, label %972, label %983
972: ; preds = %964
store i32 6, i32* %8
br i1 true, label %973, label %983
973: ; preds = %972, %963, %946, %937, %920, %855
%974 = load i32, i32* %8
%975 = trunc i32 %974 to i8
%976 = sext i8 %975 to i32
%977 = add nsw i32 48, %976
%978 = trunc i32 %977 to i8
%979 = load i8*, i8** %4
%980 = load i32, i32* %5
%981 = sext i32 %980 to i64
%982 = getelementptr inbounds i8, i8* %979, i64 %981
store i8 %978, i8* %982
br label %983
983: ; preds = %973, %972, %964
br label %984
984: ; preds = %983
%985 = load i32, i32* %5
%986 = add nsw i32 %985, 1
store i32 %986, i32* %5
br label %819
987: ; preds = %819
%988 = load i32, i32* %7
%989 = icmp sgt i32 %988, 4
br i1 %989, label %990, label %1011
990: ; preds = %987
%991 = call i8* @calloc(i64 4, i64 1)
store i8* %991, i8** %3
store i32 0, i32* %5
br label %992
992: ; preds = %1005, %990
%993 = load i32, i32* %5
%994 = icmp slt i32 %993, 4
br i1 %994, label %995, label %1008
995: ; preds = %992
%996 = load i8*, i8** %4
%997 = load i32, i32* %5
%998 = sext i32 %997 to i64
%999 = getelementptr inbounds i8, i8* %996, i64 %998
%1000 = load i8, i8* %999
%1001 = load i8*, i8** %3
%1002 = load i32, i32* %5
%1003 = sext i32 %1002 to i64
%1004 = getelementptr inbounds i8, i8* %1001, i64 %1003
store i8 %1000, i8* %1004
br label %1005
1005: ; preds = %995
%1006 = load i32, i32* %5
%1007 = add nsw i32 %1006, 1
store i32 %1007, i32* %5
br label %992
1008: ; preds = %992
%1009 = load i8*, i8** %4
%1010 = load i8*, i8** %3
store i8* %1010, i8** %4
br label %1053
1011: ; preds = %987
%1012 = load i32, i32* %7
%1013 = icmp slt i32 %1012, 4
br i1 %1013, label %1014, label %1052
1014: ; preds = %1011
%1015 = load i32, i32* %7
%1016 = icmp sgt i32 %1015, 0
br i1 %1016, label %1017, label %1052
1017: ; preds = %1014
%1018 = call i8* @calloc(i64 4, i64 1)
store i8* %1018, i8** %3
store i32 0, i32* %5
br label %1019
1019: ; preds = %1033, %1017
%1020 = load i32, i32* %5
%1021 = load i32, i32* %7
%1022 = icmp slt i32 %1020, %1021
br i1 %1022, label %1023, label %1036
1023: ; preds = %1019
%1024 = load i8*, i8** %4
%1025 = load i32, i32* %5
%1026 = sext i32 %1025 to i64
%1027 = getelementptr inbounds i8, i8* %1024, i64 %1026
%1028 = load i8, i8* %1027
%1029 = load i8*, i8** %3
%1030 = load i32, i32* %5
%1031 = sext i32 %1030 to i64
%1032 = getelementptr inbounds i8, i8* %1029, i64 %1031
store i8 %1028, i8* %1032
br label %1033
1033: ; preds = %1023
%1034 = load i32, i32* %5
%1035 = add nsw i32 %1034, 1
store i32 %1035, i32* %5
br label %1019
1036: ; preds = %1019
%1037 = load i8*, i8** %4
%1038 = load i8*, i8** %3
store i8* %1038, i8** %4
%1039 = load i32, i32* %7
store i32 %1039, i32* %5
br label %1040
1040: ; preds = %1048, %1036
%1041 = load i32, i32* %5
%1042 = icmp slt i32 %1041, 4
br i1 %1042, label %1043, label %1051
1043: ; preds = %1040
%1044 = load i8*, i8** %4
%1045 = load i32, i32* %5
%1046 = sext i32 %1045 to i64
%1047 = getelementptr inbounds i8, i8* %1044, i64 %1046
store i8 48, i8* %1047
br label %1048
1048: ; preds = %1043
%1049 = load i32, i32* %5
%1050 = add nsw i32 %1049, 1
store i32 %1050, i32* %5
br label %1040
1051: ; preds = %1040
br label %1052
1052: ; preds = %1051, %1014, %1011
br label %1053
1053: ; preds = %1052, %1008
%1054 = load i8*, i8** %4
%1055 = getelementptr inbounds i8, i8* %1054, i64 0
%1056 = load i8, i8* %1055
%1057 = sext i8 %1056 to i32
%1058 = call i32 @toupper(i32 %1057)
%1059 = trunc i32 %1058 to i8
%1060 = load i8*, i8** %4
%1061 = getelementptr inbounds i8, i8* %1060, i64 0
store i8 %1059, i8* %1061
%1062 = load i8*, i8** %4
ret i8* %1062
}

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