int gm_encode(int gbdata[], int length, char binary[], int reader) {
  int sp, current_mode, next_mode, last_mode, glyph = 0;
  int c1, c2, done;
  int p = 0, ppos;
  int numbuf[3], punt = 0;
  int number_pad_posn, debug = 0;
  int byte_count_posn = 0, byte_count = 0;
  int shift, i;
  strcpy(binary, "");
  sp = 0;
  current_mode = 0;
  last_mode = 0;
  number_pad_posn = 0;
  if (reader) {
    concat(binary, "1010");
  }
  do {
    next_mode = seek_forward(gbdata, length, sp, current_mode);
    if (next_mode != current_mode) {
      switch (current_mode) {
      case 0:
        switch (next_mode) {
        case 7:
          concat(binary, "0001");
          break;
        case 1:
          concat(binary, "0010");
          break;
        case 2:
          concat(binary, "0011");
          break;
        case 3:
          concat(binary, "0100");
          break;
        case 4:
          concat(binary, "0101");
          break;
        case 6:
          concat(binary, "0111");
          break;
        }
        break;
      case 7:
        switch (next_mode) {
        case 1:
          concat(binary, "1111111100001");
          break;
        case 2:
          concat(binary, "1111111100010");
          break;
        case 3:
          concat(binary, "1111111100011");
          break;
        case 4:
          concat(binary, "1111111100100");
          break;
        case 6:
          concat(binary, "1111111100101");
          break;
        }
        break;
      case 1:
        switch (p) {
        case 1:
          binary[number_pad_posn] = '1';
          binary[number_pad_posn + 1] = '0';
          break;
        case 2:
          binary[number_pad_posn] = '0';
          binary[number_pad_posn + 1] = '1';
          break;
        case 3:
          binary[number_pad_posn] = '0';
          binary[number_pad_posn + 1] = '0';
          break;
        }
        switch (next_mode) {
        case 7:
          concat(binary, "1111111011");
          break;
        case 2:
          concat(binary, "1111111100");
          break;
        case 3:
          concat(binary, "1111111101");
          break;
        case 4:
          concat(binary, "1111111110");
          break;
        case 6:
          concat(binary, "1111111111");
          break;
        }
        break;
      case 2:
      case 3:
        switch (next_mode) {
        case 7:
          concat(binary, "11100");
          break;
        case 1:
          concat(binary, "11101");
          break;
        case 2:
        case 3:
          concat(binary, "11110");
          break;
        case 4:
          concat(binary, "1111100");
          break;
        case 6:
          concat(binary, "1111110");
          break;
        }
        break;
      case 4:
        switch (next_mode) {
        case 7:
          concat(binary, "1111110001");
          break;
        case 1:
          concat(binary, "1111110010");
          break;
        case 2:
          concat(binary, "1111110011");
          break;
        case 3:
          concat(binary, "1111110100");
          break;
        case 6:
          concat(binary, "1111110111");
          break;
        }
        break;
      case 6:
        add_byte_count(binary, byte_count_posn, byte_count);
        byte_count = 0;
        switch (next_mode) {
        case 7:
          concat(binary, "0001");
          break;
        case 1:
          concat(binary, "0010");
          break;
        case 2:
          concat(binary, "0011");
          break;
        case 3:
          concat(binary, "0100");
          break;
        case 4:
          concat(binary, "0101");
          break;
        }
        break;
      }
      if (debug) {
        switch (next_mode) {
        case 7:
          printf("CHIN ");
          break;
        case 1:
          printf("NUMB ");
          break;
        case 2:
          printf("LOWR ");
          break;
        case 3:
          printf("UPPR ");
          break;
        case 4:
          printf("MIXD ");
          break;
        case 6:
          printf("BYTE ");
          break;
        }
      }
    }
    last_mode = current_mode;
    current_mode = next_mode;
    switch (current_mode) {
    case 7:
      done = 0;
      if (gbdata[sp] > 0xff) {
        c1 = (gbdata[sp] & 0xff00) >> 8;
        c2 = gbdata[sp] & 0xff;
        if ((c1 >= 0xa0) && (c1 <= 0xa9)) {
          glyph = (0x60 * (c1 - 0xa1)) + (c2 - 0xa0);
        }
        if ((c1 >= 0xb0) && (c1 <= 0xf7)) {
          glyph = (0x60 * (c1 - 0xb0 + 9)) + (c2 - 0xa0);
        }
        done = 1;
      }
      if (!(done)) {
        if (sp != (length - 1)) {
          if ((gbdata[sp] == 0x13) && (gbdata[sp + 1] == 0x10)) {
            glyph = 7776;
            sp++;
          }
          done = 1;
        }
      }
      if (!(done)) {
        if (sp != (length - 1)) {
          if (((gbdata[sp] >= '0') && (gbdata[sp] <= '9')) &&
              ((gbdata[sp + 1] >= '0') && (gbdata[sp + 1] <= '9'))) {
            glyph = 8033 + (10 * (gbdata[sp] - '0')) + (gbdata[sp + 1] - '0');
            sp++;
          }
        }
      }
      if (!(done)) {
        glyph = 7777 + gbdata[sp];
      }
      if (debug) {
        printf("[%d] ", glyph);
      }
      if (glyph & 0x1000) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x800) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x400) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x200) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x100) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x80) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x40) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x20) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x10) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x08) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x04) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x02) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x01) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      sp++;
      break;
    case 1:
      if (last_mode != current_mode) {
        number_pad_posn = strlen(binary);
        concat(binary, "XX");
      }
      p = 0;
      ppos = -1;
      numbuf[0] = '0';
      numbuf[1] = '0';
      numbuf[2] = '0';
      do {
        if ((gbdata[sp] >= '0') && (gbdata[sp] <= '9')) {
          numbuf[p] = gbdata[sp];
          sp++;
          p++;
        }
        switch (gbdata[sp]) {
        case ' ':
        case '+':
        case '-':
        case '.':
        case ',':
          punt = gbdata[sp];
          sp++;
          ppos = p;
          break;
        }
        if (sp < (length - 1)) {
          if ((gbdata[sp] == 0x13) && (gbdata[sp + 1] == 0x10)) {
            punt = gbdata[sp];
            sp += 2;
            ppos = p;
          }
        }
      } while ((p < 3) && (sp < length));
      if (ppos != -1) {
        switch (punt) {
        case ' ':
          glyph = 0;
          break;
        case '+':
          glyph = 3;
          break;
        case '-':
          glyph = 6;
          break;
        case '.':
          glyph = 9;
          break;
        case ',':
          glyph = 12;
          break;
        case 0x13:
          glyph = 15;
          break;
        }
        glyph += ppos;
        glyph += 1000;
        if (debug) {
          printf("[%d] ", glyph);
        }
        if (glyph & 0x200) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x100) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x80) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x40) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x20) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x10) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x08) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x04) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x02) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x01) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
      }
      glyph = (100 * (numbuf[0] - '0')) + (10 * (numbuf[1] - '0')) +
              (numbuf[2] - '0');
      if (debug) {
        printf("[%d] ", glyph);
      }
      if (glyph & 0x200) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x100) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x80) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x40) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x20) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x10) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x08) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x04) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x02) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x01) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      break;
    case 6:
      if (last_mode != current_mode) {
        byte_count_posn = strlen(binary);
        concat(binary, "LLLLLLLLL");
      }
      if (byte_count == 512) {
        add_byte_count(binary, byte_count_posn, byte_count);
        concat(binary, "0111");
        byte_count_posn = strlen(binary);
        concat(binary, "LLLLLLLLL");
        byte_count = 0;
      }
      glyph = gbdata[sp];
      if (debug) {
        printf("[%d] ", glyph);
      }
      if (glyph & 0x80) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x40) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x20) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x10) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x08) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x04) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x02) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      if (glyph & 0x01) {
        concat(binary, "1");
      } else {
        concat(binary, "0");
      }
      sp++;
      byte_count++;
      break;
    case 4:
      shift = 1;
      if ((gbdata[sp] >= '0') && (gbdata[sp] <= '9')) {
        shift = 0;
      }
      if ((gbdata[sp] >= 'A') && (gbdata[sp] <= 'Z')) {
        shift = 0;
      }
      if ((gbdata[sp] >= 'a') && (gbdata[sp] <= 'z')) {
        shift = 0;
      }
      if (gbdata[sp] == ' ') {
        shift = 0;
      }
      if (shift == 0) {
        glyph = posn(
            "0123456789ABCDEFGHIJKLMOPRSTUVWXYZabcdefghijklmnopqrstuvwxyz ",
            gbdata[sp]);
        if (debug) {
          printf("[%d] ", glyph);
        }
        if (glyph & 0x20) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x10) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x08) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x04) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x02) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x01) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
      } else {
        concat(binary, "1111110110");
        add_shift_char(binary, gbdata[sp]);
      }
      sp++;
      break;
    case 3:
      shift = 1;
      if ((gbdata[sp] >= 'A') && (gbdata[sp] <= 'Z')) {
        shift = 0;
      }
      if (gbdata[sp] == ' ') {
        shift = 0;
      }
      if (shift == 0) {
        glyph = posn("ABCDEFGHIJKLMNOPQRSTUVWXYZ ", gbdata[sp]);
        if (debug) {
          printf("[%d] ", glyph);
        }
        if (glyph & 0x10) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x08) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x04) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x02) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x01) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
      } else {
        concat(binary, "1111101");
        add_shift_char(binary, gbdata[sp]);
      }
      sp++;
      break;
    case 2:
      shift = 1;
      if ((gbdata[sp] >= 'a') && (gbdata[sp] <= 'z')) {
        shift = 0;
      }
      if (gbdata[sp] == ' ') {
        shift = 0;
      }
      if (shift == 0) {
        glyph = posn("abcdefghijklmnopqrstuvwxyz ", gbdata[sp]);
        if (debug) {
          printf("[%d] ", glyph);
        }
        if (glyph & 0x10) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x08) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x04) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x02) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
        if (glyph & 0x01) {
          concat(binary, "1");
        } else {
          concat(binary, "0");
        }
      } else {
        concat(binary, "1111101");
        add_shift_char(binary, gbdata[sp]);
      }
      sp++;
      break;
    }
    if (strlen(binary) > 9191) {
      return 5;
    }
  } while (sp < length);
  if (current_mode == 1) {
    switch (p) {
    case 1:
      binary[number_pad_posn] = '1';
      binary[number_pad_posn + 1] = '0';
      break;
    case 2:
      binary[number_pad_posn] = '0';
      binary[number_pad_posn + 1] = '1';
      break;
    case 3:
      binary[number_pad_posn] = '0';
      binary[number_pad_posn + 1] = '0';
      break;
    }
  }
  if (current_mode == 6) {
    add_byte_count(binary, byte_count_posn, byte_count);
  }
  switch (current_mode) {
  case 7:
    concat(binary, "1111111100000");
    break;
  case 1:
    concat(binary, "1111111010");
    break;
  case 2:
  case 3:
    concat(binary, "11011");
    break;
  case 4:
    concat(binary, "1111110000");
    break;
  case 6:
    concat(binary, "0000");
    break;
  }
  p = 7 - (strlen(binary) % 7);
  if (p == 7) {
    p = 0;
  }
  for (i = 0; i < p; i++) {
    concat(binary, "0");
  }
  if (strlen(binary) > 9191) {
    return 5;
  }
  return 0;
}


