#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int islower(char);
int check_the_check(char chess_board[12][12], int i, int j) {
  int is_black_king;
  char king;
  char opp_king, opp_queen, opp_knight, opp_rook, opp_bishop, opp_pawn;
  int next_i, next_j;
  is_black_king = islower(chess_board[i][j]);
  opp_king = is_black_king ? 'K' : 'k';
  opp_queen = is_black_king ? 'Q' : 'q';
  opp_knight = is_black_king ? 'N' : 'n';
  opp_rook = is_black_king ? 'R' : 'r';
  opp_bishop = is_black_king ? 'B' : 'b';
  opp_pawn = is_black_king ? 'P' : 'p';
  if (chess_board[i - 2][j - 1] == opp_knight ||
      chess_board[i - 1][j - 2] == opp_knight ||
      chess_board[i + 2][j - 1] == opp_knight ||
      chess_board[i + 1][j - 2] == opp_knight ||
      chess_board[i - 2][j + 1] == opp_knight ||
      chess_board[i - 1][j + 2] == opp_knight ||
      chess_board[i + 2][j + 1] == opp_knight ||
      chess_board[i + 1][j + 2] == opp_knight) {
    return 1;
  }
  if (is_black_king) {
    if (chess_board[i + 1][j - 1] == opp_pawn ||
        chess_board[i + 1][j + 1] == opp_pawn)
      return 1;
  } else {
    if (chess_board[i - 1][j - 1] == opp_pawn ||
        chess_board[i - 1][j + 1] == opp_pawn)
      return 1;
  }
  for (next_i = i, next_j = j - 1; next_j > 2; --next_j) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_rook ||
      chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  for (next_i = i, next_j = j + 1; next_j < 9; ++next_j) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_rook ||
      chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  for (next_i = i - 1, next_j = j; next_i > 2; --next_i) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_rook ||
      chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  for (next_i = i + 1, next_j = j; next_i < 9; ++next_i) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_rook ||
      chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  for (next_i = i - 1, next_j = j - 1; next_i > 2 && next_j > 2;
       --next_i, --next_j) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_bishop ||
      chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  for (next_i = i - 1, next_j = j + 1; next_i > 2 && next_j < 9;
       --next_i, ++next_j) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_bishop ||
      chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  for (next_i = i + 1, next_j = j - 1; next_i < 9 && next_j > 2;
       ++next_i, --next_j) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_bishop ||
      chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  for (next_i = i + 1, next_j = j + 1; next_i < 9 && next_j < 9;
       ++next_i, ++next_j) {
    if (chess_board[next_i][next_j] != '.')
      break;
  }
  if (chess_board[next_i][next_j] == opp_bishop ||
      chess_board[next_i][next_j] == opp_queen) {
    return 1;
  };
  return 0;
}


