int RevisarVecinos(int **tablero, int i, int j, int x, int y) {
  int contador = 0;
  for (int m = i - 1; m <= i + 1; m++) {
    for (int n = j - 1; n <= j + 1; n++) {
      if (!(m == i && n == j) && m >= 0 && n >= 0 && m < x && j < y) {
        contador = contador + tablero[m][n];
      }
    }
  }
  if (i == 0 && j == 0) {
    contador = contador + tablero[x - 1][1];
    contador = contador + tablero[x - 1][0];
    contador = contador + tablero[x - 1][y - 1];
    contador = contador + tablero[0][y - 1];
    contador = contador + tablero[1][y - 1];
  } else {
    if (i == 0 && j == y - 1) {
      contador = contador + tablero[x - 1][y - 2];
      contador = contador + tablero[x - 1][y - 1];
      contador = contador + tablero[x - 1][0];
      contador = contador + tablero[0][0];
      contador = contador + tablero[1][0];
    } else {
      if (i == x - 1 && j == 0) {
        contador = contador + tablero[x - 2][y - 1];
        contador = contador + tablero[x - 1][y - 1];
        contador = contador + tablero[0][y - 1];
        contador = contador + tablero[0][0];
        contador = contador + tablero[0][1];
      } else {
        if (i == x - 1 && j == y - 1) {
          contador = contador + tablero[x - 2][0];
          contador = contador + tablero[x - 1][0];
          contador = contador + tablero[0][0];
          contador = contador + tablero[0][y - 1];
          contador = contador + tablero[0][y - 2];
        } else {
          if (i == 0) {
            contador = contador + tablero[x - 1][j - 1];
            contador = contador + tablero[x - 1][j];
            contador = contador + tablero[x - 1][j + 1];
          } else {
            if (j == 0) {
              contador = contador + tablero[i - 1][y - 1];
              contador = contador + tablero[i][y - 1];
              contador = contador + tablero[i + 1][y - 1];
            } else {
              if (j == y - 1) {
                contador = contador + tablero[i - 1][0];
                contador = contador + tablero[i][0];
                contador = contador + tablero[i + 1][0];
              } else {
                if (i == x - 1) {
                  contador = contador + tablero[0][j - 1];
                  contador = contador + tablero[0][j];
                  contador = contador + tablero[0][j + 1];
                }
              }
            }
          }
        }
      }
    }
  }
  return contador;
}


