#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 flash();
int game_scene_show_all_mines(int **, char **, int, int /*<<< orphan*/);
void game_scene_open(int **ans, char **face, int size, int *running, int i,
                     int j) {
  if (ans[i][j] == -1) {
    while (game_scene_show_all_mines(ans, face, size, 0), 0) {
    }
    while (flash(), 0) {
    }
    while (*running = 0, 0) {
    }
  } else {
    if (ans[i][j] == 0) {
      while (face[i][j] = ' ', 0) {
      }
      while (i + 1 < size && (face[i + 1][j] == '`' || face[i + 1][j] == 'F') &&
             (game_scene_open(ans, face, size, running, i + 1, j), 0)) {
      }
      while (i - 1 >= 0 && (face[i - 1][j] == '`' || face[i - 1][j] == 'F') &&
             (game_scene_open(ans, face, size, running, i - 1, j), 0)) {
      }
      while (j + 1 < size && (face[i][j + 1] == '`' || face[i][j + 1] == 'F') &&
             (game_scene_open(ans, face, size, running, i, j + 1), 0)) {
      }
      while (j - 1 >= 0 && (face[i][j - 1] == '`' || face[i][j - 1] == 'F') &&
             (game_scene_open(ans, face, size, running, i, j - 1), 0)) {
      }
      while (i + 1 < size && j + 1 < size &&
             (face[i + 1][j + 1] == '`' || face[i + 1][j + 1] == 'F') &&
             (game_scene_open(ans, face, size, running, i + 1, j + 1), 0)) {
      }
      while (i + 1 < size && j - 1 >= 0 &&
             (face[i + 1][j - 1] == '`' || face[i + 1][j - 1] == 'F') &&
             (game_scene_open(ans, face, size, running, i + 1, j - 1), 0)) {
      }
      while (i - 1 >= 0 && j + 1 < size &&
             (face[i - 1][j + 1] == '`' || face[i - 1][j + 1] == 'F') &&
             (game_scene_open(ans, face, size, running, i - 1, j + 1), 0)) {
      }
      while (i - 1 >= 0 && j - 1 >= 0 &&
             (face[j - 1][j - 1] == '`' || face[i - 1][j - 1] == 'F') &&
             (game_scene_open(ans, face, size, running, i - 1, j - 1), 0)) {
      }
    } else {
      while (face[i][j] = ans[i][j] + '0', 0) {
      }
    }
  }
}