x86 assembly (clang, -O0):
<gm_encode>:
push   %rbp
mov    %rsp,%rbp
sub    $0xf0,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %rdx,-0x20(%rbp)
mov    %ecx,-0x24(%rbp)
movl   $0x0,-0x38(%rbp)
movl   $0x0,-0x48(%rbp)
movl   $0x0,-0x5c(%rbp)
movl   $0x0,-0x64(%rbp)
movl   $0x0,-0x68(%rbp)
movl   $0x0,-0x6c(%rbp)
mov    -0x20(%rbp),%rdi
lea    0x2075(%rip),%rsi
call   1030 <strcpy@plt>
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x34(%rbp)
movl   $0x0,-0x60(%rbp)
cmpl   $0x0,-0x24(%rbp)
je     120b <gm_encode+0x8b>
mov    -0x20(%rbp),%rdi
lea    0x20e4(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1210 <gm_encode+0x90>
mov    -0x10(%rbp),%rdi
mov    -0x14(%rbp),%esi
mov    -0x28(%rbp),%edx
mov    -0x2c(%rbp),%ecx
mov    $0x0,%al
call   1070 <seek_forward@plt>
mov    %eax,-0x30(%rbp)
mov    -0x30(%rbp),%eax
cmp    -0x2c(%rbp),%eax
je     17a3 <gm_encode+0x623>
mov    -0x2c(%rbp),%eax
mov    %rax,-0x80(%rbp)
sub    $0x7,%rax
ja     16f3 <gm_encode+0x573>
mov    -0x80(%rbp),%rax
lea    0x1db1(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x88(%rbp)
sub    $0x6,%eax
ja     130c <gm_encode+0x18c>
mov    -0x88(%rbp),%rax
lea    0x1e26(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x20(%rbp),%rdi
lea    0x1efb(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    130c <gm_encode+0x18c>
mov    -0x20(%rbp),%rdi
lea    0x1ef2(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    130c <gm_encode+0x18c>
mov    -0x20(%rbp),%rdi
lea    0x1ee9(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    130c <gm_encode+0x18c>
mov    -0x20(%rbp),%rdi
lea    0x1ee0(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    130c <gm_encode+0x18c>
mov    -0x20(%rbp),%rdi
lea    0x1ed7(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    130c <gm_encode+0x18c>
mov    -0x20(%rbp),%rdi
lea    0x1f2e(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    16f3 <gm_encode+0x573>
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x90(%rbp)
sub    $0x5,%eax
ja     13ae <gm_encode+0x22e>
mov    -0x90(%rbp),%rax
lea    0x1d55(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x20(%rbp),%rdi
lea    0x1e39(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    13ae <gm_encode+0x22e>
mov    -0x20(%rbp),%rdi
lea    0x1e30(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    13ae <gm_encode+0x22e>
mov    -0x20(%rbp),%rdi
lea    0x1e27(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    13ae <gm_encode+0x22e>
mov    -0x20(%rbp),%rdi
lea    0x1e1e(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    13ae <gm_encode+0x22e>
mov    -0x20(%rbp),%rdi
lea    0x1e15(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    16f3 <gm_encode+0x573>
mov    -0x48(%rbp),%eax
mov    %eax,-0x94(%rbp)
sub    $0x1,%eax
je     13f2 <gm_encode+0x272>
jmp    13ca <gm_encode+0x24a>
mov    -0x94(%rbp),%eax
sub    $0x2,%eax
je     1414 <gm_encode+0x294>
jmp    13de <gm_encode+0x25e>
mov    -0x94(%rbp),%eax
sub    $0x3,%eax
je     1436 <gm_encode+0x2b6>
jmp    1453 <gm_encode+0x2d3>
mov    -0x20(%rbp),%rax
movslq -0x60(%rbp),%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x30,(%rax,%rcx,1)
jmp    1453 <gm_encode+0x2d3>
mov    -0x20(%rbp),%rax
movslq -0x60(%rbp),%rcx
movb   $0x30,(%rax,%rcx,1)
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
jmp    1453 <gm_encode+0x2d3>
mov    -0x20(%rbp),%rax
movslq -0x60(%rbp),%rcx
movb   $0x30,(%rax,%rcx,1)
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x30,(%rax,%rcx,1)
mov    -0x30(%rbp),%eax
add    $0xfffffffe,%eax
mov    %eax,%ecx
mov    %rcx,-0xa0(%rbp)
sub    $0x5,%eax
ja     14f0 <gm_encode+0x370>
mov    -0xa0(%rbp),%rax
lea    0x1bfb(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x20(%rbp),%rdi
lea    0x1d3d(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    14f0 <gm_encode+0x370>
mov    -0x20(%rbp),%rdi
lea    0x1d31(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    14f0 <gm_encode+0x370>
mov    -0x20(%rbp),%rdi
lea    0x1d25(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    14f0 <gm_encode+0x370>
mov    -0x20(%rbp),%rdi
lea    0x1d19(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    14f0 <gm_encode+0x370>
mov    -0x20(%rbp),%rdi
lea    0x1d0d(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    16f3 <gm_encode+0x573>
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0xa8(%rbp)
sub    $0x6,%eax
ja     1592 <gm_encode+0x412>
mov    -0xa8(%rbp),%rax
lea    0x1b3d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x20(%rbp),%rdi
lea    0x1cab(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1592 <gm_encode+0x412>
mov    -0x20(%rbp),%rdi
lea    0x1c9f(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1592 <gm_encode+0x412>
mov    -0x20(%rbp),%rdi
lea    0x1c93(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1592 <gm_encode+0x412>
mov    -0x20(%rbp),%rdi
lea    0x1c64(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1592 <gm_encode+0x412>
mov    -0x20(%rbp),%rdi
lea    0x1c63(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    16f3 <gm_encode+0x573>
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0xb0(%rbp)
sub    $0x6,%eax
ja     1634 <gm_encode+0x4b4>
mov    -0xb0(%rbp),%rax
lea    0x1a7f(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x20(%rbp),%rdi
lea    0x1c30(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1634 <gm_encode+0x4b4>
mov    -0x20(%rbp),%rdi
lea    0x1c24(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1634 <gm_encode+0x4b4>
mov    -0x20(%rbp),%rdi
lea    0x1c18(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1634 <gm_encode+0x4b4>
mov    -0x20(%rbp),%rdi
lea    0x1c0c(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1634 <gm_encode+0x4b4>
mov    -0x20(%rbp),%rdi
lea    0x1c00(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    16f3 <gm_encode+0x573>
mov    -0x20(%rbp),%rdi
mov    -0x68(%rbp),%esi
mov    -0x6c(%rbp),%edx
xor    %eax,%eax
call   1090 <add_byte_count@plt>
movl   $0x0,-0x6c(%rbp)
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0xb8(%rbp)
sub    $0x6,%eax
ja     16ee <gm_encode+0x56e>
mov    -0xb8(%rbp),%rax
lea    0x19a9(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x20(%rbp),%rdi
lea    0x1b02(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    16ee <gm_encode+0x56e>
mov    -0x20(%rbp),%rdi
lea    0x1af9(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    16ee <gm_encode+0x56e>
mov    -0x20(%rbp),%rdi
lea    0x1af0(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    16ee <gm_encode+0x56e>
mov    -0x20(%rbp),%rdi
lea    0x1ae7(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    16ee <gm_encode+0x56e>
mov    -0x20(%rbp),%rdi
lea    0x1ade(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    16f3 <gm_encode+0x573>
cmpl   $0x0,-0x64(%rbp)
je     179e <gm_encode+0x61e>
mov    -0x30(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0xc0(%rbp)
sub    $0x6,%eax
ja     1799 <gm_encode+0x619>
mov    -0xc0(%rbp),%rax
lea    0x199d(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    0x1b05(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1799 <gm_encode+0x619>
lea    0x1af8(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1799 <gm_encode+0x619>
lea    0x1aeb(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1799 <gm_encode+0x619>
lea    0x1ade(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1799 <gm_encode+0x619>
lea    0x1ad1(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    1799 <gm_encode+0x619>
lea    0x1ac4(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
jmp    179e <gm_encode+0x61e>
jmp    17a3 <gm_encode+0x623>
mov    -0x2c(%rbp),%eax
mov    %eax,-0x34(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0xc8(%rbp)
sub    $0x6,%eax
ja     2c46 <gm_encode+0x1ac6>
mov    -0xc8(%rbp),%rax
lea    0x1907(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x0,-0x44(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0xff,(%rax,%rcx,4)
jle    1893 <gm_encode+0x713>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
and    $0xff00,%eax
sar    $0x8,%eax
mov    %eax,-0x3c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
and    $0xff,%eax
mov    %eax,-0x40(%rbp)
cmpl   $0xa0,-0x3c(%rbp)
jl     1856 <gm_encode+0x6d6>
cmpl   $0xa9,-0x3c(%rbp)
jg     1856 <gm_encode+0x6d6>
mov    -0x3c(%rbp),%eax
sub    $0xa1,%eax
imul   $0x60,%eax,%eax
mov    -0x40(%rbp),%ecx
sub    $0xa0,%ecx
add    %ecx,%eax
mov    %eax,-0x38(%rbp)
cmpl   $0xb0,-0x3c(%rbp)
jl     188c <gm_encode+0x70c>
cmpl   $0xf7,-0x3c(%rbp)
jg     188c <gm_encode+0x70c>
mov    -0x3c(%rbp),%eax
sub    $0xb0,%eax
add    $0x9,%eax
imul   $0x60,%eax,%eax
mov    -0x40(%rbp),%ecx
sub    $0xa0,%ecx
add    %ecx,%eax
mov    %eax,-0x38(%rbp)
movl   $0x1,-0x44(%rbp)
cmpl   $0x0,-0x44(%rbp)
jne    18f3 <gm_encode+0x773>
mov    -0x28(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
je     18ee <gm_encode+0x76e>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x13,(%rax,%rcx,4)
jne    18e7 <gm_encode+0x767>
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x10,(%rax,%rcx,4)
jne    18e7 <gm_encode+0x767>
movl   $0x1e60,-0x38(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
movl   $0x1,-0x44(%rbp)
jmp    18f3 <gm_encode+0x773>
cmpl   $0x0,-0x44(%rbp)
jne    19a1 <gm_encode+0x821>
mov    -0x28(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
je     199c <gm_encode+0x81c>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x30,(%rax,%rcx,4)
jl     1997 <gm_encode+0x817>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x39,(%rax,%rcx,4)
jg     1997 <gm_encode+0x817>
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x30,(%rax,%rcx,4)
jl     1997 <gm_encode+0x817>
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x39,(%rax,%rcx,4)
jg     1997 <gm_encode+0x817>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
sub    $0x30,%eax
imul   $0xa,%eax,%eax
add    $0x1f61,%eax
mov    -0x10(%rbp),%rcx
mov    -0x28(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,4),%ecx
sub    $0x30,%ecx
add    %ecx,%eax
mov    %eax,-0x38(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    199c <gm_encode+0x81c>
jmp    19a1 <gm_encode+0x821>
cmpl   $0x0,-0x44(%rbp)
jne    19be <gm_encode+0x83e>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
add    $0x1e61,%eax
mov    %eax,-0x38(%rbp)
cmpl   $0x0,-0x64(%rbp)
je     19d9 <gm_encode+0x859>
mov    -0x38(%rbp),%esi
lea    0x188a(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x38(%rbp),%eax
and    $0x1000,%eax
cmp    $0x0,%eax
je     1a01 <gm_encode+0x881>
mov    -0x20(%rbp),%rdi
lea    0x179b(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1a13 <gm_encode+0x893>
mov    -0x20(%rbp),%rdi
lea    0x18d4(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x800,%eax
cmp    $0x0,%eax
je     1a3b <gm_encode+0x8bb>
mov    -0x20(%rbp),%rdi
lea    0x1761(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1a4d <gm_encode+0x8cd>
mov    -0x20(%rbp),%rdi
lea    0x189a(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x400,%eax
cmp    $0x0,%eax
je     1a75 <gm_encode+0x8f5>
mov    -0x20(%rbp),%rdi
lea    0x1727(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1a87 <gm_encode+0x907>
mov    -0x20(%rbp),%rdi
lea    0x1860(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x200,%eax
cmp    $0x0,%eax
je     1aaf <gm_encode+0x92f>
mov    -0x20(%rbp),%rdi
lea    0x16ed(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1ac1 <gm_encode+0x941>
mov    -0x20(%rbp),%rdi
lea    0x1826(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x100,%eax
cmp    $0x0,%eax
je     1ae9 <gm_encode+0x969>
mov    -0x20(%rbp),%rdi
lea    0x16b3(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1afb <gm_encode+0x97b>
mov    -0x20(%rbp),%rdi
lea    0x17ec(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x80,%eax
cmp    $0x0,%eax
je     1b23 <gm_encode+0x9a3>
mov    -0x20(%rbp),%rdi
lea    0x1679(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1b35 <gm_encode+0x9b5>
mov    -0x20(%rbp),%rdi
lea    0x17b2(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x40,%eax
cmp    $0x0,%eax
je     1b5b <gm_encode+0x9db>
mov    -0x20(%rbp),%rdi
lea    0x1641(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1b6d <gm_encode+0x9ed>
mov    -0x20(%rbp),%rdi
lea    0x177a(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     1b93 <gm_encode+0xa13>
mov    -0x20(%rbp),%rdi
lea    0x1609(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1ba5 <gm_encode+0xa25>
mov    -0x20(%rbp),%rdi
lea    0x1742(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x10,%eax
cmp    $0x0,%eax
je     1bcb <gm_encode+0xa4b>
mov    -0x20(%rbp),%rdi
lea    0x15d1(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1bdd <gm_encode+0xa5d>
mov    -0x20(%rbp),%rdi
lea    0x170a(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     1c03 <gm_encode+0xa83>
mov    -0x20(%rbp),%rdi
lea    0x1599(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1c15 <gm_encode+0xa95>
mov    -0x20(%rbp),%rdi
lea    0x16d2(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     1c3b <gm_encode+0xabb>
mov    -0x20(%rbp),%rdi
lea    0x1561(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1c4d <gm_encode+0xacd>
mov    -0x20(%rbp),%rdi
lea    0x169a(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     1c73 <gm_encode+0xaf3>
mov    -0x20(%rbp),%rdi
lea    0x1529(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1c85 <gm_encode+0xb05>
mov    -0x20(%rbp),%rdi
lea    0x1662(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     1cab <gm_encode+0xb2b>
mov    -0x20(%rbp),%rdi
lea    0x14f1(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1cbd <gm_encode+0xb3d>
mov    -0x20(%rbp),%rdi
lea    0x162a(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    2c46 <gm_encode+0x1ac6>
mov    -0x34(%rbp),%eax
cmp    -0x2c(%rbp),%eax
je     1cf5 <gm_encode+0xb75>
mov    -0x20(%rbp),%rdi
call   1040 <strlen@plt>
mov    %eax,-0x60(%rbp)
mov    -0x20(%rbp),%rdi
lea    0x1574(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
movl   $0x0,-0x48(%rbp)
movl   $0xffffffff,-0x4c(%rbp)
movl   $0x30,-0x58(%rbp)
movl   $0x30,-0x54(%rbp)
movl   $0x30,-0x50(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x30,(%rax,%rcx,4)
jl     1d61 <gm_encode+0xbe1>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x39,(%rax,%rcx,4)
jg     1d61 <gm_encode+0xbe1>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%ecx
movslq -0x48(%rbp),%rax
mov    %ecx,-0x58(%rbp,%rax,4)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x48(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x48(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0xcc(%rbp)
sub    $0x20,%eax
je     1d97 <gm_encode+0xc17>
jmp    1d80 <gm_encode+0xc00>
mov    -0xcc(%rbp),%eax
add    $0xffffffd5,%eax
sub    $0x3,%eax
ja     1db4 <gm_encode+0xc34>
jmp    1d97 <gm_encode+0xc17>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x4c(%rbp)
mov    -0x28(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1e10 <gm_encode+0xc90>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x13,(%rax,%rcx,4)
jne    1e0b <gm_encode+0xc8b>
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x10,(%rax,%rcx,4)
jne    1e0b <gm_encode+0xc8b>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x5c(%rbp)
mov    -0x28(%rbp),%eax
add    $0x2,%eax
mov    %eax,-0x28(%rbp)
mov    -0x48(%rbp),%eax
mov    %eax,-0x4c(%rbp)
jmp    1e10 <gm_encode+0xc90>
jmp    1e15 <gm_encode+0xc95>
xor    %eax,%eax
cmpl   $0x3,-0x48(%rbp)
mov    %al,-0xcd(%rbp)
jge    1e36 <gm_encode+0xcb6>
mov    -0x28(%rbp),%eax
cmp    -0x14(%rbp),%eax
setl   %al
mov    %al,-0xcd(%rbp)
mov    -0xcd(%rbp),%al
test   $0x1,%al
jne    1d18 <gm_encode+0xb98>
cmpl   $0xffffffff,-0x4c(%rbp)
je     212a <gm_encode+0xfaa>
mov    -0x5c(%rbp),%eax
add    $0xffffffed,%eax
mov    %eax,%ecx
mov    %rcx,-0xd8(%rbp)
sub    $0x1b,%eax
ja     1ec0 <gm_encode+0xd40>
mov    -0xd8(%rbp),%rax
lea    0x1284(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x0,-0x38(%rbp)
jmp    1ec0 <gm_encode+0xd40>
movl   $0x3,-0x38(%rbp)
jmp    1ec0 <gm_encode+0xd40>
movl   $0x6,-0x38(%rbp)
jmp    1ec0 <gm_encode+0xd40>
movl   $0x9,-0x38(%rbp)
jmp    1ec0 <gm_encode+0xd40>
movl   $0xc,-0x38(%rbp)
jmp    1ec0 <gm_encode+0xd40>
movl   $0xf,-0x38(%rbp)
mov    -0x4c(%rbp),%eax
add    -0x38(%rbp),%eax
mov    %eax,-0x38(%rbp)
mov    -0x38(%rbp),%eax
add    $0x3e8,%eax
mov    %eax,-0x38(%rbp)
cmpl   $0x0,-0x64(%rbp)
je     1eef <gm_encode+0xd6f>
mov    -0x38(%rbp),%esi
lea    0x1374(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x38(%rbp),%eax
and    $0x200,%eax
cmp    $0x0,%eax
je     1f17 <gm_encode+0xd97>
mov    -0x20(%rbp),%rdi
lea    0x1285(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1f29 <gm_encode+0xda9>
mov    -0x20(%rbp),%rdi
lea    0x13be(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x100,%eax
cmp    $0x0,%eax
je     1f51 <gm_encode+0xdd1>
mov    -0x20(%rbp),%rdi
lea    0x124b(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1f63 <gm_encode+0xde3>
mov    -0x20(%rbp),%rdi
lea    0x1384(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x80,%eax
cmp    $0x0,%eax
je     1f8b <gm_encode+0xe0b>
mov    -0x20(%rbp),%rdi
lea    0x1211(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1f9d <gm_encode+0xe1d>
mov    -0x20(%rbp),%rdi
lea    0x134a(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x40,%eax
cmp    $0x0,%eax
je     1fc3 <gm_encode+0xe43>
mov    -0x20(%rbp),%rdi
lea    0x11d9(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    1fd5 <gm_encode+0xe55>
mov    -0x20(%rbp),%rdi
lea    0x1312(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     1ffb <gm_encode+0xe7b>
mov    -0x20(%rbp),%rdi
lea    0x11a1(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    200d <gm_encode+0xe8d>
mov    -0x20(%rbp),%rdi
lea    0x12da(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x10,%eax
cmp    $0x0,%eax
je     2033 <gm_encode+0xeb3>
mov    -0x20(%rbp),%rdi
lea    0x1169(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2045 <gm_encode+0xec5>
mov    -0x20(%rbp),%rdi
lea    0x12a2(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     206b <gm_encode+0xeeb>
mov    -0x20(%rbp),%rdi
lea    0x1131(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    207d <gm_encode+0xefd>
mov    -0x20(%rbp),%rdi
lea    0x126a(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     20a3 <gm_encode+0xf23>
mov    -0x20(%rbp),%rdi
lea    0x10f9(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    20b5 <gm_encode+0xf35>
mov    -0x20(%rbp),%rdi
lea    0x1232(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     20db <gm_encode+0xf5b>
mov    -0x20(%rbp),%rdi
lea    0x10c1(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    20ed <gm_encode+0xf6d>
mov    -0x20(%rbp),%rdi
lea    0x11fa(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2113 <gm_encode+0xf93>
mov    -0x20(%rbp),%rdi
lea    0x1089(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2125 <gm_encode+0xfa5>
mov    -0x20(%rbp),%rdi
lea    0x11c2(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    212a <gm_encode+0xfaa>
mov    -0x58(%rbp),%eax
sub    $0x30,%eax
imul   $0x64,%eax,%eax
mov    -0x54(%rbp),%ecx
sub    $0x30,%ecx
imul   $0xa,%ecx,%ecx
add    %ecx,%eax
mov    -0x50(%rbp),%ecx
sub    $0x30,%ecx
add    %ecx,%eax
mov    %eax,-0x38(%rbp)
cmpl   $0x0,-0x64(%rbp)
je     2164 <gm_encode+0xfe4>
mov    -0x38(%rbp),%esi
lea    0x10ff(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x38(%rbp),%eax
and    $0x200,%eax
cmp    $0x0,%eax
je     218c <gm_encode+0x100c>
mov    -0x20(%rbp),%rdi
lea    0x1010(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    219e <gm_encode+0x101e>
mov    -0x20(%rbp),%rdi
lea    0x1149(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x100,%eax
cmp    $0x0,%eax
je     21c6 <gm_encode+0x1046>
mov    -0x20(%rbp),%rdi
lea    0xfd6(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    21d8 <gm_encode+0x1058>
mov    -0x20(%rbp),%rdi
lea    0x110f(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x80,%eax
cmp    $0x0,%eax
je     2200 <gm_encode+0x1080>
mov    -0x20(%rbp),%rdi
lea    0xf9c(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2212 <gm_encode+0x1092>
mov    -0x20(%rbp),%rdi
lea    0x10d5(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x40,%eax
cmp    $0x0,%eax
je     2238 <gm_encode+0x10b8>
mov    -0x20(%rbp),%rdi
lea    0xf64(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    224a <gm_encode+0x10ca>
mov    -0x20(%rbp),%rdi
lea    0x109d(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     2270 <gm_encode+0x10f0>
mov    -0x20(%rbp),%rdi
lea    0xf2c(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2282 <gm_encode+0x1102>
mov    -0x20(%rbp),%rdi
lea    0x1065(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x10,%eax
cmp    $0x0,%eax
je     22a8 <gm_encode+0x1128>
mov    -0x20(%rbp),%rdi
lea    0xef4(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    22ba <gm_encode+0x113a>
mov    -0x20(%rbp),%rdi
lea    0x102d(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     22e0 <gm_encode+0x1160>
mov    -0x20(%rbp),%rdi
lea    0xebc(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    22f2 <gm_encode+0x1172>
mov    -0x20(%rbp),%rdi
lea    0xff5(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     2318 <gm_encode+0x1198>
mov    -0x20(%rbp),%rdi
lea    0xe84(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    232a <gm_encode+0x11aa>
mov    -0x20(%rbp),%rdi
lea    0xfbd(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2350 <gm_encode+0x11d0>
mov    -0x20(%rbp),%rdi
lea    0xe4c(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2362 <gm_encode+0x11e2>
mov    -0x20(%rbp),%rdi
lea    0xf85(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2388 <gm_encode+0x1208>
mov    -0x20(%rbp),%rdi
lea    0xe14(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    239a <gm_encode+0x121a>
mov    -0x20(%rbp),%rdi
lea    0xf4d(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2c46 <gm_encode+0x1ac6>
mov    -0x34(%rbp),%eax
cmp    -0x2c(%rbp),%eax
je     23c9 <gm_encode+0x1249>
mov    -0x20(%rbp),%rdi
call   1040 <strlen@plt>
mov    %eax,-0x68(%rbp)
mov    -0x20(%rbp),%rdi
lea    0xea3(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
cmpl   $0x200,-0x6c(%rbp)
jne    241e <gm_encode+0x129e>
mov    -0x20(%rbp),%rdi
mov    -0x68(%rbp),%esi
mov    -0x6c(%rbp),%edx
mov    $0x0,%al
call   1090 <add_byte_count@plt>
mov    -0x20(%rbp),%rdi
lea    0xe41(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x20(%rbp),%rdi
call   1040 <strlen@plt>
mov    %eax,-0x68(%rbp)
mov    -0x20(%rbp),%rdi
lea    0xe55(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
movl   $0x0,-0x6c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
mov    %eax,-0x38(%rbp)
cmpl   $0x0,-0x64(%rbp)
je     2447 <gm_encode+0x12c7>
mov    -0x38(%rbp),%esi
lea    0xe1c(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x38(%rbp),%eax
and    $0x80,%eax
cmp    $0x0,%eax
je     246f <gm_encode+0x12ef>
mov    -0x20(%rbp),%rdi
lea    0xd2d(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2481 <gm_encode+0x1301>
mov    -0x20(%rbp),%rdi
lea    0xe66(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x40,%eax
cmp    $0x0,%eax
je     24a7 <gm_encode+0x1327>
mov    -0x20(%rbp),%rdi
lea    0xcf5(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    24b9 <gm_encode+0x1339>
mov    -0x20(%rbp),%rdi
lea    0xe2e(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     24df <gm_encode+0x135f>
mov    -0x20(%rbp),%rdi
lea    0xcbd(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    24f1 <gm_encode+0x1371>
mov    -0x20(%rbp),%rdi
lea    0xdf6(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x10,%eax
cmp    $0x0,%eax
je     2517 <gm_encode+0x1397>
mov    -0x20(%rbp),%rdi
lea    0xc85(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2529 <gm_encode+0x13a9>
mov    -0x20(%rbp),%rdi
lea    0xdbe(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     254f <gm_encode+0x13cf>
mov    -0x20(%rbp),%rdi
lea    0xc4d(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2561 <gm_encode+0x13e1>
mov    -0x20(%rbp),%rdi
lea    0xd86(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     2587 <gm_encode+0x1407>
mov    -0x20(%rbp),%rdi
lea    0xc15(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2599 <gm_encode+0x1419>
mov    -0x20(%rbp),%rdi
lea    0xd4e(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     25bf <gm_encode+0x143f>
mov    -0x20(%rbp),%rdi
lea    0xbdd(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    25d1 <gm_encode+0x1451>
mov    -0x20(%rbp),%rdi
lea    0xd16(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     25f7 <gm_encode+0x1477>
mov    -0x20(%rbp),%rdi
lea    0xba5(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2609 <gm_encode+0x1489>
mov    -0x20(%rbp),%rdi
lea    0xcde(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x6c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x6c(%rbp)
jmp    2c46 <gm_encode+0x1ac6>
movl   $0x1,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x30,(%rax,%rcx,4)
jl     2652 <gm_encode+0x14d2>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x39,(%rax,%rcx,4)
jg     2652 <gm_encode+0x14d2>
movl   $0x0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x41,(%rax,%rcx,4)
jl     267d <gm_encode+0x14fd>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x5a,(%rax,%rcx,4)
jg     267d <gm_encode+0x14fd>
movl   $0x0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x61,(%rax,%rcx,4)
jl     26a8 <gm_encode+0x1528>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x7a,(%rax,%rcx,4)
jg     26a8 <gm_encode+0x1528>
movl   $0x0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x20,(%rax,%rcx,4)
jne    26c1 <gm_encode+0x1541>
movl   $0x0,-0x70(%rbp)
cmpl   $0x0,-0x70(%rbp)
jne    2857 <gm_encode+0x16d7>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
lea    0xb92(%rip),%rdi
mov    $0x0,%al
call   1080 <posn@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x0,-0x64(%rbp)
je     2702 <gm_encode+0x1582>
mov    -0x38(%rbp),%esi
lea    0xb61(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x38(%rbp),%eax
and    $0x20,%eax
cmp    $0x0,%eax
je     2728 <gm_encode+0x15a8>
mov    -0x20(%rbp),%rdi
lea    0xa74(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    273a <gm_encode+0x15ba>
mov    -0x20(%rbp),%rdi
lea    0xbad(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x10,%eax
cmp    $0x0,%eax
je     2760 <gm_encode+0x15e0>
mov    -0x20(%rbp),%rdi
lea    0xa3c(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2772 <gm_encode+0x15f2>
mov    -0x20(%rbp),%rdi
lea    0xb75(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     2798 <gm_encode+0x1618>
mov    -0x20(%rbp),%rdi
lea    0xa04(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    27aa <gm_encode+0x162a>
mov    -0x20(%rbp),%rdi
lea    0xb3d(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     27d0 <gm_encode+0x1650>
mov    -0x20(%rbp),%rdi
lea    0x9cc(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    27e2 <gm_encode+0x1662>
mov    -0x20(%rbp),%rdi
lea    0xb05(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2808 <gm_encode+0x1688>
mov    -0x20(%rbp),%rdi
lea    0x994(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    281a <gm_encode+0x169a>
mov    -0x20(%rbp),%rdi
lea    0xacd(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2840 <gm_encode+0x16c0>
mov    -0x20(%rbp),%rdi
lea    0x95c(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2852 <gm_encode+0x16d2>
mov    -0x20(%rbp),%rdi
lea    0xa95(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    287f <gm_encode+0x16ff>
mov    -0x20(%rbp),%rdi
lea    0xa4b(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x20(%rbp),%rdi
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
mov    $0x0,%al
call   10a0 <add_shift_char@plt>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    2c46 <gm_encode+0x1ac6>
movl   $0x1,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x41,(%rax,%rcx,4)
jl     28bf <gm_encode+0x173f>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x5a,(%rax,%rcx,4)
jg     28bf <gm_encode+0x173f>
movl   $0x0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x20,(%rax,%rcx,4)
jne    28d8 <gm_encode+0x1758>
movl   $0x0,-0x70(%rbp)
cmpl   $0x0,-0x70(%rbp)
jne    2a36 <gm_encode+0x18b6>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
lea    0x9c4(%rip),%rdi
mov    $0x0,%al
call   1080 <posn@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x0,-0x64(%rbp)
je     2919 <gm_encode+0x1799>
mov    -0x38(%rbp),%esi
lea    0x94a(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x38(%rbp),%eax
and    $0x10,%eax
cmp    $0x0,%eax
je     293f <gm_encode+0x17bf>
mov    -0x20(%rbp),%rdi
lea    0x85d(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2951 <gm_encode+0x17d1>
mov    -0x20(%rbp),%rdi
lea    0x996(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     2977 <gm_encode+0x17f7>
mov    -0x20(%rbp),%rdi
lea    0x825(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2989 <gm_encode+0x1809>
mov    -0x20(%rbp),%rdi
lea    0x95e(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     29af <gm_encode+0x182f>
mov    -0x20(%rbp),%rdi
lea    0x7ed(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    29c1 <gm_encode+0x1841>
mov    -0x20(%rbp),%rdi
lea    0x926(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     29e7 <gm_encode+0x1867>
mov    -0x20(%rbp),%rdi
lea    0x7b5(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    29f9 <gm_encode+0x1879>
mov    -0x20(%rbp),%rdi
lea    0x8ee(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2a1f <gm_encode+0x189f>
mov    -0x20(%rbp),%rdi
lea    0x77d(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2a31 <gm_encode+0x18b1>
mov    -0x20(%rbp),%rdi
lea    0x8b6(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2a5e <gm_encode+0x18de>
mov    -0x20(%rbp),%rdi
lea    0x7a2(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x20(%rbp),%rdi
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
mov    $0x0,%al
call   10a0 <add_shift_char@plt>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    2c46 <gm_encode+0x1ac6>
movl   $0x1,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x61,(%rax,%rcx,4)
jl     2a9e <gm_encode+0x191e>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x7a,(%rax,%rcx,4)
jg     2a9e <gm_encode+0x191e>
movl   $0x0,-0x70(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x20,(%rax,%rcx,4)
jne    2ab7 <gm_encode+0x1937>
movl   $0x0,-0x70(%rbp)
cmpl   $0x0,-0x70(%rbp)
jne    2c15 <gm_encode+0x1a95>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
lea    0x7be(%rip),%rdi
mov    $0x0,%al
call   1080 <posn@plt>
mov    %eax,-0x38(%rbp)
cmpl   $0x0,-0x64(%rbp)
je     2af8 <gm_encode+0x1978>
mov    -0x38(%rbp),%esi
lea    0x76b(%rip),%rdi
mov    $0x0,%al
call   1050 <printf@plt>
mov    -0x38(%rbp),%eax
and    $0x10,%eax
cmp    $0x0,%eax
je     2b1e <gm_encode+0x199e>
mov    -0x20(%rbp),%rdi
lea    0x67e(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2b30 <gm_encode+0x19b0>
mov    -0x20(%rbp),%rdi
lea    0x7b7(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x8,%eax
cmp    $0x0,%eax
je     2b56 <gm_encode+0x19d6>
mov    -0x20(%rbp),%rdi
lea    0x646(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2b68 <gm_encode+0x19e8>
mov    -0x20(%rbp),%rdi
lea    0x77f(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x4,%eax
cmp    $0x0,%eax
je     2b8e <gm_encode+0x1a0e>
mov    -0x20(%rbp),%rdi
lea    0x60e(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2ba0 <gm_encode+0x1a20>
mov    -0x20(%rbp),%rdi
lea    0x747(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x2,%eax
cmp    $0x0,%eax
je     2bc6 <gm_encode+0x1a46>
mov    -0x20(%rbp),%rdi
lea    0x5d6(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2bd8 <gm_encode+0x1a58>
mov    -0x20(%rbp),%rdi
lea    0x70f(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x38(%rbp),%eax
and    $0x1,%eax
cmp    $0x0,%eax
je     2bfe <gm_encode+0x1a7e>
mov    -0x20(%rbp),%rdi
lea    0x59e(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2c10 <gm_encode+0x1a90>
mov    -0x20(%rbp),%rdi
lea    0x6d7(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2c3d <gm_encode+0x1abd>
mov    -0x20(%rbp),%rdi
lea    0x5c3(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x20(%rbp),%rdi
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%esi
mov    $0x0,%al
call   10a0 <add_shift_char@plt>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x20(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x23e7,%rax
jbe    2c67 <gm_encode+0x1ae7>
movl   $0x5,-0x4(%rbp)
jmp    2e69 <gm_encode+0x1ce9>
jmp    2c6c <gm_encode+0x1aec>
mov    -0x28(%rbp),%eax
cmp    -0x14(%rbp),%eax
jl     1210 <gm_encode+0x90>
cmpl   $0x1,-0x2c(%rbp)
jne    2d27 <gm_encode+0x1ba7>
mov    -0x48(%rbp),%eax
mov    %eax,-0xdc(%rbp)
sub    $0x1,%eax
je     2cc1 <gm_encode+0x1b41>
jmp    2c99 <gm_encode+0x1b19>
mov    -0xdc(%rbp),%eax
sub    $0x2,%eax
je     2ce3 <gm_encode+0x1b63>
jmp    2cad <gm_encode+0x1b2d>
mov    -0xdc(%rbp),%eax
sub    $0x3,%eax
je     2d05 <gm_encode+0x1b85>
jmp    2d22 <gm_encode+0x1ba2>
mov    -0x20(%rbp),%rax
movslq -0x60(%rbp),%rcx
movb   $0x31,(%rax,%rcx,1)
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x30,(%rax,%rcx,1)
jmp    2d22 <gm_encode+0x1ba2>
mov    -0x20(%rbp),%rax
movslq -0x60(%rbp),%rcx
movb   $0x30,(%rax,%rcx,1)
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x31,(%rax,%rcx,1)
jmp    2d22 <gm_encode+0x1ba2>
mov    -0x20(%rbp),%rax
movslq -0x60(%rbp),%rcx
movb   $0x30,(%rax,%rcx,1)
mov    -0x20(%rbp),%rax
mov    -0x60(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movb   $0x30,(%rax,%rcx,1)
jmp    2d27 <gm_encode+0x1ba7>
cmpl   $0x6,-0x2c(%rbp)
jne    2d42 <gm_encode+0x1bc2>
mov    -0x20(%rbp),%rdi
mov    -0x68(%rbp),%esi
mov    -0x6c(%rbp),%edx
mov    $0x0,%al
call   1090 <add_byte_count@plt>
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0xe8(%rbp)
sub    $0x6,%eax
ja     2ddf <gm_encode+0x1c5f>
mov    -0xe8(%rbp),%rax
lea    0x400(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x20(%rbp),%rdi
lea    0x558(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2ddf <gm_encode+0x1c5f>
mov    -0x20(%rbp),%rdi
lea    0x54f(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2ddf <gm_encode+0x1c5f>
mov    -0x20(%rbp),%rdi
lea    0x425(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2ddf <gm_encode+0x1c5f>
mov    -0x20(%rbp),%rdi
lea    0x52c(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
jmp    2ddf <gm_encode+0x1c5f>
mov    -0x20(%rbp),%rdi
lea    0x505(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x20(%rbp),%rdi
call   1040 <strlen@plt>
mov    $0x7,%ecx
xor    %edx,%edx
div    %rcx
mov    $0x7,%eax
sub    %rdx,%rax
mov    %eax,-0x48(%rbp)
cmpl   $0x7,-0x48(%rbp)
jne    2e0e <gm_encode+0x1c8e>
movl   $0x0,-0x48(%rbp)
movl   $0x0,-0x74(%rbp)
mov    -0x74(%rbp),%eax
cmp    -0x48(%rbp),%eax
jge    2e41 <gm_encode+0x1cc1>
mov    -0x20(%rbp),%rdi
lea    0x4b4(%rip),%rsi
mov    $0x0,%al
call   1060 <concat@plt>
mov    -0x74(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x74(%rbp)
jmp    2e15 <gm_encode+0x1c95>
mov    -0x20(%rbp),%rdi
call   1040 <strlen@plt>
cmp    $0x23e7,%rax
jbe    2e62 <gm_encode+0x1ce2>
movl   $0x5,-0x4(%rbp)
jmp    2e69 <gm_encode+0x1ce9>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0xf0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<gm_encode>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
mov    %rdx,%rbp
mov    %esi,%r15d
mov    %rdi,%r14
movb   $0x0,(%rdx)
test   %ecx,%ecx
je     118f <gm_encode+0x2f>
lea    0x213d(%rip),%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
lea    -0x1(%r15),%eax
mov    %eax,0x3c(%rsp)
cltq
mov    %rax,0x70(%rsp)
xor    %eax,%eax
mov    %rax,0x20(%rsp)
xor    %r13d,%r13d
xor    %r12d,%r12d
xor    %eax,%eax
mov    %rax,0x58(%rsp)
xor    %eax,%eax
mov    %rax,0x48(%rsp)
xor    %eax,%eax
mov    %rax,0x50(%rsp)
xor    %eax,%eax
mov    %rax,0x40(%rsp)
movl   $0x0,0x14(%rsp)
mov    %r15,0x18(%rsp)
mov    %rbp,0x8(%rsp)
mov    %r14,0x28(%rsp)
xchg   %ax,%ax
mov    %r14,%rdi
mov    %r15d,%esi
mov    %r12d,%edx
mov    %r13d,%ecx
xor    %eax,%eax
call   1050 <seek_forward@plt>
mov    %eax,%ebx
cmp    %r13d,%eax
jne    1240 <gm_encode+0xe0>
lea    -0x1(%rbx),%eax
cmp    $0x6,%eax
ja     1ec7 <gm_encode+0xd67>
lea    0x1ed3(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    %rbx,0x30(%rsp)
cmp    %r13d,%ebx
mov    0x3c(%rsp),%ebx
mov    0x48(%rsp),%rbp
jne    1531 <gm_encode+0x3d1>
jmp    1554 <gm_encode+0x3f4>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
cmp    $0x7,%r13d
ja     11fa <gm_encode+0x9a>
mov    %r13d,%eax
lea    0x1dd0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
lea    -0x1(%rbx),%eax
cmp    $0x6,%eax
ja     11fa <gm_encode+0x9a>
lea    0x1e10(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
lea    0x1f68(%rip),%rsi
lea    0x1f6c(%rip),%r8
lea    0x1f6e(%rip),%rcx
lea    0x1f51(%rip),%rdx
jmp    *%rax
mov    %rbp,%rdi
lea    0x1f5d(%rip),%rsi
xor    %eax,%eax
call   1040 <concat@plt>
jmp    11fa <gm_encode+0x9a>
mov    %rbx,0x30(%rsp)
cmp    %r13d,%ebx
mov    0x14(%rsp),%ebx
jne    1762 <gm_encode+0x602>
cmp    $0x200,%ebx
jne    178c <gm_encode+0x62c>
mov    %rbp,%rdi
mov    0x40(%rsp),%rsi
mov    $0x200,%edx
xor    %eax,%eax
call   1070 <add_byte_count@plt>
mov    %rbp,%rdi
lea    0x1f58(%rip),%rsi
xor    %eax,%eax
call   1040 <concat@plt>
mov    %rbp,%rdi
call   1030 <strlen@plt>
mov    %rax,0x40(%rsp)
mov    %rbp,%rdi
lea    0x1f42(%rip),%rsi
xor    %eax,%eax
call   1040 <concat@plt>
mov    %rbp,%r13
xor    %ebp,%ebp
jmp    1791 <gm_encode+0x631>
lea    -0x1(%rbx),%eax
cmp    $0x6,%eax
ja     11fa <gm_encode+0x9a>
lea    0x1da3(%rip),%rcx
movslq (%rcx,%rax,4),%rdi
add    %rcx,%rdi
lea    0x1e62(%rip),%rsi
lea    0x1e69(%rip),%r8
lea    0x1efa(%rip),%rcx
lea    0x1e85(%rip),%rdx
lea    0x1e70(%rip),%r9
lea    0x1e5b(%rip),%rax
jmp    *%rdi
mov    0x58(%rsp),%rax
lea    -0x1(%rax),%ecx
cmp    $0x2,%ecx
ja     137f <gm_encode+0x21f>
shl    $0x3,%ecx
mov    $0x303031,%eax
shr    %cl,%eax
mov    $0x303130,%edx
shr    %cl,%edx
movslq 0x50(%rsp),%rcx
mov    %al,0x0(%rbp,%rcx,1)
mov    %dl,0x1(%rbp,%rcx,1)
lea    -0x2(%rbx),%eax
cmp    $0x5,%eax
ja     11fa <gm_encode+0x9a>
lea    0x1d02(%rip),%rcx
movslq (%rcx,%rax,4),%rdi
add    %rcx,%rdi
lea    0x1e2e(%rip),%rsi
lea    0x1e53(%rip),%rcx
lea    0x1e41(%rip),%rdx
lea    0x1e2f(%rip),%r9
lea    0x1e1d(%rip),%rax
jmp    *%rdi
lea    -0x1(%rbx),%eax
cmp    $0x6,%eax
ja     11fa <gm_encode+0x9a>
lea    0x1c8b(%rip),%rcx
movslq (%rcx,%rax,4),%rdx
add    %rcx,%rdx
lea    0x1e26(%rip),%rsi
lea    0x1e2a(%rip),%r8
lea    0x1e44(%rip),%rcx
lea    0x1e32(%rip),%r9
lea    0x1e20(%rip),%rax
jmp    *%rdx
mov    %rbp,%rdi
mov    0x40(%rsp),%rsi
mov    0x14(%rsp),%edx
xor    %eax,%eax
call   1070 <add_byte_count@plt>
lea    -0x1(%rbx),%eax
cmp    $0x6,%eax
ja     1ee5 <gm_encode+0xd85>
lea    0x1c1d(%rip),%rdx
movslq (%rdx,%rax,4),%rcx
add    %rdx,%rcx
movl   $0x0,0x14(%rsp)
lea    0x1d58(%rip),%rsi
lea    0x1d5f(%rip),%r8
lea    0x1d82(%rip),%rdx
lea    0x1d6d(%rip),%r9
lea    0x1d58(%rip),%rax
jmp    *%rcx
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
movslq %r12d,%rax
mov    (%r14,%rax,4),%ecx
cmp    $0x100,%ecx
mov    %rbx,0x30(%rsp)
jl     14b2 <gm_encode+0x352>
movzbl %ch,%eax
movzbl %cl,%ecx
lea    -0xa0(%rax),%edx
lea    (%rax,%rax,2),%esi
shl    $0x5,%esi
cmp    $0xa,%edx
lea    -0x3d00(%rsi,%rcx,1),%edx
mov    0x20(%rsp),%rdi
cmovb  %edx,%edi
add    $0xffffff50,%eax
cmp    $0x48,%eax
lea    -0x3f40(%rsi,%rcx,1),%eax
cmovae %edi,%eax
mov    %eax,%ebx
jmp    1a88 <gm_encode+0x928>
mov    0x3c(%rsp),%edx
cmp    %edx,%r12d
jne    1a60 <gm_encode+0x900>
mov    0x70(%rsp),%rax
mov    (%r14,%rax,4),%ebx
mov    $0x1e61,%eax
add    %eax,%ebx
mov    %edx,%r12d
jmp    1a88 <gm_encode+0x928>
lea    -0x1(%rbx),%eax
cmp    $0x5,%eax
ja     11fa <gm_encode+0x9a>
lea    0x1bc2(%rip),%rcx
movslq (%rcx,%rax,4),%rsi
add    %rcx,%rsi
lea    0x1c90(%rip),%r8
lea    0x1cc1(%rip),%rcx
lea    0x1cac(%rip),%rdx
lea    0x1c97(%rip),%r9
lea    0x1c82(%rip),%rax
jmp    *%rsi
mov    %rbx,0x30(%rsp)
mov    %rbp,%rdi
mov    %r8,%rsi
xor    %eax,%eax
call   1040 <concat@plt>
mov    0x3c(%rsp),%ebx
mov    0x48(%rsp),%rbp
mov    0x8(%rsp),%r13
mov    %r13,%rdi
call   1030 <strlen@plt>
mov    %rax,0x50(%rsp)
mov    %r13,%rdi
lea    0x1cef(%rip),%rsi
xor    %eax,%eax
call   1040 <concat@plt>
movabs $0x3000000030,%rax
mov    %rax,0x64(%rsp)
movl   $0x30,0x6c(%rsp)
mov    $0xffffffff,%eax
xor    %edi,%edi
jmp    158c <gm_encode+0x42c>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
mov    %ecx,%ebp
cmp    $0x2,%edi
jg     15f8 <gm_encode+0x498>
cmp    %r15d,%r12d
jge    15f8 <gm_encode+0x498>
movslq %r12d,%rdx
mov    (%r14,%rdx,4),%ecx
lea    -0x30(%rcx),%esi
cmp    $0x9,%esi
ja     15ae <gm_encode+0x44e>
movslq %edi,%rdi
mov    %ecx,0x64(%rsp,%rdi,4)
lea    0x1(%rdx),%r12d
add    $0x1,%edi
mov    0x4(%r14,%rdx,4),%ecx
lea    -0x2b(%rcx),%edx
cmp    $0x4,%edx
jb     15c0 <gm_encode+0x460>
cmp    $0x20,%ecx
jne    15ef <gm_encode+0x48f>
nopl   0x0(%rax,%rax,1)
add    $0x1,%r12d
mov    %edi,%eax
cmp    %ebx,%r12d
jge    1580 <gm_encode+0x420>
movslq %r12d,%rdx
cmpl   $0x13,(%r14,%rdx,4)
jne    1580 <gm_encode+0x420>
cmpl   $0x10,0x4(%r14,%rdx,4)
jne    1580 <gm_encode+0x420>
add    $0x2,%r12d
mov    $0x13,%ebp
mov    %edi,%eax
cmp    $0x2,%edi
jle    1587 <gm_encode+0x427>
jmp    15f8 <gm_encode+0x498>
mov    %ebp,%ecx
cmp    %ebx,%r12d
jl     15cb <gm_encode+0x46b>
jmp    1580 <gm_encode+0x420>
mov    %rdi,0x58(%rsp)
mov    %rbp,0x48(%rsp)
cmp    $0xffffffff,%eax
je     1d9c <gm_encode+0xc3c>
mov    0x48(%rsp),%rcx
add    $0xffffffed,%ecx
cmp    $0x1b,%ecx
ja     1c99 <gm_encode+0xb39>
lea    0x1ad9(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
lea    0x1b63(%rip),%r14
mov    0x20(%rsp),%rdx
jmp    *%rcx
mov    $0xf,%edx
jmp    1ca5 <gm_encode+0xb45>
mov    %rbp,%rdi
mov    %rdx,%rsi
xor    %eax,%eax
call   1040 <concat@plt>
movslq %r12d,%r15
mov    (%r14,%r15,4),%esi
cmp    $0x20,%esi
je     16a5 <gm_encode+0x545>
lea    -0x7b(%rsi),%eax
cmp    $0xffffffe5,%eax
ja     16a5 <gm_encode+0x545>
lea    -0x5b(%rsi),%eax
cmp    $0xffffffe5,%eax
ja     16a5 <gm_encode+0x545>
lea    -0x3a(%rsi),%eax
cmp    $0xfffffff6,%eax
jae    16a5 <gm_encode+0x545>
mov    0x8(%rsp),%rbp
mov    %rbp,%rdi
lea    0x1c05(%rip),%rsi
xor    %eax,%eax
call   1040 <concat@plt>
mov    (%r14,%r15,4),%esi
mov    %rbp,%rdi
xor    %eax,%eax
call   1080 <add_shift_char@plt>
add    $0x1,%r12d
mov    0x18(%rsp),%r15
jmp    1ec7 <gm_encode+0xd67>
lea    0x1b9d(%rip),%rdi
xor    %eax,%eax
call   1060 <posn@plt>
mov    %eax,%r13d
test   $0x20,%r13b
lea    0x1ad3(%rip),%r14
mov    %r14,%rsi
lea    0x1bef(%rip),%r15
cmove  %r15,%rsi
mov    0x8(%rsp),%rbp
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x10,%r13b
mov    %r14,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x8,%r13b
mov    %r14,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x4,%r13b
mov    %r14,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x2,%r13b
mov    %r14,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
mov    %r13,0x20(%rsp)
mov    %rbp,%rdi
test   $0x1,%r13b
jne    1c04 <gm_encode+0xaa4>
mov    %r15,%rsi
jmp    1c07 <gm_encode+0xaa7>
mov    %rbx,0x30(%rsp)
mov    %rbp,%rdi
mov    %rcx,%rsi
xor    %eax,%eax
call   1040 <concat@plt>
mov    0x14(%rsp),%ebx
mov    %rbp,%rdi
call   1030 <strlen@plt>
mov    %rax,0x40(%rsp)
mov    %rbp,%rdi
lea    0x1ac6(%rip),%rsi
xor    %eax,%eax
call   1040 <concat@plt>
cmp    $0x200,%ebx
je     12c1 <gm_encode+0x161>
mov    %rbp,%r13
mov    %ebx,%ebp
movslq %r12d,%rax
mov    (%r14,%rax,4),%eax
mov    %rax,0x20(%rsp)
movd   %eax,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqa %xmm0,%xmm1
pand   0x184e(%rip),%xmm1
pand   0x1856(%rip),%xmm0
pxor   %xmm2,%xmm2
pcmpeqd %xmm2,%xmm0
pcmpeqd %xmm2,%xmm1
packssdw %xmm0,%xmm1
packsswb %xmm1,%xmm1
pmovmskb %xmm1,%ebx
test   $0x80,%bl
lea    0x19b8(%rip),%r14
mov    %r14,%rsi
lea    0x1ad4(%rip),%r15
cmovne %r15,%rsi
mov    %r13,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x40,%bl
mov    %r14,%rsi
cmovne %r15,%rsi
mov    %r13,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x20,%bl
mov    %r14,%rsi
cmovne %r15,%rsi
mov    %r13,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x10,%bl
mov    %r14,%rsi
cmovne %r15,%rsi
mov    %r13,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x8,%bl
mov    %r14,%rsi
cmovne %r15,%rsi
mov    %r13,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x4,%bl
mov    %r14,%rsi
cmovne %r15,%rsi
mov    %r13,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x2,%bl
mov    %r14,%rsi
cmovne %r15,%rsi
mov    %r13,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x1,%bl
mov    %r14,%rsi
mov    0x28(%rsp),%r14
cmovne %r15,%rsi
mov    %r13,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
add    $0x1,%r12d
add    $0x1,%ebp
mov    %ebp,0x14(%rsp)
mov    0x18(%rsp),%r15
mov    %r13,%rbp
jmp    1ec2 <gm_encode+0xd62>
mov    %rbp,%rdi
mov    %rax,%rsi
xor    %eax,%eax
call   1040 <concat@plt>
mov    %rbx,%r13
movslq %r12d,%rbx
mov    (%r14,%rbx,4),%esi
cmp    $0x20,%esi
je     18ef <gm_encode+0x78f>
lea    -0x61(%rsi),%eax
cmp    $0x19,%eax
jbe    18ef <gm_encode+0x78f>
mov    0x8(%rsp),%rbp
mov    %rbp,%rdi
lea    0x1917(%rip),%rsi
xor    %eax,%eax
call   1040 <concat@plt>
mov    (%r14,%rbx,4),%esi
mov    %rbp,%rdi
xor    %eax,%eax
call   1080 <add_shift_char@plt>
mov    0x18(%rsp),%r15
jmp    1c35 <gm_encode+0xad5>
lea    0x1975(%rip),%rdi
xor    %eax,%eax
call   1060 <posn@plt>
mov    %eax,%ebx
test   $0x10,%bl
lea    0x188b(%rip),%r14
mov    %r14,%rsi
lea    0x19a7(%rip),%r15
cmove  %r15,%rsi
mov    0x8(%rsp),%rbp
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x8,%bl
mov    %r14,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x4,%bl
mov    %r14,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x2,%bl
mov    %r14,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x1,%bl
mov    %rbx,0x20(%rsp)
mov    %rbp,%rdi
jne    1c21 <gm_encode+0xac1>
mov    %r15,%rsi
jmp    1c24 <gm_encode+0xac4>
mov    %rbp,%rdi
mov    %r9,%rsi
xor    %eax,%eax
call   1040 <concat@plt>
mov    %rbx,%r13
movslq %r12d,%rbx
mov    (%r14,%rbx,4),%esi
cmp    $0x20,%esi
je     19d4 <gm_encode+0x874>
lea    -0x41(%rsi),%eax
cmp    $0x19,%eax
jbe    19d4 <gm_encode+0x874>
mov    0x8(%rsp),%rbp
mov    %rbp,%rdi
lea    0x1839(%rip),%rsi
xor    %eax,%eax
call   1040 <concat@plt>
mov    (%r14,%rbx,4),%esi
mov    %rbp,%rdi
xor    %eax,%eax
call   1080 <add_shift_char@plt>
add    $0x1,%r12d
mov    0x18(%rsp),%r15
mov    %r13,%rbx
jmp    1ec7 <gm_encode+0xd67>
lea    0x18b7(%rip),%rdi
xor    %eax,%eax
call   1060 <posn@plt>
mov    %eax,%ebx
test   $0x10,%bl
lea    0x17a6(%rip),%r14
mov    %r14,%rsi
lea    0x18c2(%rip),%r15
cmove  %r15,%rsi
mov    0x8(%rsp),%rbp
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x8,%bl
mov    %r14,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x4,%bl
mov    %r14,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x2,%bl
mov    %r14,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x1,%bl
mov    %rbx,0x20(%rsp)
mov    %rbp,%rdi
jne    1c41 <gm_encode+0xae1>
mov    %r15,%rsi
jmp    1c44 <gm_encode+0xae4>
cmp    $0x13,%ecx
jne    1c61 <gm_encode+0xb01>
lea    0x1(%r12),%ecx
cmpl   $0x10,0x4(%r14,%rax,4)
mov    $0x1e60,%eax
mov    0x20(%rsp),%rbx
cmove  %eax,%ebx
cmovne %r12d,%ecx
mov    %ecx,%r12d
lea    0x182b(%rip),%r15
lea    0x16fe(%rip),%r13
test   $0x1000,%ebx
mov    %r13,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x800,%ebx
mov    %r13,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x400,%ebx
mov    %r13,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x200,%ebx
mov    %r13,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x100,%ebx
mov    %r13,%rsi
cmove  %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
mov    %rbx,0x20(%rsp)
movd   %ebx,%xmm0
pshufd $0x0,%xmm0,%xmm0
movdqa %xmm0,%xmm1
pand   0x14dd(%rip),%xmm1
pand   0x14e5(%rip),%xmm0
pxor   %xmm2,%xmm2
pcmpeqd %xmm2,%xmm0
pcmpeqd %xmm2,%xmm1
packssdw %xmm0,%xmm1
packsswb %xmm1,%xmm1
pmovmskb %xmm1,%ebx
test   $0x80,%bl
mov    %r13,%rsi
cmovne %r15,%rsi
mov    0x8(%rsp),%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x40,%bl
mov    %r13,%rsi
cmovne %r15,%rsi
mov    0x8(%rsp),%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x20,%bl
mov    %r13,%rsi
cmovne %r15,%rsi
mov    0x8(%rsp),%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x10,%bl
mov    %r13,%rsi
cmovne %r15,%rsi
mov    0x8(%rsp),%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x8,%bl
mov    %r13,%rsi
cmovne %r15,%rsi
mov    0x8(%rsp),%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x4,%bl
mov    %r13,%rsi
cmovne %r15,%rsi
mov    0x8(%rsp),%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x2,%bl
mov    %r13,%rsi
cmovne %r15,%rsi
mov    0x8(%rsp),%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x1,%bl
mov    0x8(%rsp),%rbp
mov    %r13,%rsi
cmovne %r15,%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
add    $0x1,%r12d
mov    0x18(%rsp),%r15
jmp    1ec2 <gm_encode+0xd62>
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <concat@plt>
add    $0x1,%r12d
mov    0x18(%rsp),%r15
mov    0x28(%rsp),%r14
jmp    1ec7 <gm_encode+0xd67>
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <concat@plt>
mov    0x18(%rsp),%r15
mov    0x28(%rsp),%r14
mov    %r13,%rbx
add    $0x1,%r12d
jmp    1ec7 <gm_encode+0xd67>
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <concat@plt>
add    $0x1,%r12d
mov    0x18(%rsp),%r15
mov    0x28(%rsp),%r14
mov    %r13,%rbx
jmp    1ec7 <gm_encode+0xd67>
lea    0x1652(%rip),%r15
lea    0x1525(%rip),%r13
mov    0x20(%rsp),%rbx
jmp    1a96 <gm_encode+0x936>
xor    %edx,%edx
jmp    1ca5 <gm_encode+0xb45>
mov    $0x3,%edx
jmp    1ca5 <gm_encode+0xb45>
mov    $0xc,%edx
jmp    1ca5 <gm_encode+0xb45>
mov    $0x6,%edx
jmp    1ca5 <gm_encode+0xb45>
mov    $0x9,%edx
jmp    1ca5 <gm_encode+0xb45>
lea    0x14f4(%rip),%r14
mov    0x20(%rsp),%rdx
lea    (%rdx,%rax,1),%ebp
lea    (%rdx,%rax,1),%r15d
add    $0x3e8,%r15d
test   $0x200,%r15d
mov    %r14,%rsi
lea    0x15f6(%rip),%r13
cmove  %r13,%rsi
mov    0x8(%rsp),%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x100,%r15d
mov    %r14,%rsi
cmove  %r13,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x80,%r15b
mov    %r14,%rsi
cmove  %r13,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x40,%r15b
mov    %r14,%rsi
cmove  %r13,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x20,%r15b
mov    %r14,%rsi
cmove  %r13,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x10,%r15b
mov    %r14,%rsi
cmove  %r13,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x8,%r15b
mov    %r14,%rsi
cmove  %r13,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x4,%bpl
mov    %r14,%rsi
cmove  %r13,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x2,%bpl
mov    %r14,%rsi
cmove  %r13,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x1,%bpl
cmove  %r13,%r14
mov    %rbx,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <concat@plt>
mov    0x28(%rsp),%r14
imul   $0x64,0x64(%rsp),%eax
mov    0x68(%rsp),%ecx
mov    0x6c(%rsp),%edx
lea    (%rcx,%rcx,4),%ecx
lea    (%rax,%rcx,2),%eax
lea    (%rdx,%rax,1),%r15d
add    $0xffffeb30,%r15d
add    %edx,%eax
mov    %eax,0x60(%rsp)
test   $0x200,%r15d
lea    0x13c6(%rip),%r13
mov    %r13,%rsi
lea    0x14e2(%rip),%rbp
cmove  %rbp,%rsi
mov    0x8(%rsp),%rbx
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x100,%r15d
mov    %r13,%rsi
cmove  %rbp,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x80,%r15b
mov    %r13,%rsi
cmove  %rbp,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x40,%r15b
mov    %r13,%rsi
cmove  %rbp,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x20,%r15b
mov    %r13,%rsi
cmove  %rbp,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
mov    %r15,0x20(%rsp)
test   $0x10,%r15b
mov    %rbp,%r15
mov    %r13,%rsi
cmove  %rbp,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
mov    0x60(%rsp),%ebp
test   $0x8,%bpl
mov    %r13,%rsi
cmove  %r15,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x4,%bpl
mov    %r13,%rsi
cmove  %r15,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
test   $0x2,%bpl
mov    %r13,%rsi
cmove  %r15,%rsi
mov    %rbx,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
mov    %rbx,%rdi
test   $0x1,%bpl
jne    1eb0 <gm_encode+0xd50>
mov    %r15,%rsi
jmp    1eb3 <gm_encode+0xd53>
mov    %r13,%rsi
xor    %eax,%eax
call   1040 <concat@plt>
mov    0x18(%rsp),%r15
mov    %rbx,%rbp
mov    0x30(%rsp),%rbx
mov    %rbp,%rdi
call   1030 <strlen@plt>
cmp    $0x23e7,%rax
ja     1ef2 <gm_encode+0xd92>
mov    %ebx,%r13d
cmp    %r15d,%r12d
jl     11e0 <gm_encode+0x80>
jmp    1efc <gm_encode+0xd9c>
movl   $0x0,0x14(%rsp)
jmp    11fa <gm_encode+0x9a>
mov    $0x5,%eax
jmp    1ff8 <gm_encode+0xe98>
add    $0xffffffff,%ebx
cmp    $0x6,%ebx
ja     1f89 <gm_encode+0xe29>
lea    0x139f(%rip),%rsi
lea    0x1256(%rip),%rax
movslq (%rax,%rbx,4),%rcx
add    %rax,%rcx
jmp    *%rcx
lea    0x12ad(%rip),%rsi
jmp    1f7f <gm_encode+0xe1f>
mov    %rbp,%rdi
mov    0x40(%rsp),%rsi
mov    0x14(%rsp),%edx
xor    %eax,%eax
call   1070 <add_byte_count@plt>
lea    0x1375(%rip),%rsi
jmp    1f7f <gm_encode+0xe1f>
mov    0x58(%rsp),%rcx
add    $0xffffffff,%ecx
lea    0x1369(%rip),%rsi
cmp    $0x2,%ecx
ja     1f7f <gm_encode+0xe1f>
shl    $0x3,%ecx
mov    $0x303031,%eax
shr    %cl,%eax
mov    $0x303130,%edx
shr    %cl,%edx
movslq 0x50(%rsp),%rcx
mov    %al,0x0(%rbp,%rcx,1)
mov    %dl,0x1(%rbp,%rcx,1)
jmp    1f7f <gm_encode+0xe1f>
lea    0x1348(%rip),%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1040 <concat@plt>
mov    %rbp,%rdi
call   1030 <strlen@plt>
mov    %rax,%rbx
movabs $0x2492492492492493,%rcx
49 92 24
mul    %rcx
mov    %rbx,%rax
sub    %rdx,%rax
shr    %rax
add    %rdx,%rax
shr    $0x2,%rax
lea    0x0(,%rax,8),%ecx
sub    %ecx,%eax
add    %eax,%ebx
je     1fe2 <gm_encode+0xe82>
xor    $0x7,%ebx
je     1fe2 <gm_encode+0xe82>
lea    0x12f0(%rip),%r14
nopw   0x0(%rax,%rax,1)
mov    %rbp,%rdi
mov    %r14,%rsi
xor    %eax,%eax
call   1040 <concat@plt>
add    $0xffffffff,%ebx
jne    1fd0 <gm_encode+0xe70>
mov    %rbp,%rdi
call   1030 <strlen@plt>
xor    %ecx,%ecx
cmp    $0x23e8,%rax
setae  %cl
lea    (%rcx,%rcx,4),%eax
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@.str = [1 x i8] zeroinitializer
@.str.1 = [5 x i8] c"1010\00"
@.str.2 = [5 x i8] c"0001\00"
@.str.3 = [5 x i8] c"0010\00"
@.str.4 = [5 x i8] c"0011\00"
@.str.5 = [5 x i8] c"0100\00"
@.str.6 = [5 x i8] c"0101\00"
@.str.7 = [5 x i8] c"0111\00"
@.str.8 = [14 x i8] c"1111111100001\00"
@.str.9 = [14 x i8] c"1111111100010\00"
@.str.10 = [14 x i8] c"1111111100011\00"
@.str.11 = [14 x i8] c"1111111100100\00"
@.str.12 = [14 x i8] c"1111111100101\00"
@.str.13 = [11 x i8] c"1111111011\00"
@.str.14 = [11 x i8] c"1111111100\00"
@.str.15 = [11 x i8] c"1111111101\00"
@.str.16 = [11 x i8] c"1111111110\00"
@.str.17 = [11 x i8] c"1111111111\00"
@.str.18 = [6 x i8] c"11100\00"
@.str.19 = [6 x i8] c"11101\00"
@.str.20 = [6 x i8] c"11110\00"
@.str.21 = [8 x i8] c"1111100\00"
@.str.22 = [8 x i8] c"1111110\00"
@.str.23 = [11 x i8] c"1111110001\00"
@.str.24 = [11 x i8] c"1111110010\00"
@.str.25 = [11 x i8] c"1111110011\00"
@.str.26 = [11 x i8] c"1111110100\00"
@.str.27 = [11 x i8] c"1111110111\00"
@.str.28 = [6 x i8] c"CHIN \00"
@.str.29 = [6 x i8] c"NUMB \00"
@.str.30 = [6 x i8] c"LOWR \00"
@.str.31 = [6 x i8] c"UPPR \00"
@.str.32 = [6 x i8] c"MIXD \00"
@.str.33 = [6 x i8] c"BYTE \00"
@.str.34 = [6 x i8] c"[%d] \00"
@.str.35 = [2 x i8] c"1\00"
@.str.36 = [2 x i8] c"0\00"
@.str.37 = [3 x i8] c"XX\00"
@.str.38 = [10 x i8] c"LLLLLLLLL\00"
@.str.39 = [62 x i8] c"0123456789ABCDEFGHIJKLMOPRSTUVWXYZabcdefghijklmnopqrstuvwxyz \00"
@.str.40 = [11 x i8] c"1111110110\00"
@.str.41 = [28 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZ \00"
@.str.42 = [8 x i8] c"1111101\00"
@.str.43 = [28 x i8] c"abcdefghijklmnopqrstuvwxyz \00"
@.str.44 = [14 x i8] c"1111111100000\00"
@.str.45 = [11 x i8] c"1111111010\00"
@.str.46 = [6 x i8] c"11011\00"
@.str.47 = [11 x i8] c"1111110000\00"
@.str.48 = [5 x i8] c"0000\00"
define i32 @gm_encode(i32* %0, i32 %1, i8* %2, i32 %3) {
%5 = alloca i32
%6 = alloca i32*
%7 = alloca i32
%8 = alloca i8*
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca [3 x i32]
%21 = alloca i32
%22 = alloca i32
%23 = alloca i32
%24 = alloca i32
%25 = alloca i32
%26 = alloca i32
%27 = alloca i32
store i32* %0, i32** %6
store i32 %1, i32* %7
store i8* %2, i8** %8
store i32 %3, i32* %9
store i32 0, i32* %14
store i32 0, i32* %18
store i32 0, i32* %21
store i32 0, i32* %23
store i32 0, i32* %24
store i32 0, i32* %25
%28 = load i8*, i8** %8
%29 = call i8* @strcpy(i8* %28, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @.str, i64 0, i64 0))
store i32 0, i32* %10
store i32 0, i32* %11
store i32 0, i32* %13
store i32 0, i32* %22
%30 = load i32, i32* %9
%31 = icmp ne i32 %30, 0
br i1 %31, label %32, label %35
32: ; preds = %4
%33 = load i8*, i8** %8
%34 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %33, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0))
br label %35
35: ; preds = %32, %4
br label %36
36: ; preds = %1313, %35
%37 = load i32*, i32** %6
%38 = load i32, i32* %7
%39 = load i32, i32* %10
%40 = load i32, i32* %11
%41 = call i32 (i32*, i32, i32, i32, ...) bitcast (i32 (...)* @seek_forward to i32 (i32*, i32, i32, i32, ...)*)(i32* %37, i32 %38, i32 %39, i32 %40)
store i32 %41, i32* %12
%42 = load i32, i32* %12
%43 = load i32, i32* %11
%44 = icmp ne i32 %42, %43
br i1 %44, label %45, label %213
45: ; preds = %36
%46 = load i32, i32* %11
switch i32 %46, label %194 [
i32 0, label %47
i32 7, label %68
i32 1, label %86
i32 2, label %136
i32 3, label %136
i32 4, label %154
i32 6, label %172
]
47: ; preds = %45
%48 = load i32, i32* %12
switch i32 %48, label %67 [
i32 7, label %49
i32 1, label %52
i32 2, label %55
i32 3, label %58
i32 4, label %61
i32 6, label %64
]
49: ; preds = %47
%50 = load i8*, i8** %8
%51 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %50, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
br label %67
52: ; preds = %47
%53 = load i8*, i8** %8
%54 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %53, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
br label %67
55: ; preds = %47
%56 = load i8*, i8** %8
%57 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %56, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %67
58: ; preds = %47
%59 = load i8*, i8** %8
%60 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %59, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
br label %67
61: ; preds = %47
%62 = load i8*, i8** %8
%63 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %62, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
br label %67
64: ; preds = %47
%65 = load i8*, i8** %8
%66 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %65, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0))
br label %67
67: ; preds = %47, %64, %61, %58, %55, %52, %49
br label %194
68: ; preds = %45
%69 = load i32, i32* %12
switch i32 %69, label %85 [
i32 1, label %70
i32 2, label %73
i32 3, label %76
i32 4, label %79
i32 6, label %82
]
70: ; preds = %68
%71 = load i8*, i8** %8
%72 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %71, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.8, i64 0, i64 0))
br label %85
73: ; preds = %68
%74 = load i8*, i8** %8
%75 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %74, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.9, i64 0, i64 0))
br label %85
76: ; preds = %68
%77 = load i8*, i8** %8
%78 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %77, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.10, i64 0, i64 0))
br label %85
79: ; preds = %68
%80 = load i8*, i8** %8
%81 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %80, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.11, i64 0, i64 0))
br label %85
82: ; preds = %68
%83 = load i8*, i8** %8
%84 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %83, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.12, i64 0, i64 0))
br label %85
85: ; preds = %68, %82, %79, %76, %73, %70
br label %194
86: ; preds = %45
%87 = load i32, i32* %18
switch i32 %87, label %118 [
i32 1, label %88
i32 2, label %98
i32 3, label %108
]
88: ; preds = %86
%89 = load i8*, i8** %8
%90 = load i32, i32* %22
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds i8, i8* %89, i64 %91
store i8 49, i8* %92
%93 = load i8*, i8** %8
%94 = load i32, i32* %22
%95 = add nsw i32 %94, 1
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds i8, i8* %93, i64 %96
store i8 48, i8* %97
br label %118
98: ; preds = %86
%99 = load i8*, i8** %8
%100 = load i32, i32* %22
%101 = sext i32 %100 to i64
%102 = getelementptr inbounds i8, i8* %99, i64 %101
store i8 48, i8* %102
%103 = load i8*, i8** %8
%104 = load i32, i32* %22
%105 = add nsw i32 %104, 1
%106 = sext i32 %105 to i64
%107 = getelementptr inbounds i8, i8* %103, i64 %106
store i8 49, i8* %107
br label %118
108: ; preds = %86
%109 = load i8*, i8** %8
%110 = load i32, i32* %22
%111 = sext i32 %110 to i64
%112 = getelementptr inbounds i8, i8* %109, i64 %111
store i8 48, i8* %112
%113 = load i8*, i8** %8
%114 = load i32, i32* %22
%115 = add nsw i32 %114, 1
%116 = sext i32 %115 to i64
%117 = getelementptr inbounds i8, i8* %113, i64 %116
store i8 48, i8* %117
br label %118
118: ; preds = %86, %108, %98, %88
%119 = load i32, i32* %12
switch i32 %119, label %135 [
i32 7, label %120
i32 2, label %123
i32 3, label %126
i32 4, label %129
i32 6, label %132
]
120: ; preds = %118
%121 = load i8*, i8** %8
%122 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %121, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0))
br label %135
123: ; preds = %118
%124 = load i8*, i8** %8
%125 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %124, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.14, i64 0, i64 0))
br label %135
126: ; preds = %118
%127 = load i8*, i8** %8
%128 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %127, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.15, i64 0, i64 0))
br label %135
129: ; preds = %118
%130 = load i8*, i8** %8
%131 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %130, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.16, i64 0, i64 0))
br label %135
132: ; preds = %118
%133 = load i8*, i8** %8
%134 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %133, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.17, i64 0, i64 0))
br label %135
135: ; preds = %118, %132, %129, %126, %123, %120
br label %194
136: ; preds = %45, %45
%137 = load i32, i32* %12
switch i32 %137, label %153 [
i32 7, label %138
i32 1, label %141
i32 2, label %144
i32 3, label %144
i32 4, label %147
i32 6, label %150
]
138: ; preds = %136
%139 = load i8*, i8** %8
%140 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %139, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0))
br label %153
141: ; preds = %136
%142 = load i8*, i8** %8
%143 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %142, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.19, i64 0, i64 0))
br label %153
144: ; preds = %136, %136
%145 = load i8*, i8** %8
%146 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %145, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i64 0, i64 0))
br label %153
147: ; preds = %136
%148 = load i8*, i8** %8
%149 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %148, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.21, i64 0, i64 0))
br label %153
150: ; preds = %136
%151 = load i8*, i8** %8
%152 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %151, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.22, i64 0, i64 0))
br label %153
153: ; preds = %136, %150, %147, %144, %141, %138
br label %194
154: ; preds = %45
%155 = load i32, i32* %12
switch i32 %155, label %171 [
i32 7, label %156
i32 1, label %159
i32 2, label %162
i32 3, label %165
i32 6, label %168
]
156: ; preds = %154
%157 = load i8*, i8** %8
%158 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %157, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.23, i64 0, i64 0))
br label %171
159: ; preds = %154
%160 = load i8*, i8** %8
%161 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %160, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.24, i64 0, i64 0))
br label %171
162: ; preds = %154
%163 = load i8*, i8** %8
%164 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %163, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.25, i64 0, i64 0))
br label %171
165: ; preds = %154
%166 = load i8*, i8** %8
%167 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %166, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.26, i64 0, i64 0))
br label %171
168: ; preds = %154
%169 = load i8*, i8** %8
%170 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %169, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.27, i64 0, i64 0))
br label %171
171: ; preds = %154, %168, %165, %162, %159, %156
br label %194
172: ; preds = %45
%173 = load i8*, i8** %8
%174 = load i32, i32* %24
%175 = load i32, i32* %25
%176 = call i32 (i8*, i32, i32, ...) bitcast (i32 (...)* @add_byte_count to i32 (i8*, i32, i32, ...)*)(i8* %173, i32 %174, i32 %175)
store i32 0, i32* %25
%177 = load i32, i32* %12
switch i32 %177, label %193 [
i32 7, label %178
i32 1, label %181
i32 2, label %184
i32 3, label %187
i32 4, label %190
]
178: ; preds = %172
%179 = load i8*, i8** %8
%180 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %179, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0))
br label %193
181: ; preds = %172
%182 = load i8*, i8** %8
%183 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %182, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0))
br label %193
184: ; preds = %172
%185 = load i8*, i8** %8
%186 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %185, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0))
br label %193
187: ; preds = %172
%188 = load i8*, i8** %8
%189 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %188, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0))
br label %193
190: ; preds = %172
%191 = load i8*, i8** %8
%192 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %191, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0))
br label %193
193: ; preds = %172, %190, %187, %184, %181, %178
br label %194
194: ; preds = %45, %193, %171, %153, %135, %85, %67
%195 = load i32, i32* %23
%196 = icmp ne i32 %195, 0
br i1 %196, label %197, label %212
197: ; preds = %194
%198 = load i32, i32* %12
switch i32 %198, label %211 [
i32 7, label %199
i32 1, label %201
i32 2, label %203
i32 3, label %205
i32 4, label %207
i32 6, label %209
]
199: ; preds = %197
%200 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.28, i64 0, i64 0))
br label %211
201: ; preds = %197
%202 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.29, i64 0, i64 0))
br label %211
203: ; preds = %197
%204 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.30, i64 0, i64 0))
br label %211
205: ; preds = %197
%206 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.31, i64 0, i64 0))
br label %211
207: ; preds = %197
%208 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.32, i64 0, i64 0))
br label %211
209: ; preds = %197
%210 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.33, i64 0, i64 0))
br label %211
211: ; preds = %197, %209, %207, %205, %203, %201, %199
br label %212
212: ; preds = %211, %194
br label %213
213: ; preds = %212, %36
%214 = load i32, i32* %11
store i32 %214, i32* %13
%215 = load i32, i32* %12
store i32 %215, i32* %11
%216 = load i32, i32* %11
switch i32 %216, label %1307 [
i32 7, label %217
i32 1, label %501
i32 6, label %840
i32 4, label %961
i32 3, label %1103
i32 2, label %1205
]
217: ; preds = %213
store i32 0, i32* %17
%218 = load i32*, i32** %6
%219 = load i32, i32* %10
%220 = sext i32 %219 to i64
%221 = getelementptr inbounds i32, i32* %218, i64 %220
%222 = load i32, i32* %221
%223 = icmp sgt i32 %222, 255
br i1 %223, label %224, label %265
224: ; preds = %217
%225 = load i32*, i32** %6
%226 = load i32, i32* %10
%227 = sext i32 %226 to i64
%228 = getelementptr inbounds i32, i32* %225, i64 %227
%229 = load i32, i32* %228
%230 = and i32 %229, 65280
%231 = ashr i32 %230, 8
store i32 %231, i32* %15
%232 = load i32*, i32** %6
%233 = load i32, i32* %10
%234 = sext i32 %233 to i64
%235 = getelementptr inbounds i32, i32* %232, i64 %234
%236 = load i32, i32* %235
%237 = and i32 %236, 255
store i32 %237, i32* %16
%238 = load i32, i32* %15
%239 = icmp sge i32 %238, 160
br i1 %239, label %240, label %250
240: ; preds = %224
%241 = load i32, i32* %15
%242 = icmp sle i32 %241, 169
br i1 %242, label %243, label %250
243: ; preds = %240
%244 = load i32, i32* %15
%245 = sub nsw i32 %244, 161
%246 = mul nsw i32 96, %245
%247 = load i32, i32* %16
%248 = sub nsw i32 %247, 160
%249 = add nsw i32 %246, %248
store i32 %249, i32* %14
br label %250
250: ; preds = %243, %240, %224
%251 = load i32, i32* %15
%252 = icmp sge i32 %251, 176
br i1 %252, label %253, label %264
253: ; preds = %250
%254 = load i32, i32* %15
%255 = icmp sle i32 %254, 247
br i1 %255, label %256, label %264
256: ; preds = %253
%257 = load i32, i32* %15
%258 = sub nsw i32 %257, 176
%259 = add nsw i32 %258, 9
%260 = mul nsw i32 96, %259
%261 = load i32, i32* %16
%262 = sub nsw i32 %261, 160
%263 = add nsw i32 %260, %262
store i32 %263, i32* %14
br label %264
264: ; preds = %256, %253, %250
store i32 1, i32* %17
br label %265
265: ; preds = %264, %217
%266 = load i32, i32* %17
%267 = icmp ne i32 %266, 0
br i1 %267, label %293, label %268
268: ; preds = %265
%269 = load i32, i32* %10
%270 = load i32, i32* %7
%271 = sub nsw i32 %270, 1
%272 = icmp ne i32 %269, %271
br i1 %272, label %273, label %292
273: ; preds = %268
%274 = load i32*, i32** %6
%275 = load i32, i32* %10
%276 = sext i32 %275 to i64
%277 = getelementptr inbounds i32, i32* %274, i64 %276
%278 = load i32, i32* %277
%279 = icmp eq i32 %278, 19
br i1 %279, label %280, label %291
280: ; preds = %273
%281 = load i32*, i32** %6
%282 = load i32, i32* %10
%283 = add nsw i32 %282, 1
%284 = sext i32 %283 to i64
%285 = getelementptr inbounds i32, i32* %281, i64 %284
%286 = load i32, i32* %285
%287 = icmp eq i32 %286, 16
br i1 %287, label %288, label %291
288: ; preds = %280
store i32 7776, i32* %14
%289 = load i32, i32* %10
%290 = add nsw i32 %289, 1
store i32 %290, i32* %10
br label %291
291: ; preds = %288, %280, %273
store i32 1, i32* %17
br label %292
292: ; preds = %291, %268
br label %293
293: ; preds = %292, %265
%294 = load i32, i32* %17
%295 = icmp ne i32 %294, 0
br i1 %295, label %352, label %296
296: ; preds = %293
%297 = load i32, i32* %10
%298 = load i32, i32* %7
%299 = sub nsw i32 %298, 1
%300 = icmp ne i32 %297, %299
br i1 %300, label %301, label %351
301: ; preds = %296
%302 = load i32*, i32** %6
%303 = load i32, i32* %10
%304 = sext i32 %303 to i64
%305 = getelementptr inbounds i32, i32* %302, i64 %304
%306 = load i32, i32* %305
%307 = icmp sge i32 %306, 48
br i1 %307, label %308, label %350
308: ; preds = %301
%309 = load i32*, i32** %6
%310 = load i32, i32* %10
%311 = sext i32 %310 to i64
%312 = getelementptr inbounds i32, i32* %309, i64 %311
%313 = load i32, i32* %312
%314 = icmp sle i32 %313, 57
br i1 %314, label %315, label %350
315: ; preds = %308
%316 = load i32*, i32** %6
%317 = load i32, i32* %10
%318 = add nsw i32 %317, 1
%319 = sext i32 %318 to i64
%320 = getelementptr inbounds i32, i32* %316, i64 %319
%321 = load i32, i32* %320
%322 = icmp sge i32 %321, 48
br i1 %322, label %323, label %350
323: ; preds = %315
%324 = load i32*, i32** %6
%325 = load i32, i32* %10
%326 = add nsw i32 %325, 1
%327 = sext i32 %326 to i64
%328 = getelementptr inbounds i32, i32* %324, i64 %327
%329 = load i32, i32* %328
%330 = icmp sle i32 %329, 57
br i1 %330, label %331, label %350
331: ; preds = %323
%332 = load i32*, i32** %6
%333 = load i32, i32* %10
%334 = sext i32 %333 to i64
%335 = getelementptr inbounds i32, i32* %332, i64 %334
%336 = load i32, i32* %335
%337 = sub nsw i32 %336, 48
%338 = mul nsw i32 10, %337
%339 = add nsw i32 8033, %338
%340 = load i32*, i32** %6
%341 = load i32, i32* %10
%342 = add nsw i32 %341, 1
%343 = sext i32 %342 to i64
%344 = getelementptr inbounds i32, i32* %340, i64 %343
%345 = load i32, i32* %344
%346 = sub nsw i32 %345, 48
%347 = add nsw i32 %339, %346
store i32 %347, i32* %14
%348 = load i32, i32* %10
%349 = add nsw i32 %348, 1
store i32 %349, i32* %10
br label %350
350: ; preds = %331, %323, %315, %308, %301
br label %351
351: ; preds = %350, %296
br label %352
352: ; preds = %351, %293
%353 = load i32, i32* %17
%354 = icmp ne i32 %353, 0
br i1 %354, label %362, label %355
355: ; preds = %352
%356 = load i32*, i32** %6
%357 = load i32, i32* %10
%358 = sext i32 %357 to i64
%359 = getelementptr inbounds i32, i32* %356, i64 %358
%360 = load i32, i32* %359
%361 = add nsw i32 7777, %360
store i32 %361, i32* %14
br label %362
362: ; preds = %355, %352
%363 = load i32, i32* %23
%364 = icmp ne i32 %363, 0
br i1 %364, label %365, label %368
365: ; preds = %362
%366 = load i32, i32* %14
%367 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.34, i64 0, i64 0), i32 %366)
br label %368
368: ; preds = %365, %362
%369 = load i32, i32* %14
%370 = and i32 %369, 4096
%371 = icmp ne i32 %370, 0
br i1 %371, label %372, label %375
372: ; preds = %368
%373 = load i8*, i8** %8
%374 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %373, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %378
375: ; preds = %368
%376 = load i8*, i8** %8
%377 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %376, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %378
378: ; preds = %375, %372
%379 = load i32, i32* %14
%380 = and i32 %379, 2048
%381 = icmp ne i32 %380, 0
br i1 %381, label %382, label %385
382: ; preds = %378
%383 = load i8*, i8** %8
%384 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %383, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %388
385: ; preds = %378
%386 = load i8*, i8** %8
%387 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %386, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %388
388: ; preds = %385, %382
%389 = load i32, i32* %14
%390 = and i32 %389, 1024
%391 = icmp ne i32 %390, 0
br i1 %391, label %392, label %395
392: ; preds = %388
%393 = load i8*, i8** %8
%394 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %393, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %398
395: ; preds = %388
%396 = load i8*, i8** %8
%397 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %396, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %398
398: ; preds = %395, %392
%399 = load i32, i32* %14
%400 = and i32 %399, 512
%401 = icmp ne i32 %400, 0
br i1 %401, label %402, label %405
402: ; preds = %398
%403 = load i8*, i8** %8
%404 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %403, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %408
405: ; preds = %398
%406 = load i8*, i8** %8
%407 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %406, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %408
408: ; preds = %405, %402
%409 = load i32, i32* %14
%410 = and i32 %409, 256
%411 = icmp ne i32 %410, 0
br i1 %411, label %412, label %415
412: ; preds = %408
%413 = load i8*, i8** %8
%414 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %413, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %418
415: ; preds = %408
%416 = load i8*, i8** %8
%417 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %416, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %418
418: ; preds = %415, %412
%419 = load i32, i32* %14
%420 = and i32 %419, 128
%421 = icmp ne i32 %420, 0
br i1 %421, label %422, label %425
422: ; preds = %418
%423 = load i8*, i8** %8
%424 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %423, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %428
425: ; preds = %418
%426 = load i8*, i8** %8
%427 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %426, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %428
428: ; preds = %425, %422
%429 = load i32, i32* %14
%430 = and i32 %429, 64
%431 = icmp ne i32 %430, 0
br i1 %431, label %432, label %435
432: ; preds = %428
%433 = load i8*, i8** %8
%434 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %433, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %438
435: ; preds = %428
%436 = load i8*, i8** %8
%437 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %436, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %438
438: ; preds = %435, %432
%439 = load i32, i32* %14
%440 = and i32 %439, 32
%441 = icmp ne i32 %440, 0
br i1 %441, label %442, label %445
442: ; preds = %438
%443 = load i8*, i8** %8
%444 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %443, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %448
445: ; preds = %438
%446 = load i8*, i8** %8
%447 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %446, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %448
448: ; preds = %445, %442
%449 = load i32, i32* %14
%450 = and i32 %449, 16
%451 = icmp ne i32 %450, 0
br i1 %451, label %452, label %455
452: ; preds = %448
%453 = load i8*, i8** %8
%454 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %453, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %458
455: ; preds = %448
%456 = load i8*, i8** %8
%457 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %456, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %458
458: ; preds = %455, %452
%459 = load i32, i32* %14
%460 = and i32 %459, 8
%461 = icmp ne i32 %460, 0
br i1 %461, label %462, label %465
462: ; preds = %458
%463 = load i8*, i8** %8
%464 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %463, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %468
465: ; preds = %458
%466 = load i8*, i8** %8
%467 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %466, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %468
468: ; preds = %465, %462
%469 = load i32, i32* %14
%470 = and i32 %469, 4
%471 = icmp ne i32 %470, 0
br i1 %471, label %472, label %475
472: ; preds = %468
%473 = load i8*, i8** %8
%474 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %473, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %478
475: ; preds = %468
%476 = load i8*, i8** %8
%477 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %476, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %478
478: ; preds = %475, %472
%479 = load i32, i32* %14
%480 = and i32 %479, 2
%481 = icmp ne i32 %480, 0
br i1 %481, label %482, label %485
482: ; preds = %478
%483 = load i8*, i8** %8
%484 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %483, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %488
485: ; preds = %478
%486 = load i8*, i8** %8
%487 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %486, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %488
488: ; preds = %485, %482
%489 = load i32, i32* %14
%490 = and i32 %489, 1
%491 = icmp ne i32 %490, 0
br i1 %491, label %492, label %495
492: ; preds = %488
%493 = load i8*, i8** %8
%494 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %493, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %498
495: ; preds = %488
%496 = load i8*, i8** %8
%497 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %496, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %498
498: ; preds = %495, %492
%499 = load i32, i32* %10
%500 = add nsw i32 %499, 1
store i32 %500, i32* %10
br label %1307
501: ; preds = %213
%502 = load i32, i32* %13
%503 = load i32, i32* %11
%504 = icmp ne i32 %502, %503
br i1 %504, label %505, label %511
505: ; preds = %501
%506 = load i8*, i8** %8
%507 = call i64 @strlen(i8* %506)
%508 = trunc i64 %507 to i32
store i32 %508, i32* %22
%509 = load i8*, i8** %8
%510 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %509, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.37, i64 0, i64 0))
br label %511
511: ; preds = %505, %501
store i32 0, i32* %18
store i32 -1, i32* %19
%512 = getelementptr inbounds [3 x i32], [3 x i32]* %20, i64 0, i64 0
store i32 48, i32* %512
%513 = getelementptr inbounds [3 x i32], [3 x i32]* %20, i64 0, i64 1
store i32 48, i32* %513
%514 = getelementptr inbounds [3 x i32], [3 x i32]* %20, i64 0, i64 2
store i32 48, i32* %514
br label %515
515: ; preds = %595, %511
%516 = load i32*, i32** %6
%517 = load i32, i32* %10
%518 = sext i32 %517 to i64
%519 = getelementptr inbounds i32, i32* %516, i64 %518
%520 = load i32, i32* %519
%521 = icmp sge i32 %520, 48
br i1 %521, label %522, label %542
522: ; preds = %515
%523 = load i32*, i32** %6
%524 = load i32, i32* %10
%525 = sext i32 %524 to i64
%526 = getelementptr inbounds i32, i32* %523, i64 %525
%527 = load i32, i32* %526
%528 = icmp sle i32 %527, 57
br i1 %528, label %529, label %542
529: ; preds = %522
%530 = load i32*, i32** %6
%531 = load i32, i32* %10
%532 = sext i32 %531 to i64
%533 = getelementptr inbounds i32, i32* %530, i64 %532
%534 = load i32, i32* %533
%535 = load i32, i32* %18
%536 = sext i32 %535 to i64
%537 = getelementptr inbounds [3 x i32], [3 x i32]* %20, i64 0, i64 %536
store i32 %534, i32* %537
%538 = load i32, i32* %10
%539 = add nsw i32 %538, 1
store i32 %539, i32* %10
%540 = load i32, i32* %18
%541 = add nsw i32 %540, 1
store i32 %541, i32* %18
br label %542
542: ; preds = %529, %522, %515
%543 = load i32*, i32** %6
%544 = load i32, i32* %10
%545 = sext i32 %544 to i64
%546 = getelementptr inbounds i32, i32* %543, i64 %545
%547 = load i32, i32* %546
switch i32 %547, label %557 [
i32 32, label %548
i32 43, label %548
i32 45, label %548
i32 46, label %548
i32 44, label %548
]
548: ; preds = %542, %542, %542, %542, %542
%549 = load i32*, i32** %6
%550 = load i32, i32* %10
%551 = sext i32 %550 to i64
%552 = getelementptr inbounds i32, i32* %549, i64 %551
%553 = load i32, i32* %552
store i32 %553, i32* %21
%554 = load i32, i32* %10
%555 = add nsw i32 %554, 1
store i32 %555, i32* %10
%556 = load i32, i32* %18
store i32 %556, i32* %19
br label %557
557: ; preds = %542, %548
%558 = load i32, i32* %10
%559 = load i32, i32* %7
%560 = sub nsw i32 %559, 1
%561 = icmp slt i32 %558, %560
br i1 %561, label %562, label %587
562: ; preds = %557
%563 = load i32*, i32** %6
%564 = load i32, i32* %10
%565 = sext i32 %564 to i64
%566 = getelementptr inbounds i32, i32* %563, i64 %565
%567 = load i32, i32* %566
%568 = icmp eq i32 %567, 19
br i1 %568, label %569, label %586
569: ; preds = %562
%570 = load i32*, i32** %6
%571 = load i32, i32* %10
%572 = add nsw i32 %571, 1
%573 = sext i32 %572 to i64
%574 = getelementptr inbounds i32, i32* %570, i64 %573
%575 = load i32, i32* %574
%576 = icmp eq i32 %575, 16
br i1 %576, label %577, label %586
577: ; preds = %569
%578 = load i32*, i32** %6
%579 = load i32, i32* %10
%580 = sext i32 %579 to i64
%581 = getelementptr inbounds i32, i32* %578, i64 %580
%582 = load i32, i32* %581
store i32 %582, i32* %21
%583 = load i32, i32* %10
%584 = add nsw i32 %583, 2
store i32 %584, i32* %10
%585 = load i32, i32* %18
store i32 %585, i32* %19
br label %586
586: ; preds = %577, %569, %562
br label %587
587: ; preds = %586, %557
br label %588
588: ; preds = %587
%589 = load i32, i32* %18
%590 = icmp slt i32 %589, 3
br i1 %590, label %591, label %595
591: ; preds = %588
%592 = load i32, i32* %10
%593 = load i32, i32* %7
%594 = icmp slt i32 %592, %593
br label %595
595: ; preds = %591, %588
%596 = phi i1 [ false, %588 ], [ %594, %591 ]
br i1 %596, label %515, label %597
597: ; preds = %595
%598 = load i32, i32* %19
%599 = icmp ne i32 %598, -1
br i1 %599, label %600, label %720
600: ; preds = %597
%601 = load i32, i32* %21
switch i32 %601, label %608 [
i32 32, label %602
i32 43, label %603
i32 45, label %604
i32 46, label %605
i32 44, label %606
i32 19, label %607
]
602: ; preds = %600
store i32 0, i32* %14
br label %608
603: ; preds = %600
store i32 3, i32* %14
br label %608
604: ; preds = %600
store i32 6, i32* %14
br label %608
605: ; preds = %600
store i32 9, i32* %14
br label %608
606: ; preds = %600
store i32 12, i32* %14
br label %608
607: ; preds = %600
store i32 15, i32* %14
br label %608
608: ; preds = %600, %607, %606, %605, %604, %603, %602
%609 = load i32, i32* %19
%610 = load i32, i32* %14
%611 = add nsw i32 %610, %609
store i32 %611, i32* %14
%612 = load i32, i32* %14
%613 = add nsw i32 %612, 1000
store i32 %613, i32* %14
%614 = load i32, i32* %23
%615 = icmp ne i32 %614, 0
br i1 %615, label %616, label %619
616: ; preds = %608
%617 = load i32, i32* %14
%618 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.34, i64 0, i64 0), i32 %617)
br label %619
619: ; preds = %616, %608
%620 = load i32, i32* %14
%621 = and i32 %620, 512
%622 = icmp ne i32 %621, 0
br i1 %622, label %623, label %626
623: ; preds = %619
%624 = load i8*, i8** %8
%625 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %624, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %629
626: ; preds = %619
%627 = load i8*, i8** %8
%628 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %627, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %629
629: ; preds = %626, %623
%630 = load i32, i32* %14
%631 = and i32 %630, 256
%632 = icmp ne i32 %631, 0
br i1 %632, label %633, label %636
633: ; preds = %629
%634 = load i8*, i8** %8
%635 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %634, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %639
636: ; preds = %629
%637 = load i8*, i8** %8
%638 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %637, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %639
639: ; preds = %636, %633
%640 = load i32, i32* %14
%641 = and i32 %640, 128
%642 = icmp ne i32 %641, 0
br i1 %642, label %643, label %646
643: ; preds = %639
%644 = load i8*, i8** %8
%645 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %644, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %649
646: ; preds = %639
%647 = load i8*, i8** %8
%648 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %647, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %649
649: ; preds = %646, %643
%650 = load i32, i32* %14
%651 = and i32 %650, 64
%652 = icmp ne i32 %651, 0
br i1 %652, label %653, label %656
653: ; preds = %649
%654 = load i8*, i8** %8
%655 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %654, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %659
656: ; preds = %649
%657 = load i8*, i8** %8
%658 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %657, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %659
659: ; preds = %656, %653
%660 = load i32, i32* %14
%661 = and i32 %660, 32
%662 = icmp ne i32 %661, 0
br i1 %662, label %663, label %666
663: ; preds = %659
%664 = load i8*, i8** %8
%665 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %664, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %669
666: ; preds = %659
%667 = load i8*, i8** %8
%668 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %667, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %669
669: ; preds = %666, %663
%670 = load i32, i32* %14
%671 = and i32 %670, 16
%672 = icmp ne i32 %671, 0
br i1 %672, label %673, label %676
673: ; preds = %669
%674 = load i8*, i8** %8
%675 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %674, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %679
676: ; preds = %669
%677 = load i8*, i8** %8
%678 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %677, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %679
679: ; preds = %676, %673
%680 = load i32, i32* %14
%681 = and i32 %680, 8
%682 = icmp ne i32 %681, 0
br i1 %682, label %683, label %686
683: ; preds = %679
%684 = load i8*, i8** %8
%685 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %684, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %689
686: ; preds = %679
%687 = load i8*, i8** %8
%688 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %687, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %689
689: ; preds = %686, %683
%690 = load i32, i32* %14
%691 = and i32 %690, 4
%692 = icmp ne i32 %691, 0
br i1 %692, label %693, label %696
693: ; preds = %689
%694 = load i8*, i8** %8
%695 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %694, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %699
696: ; preds = %689
%697 = load i8*, i8** %8
%698 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %697, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %699
699: ; preds = %696, %693
%700 = load i32, i32* %14
%701 = and i32 %700, 2
%702 = icmp ne i32 %701, 0
br i1 %702, label %703, label %706
703: ; preds = %699
%704 = load i8*, i8** %8
%705 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %704, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %709
706: ; preds = %699
%707 = load i8*, i8** %8
%708 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %707, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %709
709: ; preds = %706, %703
%710 = load i32, i32* %14
%711 = and i32 %710, 1
%712 = icmp ne i32 %711, 0
br i1 %712, label %713, label %716
713: ; preds = %709
%714 = load i8*, i8** %8
%715 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %714, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %719
716: ; preds = %709
%717 = load i8*, i8** %8
%718 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %717, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %719
719: ; preds = %716, %713
br label %720
720: ; preds = %719, %597
%721 = getelementptr inbounds [3 x i32], [3 x i32]* %20, i64 0, i64 0
%722 = load i32, i32* %721
%723 = sub nsw i32 %722, 48
%724 = mul nsw i32 100, %723
%725 = getelementptr inbounds [3 x i32], [3 x i32]* %20, i64 0, i64 1
%726 = load i32, i32* %725
%727 = sub nsw i32 %726, 48
%728 = mul nsw i32 10, %727
%729 = add nsw i32 %724, %728
%730 = getelementptr inbounds [3 x i32], [3 x i32]* %20, i64 0, i64 2
%731 = load i32, i32* %730
%732 = sub nsw i32 %731, 48
%733 = add nsw i32 %729, %732
store i32 %733, i32* %14
%734 = load i32, i32* %23
%735 = icmp ne i32 %734, 0
br i1 %735, label %736, label %739
736: ; preds = %720
%737 = load i32, i32* %14
%738 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.34, i64 0, i64 0), i32 %737)
br label %739
739: ; preds = %736, %720
%740 = load i32, i32* %14
%741 = and i32 %740, 512
%742 = icmp ne i32 %741, 0
br i1 %742, label %743, label %746
743: ; preds = %739
%744 = load i8*, i8** %8
%745 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %744, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %749
746: ; preds = %739
%747 = load i8*, i8** %8
%748 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %747, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %749
749: ; preds = %746, %743
%750 = load i32, i32* %14
%751 = and i32 %750, 256
%752 = icmp ne i32 %751, 0
br i1 %752, label %753, label %756
753: ; preds = %749
%754 = load i8*, i8** %8
%755 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %754, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %759
756: ; preds = %749
%757 = load i8*, i8** %8
%758 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %757, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %759
759: ; preds = %756, %753
%760 = load i32, i32* %14
%761 = and i32 %760, 128
%762 = icmp ne i32 %761, 0
br i1 %762, label %763, label %766
763: ; preds = %759
%764 = load i8*, i8** %8
%765 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %764, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %769
766: ; preds = %759
%767 = load i8*, i8** %8
%768 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %767, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %769
769: ; preds = %766, %763
%770 = load i32, i32* %14
%771 = and i32 %770, 64
%772 = icmp ne i32 %771, 0
br i1 %772, label %773, label %776
773: ; preds = %769
%774 = load i8*, i8** %8
%775 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %774, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %779
776: ; preds = %769
%777 = load i8*, i8** %8
%778 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %777, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %779
779: ; preds = %776, %773
%780 = load i32, i32* %14
%781 = and i32 %780, 32
%782 = icmp ne i32 %781, 0
br i1 %782, label %783, label %786
783: ; preds = %779
%784 = load i8*, i8** %8
%785 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %784, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %789
786: ; preds = %779
%787 = load i8*, i8** %8
%788 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %787, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %789
789: ; preds = %786, %783
%790 = load i32, i32* %14
%791 = and i32 %790, 16
%792 = icmp ne i32 %791, 0
br i1 %792, label %793, label %796
793: ; preds = %789
%794 = load i8*, i8** %8
%795 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %794, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %799
796: ; preds = %789
%797 = load i8*, i8** %8
%798 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %797, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %799
799: ; preds = %796, %793
%800 = load i32, i32* %14
%801 = and i32 %800, 8
%802 = icmp ne i32 %801, 0
br i1 %802, label %803, label %806
803: ; preds = %799
%804 = load i8*, i8** %8
%805 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %804, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %809
806: ; preds = %799
%807 = load i8*, i8** %8
%808 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %807, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %809
809: ; preds = %806, %803
%810 = load i32, i32* %14
%811 = and i32 %810, 4
%812 = icmp ne i32 %811, 0
br i1 %812, label %813, label %816
813: ; preds = %809
%814 = load i8*, i8** %8
%815 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %814, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %819
816: ; preds = %809
%817 = load i8*, i8** %8
%818 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %817, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %819
819: ; preds = %816, %813
%820 = load i32, i32* %14
%821 = and i32 %820, 2
%822 = icmp ne i32 %821, 0
br i1 %822, label %823, label %826
823: ; preds = %819
%824 = load i8*, i8** %8
%825 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %824, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %829
826: ; preds = %819
%827 = load i8*, i8** %8
%828 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %827, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %829
829: ; preds = %826, %823
%830 = load i32, i32* %14
%831 = and i32 %830, 1
%832 = icmp ne i32 %831, 0
br i1 %832, label %833, label %836
833: ; preds = %829
%834 = load i8*, i8** %8
%835 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %834, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %839
836: ; preds = %829
%837 = load i8*, i8** %8
%838 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %837, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %839
839: ; preds = %836, %833
br label %1307
840: ; preds = %213
%841 = load i32, i32* %13
%842 = load i32, i32* %11
%843 = icmp ne i32 %841, %842
br i1 %843, label %844, label %850
844: ; preds = %840
%845 = load i8*, i8** %8
%846 = call i64 @strlen(i8* %845)
%847 = trunc i64 %846 to i32
store i32 %847, i32* %24
%848 = load i8*, i8** %8
%849 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %848, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.38, i64 0, i64 0))
br label %850
850: ; preds = %844, %840
%851 = load i32, i32* %25
%852 = icmp eq i32 %851, 512
br i1 %852, label %853, label %865
853: ; preds = %850
%854 = load i8*, i8** %8
%855 = load i32, i32* %24
%856 = load i32, i32* %25
%857 = call i32 (i8*, i32, i32, ...) bitcast (i32 (...)* @add_byte_count to i32 (i8*, i32, i32, ...)*)(i8* %854, i32 %855, i32 %856)
%858 = load i8*, i8** %8
%859 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %858, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0))
%860 = load i8*, i8** %8
%861 = call i64 @strlen(i8* %860)
%862 = trunc i64 %861 to i32
store i32 %862, i32* %24
%863 = load i8*, i8** %8
%864 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %863, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.38, i64 0, i64 0))
store i32 0, i32* %25
br label %865
865: ; preds = %853, %850
%866 = load i32*, i32** %6
%867 = load i32, i32* %10
%868 = sext i32 %867 to i64
%869 = getelementptr inbounds i32, i32* %866, i64 %868
%870 = load i32, i32* %869
store i32 %870, i32* %14
%871 = load i32, i32* %23
%872 = icmp ne i32 %871, 0
br i1 %872, label %873, label %876
873: ; preds = %865
%874 = load i32, i32* %14
%875 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.34, i64 0, i64 0), i32 %874)
br label %876
876: ; preds = %873, %865
%877 = load i32, i32* %14
%878 = and i32 %877, 128
%879 = icmp ne i32 %878, 0
br i1 %879, label %880, label %883
880: ; preds = %876
%881 = load i8*, i8** %8
%882 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %881, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %886
883: ; preds = %876
%884 = load i8*, i8** %8
%885 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %884, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %886
886: ; preds = %883, %880
%887 = load i32, i32* %14
%888 = and i32 %887, 64
%889 = icmp ne i32 %888, 0
br i1 %889, label %890, label %893
890: ; preds = %886
%891 = load i8*, i8** %8
%892 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %891, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %896
893: ; preds = %886
%894 = load i8*, i8** %8
%895 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %894, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %896
896: ; preds = %893, %890
%897 = load i32, i32* %14
%898 = and i32 %897, 32
%899 = icmp ne i32 %898, 0
br i1 %899, label %900, label %903
900: ; preds = %896
%901 = load i8*, i8** %8
%902 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %901, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %906
903: ; preds = %896
%904 = load i8*, i8** %8
%905 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %904, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %906
906: ; preds = %903, %900
%907 = load i32, i32* %14
%908 = and i32 %907, 16
%909 = icmp ne i32 %908, 0
br i1 %909, label %910, label %913
910: ; preds = %906
%911 = load i8*, i8** %8
%912 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %911, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %916
913: ; preds = %906
%914 = load i8*, i8** %8
%915 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %914, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %916
916: ; preds = %913, %910
%917 = load i32, i32* %14
%918 = and i32 %917, 8
%919 = icmp ne i32 %918, 0
br i1 %919, label %920, label %923
920: ; preds = %916
%921 = load i8*, i8** %8
%922 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %921, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %926
923: ; preds = %916
%924 = load i8*, i8** %8
%925 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %924, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %926
926: ; preds = %923, %920
%927 = load i32, i32* %14
%928 = and i32 %927, 4
%929 = icmp ne i32 %928, 0
br i1 %929, label %930, label %933
930: ; preds = %926
%931 = load i8*, i8** %8
%932 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %931, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %936
933: ; preds = %926
%934 = load i8*, i8** %8
%935 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %934, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %936
936: ; preds = %933, %930
%937 = load i32, i32* %14
%938 = and i32 %937, 2
%939 = icmp ne i32 %938, 0
br i1 %939, label %940, label %943
940: ; preds = %936
%941 = load i8*, i8** %8
%942 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %941, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %946
943: ; preds = %936
%944 = load i8*, i8** %8
%945 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %944, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %946
946: ; preds = %943, %940
%947 = load i32, i32* %14
%948 = and i32 %947, 1
%949 = icmp ne i32 %948, 0
br i1 %949, label %950, label %953
950: ; preds = %946
%951 = load i8*, i8** %8
%952 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %951, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %956
953: ; preds = %946
%954 = load i8*, i8** %8
%955 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %954, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %956
956: ; preds = %953, %950
%957 = load i32, i32* %10
%958 = add nsw i32 %957, 1
store i32 %958, i32* %10
%959 = load i32, i32* %25
%960 = add nsw i32 %959, 1
store i32 %960, i32* %25
br label %1307
961: ; preds = %213
store i32 1, i32* %26
%962 = load i32*, i32** %6
%963 = load i32, i32* %10
%964 = sext i32 %963 to i64
%965 = getelementptr inbounds i32, i32* %962, i64 %964
%966 = load i32, i32* %965
%967 = icmp sge i32 %966, 48
br i1 %967, label %968, label %976
968: ; preds = %961
%969 = load i32*, i32** %6
%970 = load i32, i32* %10
%971 = sext i32 %970 to i64
%972 = getelementptr inbounds i32, i32* %969, i64 %971
%973 = load i32, i32* %972
%974 = icmp sle i32 %973, 57
br i1 %974, label %975, label %976
975: ; preds = %968
store i32 0, i32* %26
br label %976
976: ; preds = %975, %968, %961
%977 = load i32*, i32** %6
%978 = load i32, i32* %10
%979 = sext i32 %978 to i64
%980 = getelementptr inbounds i32, i32* %977, i64 %979
%981 = load i32, i32* %980
%982 = icmp sge i32 %981, 65
br i1 %982, label %983, label %991
983: ; preds = %976
%984 = load i32*, i32** %6
%985 = load i32, i32* %10
%986 = sext i32 %985 to i64
%987 = getelementptr inbounds i32, i32* %984, i64 %986
%988 = load i32, i32* %987
%989 = icmp sle i32 %988, 90
br i1 %989, label %990, label %991
990: ; preds = %983
store i32 0, i32* %26
br label %991
991: ; preds = %990, %983, %976
%992 = load i32*, i32** %6
%993 = load i32, i32* %10
%994 = sext i32 %993 to i64
%995 = getelementptr inbounds i32, i32* %992, i64 %994
%996 = load i32, i32* %995
%997 = icmp sge i32 %996, 97
br i1 %997, label %998, label %1006
998: ; preds = %991
%999 = load i32*, i32** %6
%1000 = load i32, i32* %10
%1001 = sext i32 %1000 to i64
%1002 = getelementptr inbounds i32, i32* %999, i64 %1001
%1003 = load i32, i32* %1002
%1004 = icmp sle i32 %1003, 122
br i1 %1004, label %1005, label %1006
1005: ; preds = %998
store i32 0, i32* %26
br label %1006
1006: ; preds = %1005, %998, %991
%1007 = load i32*, i32** %6
%1008 = load i32, i32* %10
%1009 = sext i32 %1008 to i64
%1010 = getelementptr inbounds i32, i32* %1007, i64 %1009
%1011 = load i32, i32* %1010
%1012 = icmp eq i32 %1011, 32
br i1 %1012, label %1013, label %1014
1013: ; preds = %1006
store i32 0, i32* %26
br label %1014
1014: ; preds = %1013, %1006
%1015 = load i32, i32* %26
%1016 = icmp eq i32 %1015, 0
br i1 %1016, label %1017, label %1090
1017: ; preds = %1014
%1018 = load i32*, i32** %6
%1019 = load i32, i32* %10
%1020 = sext i32 %1019 to i64
%1021 = getelementptr inbounds i32, i32* %1018, i64 %1020
%1022 = load i32, i32* %1021
%1023 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @posn to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.39, i64 0, i64 0), i32 %1022)
store i32 %1023, i32* %14
%1024 = load i32, i32* %23
%1025 = icmp ne i32 %1024, 0
br i1 %1025, label %1026, label %1029
1026: ; preds = %1017
%1027 = load i32, i32* %14
%1028 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.34, i64 0, i64 0), i32 %1027)
br label %1029
1029: ; preds = %1026, %1017
%1030 = load i32, i32* %14
%1031 = and i32 %1030, 32
%1032 = icmp ne i32 %1031, 0
br i1 %1032, label %1033, label %1036
1033: ; preds = %1029
%1034 = load i8*, i8** %8
%1035 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1034, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1039
1036: ; preds = %1029
%1037 = load i8*, i8** %8
%1038 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1037, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1039
1039: ; preds = %1036, %1033
%1040 = load i32, i32* %14
%1041 = and i32 %1040, 16
%1042 = icmp ne i32 %1041, 0
br i1 %1042, label %1043, label %1046
1043: ; preds = %1039
%1044 = load i8*, i8** %8
%1045 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1044, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1049
1046: ; preds = %1039
%1047 = load i8*, i8** %8
%1048 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1047, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1049
1049: ; preds = %1046, %1043
%1050 = load i32, i32* %14
%1051 = and i32 %1050, 8
%1052 = icmp ne i32 %1051, 0
br i1 %1052, label %1053, label %1056
1053: ; preds = %1049
%1054 = load i8*, i8** %8
%1055 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1054, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1059
1056: ; preds = %1049
%1057 = load i8*, i8** %8
%1058 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1057, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1059
1059: ; preds = %1056, %1053
%1060 = load i32, i32* %14
%1061 = and i32 %1060, 4
%1062 = icmp ne i32 %1061, 0
br i1 %1062, label %1063, label %1066
1063: ; preds = %1059
%1064 = load i8*, i8** %8
%1065 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1064, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1069
1066: ; preds = %1059
%1067 = load i8*, i8** %8
%1068 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1067, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1069
1069: ; preds = %1066, %1063
%1070 = load i32, i32* %14
%1071 = and i32 %1070, 2
%1072 = icmp ne i32 %1071, 0
br i1 %1072, label %1073, label %1076
1073: ; preds = %1069
%1074 = load i8*, i8** %8
%1075 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1074, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1079
1076: ; preds = %1069
%1077 = load i8*, i8** %8
%1078 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1077, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1079
1079: ; preds = %1076, %1073
%1080 = load i32, i32* %14
%1081 = and i32 %1080, 1
%1082 = icmp ne i32 %1081, 0
br i1 %1082, label %1083, label %1086
1083: ; preds = %1079
%1084 = load i8*, i8** %8
%1085 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1084, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1089
1086: ; preds = %1079
%1087 = load i8*, i8** %8
%1088 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1087, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1089
1089: ; preds = %1086, %1083
br label %1100
1090: ; preds = %1014
%1091 = load i8*, i8** %8
%1092 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1091, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.40, i64 0, i64 0))
%1093 = load i8*, i8** %8
%1094 = load i32*, i32** %6
%1095 = load i32, i32* %10
%1096 = sext i32 %1095 to i64
%1097 = getelementptr inbounds i32, i32* %1094, i64 %1096
%1098 = load i32, i32* %1097
%1099 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @add_shift_char to i32 (i8*, i32, ...)*)(i8* %1093, i32 %1098)
br label %1100
1100: ; preds = %1090, %1089
%1101 = load i32, i32* %10
%1102 = add nsw i32 %1101, 1
store i32 %1102, i32* %10
br label %1307
1103: ; preds = %213
store i32 1, i32* %26
%1104 = load i32*, i32** %6
%1105 = load i32, i32* %10
%1106 = sext i32 %1105 to i64
%1107 = getelementptr inbounds i32, i32* %1104, i64 %1106
%1108 = load i32, i32* %1107
%1109 = icmp sge i32 %1108, 65
br i1 %1109, label %1110, label %1118
1110: ; preds = %1103
%1111 = load i32*, i32** %6
%1112 = load i32, i32* %10
%1113 = sext i32 %1112 to i64
%1114 = getelementptr inbounds i32, i32* %1111, i64 %1113
%1115 = load i32, i32* %1114
%1116 = icmp sle i32 %1115, 90
br i1 %1116, label %1117, label %1118
1117: ; preds = %1110
store i32 0, i32* %26
br label %1118
1118: ; preds = %1117, %1110, %1103
%1119 = load i32*, i32** %6
%1120 = load i32, i32* %10
%1121 = sext i32 %1120 to i64
%1122 = getelementptr inbounds i32, i32* %1119, i64 %1121
%1123 = load i32, i32* %1122
%1124 = icmp eq i32 %1123, 32
br i1 %1124, label %1125, label %1126
1125: ; preds = %1118
store i32 0, i32* %26
br label %1126
1126: ; preds = %1125, %1118
%1127 = load i32, i32* %26
%1128 = icmp eq i32 %1127, 0
br i1 %1128, label %1129, label %1192
1129: ; preds = %1126
%1130 = load i32*, i32** %6
%1131 = load i32, i32* %10
%1132 = sext i32 %1131 to i64
%1133 = getelementptr inbounds i32, i32* %1130, i64 %1132
%1134 = load i32, i32* %1133
%1135 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @posn to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.41, i64 0, i64 0), i32 %1134)
store i32 %1135, i32* %14
%1136 = load i32, i32* %23
%1137 = icmp ne i32 %1136, 0
br i1 %1137, label %1138, label %1141
1138: ; preds = %1129
%1139 = load i32, i32* %14
%1140 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.34, i64 0, i64 0), i32 %1139)
br label %1141
1141: ; preds = %1138, %1129
%1142 = load i32, i32* %14
%1143 = and i32 %1142, 16
%1144 = icmp ne i32 %1143, 0
br i1 %1144, label %1145, label %1148
1145: ; preds = %1141
%1146 = load i8*, i8** %8
%1147 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1146, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1151
1148: ; preds = %1141
%1149 = load i8*, i8** %8
%1150 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1149, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1151
1151: ; preds = %1148, %1145
%1152 = load i32, i32* %14
%1153 = and i32 %1152, 8
%1154 = icmp ne i32 %1153, 0
br i1 %1154, label %1155, label %1158
1155: ; preds = %1151
%1156 = load i8*, i8** %8
%1157 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1156, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1161
1158: ; preds = %1151
%1159 = load i8*, i8** %8
%1160 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1159, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1161
1161: ; preds = %1158, %1155
%1162 = load i32, i32* %14
%1163 = and i32 %1162, 4
%1164 = icmp ne i32 %1163, 0
br i1 %1164, label %1165, label %1168
1165: ; preds = %1161
%1166 = load i8*, i8** %8
%1167 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1166, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1171
1168: ; preds = %1161
%1169 = load i8*, i8** %8
%1170 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1169, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1171
1171: ; preds = %1168, %1165
%1172 = load i32, i32* %14
%1173 = and i32 %1172, 2
%1174 = icmp ne i32 %1173, 0
br i1 %1174, label %1175, label %1178
1175: ; preds = %1171
%1176 = load i8*, i8** %8
%1177 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1176, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1181
1178: ; preds = %1171
%1179 = load i8*, i8** %8
%1180 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1179, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1181
1181: ; preds = %1178, %1175
%1182 = load i32, i32* %14
%1183 = and i32 %1182, 1
%1184 = icmp ne i32 %1183, 0
br i1 %1184, label %1185, label %1188
1185: ; preds = %1181
%1186 = load i8*, i8** %8
%1187 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1186, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1191
1188: ; preds = %1181
%1189 = load i8*, i8** %8
%1190 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1189, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1191
1191: ; preds = %1188, %1185
br label %1202
1192: ; preds = %1126
%1193 = load i8*, i8** %8
%1194 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1193, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.42, i64 0, i64 0))
%1195 = load i8*, i8** %8
%1196 = load i32*, i32** %6
%1197 = load i32, i32* %10
%1198 = sext i32 %1197 to i64
%1199 = getelementptr inbounds i32, i32* %1196, i64 %1198
%1200 = load i32, i32* %1199
%1201 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @add_shift_char to i32 (i8*, i32, ...)*)(i8* %1195, i32 %1200)
br label %1202
1202: ; preds = %1192, %1191
%1203 = load i32, i32* %10
%1204 = add nsw i32 %1203, 1
store i32 %1204, i32* %10
br label %1307
1205: ; preds = %213
store i32 1, i32* %26
%1206 = load i32*, i32** %6
%1207 = load i32, i32* %10
%1208 = sext i32 %1207 to i64
%1209 = getelementptr inbounds i32, i32* %1206, i64 %1208
%1210 = load i32, i32* %1209
%1211 = icmp sge i32 %1210, 97
br i1 %1211, label %1212, label %1220
1212: ; preds = %1205
%1213 = load i32*, i32** %6
%1214 = load i32, i32* %10
%1215 = sext i32 %1214 to i64
%1216 = getelementptr inbounds i32, i32* %1213, i64 %1215
%1217 = load i32, i32* %1216
%1218 = icmp sle i32 %1217, 122
br i1 %1218, label %1219, label %1220
1219: ; preds = %1212
store i32 0, i32* %26
br label %1220
1220: ; preds = %1219, %1212, %1205
%1221 = load i32*, i32** %6
%1222 = load i32, i32* %10
%1223 = sext i32 %1222 to i64
%1224 = getelementptr inbounds i32, i32* %1221, i64 %1223
%1225 = load i32, i32* %1224
%1226 = icmp eq i32 %1225, 32
br i1 %1226, label %1227, label %1228
1227: ; preds = %1220
store i32 0, i32* %26
br label %1228
1228: ; preds = %1227, %1220
%1229 = load i32, i32* %26
%1230 = icmp eq i32 %1229, 0
br i1 %1230, label %1231, label %1294
1231: ; preds = %1228
%1232 = load i32*, i32** %6
%1233 = load i32, i32* %10
%1234 = sext i32 %1233 to i64
%1235 = getelementptr inbounds i32, i32* %1232, i64 %1234
%1236 = load i32, i32* %1235
%1237 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @posn to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.43, i64 0, i64 0), i32 %1236)
store i32 %1237, i32* %14
%1238 = load i32, i32* %23
%1239 = icmp ne i32 %1238, 0
br i1 %1239, label %1240, label %1243
1240: ; preds = %1231
%1241 = load i32, i32* %14
%1242 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.34, i64 0, i64 0), i32 %1241)
br label %1243
1243: ; preds = %1240, %1231
%1244 = load i32, i32* %14
%1245 = and i32 %1244, 16
%1246 = icmp ne i32 %1245, 0
br i1 %1246, label %1247, label %1250
1247: ; preds = %1243
%1248 = load i8*, i8** %8
%1249 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1248, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1253
1250: ; preds = %1243
%1251 = load i8*, i8** %8
%1252 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1251, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1253
1253: ; preds = %1250, %1247
%1254 = load i32, i32* %14
%1255 = and i32 %1254, 8
%1256 = icmp ne i32 %1255, 0
br i1 %1256, label %1257, label %1260
1257: ; preds = %1253
%1258 = load i8*, i8** %8
%1259 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1258, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1263
1260: ; preds = %1253
%1261 = load i8*, i8** %8
%1262 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1261, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1263
1263: ; preds = %1260, %1257
%1264 = load i32, i32* %14
%1265 = and i32 %1264, 4
%1266 = icmp ne i32 %1265, 0
br i1 %1266, label %1267, label %1270
1267: ; preds = %1263
%1268 = load i8*, i8** %8
%1269 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1268, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1273
1270: ; preds = %1263
%1271 = load i8*, i8** %8
%1272 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1271, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1273
1273: ; preds = %1270, %1267
%1274 = load i32, i32* %14
%1275 = and i32 %1274, 2
%1276 = icmp ne i32 %1275, 0
br i1 %1276, label %1277, label %1280
1277: ; preds = %1273
%1278 = load i8*, i8** %8
%1279 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1278, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1283
1280: ; preds = %1273
%1281 = load i8*, i8** %8
%1282 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1281, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1283
1283: ; preds = %1280, %1277
%1284 = load i32, i32* %14
%1285 = and i32 %1284, 1
%1286 = icmp ne i32 %1285, 0
br i1 %1286, label %1287, label %1290
1287: ; preds = %1283
%1288 = load i8*, i8** %8
%1289 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1288, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %1293
1290: ; preds = %1283
%1291 = load i8*, i8** %8
%1292 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1291, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1293
1293: ; preds = %1290, %1287
br label %1304
1294: ; preds = %1228
%1295 = load i8*, i8** %8
%1296 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1295, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.42, i64 0, i64 0))
%1297 = load i8*, i8** %8
%1298 = load i32*, i32** %6
%1299 = load i32, i32* %10
%1300 = sext i32 %1299 to i64
%1301 = getelementptr inbounds i32, i32* %1298, i64 %1300
%1302 = load i32, i32* %1301
%1303 = call i32 (i8*, i32, ...) bitcast (i32 (...)* @add_shift_char to i32 (i8*, i32, ...)*)(i8* %1297, i32 %1302)
br label %1304
1304: ; preds = %1294, %1293
%1305 = load i32, i32* %10
%1306 = add nsw i32 %1305, 1
store i32 %1306, i32* %10
br label %1307
1307: ; preds = %213, %1304, %1202, %1100, %956, %839, %498
%1308 = load i8*, i8** %8
%1309 = call i64 @strlen(i8* %1308)
%1310 = icmp ugt i64 %1309, 9191
br i1 %1310, label %1311, label %1312
1311: ; preds = %1307
store i32 5, i32* %5
br label %1404
1312: ; preds = %1307
br label %1313
1313: ; preds = %1312
%1314 = load i32, i32* %10
%1315 = load i32, i32* %7
%1316 = icmp slt i32 %1314, %1315
br i1 %1316, label %36, label %1317
1317: ; preds = %1313
%1318 = load i32, i32* %11
%1319 = icmp eq i32 %1318, 1
br i1 %1319, label %1320, label %1353
1320: ; preds = %1317
%1321 = load i32, i32* %18
switch i32 %1321, label %1352 [
i32 1, label %1322
i32 2, label %1332
i32 3, label %1342
]
1322: ; preds = %1320
%1323 = load i8*, i8** %8
%1324 = load i32, i32* %22
%1325 = sext i32 %1324 to i64
%1326 = getelementptr inbounds i8, i8* %1323, i64 %1325
store i8 49, i8* %1326
%1327 = load i8*, i8** %8
%1328 = load i32, i32* %22
%1329 = add nsw i32 %1328, 1
%1330 = sext i32 %1329 to i64
%1331 = getelementptr inbounds i8, i8* %1327, i64 %1330
store i8 48, i8* %1331
br label %1352
1332: ; preds = %1320
%1333 = load i8*, i8** %8
%1334 = load i32, i32* %22
%1335 = sext i32 %1334 to i64
%1336 = getelementptr inbounds i8, i8* %1333, i64 %1335
store i8 48, i8* %1336
%1337 = load i8*, i8** %8
%1338 = load i32, i32* %22
%1339 = add nsw i32 %1338, 1
%1340 = sext i32 %1339 to i64
%1341 = getelementptr inbounds i8, i8* %1337, i64 %1340
store i8 49, i8* %1341
br label %1352
1342: ; preds = %1320
%1343 = load i8*, i8** %8
%1344 = load i32, i32* %22
%1345 = sext i32 %1344 to i64
%1346 = getelementptr inbounds i8, i8* %1343, i64 %1345
store i8 48, i8* %1346
%1347 = load i8*, i8** %8
%1348 = load i32, i32* %22
%1349 = add nsw i32 %1348, 1
%1350 = sext i32 %1349 to i64
%1351 = getelementptr inbounds i8, i8* %1347, i64 %1350
store i8 48, i8* %1351
br label %1352
1352: ; preds = %1320, %1342, %1332, %1322
br label %1353
1353: ; preds = %1352, %1317
%1354 = load i32, i32* %11
%1355 = icmp eq i32 %1354, 6
br i1 %1355, label %1356, label %1361
1356: ; preds = %1353
%1357 = load i8*, i8** %8
%1358 = load i32, i32* %24
%1359 = load i32, i32* %25
%1360 = call i32 (i8*, i32, i32, ...) bitcast (i32 (...)* @add_byte_count to i32 (i8*, i32, i32, ...)*)(i8* %1357, i32 %1358, i32 %1359)
br label %1361
1361: ; preds = %1356, %1353
%1362 = load i32, i32* %11
switch i32 %1362, label %1378 [
i32 7, label %1363
i32 1, label %1366
i32 2, label %1369
i32 3, label %1369
i32 4, label %1372
i32 6, label %1375
]
1363: ; preds = %1361
%1364 = load i8*, i8** %8
%1365 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1364, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @.str.44, i64 0, i64 0))
br label %1378
1366: ; preds = %1361
%1367 = load i8*, i8** %8
%1368 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1367, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.45, i64 0, i64 0))
br label %1378
1369: ; preds = %1361, %1361
%1370 = load i8*, i8** %8
%1371 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1370, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.46, i64 0, i64 0))
br label %1378
1372: ; preds = %1361
%1373 = load i8*, i8** %8
%1374 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1373, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.47, i64 0, i64 0))
br label %1378
1375: ; preds = %1361
%1376 = load i8*, i8** %8
%1377 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1376, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.48, i64 0, i64 0))
br label %1378
1378: ; preds = %1361, %1375, %1372, %1369, %1366, %1363
%1379 = load i8*, i8** %8
%1380 = call i64 @strlen(i8* %1379)
%1381 = urem i64 %1380, 7
%1382 = sub i64 7, %1381
%1383 = trunc i64 %1382 to i32
store i32 %1383, i32* %18
%1384 = load i32, i32* %18
%1385 = icmp eq i32 %1384, 7
br i1 %1385, label %1386, label %1387
1386: ; preds = %1378
store i32 0, i32* %18
br label %1387
1387: ; preds = %1386, %1378
store i32 0, i32* %27
br label %1388
1388: ; preds = %1395, %1387
%1389 = load i32, i32* %27
%1390 = load i32, i32* %18
%1391 = icmp slt i32 %1389, %1390
br i1 %1391, label %1392, label %1398
1392: ; preds = %1388
%1393 = load i8*, i8** %8
%1394 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %1393, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %1395
1395: ; preds = %1392
%1396 = load i32, i32* %27
%1397 = add nsw i32 %1396, 1
store i32 %1397, i32* %27
br label %1388
1398: ; preds = %1388
%1399 = load i8*, i8** %8
%1400 = call i64 @strlen(i8* %1399)
%1401 = icmp ugt i64 %1400, 9191
br i1 %1401, label %1402, label %1403
1402: ; preds = %1398
store i32 5, i32* %5
br label %1404
1403: ; preds = %1398
store i32 0, i32* %5
br label %1404
1404: ; preds = %1403, %1402, %1311
%1405 = load i32, i32* %5
ret i32 %1405
}

LLVM IR (-O2):
@.str.1 = [5 x i8] c"1010\00"
@.str.2 = [5 x i8] c"0001\00"
@.str.3 = [5 x i8] c"0010\00"
@.str.4 = [5 x i8] c"0011\00"
@.str.5 = [5 x i8] c"0100\00"
@.str.6 = [5 x i8] c"0101\00"
@.str.7 = [5 x i8] c"0111\00"
@.str.8 = [14 x i8] c"1111111100001\00"
@.str.9 = [14 x i8] c"1111111100010\00"
@.str.10 = [14 x i8] c"1111111100011\00"
@.str.11 = [14 x i8] c"1111111100100\00"
@.str.12 = [14 x i8] c"1111111100101\00"
@.str.13 = [11 x i8] c"1111111011\00"
@.str.14 = [11 x i8] c"1111111100\00"
@.str.15 = [11 x i8] c"1111111101\00"
@.str.16 = [11 x i8] c"1111111110\00"
@.str.17 = [11 x i8] c"1111111111\00"
@.str.18 = [6 x i8] c"11100\00"
@.str.19 = [6 x i8] c"11101\00"
@.str.20 = [6 x i8] c"11110\00"
@.str.21 = [8 x i8] c"1111100\00"
@.str.22 = [8 x i8] c"1111110\00"
@.str.23 = [11 x i8] c"1111110001\00"
@.str.24 = [11 x i8] c"1111110010\00"
@.str.25 = [11 x i8] c"1111110011\00"
@.str.26 = [11 x i8] c"1111110100\00"
@.str.27 = [11 x i8] c"1111110111\00"
@.str.35 = [2 x i8] c"1\00"
@.str.36 = [2 x i8] c"0\00"
@.str.37 = [3 x i8] c"XX\00"
@.str.38 = [10 x i8] c"LLLLLLLLL\00"
@.str.39 = [62 x i8] c"0123456789ABCDEFGHIJKLMOPRSTUVWXYZabcdefghijklmnopqrstuvwxyz \00"
@.str.40 = [11 x i8] c"1111110110\00"
@.str.41 = [28 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZ \00"
@.str.42 = [8 x i8] c"1111101\00"
@.str.43 = [28 x i8] c"abcdefghijklmnopqrstuvwxyz \00"
@.str.44 = [14 x i8] c"1111111100000\00"
@.str.45 = [11 x i8] c"1111111010\00"
@.str.46 = [6 x i8] c"11011\00"
@.str.47 = [11 x i8] c"1111110000\00"
@.str.48 = [5 x i8] c"0000\00"
define i32 @gm_encode(i32* %0, i32 %1, i8* %2, i32 %3) {
%5 = alloca [3 x i32]
%6 = bitcast [3 x i32]* %5 to i8*
store i8 0, i8* %2
%7 = icmp eq i32 %3, 0
br i1 %7, label %10, label %8
8: ; preds = %4
%9 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.1, i64 0, i64 0))
br label %10
10: ; preds = %8, %4
%11 = getelementptr inbounds [3 x i32], [3 x i32]* %5, i64 0, i64 0
%12 = getelementptr inbounds [3 x i32], [3 x i32]* %5, i64 0, i64 1
%13 = getelementptr inbounds [3 x i32], [3 x i32]* %5, i64 0, i64 2
%14 = add nsw i32 %1, -1
%15 = sext i32 %14 to i64
%16 = getelementptr inbounds i32, i32* %0, i64 %15
br label %17
17: ; preds = %521, %10
%18 = phi i32 [ 0, %10 ], [ %512, %521 ]
%19 = phi i32 [ 0, %10 ], [ %26, %521 ]
%20 = phi i32 [ 0, %10 ], [ %513, %521 ]
%21 = phi i32 [ 0, %10 ], [ %514, %521 ]
%22 = phi i32 [ 0, %10 ], [ %515, %521 ]
%23 = phi i32 [ 0, %10 ], [ %516, %521 ]
%24 = phi i32 [ 0, %10 ], [ %517, %521 ]
%25 = phi i32 [ 0, %10 ], [ %518, %521 ]
%26 = tail call i32 (i32*, i32, i32, i32, ...) bitcast (i32 (...)* @seek_forward to i32 (i32*, i32, i32, i32, ...)*)(i32* %0, i32 %1, i32 %20, i32 %19)
%27 = icmp eq i32 %26, %19
br i1 %27, label %55, label %28
28: ; preds = %17
switch i32 %19, label %55 [
i32 0, label %29
i32 7, label %30
i32 1, label %31
i32 2, label %49
i32 3, label %49
i32 4, label %52
i32 6, label %53
]
29: ; preds = %28
switch i32 %26, label %55 [
i32 7, label %57
i32 1, label %149
i32 2, label %467
i32 3, label %423
i32 4, label %369
i32 6, label %315
]
30: ; preds = %28
switch i32 %26, label %55 [
i32 1, label %149
i32 2, label %467
i32 3, label %423
i32 4, label %369
i32 6, label %315
]
31: ; preds = %28
%32 = add i32 %21, -1
%33 = icmp ult i32 %32, 3
br i1 %33, label %34, label %48
34: ; preds = %31
%35 = trunc i32 %32 to i24
%36 = shl i24 %35, 3
%37 = lshr i24 3158065, %36
%38 = trunc i24 %37 to i8
%39 = trunc i32 %32 to i24
%40 = shl i24 %39, 3
%41 = lshr i24 3158320, %40
%42 = trunc i24 %41 to i8
%43 = sext i32 %23 to i64
%44 = getelementptr inbounds i8, i8* %2, i64 %43
store i8 %38, i8* %44
%45 = add nsw i32 %23, 1
%46 = sext i32 %45 to i64
%47 = getelementptr inbounds i8, i8* %2, i64 %46
store i8 %42, i8* %47
br label %48
48: ; preds = %31, %34
switch i32 %26, label %55 [
i32 7, label %57
i32 2, label %467
i32 3, label %423
i32 4, label %369
i32 6, label %315
]
49: ; preds = %28, %28
switch i32 %26, label %55 [
i32 7, label %57
i32 1, label %149
i32 2, label %50
i32 3, label %50
i32 4, label %369
i32 6, label %315
]
50: ; preds = %49, %49
%51 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([6 x i8], [6 x i8]* @.str.20, i64 0, i64 0))
br label %55
52: ; preds = %28
switch i32 %26, label %55 [
i32 7, label %57
i32 1, label %149
i32 2, label %467
i32 3, label %423
i32 6, label %315
]
53: ; preds = %28
%54 = tail call i32 (i8*, i32, i32, ...) bitcast (i32 (...)* @add_byte_count to i32 (i8*, i32, i32, ...)*)(i8* %2, i32 %24, i32 %25)
switch i32 %26, label %55 [
i32 7, label %57
i32 1, label %149
i32 2, label %467
i32 3, label %423
i32 4, label %369
]
55: ; preds = %28, %29, %30, %48, %49, %50, %52, %53, %17
%56 = phi i32 [ %25, %17 ], [ %25, %28 ], [ 0, %53 ], [ %25, %52 ], [ %25, %49 ], [ %25, %50 ], [ %25, %48 ], [ %25, %30 ], [ %25, %29 ]
switch i32 %26, label %511 [
i32 7, label %61
i32 1, label %148
i32 6, label %314
i32 4, label %373
i32 3, label %427
i32 2, label %471
]
57: ; preds = %53, %52, %49, %48, %29
%58 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), %29 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.13, i64 0, i64 0), %48 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.18, i64 0, i64 0), %49 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.23, i64 0, i64 0), %52 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.2, i64 0, i64 0), %53 ]
%59 = phi i32 [ %25, %29 ], [ %25, %48 ], [ %25, %49 ], [ %25, %52 ], [ 0, %53 ]
%60 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %58)
br label %61
61: ; preds = %57, %55
%62 = phi i32 [ %56, %55 ], [ %59, %57 ]
%63 = sext i32 %20 to i64
%64 = getelementptr inbounds i32, i32* %0, i64 %63
%65 = load i32, i32* %64
%66 = icmp sgt i32 %65, 255
br i1 %66, label %67, label %81
67: ; preds = %61
%68 = lshr i32 %65, 8
%69 = and i32 %68, 255
%70 = and i32 %65, 255
%71 = add nsw i32 %69, -160
%72 = icmp ult i32 %71, 10
%73 = mul nuw nsw i32 %69, 96
%74 = add nuw nsw i32 %73, %70
%75 = add nsw i32 %74, -15616
%76 = select i1 %72, i32 %75, i32 %18
%77 = add nsw i32 %69, -176
%78 = icmp ult i32 %77, 72
%79 = add nsw i32 %74, -16192
%80 = select i1 %78, i32 %79, i32 %76
br label %96
81: ; preds = %61
%82 = icmp eq i32 %20, %14
br i1 %82, label %93, label %83
83: ; preds = %81
%84 = icmp eq i32 %65, 19
br i1 %84, label %85, label %96
85: ; preds = %83
%86 = add nsw i32 %20, 1
%87 = sext i32 %86 to i64
%88 = getelementptr inbounds i32, i32* %0, i64 %87
%89 = load i32, i32* %88
%90 = icmp eq i32 %89, 16
%91 = select i1 %90, i32 7776, i32 %18
%92 = select i1 %90, i32 %86, i32 %20
br label %96
93: ; preds = %81
%94 = load i32, i32* %16
%95 = add nsw i32 %94, 7777
br label %96
96: ; preds = %67, %83, %85, %93
%97 = phi i32 [ %14, %93 ], [ %20, %67 ], [ %92, %85 ], [ %20, %83 ]
%98 = phi i32 [ %95, %93 ], [ %80, %67 ], [ %91, %85 ], [ %18, %83 ]
%99 = and i32 %98, 4096
%100 = icmp eq i32 %99, 0
%101 = select i1 %100, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%102 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %101)
%103 = and i32 %98, 2048
%104 = icmp eq i32 %103, 0
%105 = select i1 %104, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%106 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %105)
%107 = and i32 %98, 1024
%108 = icmp eq i32 %107, 0
%109 = select i1 %108, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%110 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %109)
%111 = and i32 %98, 512
%112 = icmp eq i32 %111, 0
%113 = select i1 %112, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%114 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %113)
%115 = and i32 %98, 256
%116 = icmp eq i32 %115, 0
%117 = select i1 %116, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%118 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %117)
%119 = insertelement <8 x i32> poison, i32 %98, i64 0
%120 = shufflevector <8 x i32> %119, <8 x i32> poison, <8 x i32> zeroinitializer
%121 = and <8 x i32> %120, <i32 1, i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128>
%122 = icmp eq <8 x i32> %121, zeroinitializer
%123 = extractelement <8 x i1> %122, i64 7
%124 = select i1 %123, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%125 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %124)
%126 = extractelement <8 x i1> %122, i64 6
%127 = select i1 %126, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%128 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %127)
%129 = extractelement <8 x i1> %122, i64 5
%130 = select i1 %129, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%131 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %130)
%132 = extractelement <8 x i1> %122, i64 4
%133 = select i1 %132, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%134 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %133)
%135 = extractelement <8 x i1> %122, i64 3
%136 = select i1 %135, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%137 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %136)
%138 = extractelement <8 x i1> %122, i64 2
%139 = select i1 %138, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%140 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %139)
%141 = extractelement <8 x i1> %122, i64 1
%142 = select i1 %141, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%143 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %142)
%144 = extractelement <8 x i1> %122, i64 0
%145 = select i1 %144, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%146 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %145)
%147 = add nsw i32 %97, 1
br label %511
148: ; preds = %55
br i1 %27, label %158, label %153
149: ; preds = %53, %52, %49, %30, %29
%150 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), %29 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.8, i64 0, i64 0), %30 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.19, i64 0, i64 0), %49 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.24, i64 0, i64 0), %52 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.3, i64 0, i64 0), %53 ]
%151 = phi i32 [ %25, %29 ], [ %25, %30 ], [ %25, %49 ], [ %25, %52 ], [ 0, %53 ]
%152 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %150)
br label %153
153: ; preds = %149, %148
%154 = phi i32 [ %56, %148 ], [ %151, %149 ]
%155 = tail call i64 @strlen(i8* %2)
%156 = trunc i64 %155 to i32
%157 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.37, i64 0, i64 0))
br label %158
158: ; preds = %153, %148
%159 = phi i32 [ %154, %153 ], [ %56, %148 ]
%160 = phi i32 [ %156, %153 ], [ %23, %148 ]
store i32 48, i32* %11
store i32 48, i32* %12
store i32 48, i32* %13
br label %161
161: ; preds = %203, %158
%162 = phi i32 [ %20, %158 ], [ %204, %203 ]
%163 = phi i32 [ 0, %158 ], [ %182, %203 ]
%164 = phi i32 [ -1, %158 ], [ %205, %203 ]
%165 = phi i32 [ %22, %158 ], [ %206, %203 ]
%166 = sext i32 %162 to i64
%167 = getelementptr inbounds i32, i32* %0, i64 %166
%168 = load i32, i32* %167
%169 = add i32 %168, -48
%170 = icmp ult i32 %169, 10
br i1 %170, label %171, label %179
171: ; preds = %161
%172 = sext i32 %163 to i64
%173 = getelementptr inbounds [3 x i32], [3 x i32]* %5, i64 0, i64 %172
store i32 %168, i32* %173
%174 = add nsw i32 %162, 1
%175 = add nsw i32 %163, 1
%176 = sext i32 %174 to i64
%177 = getelementptr inbounds i32, i32* %0, i64 %176
%178 = load i32, i32* %177
br label %179
179: ; preds = %171, %161
%180 = phi i32 [ %178, %171 ], [ %168, %161 ]
%181 = phi i32 [ %174, %171 ], [ %162, %161 ]
%182 = phi i32 [ %175, %171 ], [ %163, %161 ]
switch i32 %180, label %185 [
i32 32, label %183
i32 43, label %183
i32 45, label %183
i32 46, label %183
i32 44, label %183
]
183: ; preds = %179, %179, %179, %179, %179
%184 = add nsw i32 %181, 1
br label %185
185: ; preds = %179, %183
%186 = phi i32 [ %181, %179 ], [ %184, %183 ]
%187 = phi i32 [ %164, %179 ], [ %182, %183 ]
%188 = phi i32 [ %165, %179 ], [ %180, %183 ]
%189 = icmp slt i32 %186, %14
br i1 %189, label %190, label %203
190: ; preds = %185
%191 = sext i32 %186 to i64
%192 = getelementptr inbounds i32, i32* %0, i64 %191
%193 = load i32, i32* %192
%194 = icmp eq i32 %193, 19
br i1 %194, label %195, label %203
195: ; preds = %190
%196 = add nsw i32 %186, 1
%197 = sext i32 %196 to i64
%198 = getelementptr inbounds i32, i32* %0, i64 %197
%199 = load i32, i32* %198
%200 = icmp eq i32 %199, 16
br i1 %200, label %201, label %203
201: ; preds = %195
%202 = add nsw i32 %186, 2
br label %203
203: ; preds = %185, %201, %195, %190
%204 = phi i32 [ %202, %201 ], [ %186, %195 ], [ %186, %190 ], [ %186, %185 ]
%205 = phi i32 [ %182, %201 ], [ %187, %195 ], [ %187, %190 ], [ %187, %185 ]
%206 = phi i32 [ 19, %201 ], [ %188, %195 ], [ %188, %190 ], [ %188, %185 ]
%207 = icmp slt i32 %182, 3
%208 = icmp slt i32 %204, %1
%209 = select i1 %207, i1 %208, i1 false
br i1 %209, label %161, label %210
210: ; preds = %203
%211 = icmp eq i32 %205, -1
br i1 %211, label %263, label %212
212: ; preds = %210
switch i32 %206, label %219 [
i32 32, label %213
i32 43, label %214
i32 45, label %215
i32 46, label %216
i32 44, label %217
i32 19, label %218
]
213: ; preds = %212
br label %219
214: ; preds = %212
br label %219
215: ; preds = %212
br label %219
216: ; preds = %212
br label %219
217: ; preds = %212
br label %219
218: ; preds = %212
br label %219
219: ; preds = %212, %218, %217, %216, %215, %214, %213
%220 = phi i32 [ %18, %212 ], [ 15, %218 ], [ 12, %217 ], [ 9, %216 ], [ 6, %215 ], [ 3, %214 ], [ 0, %213 ]
%221 = add nsw i32 %220, %205
%222 = add nsw i32 %221, 1000
%223 = and i32 %222, 512
%224 = icmp eq i32 %223, 0
%225 = select i1 %224, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%226 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %225)
%227 = and i32 %222, 256
%228 = icmp eq i32 %227, 0
%229 = select i1 %228, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%230 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %229)
%231 = and i32 %222, 128
%232 = icmp eq i32 %231, 0
%233 = select i1 %232, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%234 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %233)
%235 = and i32 %222, 64
%236 = icmp eq i32 %235, 0
%237 = select i1 %236, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%238 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %237)
%239 = and i32 %222, 32
%240 = icmp eq i32 %239, 0
%241 = select i1 %240, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%242 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %241)
%243 = and i32 %222, 16
%244 = icmp eq i32 %243, 0
%245 = select i1 %244, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%246 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %245)
%247 = and i32 %222, 8
%248 = icmp eq i32 %247, 0
%249 = select i1 %248, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%250 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %249)
%251 = and i32 %221, 4
%252 = icmp eq i32 %251, 0
%253 = select i1 %252, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%254 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %253)
%255 = and i32 %221, 2
%256 = icmp eq i32 %255, 0
%257 = select i1 %256, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%258 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %257)
%259 = and i32 %221, 1
%260 = icmp eq i32 %259, 0
%261 = select i1 %260, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%262 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %261)
br label %263
263: ; preds = %219, %210
%264 = load i32, i32* %11
%265 = mul i32 %264, 100
%266 = load i32, i32* %12
%267 = mul i32 %266, 10
%268 = add i32 %267, %265
%269 = load i32, i32* %13
%270 = add i32 %268, %269
%271 = add i32 %270, -5328
%272 = and i32 %271, 512
%273 = icmp eq i32 %272, 0
%274 = select i1 %273, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%275 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %274)
%276 = and i32 %271, 256
%277 = icmp eq i32 %276, 0
%278 = select i1 %277, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%279 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %278)
%280 = and i32 %271, 128
%281 = icmp eq i32 %280, 0
%282 = select i1 %281, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%283 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %282)
%284 = and i32 %271, 64
%285 = icmp eq i32 %284, 0
%286 = select i1 %285, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%287 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %286)
%288 = and i32 %271, 32
%289 = icmp eq i32 %288, 0
%290 = select i1 %289, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%291 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %290)
%292 = and i32 %271, 16
%293 = icmp eq i32 %292, 0
%294 = select i1 %293, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%295 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %294)
%296 = and i32 %270, 8
%297 = icmp eq i32 %296, 0
%298 = select i1 %297, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%299 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %298)
%300 = and i32 %270, 4
%301 = icmp eq i32 %300, 0
%302 = select i1 %301, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%303 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %302)
%304 = and i32 %270, 2
%305 = icmp eq i32 %304, 0
%306 = select i1 %305, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%307 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %306)
%308 = and i32 %270, 1
%309 = icmp eq i32 %308, 0
br i1 %309, label %312, label %310
310: ; preds = %263
%311 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %511
312: ; preds = %263
%313 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %511
314: ; preds = %55
br i1 %27, label %323, label %318
315: ; preds = %52, %49, %48, %30, %29
%316 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0), %29 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.12, i64 0, i64 0), %30 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.17, i64 0, i64 0), %48 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.22, i64 0, i64 0), %49 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.27, i64 0, i64 0), %52 ]
%317 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %316)
br label %318
318: ; preds = %315, %314
%319 = phi i32 [ %56, %314 ], [ %25, %315 ]
%320 = tail call i64 @strlen(i8* %2)
%321 = trunc i64 %320 to i32
%322 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.38, i64 0, i64 0))
br label %323
323: ; preds = %318, %314
%324 = phi i32 [ %319, %318 ], [ %56, %314 ]
%325 = phi i32 [ %321, %318 ], [ %24, %314 ]
%326 = icmp eq i32 %324, 512
br i1 %326, label %327, label %333
327: ; preds = %323
%328 = tail call i32 (i8*, i32, i32, ...) bitcast (i32 (...)* @add_byte_count to i32 (i8*, i32, i32, ...)*)(i8* %2, i32 %325, i32 512)
%329 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str.7, i64 0, i64 0))
%330 = tail call i64 @strlen(i8* %2)
%331 = trunc i64 %330 to i32
%332 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.38, i64 0, i64 0))
br label %333
333: ; preds = %327, %323
%334 = phi i32 [ %331, %327 ], [ %325, %323 ]
%335 = phi i32 [ 0, %327 ], [ %324, %323 ]
%336 = sext i32 %20 to i64
%337 = getelementptr inbounds i32, i32* %0, i64 %336
%338 = load i32, i32* %337
%339 = insertelement <8 x i32> poison, i32 %338, i64 0
%340 = shufflevector <8 x i32> %339, <8 x i32> poison, <8 x i32> zeroinitializer
%341 = and <8 x i32> %340, <i32 1, i32 2, i32 4, i32 8, i32 16, i32 32, i32 64, i32 128>
%342 = icmp eq <8 x i32> %341, zeroinitializer
%343 = extractelement <8 x i1> %342, i64 7
%344 = select i1 %343, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%345 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %344)
%346 = extractelement <8 x i1> %342, i64 6
%347 = select i1 %346, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%348 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %347)
%349 = extractelement <8 x i1> %342, i64 5
%350 = select i1 %349, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%351 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %350)
%352 = extractelement <8 x i1> %342, i64 4
%353 = select i1 %352, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%354 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %353)
%355 = extractelement <8 x i1> %342, i64 3
%356 = select i1 %355, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%357 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %356)
%358 = extractelement <8 x i1> %342, i64 2
%359 = select i1 %358, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%360 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %359)
%361 = extractelement <8 x i1> %342, i64 1
%362 = select i1 %361, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%363 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %362)
%364 = extractelement <8 x i1> %342, i64 0
%365 = select i1 %364, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%366 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %365)
%367 = add nsw i32 %20, 1
%368 = add nsw i32 %335, 1
br label %511
369: ; preds = %53, %49, %48, %30, %29
%370 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), %29 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.11, i64 0, i64 0), %30 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.16, i64 0, i64 0), %48 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @.str.21, i64 0, i64 0), %49 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.6, i64 0, i64 0), %53 ]
%371 = phi i32 [ %25, %29 ], [ %25, %30 ], [ %25, %48 ], [ %25, %49 ], [ 0, %53 ]
%372 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %370)
br label %373
373: ; preds = %369, %55
%374 = phi i32 [ %56, %55 ], [ %371, %369 ]
%375 = sext i32 %20 to i64
%376 = getelementptr inbounds i32, i32* %0, i64 %375
%377 = load i32, i32* %376
%378 = add i32 %377, -58
%379 = icmp ult i32 %378, -10
%380 = add i32 %377, -91
%381 = icmp ult i32 %380, -26
%382 = and i1 %381, %379
%383 = add i32 %377, -123
%384 = icmp ult i32 %383, -26
%385 = icmp ne i32 %377, 32
%386 = and i1 %385, %384
%387 = select i1 %386, i1 %382, i1 false
br i1 %387, label %416, label %388
388: ; preds = %373
%389 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @posn to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.39, i64 0, i64 0), i32 %377)
%390 = and i32 %389, 32
%391 = icmp eq i32 %390, 0
%392 = select i1 %391, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%393 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %392)
%394 = and i32 %389, 16
%395 = icmp eq i32 %394, 0
%396 = select i1 %395, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%397 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %396)
%398 = and i32 %389, 8
%399 = icmp eq i32 %398, 0
%400 = select i1 %399, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%401 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %400)
%402 = and i32 %389, 4
%403 = icmp eq i32 %402, 0
%404 = select i1 %403, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%405 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %404)
%406 = and i32 %389, 2
%407 = icmp eq i32 %406, 0
%408 = select i1 %407, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%409 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %408)
%410 = and i32 %389, 1
%411 = icmp eq i32 %410, 0
br i1 %411, label %414, label %412
412: ; preds = %388
%413 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %420
414: ; preds = %388
%415 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %420
416: ; preds = %373
%417 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @.str.40, i64 0, i64 0))
%418 = load i32, i32* %376
%419 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @add_shift_char to i32 (i8*, i32, ...)*)(i8* %2, i32 %418)
br label %420
420: ; preds = %412, %414, %416
%421 = phi i32 [ %389, %412 ], [ %389, %414 ], [ %18, %416 ]
%422 = add nsw i32 %20, 1
br label %511
423: ; preds = %53, %52, %48, %30, %29
%424 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), %29 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.10, i64 0, i64 0), %30 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.15, i64 0, i64 0), %48 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.26, i64 0, i64 0), %52 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.5, i64 0, i64 0), %53 ]
%425 = phi i32 [ %25, %29 ], [ %25, %30 ], [ %25, %48 ], [ %25, %52 ], [ 0, %53 ]
%426 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %424)
br label %427
427: ; preds = %423, %55
%428 = phi i32 [ %56, %55 ], [ %425, %423 ]
%429 = sext i32 %20 to i64
%430 = getelementptr inbounds i32, i32* %0, i64 %429
%431 = load i32, i32* %430
%432 = add i32 %431, -65
%433 = icmp ult i32 %432, 26
%434 = icmp eq i32 %431, 32
%435 = or i1 %434, %433
br i1 %435, label %436, label %460
436: ; preds = %427
%437 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @posn to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.41, i64 0, i64 0), i32 %431)
%438 = and i32 %437, 16
%439 = icmp eq i32 %438, 0
%440 = select i1 %439, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%441 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %440)
%442 = and i32 %437, 8
%443 = icmp eq i32 %442, 0
%444 = select i1 %443, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%445 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %444)
%446 = and i32 %437, 4
%447 = icmp eq i32 %446, 0
%448 = select i1 %447, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%449 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %448)
%450 = and i32 %437, 2
%451 = icmp eq i32 %450, 0
%452 = select i1 %451, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%453 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %452)
%454 = and i32 %437, 1
%455 = icmp eq i32 %454, 0
br i1 %455, label %458, label %456
456: ; preds = %436
%457 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %464
458: ; preds = %436
%459 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %464
460: ; preds = %427
%461 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.42, i64 0, i64 0))
%462 = load i32, i32* %430
%463 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @add_shift_char to i32 (i8*, i32, ...)*)(i8* %2, i32 %462)
br label %464
464: ; preds = %456, %458, %460
%465 = phi i32 [ %437, %456 ], [ %437, %458 ], [ %18, %460 ]
%466 = add nsw i32 %20, 1
br label %511
467: ; preds = %53, %52, %48, %30, %29
%468 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), %29 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.9, i64 0, i64 0), %30 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.14, i64 0, i64 0), %48 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.25, i64 0, i64 0), %52 ], [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.4, i64 0, i64 0), %53 ]
%469 = phi i32 [ %25, %29 ], [ %25, %30 ], [ %25, %48 ], [ %25, %52 ], [ 0, %53 ]
%470 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %468)
br label %471
471: ; preds = %467, %55
%472 = phi i32 [ %56, %55 ], [ %469, %467 ]
%473 = sext i32 %20 to i64
%474 = getelementptr inbounds i32, i32* %0, i64 %473
%475 = load i32, i32* %474
%476 = add i32 %475, -97
%477 = icmp ult i32 %476, 26
%478 = icmp eq i32 %475, 32
%479 = or i1 %478, %477
br i1 %479, label %480, label %504
480: ; preds = %471
%481 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @posn to i32 (i8*, i32, ...)*)(i8* getelementptr inbounds ([28 x i8], [28 x i8]* @.str.43, i64 0, i64 0), i32 %475)
%482 = and i32 %481, 16
%483 = icmp eq i32 %482, 0
%484 = select i1 %483, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%485 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %484)
%486 = and i32 %481, 8
%487 = icmp eq i32 %486, 0
%488 = select i1 %487, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%489 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %488)
%490 = and i32 %481, 4
%491 = icmp eq i32 %490, 0
%492 = select i1 %491, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%493 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %492)
%494 = and i32 %481, 2
%495 = icmp eq i32 %494, 0
%496 = select i1 %495, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0), i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0)
%497 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %496)
%498 = and i32 %481, 1
%499 = icmp eq i32 %498, 0
br i1 %499, label %502, label %500
500: ; preds = %480
%501 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.35, i64 0, i64 0))
br label %508
502: ; preds = %480
%503 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
br label %508
504: ; preds = %471
%505 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.42, i64 0, i64 0))
%506 = load i32, i32* %474
%507 = tail call i32 (i8*, i32, ...) bitcast (i32 (...)* @add_shift_char to i32 (i8*, i32, ...)*)(i8* %2, i32 %506)
br label %508
508: ; preds = %500, %502, %504
%509 = phi i32 [ %481, %500 ], [ %481, %502 ], [ %18, %504 ]
%510 = add nsw i32 %20, 1
br label %511
511: ; preds = %310, %312, %55, %508, %464, %420, %333, %96
%512 = phi i32 [ %18, %55 ], [ %509, %508 ], [ %465, %464 ], [ %421, %420 ], [ %338, %333 ], [ %271, %310 ], [ %271, %312 ], [ %98, %96 ]
%513 = phi i32 [ %20, %55 ], [ %510, %508 ], [ %466, %464 ], [ %422, %420 ], [ %367, %333 ], [ %204, %310 ], [ %204, %312 ], [ %147, %96 ]
%514 = phi i32 [ %21, %55 ], [ %21, %508 ], [ %21, %464 ], [ %21, %420 ], [ %21, %333 ], [ %182, %310 ], [ %182, %312 ], [ %21, %96 ]
%515 = phi i32 [ %22, %55 ], [ %22, %508 ], [ %22, %464 ], [ %22, %420 ], [ %22, %333 ], [ %206, %310 ], [ %206, %312 ], [ %22, %96 ]
%516 = phi i32 [ %23, %55 ], [ %23, %508 ], [ %23, %464 ], [ %23, %420 ], [ %23, %333 ], [ %160, %310 ], [ %160, %312 ], [ %23, %96 ]
%517 = phi i32 [ %24, %55 ], [ %24, %508 ], [ %24, %464 ], [ %24, %420 ], [ %334, %333 ], [ %24, %310 ], [ %24, %312 ], [ %24, %96 ]
%518 = phi i32 [ %56, %55 ], [ %472, %508 ], [ %428, %464 ], [ %374, %420 ], [ %368, %333 ], [ %159, %310 ], [ %159, %312 ], [ %62, %96 ]
%519 = tail call i64 @strlen(i8* %2)
%520 = icmp ugt i64 %519, 9191
br i1 %520, label %565, label %521
521: ; preds = %511
%522 = icmp slt i32 %513, %1
br i1 %522, label %17, label %523
523: ; preds = %521
switch i32 %26, label %548 [
i32 1, label %524
i32 6, label %543
i32 7, label %545
i32 2, label %541
i32 3, label %541
i32 4, label %542
]
524: ; preds = %523
%525 = add i32 %514, -1
%526 = icmp ult i32 %525, 3
br i1 %526, label %527, label %545
527: ; preds = %524
%528 = trunc i32 %525 to i24
%529 = shl i24 %528, 3
%530 = lshr i24 3158065, %529
%531 = trunc i24 %530 to i8
%532 = trunc i32 %525 to i24
%533 = shl i24 %532, 3
%534 = lshr i24 3158320, %533
%535 = trunc i24 %534 to i8
%536 = sext i32 %516 to i64
%537 = getelementptr inbounds i8, i8* %2, i64 %536
store i8 %531, i8* %537
%538 = add nsw i32 %516, 1
%539 = sext i32 %538 to i64
%540 = getelementptr inbounds i8, i8* %2, i64 %539
store i8 %535, i8* %540
br label %545
541: ; preds = %523, %523
br label %545
542: ; preds = %523
br label %545
543: ; preds = %523
%544 = tail call i32 (i8*, i32, i32, ...) bitcast (i32 (...)* @add_byte_count to i32 (i8*, i32, i32, ...)*)(i8* %2, i32 %517, i32 %518)
br label %545
545: ; preds = %524, %527, %523, %541, %542, %543
%546 = phi i8* [ getelementptr inbounds ([5 x i8], [5 x i8]* @.str.48, i64 0, i64 0), %543 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.47, i64 0, i64 0), %542 ], [ getelementptr inbounds ([6 x i8], [6 x i8]* @.str.46, i64 0, i64 0), %541 ], [ getelementptr inbounds ([14 x i8], [14 x i8]* @.str.44, i64 0, i64 0), %523 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.45, i64 0, i64 0), %527 ], [ getelementptr inbounds ([11 x i8], [11 x i8]* @.str.45, i64 0, i64 0), %524 ]
%547 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* %546)
br label %548
548: ; preds = %545, %523
%549 = tail call i64 @strlen(i8* %2)
%550 = urem i64 %549, 7
%551 = trunc i64 %550 to i32
%552 = xor i32 %551, 7
%553 = icmp eq i32 %551, 0
%554 = icmp eq i32 %552, 0
%555 = or i1 %553, %554
br i1 %555, label %561, label %556
556: ; preds = %548, %556
%557 = phi i32 [ %559, %556 ], [ 0, %548 ]
%558 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @concat to i32 (i8*, i8*, ...)*)(i8* %2, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.36, i64 0, i64 0))
%559 = add nuw nsw i32 %557, 1
%560 = icmp eq i32 %559, %552
br i1 %560, label %561, label %556
561: ; preds = %556, %548
%562 = tail call i64 @strlen(i8* %2)
%563 = icmp ugt i64 %562, 9191
%564 = select i1 %563, i32 5, i32 0
br label %565
565: ; preds = %511, %561
%566 = phi i32 [ %564, %561 ], [ 5, %511 ]
ret i32 %566
}