int maze_solve_helper_2(char maze[41][81]) {
  int r = 0, c = 0, walls = 0, reloop = 1, old_r = 0, old_c = 0, new_r = 0,
      new_c = 0;
  while (reloop) {
    reloop = 0;
    r = 0;
    c = 0;
    walls = 0;
    while (r < 41) {
      walls = 0;
      c = 0;
      while (c < 81) {
        walls = 0;
        if (maze[r][c] == ' ') {
          if (r != 0)
            if (maze[r - 1][c] == '#' || maze[r - 1][c] == '*')
              walls++;
          if (c != 0)
            if (maze[r][c - 1] == '#' || maze[r][c - 1] == '*')
              walls++;
          if (r != 41)
            if (maze[r + 1][c] == '#' || maze[r + 1][c] == '*')
              walls++;
          if (c != 81)
            if (maze[r][c + 1] == '#' || maze[r][c + 1] == '*')
              walls++;
          if (walls >= 3) {
            maze[r][c] = '*';
            reloop = 1;
          }
        }
        c++;
      }
      r++;
    }
  }
  r = 0;
  c = 0;
  while (r < 41) {
    c = 0;
    while (c < 81) {
      if (maze[r][c] == ' ')
        maze[r][c] = '.';
      if (maze[r][c] == '*')
        maze[r][c] = ' ';
      c++;
    }
    r++;
  }
  r = 0;
  c = 1;
  while (1) {
    if (r == 40 && c == 79)
      goto success;
    if (r != 0) {
      new_r = r - 1;
      new_c = c;
      if (!(new_r == old_r && new_c == old_c) && maze[new_r][new_c] == '.') {
        old_r = r;
        old_c = c;
        r = new_r;
        c = new_c;
        continue;
      }
    }
    new_r = r;
    new_c = c - 1;
    if (!(new_r == old_r && new_c == old_c) && maze[new_r][new_c] == '.') {
      old_r = r;
      old_c = c;
      r = new_r;
      c = new_c;
      continue;
    }
    new_r = r + 1;
    new_c = c;
    if (!(new_r == old_r && new_c == old_c) && maze[new_r][new_c] == '.') {
      old_r = r;
      old_c = c;
      r = new_r;
      c = new_c;
      continue;
    }
    new_r = r;
    new_c = c + 1;
    if (!(new_r == old_r && new_c == old_c) && maze[new_r][new_c] == '.') {
      old_r = r;
      old_c = c;
      r = new_r;
      c = new_c;
      continue;
    }
    return 0;
  }
success:
  return 1;
}


