#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 /*<<< orphan*/ printf(char *, ...);
int /*<<< orphan*/ scanf(char *, ...);
int main() {
  int mapa[6][6] = {{0, 0, 0, 0, 0, 0}, {0, 0, 1, 1, 0, 1}, {0, 1, 1, 1, 1, 0},
                    {0, 1, 0, 0, 0, 1}, {0, 0, 0, 1, 1, 0}, {0, 1, 0, 1, 0, 1}};
  int i, j;
  char nomedojogador[30];
  char control[6][6];
  int continuar = 1;
  int pontos = 0;
  for (i = 1; i < 6; i++) {
    for (j = 1; j < 6; j++) {
      control[i][j] = '.';
      printf("%c  ", control[i][j]);
    }
    printf("\n");
  }
  printf("Qual é o seu nome? \n");
  scanf("%s", nomedojogador);
  printf("\nEntre com a linha:  ");
  scanf("%d", &i);
  printf("\nEntre com a Coluna:  ");
  scanf("%d", &j);
  if (mapa[i][j] == 1) {
    control[i][j] = 'X';
    pontos++;
    printf("Bomba!! Parabéns!!\n");
    printf("Por enquanto você fez %d pontos\n", pontos);
    printf("Deseja Continuar? 1 = Sim / 0= Não:");
    scanf("%d", &continuar);
  } else {
    control[i][j] = 'O';
    printf("Agua!!, que pena\n");
    printf("Por enquanto você fez %d pontos\n", pontos);
    printf("Deseja Continuar? 1 = Sim / 0= Não:");
    scanf("%d", &continuar);
  }
  for (i = 1; i < 6; i++) {
    for (j = 1; j < 6; j++) {
      printf("%c  ", control[i][j]);
    }
    printf("\n");
  }
  while (continuar == 1) {
    printf("\nEntre com a linha:  ");
    scanf("%d", &i);
    printf("\nEntre com a Coluna:  ");
    scanf("%d", &j);
    if (mapa[i][j] == 1) {
      control[i][j] = 'X';
      pontos++;
      printf("Bomba!!\n");
      printf("Por enquanto você fez %d pontos\n", pontos);
      printf("Deseja Continuar? 1 = Sim / 0= Não:");
      scanf("%d", &continuar);
    } else {
      control[i][j] = 'O';
      printf("Agua!!\n");
      printf("Por enquanto você fez %d pontos\n", pontos);
      printf("Deseja Continuar? 1 = Sim / 0= Não:");
      scanf("%d", &continuar);
    }
    for (i = 1; i < 6; i++) {
      for (j = 1; j < 6; j++) {
        printf("%c  ", control[i][j]);
      }
      printf("\n");
    }
  }
  printf("Olá %s, você ganhou! Fez %d pontos.", nomedojogador, pontos);
  return 0;
}