x86 assembly (clang, -O0):
<RevisarVecinos>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
mov    -0xc(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x20(%rbp)
mov    -0x20(%rbp),%eax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jg     11d3 <RevisarVecinos+0xd3>
mov    -0x10(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
cmp    %ecx,%eax
jg     11c0 <RevisarVecinos+0xc0>
mov    -0x20(%rbp),%eax
cmp    -0xc(%rbp),%eax
jne    1168 <RevisarVecinos+0x68>
mov    -0x24(%rbp),%eax
cmp    -0x10(%rbp),%eax
je     11ad <RevisarVecinos+0xad>
cmpl   $0x0,-0x20(%rbp)
jl     11ad <RevisarVecinos+0xad>
cmpl   $0x0,-0x24(%rbp)
jl     11ad <RevisarVecinos+0xad>
mov    -0x20(%rbp),%eax
cmp    -0x14(%rbp),%eax
jge    11ad <RevisarVecinos+0xad>
mov    -0x10(%rbp),%eax
cmp    -0x18(%rbp),%eax
jge    11ad <RevisarVecinos+0xad>
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
movslq -0x20(%rbp),%rdx
mov    (%rcx,%rdx,8),%rcx
movslq -0x24(%rbp),%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
jmp    11b2 <RevisarVecinos+0xb2>
mov    -0x24(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x24(%rbp)
jmp    113f <RevisarVecinos+0x3f>
jmp    11c5 <RevisarVecinos+0xc5>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1125 <RevisarVecinos+0x25>
cmpl   $0x0,-0xc(%rbp)
jne    1275 <RevisarVecinos+0x175>
cmpl   $0x0,-0x10(%rbp)
jne    1275 <RevisarVecinos+0x175>
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
add    0x4(%rcx),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
add    (%rcx),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
mov    -0x18(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    (%rcx),%rcx
mov    -0x18(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    0x8(%rcx),%rcx
mov    -0x18(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
jmp    1607 <RevisarVecinos+0x507>
cmpl   $0x0,-0xc(%rbp)
jne    1313 <RevisarVecinos+0x213>
mov    -0x10(%rbp),%eax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1313 <RevisarVecinos+0x213>
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
mov    -0x18(%rbp),%edx
sub    $0x2,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
mov    -0x18(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
add    (%rcx),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    (%rcx),%rcx
add    (%rcx),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    0x8(%rcx),%rcx
add    (%rcx),%eax
mov    %eax,-0x1c(%rbp)
jmp    1602 <RevisarVecinos+0x502>
mov    -0xc(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    13b1 <RevisarVecinos+0x2b1>
cmpl   $0x0,-0x10(%rbp)
jne    13b1 <RevisarVecinos+0x2b1>
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
sub    $0x2,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
mov    -0x18(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
mov    -0x18(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    (%rcx),%rcx
mov    -0x18(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    (%rcx),%rcx
add    (%rcx),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    (%rcx),%rcx
add    0x4(%rcx),%eax
mov    %eax,-0x1c(%rbp)
jmp    15fd <RevisarVecinos+0x4fd>
mov    -0xc(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    144b <RevisarVecinos+0x34b>
mov    -0x10(%rbp),%eax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    144b <RevisarVecinos+0x34b>
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
sub    $0x2,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
add    (%rcx),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
add    (%rcx),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    (%rcx),%rcx
add    (%rcx),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    (%rcx),%rcx
mov    -0x18(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    (%rcx),%rcx
mov    -0x18(%rbp),%edx
sub    $0x2,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
jmp    15f8 <RevisarVecinos+0x4f8>
cmpl   $0x0,-0xc(%rbp)
jne    14be <RevisarVecinos+0x3be>
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
mov    -0x10(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
movslq -0x10(%rbp),%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0x14(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
mov    -0x10(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
jmp    15f3 <RevisarVecinos+0x4f3>
cmpl   $0x0,-0x10(%rbp)
jne    1531 <RevisarVecinos+0x431>
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0xc(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
mov    -0x18(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
movslq -0xc(%rbp),%rdx
mov    (%rcx,%rdx,8),%rcx
mov    -0x18(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0xc(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
mov    -0x18(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
jmp    15ee <RevisarVecinos+0x4ee>
mov    -0x10(%rbp),%eax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    158d <RevisarVecinos+0x48d>
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0xc(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
add    (%rcx),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
movslq -0xc(%rbp),%rdx
mov    (%rcx,%rdx,8),%rcx
add    (%rcx),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    -0xc(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
mov    (%rcx,%rdx,8),%rcx
add    (%rcx),%eax
mov    %eax,-0x1c(%rbp)
jmp    15e9 <RevisarVecinos+0x4e9>
mov    -0xc(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    15e4 <RevisarVecinos+0x4e4>
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    (%rcx),%rcx
mov    -0x10(%rbp),%edx
sub    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    (%rcx),%rcx
movslq -0x10(%rbp),%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
mov    -0x1c(%rbp),%eax
mov    -0x8(%rbp),%rcx
mov    (%rcx),%rcx
mov    -0x10(%rbp),%edx
add    $0x1,%edx
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
mov    %eax,-0x1c(%rbp)
jmp    15e9 <RevisarVecinos+0x4e9>
jmp    15ee <RevisarVecinos+0x4ee>
jmp    15f3 <RevisarVecinos+0x4f3>
jmp    15f8 <RevisarVecinos+0x4f8>
jmp    15fd <RevisarVecinos+0x4fd>
jmp    1602 <RevisarVecinos+0x502>
jmp    1607 <RevisarVecinos+0x507>
mov    -0x1c(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<RevisarVecinos>:
push   %rbp
push   %r15
push   %r14
push   %rbx
lea    -0x1(%rsi),%r10d
lea    -0x1(%rdx),%r9d
xor    %eax,%eax
mov    %r9d,%r14d
cmp    %r8d,%edx
jge    112c <RevisarVecinos+0x2c>
cmp    %ecx,%esi
jg     112c <RevisarVecinos+0x2c>
test   %esi,%esi
jle    112c <RevisarVecinos+0x2c>
test   %edx,%edx
jle    112c <RevisarVecinos+0x2c>
mov    (%rdi,%r10,8),%rax
mov    (%rax,%r14,4),%eax
mov    %edx,%r11d
cmp    %r8d,%edx
jge    1148 <RevisarVecinos+0x48>
cmp    %ecx,%esi
jg     1148 <RevisarVecinos+0x48>
test   %esi,%esi
jle    1148 <RevisarVecinos+0x48>
test   %edx,%edx
js     1148 <RevisarVecinos+0x48>
mov    (%rdi,%r10,8),%rbx
add    (%rbx,%r11,4),%eax
cmp    %r8d,%edx
jge    1165 <RevisarVecinos+0x65>
cmp    %ecx,%esi
jg     1165 <RevisarVecinos+0x65>
test   %esi,%esi
jle    1165 <RevisarVecinos+0x65>
cmp    $0xffffffff,%edx
jl     1165 <RevisarVecinos+0x65>
lea    0x1(%rdx),%ebx
mov    (%rdi,%r10,8),%rbp
add    0x0(%rbp,%rbx,4),%eax
mov    %esi,%ebx
cmp    %r8d,%edx
jge    1181 <RevisarVecinos+0x81>
test   %edx,%edx
jle    1181 <RevisarVecinos+0x81>
test   %esi,%esi
js     1181 <RevisarVecinos+0x81>
cmp    %ecx,%esi
jge    1181 <RevisarVecinos+0x81>
mov    (%rdi,%rbx,8),%rbp
add    0x0(%rbp,%r14,4),%eax
cmp    %r8d,%edx
jge    119d <RevisarVecinos+0x9d>
cmp    $0xffffffff,%edx
jl     119d <RevisarVecinos+0x9d>
test   %esi,%esi
js     119d <RevisarVecinos+0x9d>
cmp    %ecx,%esi
jge    119d <RevisarVecinos+0x9d>
lea    0x1(%rdx),%ebp
mov    (%rdi,%rbx,8),%rbx
add    (%rbx,%rbp,4),%eax
lea    0x1(%rsi),%r15d
cmp    %r8d,%edx
jge    11bd <RevisarVecinos+0xbd>
cmp    %ecx,%r15d
jge    11bd <RevisarVecinos+0xbd>
cmp    $0xffffffff,%esi
jl     11bd <RevisarVecinos+0xbd>
test   %edx,%edx
jle    11bd <RevisarVecinos+0xbd>
mov    (%rdi,%r15,8),%rbp
add    0x0(%rbp,%r14,4),%eax
cmp    %r8d,%edx
jge    11d9 <RevisarVecinos+0xd9>
cmp    %ecx,%r15d
jge    11d9 <RevisarVecinos+0xd9>
cmp    $0xffffffff,%esi
jl     11d9 <RevisarVecinos+0xd9>
test   %edx,%edx
js     11d9 <RevisarVecinos+0xd9>
mov    (%rdi,%r15,8),%rbp
add    0x0(%rbp,%r11,4),%eax
cmp    %r8d,%edx
jge    11f7 <RevisarVecinos+0xf7>
cmp    %ecx,%r15d
jge    11f7 <RevisarVecinos+0xf7>
cmp    $0xffffffff,%esi
jl     11f7 <RevisarVecinos+0xf7>
cmp    $0xffffffff,%edx
jl     11f7 <RevisarVecinos+0xf7>
lea    0x1(%rdx),%ebp
mov    (%rdi,%r15,8),%rbx
add    (%rbx,%rbp,4),%eax
mov    %edx,%ebp
or     %esi,%ebp
je     1231 <RevisarVecinos+0x131>
lea    -0x1(%r8),%ebp
lea    -0x1(%rcx),%r11d
test   %esi,%esi
jne    125d <RevisarVecinos+0x15d>
cmp    %edx,%ebp
jne    125d <RevisarVecinos+0x15d>
movslq %r11d,%rcx
mov    (%rdi,%rcx,8),%rcx
movslq %r8d,%rsi
add    -0x8(%rcx,%rsi,4),%eax
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
add    (%rcx),%eax
mov    (%rdi),%rdx
mov    0x8(%rdi),%rcx
add    (%rdx),%eax
jmp    132f <RevisarVecinos+0x22f>
movslq %ecx,%rcx
mov    -0x8(%rdi,%rcx,8),%rdx
add    0x4(%rdx),%eax
add    (%rdx),%eax
movslq %r8d,%rsi
lea    -0x4(,%rsi,4),%rcx
ff
add    -0x4(%rdx,%rsi,4),%eax
mov    (%rdi),%rdx
add    -0x4(%rdx,%rsi,4),%eax
add    0x8(%rdi),%rcx
jmp    132f <RevisarVecinos+0x22f>
test   %edx,%edx
jne    1292 <RevisarVecinos+0x192>
cmp    %esi,%r11d
jne    1292 <RevisarVecinos+0x192>
movslq %ecx,%rcx
mov    -0x10(%rdi,%rcx,8),%rcx
movslq %r8d,%rdx
add    -0x4(%rcx,%rdx,4),%eax
movslq %esi,%rcx
mov    (%rdi,%rcx,8),%rcx
add    -0x4(%rcx,%rdx,4),%eax
mov    (%rdi),%rcx
add    -0x4(%rcx,%rdx,4),%eax
add    (%rcx),%eax
add    $0x4,%rcx
jmp    132f <RevisarVecinos+0x22f>
cmp    %esi,%r11d
jne    12c6 <RevisarVecinos+0x1c6>
cmp    %edx,%ebp
jne    12c6 <RevisarVecinos+0x1c6>
movslq %ecx,%rcx
mov    -0x10(%rdi,%rcx,8),%rcx
add    (%rcx),%eax
movslq %esi,%rcx
mov    (%rdi,%rcx,8),%rcx
add    (%rcx),%eax
mov    (%rdi),%rcx
add    (%rcx),%eax
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
movslq %r8d,%rdx
lea    (%rcx,%rdx,4),%rcx
add    $0xfffffffffffffff8,%rcx
jmp    132f <RevisarVecinos+0x22f>
test   %esi,%esi
je     12ed <RevisarVecinos+0x1ed>
movslq %r15d,%rbx
test   %edx,%edx
je     130a <RevisarVecinos+0x20a>
cmp    %edx,%ebp
jne    1338 <RevisarVecinos+0x238>
movslq %r10d,%rcx
mov    (%rdi,%rcx,8),%rcx
add    (%rcx),%eax
movslq %esi,%rcx
mov    (%rdi,%rcx,8),%rcx
add    (%rcx),%eax
mov    (%rdi,%rbx,8),%rcx
jmp    132f <RevisarVecinos+0x22f>
movslq %r11d,%rcx
mov    (%rdi,%rcx,8),%rcx
movslq %r9d,%rsi
add    (%rcx,%rsi,4),%eax
movslq %edx,%rdx
add    (%rcx,%rdx,4),%eax
lea    (%rcx,%rdx,4),%rcx
add    $0x4,%rcx
jmp    132f <RevisarVecinos+0x22f>
movslq %r10d,%rcx
mov    (%rdi,%rcx,8),%rdx
movslq %r8d,%rbp
lea    -0x4(,%rbp,4),%rcx
ff
add    -0x4(%rdx,%rbp,4),%eax
movslq %esi,%rdx
mov    (%rdi,%rdx,8),%rdx
add    -0x4(%rdx,%rbp,4),%eax
add    (%rdi,%rbx,8),%rcx
add    (%rcx),%eax
pop    %rbx
pop    %r14
pop    %r15
pop    %rbp
ret
cmp    %esi,%r11d
jne    1331 <RevisarVecinos+0x231>
mov    (%rdi),%rcx
jmp    12f4 <RevisarVecinos+0x1f4>

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

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