#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 */
size_t TransStste(int, int, int);
int WalkTry(int misSize, int startX, int startY, int endX, int endY, char *mis,
            int **signs) {
  if (mis[TransStste(endX, endY, misSize)] == '#') {
    return -1;
  }
  if (startX == endX && startY == endY) {
    return 1;
  }
  int saver = 0;
  if (mis[TransStste(startX, startY, misSize)] == '#') {
    return -1;
  }
  if (startY > 0 && signs[startX][startY - 1] == 0) {
    signs[startX][startY - 1] = 1;
    if ((saver =
             WalkTry(misSize, startX, startY - 1, endX, endY, mis, signs)) == 1)
      return 1;
    else if (saver != -1)
      signs[startX][startY - 1] = 0;
  }
  if (startY < misSize - 1 && signs[startX][startY + 1] == 0) {
    signs[startX][startY + 1] = 1;
    if ((saver =
             WalkTry(misSize, startX, startY + 1, endX, endY, mis, signs)) == 1)
      return 1;
    else if (saver != -1)
      signs[startX][startY + 1] = 0;
  }
  if (startX > 0 && signs[startX - 1][startY] == 0) {
    signs[startX - 1][startY] = 1;
    if ((saver =
             WalkTry(misSize, startX - 1, startY, endX, endY, mis, signs)) == 1)
      return 1;
    else if (saver != -1)
      signs[startX - 1][startY] = 0;
  }
  if (startX < misSize - 1 && signs[startX + 1][startY] == 0) {
    signs[startX + 1][startY] = 1;
    if ((saver =
             WalkTry(misSize, startX + 1, startY, endX, endY, mis, signs)) == 1)
      return 1;
    else if (saver != -1)
      signs[startX + 1][startY] = 0;
  }
  return -1;
}


