void verifica_target(char maze[23][30], int target[2]) {
  if (maze[target[0]][target[1]] != ' ') {
    if (target[0] > 29) {
      target[0] = 28;
      if (maze[target[0]][target[1]] == '0') {
        if (maze[target[0]][target[1] + 1] == '0' &&
            maze[target[0]][target[1] - 1] == '0' &&
            maze[target[0] + 1][target[1]] == '0' &&
            maze[target[0] - 1][target[1]] == '0') {
          if (target[0] > 14) {
            target[0]--;
            verifica_target(maze, target);
          } else {
            if (target[0] < 14) {
              target[0]++;
              verifica_target(maze, target);
            }
          }
        }
      } else {
        target[0] = target[0] + 0;
        target[1] = target[1] + 0;
      }
    }
    if (target[1] > 22) {
      target[1] = 21;
      if (maze[target[0]][target[1]] == '0') {
        if (maze[target[0]][target[1] + 1] == '0' &&
            maze[target[0]][target[1] - 1] == '0' &&
            maze[target[0] + 1][target[1]] == '0' &&
            maze[target[0] - 1][target[1]] == '0') {
          if (target[0] > 11) {
            target[0]--;
            verifica_target(maze, target);
          } else {
            if (target[0] < 11) {
              target[0]++;
              verifica_target(maze, target);
            }
          }
        }
      } else {
        target[0] = target[0] + 0;
        target[1] = target[1] + 0;
      }
    }
    if (target[0] < 0) {
      target[0] = 0;
      if (maze[target[0]][target[1]] == '0') {
        if (maze[target[0]][target[1] + 1] == '0' &&
            maze[target[0]][target[1] - 1] == '0' &&
            maze[target[0] + 1][target[1]] == '0' &&
            maze[target[0] - 1][target[1]] == '0') {
          if (target[0] > 14) {
            target[0]--;
            verifica_target(maze, target);
          } else {
            if (target[0] < 14) {
              target[0]++;
              verifica_target(maze, target);
            }
          }
        }
      } else {
        target[0] = target[0] + 0;
        target[1] = target[1] + 0;
      }
    }
    if (target[1] < 0) {
      target[1] = 0;
      if (maze[target[0]][target[1]] == '0') {
        if (maze[target[0]][target[1] + 1] == '0' &&
            maze[target[0]][target[1] - 1] == '0' &&
            maze[target[0] + 1][target[1]] == '0' &&
            maze[target[0] - 1][target[1]] == '0') {
          if (target[0] > 11) {
            target[0]--;
            verifica_target(maze, target);
          } else {
            if (target[0] < 11) {
              target[0]++;
              verifica_target(maze, target);
            }
          }
        }
      } else {
        target[0] = target[0] + 0;
        target[1] = target[1] + 0;
      }
    }
  }
}