x86 assembly (clang, -O0):
<maze_solve_helper_2>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x10(%rbp)
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
movl   $0x1,-0x20(%rbp)
movl   $0x0,-0x24(%rbp)
movl   $0x0,-0x28(%rbp)
movl   $0x0,-0x2c(%rbp)
movl   $0x0,-0x30(%rbp)
cmpl   $0x0,-0x20(%rbp)
je     1385 <maze_solve_helper_2+0x285>
movl   $0x0,-0x20(%rbp)
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
movl   $0x0,-0x1c(%rbp)
cmpl   $0x29,-0x14(%rbp)
jge    1380 <maze_solve_helper_2+0x280>
movl   $0x0,-0x1c(%rbp)
movl   $0x0,-0x18(%rbp)
cmpl   $0x51,-0x18(%rbp)
jge    1372 <maze_solve_helper_2+0x272>
movl   $0x0,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
jne    1364 <maze_solve_helper_2+0x264>
cmpl   $0x0,-0x14(%rbp)
je     1211 <maze_solve_helper_2+0x111>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x23,%eax
je     1203 <maze_solve_helper_2+0x103>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2a,%eax
jne    120c <maze_solve_helper_2+0x10c>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1211 <maze_solve_helper_2+0x111>
cmpl   $0x0,-0x18(%rbp)
je     1273 <maze_solve_helper_2+0x173>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x23,%eax
je     1265 <maze_solve_helper_2+0x165>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2a,%eax
jne    126e <maze_solve_helper_2+0x16e>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1273 <maze_solve_helper_2+0x173>
cmpl   $0x29,-0x14(%rbp)
je     12d5 <maze_solve_helper_2+0x1d5>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x23,%eax
je     12c7 <maze_solve_helper_2+0x1c7>
mov    -0x10(%rbp),%rax
mov    -0x14(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2a,%eax
jne    12d0 <maze_solve_helper_2+0x1d0>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    12d5 <maze_solve_helper_2+0x1d5>
cmpl   $0x51,-0x18(%rbp)
je     1337 <maze_solve_helper_2+0x237>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x23,%eax
je     1329 <maze_solve_helper_2+0x229>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
mov    -0x18(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2a,%eax
jne    1332 <maze_solve_helper_2+0x232>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1337 <maze_solve_helper_2+0x237>
cmpl   $0x3,-0x1c(%rbp)
jl     135f <maze_solve_helper_2+0x25f>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movb   $0x2a,(%rax,%rcx,1)
movl   $0x1,-0x20(%rbp)
jmp    1364 <maze_solve_helper_2+0x264>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    117e <maze_solve_helper_2+0x7e>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1166 <maze_solve_helper_2+0x66>
jmp    1140 <maze_solve_helper_2+0x40>
movl   $0x0,-0x14(%rbp)
movl   $0x0,-0x18(%rbp)
cmpl   $0x29,-0x14(%rbp)
jge    1438 <maze_solve_helper_2+0x338>
movl   $0x0,-0x18(%rbp)
cmpl   $0x51,-0x18(%rbp)
jge    142a <maze_solve_helper_2+0x32a>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x20,%eax
jne    13e5 <maze_solve_helper_2+0x2e5>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movb   $0x2e,(%rax,%rcx,1)
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2a,%eax
jne    141c <maze_solve_helper_2+0x31c>
mov    -0x10(%rbp),%rax
movslq -0x14(%rbp),%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
movslq -0x18(%rbp),%rcx
movb   $0x20,(%rax,%rcx,1)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
jmp    13a4 <maze_solve_helper_2+0x2a4>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x14(%rbp)
jmp    1393 <maze_solve_helper_2+0x293>
movl   $0x0,-0x14(%rbp)
movl   $0x1,-0x18(%rbp)
cmpl   $0x28,-0x14(%rbp)
jne    145f <maze_solve_helper_2+0x35f>
cmpl   $0x4f,-0x18(%rbp)
jne    145f <maze_solve_helper_2+0x35f>
jmp    160a <maze_solve_helper_2+0x50a>
cmpl   $0x0,-0x14(%rbp)
je     14d2 <maze_solve_helper_2+0x3d2>
mov    -0x14(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jne    1490 <maze_solve_helper_2+0x390>
mov    -0x30(%rbp),%eax
cmp    -0x28(%rbp),%eax
je     14cd <maze_solve_helper_2+0x3cd>
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
jne    14cd <maze_solve_helper_2+0x3cd>
mov    -0x14(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x18(%rbp)
jmp    1446 <maze_solve_helper_2+0x346>
jmp    14d2 <maze_solve_helper_2+0x3d2>
mov    -0x14(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jne    14f9 <maze_solve_helper_2+0x3f9>
mov    -0x30(%rbp),%eax
cmp    -0x28(%rbp),%eax
je     1536 <maze_solve_helper_2+0x436>
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
jne    1536 <maze_solve_helper_2+0x436>
mov    -0x14(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x18(%rbp)
jmp    1446 <maze_solve_helper_2+0x346>
mov    -0x14(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jne    155d <maze_solve_helper_2+0x45d>
mov    -0x30(%rbp),%eax
cmp    -0x28(%rbp),%eax
je     159a <maze_solve_helper_2+0x49a>
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
jne    159a <maze_solve_helper_2+0x49a>
mov    -0x14(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x18(%rbp)
jmp    1446 <maze_solve_helper_2+0x346>
mov    -0x14(%rbp),%eax
mov    %eax,-0x2c(%rbp)
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x2c(%rbp),%eax
cmp    -0x24(%rbp),%eax
jne    15c1 <maze_solve_helper_2+0x4c1>
mov    -0x30(%rbp),%eax
cmp    -0x28(%rbp),%eax
je     15fe <maze_solve_helper_2+0x4fe>
mov    -0x10(%rbp),%rax
movslq -0x2c(%rbp),%rcx
imul   $0x51,%rcx,%rcx
add    %rcx,%rax
movslq -0x30(%rbp),%rcx
movsbl (%rax,%rcx,1),%eax
cmp    $0x2e,%eax
jne    15fe <maze_solve_helper_2+0x4fe>
mov    -0x14(%rbp),%eax
mov    %eax,-0x24(%rbp)
mov    -0x18(%rbp),%eax
mov    %eax,-0x28(%rbp)
mov    -0x2c(%rbp),%eax
mov    %eax,-0x14(%rbp)
mov    -0x30(%rbp),%eax
mov    %eax,-0x18(%rbp)
jmp    1446 <maze_solve_helper_2+0x346>
movl   $0x0,-0x4(%rbp)
jmp    1611 <maze_solve_helper_2+0x511>
movl   $0x1,-0x4(%rbp)
mov    -0x4(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<maze_solve_helper_2>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
xor    %eax,%eax
xor    %r8d,%r8d
jmp    1119 <maze_solve_helper_2+0x19>
nop
mov    %r11,%rax
cmp    $0x29,%r11
je     1160 <maze_solve_helper_2+0x60>
lea    -0x1(%rax),%r9
lea    0x1(%rax),%r11
lea    (%rax,%rax,8),%rcx
lea    (%rcx,%rcx,8),%rsi
lea    (%rdi,%rsi,1),%rcx
cmpb   $0x20,(%rdi,%rsi,1)
jne    11b0 <maze_solve_helper_2+0xb0>
test   %rax,%rax
je     1172 <maze_solve_helper_2+0x72>
lea    (%r9,%r9,8),%rbp
lea    0x0(%rbp,%rbp,8),%rbp
mov    (%rdi,%rbp,1),%bl
cmp    $0x23,%bl
sete   %r10b
cmp    $0x2a,%bl
sete   %bl
or     %r10b,%bl
movzbl %bl,%ebp
jmp    1174 <maze_solve_helper_2+0x74>
nopl   0x0(%rax)
xor    %eax,%eax
test   %r8d,%r8d
mov    $0x0,%r8d
jne    1119 <maze_solve_helper_2+0x19>
jmp    1264 <maze_solve_helper_2+0x164>
xor    %ebp,%ebp
lea    (%r11,%r11,8),%rbx
lea    (%rbx,%rbx,8),%rbx
mov    (%rdi,%rbx,1),%bl
cmp    $0x2a,%bl
je     1189 <maze_solve_helper_2+0x89>
cmp    $0x23,%bl
jne    118c <maze_solve_helper_2+0x8c>
add    $0x1,%ebp
mov    0x1(%rdi,%rsi,1),%bl
cmp    $0x2a,%bl
je     119a <maze_solve_helper_2+0x9a>
cmp    $0x23,%bl
jne    11b0 <maze_solve_helper_2+0xb0>
cmp    $0x2,%ebp
jb     11b0 <maze_solve_helper_2+0xb0>
movb   $0x2a,(%rcx)
mov    $0x1,%r8d
nopl   0x0(%rax,%rax,1)
mov    $0x1,%esi
jmp    11d4 <maze_solve_helper_2+0xd4>
nopw   0x0(%rax,%rax,1)
add    $0x1,%rsi
mov    %rsi,%rbx
mov    %rbx,%rsi
cmp    $0x51,%rbx
je     1110 <maze_solve_helper_2+0x10>
cmpb   $0x20,(%rsi,%rcx,1)
jne    11c0 <maze_solve_helper_2+0xc0>
test   %rax,%rax
je     1202 <maze_solve_helper_2+0x102>
lea    (%r9,%r9,8),%rbp
lea    0x0(%rbp,%rbp,8),%rbp
add    %rdi,%rbp
movzbl (%rsi,%rbp,1),%ebx
cmp    $0x23,%bl
sete   %dl
cmp    $0x2a,%bl
sete   %bl
or     %dl,%bl
movzbl %bl,%ebp
jmp    1204 <maze_solve_helper_2+0x104>
xor    %ebp,%ebp
lea    -0x1(%rsi),%edx
movzbl (%rdx,%rcx,1),%ebx
cmp    $0x2a,%bl
je     1215 <maze_solve_helper_2+0x115>
cmp    $0x23,%bl
jne    1218 <maze_solve_helper_2+0x118>
add    $0x1,%ebp
lea    (%r11,%r11,8),%rdx
lea    (%rdx,%rdx,8),%rdx
add    %rdi,%rdx
movzbl (%rsi,%rdx,1),%ebx
cmp    $0x2a,%bl
je     1231 <maze_solve_helper_2+0x131>
cmp    $0x23,%bl
jne    1234 <maze_solve_helper_2+0x134>
add    $0x1,%ebp
movzbl 0x1(%rsi,%rcx,1),%ebx
cmp    $0x2a,%bl
je     1243 <maze_solve_helper_2+0x143>
cmp    $0x23,%bl
jne    1246 <maze_solve_helper_2+0x146>
add    $0x1,%ebp
lea    0x1(%rsi),%rbx
cmp    $0x3,%ebp
jb     11c7 <maze_solve_helper_2+0xc7>
add    %rcx,%rsi
movb   $0x2a,(%rsi)
mov    $0x1,%r8d
jmp    11c7 <maze_solve_helper_2+0xc7>
xor    %eax,%eax
mov    %rdi,%rcx
jmp    127e <maze_solve_helper_2+0x17e>
nopl   0x0(%rax,%rax,1)
add    $0x1,%rax
add    $0x51,%rcx
cmp    $0x29,%rax
je     12f8 <maze_solve_helper_2+0x1f8>
mov    $0x2,%edx
jmp    129f <maze_solve_helper_2+0x19f>
cs nopw 0x0(%rax,%rax,1)
nop
mov    $0x2e,%bl
mov    %bl,(%rcx,%rdx,1)
add    $0x3,%rdx
cmp    $0x53,%rdx
je     1270 <maze_solve_helper_2+0x170>
movzbl -0x2(%rcx,%rdx,1),%ebx
cmp    $0x20,%bl
je     12c0 <maze_solve_helper_2+0x1c0>
cmp    $0x2a,%bl
jne    12c6 <maze_solve_helper_2+0x1c6>
mov    $0x20,%bl
jmp    12c2 <maze_solve_helper_2+0x1c2>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
mov    $0x2e,%bl
mov    %bl,-0x2(%rcx,%rdx,1)
movzbl -0x1(%rcx,%rdx,1),%ebx
cmp    $0x20,%bl
je     12e0 <maze_solve_helper_2+0x1e0>
cmp    $0x2a,%bl
jne    12e6 <maze_solve_helper_2+0x1e6>
mov    $0x20,%bl
jmp    12e2 <maze_solve_helper_2+0x1e2>
nopl   0x0(%rax)
mov    $0x2e,%bl
mov    %bl,-0x1(%rcx,%rdx,1)
movzbl (%rcx,%rdx,1),%ebx
cmp    $0x20,%bl
je     1290 <maze_solve_helper_2+0x190>
cmp    $0x2a,%bl
jne    1295 <maze_solve_helper_2+0x195>
mov    $0x20,%bl
jmp    1292 <maze_solve_helper_2+0x192>
mov    $0x1,%eax
xor    %r8d,%r8d
xor    %ecx,%ecx
xor    %edx,%edx
xor    %r10d,%r10d
mov    %r10d,%r12d
lea    -0x1(%r12),%r10d
movslq %r10d,%r9
movslq %r12d,%r11
lea    0x1(%r11),%r15d
movslq %r15d,%r14
mov    %ecx,%ebp
mov    %eax,%ecx
jmp    135e <maze_solve_helper_2+0x25e>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
movslq %ebx,%rdx
lea    (%r11,%r11,8),%rsi
lea    (%rsi,%rsi,8),%rsi
add    %rdi,%rsi
cmpb   $0x2e,(%rdx,%rsi,1)
jne    13fe <maze_solve_helper_2+0x2fe>
cmp    $0x4f,%ebx
sete   %al
mov    %ecx,%ebp
mov    %r12d,%edx
mov    %ebx,%ecx
test   %al,%r8b
jne    13f9 <maze_solve_helper_2+0x2f9>
test   %r12d,%r12d
je     1380 <maze_solve_helper_2+0x280>
cmp    %edx,%r10d
jne    136c <maze_solve_helper_2+0x26c>
cmp    %ebp,%ecx
je     1380 <maze_solve_helper_2+0x280>
movslq %ecx,%rax
lea    (%r9,%r9,8),%rbx
lea    (%rbx,%rbx,8),%rbx
add    %rdi,%rbx
cmpb   $0x2e,(%rax,%rbx,1)
je     13d8 <maze_solve_helper_2+0x2d8>
lea    -0x1(%rcx),%ebx
cmp    %edx,%r12d
jne    138c <maze_solve_helper_2+0x28c>
cmp    %ebp,%ebx
je     13a0 <maze_solve_helper_2+0x2a0>
movslq %ebx,%rax
lea    (%r11,%r11,8),%rsi
lea    (%rsi,%rsi,8),%rsi
add    %rdi,%rsi
cmpb   $0x2e,(%rax,%rsi,1)
je     1348 <maze_solve_helper_2+0x248>
cmp    %edx,%r15d
jne    13a9 <maze_solve_helper_2+0x2a9>
cmp    %ebp,%ecx
je     13bd <maze_solve_helper_2+0x2bd>
movslq %ecx,%rax
lea    (%r14,%r14,8),%rsi
lea    (%rsi,%rsi,8),%rsi
add    %rdi,%rsi
cmpb   $0x2e,(%rax,%rsi,1)
je     13d5 <maze_solve_helper_2+0x2d5>
lea    0x1(%rcx),%ebx
xor    %eax,%eax
cmp    %edx,%r12d
jne    1330 <maze_solve_helper_2+0x230>
cmp    %ebp,%ebx
jne    1330 <maze_solve_helper_2+0x230>
jmp    13fe <maze_solve_helper_2+0x2fe>
mov    %r15d,%r10d
mov    %r12d,%edx
mov    %ecx,%eax
cmp    $0x28,%r10d
sete   %r8b
jne    1307 <maze_solve_helper_2+0x207>
mov    %r12d,%edx
mov    %ecx,%eax
cmp    $0x4f,%ecx
jne    1307 <maze_solve_helper_2+0x207>
mov    $0x1,%eax
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret

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

LLVM IR (-O2):
define i32 @maze_solve_helper_2([81 x i8]* nocapture %0) {
br label %4
2: ; preds = %81
%3 = icmp eq i32 %79, 0
br i1 %3, label %86, label %83
4: ; preds = %83, %1
%5 = phi i64 [ 0, %1 ], [ %84, %83 ]
%6 = phi i32 [ 0, %1 ], [ %85, %83 ]
%7 = icmp eq i64 %5, 0
%8 = add nsw i64 %5, -1
%9 = add nuw nsw i64 %5, 1
%10 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %5, i64 0
%11 = load i8, i8* %10
%12 = icmp eq i8 %11, 32
br i1 %12, label %13, label %34
13: ; preds = %4
br i1 %7, label %21, label %14
14: ; preds = %13
%15 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %8, i64 0
%16 = load i8, i8* %15
%17 = icmp eq i8 %16, 35
%18 = icmp eq i8 %16, 42
%19 = or i1 %17, %18
%20 = zext i1 %19 to i32
br label %21
21: ; preds = %13, %14
%22 = phi i32 [ 0, %13 ], [ %20, %14 ]
%23 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %9, i64 0
%24 = load i8, i8* %23
switch i8 %24, label %27 [
i8 35, label %25
i8 42, label %25
]
25: ; preds = %21, %21
%26 = add nuw nsw i32 %22, 1
br label %27
27: ; preds = %25, %21
%28 = phi i32 [ %26, %25 ], [ %22, %21 ]
%29 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %5, i64 1
%30 = load i8, i8* %29
switch i8 %30, label %34 [
i8 35, label %31
i8 42, label %31
]
31: ; preds = %27, %27
%32 = icmp ugt i32 %28, 1
br i1 %32, label %33, label %34
33: ; preds = %31
store i8 42, i8* %10
br label %34
34: ; preds = %27, %4, %31, %33
%35 = phi i32 [ 1, %33 ], [ %6, %31 ], [ %6, %4 ], [ %6, %27 ]
br label %36
36: ; preds = %34, %77
%37 = phi i64 [ %78, %77 ], [ 1, %34 ]
%38 = phi i32 [ %79, %77 ], [ %35, %34 ]
%39 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %5, i64 %37
%40 = load i8, i8* %39
%41 = icmp eq i8 %40, 32
br i1 %41, label %44, label %42
42: ; preds = %36
%43 = add nuw nsw i64 %37, 1
br label %77
44: ; preds = %36
br i1 %7, label %52, label %45
45: ; preds = %44
%46 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %8, i64 %37
%47 = load i8, i8* %46
%48 = icmp eq i8 %47, 35
%49 = icmp eq i8 %47, 42
%50 = or i1 %48, %49
%51 = zext i1 %50 to i32
br label %52
52: ; preds = %44, %45
%53 = phi i32 [ 0, %44 ], [ %51, %45 ]
%54 = add i64 %37, 4294967295
%55 = and i64 %54, 4294967295
%56 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %5, i64 %55
%57 = load i8, i8* %56
switch i8 %57, label %60 [
i8 35, label %58
i8 42, label %58
]
58: ; preds = %52, %52
%59 = add nuw nsw i32 %53, 1
br label %60
60: ; preds = %58, %52
%61 = phi i32 [ %59, %58 ], [ %53, %52 ]
%62 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %9, i64 %37
%63 = load i8, i8* %62
switch i8 %63, label %66 [
i8 35, label %64
i8 42, label %64
]
64: ; preds = %60, %60
%65 = add nuw nsw i32 %61, 1
br label %66
66: ; preds = %64, %60
%67 = phi i32 [ %65, %64 ], [ %61, %60 ]
%68 = add nuw nsw i64 %37, 1
%69 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %5, i64 %68
%70 = load i8, i8* %69
switch i8 %70, label %73 [
i8 35, label %71
i8 42, label %71
]
71: ; preds = %66, %66
%72 = add nuw nsw i32 %67, 1
br label %73
73: ; preds = %66, %71
%74 = phi i32 [ %72, %71 ], [ %67, %66 ]
%75 = icmp ugt i32 %74, 2
br i1 %75, label %76, label %77
76: ; preds = %73
store i8 42, i8* %39
br label %77
77: ; preds = %42, %73, %76
%78 = phi i64 [ %43, %42 ], [ %68, %73 ], [ %68, %76 ]
%79 = phi i32 [ %38, %42 ], [ %38, %73 ], [ 1, %76 ]
%80 = icmp eq i64 %78, 81
br i1 %80, label %81, label %36
81: ; preds = %77
%82 = icmp eq i64 %9, 41
br i1 %82, label %2, label %83
83: ; preds = %81, %2
%84 = phi i64 [ %9, %81 ], [ 0, %2 ]
%85 = phi i32 [ %79, %81 ], [ 0, %2 ]
br label %4
86: ; preds = %2, %112
%87 = phi i64 [ %113, %112 ], [ 0, %2 ]
br label %88
88: ; preds = %109, %86
%89 = phi i64 [ 0, %86 ], [ %110, %109 ]
%90 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %87, i64 %89
%91 = load i8, i8* %90
switch i8 %91, label %95 [
i8 32, label %93
i8 42, label %92
]
92: ; preds = %88
br label %93
93: ; preds = %88, %92
%94 = phi i8 [ 32, %92 ], [ 46, %88 ]
store i8 %94, i8* %90
br label %95
95: ; preds = %93, %88
%96 = add nuw nsw i64 %89, 1
%97 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %87, i64 %96
%98 = load i8, i8* %97
switch i8 %98, label %102 [
i8 32, label %100
i8 42, label %99
]
99: ; preds = %95
br label %100
100: ; preds = %99, %95
%101 = phi i8 [ 32, %99 ], [ 46, %95 ]
store i8 %101, i8* %97
br label %102
102: ; preds = %100, %95
%103 = add nuw nsw i64 %89, 2
%104 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %87, i64 %103
%105 = load i8, i8* %104
switch i8 %105, label %109 [
i8 32, label %107
i8 42, label %106
]
106: ; preds = %102
br label %107
107: ; preds = %106, %102
%108 = phi i8 [ 32, %106 ], [ 46, %102 ]
store i8 %108, i8* %104
br label %109
109: ; preds = %107, %102
%110 = add nuw nsw i64 %89, 3
%111 = icmp eq i64 %110, 81
br i1 %111, label %112, label %88
112: ; preds = %109
%113 = add nuw nsw i64 %87, 1
%114 = icmp eq i64 %113, 41
br i1 %114, label %133, label %86
115: ; preds = %133, %155
%116 = phi i32 [ %135, %133 ], [ %118, %155 ]
%117 = phi i32 [ %136, %133 ], [ %138, %155 ]
%118 = phi i32 [ %137, %133 ], [ %156, %155 ]
br i1 %139, label %145, label %119
119: ; preds = %115
%120 = icmp eq i32 %140, %117
%121 = icmp eq i32 %118, %116
%122 = select i1 %120, i1 %121, i1 false
br i1 %122, label %145, label %123
123: ; preds = %119
%124 = sext i32 %118 to i64
%125 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %141, i64 %124
%126 = load i8, i8* %125
%127 = icmp eq i8 %126, 46
br i1 %127, label %128, label %145
128: ; preds = %123, %163
%129 = phi i32 [ %140, %123 ], [ %143, %163 ]
%130 = icmp eq i32 %129, 40
%131 = icmp eq i32 %118, 79
%132 = select i1 %130, i1 %131, i1 false
br i1 %132, label %177, label %133
133: ; preds = %112, %128
%134 = phi i1 [ %130, %128 ], [ false, %112 ]
%135 = phi i32 [ %118, %128 ], [ 0, %112 ]
%136 = phi i32 [ %138, %128 ], [ 0, %112 ]
%137 = phi i32 [ %118, %128 ], [ 1, %112 ]
%138 = phi i32 [ %129, %128 ], [ 0, %112 ]
%139 = icmp eq i32 %138, 0
%140 = add nsw i32 %138, -1
%141 = sext i32 %140 to i64
%142 = sext i32 %138 to i64
%143 = add nsw i32 %138, 1
%144 = sext i32 %143 to i64
br label %115
145: ; preds = %119, %123, %115
%146 = add nsw i32 %118, -1
%147 = icmp eq i32 %138, %117
%148 = icmp eq i32 %146, %116
%149 = select i1 %147, i1 %148, i1 false
br i1 %149, label %159, label %150
150: ; preds = %145
%151 = sext i32 %146 to i64
%152 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %142, i64 %151
%153 = load i8, i8* %152
%154 = icmp eq i8 %153, 46
br i1 %154, label %155, label %159
155: ; preds = %150, %172
%156 = phi i32 [ %146, %150 ], [ %169, %172 ]
%157 = icmp eq i32 %156, 79
%158 = select i1 %134, i1 %157, i1 false
br i1 %158, label %177, label %115
159: ; preds = %145, %150
%160 = icmp eq i32 %143, %117
%161 = icmp eq i32 %118, %116
%162 = select i1 %160, i1 %161, i1 false
br i1 %162, label %168, label %163
163: ; preds = %159
%164 = sext i32 %118 to i64
%165 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %144, i64 %164
%166 = load i8, i8* %165
%167 = icmp eq i8 %166, 46
br i1 %167, label %128, label %168
168: ; preds = %159, %163
%169 = add nsw i32 %118, 1
%170 = icmp eq i32 %169, %116
%171 = select i1 %147, i1 %170, i1 false
br i1 %171, label %177, label %172
172: ; preds = %168
%173 = sext i32 %169 to i64
%174 = getelementptr inbounds [81 x i8], [81 x i8]* %0, i64 %142, i64 %173
%175 = load i8, i8* %174
%176 = icmp eq i8 %175, 46
br i1 %176, label %155, label %177
177: ; preds = %128, %168, %172, %155
%178 = phi i32 [ 1, %155 ], [ 0, %172 ], [ 0, %168 ], [ 1, %128 ]
ret i32 %178
}