x86 assembly (clang, -O0):
<game_scene_open>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %rcx,-0x20(%rbp)
mov    %r8d,-0x24(%rbp)
mov    %r9d,-0x28(%rbp)
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0xffffffff,(%rax,%rcx,4)
jne    11dc <game_scene_open+0xac>
jmp    116e <game_scene_open+0x3e>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
xor    %ecx,%ecx
call   1050 <game_scene_show_all_mines@plt>
xor    %eax,%eax
test   $0x1,%al
jne    118f <game_scene_open+0x5f>
jmp    1194 <game_scene_open+0x64>
jmp    116e <game_scene_open+0x3e>
jmp    1199 <game_scene_open+0x69>
mov    $0x0,%al
call   1040 <flash@plt>
xor    %eax,%eax
test   $0x1,%al
jne    11af <game_scene_open+0x7f>
jmp    11b4 <game_scene_open+0x84>
jmp    1199 <game_scene_open+0x69>
jmp    11b9 <game_scene_open+0x89>
mov    -0x20(%rbp),%rax
movl   $0x0,(%rax)
xor    %eax,%eax
test   $0x1,%al
jne    11d2 <game_scene_open+0xa2>
jmp    11d7 <game_scene_open+0xa7>
jmp    11b9 <game_scene_open+0x89>
jmp    17de <game_scene_open+0x6ae>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1790 <game_scene_open+0x660>
jmp    11fb <game_scene_open+0xcb>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movb   $0x20,(%rax,%rcx,1)
xor    %eax,%eax
test   $0x1,%al
jne    121e <game_scene_open+0xee>
jmp    1223 <game_scene_open+0xf3>
jmp    11fb <game_scene_open+0xcb>
jmp    1228 <game_scene_open+0xf8>
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
xor    %eax,%eax
cmp    -0x14(%rbp),%ecx
mov    %al,-0x29(%rbp)
jge    12aa <game_scene_open+0x17a>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x60,%eax
je     1285 <game_scene_open+0x155>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x46,%ecx
mov    %al,-0x29(%rbp)
jne    12aa <game_scene_open+0x17a>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
mov    -0x20(%rbp),%rcx
mov    -0x24(%rbp),%r8d
add    $0x1,%r8d
mov    -0x28(%rbp),%r9d
call   1030 <game_scene_open@plt>
xor    %eax,%eax
mov    %al,-0x29(%rbp)
mov    -0x29(%rbp),%al
test   $0x1,%al
jne    12ba <game_scene_open+0x18a>
jmp    12bf <game_scene_open+0x18f>
jmp    1228 <game_scene_open+0xf8>
jmp    12c4 <game_scene_open+0x194>
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x2a(%rbp)
jl     1346 <game_scene_open+0x216>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x60,%eax
je     1321 <game_scene_open+0x1f1>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x46,%ecx
mov    %al,-0x2a(%rbp)
jne    1346 <game_scene_open+0x216>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
mov    -0x20(%rbp),%rcx
mov    -0x24(%rbp),%r8d
sub    $0x1,%r8d
mov    -0x28(%rbp),%r9d
call   1030 <game_scene_open@plt>
xor    %eax,%eax
mov    %al,-0x2a(%rbp)
mov    -0x2a(%rbp),%al
test   $0x1,%al
jne    1356 <game_scene_open+0x226>
jmp    135b <game_scene_open+0x22b>
jmp    12c4 <game_scene_open+0x194>
jmp    1360 <game_scene_open+0x230>
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
xor    %eax,%eax
cmp    -0x14(%rbp),%ecx
mov    %al,-0x2b(%rbp)
jge    13e2 <game_scene_open+0x2b2>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x60,%eax
je     13bd <game_scene_open+0x28d>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x46,%ecx
mov    %al,-0x2b(%rbp)
jne    13e2 <game_scene_open+0x2b2>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
mov    -0x20(%rbp),%rcx
mov    -0x24(%rbp),%r8d
mov    -0x28(%rbp),%r9d
add    $0x1,%r9d
call   1030 <game_scene_open@plt>
xor    %eax,%eax
mov    %al,-0x2b(%rbp)
mov    -0x2b(%rbp),%al
test   $0x1,%al
jne    13f2 <game_scene_open+0x2c2>
jmp    13f7 <game_scene_open+0x2c7>
jmp    1360 <game_scene_open+0x230>
jmp    13fc <game_scene_open+0x2cc>
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x2c(%rbp)
jl     147e <game_scene_open+0x34e>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x60,%eax
je     1459 <game_scene_open+0x329>
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x46,%ecx
mov    %al,-0x2c(%rbp)
jne    147e <game_scene_open+0x34e>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
mov    -0x20(%rbp),%rcx
mov    -0x24(%rbp),%r8d
mov    -0x28(%rbp),%r9d
sub    $0x1,%r9d
call   1030 <game_scene_open@plt>
xor    %eax,%eax
mov    %al,-0x2c(%rbp)
mov    -0x2c(%rbp),%al
test   $0x1,%al
jne    148e <game_scene_open+0x35e>
jmp    1493 <game_scene_open+0x363>
jmp    13fc <game_scene_open+0x2cc>
jmp    1498 <game_scene_open+0x368>
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
xor    %eax,%eax
cmp    -0x14(%rbp),%ecx
mov    %al,-0x2d(%rbp)
jge    153c <game_scene_open+0x40c>
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
xor    %eax,%eax
cmp    -0x14(%rbp),%ecx
mov    %al,-0x2d(%rbp)
jge    153c <game_scene_open+0x40c>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x60,%eax
je     1513 <game_scene_open+0x3e3>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x46,%ecx
mov    %al,-0x2d(%rbp)
jne    153c <game_scene_open+0x40c>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
mov    -0x20(%rbp),%rcx
mov    -0x24(%rbp),%r8d
add    $0x1,%r8d
mov    -0x28(%rbp),%r9d
add    $0x1,%r9d
call   1030 <game_scene_open@plt>
xor    %eax,%eax
mov    %al,-0x2d(%rbp)
mov    -0x2d(%rbp),%al
test   $0x1,%al
jne    154c <game_scene_open+0x41c>
jmp    1551 <game_scene_open+0x421>
jmp    1498 <game_scene_open+0x368>
jmp    1556 <game_scene_open+0x426>
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
xor    %eax,%eax
cmp    -0x14(%rbp),%ecx
mov    %al,-0x2e(%rbp)
jge    15fa <game_scene_open+0x4ca>
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x2e(%rbp)
jl     15fa <game_scene_open+0x4ca>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x60,%eax
je     15d1 <game_scene_open+0x4a1>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x46,%ecx
mov    %al,-0x2e(%rbp)
jne    15fa <game_scene_open+0x4ca>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
mov    -0x20(%rbp),%rcx
mov    -0x24(%rbp),%r8d
add    $0x1,%r8d
mov    -0x28(%rbp),%r9d
sub    $0x1,%r9d
call   1030 <game_scene_open@plt>
xor    %eax,%eax
mov    %al,-0x2e(%rbp)
mov    -0x2e(%rbp),%al
test   $0x1,%al
jne    160a <game_scene_open+0x4da>
jmp    160f <game_scene_open+0x4df>
jmp    1556 <game_scene_open+0x426>
jmp    1614 <game_scene_open+0x4e4>
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x2f(%rbp)
jl     16b8 <game_scene_open+0x588>
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
xor    %eax,%eax
cmp    -0x14(%rbp),%ecx
mov    %al,-0x2f(%rbp)
jge    16b8 <game_scene_open+0x588>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x60,%eax
je     168f <game_scene_open+0x55f>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x46,%ecx
mov    %al,-0x2f(%rbp)
jne    16b8 <game_scene_open+0x588>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
mov    -0x20(%rbp),%rcx
mov    -0x24(%rbp),%r8d
sub    $0x1,%r8d
mov    -0x28(%rbp),%r9d
add    $0x1,%r9d
call   1030 <game_scene_open@plt>
xor    %eax,%eax
mov    %al,-0x2f(%rbp)
mov    -0x2f(%rbp),%al
test   $0x1,%al
jne    16c8 <game_scene_open+0x598>
jmp    16cd <game_scene_open+0x59d>
jmp    1614 <game_scene_open+0x4e4>
jmp    16d2 <game_scene_open+0x5a2>
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x30(%rbp)
jl     1776 <game_scene_open+0x646>
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
xor    %eax,%eax
cmp    $0x0,%ecx
mov    %al,-0x30(%rbp)
jl     1776 <game_scene_open+0x646>
mov    -0x10(%rbp),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x60,%eax
je     174d <game_scene_open+0x61d>
mov    -0x10(%rbp),%rax
mov    -0x24(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x28(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%ecx
xor    %eax,%eax
cmp    $0x46,%ecx
mov    %al,-0x30(%rbp)
jne    1776 <game_scene_open+0x646>
mov    -0x8(%rbp),%rdi
mov    -0x10(%rbp),%rsi
mov    -0x14(%rbp),%edx
mov    -0x20(%rbp),%rcx
mov    -0x24(%rbp),%r8d
sub    $0x1,%r8d
mov    -0x28(%rbp),%r9d
sub    $0x1,%r9d
call   1030 <game_scene_open@plt>
xor    %eax,%eax
mov    %al,-0x30(%rbp)
mov    -0x30(%rbp),%al
test   $0x1,%al
jne    1786 <game_scene_open+0x656>
jmp    178b <game_scene_open+0x65b>
jmp    16d2 <game_scene_open+0x5a2>
jmp    17d9 <game_scene_open+0x6a9>
jmp    1795 <game_scene_open+0x665>
mov    -0x8(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
add    $0x30,%eax
mov    %al,%dl
mov    -0x10(%rbp),%rax
movslq -0x24(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x28(%rbp),%rcx
mov    %dl,(%rax,%rcx,1)
xor    %eax,%eax
test   $0x1,%al
jne    17cf <game_scene_open+0x69f>
jmp    17d4 <game_scene_open+0x6a4>
jmp    1795 <game_scene_open+0x665>
jmp    17d9 <game_scene_open+0x6a9>
jmp    17de <game_scene_open+0x6ae>
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<game_scene_open>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x78,%rsp
mov    %rcx,0x28(%rsp)
movslq %r8d,%rax
mov    %edx,0xc(%rsp)
movslq %edx,%r14
movslq %r9d,%rbp
mov    %ebp,%ecx
mov    %rcx,0x38(%rsp)
lea    0x0(,%rbp,4),%rcx
mov    %rcx,0x70(%rsp)
lea    -0x1(%rbp),%ecx
mov    %rcx,0x50(%rsp)
lea    -0x8(%rsi,%rbp,8),%rcx
mov    %rcx,0x60(%rsp)
mov    %rsi,0x10(%rsp)
lea    (%rsi,%rax,8),%rcx
mov    %rcx,0x18(%rsp)
mov    %eax,%ecx
mov    %rcx,0x30(%rsp)
mov    %rdi,0x20(%rsp)
lea    (%rdi,%rax,8),%rcx
mov    %rcx,0x68(%rsp)
mov    %rax,0x58(%rsp)
add    $0xffffffff,%eax
mov    %rax,0x48(%rsp)
xor    %r12d,%r12d
jmp    11b4 <game_scene_open+0x84>
nopl   0x0(%rax,%rax,1)
add    $0xffffffffffffffff,%r12
mov    0x68(%rsp),%rax
mov    (%rax,%r12,8),%rax
add    0x70(%rsp),%rax
mov    (%rax,%r12,4),%eax
test   %eax,%eax
jne    147f <game_scene_open+0x34f>
mov    0x58(%rsp),%rcx
lea    (%rcx,%r12,1),%rax
mov    %rax,0x40(%rsp)
mov    0x18(%rsp),%rax
mov    (%rax,%r12,8),%rax
add    %rbp,%rax
movb   $0x20,(%r12,%rax,1)
lea    (%rcx,%r12,1),%r15
add    $0x1,%r15
cmp    %r14,%r15
jge    1242 <game_scene_open+0x112>
mov    0x18(%rsp),%rax
mov    0x8(%rax,%r12,8),%rax
add    %rbp,%rax
movzbl (%r12,%rax,1),%eax
cmp    $0x60,%al
je     1214 <game_scene_open+0xe4>
cmp    $0x46,%al
jne    1242 <game_scene_open+0x112>
mov    0x30(%rsp),%rax
lea    (%rax,%r12,1),%r8d
add    $0x1,%r8d
mov    0x38(%rsp),%rax
lea    (%rax,%r12,1),%r9d
mov    0x20(%rsp),%rdi
mov    0x10(%rsp),%rsi
mov    0xc(%rsp),%edx
mov    0x28(%rsp),%rcx
call   1030 <game_scene_open@plt>
cmpq   $0x0,0x40(%rsp)
jle    129b <game_scene_open+0x16b>
mov    0x58(%rsp),%rax
add    %r12,%rax
add    $0xffffffffffffffff,%rax
mov    %eax,%eax
mov    0x10(%rsp),%rcx
mov    (%rcx,%rax,8),%rax
add    %rbp,%rax
movzbl (%r12,%rax,1),%eax
cmp    $0x60,%al
je     1271 <game_scene_open+0x141>
cmp    $0x46,%al
jne    129b <game_scene_open+0x16b>
mov    0x48(%rsp),%rax
lea    (%rax,%r12,1),%r8d
mov    0x38(%rsp),%rax
lea    (%rax,%r12,1),%r9d
mov    0x20(%rsp),%rdi
mov    0x10(%rsp),%rsi
mov    0xc(%rsp),%edx
mov    0x28(%rsp),%rcx
call   1030 <game_scene_open@plt>
lea    (%r12,%rbp,1),%rbx
lea    (%r12,%rbp,1),%r13
add    $0x1,%r13
cmp    %r14,%r13
jge    12f4 <game_scene_open+0x1c4>
mov    0x18(%rsp),%rax
mov    (%rax,%r12,8),%rax
add    %rbp,%rax
movzbl 0x1(%r12,%rax,1),%eax
cmp    $0x60,%al
je     12c6 <game_scene_open+0x196>
cmp    $0x46,%al
jne    12f4 <game_scene_open+0x1c4>
mov    0x30(%rsp),%rax
lea    (%rax,%r12,1),%r8d
mov    0x38(%rsp),%rax
lea    (%rax,%r12,1),%r9d
add    $0x1,%r9d
mov    0x20(%rsp),%rdi
mov    0x10(%rsp),%rsi
mov    0xc(%rsp),%edx
mov    0x28(%rsp),%rcx
call   1030 <game_scene_open@plt>
test   %rbx,%rbx
jle    1342 <game_scene_open+0x212>
lea    (%r12,%rbp,1),%rax
add    $0xffffffffffffffff,%rax
mov    0x18(%rsp),%rcx
mov    (%rcx,%r12,8),%rcx
mov    %eax,%eax
movzbl (%rcx,%rax,1),%eax
cmp    $0x60,%al
je     1318 <game_scene_open+0x1e8>
cmp    $0x46,%al
jne    1342 <game_scene_open+0x212>
mov    0x50(%rsp),%rax
lea    (%rax,%r12,1),%r9d
mov    0x30(%rsp),%rax
lea    (%rax,%r12,1),%r8d
mov    0x20(%rsp),%rdi
mov    0x10(%rsp),%rsi
mov    0xc(%rsp),%edx
mov    0x28(%rsp),%rcx
call   1030 <game_scene_open@plt>
cmp    %r14,%r15
jge    1396 <game_scene_open+0x266>
cmp    %r14,%r13
jge    1396 <game_scene_open+0x266>
mov    0x18(%rsp),%rax
mov    0x8(%rax,%r12,8),%rax
add    %rbp,%rax
movzbl 0x1(%r12,%rax,1),%eax
cmp    $0x60,%al
je     1367 <game_scene_open+0x237>
cmp    $0x46,%al
jne    1396 <game_scene_open+0x266>
mov    0x30(%rsp),%rax
lea    (%rax,%r12,1),%r8d
add    $0x1,%r8d
mov    0x38(%rsp),%rax
lea    0x1(%rax,%r12,1),%r9d
mov    0x20(%rsp),%rdi
mov    0x10(%rsp),%rsi
mov    0xc(%rsp),%edx
mov    0x28(%rsp),%rcx
call   1030 <game_scene_open@plt>
cmp    %r14,%r15
jge    13e9 <game_scene_open+0x2b9>
test   %rbx,%rbx
jle    13e9 <game_scene_open+0x2b9>
mov    0x18(%rsp),%rax
mov    0x8(%rax,%r12,8),%rax
add    %rbp,%rax
movzbl -0x1(%r12,%rax,1),%eax
cmp    $0x60,%al
je     13bb <game_scene_open+0x28b>
cmp    $0x46,%al
jne    13e9 <game_scene_open+0x2b9>
mov    0x30(%rsp),%rax
lea    (%rax,%r12,1),%r8d
add    $0x1,%r8d
mov    0x50(%rsp),%rax
lea    (%rax,%r12,1),%r9d
mov    0x20(%rsp),%rdi
mov    0x10(%rsp),%rsi
mov    0xc(%rsp),%edx
mov    0x28(%rsp),%rcx
call   1030 <game_scene_open@plt>
cmpq   $0x0,0x40(%rsp)
jle    143f <game_scene_open+0x30f>
cmp    %r14,%r13
jge    143f <game_scene_open+0x30f>
mov    0x18(%rsp),%rax
mov    -0x8(%rax,%r12,8),%rax
add    %rbp,%rax
movzbl 0x1(%r12,%rax,1),%eax
cmp    $0x60,%al
je     1411 <game_scene_open+0x2e1>
cmp    $0x46,%al
jne    143f <game_scene_open+0x30f>
mov    0x48(%rsp),%rax
lea    (%rax,%r12,1),%r8d
mov    0x38(%rsp),%rax
lea    (%rax,%r12,1),%r9d
add    $0x1,%r9d
mov    0x20(%rsp),%rdi
mov    0x10(%rsp),%rsi
mov    0xc(%rsp),%edx
mov    0x28(%rsp),%rcx
call   1030 <game_scene_open@plt>
cmpq   $0x0,0x40(%rsp)
jle    14bc <game_scene_open+0x38c>
test   %rbx,%rbx
jle    14bc <game_scene_open+0x38c>
mov    0x60(%rsp),%rax
mov    (%rax,%r12,8),%rax
add    %rbp,%rax
cmpb   $0x60,-0x1(%r12,%rax,1)
je     11b0 <game_scene_open+0x80>
mov    0x18(%rsp),%rax
mov    -0x8(%rax,%r12,8),%rax
add    %rbp,%rax
cmpb   $0x46,-0x1(%r12,%rax,1)
je     11b0 <game_scene_open+0x80>
jmp    14bc <game_scene_open+0x38c>
cmp    $0xffffffff,%eax
jne    14ad <game_scene_open+0x37d>
mov    0x20(%rsp),%rdi
mov    0x10(%rsp),%rsi
mov    0xc(%rsp),%edx
xor    %ecx,%ecx
call   1050 <game_scene_show_all_mines@plt>
xor    %eax,%eax
call   1040 <flash@plt>
mov    0x28(%rsp),%rax
movl   $0x0,(%rax)
jmp    14bc <game_scene_open+0x38c>
add    $0x30,%al
mov    0x18(%rsp),%rcx
add    (%rcx,%r12,8),%rbp
mov    %al,(%r12,%rbp,1)
add    $0x78,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

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

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