x86 assembly (clang, -O0):
<check_the_check>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%edi
call   1030 <islower@plt>
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%edx
mov    $0x6b,%eax
mov    $0x4b,%ecx
cmp    $0x0,%edx
cmovne %ecx,%eax
mov    %al,-0x1e(%rbp)
mov    -0x1c(%rbp),%edx
mov    $0x71,%eax
mov    $0x51,%ecx
cmp    $0x0,%edx
cmovne %ecx,%eax
mov    %al,-0x1f(%rbp)
mov    -0x1c(%rbp),%edx
mov    $0x6e,%eax
mov    $0x4e,%ecx
cmp    $0x0,%edx
cmovne %ecx,%eax
mov    %al,-0x20(%rbp)
mov    -0x1c(%rbp),%edx
mov    $0x72,%eax
mov    $0x52,%ecx
cmp    $0x0,%edx
cmovne %ecx,%eax
mov    %al,-0x21(%rbp)
mov    -0x1c(%rbp),%edx
mov    $0x62,%eax
mov    $0x42,%ecx
cmp    $0x0,%edx
cmovne %ecx,%eax
mov    %al,-0x22(%rbp)
mov    -0x1c(%rbp),%edx
mov    $0x70,%eax
mov    $0x50,%ecx
cmp    $0x0,%edx
cmovne %ecx,%eax
mov    %al,-0x23(%rbp)
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x20(%rbp),%ecx
cmp    %ecx,%eax
je     132d <check_the_check+0x21d>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x20(%rbp),%ecx
cmp    %ecx,%eax
je     132d <check_the_check+0x21d>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x20(%rbp),%ecx
cmp    %ecx,%eax
je     132d <check_the_check+0x21d>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x20(%rbp),%ecx
cmp    %ecx,%eax
je     132d <check_the_check+0x21d>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x20(%rbp),%ecx
cmp    %ecx,%eax
je     132d <check_the_check+0x21d>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x20(%rbp),%ecx
cmp    %ecx,%eax
je     132d <check_the_check+0x21d>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x20(%rbp),%ecx
cmp    %ecx,%eax
je     132d <check_the_check+0x21d>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x20(%rbp),%ecx
cmp    %ecx,%eax
jne    1339 <check_the_check+0x229>
movl   $0x1,-0x4(%rbp)
jmp    19e4 <check_the_check+0x8d4>
cmpl   $0x0,-0x1c(%rbp)
je     13ae <check_the_check+0x29e>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x23(%rbp),%ecx
cmp    %ecx,%eax
je     139d <check_the_check+0x28d>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x23(%rbp),%ecx
cmp    %ecx,%eax
jne    13a9 <check_the_check+0x299>
movl   $0x1,-0x4(%rbp)
jmp    19e4 <check_the_check+0x8d4>
jmp    1419 <check_the_check+0x309>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x23(%rbp),%ecx
cmp    %ecx,%eax
je     1408 <check_the_check+0x2f8>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x23(%rbp),%ecx
cmp    %ecx,%eax
jne    1414 <check_the_check+0x304>
movl   $0x1,-0x4(%rbp)
jmp    19e4 <check_the_check+0x8d4>
jmp    1419 <check_the_check+0x309>
mov    -0x14(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x2,-0x2c(%rbp)
jle    146a <check_the_check+0x35a>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     1457 <check_the_check+0x347>
jmp    146a <check_the_check+0x35a>
jmp    145c <check_the_check+0x34c>
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1428 <check_the_check+0x318>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x21(%rbp),%ecx
cmp    %ecx,%eax
je     14b0 <check_the_check+0x3a0>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x1f(%rbp),%ecx
cmp    %ecx,%eax
jne    14bc <check_the_check+0x3ac>
movl   $0x1,-0x4(%rbp)
jmp    19e4 <check_the_check+0x8d4>
mov    -0x14(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x9,-0x2c(%rbp)
jge    150d <check_the_check+0x3fd>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     14fa <check_the_check+0x3ea>
jmp    150d <check_the_check+0x3fd>
jmp    14ff <check_the_check+0x3ef>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    14cb <check_the_check+0x3bb>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x21(%rbp),%ecx
cmp    %ecx,%eax
je     1553 <check_the_check+0x443>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x1f(%rbp),%ecx
cmp    %ecx,%eax
jne    155f <check_the_check+0x44f>
movl   $0x1,-0x4(%rbp)
jmp    19e4 <check_the_check+0x8d4>
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x2,-0x28(%rbp)
jle    15b0 <check_the_check+0x4a0>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     159d <check_the_check+0x48d>
jmp    15b0 <check_the_check+0x4a0>
jmp    15a2 <check_the_check+0x492>
mov    -0x28(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x28(%rbp)
jmp    156e <check_the_check+0x45e>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x21(%rbp),%ecx
cmp    %ecx,%eax
je     15f6 <check_the_check+0x4e6>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x1f(%rbp),%ecx
cmp    %ecx,%eax
jne    1602 <check_the_check+0x4f2>
movl   $0x1,-0x4(%rbp)
jmp    19e4 <check_the_check+0x8d4>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x9,-0x28(%rbp)
jge    1653 <check_the_check+0x543>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     1640 <check_the_check+0x530>
jmp    1653 <check_the_check+0x543>
jmp    1645 <check_the_check+0x535>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
jmp    1611 <check_the_check+0x501>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x21(%rbp),%ecx
cmp    %ecx,%eax
je     1699 <check_the_check+0x589>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x1f(%rbp),%ecx
cmp    %ecx,%eax
jne    16a5 <check_the_check+0x595>
movl   $0x1,-0x4(%rbp)
jmp    19e4 <check_the_check+0x8d4>
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
xor    %eax,%eax
cmpl   $0x2,-0x28(%rbp)
mov    %al,-0x2d(%rbp)
jle    16d0 <check_the_check+0x5c0>
cmpl   $0x2,-0x2c(%rbp)
setg   %al
mov    %al,-0x2d(%rbp)
mov    -0x2d(%rbp),%al
test   $0x1,%al
jne    16e0 <check_the_check+0x5d0>
jmp    1721 <check_the_check+0x611>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     1705 <check_the_check+0x5f5>
jmp    1721 <check_the_check+0x611>
jmp    170a <check_the_check+0x5fa>
mov    -0x28(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x28(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    16b7 <check_the_check+0x5a7>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x22(%rbp),%ecx
cmp    %ecx,%eax
je     1767 <check_the_check+0x657>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x1f(%rbp),%ecx
cmp    %ecx,%eax
jne    1773 <check_the_check+0x663>
movl   $0x1,-0x4(%rbp)
jmp    19e4 <check_the_check+0x8d4>
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
xor    %eax,%eax
cmpl   $0x2,-0x28(%rbp)
mov    %al,-0x2e(%rbp)
jle    179e <check_the_check+0x68e>
cmpl   $0x9,-0x2c(%rbp)
setl   %al
mov    %al,-0x2e(%rbp)
mov    -0x2e(%rbp),%al
test   $0x1,%al
jne    17ae <check_the_check+0x69e>
jmp    17ef <check_the_check+0x6df>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     17d3 <check_the_check+0x6c3>
jmp    17ef <check_the_check+0x6df>
jmp    17d8 <check_the_check+0x6c8>
mov    -0x28(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x28(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1785 <check_the_check+0x675>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x22(%rbp),%ecx
cmp    %ecx,%eax
je     1835 <check_the_check+0x725>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x1f(%rbp),%ecx
cmp    %ecx,%eax
jne    1841 <check_the_check+0x731>
movl   $0x1,-0x4(%rbp)
jmp    19e4 <check_the_check+0x8d4>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
xor    %eax,%eax
cmpl   $0x9,-0x28(%rbp)
mov    %al,-0x2f(%rbp)
jge    186c <check_the_check+0x75c>
cmpl   $0x2,-0x2c(%rbp)
setg   %al
mov    %al,-0x2f(%rbp)
mov    -0x2f(%rbp),%al
test   $0x1,%al
jne    187c <check_the_check+0x76c>
jmp    18bd <check_the_check+0x7ad>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     18a1 <check_the_check+0x791>
jmp    18bd <check_the_check+0x7ad>
jmp    18a6 <check_the_check+0x796>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x2c(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,-0x2c(%rbp)
jmp    1853 <check_the_check+0x743>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x22(%rbp),%ecx
cmp    %ecx,%eax
je     1903 <check_the_check+0x7f3>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x1f(%rbp),%ecx
cmp    %ecx,%eax
jne    190f <check_the_check+0x7ff>
movl   $0x1,-0x4(%rbp)
jmp    19e4 <check_the_check+0x8d4>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
xor    %eax,%eax
cmpl   $0x9,-0x28(%rbp)
mov    %al,-0x30(%rbp)
jge    193a <check_the_check+0x82a>
cmpl   $0x9,-0x2c(%rbp)
setl   %al
mov    %al,-0x30(%rbp)
mov    -0x30(%rbp),%al
test   $0x1,%al
jne    194a <check_the_check+0x83a>
jmp    198b <check_the_check+0x87b>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
je     196f <check_the_check+0x85f>
jmp    198b <check_the_check+0x87b>
jmp    1974 <check_the_check+0x864>
mov    -0x28(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x28(%rbp)
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
jmp    1921 <check_the_check+0x811>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x22(%rbp),%ecx
cmp    %ecx,%eax
je     19d1 <check_the_check+0x8c1>
mov    -0x10(%rbp),%rax
movslq -0x28(%rbp),%rcx
imul   $0xc,%rcx,%rcx
add    %rcx,%rax
movslq -0x2c(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
movsbl -0x1f(%rbp),%ecx
cmp    %ecx,%eax
jne    19dd <check_the_check+0x8cd>
movl   $0x1,-0x4(%rbp)
jmp    19e4 <check_the_check+0x8d4>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<check_the_check>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x38,%rsp
mov    %esi,%ebp
mov    %rdi,%r12
movslq %esi,%rbx
mov    %rdx,0x10(%rsp)
movslq %edx,%r13
lea    (%rbx,%rbx,2),%rax
lea    (%rdi,%rax,4),%r15
movsbl 0x0(%r13,%r15,1),%edi
call   1030 <islower@plt>
mov    %eax,%r14d
xor    %r9d,%r9d
test   %eax,%eax
sete   %r9b
lea    -0x2(%rbx),%eax
cltq
lea    (%rax,%rax,2),%rax
lea    (%r12,%rax,4),%r10
movsbl -0x1(%r13,%r10,1),%edx
mov    %r9d,%edi
shl    $0x5,%edi
or     $0x4e,%edi
mov    $0x1,%eax
cmp    %edx,%edi
je     1612 <check_the_check+0x502>
mov    %rbx,0x30(%rsp)
lea    -0x1(%rbp),%ebx
mov    %rbp,%r8
movslq %ebx,%rbp
lea    0x0(,%rbp,2),%rsi
add    %rbp,%rsi
lea    (%r12,%rsi,4),%rsi
movsbl -0x2(%r13,%rsi,1),%edx
cmp    %edx,%edi
je     1612 <check_the_check+0x502>
lea    -0x1(%r13),%rcx
lea    0x2(%r8),%edx
movslq %edx,%rdx
lea    (%rdx,%rdx,2),%rdx
lea    (%r12,%rdx,4),%r11
movsbl (%rcx,%r11,1),%edx
cmp    %edx,%edi
je     1612 <check_the_check+0x502>
mov    %rbp,0x20(%rsp)
mov    %rbx,0x28(%rsp)
mov    %rcx,0x8(%rsp)
lea    -0x2(%r13),%rdx
lea    0x1(%r8),%ecx
movslq %ecx,%rcx
mov    %rcx,0x18(%rsp)
lea    (%rcx,%rcx,2),%rcx
lea    (%r12,%rcx,4),%rbp
movsbl (%rdx,%rbp,1),%ecx
cmp    %ecx,%edi
je     1612 <check_the_check+0x502>
movsbl 0x1(%r13,%r10,1),%ecx
cmp    %ecx,%edi
je     1612 <check_the_check+0x502>
movsbl 0x2(%r13,%rsi,1),%ecx
cmp    %ecx,%edi
je     1612 <check_the_check+0x502>
lea    0x1(%r13),%rdx
movsbl (%rdx,%r11,1),%ecx
cmp    %ecx,%edi
je     1612 <check_the_check+0x502>
lea    0x2(%r13),%rcx
movsbl (%rcx,%rbp,1),%ecx
cmp    %ecx,%edi
je     1612 <check_the_check+0x502>
mov    %r8,%rbx
shl    $0x5,%r9b
or     $0x50,%r9b
movzbl %r9b,%edi
test   %r14d,%r14d
je     1268 <check_the_check+0x158>
mov    0x8(%rsp),%rcx
movsbl (%rcx,%rbp,1),%ecx
cmp    %edi,%ecx
je     1612 <check_the_check+0x502>
movsbl (%rdx,%rbp,1),%ecx
cmp    %edi,%ecx
mov    0x8(%rsp),%r8
jne    1286 <check_the_check+0x176>
jmp    1612 <check_the_check+0x502>
mov    0x8(%rsp),%r8
movsbl (%r8,%rsi,1),%ecx
cmp    %edi,%ecx
je     1612 <check_the_check+0x502>
movsbl (%rdx,%rsi,1),%ecx
cmp    %edi,%ecx
je     1612 <check_the_check+0x502>
mov    %r8,%rsi
mov    0x10(%rsp),%rcx
cmp    $0x4,%ecx
jl     12ae <check_the_check+0x19e>
mov    %ecx,%esi
lea    -0x1(%rsi),%edi
cmpb   $0x2e,(%rdi,%r15,1)
jne    12ac <check_the_check+0x19c>
add    $0xffffffff,%esi
cmp    $0x3,%esi
jg     1295 <check_the_check+0x185>
mov    $0x2,%edi
mov    %edi,%esi
xor    %r8d,%r8d
test   %r14d,%r14d
sete   %r8b
movsbl (%rsi,%r15,1),%esi
shl    $0x5,%r8d
or     $0x52,%r8d
cmp    %esi,%r8d
je     1612 <check_the_check+0x502>
xor    %r9d,%r9d
test   %r14d,%r14d
sete   %r9b
shl    $0x5,%r9d
or     $0x51,%r9d
cmp    %esi,%r9d
je     1612 <check_the_check+0x502>
mov    %rdx,%rsi
cmp    $0x7,%ecx
jg     130f <check_the_check+0x1ff>
lea    0x1(%r13),%rdi
lea    -0x8(%rcx),%esi
cmpb   $0x2e,(%r15,%rdi,1)
jne    130c <check_the_check+0x1fc>
add    $0x1,%rdi
inc    %esi
jne    12f8 <check_the_check+0x1e8>
mov    $0x9,%edi
movslq %edi,%rsi
movsbl (%rsi,%r15,1),%esi
cmp    %esi,%r8d
je     1612 <check_the_check+0x502>
cmp    %esi,%r9d
je     1612 <check_the_check+0x502>
mov    0x20(%rsp),%rsi
cmp    $0x4,%ebx
jl     135a <check_the_check+0x24a>
mov    %rbx,%rbp
mov    %ebx,%esi
lea    -0x1(%rsi),%edi
lea    (%rdi,%rdi,2),%rcx
lea    (%r12,%rcx,4),%rcx
cmpb   $0x2e,0x0(%r13,%rcx,1)
jne    1355 <check_the_check+0x245>
add    $0xffffffff,%esi
cmp    $0x3,%esi
jg     1335 <check_the_check+0x225>
mov    $0x2,%edi
mov    %edi,%esi
mov    %rbp,%rbx
lea    (%rsi,%rsi,2),%rcx
lea    (%r12,%rcx,4),%rcx
movsbl 0x0(%r13,%rcx,1),%esi
cmp    %esi,%r8d
je     1612 <check_the_check+0x502>
cmp    %esi,%r9d
je     1612 <check_the_check+0x502>
mov    %rdx,%r11
mov    0x18(%rsp),%rsi
mov    %rbx,%r15
cmp    $0x7,%ebx
jg     13c2 <check_the_check+0x2b2>
mov    0x30(%rsp),%rcx
lea    0x1(%rcx),%rbp
lea    0x0(,%rbp,2),%rcx
add    %rbp,%rcx
lea    (%r12,%rcx,4),%rdi
add    %r13,%rdi
lea    -0x8(%r15),%esi
cmpb   $0x2e,(%rdi)
jne    13bf <check_the_check+0x2af>
add    $0x1,%rbp
add    $0xc,%rdi
inc    %esi
jne    13a9 <check_the_check+0x299>
mov    $0x9,%ebp
movslq %ebp,%rsi
lea    (%rsi,%rsi,2),%rcx
lea    (%r12,%rcx,4),%rcx
movsbl 0x0(%r13,%rcx,1),%esi
cmp    %esi,%r8d
je     1612 <check_the_check+0x502>
cmp    %esi,%r9d
je     1612 <check_the_check+0x502>
mov    0x10(%rsp),%rcx
lea    -0x1(%rcx),%r10d
mov    0x8(%rsp),%rsi
mov    0x20(%rsp),%rdi
cmp    $0x4,%r15d
jl     1449 <check_the_check+0x339>
mov    0x8(%rsp),%rsi
mov    0x20(%rsp),%rdi
cmpl   $0x4,0x10(%rsp)
jl     1449 <check_the_check+0x339>
mov    %r10d,%esi
mov    0x28(%rsp),%rdi
mov    %edi,%ecx
mov    %esi,%edx
lea    (%rcx,%rcx,2),%rcx
lea    (%r12,%rcx,4),%rcx
cmpb   $0x2e,(%rdx,%rcx,1)
jne    143e <check_the_check+0x32e>
lea    -0x1(%rdi),%r8d
lea    -0x1(%rsi),%ebp
cmp    $0x4,%edi
jl     1443 <check_the_check+0x333>
mov    %r8d,%edi
cmp    $0x3,%esi
mov    %ebp,%esi
jg     1414 <check_the_check+0x304>
jmp    1443 <check_the_check+0x333>
mov    %edi,%r8d
mov    %esi,%ebp
movslq %r8d,%rdi
movslq %ebp,%rsi
xor    %r8d,%r8d
test   %r14d,%r14d
sete   %r8b
lea    (%rdi,%rdi,2),%rcx
lea    (%r12,%rcx,4),%rcx
movsbl (%rsi,%rcx,1),%ecx
shl    $0x5,%r8d
or     $0x42,%r8d
cmp    %ecx,%r8d
je     1612 <check_the_check+0x502>
cmp    %ecx,%r9d
je     1612 <check_the_check+0x502>
mov    %r11,%rcx
cmp    $0x4,%r15d
jl     14e1 <check_the_check+0x3d1>
cmpl   $0x7,0x10(%rsp)
jg     14e1 <check_the_check+0x3d1>
lea    0x1(%r13),%rcx
mov    0x28(%rsp),%edx
lea    (%rdx,%rdx,2),%rdx
lea    (%r12,%rdx,4),%rdx
add    %r13,%rdx
add    $0x1,%rdx
cmpb   $0x2e,(%rdx)
jne    14cc <check_the_check+0x3bc>
mov    0x28(%rsp),%rbx
lea    -0x1(%rbx),%esi
lea    0x1(%rcx),%rdi
cmp    $0x4,%ebx
jl     14d6 <check_the_check+0x3c6>
add    $0xfffffffffffffff5,%rdx
mov    %esi,%ebx
mov    %rbx,0x28(%rsp)
cmp    $0x8,%rcx
mov    %rdi,%rcx
jl     14a0 <check_the_check+0x390>
jmp    14d6 <check_the_check+0x3c6>
mov    0x28(%rsp),%rdx
mov    %edx,%esi
mov    %rcx,%rdi
movslq %esi,%rcx
mov    %rcx,0x20(%rsp)
movslq %edi,%rcx
mov    0x20(%rsp),%rdx
lea    (%rdx,%rdx,2),%rdx
lea    (%r12,%rdx,4),%rdx
movsbl (%rcx,%rdx,1),%ecx
cmp    %ecx,%r8d
je     1612 <check_the_check+0x502>
cmp    %ecx,%r9d
je     1612 <check_the_check+0x502>
cmp    $0x7,%r15d
jg     1565 <check_the_check+0x455>
mov    0x18(%rsp),%rcx
cmpl   $0x4,0x10(%rsp)
jl     156a <check_the_check+0x45a>
mov    0x30(%rsp),%rcx
lea    0x1(%rcx),%rdx
mov    %r10d,%esi
lea    (%rdx,%rdx,2),%rcx
lea    (%r12,%rcx,4),%rcx
add    %rsi,%rcx
cmpb   $0x2e,(%rcx)
jne    1552 <check_the_check+0x442>
lea    0x1(%rdx),%rsi
lea    -0x1(%r10),%edi
cmp    $0x7,%rdx
jg     1558 <check_the_check+0x448>
add    $0xb,%rcx
mov    %rsi,%rdx
cmp    $0x3,%r10d
mov    %edi,%r10d
jg     152d <check_the_check+0x41d>
jmp    1558 <check_the_check+0x448>
mov    %rdx,%rsi
mov    %r10d,%edi
movslq %esi,%rcx
movslq %edi,%rdx
mov    %rdx,0x8(%rsp)
jmp    156a <check_the_check+0x45a>
mov    0x18(%rsp),%rcx
lea    (%rcx,%rcx,2),%rcx
lea    (%r12,%rcx,4),%rcx
mov    0x8(%rsp),%rdx
movsbl (%rdx,%rcx,1),%ecx
cmp    %ecx,%r8d
je     1612 <check_the_check+0x502>
cmp    %ecx,%r9d
je     1612 <check_the_check+0x502>
cmp    $0x7,%r15d
jg     15ef <check_the_check+0x4df>
cmpl   $0x7,0x10(%rsp)
jg     15ef <check_the_check+0x4df>
mov    0x30(%rsp),%rax
add    $0x1,%rax
mov    %rax,%rsi
lea    (%rax,%rax,2),%rax
lea    (%r12,%rax,4),%rax
add    %r13,%rax
add    $0x1,%rax
add    $0x1,%r13
cmpb   $0x2e,(%rax)
jne    15de <check_the_check+0x4ce>
lea    0x1(%rsi),%rcx
lea    0x1(%r13),%rdx
cmp    $0x7,%rsi
jg     15e4 <check_the_check+0x4d4>
add    $0xd,%rax
mov    %rcx,%rsi
cmp    $0x8,%r13
mov    %rdx,%r13
jl     15b9 <check_the_check+0x4a9>
jmp    15e4 <check_the_check+0x4d4>
mov    %rsi,%rcx
mov    %r13,%rdx
movslq %ecx,%rax
mov    %rax,0x18(%rsp)
movslq %edx,%r11
mov    0x18(%rsp),%rax
lea    (%rax,%rax,2),%rax
lea    (%r12,%rax,4),%rax
movsbl (%r11,%rax,1),%eax
cmp    %eax,%r8d
sete   %cl
cmp    %eax,%r9d
sete   %al
or     %cl,%al
movzbl %al,%eax
add    $0x38,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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