x86 assembly (clang, -O0):
<verifica_target>:
push   %rbp
mov    %rsp,%rbp
sub    $0x10,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
movslq 0x4(%rcx),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
je     1714 <verifica_target+0x604>
mov    -0x10(%rbp),%rax
cmpl   $0x1d,(%rax)
jle    12b8 <verifica_target+0x1a8>
mov    -0x10(%rbp),%rax
movl   $0x1c,(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
movslq 0x4(%rcx),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    1293 <verifica_target+0x183>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
mov    0x4(%rcx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    128e <verifica_target+0x17e>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
mov    0x4(%rcx),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    128e <verifica_target+0x17e>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
mov    (%rcx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
movslq 0x4(%rcx),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    128e <verifica_target+0x17e>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
mov    (%rcx),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
movslq 0x4(%rcx),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    128e <verifica_target+0x17e>
mov    -0x10(%rbp),%rax
cmpl   $0xe,(%rax)
jle    125f <verifica_target+0x14f>
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
call   1030 <verifica_target@plt>
jmp    1289 <verifica_target+0x179>
mov    -0x10(%rbp),%rax
cmpl   $0xe,(%rax)
jge    1284 <verifica_target+0x174>
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
call   1030 <verifica_target@plt>
jmp    1289 <verifica_target+0x179>
jmp    128e <verifica_target+0x17e>
jmp    12b3 <verifica_target+0x1a3>
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x0,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
add    $0x0,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x4(%rax)
jmp    12b8 <verifica_target+0x1a8>
mov    -0x10(%rbp),%rax
cmpl   $0x16,0x4(%rax)
jle    142b <verifica_target+0x31b>
mov    -0x10(%rbp),%rax
movl   $0x15,0x4(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
movslq 0x4(%rcx),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    1406 <verifica_target+0x2f6>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
mov    0x4(%rcx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    1401 <verifica_target+0x2f1>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
mov    0x4(%rcx),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    1401 <verifica_target+0x2f1>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
mov    (%rcx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
movslq 0x4(%rcx),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    1401 <verifica_target+0x2f1>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
mov    (%rcx),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
movslq 0x4(%rcx),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    1401 <verifica_target+0x2f1>
mov    -0x10(%rbp),%rax
cmpl   $0xb,(%rax)
jle    13d2 <verifica_target+0x2c2>
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
call   1030 <verifica_target@plt>
jmp    13fc <verifica_target+0x2ec>
mov    -0x10(%rbp),%rax
cmpl   $0xb,(%rax)
jge    13f7 <verifica_target+0x2e7>
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
call   1030 <verifica_target@plt>
jmp    13fc <verifica_target+0x2ec>
jmp    1401 <verifica_target+0x2f1>
jmp    1426 <verifica_target+0x316>
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x0,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
add    $0x0,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x4(%rax)
jmp    142b <verifica_target+0x31b>
mov    -0x10(%rbp),%rax
cmpl   $0x0,(%rax)
jge    159c <verifica_target+0x48c>
mov    -0x10(%rbp),%rax
movl   $0x0,(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
movslq 0x4(%rcx),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    1577 <verifica_target+0x467>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
mov    0x4(%rcx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    1572 <verifica_target+0x462>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
mov    0x4(%rcx),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    1572 <verifica_target+0x462>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
mov    (%rcx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
movslq 0x4(%rcx),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    1572 <verifica_target+0x462>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
mov    (%rcx),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
movslq 0x4(%rcx),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    1572 <verifica_target+0x462>
mov    -0x10(%rbp),%rax
cmpl   $0xe,(%rax)
jle    1543 <verifica_target+0x433>
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
call   1030 <verifica_target@plt>
jmp    156d <verifica_target+0x45d>
mov    -0x10(%rbp),%rax
cmpl   $0xe,(%rax)
jge    1568 <verifica_target+0x458>
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
call   1030 <verifica_target@plt>
jmp    156d <verifica_target+0x45d>
jmp    1572 <verifica_target+0x462>
jmp    1597 <verifica_target+0x487>
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x0,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
add    $0x0,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x4(%rax)
jmp    159c <verifica_target+0x48c>
mov    -0x10(%rbp),%rax
cmpl   $0x0,0x4(%rax)
jge    170f <verifica_target+0x5ff>
mov    -0x10(%rbp),%rax
movl   $0x0,0x4(%rax)
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
movslq 0x4(%rcx),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    16ea <verifica_target+0x5da>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
mov    0x4(%rcx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    16e5 <verifica_target+0x5d5>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
movslq (%rcx),%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
mov    0x4(%rcx),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    16e5 <verifica_target+0x5d5>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
mov    (%rcx),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
movslq 0x4(%rcx),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    16e5 <verifica_target+0x5d5>
mov    -0x8(%rbp),%rax
mov    -0x10(%rbp),%rcx
mov    (%rcx),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x1e,%rcx,%rcx
add    %rcx,%rax
mov    -0x10(%rbp),%rcx
movslq 0x4(%rcx),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x30,%eax
jne    16e5 <verifica_target+0x5d5>
mov    -0x10(%rbp),%rax
cmpl   $0xb,(%rax)
jle    16b6 <verifica_target+0x5a6>
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0xffffffff,%ecx
mov    %ecx,(%rax)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
call   1030 <verifica_target@plt>
jmp    16e0 <verifica_target+0x5d0>
mov    -0x10(%rbp),%rax
cmpl   $0xb,(%rax)
jge    16db <verifica_target+0x5cb>
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x1,%ecx
mov    %ecx,(%rax)
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
call   1030 <verifica_target@plt>
jmp    16e0 <verifica_target+0x5d0>
jmp    16e5 <verifica_target+0x5d5>
jmp    170a <verifica_target+0x5fa>
mov    -0x10(%rbp),%rax
mov    (%rax),%ecx
add    $0x0,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x10(%rbp),%rax
mov    0x4(%rax),%ecx
add    $0x0,%ecx
mov    -0x10(%rbp),%rax
mov    %ecx,0x4(%rax)
jmp    170f <verifica_target+0x5ff>
jmp    1714 <verifica_target+0x604>
add    $0x10,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<verifica_target>:
push   %r14
push   %rbx
push   %rax
mov    %rsi,%r14
movslq (%rsi),%rcx
mov    0x4(%rsi),%eax
movslq %eax,%rdx
mov    %rcx,%rsi
shl    $0x5,%rsi
sub    %rcx,%rsi
sub    %rcx,%rsi
add    %rdi,%rsi
cmpb   $0x20,(%rdx,%rsi,1)
jne    113e <verifica_target+0x2e>
add    $0x8,%rsp
pop    %rbx
pop    %r14
ret
mov    %rdi,%rbx
jmp    1173 <verifica_target+0x63>
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
lea    -0x1(%rax),%ecx
mov    %rsi,%rdx
mov    %ecx,(%r14)
mov    %rdx,%rax
shl    $0x5,%rax
sub    %rdx,%rax
sub    %rdx,%rax
xor    %edx,%edx
cmpb   $0x20,(%rbx,%rax,1)
mov    $0x0,%eax
je     1136 <verifica_target+0x26>
cmp    $0x1e,%ecx
jl     11d0 <verifica_target+0xc0>
movl   $0x1c,(%r14)
cmpb   $0x30,0x348(%rbx,%rdx,1)
30
jne    11d0 <verifica_target+0xc0>
movslq %eax,%rcx
cmpb   $0x30,0x349(%rcx,%rbx,1)
30
jne    11d0 <verifica_target+0xc0>
cmpb   $0x30,0x347(%rcx,%rbx,1)
30
jne    11d0 <verifica_target+0xc0>
cmpb   $0x30,0x366(%rbx,%rdx,1)
30
jne    11d0 <verifica_target+0xc0>
cmpb   $0x30,0x32a(%rbx,%rdx,1)
30
jne    11d0 <verifica_target+0xc0>
movl   $0x1b,(%r14)
mov    %rbx,%rdi
mov    %r14,%rsi
call   1030 <verifica_target@plt>
mov    0x4(%r14),%eax
nopw   0x0(%rax,%rax,1)
cmp    $0x17,%eax
jl     1250 <verifica_target+0x140>
movl   $0x15,0x4(%r14)
movslq (%r14),%rax
mov    %rax,%rcx
shl    $0x5,%rcx
sub    %rax,%rcx
sub    %rax,%rcx
cmpb   $0x30,0x15(%rbx,%rcx,1)
jne    1250 <verifica_target+0x140>
cmpb   $0x30,0x16(%rbx,%rcx,1)
jne    1250 <verifica_target+0x140>
cmpb   $0x30,0x14(%rbx,%rcx,1)
jne    1250 <verifica_target+0x140>
lea    0x1(%rax),%rcx
mov    %rcx,%rdx
shl    $0x5,%rdx
sub    %rcx,%rdx
sub    %rcx,%rdx
cmpb   $0x30,0x15(%rbx,%rdx,1)
jne    1250 <verifica_target+0x140>
lea    -0x1(%rax),%rdx
mov    %rdx,%rsi
shl    $0x5,%rsi
sub    %rdx,%rsi
sub    %rdx,%rsi
cmpb   $0x30,0x15(%rbx,%rsi,1)
jne    1250 <verifica_target+0x140>
cmp    $0xb,%eax
jle    123c <verifica_target+0x12c>
lea    -0x1(%rax),%ecx
jmp    1241 <verifica_target+0x131>
cmp    $0xb,%eax
je     1250 <verifica_target+0x140>
mov    %ecx,(%r14)
mov    %rbx,%rdi
mov    %r14,%rsi
call   1030 <verifica_target@plt>
nop
cmpl   $0x0,(%r14)
jns    12a0 <verifica_target+0x190>
movl   $0x0,(%r14)
movslq 0x4(%r14),%rax
cmpb   $0x30,(%rbx,%rax,1)
jne    12a0 <verifica_target+0x190>
cmpb   $0x30,0x1(%rax,%rbx,1)
jne    12a0 <verifica_target+0x190>
cmpb   $0x30,-0x1(%rax,%rbx,1)
jne    12a0 <verifica_target+0x190>
cmpb   $0x30,0x1e(%rbx,%rax,1)
jne    12a0 <verifica_target+0x190>
cmpb   $0x30,-0x1e(%rbx,%rax,1)
jne    12a0 <verifica_target+0x190>
movl   $0x1,(%r14)
mov    %rbx,%rdi
mov    %r14,%rsi
call   1030 <verifica_target@plt>
cs nopw 0x0(%rax,%rax,1)
nop
cmpl   $0x0,0x4(%r14)
jns    1136 <verifica_target+0x26>
movl   $0x0,0x4(%r14)
movslq (%r14),%rax
mov    %rax,%rcx
shl    $0x5,%rcx
sub    %rax,%rcx
sub    %rax,%rcx
cmpb   $0x30,(%rbx,%rcx,1)
jne    1136 <verifica_target+0x26>
cmpb   $0x30,0x1(%rbx,%rcx,1)
jne    1136 <verifica_target+0x26>
cmpb   $0x30,-0x1(%rbx,%rcx,1)
jne    1136 <verifica_target+0x26>
lea    0x1(%rax),%rdx
mov    %rdx,%rcx
shl    $0x5,%rcx
sub    %rdx,%rcx
sub    %rdx,%rcx
cmpb   $0x30,(%rbx,%rcx,1)
jne    1136 <verifica_target+0x26>
lea    -0x1(%rax),%rsi
mov    %rsi,%rcx
shl    $0x5,%rcx
sub    %rsi,%rcx
sub    %rsi,%rcx
cmpb   $0x30,(%rbx,%rcx,1)
jne    1136 <verifica_target+0x26>
cmp    $0xc,%eax
jge    1150 <verifica_target+0x40>
mov    %edx,%ecx
cmp    $0xb,%eax
jne    1156 <verifica_target+0x46>
jmp    1136 <verifica_target+0x26>

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

LLVM IR (-O2):
define void @verifica_target([30 x i8]* %0, i32* %1) {
%3 = getelementptr inbounds i32, i32* %1, i64 1
%4 = load i32, i32* %1
%5 = sext i32 %4 to i64
%6 = load i32, i32* %3
%7 = sext i32 %6 to i64
%8 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 %5, i64 %7
%9 = load i8, i8* %8
%10 = icmp eq i8 %9, 32
br i1 %10, label %146, label %11
11: ; preds = %2, %138
%12 = phi i64 [ 0, %138 ], [ %7, %2 ]
%13 = phi i32 [ 0, %138 ], [ %6, %2 ]
%14 = phi i32 [ %140, %138 ], [ %4, %2 ]
%15 = icmp sgt i32 %14, 29
br i1 %15, label %16, label %42
16: ; preds = %11
store i32 28, i32* %1
%17 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 28, i64 %12
%18 = load i8, i8* %17
%19 = icmp eq i8 %18, 48
br i1 %19, label %20, label %42
20: ; preds = %16
%21 = add nsw i32 %13, 1
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 28, i64 %22
%24 = load i8, i8* %23
%25 = icmp eq i8 %24, 48
br i1 %25, label %26, label %42
26: ; preds = %20
%27 = add nsw i32 %13, -1
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 28, i64 %28
%30 = load i8, i8* %29
%31 = icmp eq i8 %30, 48
br i1 %31, label %32, label %42
32: ; preds = %26
%33 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 29, i64 %12
%34 = load i8, i8* %33
%35 = icmp eq i8 %34, 48
br i1 %35, label %36, label %42
36: ; preds = %32
%37 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 27, i64 %12
%38 = load i8, i8* %37
%39 = icmp eq i8 %38, 48
br i1 %39, label %40, label %42
40: ; preds = %36
store i32 27, i32* %1
tail call void @verifica_target([30 x i8]* %0, i32* %1)
%41 = load i32, i32* %3
br label %42
42: ; preds = %16, %40, %36, %32, %26, %20, %11
%43 = phi i32 [ %41, %40 ], [ %13, %36 ], [ %13, %32 ], [ %13, %26 ], [ %13, %20 ], [ %13, %11 ], [ %13, %16 ]
%44 = icmp sgt i32 %43, 22
br i1 %44, label %45, label %77
45: ; preds = %42
store i32 21, i32* %3
%46 = load i32, i32* %1
%47 = sext i32 %46 to i64
%48 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 %47, i64 21
%49 = load i8, i8* %48
%50 = icmp eq i8 %49, 48
br i1 %50, label %51, label %77
51: ; preds = %45
%52 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 %47, i64 22
%53 = load i8, i8* %52
%54 = icmp eq i8 %53, 48
br i1 %54, label %55, label %77
55: ; preds = %51
%56 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 %47, i64 20
%57 = load i8, i8* %56
%58 = icmp eq i8 %57, 48
br i1 %58, label %59, label %77
59: ; preds = %55
%60 = add nsw i32 %46, 1
%61 = sext i32 %60 to i64
%62 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 %61, i64 21
%63 = load i8, i8* %62
%64 = icmp eq i8 %63, 48
br i1 %64, label %65, label %77
65: ; preds = %59
%66 = add nsw i32 %46, -1
%67 = sext i32 %66 to i64
%68 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 %67, i64 21
%69 = load i8, i8* %68
%70 = icmp eq i8 %69, 48
br i1 %70, label %71, label %77
71: ; preds = %65
%72 = icmp sgt i32 %46, 11
br i1 %72, label %75, label %73
73: ; preds = %71
%74 = icmp eq i32 %46, 11
br i1 %74, label %77, label %75
75: ; preds = %73, %71
%76 = phi i32 [ %66, %71 ], [ %60, %73 ]
store i32 %76, i32* %1
tail call void @verifica_target([30 x i8]* %0, i32* %1)
br label %77
77: ; preds = %75, %45, %73, %65, %59, %55, %51, %42
%78 = load i32, i32* %1
%79 = icmp slt i32 %78, 0
br i1 %79, label %80, label %107
80: ; preds = %77
store i32 0, i32* %1
%81 = load i32, i32* %3
%82 = sext i32 %81 to i64
%83 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 0, i64 %82
%84 = load i8, i8* %83
%85 = icmp eq i8 %84, 48
br i1 %85, label %86, label %107
86: ; preds = %80
%87 = add nsw i32 %81, 1
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 0, i64 %88
%90 = load i8, i8* %89
%91 = icmp eq i8 %90, 48
br i1 %91, label %92, label %107
92: ; preds = %86
%93 = add nsw i32 %81, -1
%94 = sext i32 %93 to i64
%95 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 0, i64 %94
%96 = load i8, i8* %95
%97 = icmp eq i8 %96, 48
br i1 %97, label %98, label %107
98: ; preds = %92
%99 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 1, i64 %82
%100 = load i8, i8* %99
%101 = icmp eq i8 %100, 48
br i1 %101, label %102, label %107
102: ; preds = %98
%103 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 -1, i64 %82
%104 = load i8, i8* %103
%105 = icmp eq i8 %104, 48
br i1 %105, label %106, label %107
106: ; preds = %102
store i32 1, i32* %1
tail call void @verifica_target([30 x i8]* %0, i32* %1)
br label %107
107: ; preds = %80, %106, %102, %98, %92, %86, %77
%108 = load i32, i32* %3
%109 = icmp slt i32 %108, 0
br i1 %109, label %110, label %146
110: ; preds = %107
store i32 0, i32* %3
%111 = load i32, i32* %1
%112 = sext i32 %111 to i64
%113 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 %112, i64 0
%114 = load i8, i8* %113
%115 = icmp eq i8 %114, 48
br i1 %115, label %116, label %146
116: ; preds = %110
%117 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 %112, i64 1
%118 = load i8, i8* %117
%119 = icmp eq i8 %118, 48
br i1 %119, label %120, label %146
120: ; preds = %116
%121 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 %112, i64 -1
%122 = load i8, i8* %121
%123 = icmp eq i8 %122, 48
br i1 %123, label %124, label %146
124: ; preds = %120
%125 = add nsw i32 %111, 1
%126 = sext i32 %125 to i64
%127 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 %126, i64 0
%128 = load i8, i8* %127
%129 = icmp eq i8 %128, 48
br i1 %129, label %130, label %146
130: ; preds = %124
%131 = add nsw i32 %111, -1
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 %132, i64 0
%134 = load i8, i8* %133
%135 = icmp eq i8 %134, 48
br i1 %135, label %136, label %146
136: ; preds = %130
%137 = icmp sgt i32 %111, 11
br i1 %137, label %138, label %144
138: ; preds = %144, %136
%139 = phi i64 [ %132, %136 ], [ %126, %144 ]
%140 = phi i32 [ %131, %136 ], [ %125, %144 ]
store i32 %140, i32* %1
%141 = getelementptr inbounds [30 x i8], [30 x i8]* %0, i64 %139, i64 0
%142 = load i8, i8* %141
%143 = icmp eq i8 %142, 32
br i1 %143, label %146, label %11
144: ; preds = %136
%145 = icmp eq i32 %111, 11
br i1 %145, label %146, label %138
146: ; preds = %138, %144, %130, %124, %120, %116, %107, %110, %2
ret void
}