x86 assembly (clang, -O0):
<main>:
push   %rbp
mov    %rsp,%rbp
sub    $0x110,%rsp
movl   $0x0,-0x4(%rbp)
lea    -0xa0(%rbp),%rdi
lea    0xeb0(%rip),%rsi
mov    $0x90,%edx
call   1040 <memcpy@plt>
movl   $0x1,-0x104(%rbp)
movl   $0x0,-0x108(%rbp)
movl   $0x1,-0xa4(%rbp)
cmpl   $0x6,-0xa4(%rbp)
jge    1220 <main+0xf0>
movl   $0x1,-0xa8(%rbp)
cmpl   $0x6,-0xa8(%rbp)
jge    11fe <main+0xce>
movslq -0xa4(%rbp),%rcx
lea    -0x100(%rbp),%rax
imul   $0x6,%rcx,%rcx
add    %rcx,%rax
movslq -0xa8(%rbp),%rcx
movb   $0x2e,(%rax,%rcx,1)
movslq -0xa4(%rbp),%rcx
lea    -0x100(%rbp),%rax
imul   $0x6,%rcx,%rcx
add    %rcx,%rax
movslq -0xa8(%rbp),%rcx
movsbl (%rax,%rcx,1),%esi
lea    0xead(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xa8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
jmp    118f <main+0x5f>
lea    0xea4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xa4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa4(%rbp)
jmp    1178 <main+0x48>
lea    0xe6e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    -0xd0(%rbp),%rsi
lea    0xe6f(%rip),%rdi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xe64(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe6c(%rip),%rdi
lea    -0xa4(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xe5a(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe49(%rip),%rdi
lea    -0xa8(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movslq -0xa4(%rbp),%rcx
lea    -0xa0(%rbp),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
movslq -0xa8(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1328 <main+0x1f8>
movslq -0xa4(%rbp),%rcx
lea    -0x100(%rbp),%rax
imul   $0x6,%rcx,%rcx
add    %rcx,%rax
movslq -0xa8(%rbp),%rcx
movb   $0x58,(%rax,%rcx,1)
mov    -0x108(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x108(%rbp)
lea    0xdf9(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x108(%rbp),%esi
lea    0xdfa(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xe0e(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xdaf(%rip),%rdi
lea    -0x104(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
jmp    138d <main+0x25d>
movslq -0xa4(%rbp),%rcx
lea    -0x100(%rbp),%rax
imul   $0x6,%rcx,%rcx
add    %rcx,%rax
movslq -0xa8(%rbp),%rcx
movb   $0x4f,(%rax,%rcx,1)
lea    0xdeb(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x108(%rbp),%esi
lea    0xd90(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xda4(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xd45(%rip),%rdi
lea    -0x104(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movl   $0x1,-0xa4(%rbp)
cmpl   $0x6,-0xa4(%rbp)
jge    141f <main+0x2ef>
movl   $0x1,-0xa8(%rbp)
cmpl   $0x6,-0xa8(%rbp)
jge    13fd <main+0x2cd>
movslq -0xa4(%rbp),%rcx
lea    -0x100(%rbp),%rax
imul   $0x6,%rcx,%rcx
add    %rcx,%rax
movslq -0xa8(%rbp),%rcx
movsbl (%rax,%rcx,1),%esi
lea    0xcae(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xa8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
jmp    13ae <main+0x27e>
lea    0xca5(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xa4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa4(%rbp)
jmp    1397 <main+0x267>
jmp    1424 <main+0x2f4>
cmpl   $0x1,-0x104(%rbp)
jne    1612 <main+0x4e2>
lea    0xc76(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc7e(%rip),%rdi
lea    -0xa4(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
lea    0xc6c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc5b(%rip),%rdi
lea    -0xa8(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movslq -0xa4(%rbp),%rcx
lea    -0xa0(%rbp),%rax
imul   $0x18,%rcx,%rcx
add    %rcx,%rax
movslq -0xa8(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1516 <main+0x3e6>
movslq -0xa4(%rbp),%rcx
lea    -0x100(%rbp),%rax
imul   $0x6,%rcx,%rcx
add    %rcx,%rax
movslq -0xa8(%rbp),%rcx
movb   $0x58,(%rax,%rcx,1)
mov    -0x108(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x108(%rbp)
lea    0xc79(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x108(%rbp),%esi
lea    0xc0c(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xc20(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xbc1(%rip),%rdi
lea    -0x104(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
jmp    157b <main+0x44b>
movslq -0xa4(%rbp),%rcx
lea    -0x100(%rbp),%rax
imul   $0x6,%rcx,%rcx
add    %rcx,%rax
movslq -0xa8(%rbp),%rcx
movb   $0x4f,(%rax,%rcx,1)
lea    0xc18(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0x108(%rbp),%esi
lea    0xba2(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xbb6(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
lea    0xb57(%rip),%rdi
lea    -0x104(%rbp),%rsi
mov    $0x0,%al
call   1050 <scanf@plt>
movl   $0x1,-0xa4(%rbp)
cmpl   $0x6,-0xa4(%rbp)
jge    160d <main+0x4dd>
movl   $0x1,-0xa8(%rbp)
cmpl   $0x6,-0xa8(%rbp)
jge    15eb <main+0x4bb>
movslq -0xa4(%rbp),%rcx
lea    -0x100(%rbp),%rax
imul   $0x6,%rcx,%rcx
add    %rcx,%rax
movslq -0xa8(%rbp),%rcx
movsbl (%rax,%rcx,1),%esi
lea    0xac0(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xa8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa8(%rbp)
jmp    159c <main+0x46c>
lea    0xab7(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
mov    -0xa4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xa4(%rbp)
jmp    1585 <main+0x455>
jmp    1424 <main+0x2f4>
lea    -0xd0(%rbp),%rsi
mov    -0x108(%rbp),%edx
lea    0xb37(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
xor    %eax,%eax
add    $0x110,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<main>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x68,%rsp
movl   $0x1,0xc(%rsp)
movb   $0x2e,0x17(%rsp)
lea    0xf2e(%rip),%rbx
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x18(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x19(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x1a(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x1b(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movb   $0x2e,0x1d(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x1e(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x1f(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x20(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x21(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movb   $0x2e,0x23(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x24(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x25(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x26(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x27(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movb   $0x2e,0x29(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x2a(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x2b(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x2c(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x2d(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movb   $0x2e,0x2f(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x30(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x31(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x32(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
movb   $0x2e,0x33(%rsp)
mov    %rbx,%rdi
mov    $0x2e,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    $0xa,%edi
call   1030 <putchar@plt>
movl   $0x6,0x8(%rsp)
movl   $0x6,0x4(%rsp)
lea    0xd9b(%rip),%rdi
call   1040 <puts@plt>
lea    0xcef(%rip),%rdi
lea    0x40(%rsp),%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
lea    0xcdf(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xce7(%rip),%rbp
lea    0x8(%rsp),%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1060 <scanf@plt>
lea    0xcd4(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0x4(%rsp),%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1060 <scanf@plt>
movslq 0x8(%rsp),%rax
movslq 0x4(%rsp),%rcx
lea    0xbfc(%rip),%rdx
lea    (%rax,%rax,2),%rax
lea    (%rdx,%rax,8),%rdx
xor    %r14d,%r14d
cmpl   $0x1,(%rdx,%rcx,4)
sete   %r14b
lea    0x10(%rsp,%rax,2),%rax
lea    0x4f(%r14,%r14,8),%edx
lea    0xd42(%rip),%rsi
lea    0xd1b(%rip),%rdi
cmove  %rsi,%rdi
mov    %dl,(%rcx,%rax,1)
call   1040 <puts@plt>
lea    0xc86(%rip),%rdi
mov    %r14d,%esi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xc97(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
lea    0xc(%rsp),%rsi
mov    %rbp,%rdi
xor    %eax,%eax
call   1060 <scanf@plt>
movl   $0x1,0x8(%rsp)
mov    $0x1,%eax
jmp    149a <main+0x35a>
nopl   0x0(%rax,%rax,1)
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    0x8(%rsp),%ecx
lea    0x1(%rcx),%eax
mov    %eax,0x8(%rsp)
cmp    $0x5,%ecx
jge    1506 <main+0x3c6>
movl   $0x1,0x4(%rsp)
cltq
lea    (%rax,%rax,2),%rax
movsbl 0x11(%rsp,%rax,2),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x4(%rsp),%ecx
lea    0x1(%rcx),%eax
mov    %eax,0x4(%rsp)
cmp    $0x4,%ecx
jg     1480 <main+0x340>
nopw   0x0(%rax,%rax,1)
movslq 0x8(%rsp),%rcx
cltq
lea    (%rcx,%rcx,2),%rcx
lea    (%rsp,%rcx,2),%rcx
add    $0x10,%rcx
movsbl (%rax,%rcx,1),%esi
mov    %rbx,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x4(%rsp),%ecx
lea    0x1(%rcx),%eax
mov    %eax,0x4(%rsp)
cmp    $0x5,%ecx
jl     14d0 <main+0x390>
jmp    1480 <main+0x340>
cmpl   $0x1,0xc(%rsp)
jne    1696 <main+0x556>
lea    0xb96(%rip),%rbx
lea    0xba9(%rip),%r15
lea    0xbc4(%rip),%r12
lea    0xc(%rsp),%r13
lea    0xb5e(%rip),%rbp
jmp    154b <main+0x40b>
cs nopw 0x0(%rax,%rax,1)
xchg   %ax,%ax
cmpl   $0x1,0xc(%rsp)
jne    1696 <main+0x556>
lea    0xb46(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
lea    0x8(%rsp),%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
lea    0xb42(%rip),%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
lea    0x4(%rsp),%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
movslq 0x8(%rsp),%rax
movslq 0x4(%rsp),%rcx
lea    (%rax,%rax,2),%rax
lea    0xa66(%rip),%rdx
lea    (%rdx,%rax,8),%rdx
lea    (%rsp,%rax,2),%rax
add    $0x10,%rax
add    %rcx,%rax
cmpl   $0x1,(%rdx,%rcx,4)
jne    15c0 <main+0x480>
movb   $0x58,(%rax)
add    $0x1,%r14d
lea    0xba5(%rip),%rdi
jmp    15ca <main+0x48a>
nop
movb   $0x4f,(%rax)
lea    0xb91(%rip),%rdi
call   1040 <puts@plt>
mov    %r15,%rdi
mov    %r14d,%esi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %r12,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    %rbx,%rdi
mov    %r13,%rsi
xor    %eax,%eax
call   1060 <scanf@plt>
movl   $0x1,0x8(%rsp)
mov    $0x1,%eax
jmp    162e <main+0x4ee>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    $0xa,%edi
call   1030 <putchar@plt>
mov    0x8(%rsp),%ecx
lea    0x1(%rcx),%eax
mov    %eax,0x8(%rsp)
cmp    $0x5,%ecx
jge    1540 <main+0x400>
movl   $0x1,0x4(%rsp)
cltq
lea    (%rax,%rax,2),%rax
movsbl 0x11(%rsp,%rax,2),%esi
mov    %rbp,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x4(%rsp),%ecx
lea    0x1(%rcx),%eax
mov    %eax,0x4(%rsp)
cmp    $0x4,%ecx
jg     1610 <main+0x4d0>
nopl   0x0(%rax,%rax,1)
movslq 0x8(%rsp),%rcx
cltq
lea    (%rcx,%rcx,2),%rcx
lea    (%rsp,%rcx,2),%rcx
add    $0x10,%rcx
movsbl (%rax,%rcx,1),%esi
mov    %rbp,%rdi
xor    %eax,%eax
call   1050 <printf@plt>
mov    0x4(%rsp),%ecx
lea    0x1(%rcx),%eax
mov    %eax,0x4(%rsp)
cmp    $0x5,%ecx
jl     1660 <main+0x520>
jmp    1610 <main+0x4d0>
lea    0xa72(%rip),%rdi
lea    0x40(%rsp),%rsi
mov    %r14d,%edx
xor    %eax,%eax
call   1050 <printf@plt>
xor    %eax,%eax
add    $0x68,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
@__const.main.mapa = [6 x [6 x i32]] [[6 x i32] zeroinitializer, [6 x i32] [i32 0, i32 0, i32 1, i32 1, i32 0, i32 1], [6 x i32] [i32 0, i32 1, i32 1, i32 1, i32 1, i32 0], [6 x i32] [i32 0, i32 1, i32 0, i32 0, i32 0, i32 1], [6 x i32] [i32 0, i32 0, i32 0, i32 1, i32 1, i32 0], [6 x i32] [i32 0, i32 1, i32 0, i32 1, i32 0, i32 1]]
@.str = [5 x i8] c"%c \00"
@.str.1 = [2 x i8] c"\0A\00"
@.str.2 = [22 x i8] c"Qual \C3\A9 o seu nome? \0A\00"
@.str.3 = [3 x i8] c"%s\00"
@.str.4 = [22 x i8] c"\0AEntre com a linha: \00"
@.str.5 = [3 x i8] c"%d\00"
@.str.6 = [23 x i8] c"\0AEntre com a Coluna: \00"
@.str.7 = [21 x i8] c"Bomba!! Parab\C3\A9ns!!\0A\00"
@.str.8 = [34 x i8] c"Por enquanto voc\C3\AA fez %d pontos\0A\00"
@.str.9 = [37 x i8] c"Deseja Continuar? 1 = Sim / 0= N\C3\A3o:\00"
@.str.10 = [18 x i8] c"Agua!!, que pena\0A\00"
@.str.11 = [9 x i8] c"Bomba!!\0A\00"
@.str.12 = [8 x i8] c"Agua!!\0A\00"
@.str.13 = [38 x i8] c"Ol\C3\A1 %s, voc\C3\AA ganhou! Fez %d pontos.\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca [6 x [6 x i32]]
%3 = alloca i32
%4 = alloca i32
%5 = alloca [30 x i8]
%6 = alloca [6 x [6 x i8]]
%7 = alloca i32
%8 = alloca i32
store i32 0, i32* %1
%9 = bitcast [6 x [6 x i32]]* %2 to i8*
store i32 1, i32* %7
store i32 0, i32* %8
store i32 1, i32* %3
br label %10
10: ; preds = %38, %0
%11 = load i32, i32* %3
%12 = icmp slt i32 %11, 6
br i1 %12, label %13, label %41
13: ; preds = %10
store i32 1, i32* %4
br label %14
14: ; preds = %33, %13
%15 = load i32, i32* %4
%16 = icmp slt i32 %15, 6
br i1 %16, label %17, label %36
17: ; preds = %14
%18 = load i32, i32* %3
%19 = sext i32 %18 to i64
%20 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %6, i64 0, i64 %19
%21 = load i32, i32* %4
%22 = sext i32 %21 to i64
%23 = getelementptr inbounds [6 x i8], [6 x i8]* %20, i64 0, i64 %22
store i8 46, i8* %23
%24 = load i32, i32* %3
%25 = sext i32 %24 to i64
%26 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %6, i64 0, i64 %25
%27 = load i32, i32* %4
%28 = sext i32 %27 to i64
%29 = getelementptr inbounds [6 x i8], [6 x i8]* %26, i64 0, i64 %28
%30 = load i8, i8* %29
%31 = sext i8 %30 to i32
%32 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 %31)
br label %33
33: ; preds = %17
%34 = load i32, i32* %4
%35 = add nsw i32 %34, 1
store i32 %35, i32* %4
br label %14
36: ; preds = %14
%37 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %38
38: ; preds = %36
%39 = load i32, i32* %3
%40 = add nsw i32 %39, 1
store i32 %40, i32* %3
br label %10
41: ; preds = %10
%42 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.2, i64 0, i64 0))
%43 = getelementptr inbounds [30 x i8], [30 x i8]* %5, i64 0, i64 0
%44 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* %43)
%45 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.4, i64 0, i64 0))
%46 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %3)
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.6, i64 0, i64 0))
%48 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %4)
%49 = load i32, i32* %3
%50 = sext i32 %49 to i64
%51 = getelementptr inbounds [6 x [6 x i32]], [6 x [6 x i32]]* %2, i64 0, i64 %50
%52 = load i32, i32* %4
%53 = sext i32 %52 to i64
%54 = getelementptr inbounds [6 x i32], [6 x i32]* %51, i64 0, i64 %53
%55 = load i32, i32* %54
%56 = icmp eq i32 %55, 1
br i1 %56, label %57, label %71
57: ; preds = %41
%58 = load i32, i32* %3
%59 = sext i32 %58 to i64
%60 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %6, i64 0, i64 %59
%61 = load i32, i32* %4
%62 = sext i32 %61 to i64
%63 = getelementptr inbounds [6 x i8], [6 x i8]* %60, i64 0, i64 %62
store i8 88, i8* %63
%64 = load i32, i32* %8
%65 = add nsw i32 %64, 1
store i32 %65, i32* %8
%66 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([21 x i8], [21 x i8]* @.str.7, i64 0, i64 0))
%67 = load i32, i32* %8
%68 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.8, i64 0, i64 0), i32 %67)
%69 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.9, i64 0, i64 0))
%70 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %7)
br label %83
71: ; preds = %41
%72 = load i32, i32* %3
%73 = sext i32 %72 to i64
%74 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %6, i64 0, i64 %73
%75 = load i32, i32* %4
%76 = sext i32 %75 to i64
%77 = getelementptr inbounds [6 x i8], [6 x i8]* %74, i64 0, i64 %76
store i8 79, i8* %77
%78 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.10, i64 0, i64 0))
%79 = load i32, i32* %8
%80 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.8, i64 0, i64 0), i32 %79)
%81 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.9, i64 0, i64 0))
%82 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %7)
br label %83
83: ; preds = %71, %57
store i32 1, i32* %3
br label %84
84: ; preds = %106, %83
%85 = load i32, i32* %3
%86 = icmp slt i32 %85, 6
br i1 %86, label %87, label %109
87: ; preds = %84
store i32 1, i32* %4
br label %88
88: ; preds = %101, %87
%89 = load i32, i32* %4
%90 = icmp slt i32 %89, 6
br i1 %90, label %91, label %104
91: ; preds = %88
%92 = load i32, i32* %3
%93 = sext i32 %92 to i64
%94 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %6, i64 0, i64 %93
%95 = load i32, i32* %4
%96 = sext i32 %95 to i64
%97 = getelementptr inbounds [6 x i8], [6 x i8]* %94, i64 0, i64 %96
%98 = load i8, i8* %97
%99 = sext i8 %98 to i32
%100 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 %99)
br label %101
101: ; preds = %91
%102 = load i32, i32* %4
%103 = add nsw i32 %102, 1
store i32 %103, i32* %4
br label %88
104: ; preds = %88
%105 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %106
106: ; preds = %104
%107 = load i32, i32* %3
%108 = add nsw i32 %107, 1
store i32 %108, i32* %3
br label %84
109: ; preds = %84
br label %110
110: ; preds = %178, %109
%111 = load i32, i32* %7
%112 = icmp eq i32 %111, 1
br i1 %112, label %113, label %179
113: ; preds = %110
%114 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str.4, i64 0, i64 0))
%115 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %3)
%116 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([23 x i8], [23 x i8]* @.str.6, i64 0, i64 0))
%117 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %4)
%118 = load i32, i32* %3
%119 = sext i32 %118 to i64
%120 = getelementptr inbounds [6 x [6 x i32]], [6 x [6 x i32]]* %2, i64 0, i64 %119
%121 = load i32, i32* %4
%122 = sext i32 %121 to i64
%123 = getelementptr inbounds [6 x i32], [6 x i32]* %120, i64 0, i64 %122
%124 = load i32, i32* %123
%125 = icmp eq i32 %124, 1
br i1 %125, label %126, label %140
126: ; preds = %113
%127 = load i32, i32* %3
%128 = sext i32 %127 to i64
%129 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %6, i64 0, i64 %128
%130 = load i32, i32* %4
%131 = sext i32 %130 to i64
%132 = getelementptr inbounds [6 x i8], [6 x i8]* %129, i64 0, i64 %131
store i8 88, i8* %132
%133 = load i32, i32* %8
%134 = add nsw i32 %133, 1
store i32 %134, i32* %8
%135 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.11, i64 0, i64 0))
%136 = load i32, i32* %8
%137 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.8, i64 0, i64 0), i32 %136)
%138 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.9, i64 0, i64 0))
%139 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %7)
br label %152
140: ; preds = %113
%141 = load i32, i32* %3
%142 = sext i32 %141 to i64
%143 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %6, i64 0, i64 %142
%144 = load i32, i32* %4
%145 = sext i32 %144 to i64
%146 = getelementptr inbounds [6 x i8], [6 x i8]* %143, i64 0, i64 %145
store i8 79, i8* %146
%147 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([8 x i8], [8 x i8]* @.str.12, i64 0, i64 0))
%148 = load i32, i32* %8
%149 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([34 x i8], [34 x i8]* @.str.8, i64 0, i64 0), i32 %148)
%150 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([37 x i8], [37 x i8]* @.str.9, i64 0, i64 0))
%151 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %7)
br label %152
152: ; preds = %140, %126
store i32 1, i32* %3
br label %153
153: ; preds = %175, %152
%154 = load i32, i32* %3
%155 = icmp slt i32 %154, 6
br i1 %155, label %156, label %178
156: ; preds = %153
store i32 1, i32* %4
br label %157
157: ; preds = %170, %156
%158 = load i32, i32* %4
%159 = icmp slt i32 %158, 6
br i1 %159, label %160, label %173
160: ; preds = %157
%161 = load i32, i32* %3
%162 = sext i32 %161 to i64
%163 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %6, i64 0, i64 %162
%164 = load i32, i32* %4
%165 = sext i32 %164 to i64
%166 = getelementptr inbounds [6 x i8], [6 x i8]* %163, i64 0, i64 %165
%167 = load i8, i8* %166
%168 = sext i8 %167 to i32
%169 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 %168)
br label %170
170: ; preds = %160
%171 = load i32, i32* %4
%172 = add nsw i32 %171, 1
store i32 %172, i32* %4
br label %157
173: ; preds = %157
%174 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.1, i64 0, i64 0))
br label %175
175: ; preds = %173
%176 = load i32, i32* %3
%177 = add nsw i32 %176, 1
store i32 %177, i32* %3
br label %153
178: ; preds = %153
br label %110
179: ; preds = %110
%180 = getelementptr inbounds [30 x i8], [30 x i8]* %5, i64 0, i64 0
%181 = load i32, i32* %8
%182 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([38 x i8], [38 x i8]* @.str.13, i64 0, i64 0), i8* %180, i32 %181)
ret i32 0
}

LLVM IR (-O2):
@__const.main.mapa = [6 x [6 x i32]] [[6 x i32] zeroinitializer, [6 x i32] [i32 0, i32 0, i32 1, i32 1, i32 0, i32 1], [6 x i32] [i32 0, i32 1, i32 1, i32 1, i32 1, i32 0], [6 x i32] [i32 0, i32 1, i32 0, i32 0, i32 0, i32 1], [6 x i32] [i32 0, i32 0, i32 0, i32 1, i32 1, i32 0], [6 x i32] [i32 0, i32 1, i32 0, i32 1, i32 0, i32 1]]
@.str = [5 x i8] c"%c \00"
@.str.3 = [3 x i8] c"%s\00"
@.str.4 = [22 x i8] c"\0AEntre com a linha: \00"
@.str.5 = [3 x i8] c"%d\00"
@.str.6 = [23 x i8] c"\0AEntre com a Coluna: \00"
@.str.8 = [34 x i8] c"Por enquanto voc\C3\AA fez %d pontos\0A\00"
@.str.9 = [37 x i8] c"Deseja Continuar? 1 = Sim / 0= N\C3\A3o:\00"
@.str.13 = [38 x i8] c"Ol\C3\A1 %s, voc\C3\AA ganhou! Fez %d pontos.\00"
@str = [21 x i8] c"Qual \C3\A9 o seu nome? \00"
@str.14 = [17 x i8] c"Agua!!, que pena\00"
@str.15 = [7 x i8] c"Agua!!\00"
@str.16 = [8 x i8] c"Bomba!!\00"
@str.17 = [20 x i8] c"Bomba!! Parab\C3\A9ns!!\00"
define i32 @main() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca [30 x i8]
%4 = alloca [6 x [6 x i8]]
%5 = alloca i32
%6 = bitcast i32* %1 to i8*
%7 = bitcast i32* %2 to i8*
%8 = getelementptr inbounds [30 x i8], [30 x i8]* %3, i64 0, i64 0
%9 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 0, i64 0
%10 = bitcast i32* %5 to i8*
store i32 1, i32* %5
%11 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 1, i64 1
store i8 46, i8* %11
%12 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%13 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 1, i64 2
store i8 46, i8* %13
%14 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%15 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 1, i64 3
store i8 46, i8* %15
%16 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%17 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 1, i64 4
store i8 46, i8* %17
%18 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%19 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 1, i64 5
store i8 46, i8* %19
%20 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%21 = tail call i32 @putchar(i32 10)
%22 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 2, i64 1
store i8 46, i8* %22
%23 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%24 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 2, i64 2
store i8 46, i8* %24
%25 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%26 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 2, i64 3
store i8 46, i8* %26
%27 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%28 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 2, i64 4
store i8 46, i8* %28
%29 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%30 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 2, i64 5
store i8 46, i8* %30
%31 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%32 = tail call i32 @putchar(i32 10)
%33 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 3, i64 1
store i8 46, i8* %33
%34 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%35 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 3, i64 2
store i8 46, i8* %35
%36 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%37 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 3, i64 3
store i8 46, i8* %37
%38 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%39 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 3, i64 4
store i8 46, i8* %39
%40 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%41 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 3, i64 5
store i8 46, i8* %41
%42 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%43 = tail call i32 @putchar(i32 10)
%44 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 4, i64 1
store i8 46, i8* %44
%45 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%46 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 4, i64 2
store i8 46, i8* %46
%47 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%48 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 4, i64 3
store i8 46, i8* %48
%49 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%50 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 4, i64 4
store i8 46, i8* %50
%51 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%52 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 4, i64 5
store i8 46, i8* %52
%53 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%54 = tail call i32 @putchar(i32 10)
%55 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 5, i64 1
store i8 46, i8* %55
%56 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%57 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 5, i64 2
store i8 46, i8* %57
%58 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%59 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 5, i64 3
store i8 46, i8* %59
%60 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%61 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 5, i64 4
store i8 46, i8* %61
%62 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%63 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 5, i64 5
store i8 46, i8* %63
%64 = tail call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 46)
%65 = tail call i32 @putchar(i32 10)
store i32 6, i32* %1
store i32 6, i32* %2
%66 = tail call i32 @puts(i8* dereferenceable(1) getelementptr inbounds ([21 x i8], [21 x i8]* @str, i64 0, i64 0))
%67 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.3, i64 0, i64 0), i8* %8)
%68 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.4, i64 0, i64 0))
%69 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %1)
%70 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.6, i64 0, i64 0))
%71 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %2)
%72 = load i32, i32* %1
%73 = sext i32 %72 to i64
%74 = load i32, i32* %2
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds [6 x [6 x i32]], [6 x [6 x i32]]* @__const.main.mapa, i64 0, i64 %73, i64 %75
%77 = load i32, i32* %76
%78 = icmp eq i32 %77, 1
%79 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 %73, i64 %75
%80 = select i1 %78, i8 88, i8 79
%81 = select i1 %78, i8* getelementptr inbounds ([20 x i8], [20 x i8]* @str.17, i64 0, i64 0), i8* getelementptr inbounds ([17 x i8], [17 x i8]* @str.14, i64 0, i64 0)
%82 = zext i1 %78 to i32
store i8 %80, i8* %79
%83 = call i32 @puts(i8* dereferenceable(1) %81)
%84 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str.8, i64 0, i64 0), i32 %82)
%85 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.9, i64 0, i64 0))
%86 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %5)
store i32 1, i32* %1
br label %87
87: ; preds = %0, %112
%88 = phi i32 [ 1, %0 ], [ %115, %112 ]
store i32 1, i32* %2
%89 = sext i32 %88 to i64
%90 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 %89, i64 1
%91 = load i8, i8* %90
%92 = sext i8 %91 to i32
%93 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 %92)
%94 = load i32, i32* %2
%95 = add nsw i32 %94, 1
store i32 %95, i32* %2
%96 = icmp slt i32 %94, 5
br i1 %96, label %100, label %112
97: ; preds = %112
%98 = load i32, i32* %5
%99 = icmp eq i32 %98, 1
br i1 %99, label %120, label %171
100: ; preds = %87, %100
%101 = phi i32 [ %110, %100 ], [ %95, %87 ]
%102 = load i32, i32* %1
%103 = sext i32 %102 to i64
%104 = sext i32 %101 to i64
%105 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 %103, i64 %104
%106 = load i8, i8* %105
%107 = sext i8 %106 to i32
%108 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 %107)
%109 = load i32, i32* %2
%110 = add nsw i32 %109, 1
store i32 %110, i32* %2
%111 = icmp slt i32 %109, 5
br i1 %111, label %100, label %112
112: ; preds = %100, %87
%113 = call i32 @putchar(i32 10)
%114 = load i32, i32* %1
%115 = add nsw i32 %114, 1
store i32 %115, i32* %1
%116 = icmp slt i32 %114, 5
br i1 %116, label %87, label %97
117: ; preds = %166
%118 = load i32, i32* %5
%119 = icmp eq i32 %118, 1
br i1 %119, label %120, label %171
120: ; preds = %97, %117
%121 = phi i32 [ %139, %117 ], [ %82, %97 ]
%122 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([22 x i8], [22 x i8]* @.str.4, i64 0, i64 0))
%123 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %1)
%124 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([23 x i8], [23 x i8]* @.str.6, i64 0, i64 0))
%125 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %2)
%126 = load i32, i32* %1
%127 = sext i32 %126 to i64
%128 = load i32, i32* %2
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds [6 x [6 x i32]], [6 x [6 x i32]]* @__const.main.mapa, i64 0, i64 %127, i64 %129
%131 = load i32, i32* %130
%132 = icmp eq i32 %131, 1
%133 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 %127, i64 %129
br i1 %132, label %134, label %136
134: ; preds = %120
store i8 88, i8* %133
%135 = add nsw i32 %121, 1
br label %137
136: ; preds = %120
store i8 79, i8* %133
br label %137
137: ; preds = %136, %134
%138 = phi i8* [ getelementptr inbounds ([7 x i8], [7 x i8]* @str.15, i64 0, i64 0), %136 ], [ getelementptr inbounds ([8 x i8], [8 x i8]* @str.16, i64 0, i64 0), %134 ]
%139 = phi i32 [ %121, %136 ], [ %135, %134 ]
%140 = call i32 @puts(i8* dereferenceable(1) %138)
%141 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([34 x i8], [34 x i8]* @.str.8, i64 0, i64 0), i32 %139)
%142 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([37 x i8], [37 x i8]* @.str.9, i64 0, i64 0))
%143 = call i32 (i8*, ...) @scanf(i8* getelementptr inbounds ([3 x i8], [3 x i8]* @.str.5, i64 0, i64 0), i32* %5)
store i32 1, i32* %1
br label %144
144: ; preds = %137, %166
%145 = phi i32 [ 1, %137 ], [ %169, %166 ]
store i32 1, i32* %2
%146 = sext i32 %145 to i64
%147 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 %146, i64 1
%148 = load i8, i8* %147
%149 = sext i8 %148 to i32
%150 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 %149)
%151 = load i32, i32* %2
%152 = add nsw i32 %151, 1
store i32 %152, i32* %2
%153 = icmp slt i32 %151, 5
br i1 %153, label %154, label %166
154: ; preds = %144, %154
%155 = phi i32 [ %164, %154 ], [ %152, %144 ]
%156 = load i32, i32* %1
%157 = sext i32 %156 to i64
%158 = sext i32 %155 to i64
%159 = getelementptr inbounds [6 x [6 x i8]], [6 x [6 x i8]]* %4, i64 0, i64 %157, i64 %158
%160 = load i8, i8* %159
%161 = sext i8 %160 to i32
%162 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([5 x i8], [5 x i8]* @.str, i64 0, i64 0), i32 %161)
%163 = load i32, i32* %2
%164 = add nsw i32 %163, 1
store i32 %164, i32* %2
%165 = icmp slt i32 %163, 5
br i1 %165, label %154, label %166
166: ; preds = %154, %144
%167 = call i32 @putchar(i32 10)
%168 = load i32, i32* %1
%169 = add nsw i32 %168, 1
store i32 %169, i32* %1
%170 = icmp slt i32 %168, 5
br i1 %170, label %144, label %117
171: ; preds = %117, %97
%172 = phi i32 [ %82, %97 ], [ %139, %117 ]
%173 = call i32 (i8*, ...) @printf(i8* dereferenceable(1) getelementptr inbounds ([38 x i8], [38 x i8]* @.str.13, i64 0, i64 0), i8* %8, i32 %172)
ret i32 0
}