x86 assembly (clang, -O0):
<WalkTry>:
push   %rbp
mov    %rsp,%rbp
sub    $0x40,%rsp
mov    0x10(%rbp),%rax
mov    %edi,-0x8(%rbp)
mov    %esi,-0xc(%rbp)
mov    %edx,-0x10(%rbp)
mov    %ecx,-0x14(%rbp)
mov    %r8d,-0x18(%rbp)
mov    %r9,-0x20(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x30(%rbp)
mov    -0x14(%rbp),%edi
mov    -0x18(%rbp),%esi
mov    -0x8(%rbp),%edx
call   1040 <TransStste@plt>
mov    %rax,%rcx
mov    -0x30(%rbp),%rax
movsbl (%rax,%rcx,1),%eax
cmp    $0x23,%eax
jne    1176 <WalkTry+0x56>
movl   $0xffffffff,-0x4(%rbp)
jmp    14b0 <WalkTry+0x390>
mov    -0xc(%rbp),%eax
cmp    -0x14(%rbp),%eax
jne    119a <WalkTry+0x7a>
mov    -0x10(%rbp),%eax
cmp    -0x18(%rbp),%eax
jne    119a <WalkTry+0x7a>
movl   $0x1,-0x4(%rbp)
jmp    14b0 <WalkTry+0x390>
movl   $0x0,-0x24(%rbp)
mov    -0x20(%rbp),%rax
mov    %rax,-0x38(%rbp)
mov    -0xc(%rbp),%edi
mov    -0x10(%rbp),%esi
mov    -0x8(%rbp),%edx
call   1040 <TransStste@plt>
mov    %rax,%rcx
mov    -0x38(%rbp),%rax
movsbl (%rax,%rcx,1),%eax
cmp    $0x23,%eax
jne    11d7 <WalkTry+0xb7>
movl   $0xffffffff,-0x4(%rbp)
jmp    14b0 <WalkTry+0x390>
cmpl   $0x0,-0x10(%rbp)
jle    1288 <WalkTry+0x168>
mov    0x10(%rbp),%rax
movslq -0xc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1288 <WalkTry+0x168>
mov    0x10(%rbp),%rax
movslq -0xc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x1,(%rax,%rcx,4)
mov    -0x8(%rbp),%edi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
sub    $0x1,%edx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%r8d
mov    -0x20(%rbp),%r9
mov    0x10(%rbp),%rax
mov    %rax,(%rsp)
call   1030 <WalkTry@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x1,%eax
jne    1258 <WalkTry+0x138>
movl   $0x1,-0x4(%rbp)
jmp    14b0 <WalkTry+0x390>
cmpl   $0xffffffff,-0x24(%rbp)
je     127e <WalkTry+0x15e>
mov    0x10(%rbp),%rax
movslq -0xc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x10(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
jmp    1283 <WalkTry+0x163>
jmp    1288 <WalkTry+0x168>
mov    -0x10(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    1340 <WalkTry+0x220>
mov    0x10(%rbp),%rax
movslq -0xc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1340 <WalkTry+0x220>
mov    0x10(%rbp),%rax
movslq -0xc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x1,(%rax,%rcx,4)
mov    -0x8(%rbp),%edi
mov    -0xc(%rbp),%esi
mov    -0x10(%rbp),%edx
add    $0x1,%edx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%r8d
mov    -0x20(%rbp),%r9
mov    0x10(%rbp),%rax
mov    %rax,(%rsp)
call   1030 <WalkTry@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x1,%eax
jne    1310 <WalkTry+0x1f0>
movl   $0x1,-0x4(%rbp)
jmp    14b0 <WalkTry+0x390>
cmpl   $0xffffffff,-0x24(%rbp)
je     1336 <WalkTry+0x216>
mov    0x10(%rbp),%rax
movslq -0xc(%rbp),%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x10(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movl   $0x0,(%rax,%rcx,4)
jmp    133b <WalkTry+0x21b>
jmp    1340 <WalkTry+0x220>
cmpl   $0x0,-0xc(%rbp)
jle    13f1 <WalkTry+0x2d1>
mov    0x10(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x10(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    13f1 <WalkTry+0x2d1>
mov    0x10(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x10(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
mov    -0x8(%rbp),%edi
mov    -0xc(%rbp),%esi
sub    $0x1,%esi
mov    -0x10(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%r8d
mov    -0x20(%rbp),%r9
mov    0x10(%rbp),%rax
mov    %rax,(%rsp)
call   1030 <WalkTry@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x1,%eax
jne    13c1 <WalkTry+0x2a1>
movl   $0x1,-0x4(%rbp)
jmp    14b0 <WalkTry+0x390>
cmpl   $0xffffffff,-0x24(%rbp)
je     13e7 <WalkTry+0x2c7>
mov    0x10(%rbp),%rax
mov    -0xc(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x10(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
jmp    13ec <WalkTry+0x2cc>
jmp    13f1 <WalkTry+0x2d1>
mov    -0xc(%rbp),%eax
mov    -0x8(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jge    14a9 <WalkTry+0x389>
mov    0x10(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x10(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    14a9 <WalkTry+0x389>
mov    0x10(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x10(%rbp),%rcx
movl   $0x1,(%rax,%rcx,4)
mov    -0x8(%rbp),%edi
mov    -0xc(%rbp),%esi
add    $0x1,%esi
mov    -0x10(%rbp),%edx
mov    -0x14(%rbp),%ecx
mov    -0x18(%rbp),%r8d
mov    -0x20(%rbp),%r9
mov    0x10(%rbp),%rax
mov    %rax,(%rsp)
call   1030 <WalkTry@plt>
mov    %eax,-0x24(%rbp)
cmp    $0x1,%eax
jne    1479 <WalkTry+0x359>
movl   $0x1,-0x4(%rbp)
jmp    14b0 <WalkTry+0x390>
cmpl   $0xffffffff,-0x24(%rbp)
je     149f <WalkTry+0x37f>
mov    0x10(%rbp),%rax
mov    -0xc(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
movslq -0x10(%rbp),%rcx
movl   $0x0,(%rax,%rcx,4)
jmp    14a4 <WalkTry+0x384>
jmp    14a9 <WalkTry+0x389>
movl   $0xffffffff,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x40,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<WalkTry>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x28,%rsp
mov    %r9,%r14
mov    %r8d,%r12d
mov    %ecx,%ebx
mov    %edx,%r15d
mov    %esi,%r13d
mov    %edi,%ebp
mov    %ecx,%edi
mov    %r8d,%esi
mov    %ebp,%edx
call   1040 <TransStste@plt>
cmpb   $0x23,(%r14,%rax,1)
jne    1158 <WalkTry+0x38>
mov    $0xffffffff,%eax
jmp    1167 <WalkTry+0x47>
cmp    %ebx,%r13d
jne    1176 <WalkTry+0x56>
mov    $0x1,%eax
cmp    %r12d,%r15d
jne    1176 <WalkTry+0x56>
add    $0x28,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
mov    %r13d,%edi
mov    %r15d,%esi
mov    %ebp,%edx
call   1040 <TransStste@plt>
cmpb   $0x23,(%r14,%rax,1)
je     1151 <WalkTry+0x31>
mov    0x60(%rsp),%rcx
movslq %r13d,%r8
test   %r15d,%r15d
jle    11a9 <WalkTry+0x89>
mov    (%rcx,%r8,8),%rax
lea    -0x1(%r15),%edx
cmpl   $0x0,(%rax,%rdx,4)
je     124b <WalkTry+0x12b>
lea    -0x1(%rbp),%edi
movslq %r15d,%r9
cmp    %r15d,%edi
jle    11c4 <WalkTry+0xa4>
mov    (%rcx,%r8,8),%rax
cmpl   $0x0,0x4(%rax,%r9,4)
je     130f <WalkTry+0x1ef>
test   %r13d,%r13d
jle    11dc <WalkTry+0xbc>
lea    -0x1(%r13),%esi
mov    (%rcx,%rsi,8),%rax
cmpl   $0x0,(%rax,%r9,4)
je     12a3 <WalkTry+0x183>
cmp    %r13d,%edi
jle    1151 <WalkTry+0x31>
mov    0x8(%rcx,%r8,8),%rax
cmpl   $0x0,(%rax,%r9,4)
jne    1151 <WalkTry+0x31>
add    $0x1,%r8
movl   $0x1,(%rax,%r9,4)
mov    %rcx,(%rsp)
mov    %ebp,%edi
mov    %r8,%rbp
mov    %r9,%r13
mov    %ebp,%esi
mov    %r15d,%edx
mov    %rcx,%r15
mov    %ebx,%ecx
mov    %r12d,%r8d
mov    %r14,%r9
call   1030 <WalkTry@plt>
cmp    $0xffffffff,%eax
je     1151 <WalkTry+0x31>
cmp    $0x1,%eax
je     1167 <WalkTry+0x47>
mov    %r13,%rdx
mov    %r15,%rcx
mov    (%r15,%rbp,8),%rax
movl   $0x0,(%rax,%r13,4)
jmp    1151 <WalkTry+0x31>
movl   $0x1,(%rax,%rdx,4)
mov    %rcx,(%rsp)
mov    %ebp,%edi
mov    %r8,0x18(%rsp)
mov    %r13d,%esi
mov    %ebx,%ecx
mov    %rdx,0x10(%rsp)
mov    %r12d,%r8d
mov    %r14,%r9
call   1030 <WalkTry@plt>
mov    0x10(%rsp),%rdx
mov    0x18(%rsp),%r8
mov    0x60(%rsp),%rcx
cmp    $0xffffffff,%eax
je     11a9 <WalkTry+0x89>
cmp    $0x1,%eax
je     1167 <WalkTry+0x47>
mov    (%rcx,%r8,8),%rax
movl   $0x0,(%rax,%rdx,4)
jmp    11a9 <WalkTry+0x89>
movl   $0x1,(%rax,%r9,4)
mov    %rcx,(%rsp)
mov    %edi,0xc(%rsp)
mov    %ebp,%edi
mov    %r8,0x18(%rsp)
mov    %r9,0x10(%rsp)
mov    %rsi,0x20(%rsp)
mov    %r15d,%edx
mov    %ebx,%ecx
mov    %r12d,%r8d
mov    %r14,%r9
call   1030 <WalkTry@plt>
mov    0x20(%rsp),%rsi
mov    0xc(%rsp),%edi
mov    0x10(%rsp),%r9
mov    0x18(%rsp),%r8
mov    0x60(%rsp),%rcx
cmp    $0xffffffff,%eax
je     11dc <WalkTry+0xbc>
cmp    $0x1,%eax
je     1167 <WalkTry+0x47>
mov    (%rcx,%rsi,8),%rax
movl   $0x0,(%rax,%r9,4)
jmp    11dc <WalkTry+0xbc>
lea    0x1(%r9),%rdx
movl   $0x1,(%rax,%rdx,4)
mov    %rcx,(%rsp)
mov    %edi,0xc(%rsp)
mov    %ebp,%edi
mov    %r8,0x18(%rsp)
mov    %r9,0x10(%rsp)
mov    %r13d,%esi
mov    %rdx,0x20(%rsp)
mov    %ebx,%ecx
mov    %r12d,%r8d
mov    %r14,%r9
call   1030 <WalkTry@plt>
mov    0xc(%rsp),%edi
mov    0x10(%rsp),%r9
mov    0x18(%rsp),%r8
mov    0x60(%rsp),%rcx
cmp    $0xffffffff,%eax
je     11c4 <WalkTry+0xa4>
cmp    $0x1,%eax
je     1167 <WalkTry+0x47>
mov    (%rcx,%r8,8),%rax
mov    0x20(%rsp),%rdx
movl   $0x0,(%rax,%rdx,4)
jmp    11c4 <WalkTry+0xa4>

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

LLVM IR (-O2):
define i32 @WalkTry(i32 %0, i32 %1, i32 %2, i32 %3, i32 %4, i8* %5, i32** %6) {
%8 = tail call i64 @TransStste(i32 %3, i32 %4, i32 %0)
%9 = getelementptr inbounds i8, i8* %5, i64 %8
%10 = load i8, i8* %9
%11 = icmp eq i8 %10, 35
br i1 %11, label %87, label %12
12: ; preds = %7
%13 = icmp eq i32 %1, %3
%14 = icmp eq i32 %2, %4
%15 = and i1 %13, %14
br i1 %15, label %87, label %16
16: ; preds = %12
%17 = tail call i64 @TransStste(i32 %1, i32 %2, i32 %0)
%18 = getelementptr inbounds i8, i8* %5, i64 %17
%19 = load i8, i8* %18
%20 = icmp eq i8 %19, 35
br i1 %20, label %87, label %21
21: ; preds = %16
%22 = icmp sgt i32 %2, 0
br i1 %22, label %23, label %37
23: ; preds = %21
%24 = sext i32 %1 to i64
%25 = getelementptr inbounds i32*, i32** %6, i64 %24
%26 = load i32*, i32** %25
%27 = add nsw i32 %2, -1
%28 = zext i32 %27 to i64
%29 = getelementptr inbounds i32, i32* %26, i64 %28
%30 = load i32, i32* %29
%31 = icmp eq i32 %30, 0
br i1 %31, label %32, label %37
32: ; preds = %23
store i32 1, i32* %29
%33 = tail call i32 @WalkTry(i32 %0, i32 %1, i32 %27, i32 %3, i32 %4, i8* %5, i32** %6)
switch i32 %33, label %34 [
i32 1, label %87
i32 -1, label %37
]
34: ; preds = %32
%35 = load i32*, i32** %25
%36 = getelementptr inbounds i32, i32* %35, i64 %28
store i32 0, i32* %36
br label %37
37: ; preds = %32, %34, %23, %21
%38 = add nsw i32 %0, -1
%39 = icmp sgt i32 %38, %2
br i1 %39, label %40, label %54
40: ; preds = %37
%41 = sext i32 %1 to i64
%42 = getelementptr inbounds i32*, i32** %6, i64 %41
%43 = load i32*, i32** %42
%44 = add nsw i32 %2, 1
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds i32, i32* %43, i64 %45
%47 = load i32, i32* %46
%48 = icmp eq i32 %47, 0
br i1 %48, label %49, label %54
49: ; preds = %40
store i32 1, i32* %46
%50 = tail call i32 @WalkTry(i32 %0, i32 %1, i32 %44, i32 %3, i32 %4, i8* %5, i32** %6)
switch i32 %50, label %51 [
i32 1, label %87
i32 -1, label %54
]
51: ; preds = %49
%52 = load i32*, i32** %42
%53 = getelementptr inbounds i32, i32* %52, i64 %45
store i32 0, i32* %53
br label %54
54: ; preds = %49, %51, %40, %37
%55 = icmp sgt i32 %1, 0
br i1 %55, label %56, label %70
56: ; preds = %54
%57 = add nsw i32 %1, -1
%58 = zext i32 %57 to i64
%59 = getelementptr inbounds i32*, i32** %6, i64 %58
%60 = load i32*, i32** %59
%61 = sext i32 %2 to i64
%62 = getelementptr inbounds i32, i32* %60, i64 %61
%63 = load i32, i32* %62
%64 = icmp eq i32 %63, 0
br i1 %64, label %65, label %70
65: ; preds = %56
store i32 1, i32* %62
%66 = tail call i32 @WalkTry(i32 %0, i32 %57, i32 %2, i32 %3, i32 %4, i8* %5, i32** %6)
switch i32 %66, label %67 [
i32 1, label %87
i32 -1, label %70
]
67: ; preds = %65
%68 = load i32*, i32** %59
%69 = getelementptr inbounds i32, i32* %68, i64 %61
store i32 0, i32* %69
br label %70
70: ; preds = %65, %67, %56, %54
%71 = icmp sgt i32 %38, %1
br i1 %71, label %72, label %86
72: ; preds = %70
%73 = add nsw i32 %1, 1
%74 = sext i32 %73 to i64
%75 = getelementptr inbounds i32*, i32** %6, i64 %74
%76 = load i32*, i32** %75
%77 = sext i32 %2 to i64
%78 = getelementptr inbounds i32, i32* %76, i64 %77
%79 = load i32, i32* %78
%80 = icmp eq i32 %79, 0
br i1 %80, label %81, label %86
81: ; preds = %72
store i32 1, i32* %78
%82 = tail call i32 @WalkTry(i32 %0, i32 %73, i32 %2, i32 %3, i32 %4, i8* %5, i32** %6)
switch i32 %82, label %83 [
i32 1, label %87
i32 -1, label %86
]
83: ; preds = %81
%84 = load i32*, i32** %75
%85 = getelementptr inbounds i32, i32* %84, i64 %77
store i32 0, i32* %85
br label %86
86: ; preds = %81, %83, %72, %70
br label %87
87: ; preds = %86, %16, %32, %49, %65, %81, %12, %7
%88 = phi i32 [ -1, %7 ], [ 1, %12 ], [ -1, %86 ], [ -1, %16 ], [ %33, %32 ], [ %50, %49 ], [ %66, %65 ], [ %82, %81 ]
ret i32 %88
}