void evolve(unsigned char *grid_in, unsigned char *grid_out, unsigned int dim_x,
            unsigned int dim_y, unsigned int x, unsigned int y) {
  unsigned char(*c_grid_in)[dim_x] = (unsigned char(*)[dim_x])grid_in;
  unsigned char(*c_grid_out)[dim_x] = (unsigned char(*)[dim_x])grid_out;
  unsigned int aliveNeighborCnt = 0;
  if (x > 0 && x < (dim_x - 1) && y > 0 && y < (dim_y - 1)) {
    if (c_grid_in[y][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y][x + 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][x + 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][x + 1] == 1) {
      aliveNeighborCnt++;
    }
  } else if (x > 0 && x < (dim_x - 1) && y == 0) {
    if (c_grid_in[y][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y][x + 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[dim_y - 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[dim_y - 1][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[dim_y - 1][x + 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][x + 1] == 1) {
      aliveNeighborCnt++;
    }
  } else if (x > 0 && x < (dim_x - 1) && y == (dim_y - 1)) {
    if (c_grid_in[y][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y][x + 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[0][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][x + 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[0][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[0][x + 1] == 1) {
      aliveNeighborCnt++;
    }
  } else if (x == 0 && y > 0 && y < (dim_y - 1)) {
    if (c_grid_in[y][dim_x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y][x + 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][dim_x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][x + 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][dim_x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][x + 1] == 1) {
      aliveNeighborCnt++;
    }
  } else if (x == (dim_x - 1) && y > 0 && y < (dim_y - 1)) {
    if (c_grid_in[y][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y][0] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][0] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][0] == 1) {
      aliveNeighborCnt++;
    }
  } else if (x == 0 && y == 0) {
    if (c_grid_in[y][dim_x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y][x + 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[dim_y - 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[dim_y - 1][dim_x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[dim_y - 1][x + 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][dim_x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][x + 1] == 1) {
      aliveNeighborCnt++;
    }
  } else if (x == 0 && y == (dim_y - 1)) {
    if (c_grid_in[y][dim_x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y][x + 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[0][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][dim_x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][x + 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[0][dim_x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[0][x + 1] == 1) {
      aliveNeighborCnt++;
    }
  } else if (x == (dim_x - 1) && y == 0) {
    if (c_grid_in[y][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y][0] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[dim_y - 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[dim_y - 1][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[dim_y - 1][0] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y + 1][0] == 1) {
      aliveNeighborCnt++;
    }
  } else if (x == (dim_x - 1) && y == (dim_y - 1)) {
    if (c_grid_in[y][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y][0] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[0][x] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[y - 1][0] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[0][x - 1] == 1) {
      aliveNeighborCnt++;
    }
    if (c_grid_in[0][0] == 1) {
      aliveNeighborCnt++;
    }
  }
  if (c_grid_in[y][x] == 1 && (aliveNeighborCnt < 2 || aliveNeighborCnt > 3)) {
    c_grid_out[y][x] = 0;
  } else if (c_grid_in[y][x] == 0 && aliveNeighborCnt == 3) {
    c_grid_out[y][x] = 1;
  } else {
    c_grid_out[y][x] = c_grid_in[y][x];
  }
}


x86 assembly (clang, -O0):
<evolve>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
mov    %r9d,-0x20(%rbp)
mov    -0x14(%rbp),%eax
mov    %rax,-0x48(%rbp)
mov    -0x8(%rbp),%rax
mov    %rax,-0x28(%rbp)
mov    -0x14(%rbp),%eax
mov    %rax,-0x40(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x30(%rbp)
movl   $0x0,-0x34(%rbp)
cmpl   $0x0,-0x1c(%rbp)
jbe    130e <evolve+0x20e>
mov    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jae    130e <evolve+0x20e>
cmpl   $0x0,-0x20(%rbp)
jbe    130e <evolve+0x20e>
mov    -0x20(%rbp),%eax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jae    130e <evolve+0x20e>
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    11a5 <evolve+0xa5>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    11d5 <evolve+0xd5>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1205 <evolve+0x105>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1235 <evolve+0x135>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    126a <evolve+0x16a>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    129f <evolve+0x19f>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    12d4 <evolve+0x1d4>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1309 <evolve+0x209>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    2061 <evolve+0xf61>
cmpl   $0x0,-0x1c(%rbp)
jbe    14cc <evolve+0x3cc>
mov    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jae    14cc <evolve+0x3cc>
cmpl   $0x0,-0x20(%rbp)
jne    14cc <evolve+0x3cc>
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1363 <evolve+0x263>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1393 <evolve+0x293>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    13c3 <evolve+0x2c3>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    13f3 <evolve+0x2f3>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1428 <evolve+0x328>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    145d <evolve+0x35d>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1492 <evolve+0x392>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    14c7 <evolve+0x3c7>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    205c <evolve+0xf5c>
cmpl   $0x0,-0x1c(%rbp)
jbe    1679 <evolve+0x579>
mov    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jae    1679 <evolve+0x579>
mov    -0x20(%rbp),%eax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1679 <evolve+0x579>
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1528 <evolve+0x428>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1558 <evolve+0x458>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1588 <evolve+0x488>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rcx
mov    -0x28(%rbp),%rax
imul   $0x0,%rcx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    15b0 <evolve+0x4b0>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    15e5 <evolve+0x4e5>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    161a <evolve+0x51a>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rcx
mov    -0x28(%rbp),%rax
imul   $0x0,%rcx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1647 <evolve+0x547>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rcx
mov    -0x28(%rbp),%rax
imul   $0x0,%rcx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1674 <evolve+0x574>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    2057 <evolve+0xf57>
cmpl   $0x0,-0x1c(%rbp)
jne    1837 <evolve+0x737>
cmpl   $0x0,-0x20(%rbp)
jbe    1837 <evolve+0x737>
mov    -0x20(%rbp),%eax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jae    1837 <evolve+0x737>
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    16ce <evolve+0x5ce>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    16fe <evolve+0x5fe>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    172e <evolve+0x62e>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    175e <evolve+0x65e>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1793 <evolve+0x693>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    17c8 <evolve+0x6c8>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    17fd <evolve+0x6fd>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1832 <evolve+0x732>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    2052 <evolve+0xf52>
mov    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    19db <evolve+0x8db>
cmpl   $0x0,-0x20(%rbp)
jbe    19db <evolve+0x8db>
mov    -0x20(%rbp),%eax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jae    19db <evolve+0x8db>
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1893 <evolve+0x793>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    18b8 <evolve+0x7b8>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    18e8 <evolve+0x7e8>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1918 <evolve+0x818>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    194d <evolve+0x84d>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1977 <evolve+0x877>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    19ac <evolve+0x8ac>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    19d6 <evolve+0x8d6>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    204d <evolve+0xf4d>
cmpl   $0x0,-0x1c(%rbp)
jne    1b88 <evolve+0xa88>
cmpl   $0x0,-0x20(%rbp)
jne    1b88 <evolve+0xa88>
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1a1f <evolve+0x91f>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1a4f <evolve+0x94f>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1a7f <evolve+0x97f>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1aaf <evolve+0x9af>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1ae4 <evolve+0x9e4>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1b19 <evolve+0xa19>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1b4e <evolve+0xa4e>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1b83 <evolve+0xa83>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    2048 <evolve+0xf48>
cmpl   $0x0,-0x1c(%rbp)
jne    1d24 <evolve+0xc24>
mov    -0x20(%rbp),%eax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1d24 <evolve+0xc24>
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1bd3 <evolve+0xad3>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1c03 <evolve+0xb03>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1c33 <evolve+0xb33>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rcx
mov    -0x28(%rbp),%rax
imul   $0x0,%rcx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1c5b <evolve+0xb5b>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1c90 <evolve+0xb90>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1cc5 <evolve+0xbc5>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rcx
mov    -0x28(%rbp),%rax
imul   $0x0,%rcx,%rcx
add    %rcx,%rax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1cf2 <evolve+0xbf2>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rcx
mov    -0x28(%rbp),%rax
imul   $0x0,%rcx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1d1f <evolve+0xc1f>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    2043 <evolve+0xf43>
mov    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    1eb7 <evolve+0xdb7>
cmpl   $0x0,-0x20(%rbp)
jne    1eb7 <evolve+0xdb7>
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1d6f <evolve+0xc6f>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1d94 <evolve+0xc94>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1dc4 <evolve+0xcc4>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1df4 <evolve+0xcf4>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1e29 <evolve+0xd29>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1e53 <evolve+0xd53>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1e88 <evolve+0xd88>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1eb2 <evolve+0xdb2>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    203e <evolve+0xf3e>
mov    -0x1c(%rbp),%eax
mov    -0x14(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    2039 <evolve+0xf39>
mov    -0x20(%rbp),%eax
mov    -0x18(%rbp),%ecx
sub    $0x1,%ecx
cmp    %ecx,%eax
jne    2039 <evolve+0xf39>
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1f09 <evolve+0xe09>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1f2e <evolve+0xe2e>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1f5e <evolve+0xe5e>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rcx
mov    -0x28(%rbp),%rax
imul   $0x0,%rcx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1f86 <evolve+0xe86>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1fbb <evolve+0xebb>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
imul   %rdx,%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    1fe5 <evolve+0xee5>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rcx
mov    -0x28(%rbp),%rax
imul   $0x0,%rcx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
sub    $0x1,%ecx
mov    %ecx,%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    2012 <evolve+0xf12>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
mov    -0x48(%rbp),%rcx
mov    -0x28(%rbp),%rax
imul   $0x0,%rcx,%rcx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    2034 <evolve+0xf34>
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    2039 <evolve+0xf39>
jmp    203e <evolve+0xf3e>
jmp    2043 <evolve+0xf43>
jmp    2048 <evolve+0xf48>
jmp    204d <evolve+0xf4d>
jmp    2052 <evolve+0xf52>
jmp    2057 <evolve+0xf57>
jmp    205c <evolve+0xf5c>
jmp    2061 <evolve+0xf61>
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x1,%eax
jne    20b5 <evolve+0xfb5>
cmpl   $0x2,-0x34(%rbp)
jb     2097 <evolve+0xf97>
cmpl   $0x3,-0x34(%rbp)
jbe    20b5 <evolve+0xfb5>
mov    -0x40(%rbp),%rdx
mov    -0x30(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movb   $0x0,(%rax,%rcx,1)
jmp    2134 <evolve+0x1034>
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movzbl (%rax,%rcx,1),%eax
cmp    $0x0,%eax
jne    20ff <evolve+0xfff>
cmpl   $0x3,-0x34(%rbp)
jne    20ff <evolve+0xfff>
mov    -0x40(%rbp),%rdx
mov    -0x30(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
movb   $0x1,(%rax,%rcx,1)
jmp    212f <evolve+0x102f>
mov    -0x40(%rbp),%rsi
mov    -0x48(%rbp),%rdx
mov    -0x28(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rdx,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
mov    (%rax,%rcx,1),%dl
mov    -0x30(%rbp),%rax
mov    -0x20(%rbp),%ecx
imul   %rsi,%rcx
add    %rcx,%rax
mov    -0x1c(%rbp),%ecx
mov    %dl,(%rax,%rcx,1)
jmp    2134 <evolve+0x1034>
pop    %rbp
ret

x86 assembly (clang, -O2):
<evolve>:
push   %r15
push   %r14
push   %r12
push   %rbx
mov    %edx,%r11d
mov    %r9d,%r10d
mov    %r8d,%r14d
test   %r8d,%r8d
je     11c6 <evolve+0xc6>
add    $0xffffffff,%edx
test   %r9d,%r9d
setne  %bl
add    $0xffffffff,%ecx
cmp    %r9d,%ecx
seta   %al
jbe    1267 <evolve+0x167>
cmp    %r8d,%edx
jbe    1267 <evolve+0x167>
test   %r9d,%r9d
je     1267 <evolve+0x167>
mov    %r10,%rax
imul   %r11,%rax
add    %rdi,%rax
add    $0xffffffff,%r8d
xor    %ecx,%ecx
cmpb   $0x1,(%r8,%rax,1)
sete   %cl
lea    0x1(%rcx),%edx
cmpb   $0x1,0x1(%r14,%rax,1)
cmovne %ecx,%edx
lea    -0x1(%r9),%eax
imul   %r11,%rax
add    %rdi,%rax
xor    %ecx,%ecx
cmpb   $0x1,(%r14,%rax,1)
sete   %cl
add    %edx,%ecx
add    $0x1,%r9d
imul   %r11,%r9
add    %rdi,%r9
xor    %edx,%edx
cmpb   $0x1,(%r14,%r9,1)
sete   %dl
add    %ecx,%edx
xor    %ecx,%ecx
cmpb   $0x1,(%r8,%rax,1)
sete   %cl
add    %edx,%ecx
xor    %edx,%edx
cmpb   $0x1,0x1(%r14,%rax,1)
sete   %dl
add    %ecx,%edx
xor    %ecx,%ecx
cmpb   $0x1,(%r8,%r9,1)
sete   %cl
add    %edx,%ecx
add    %r14,%r9
add    $0x1,%r9
jmp    14f7 <evolve+0x3f7>
test   %r9d,%r9d
setne  %bl
add    $0xffffffff,%ecx
cmp    %r9d,%ecx
seta   %al
jbe    12ea <evolve+0x1ea>
test   %r9d,%r9d
je     12ea <evolve+0x1ea>
mov    %r10,%rax
imul   %r11,%rax
lea    (%rdi,%rax,1),%rcx
add    $0xffffffff,%edx
xor    %ebx,%ebx
cmpb   $0x1,(%rdx,%rcx,1)
sete   %bl
cmpb   $0x1,0x1(%rdi,%rax,1)
lea    0x1(%rbx),%ecx
cmovne %ebx,%ecx
lea    -0x1(%r9),%r12d
imul   %r11,%r12
xor    %ebx,%ebx
cmpb   $0x1,(%rdi,%r12,1)
lea    (%rdi,%r12,1),%r8
sete   %bl
add    %ecx,%ebx
add    $0x1,%r9d
imul   %r11,%r9
xor    %ecx,%ecx
cmpb   $0x1,(%rdi,%r9,1)
lea    (%rdi,%r9,1),%r15
sete   %cl
add    %ebx,%ecx
xor    %ebx,%ebx
cmpb   $0x1,(%rdx,%r8,1)
sete   %bl
add    %ecx,%ebx
xor    %eax,%eax
cmpb   $0x1,0x1(%rdi,%r12,1)
sete   %al
add    %ebx,%eax
xor    %ecx,%ecx
cmpb   $0x1,(%rdx,%r15,1)
sete   %cl
add    %eax,%ecx
add    %rdi,%r9
add    $0x1,%r9
jmp    14f7 <evolve+0x3f7>
cmp    %r8d,%edx
jbe    1380 <evolve+0x280>
test   %r9d,%r9d
jne    1380 <evolve+0x280>
add    $0xffffffff,%r8d
xor    %eax,%eax
cmpb   $0x1,(%rdi,%r8,1)
sete   %al
lea    0x1(%rax),%edx
cmpb   $0x1,0x1(%rdi,%r14,1)
cmovne %eax,%edx
mov    %ecx,%eax
imul   %r11,%rax
add    %rdi,%rax
xor    %ecx,%ecx
cmpb   $0x1,(%r14,%rax,1)
sete   %cl
add    %edx,%ecx
lea    (%rdi,%r11,1),%rdx
xor    %ebx,%ebx
cmpb   $0x1,(%r14,%rdx,1)
sete   %bl
add    %ecx,%ebx
xor    %ecx,%ecx
cmpb   $0x1,(%r8,%rax,1)
sete   %cl
add    %ebx,%ecx
xor    %ebx,%ebx
cmpb   $0x1,0x1(%r14,%rax,1)
sete   %bl
add    %ecx,%ebx
xor    %ecx,%ecx
cmpb   $0x1,(%r8,%rdx,1)
sete   %cl
add    %ebx,%ecx
lea    (%r14,%rdx,1),%r9
add    $0x1,%r9
jmp    14f7 <evolve+0x3f7>
add    $0xffffffff,%edx
test   %al,%al
je     140b <evolve+0x30b>
cmp    %r8d,%edx
jne    140b <evolve+0x30b>
test   %bl,%bl
je     140b <evolve+0x30b>
mov    %r10,%rax
imul   %r11,%rax
lea    (%rdi,%rax,1),%rcx
add    $0xffffffff,%r8d
xor    %edx,%edx
cmpb   $0x1,(%r8,%rcx,1)
sete   %dl
lea    0x1(%rdx),%ecx
cmpb   $0x1,(%rdi,%rax,1)
cmovne %edx,%ecx
lea    -0x1(%r9),%eax
imul   %r11,%rax
lea    (%rdi,%rax,1),%rdx
xor    %ebx,%ebx
cmpb   $0x1,(%r14,%rdx,1)
sete   %bl
add    %ecx,%ebx
add    $0x1,%r9d
imul   %r11,%r9
add    %rdi,%r9
xor    %ecx,%ecx
cmpb   $0x1,(%r14,%r9,1)
sete   %cl
add    %ebx,%ecx
xor    %ebx,%ebx
cmpb   $0x1,(%r8,%rdx,1)
sete   %bl
add    %ecx,%ebx
xor    %edx,%edx
cmpb   $0x1,(%rdi,%rax,1)
sete   %dl
add    %ebx,%edx
xor    %ecx,%ecx
cmpb   $0x1,(%r8,%r9,1)
sete   %cl
add    %edx,%ecx
jmp    14f7 <evolve+0x3f7>
cmp    %r8d,%edx
jbe    12ed <evolve+0x1ed>
cmp    %r9d,%ecx
jne    12ed <evolve+0x1ed>
mov    %r10,%rax
imul   %r11,%rax
add    %rdi,%rax
add    $0xffffffff,%r8d
xor    %ecx,%ecx
cmpb   $0x1,(%r8,%rax,1)
sete   %cl
lea    0x1(%rcx),%edx
cmpb   $0x1,0x1(%r14,%rax,1)
cmovne %ecx,%edx
add    $0xffffffff,%r9d
imul   %r11,%r9
add    %rdi,%r9
xor    %eax,%eax
cmpb   $0x1,(%r14,%r9,1)
sete   %al
add    %edx,%eax
xor    %ecx,%ecx
cmpb   $0x1,(%rdi,%r14,1)
sete   %cl
add    %eax,%ecx
xor    %eax,%eax
cmpb   $0x1,(%r8,%r9,1)
sete   %al
add    %ecx,%eax
xor    %edx,%edx
cmpb   $0x1,0x1(%r14,%r9,1)
sete   %dl
add    %eax,%edx
xor    %ecx,%ecx
cmpb   $0x1,(%rdi,%r8,1)
sete   %cl
add    %edx,%ecx
lea    (%rdi,%r14,1),%r9
add    $0x1,%r9
jmp    14f7 <evolve+0x3f7>
mov    %r9d,%eax
or     %r8d,%eax
je     1491 <evolve+0x391>
test   %r8d,%r8d
jne    1545 <evolve+0x445>
cmp    %r9d,%ecx
jne    1545 <evolve+0x445>
mov    %r10,%rcx
imul   %r11,%rcx
lea    (%rdi,%rcx,1),%rbx
mov    %edx,%eax
xor    %edx,%edx
cmpb   $0x1,(%rax,%rbx,1)
sete   %dl
lea    0x1(%rdx),%ebx
cmpb   $0x1,0x1(%rdi,%rcx,1)
cmovne %edx,%ebx
add    $0xffffffff,%r9d
imul   %r11,%r9
xor    %ecx,%ecx
cmpb   $0x1,(%rdi,%r9,1)
sete   %cl
add    %ebx,%ecx
xor    %edx,%edx
cmpb   $0x1,(%rdi)
lea    (%rdi,%r9,1),%rbx
sete   %dl
add    %ecx,%edx
xor    %ecx,%ecx
cmpb   $0x1,(%rax,%rbx,1)
sete   %cl
add    %edx,%ecx
xor    %edx,%edx
cmpb   $0x1,0x1(%rdi,%r9,1)
sete   %dl
add    %ecx,%edx
xor    %ecx,%ecx
cmpb   $0x1,(%rdi,%rax,1)
sete   %cl
add    %edx,%ecx
lea    0x1(%rdi),%r9
jmp    14f7 <evolve+0x3f7>
mov    %edx,%eax
xor    %edx,%edx
cmpb   $0x1,(%rdi,%rax,1)
sete   %dl
lea    0x1(%rdx),%ebx
cmpb   $0x1,0x1(%rdi)
cmovne %edx,%ebx
mov    %ecx,%ecx
imul   %r11,%rcx
lea    (%rdi,%rcx,1),%r8
xor    %edx,%edx
cmpb   $0x1,(%rdi,%rcx,1)
sete   %dl
add    %ebx,%edx
xor    %ebx,%ebx
cmpb   $0x1,(%rdi,%r11,1)
lea    (%rdi,%r11,1),%r9
sete   %bl
add    %edx,%ebx
xor    %edx,%edx
cmpb   $0x1,(%rax,%r8,1)
sete   %dl
add    %ebx,%edx
xor    %ebx,%ebx
cmpb   $0x1,0x1(%rdi,%rcx,1)
sete   %bl
add    %edx,%ebx
xor    %ecx,%ecx
cmpb   $0x1,(%rax,%r9,1)
sete   %cl
add    %ebx,%ecx
lea    (%rdi,%r11,1),%r9
add    $0x1,%r9
xor    %eax,%eax
cmpb   $0x1,(%r9)
sete   %al
add    %ecx,%eax
imul   %r11,%r10
add    %r10,%rdi
mov    (%r14,%rdi,1),%cl
cmp    $0x1,%cl
jne    1526 <evolve+0x426>
mov    %eax,%edx
and    $0xfffffffe,%edx
cmp    $0x2,%edx
je     1526 <evolve+0x426>
add    %r10,%rsi
movb   $0x0,(%r14,%rsi,1)
jmp    153d <evolve+0x43d>
add    %r10,%rsi
test   %cl,%cl
jne    1539 <evolve+0x439>
cmp    $0x3,%eax
jne    1539 <evolve+0x439>
movb   $0x1,(%rsi,%r14,1)
jmp    153d <evolve+0x43d>
mov    %cl,(%rsi,%r14,1)
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
ret
cmp    %r8d,%edx
jne    159d <evolve+0x49d>
test   %r9d,%r9d
jne    159d <evolve+0x49d>
add    $0xffffffff,%r8d
xor    %eax,%eax
cmpb   $0x1,(%rdi,%r8,1)
sete   %al
lea    0x1(%rax),%edx
cmpb   $0x1,(%rdi)
cmovne %eax,%edx
mov    %ecx,%eax
imul   %r11,%rax
lea    (%rdi,%rax,1),%rcx
xor    %ebx,%ebx
cmpb   $0x1,(%r14,%rcx,1)
sete   %bl
add    %edx,%ebx
lea    (%rdi,%r11,1),%r9
xor    %edx,%edx
cmpb   $0x1,(%r14,%r9,1)
sete   %dl
add    %ebx,%edx
xor    %ebx,%ebx
cmpb   $0x1,(%r8,%rcx,1)
sete   %bl
add    %edx,%ebx
jmp    1364 <evolve+0x264>
xor    %eax,%eax
cmp    %r8d,%edx
jne    1502 <evolve+0x402>
cmp    %r9d,%ecx
jne    1502 <evolve+0x402>
mov    %r10,%rax
imul   %r11,%rax
lea    (%rdi,%rax,1),%rcx
add    $0xffffffff,%r8d
xor    %edx,%edx
cmpb   $0x1,(%r8,%rcx,1)
sete   %dl
lea    0x1(%rdx),%ecx
cmpb   $0x1,(%rdi,%rax,1)
cmovne %edx,%ecx
add    $0xffffffff,%r9d
imul   %r11,%r9
lea    (%rdi,%r9,1),%rax
xor    %edx,%edx
cmpb   $0x1,(%r14,%rax,1)
sete   %dl
add    %ecx,%edx
xor    %ecx,%ecx
cmpb   $0x1,(%rdi,%r14,1)
sete   %cl
add    %edx,%ecx
xor    %edx,%edx
cmpb   $0x1,(%r8,%rax,1)
sete   %dl
add    %ecx,%edx
xor    %eax,%eax
cmpb   $0x1,(%rdi,%r9,1)
sete   %al
add    %edx,%eax
xor    %ecx,%ecx
cmpb   $0x1,(%rdi,%r8,1)
sete   %cl
add    %eax,%ecx
mov    %rdi,%r9
jmp    14f7 <evolve+0x3f7>

LLVM IR (-O0):
define void @evolve(i8* %0, i8* %1, i32 %2, i32 %3, i32 %4, i32 %5) {
%7 = alloca i8*
%8 = alloca i8*
%9 = alloca i32
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i8*
%14 = alloca i8*
%15 = alloca i32
store i8* %0, i8** %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
%16 = load i32, i32* %9
%17 = zext i32 %16 to i64
%18 = load i32, i32* %9
%19 = zext i32 %18 to i64
%20 = load i8*, i8** %7
store i8* %20, i8** %13
%21 = load i32, i32* %9
%22 = zext i32 %21 to i64
%23 = load i32, i32* %9
%24 = zext i32 %23 to i64
%25 = load i8*, i8** %8
store i8* %25, i8** %14
store i32 0, i32* %15
%26 = load i32, i32* %11
%27 = icmp ugt i32 %26, 0
br i1 %27, label %28, label %174
28: ; preds = %6
%29 = load i32, i32* %11
%30 = load i32, i32* %9
%31 = sub i32 %30, 1
%32 = icmp ult i32 %29, %31
br i1 %32, label %33, label %174
33: ; preds = %28
%34 = load i32, i32* %12
%35 = icmp ugt i32 %34, 0
br i1 %35, label %36, label %174
36: ; preds = %33
%37 = load i32, i32* %12
%38 = load i32, i32* %10
%39 = sub i32 %38, 1
%40 = icmp ult i32 %37, %39
br i1 %40, label %41, label %174
41: ; preds = %36
%42 = load i8*, i8** %13
%43 = load i32, i32* %12
%44 = zext i32 %43 to i64
%45 = mul nsw i64 %44, %17
%46 = getelementptr inbounds i8, i8* %42, i64 %45
%47 = load i32, i32* %11
%48 = sub i32 %47, 1
%49 = zext i32 %48 to i64
%50 = getelementptr inbounds i8, i8* %46, i64 %49
%51 = load i8, i8* %50
%52 = zext i8 %51 to i32
%53 = icmp eq i32 %52, 1
br i1 %53, label %54, label %57
54: ; preds = %41
%55 = load i32, i32* %15
%56 = add i32 %55, 1
store i32 %56, i32* %15
br label %57
57: ; preds = %54, %41
%58 = load i8*, i8** %13
%59 = load i32, i32* %12
%60 = zext i32 %59 to i64
%61 = mul nsw i64 %60, %17
%62 = getelementptr inbounds i8, i8* %58, i64 %61
%63 = load i32, i32* %11
%64 = add i32 %63, 1
%65 = zext i32 %64 to i64
%66 = getelementptr inbounds i8, i8* %62, i64 %65
%67 = load i8, i8* %66
%68 = zext i8 %67 to i32
%69 = icmp eq i32 %68, 1
br i1 %69, label %70, label %73
70: ; preds = %57
%71 = load i32, i32* %15
%72 = add i32 %71, 1
store i32 %72, i32* %15
br label %73
73: ; preds = %70, %57
%74 = load i8*, i8** %13
%75 = load i32, i32* %12
%76 = sub i32 %75, 1
%77 = zext i32 %76 to i64
%78 = mul nsw i64 %77, %17
%79 = getelementptr inbounds i8, i8* %74, i64 %78
%80 = load i32, i32* %11
%81 = zext i32 %80 to i64
%82 = getelementptr inbounds i8, i8* %79, i64 %81
%83 = load i8, i8* %82
%84 = zext i8 %83 to i32
%85 = icmp eq i32 %84, 1
br i1 %85, label %86, label %89
86: ; preds = %73
%87 = load i32, i32* %15
%88 = add i32 %87, 1
store i32 %88, i32* %15
br label %89
89: ; preds = %86, %73
%90 = load i8*, i8** %13
%91 = load i32, i32* %12
%92 = add i32 %91, 1
%93 = zext i32 %92 to i64
%94 = mul nsw i64 %93, %17
%95 = getelementptr inbounds i8, i8* %90, i64 %94
%96 = load i32, i32* %11
%97 = zext i32 %96 to i64
%98 = getelementptr inbounds i8, i8* %95, i64 %97
%99 = load i8, i8* %98
%100 = zext i8 %99 to i32
%101 = icmp eq i32 %100, 1
br i1 %101, label %102, label %105
102: ; preds = %89
%103 = load i32, i32* %15
%104 = add i32 %103, 1
store i32 %104, i32* %15
br label %105
105: ; preds = %102, %89
%106 = load i8*, i8** %13
%107 = load i32, i32* %12
%108 = sub i32 %107, 1
%109 = zext i32 %108 to i64
%110 = mul nsw i64 %109, %17
%111 = getelementptr inbounds i8, i8* %106, i64 %110
%112 = load i32, i32* %11
%113 = sub i32 %112, 1
%114 = zext i32 %113 to i64
%115 = getelementptr inbounds i8, i8* %111, i64 %114
%116 = load i8, i8* %115
%117 = zext i8 %116 to i32
%118 = icmp eq i32 %117, 1
br i1 %118, label %119, label %122
119: ; preds = %105
%120 = load i32, i32* %15
%121 = add i32 %120, 1
store i32 %121, i32* %15
br label %122
122: ; preds = %119, %105
%123 = load i8*, i8** %13
%124 = load i32, i32* %12
%125 = sub i32 %124, 1
%126 = zext i32 %125 to i64
%127 = mul nsw i64 %126, %17
%128 = getelementptr inbounds i8, i8* %123, i64 %127
%129 = load i32, i32* %11
%130 = add i32 %129, 1
%131 = zext i32 %130 to i64
%132 = getelementptr inbounds i8, i8* %128, i64 %131
%133 = load i8, i8* %132
%134 = zext i8 %133 to i32
%135 = icmp eq i32 %134, 1
br i1 %135, label %136, label %139
136: ; preds = %122
%137 = load i32, i32* %15
%138 = add i32 %137, 1
store i32 %138, i32* %15
br label %139
139: ; preds = %136, %122
%140 = load i8*, i8** %13
%141 = load i32, i32* %12
%142 = add i32 %141, 1
%143 = zext i32 %142 to i64
%144 = mul nsw i64 %143, %17
%145 = getelementptr inbounds i8, i8* %140, i64 %144
%146 = load i32, i32* %11
%147 = sub i32 %146, 1
%148 = zext i32 %147 to i64
%149 = getelementptr inbounds i8, i8* %145, i64 %148
%150 = load i8, i8* %149
%151 = zext i8 %150 to i32
%152 = icmp eq i32 %151, 1
br i1 %152, label %153, label %156
153: ; preds = %139
%154 = load i32, i32* %15
%155 = add i32 %154, 1
store i32 %155, i32* %15
br label %156
156: ; preds = %153, %139
%157 = load i8*, i8** %13
%158 = load i32, i32* %12
%159 = add i32 %158, 1
%160 = zext i32 %159 to i64
%161 = mul nsw i64 %160, %17
%162 = getelementptr inbounds i8, i8* %157, i64 %161
%163 = load i32, i32* %11
%164 = add i32 %163, 1
%165 = zext i32 %164 to i64
%166 = getelementptr inbounds i8, i8* %162, i64 %165
%167 = load i8, i8* %166
%168 = zext i8 %167 to i32
%169 = icmp eq i32 %168, 1
br i1 %169, label %170, label %173
170: ; preds = %156
%171 = load i32, i32* %15
%172 = add i32 %171, 1
store i32 %172, i32* %15
br label %173
173: ; preds = %170, %156
br label %1272
174: ; preds = %36, %33, %28, %6
%175 = load i32, i32* %11
%176 = icmp ugt i32 %175, 0
br i1 %176, label %177, label %318
177: ; preds = %174
%178 = load i32, i32* %11
%179 = load i32, i32* %9
%180 = sub i32 %179, 1
%181 = icmp ult i32 %178, %180
br i1 %181, label %182, label %318
182: ; preds = %177
%183 = load i32, i32* %12
%184 = icmp eq i32 %183, 0
br i1 %184, label %185, label %318
185: ; preds = %182
%186 = load i8*, i8** %13
%187 = load i32, i32* %12
%188 = zext i32 %187 to i64
%189 = mul nsw i64 %188, %17
%190 = getelementptr inbounds i8, i8* %186, i64 %189
%191 = load i32, i32* %11
%192 = sub i32 %191, 1
%193 = zext i32 %192 to i64
%194 = getelementptr inbounds i8, i8* %190, i64 %193
%195 = load i8, i8* %194
%196 = zext i8 %195 to i32
%197 = icmp eq i32 %196, 1
br i1 %197, label %198, label %201
198: ; preds = %185
%199 = load i32, i32* %15
%200 = add i32 %199, 1
store i32 %200, i32* %15
br label %201
201: ; preds = %198, %185
%202 = load i8*, i8** %13
%203 = load i32, i32* %12
%204 = zext i32 %203 to i64
%205 = mul nsw i64 %204, %17
%206 = getelementptr inbounds i8, i8* %202, i64 %205
%207 = load i32, i32* %11
%208 = add i32 %207, 1
%209 = zext i32 %208 to i64
%210 = getelementptr inbounds i8, i8* %206, i64 %209
%211 = load i8, i8* %210
%212 = zext i8 %211 to i32
%213 = icmp eq i32 %212, 1
br i1 %213, label %214, label %217
214: ; preds = %201
%215 = load i32, i32* %15
%216 = add i32 %215, 1
store i32 %216, i32* %15
br label %217
217: ; preds = %214, %201
%218 = load i8*, i8** %13
%219 = load i32, i32* %10
%220 = sub i32 %219, 1
%221 = zext i32 %220 to i64
%222 = mul nsw i64 %221, %17
%223 = getelementptr inbounds i8, i8* %218, i64 %222
%224 = load i32, i32* %11
%225 = zext i32 %224 to i64
%226 = getelementptr inbounds i8, i8* %223, i64 %225
%227 = load i8, i8* %226
%228 = zext i8 %227 to i32
%229 = icmp eq i32 %228, 1
br i1 %229, label %230, label %233
230: ; preds = %217
%231 = load i32, i32* %15
%232 = add i32 %231, 1
store i32 %232, i32* %15
br label %233
233: ; preds = %230, %217
%234 = load i8*, i8** %13
%235 = load i32, i32* %12
%236 = add i32 %235, 1
%237 = zext i32 %236 to i64
%238 = mul nsw i64 %237, %17
%239 = getelementptr inbounds i8, i8* %234, i64 %238
%240 = load i32, i32* %11
%241 = zext i32 %240 to i64
%242 = getelementptr inbounds i8, i8* %239, i64 %241
%243 = load i8, i8* %242
%244 = zext i8 %243 to i32
%245 = icmp eq i32 %244, 1
br i1 %245, label %246, label %249
246: ; preds = %233
%247 = load i32, i32* %15
%248 = add i32 %247, 1
store i32 %248, i32* %15
br label %249
249: ; preds = %246, %233
%250 = load i8*, i8** %13
%251 = load i32, i32* %10
%252 = sub i32 %251, 1
%253 = zext i32 %252 to i64
%254 = mul nsw i64 %253, %17
%255 = getelementptr inbounds i8, i8* %250, i64 %254
%256 = load i32, i32* %11
%257 = sub i32 %256, 1
%258 = zext i32 %257 to i64
%259 = getelementptr inbounds i8, i8* %255, i64 %258
%260 = load i8, i8* %259
%261 = zext i8 %260 to i32
%262 = icmp eq i32 %261, 1
br i1 %262, label %263, label %266
263: ; preds = %249
%264 = load i32, i32* %15
%265 = add i32 %264, 1
store i32 %265, i32* %15
br label %266
266: ; preds = %263, %249
%267 = load i8*, i8** %13
%268 = load i32, i32* %10
%269 = sub i32 %268, 1
%270 = zext i32 %269 to i64
%271 = mul nsw i64 %270, %17
%272 = getelementptr inbounds i8, i8* %267, i64 %271
%273 = load i32, i32* %11
%274 = add i32 %273, 1
%275 = zext i32 %274 to i64
%276 = getelementptr inbounds i8, i8* %272, i64 %275
%277 = load i8, i8* %276
%278 = zext i8 %277 to i32
%279 = icmp eq i32 %278, 1
br i1 %279, label %280, label %283
280: ; preds = %266
%281 = load i32, i32* %15
%282 = add i32 %281, 1
store i32 %282, i32* %15
br label %283
283: ; preds = %280, %266
%284 = load i8*, i8** %13
%285 = load i32, i32* %12
%286 = add i32 %285, 1
%287 = zext i32 %286 to i64
%288 = mul nsw i64 %287, %17
%289 = getelementptr inbounds i8, i8* %284, i64 %288
%290 = load i32, i32* %11
%291 = sub i32 %290, 1
%292 = zext i32 %291 to i64
%293 = getelementptr inbounds i8, i8* %289, i64 %292
%294 = load i8, i8* %293
%295 = zext i8 %294 to i32
%296 = icmp eq i32 %295, 1
br i1 %296, label %297, label %300
297: ; preds = %283
%298 = load i32, i32* %15
%299 = add i32 %298, 1
store i32 %299, i32* %15
br label %300
300: ; preds = %297, %283
%301 = load i8*, i8** %13
%302 = load i32, i32* %12
%303 = add i32 %302, 1
%304 = zext i32 %303 to i64
%305 = mul nsw i64 %304, %17
%306 = getelementptr inbounds i8, i8* %301, i64 %305
%307 = load i32, i32* %11
%308 = add i32 %307, 1
%309 = zext i32 %308 to i64
%310 = getelementptr inbounds i8, i8* %306, i64 %309
%311 = load i8, i8* %310
%312 = zext i8 %311 to i32
%313 = icmp eq i32 %312, 1
br i1 %313, label %314, label %317
314: ; preds = %300
%315 = load i32, i32* %15
%316 = add i32 %315, 1
store i32 %316, i32* %15
br label %317
317: ; preds = %314, %300
br label %1271
318: ; preds = %182, %177, %174
%319 = load i32, i32* %11
%320 = icmp ugt i32 %319, 0
br i1 %320, label %321, label %455
321: ; preds = %318
%322 = load i32, i32* %11
%323 = load i32, i32* %9
%324 = sub i32 %323, 1
%325 = icmp ult i32 %322, %324
br i1 %325, label %326, label %455
326: ; preds = %321
%327 = load i32, i32* %12
%328 = load i32, i32* %10
%329 = sub i32 %328, 1
%330 = icmp eq i32 %327, %329
br i1 %330, label %331, label %455
331: ; preds = %326
%332 = load i8*, i8** %13
%333 = load i32, i32* %12
%334 = zext i32 %333 to i64
%335 = mul nsw i64 %334, %17
%336 = getelementptr inbounds i8, i8* %332, i64 %335
%337 = load i32, i32* %11
%338 = sub i32 %337, 1
%339 = zext i32 %338 to i64
%340 = getelementptr inbounds i8, i8* %336, i64 %339
%341 = load i8, i8* %340
%342 = zext i8 %341 to i32
%343 = icmp eq i32 %342, 1
br i1 %343, label %344, label %347
344: ; preds = %331
%345 = load i32, i32* %15
%346 = add i32 %345, 1
store i32 %346, i32* %15
br label %347
347: ; preds = %344, %331
%348 = load i8*, i8** %13
%349 = load i32, i32* %12
%350 = zext i32 %349 to i64
%351 = mul nsw i64 %350, %17
%352 = getelementptr inbounds i8, i8* %348, i64 %351
%353 = load i32, i32* %11
%354 = add i32 %353, 1
%355 = zext i32 %354 to i64
%356 = getelementptr inbounds i8, i8* %352, i64 %355
%357 = load i8, i8* %356
%358 = zext i8 %357 to i32
%359 = icmp eq i32 %358, 1
br i1 %359, label %360, label %363
360: ; preds = %347
%361 = load i32, i32* %15
%362 = add i32 %361, 1
store i32 %362, i32* %15
br label %363
363: ; preds = %360, %347
%364 = load i8*, i8** %13
%365 = load i32, i32* %12
%366 = sub i32 %365, 1
%367 = zext i32 %366 to i64
%368 = mul nsw i64 %367, %17
%369 = getelementptr inbounds i8, i8* %364, i64 %368
%370 = load i32, i32* %11
%371 = zext i32 %370 to i64
%372 = getelementptr inbounds i8, i8* %369, i64 %371
%373 = load i8, i8* %372
%374 = zext i8 %373 to i32
%375 = icmp eq i32 %374, 1
br i1 %375, label %376, label %379
376: ; preds = %363
%377 = load i32, i32* %15
%378 = add i32 %377, 1
store i32 %378, i32* %15
br label %379
379: ; preds = %376, %363
%380 = load i8*, i8** %13
%381 = mul nsw i64 0, %17
%382 = getelementptr inbounds i8, i8* %380, i64 %381
%383 = load i32, i32* %11
%384 = zext i32 %383 to i64
%385 = getelementptr inbounds i8, i8* %382, i64 %384
%386 = load i8, i8* %385
%387 = zext i8 %386 to i32
%388 = icmp eq i32 %387, 1
br i1 %388, label %389, label %392
389: ; preds = %379
%390 = load i32, i32* %15
%391 = add i32 %390, 1
store i32 %391, i32* %15
br label %392
392: ; preds = %389, %379
%393 = load i8*, i8** %13
%394 = load i32, i32* %12
%395 = sub i32 %394, 1
%396 = zext i32 %395 to i64
%397 = mul nsw i64 %396, %17
%398 = getelementptr inbounds i8, i8* %393, i64 %397
%399 = load i32, i32* %11
%400 = sub i32 %399, 1
%401 = zext i32 %400 to i64
%402 = getelementptr inbounds i8, i8* %398, i64 %401
%403 = load i8, i8* %402
%404 = zext i8 %403 to i32
%405 = icmp eq i32 %404, 1
br i1 %405, label %406, label %409
406: ; preds = %392
%407 = load i32, i32* %15
%408 = add i32 %407, 1
store i32 %408, i32* %15
br label %409
409: ; preds = %406, %392
%410 = load i8*, i8** %13
%411 = load i32, i32* %12
%412 = sub i32 %411, 1
%413 = zext i32 %412 to i64
%414 = mul nsw i64 %413, %17
%415 = getelementptr inbounds i8, i8* %410, i64 %414
%416 = load i32, i32* %11
%417 = add i32 %416, 1
%418 = zext i32 %417 to i64
%419 = getelementptr inbounds i8, i8* %415, i64 %418
%420 = load i8, i8* %419
%421 = zext i8 %420 to i32
%422 = icmp eq i32 %421, 1
br i1 %422, label %423, label %426
423: ; preds = %409
%424 = load i32, i32* %15
%425 = add i32 %424, 1
store i32 %425, i32* %15
br label %426
426: ; preds = %423, %409
%427 = load i8*, i8** %13
%428 = mul nsw i64 0, %17
%429 = getelementptr inbounds i8, i8* %427, i64 %428
%430 = load i32, i32* %11
%431 = sub i32 %430, 1
%432 = zext i32 %431 to i64
%433 = getelementptr inbounds i8, i8* %429, i64 %432
%434 = load i8, i8* %433
%435 = zext i8 %434 to i32
%436 = icmp eq i32 %435, 1
br i1 %436, label %437, label %440
437: ; preds = %426
%438 = load i32, i32* %15
%439 = add i32 %438, 1
store i32 %439, i32* %15
br label %440
440: ; preds = %437, %426
%441 = load i8*, i8** %13
%442 = mul nsw i64 0, %17
%443 = getelementptr inbounds i8, i8* %441, i64 %442
%444 = load i32, i32* %11
%445 = add i32 %444, 1
%446 = zext i32 %445 to i64
%447 = getelementptr inbounds i8, i8* %443, i64 %446
%448 = load i8, i8* %447
%449 = zext i8 %448 to i32
%450 = icmp eq i32 %449, 1
br i1 %450, label %451, label %454
451: ; preds = %440
%452 = load i32, i32* %15
%453 = add i32 %452, 1
store i32 %453, i32* %15
br label %454
454: ; preds = %451, %440
br label %1270
455: ; preds = %326, %321, %318
%456 = load i32, i32* %11
%457 = icmp eq i32 %456, 0
br i1 %457, label %458, label %599
458: ; preds = %455
%459 = load i32, i32* %12
%460 = icmp ugt i32 %459, 0
br i1 %460, label %461, label %599
461: ; preds = %458
%462 = load i32, i32* %12
%463 = load i32, i32* %10
%464 = sub i32 %463, 1
%465 = icmp ult i32 %462, %464
br i1 %465, label %466, label %599
466: ; preds = %461
%467 = load i8*, i8** %13
%468 = load i32, i32* %12
%469 = zext i32 %468 to i64
%470 = mul nsw i64 %469, %17
%471 = getelementptr inbounds i8, i8* %467, i64 %470
%472 = load i32, i32* %9
%473 = sub i32 %472, 1
%474 = zext i32 %473 to i64
%475 = getelementptr inbounds i8, i8* %471, i64 %474
%476 = load i8, i8* %475
%477 = zext i8 %476 to i32
%478 = icmp eq i32 %477, 1
br i1 %478, label %479, label %482
479: ; preds = %466
%480 = load i32, i32* %15
%481 = add i32 %480, 1
store i32 %481, i32* %15
br label %482
482: ; preds = %479, %466
%483 = load i8*, i8** %13
%484 = load i32, i32* %12
%485 = zext i32 %484 to i64
%486 = mul nsw i64 %485, %17
%487 = getelementptr inbounds i8, i8* %483, i64 %486
%488 = load i32, i32* %11
%489 = add i32 %488, 1
%490 = zext i32 %489 to i64
%491 = getelementptr inbounds i8, i8* %487, i64 %490
%492 = load i8, i8* %491
%493 = zext i8 %492 to i32
%494 = icmp eq i32 %493, 1
br i1 %494, label %495, label %498
495: ; preds = %482
%496 = load i32, i32* %15
%497 = add i32 %496, 1
store i32 %497, i32* %15
br label %498
498: ; preds = %495, %482
%499 = load i8*, i8** %13
%500 = load i32, i32* %12
%501 = sub i32 %500, 1
%502 = zext i32 %501 to i64
%503 = mul nsw i64 %502, %17
%504 = getelementptr inbounds i8, i8* %499, i64 %503
%505 = load i32, i32* %11
%506 = zext i32 %505 to i64
%507 = getelementptr inbounds i8, i8* %504, i64 %506
%508 = load i8, i8* %507
%509 = zext i8 %508 to i32
%510 = icmp eq i32 %509, 1
br i1 %510, label %511, label %514
511: ; preds = %498
%512 = load i32, i32* %15
%513 = add i32 %512, 1
store i32 %513, i32* %15
br label %514
514: ; preds = %511, %498
%515 = load i8*, i8** %13
%516 = load i32, i32* %12
%517 = add i32 %516, 1
%518 = zext i32 %517 to i64
%519 = mul nsw i64 %518, %17
%520 = getelementptr inbounds i8, i8* %515, i64 %519
%521 = load i32, i32* %11
%522 = zext i32 %521 to i64
%523 = getelementptr inbounds i8, i8* %520, i64 %522
%524 = load i8, i8* %523
%525 = zext i8 %524 to i32
%526 = icmp eq i32 %525, 1
br i1 %526, label %527, label %530
527: ; preds = %514
%528 = load i32, i32* %15
%529 = add i32 %528, 1
store i32 %529, i32* %15
br label %530
530: ; preds = %527, %514
%531 = load i8*, i8** %13
%532 = load i32, i32* %12
%533 = sub i32 %532, 1
%534 = zext i32 %533 to i64
%535 = mul nsw i64 %534, %17
%536 = getelementptr inbounds i8, i8* %531, i64 %535
%537 = load i32, i32* %9
%538 = sub i32 %537, 1
%539 = zext i32 %538 to i64
%540 = getelementptr inbounds i8, i8* %536, i64 %539
%541 = load i8, i8* %540
%542 = zext i8 %541 to i32
%543 = icmp eq i32 %542, 1
br i1 %543, label %544, label %547
544: ; preds = %530
%545 = load i32, i32* %15
%546 = add i32 %545, 1
store i32 %546, i32* %15
br label %547
547: ; preds = %544, %530
%548 = load i8*, i8** %13
%549 = load i32, i32* %12
%550 = sub i32 %549, 1
%551 = zext i32 %550 to i64
%552 = mul nsw i64 %551, %17
%553 = getelementptr inbounds i8, i8* %548, i64 %552
%554 = load i32, i32* %11
%555 = add i32 %554, 1
%556 = zext i32 %555 to i64
%557 = getelementptr inbounds i8, i8* %553, i64 %556
%558 = load i8, i8* %557
%559 = zext i8 %558 to i32
%560 = icmp eq i32 %559, 1
br i1 %560, label %561, label %564
561: ; preds = %547
%562 = load i32, i32* %15
%563 = add i32 %562, 1
store i32 %563, i32* %15
br label %564
564: ; preds = %561, %547
%565 = load i8*, i8** %13
%566 = load i32, i32* %12
%567 = add i32 %566, 1
%568 = zext i32 %567 to i64
%569 = mul nsw i64 %568, %17
%570 = getelementptr inbounds i8, i8* %565, i64 %569
%571 = load i32, i32* %9
%572 = sub i32 %571, 1
%573 = zext i32 %572 to i64
%574 = getelementptr inbounds i8, i8* %570, i64 %573
%575 = load i8, i8* %574
%576 = zext i8 %575 to i32
%577 = icmp eq i32 %576, 1
br i1 %577, label %578, label %581
578: ; preds = %564
%579 = load i32, i32* %15
%580 = add i32 %579, 1
store i32 %580, i32* %15
br label %581
581: ; preds = %578, %564
%582 = load i8*, i8** %13
%583 = load i32, i32* %12
%584 = add i32 %583, 1
%585 = zext i32 %584 to i64
%586 = mul nsw i64 %585, %17
%587 = getelementptr inbounds i8, i8* %582, i64 %586
%588 = load i32, i32* %11
%589 = add i32 %588, 1
%590 = zext i32 %589 to i64
%591 = getelementptr inbounds i8, i8* %587, i64 %590
%592 = load i8, i8* %591
%593 = zext i8 %592 to i32
%594 = icmp eq i32 %593, 1
br i1 %594, label %595, label %598
595: ; preds = %581
%596 = load i32, i32* %15
%597 = add i32 %596, 1
store i32 %597, i32* %15
br label %598
598: ; preds = %595, %581
br label %1269
599: ; preds = %461, %458, %455
%600 = load i32, i32* %11
%601 = load i32, i32* %9
%602 = sub i32 %601, 1
%603 = icmp eq i32 %600, %602
br i1 %603, label %604, label %736
604: ; preds = %599
%605 = load i32, i32* %12
%606 = icmp ugt i32 %605, 0
br i1 %606, label %607, label %736
607: ; preds = %604
%608 = load i32, i32* %12
%609 = load i32, i32* %10
%610 = sub i32 %609, 1
%611 = icmp ult i32 %608, %610
br i1 %611, label %612, label %736
612: ; preds = %607
%613 = load i8*, i8** %13
%614 = load i32, i32* %12
%615 = zext i32 %614 to i64
%616 = mul nsw i64 %615, %17
%617 = getelementptr inbounds i8, i8* %613, i64 %616
%618 = load i32, i32* %11
%619 = sub i32 %618, 1
%620 = zext i32 %619 to i64
%621 = getelementptr inbounds i8, i8* %617, i64 %620
%622 = load i8, i8* %621
%623 = zext i8 %622 to i32
%624 = icmp eq i32 %623, 1
br i1 %624, label %625, label %628
625: ; preds = %612
%626 = load i32, i32* %15
%627 = add i32 %626, 1
store i32 %627, i32* %15
br label %628
628: ; preds = %625, %612
%629 = load i8*, i8** %13
%630 = load i32, i32* %12
%631 = zext i32 %630 to i64
%632 = mul nsw i64 %631, %17
%633 = getelementptr inbounds i8, i8* %629, i64 %632
%634 = getelementptr inbounds i8, i8* %633, i64 0
%635 = load i8, i8* %634
%636 = zext i8 %635 to i32
%637 = icmp eq i32 %636, 1
br i1 %637, label %638, label %641
638: ; preds = %628
%639 = load i32, i32* %15
%640 = add i32 %639, 1
store i32 %640, i32* %15
br label %641
641: ; preds = %638, %628
%642 = load i8*, i8** %13
%643 = load i32, i32* %12
%644 = sub i32 %643, 1
%645 = zext i32 %644 to i64
%646 = mul nsw i64 %645, %17
%647 = getelementptr inbounds i8, i8* %642, i64 %646
%648 = load i32, i32* %11
%649 = zext i32 %648 to i64
%650 = getelementptr inbounds i8, i8* %647, i64 %649
%651 = load i8, i8* %650
%652 = zext i8 %651 to i32
%653 = icmp eq i32 %652, 1
br i1 %653, label %654, label %657
654: ; preds = %641
%655 = load i32, i32* %15
%656 = add i32 %655, 1
store i32 %656, i32* %15
br label %657
657: ; preds = %654, %641
%658 = load i8*, i8** %13
%659 = load i32, i32* %12
%660 = add i32 %659, 1
%661 = zext i32 %660 to i64
%662 = mul nsw i64 %661, %17
%663 = getelementptr inbounds i8, i8* %658, i64 %662
%664 = load i32, i32* %11
%665 = zext i32 %664 to i64
%666 = getelementptr inbounds i8, i8* %663, i64 %665
%667 = load i8, i8* %666
%668 = zext i8 %667 to i32
%669 = icmp eq i32 %668, 1
br i1 %669, label %670, label %673
670: ; preds = %657
%671 = load i32, i32* %15
%672 = add i32 %671, 1
store i32 %672, i32* %15
br label %673
673: ; preds = %670, %657
%674 = load i8*, i8** %13
%675 = load i32, i32* %12
%676 = sub i32 %675, 1
%677 = zext i32 %676 to i64
%678 = mul nsw i64 %677, %17
%679 = getelementptr inbounds i8, i8* %674, i64 %678
%680 = load i32, i32* %11
%681 = sub i32 %680, 1
%682 = zext i32 %681 to i64
%683 = getelementptr inbounds i8, i8* %679, i64 %682
%684 = load i8, i8* %683
%685 = zext i8 %684 to i32
%686 = icmp eq i32 %685, 1
br i1 %686, label %687, label %690
687: ; preds = %673
%688 = load i32, i32* %15
%689 = add i32 %688, 1
store i32 %689, i32* %15
br label %690
690: ; preds = %687, %673
%691 = load i8*, i8** %13
%692 = load i32, i32* %12
%693 = sub i32 %692, 1
%694 = zext i32 %693 to i64
%695 = mul nsw i64 %694, %17
%696 = getelementptr inbounds i8, i8* %691, i64 %695
%697 = getelementptr inbounds i8, i8* %696, i64 0
%698 = load i8, i8* %697
%699 = zext i8 %698 to i32
%700 = icmp eq i32 %699, 1
br i1 %700, label %701, label %704
701: ; preds = %690
%702 = load i32, i32* %15
%703 = add i32 %702, 1
store i32 %703, i32* %15
br label %704
704: ; preds = %701, %690
%705 = load i8*, i8** %13
%706 = load i32, i32* %12
%707 = add i32 %706, 1
%708 = zext i32 %707 to i64
%709 = mul nsw i64 %708, %17
%710 = getelementptr inbounds i8, i8* %705, i64 %709
%711 = load i32, i32* %11
%712 = sub i32 %711, 1
%713 = zext i32 %712 to i64
%714 = getelementptr inbounds i8, i8* %710, i64 %713
%715 = load i8, i8* %714
%716 = zext i8 %715 to i32
%717 = icmp eq i32 %716, 1
br i1 %717, label %718, label %721
718: ; preds = %704
%719 = load i32, i32* %15
%720 = add i32 %719, 1
store i32 %720, i32* %15
br label %721
721: ; preds = %718, %704
%722 = load i8*, i8** %13
%723 = load i32, i32* %12
%724 = add i32 %723, 1
%725 = zext i32 %724 to i64
%726 = mul nsw i64 %725, %17
%727 = getelementptr inbounds i8, i8* %722, i64 %726
%728 = getelementptr inbounds i8, i8* %727, i64 0
%729 = load i8, i8* %728
%730 = zext i8 %729 to i32
%731 = icmp eq i32 %730, 1
br i1 %731, label %732, label %735
732: ; preds = %721
%733 = load i32, i32* %15
%734 = add i32 %733, 1
store i32 %734, i32* %15
br label %735
735: ; preds = %732, %721
br label %1268
736: ; preds = %607, %604, %599
%737 = load i32, i32* %11
%738 = icmp eq i32 %737, 0
br i1 %738, label %739, label %875
739: ; preds = %736
%740 = load i32, i32* %12
%741 = icmp eq i32 %740, 0
br i1 %741, label %742, label %875
742: ; preds = %739
%743 = load i8*, i8** %13
%744 = load i32, i32* %12
%745 = zext i32 %744 to i64
%746 = mul nsw i64 %745, %17
%747 = getelementptr inbounds i8, i8* %743, i64 %746
%748 = load i32, i32* %9
%749 = sub i32 %748, 1
%750 = zext i32 %749 to i64
%751 = getelementptr inbounds i8, i8* %747, i64 %750
%752 = load i8, i8* %751
%753 = zext i8 %752 to i32
%754 = icmp eq i32 %753, 1
br i1 %754, label %755, label %758
755: ; preds = %742
%756 = load i32, i32* %15
%757 = add i32 %756, 1
store i32 %757, i32* %15
br label %758
758: ; preds = %755, %742
%759 = load i8*, i8** %13
%760 = load i32, i32* %12
%761 = zext i32 %760 to i64
%762 = mul nsw i64 %761, %17
%763 = getelementptr inbounds i8, i8* %759, i64 %762
%764 = load i32, i32* %11
%765 = add i32 %764, 1
%766 = zext i32 %765 to i64
%767 = getelementptr inbounds i8, i8* %763, i64 %766
%768 = load i8, i8* %767
%769 = zext i8 %768 to i32
%770 = icmp eq i32 %769, 1
br i1 %770, label %771, label %774
771: ; preds = %758
%772 = load i32, i32* %15
%773 = add i32 %772, 1
store i32 %773, i32* %15
br label %774
774: ; preds = %771, %758
%775 = load i8*, i8** %13
%776 = load i32, i32* %10
%777 = sub i32 %776, 1
%778 = zext i32 %777 to i64
%779 = mul nsw i64 %778, %17
%780 = getelementptr inbounds i8, i8* %775, i64 %779
%781 = load i32, i32* %11
%782 = zext i32 %781 to i64
%783 = getelementptr inbounds i8, i8* %780, i64 %782
%784 = load i8, i8* %783
%785 = zext i8 %784 to i32
%786 = icmp eq i32 %785, 1
br i1 %786, label %787, label %790
787: ; preds = %774
%788 = load i32, i32* %15
%789 = add i32 %788, 1
store i32 %789, i32* %15
br label %790
790: ; preds = %787, %774
%791 = load i8*, i8** %13
%792 = load i32, i32* %12
%793 = add i32 %792, 1
%794 = zext i32 %793 to i64
%795 = mul nsw i64 %794, %17
%796 = getelementptr inbounds i8, i8* %791, i64 %795
%797 = load i32, i32* %11
%798 = zext i32 %797 to i64
%799 = getelementptr inbounds i8, i8* %796, i64 %798
%800 = load i8, i8* %799
%801 = zext i8 %800 to i32
%802 = icmp eq i32 %801, 1
br i1 %802, label %803, label %806
803: ; preds = %790
%804 = load i32, i32* %15
%805 = add i32 %804, 1
store i32 %805, i32* %15
br label %806
806: ; preds = %803, %790
%807 = load i8*, i8** %13
%808 = load i32, i32* %10
%809 = sub i32 %808, 1
%810 = zext i32 %809 to i64
%811 = mul nsw i64 %810, %17
%812 = getelementptr inbounds i8, i8* %807, i64 %811
%813 = load i32, i32* %9
%814 = sub i32 %813, 1
%815 = zext i32 %814 to i64
%816 = getelementptr inbounds i8, i8* %812, i64 %815
%817 = load i8, i8* %816
%818 = zext i8 %817 to i32
%819 = icmp eq i32 %818, 1
br i1 %819, label %820, label %823
820: ; preds = %806
%821 = load i32, i32* %15
%822 = add i32 %821, 1
store i32 %822, i32* %15
br label %823
823: ; preds = %820, %806
%824 = load i8*, i8** %13
%825 = load i32, i32* %10
%826 = sub i32 %825, 1
%827 = zext i32 %826 to i64
%828 = mul nsw i64 %827, %17
%829 = getelementptr inbounds i8, i8* %824, i64 %828
%830 = load i32, i32* %11
%831 = add i32 %830, 1
%832 = zext i32 %831 to i64
%833 = getelementptr inbounds i8, i8* %829, i64 %832
%834 = load i8, i8* %833
%835 = zext i8 %834 to i32
%836 = icmp eq i32 %835, 1
br i1 %836, label %837, label %840
837: ; preds = %823
%838 = load i32, i32* %15
%839 = add i32 %838, 1
store i32 %839, i32* %15
br label %840
840: ; preds = %837, %823
%841 = load i8*, i8** %13
%842 = load i32, i32* %12
%843 = add i32 %842, 1
%844 = zext i32 %843 to i64
%845 = mul nsw i64 %844, %17
%846 = getelementptr inbounds i8, i8* %841, i64 %845
%847 = load i32, i32* %9
%848 = sub i32 %847, 1
%849 = zext i32 %848 to i64
%850 = getelementptr inbounds i8, i8* %846, i64 %849
%851 = load i8, i8* %850
%852 = zext i8 %851 to i32
%853 = icmp eq i32 %852, 1
br i1 %853, label %854, label %857
854: ; preds = %840
%855 = load i32, i32* %15
%856 = add i32 %855, 1
store i32 %856, i32* %15
br label %857
857: ; preds = %854, %840
%858 = load i8*, i8** %13
%859 = load i32, i32* %12
%860 = add i32 %859, 1
%861 = zext i32 %860 to i64
%862 = mul nsw i64 %861, %17
%863 = getelementptr inbounds i8, i8* %858, i64 %862
%864 = load i32, i32* %11
%865 = add i32 %864, 1
%866 = zext i32 %865 to i64
%867 = getelementptr inbounds i8, i8* %863, i64 %866
%868 = load i8, i8* %867
%869 = zext i8 %868 to i32
%870 = icmp eq i32 %869, 1
br i1 %870, label %871, label %874
871: ; preds = %857
%872 = load i32, i32* %15
%873 = add i32 %872, 1
store i32 %873, i32* %15
br label %874
874: ; preds = %871, %857
br label %1267
875: ; preds = %739, %736
%876 = load i32, i32* %11
%877 = icmp eq i32 %876, 0
br i1 %877, label %878, label %1007
878: ; preds = %875
%879 = load i32, i32* %12
%880 = load i32, i32* %10
%881 = sub i32 %880, 1
%882 = icmp eq i32 %879, %881
br i1 %882, label %883, label %1007
883: ; preds = %878
%884 = load i8*, i8** %13
%885 = load i32, i32* %12
%886 = zext i32 %885 to i64
%887 = mul nsw i64 %886, %17
%888 = getelementptr inbounds i8, i8* %884, i64 %887
%889 = load i32, i32* %9
%890 = sub i32 %889, 1
%891 = zext i32 %890 to i64
%892 = getelementptr inbounds i8, i8* %888, i64 %891
%893 = load i8, i8* %892
%894 = zext i8 %893 to i32
%895 = icmp eq i32 %894, 1
br i1 %895, label %896, label %899
896: ; preds = %883
%897 = load i32, i32* %15
%898 = add i32 %897, 1
store i32 %898, i32* %15
br label %899
899: ; preds = %896, %883
%900 = load i8*, i8** %13
%901 = load i32, i32* %12
%902 = zext i32 %901 to i64
%903 = mul nsw i64 %902, %17
%904 = getelementptr inbounds i8, i8* %900, i64 %903
%905 = load i32, i32* %11
%906 = add i32 %905, 1
%907 = zext i32 %906 to i64
%908 = getelementptr inbounds i8, i8* %904, i64 %907
%909 = load i8, i8* %908
%910 = zext i8 %909 to i32
%911 = icmp eq i32 %910, 1
br i1 %911, label %912, label %915
912: ; preds = %899
%913 = load i32, i32* %15
%914 = add i32 %913, 1
store i32 %914, i32* %15
br label %915
915: ; preds = %912, %899
%916 = load i8*, i8** %13
%917 = load i32, i32* %12
%918 = sub i32 %917, 1
%919 = zext i32 %918 to i64
%920 = mul nsw i64 %919, %17
%921 = getelementptr inbounds i8, i8* %916, i64 %920
%922 = load i32, i32* %11
%923 = zext i32 %922 to i64
%924 = getelementptr inbounds i8, i8* %921, i64 %923
%925 = load i8, i8* %924
%926 = zext i8 %925 to i32
%927 = icmp eq i32 %926, 1
br i1 %927, label %928, label %931
928: ; preds = %915
%929 = load i32, i32* %15
%930 = add i32 %929, 1
store i32 %930, i32* %15
br label %931
931: ; preds = %928, %915
%932 = load i8*, i8** %13
%933 = mul nsw i64 0, %17
%934 = getelementptr inbounds i8, i8* %932, i64 %933
%935 = load i32, i32* %11
%936 = zext i32 %935 to i64
%937 = getelementptr inbounds i8, i8* %934, i64 %936
%938 = load i8, i8* %937
%939 = zext i8 %938 to i32
%940 = icmp eq i32 %939, 1
br i1 %940, label %941, label %944
941: ; preds = %931
%942 = load i32, i32* %15
%943 = add i32 %942, 1
store i32 %943, i32* %15
br label %944
944: ; preds = %941, %931
%945 = load i8*, i8** %13
%946 = load i32, i32* %12
%947 = sub i32 %946, 1
%948 = zext i32 %947 to i64
%949 = mul nsw i64 %948, %17
%950 = getelementptr inbounds i8, i8* %945, i64 %949
%951 = load i32, i32* %9
%952 = sub i32 %951, 1
%953 = zext i32 %952 to i64
%954 = getelementptr inbounds i8, i8* %950, i64 %953
%955 = load i8, i8* %954
%956 = zext i8 %955 to i32
%957 = icmp eq i32 %956, 1
br i1 %957, label %958, label %961
958: ; preds = %944
%959 = load i32, i32* %15
%960 = add i32 %959, 1
store i32 %960, i32* %15
br label %961
961: ; preds = %958, %944
%962 = load i8*, i8** %13
%963 = load i32, i32* %12
%964 = sub i32 %963, 1
%965 = zext i32 %964 to i64
%966 = mul nsw i64 %965, %17
%967 = getelementptr inbounds i8, i8* %962, i64 %966
%968 = load i32, i32* %11
%969 = add i32 %968, 1
%970 = zext i32 %969 to i64
%971 = getelementptr inbounds i8, i8* %967, i64 %970
%972 = load i8, i8* %971
%973 = zext i8 %972 to i32
%974 = icmp eq i32 %973, 1
br i1 %974, label %975, label %978
975: ; preds = %961
%976 = load i32, i32* %15
%977 = add i32 %976, 1
store i32 %977, i32* %15
br label %978
978: ; preds = %975, %961
%979 = load i8*, i8** %13
%980 = mul nsw i64 0, %17
%981 = getelementptr inbounds i8, i8* %979, i64 %980
%982 = load i32, i32* %9
%983 = sub i32 %982, 1
%984 = zext i32 %983 to i64
%985 = getelementptr inbounds i8, i8* %981, i64 %984
%986 = load i8, i8* %985
%987 = zext i8 %986 to i32
%988 = icmp eq i32 %987, 1
br i1 %988, label %989, label %992
989: ; preds = %978
%990 = load i32, i32* %15
%991 = add i32 %990, 1
store i32 %991, i32* %15
br label %992
992: ; preds = %989, %978
%993 = load i8*, i8** %13
%994 = mul nsw i64 0, %17
%995 = getelementptr inbounds i8, i8* %993, i64 %994
%996 = load i32, i32* %11
%997 = add i32 %996, 1
%998 = zext i32 %997 to i64
%999 = getelementptr inbounds i8, i8* %995, i64 %998
%1000 = load i8, i8* %999
%1001 = zext i8 %1000 to i32
%1002 = icmp eq i32 %1001, 1
br i1 %1002, label %1003, label %1006
1003: ; preds = %992
%1004 = load i32, i32* %15
%1005 = add i32 %1004, 1
store i32 %1005, i32* %15
br label %1006
1006: ; preds = %1003, %992
br label %1266
1007: ; preds = %878, %875
%1008 = load i32, i32* %11
%1009 = load i32, i32* %9
%1010 = sub i32 %1009, 1
%1011 = icmp eq i32 %1008, %1010
br i1 %1011, label %1012, label %1139
1012: ; preds = %1007
%1013 = load i32, i32* %12
%1014 = icmp eq i32 %1013, 0
br i1 %1014, label %1015, label %1139
1015: ; preds = %1012
%1016 = load i8*, i8** %13
%1017 = load i32, i32* %12
%1018 = zext i32 %1017 to i64
%1019 = mul nsw i64 %1018, %17
%1020 = getelementptr inbounds i8, i8* %1016, i64 %1019
%1021 = load i32, i32* %11
%1022 = sub i32 %1021, 1
%1023 = zext i32 %1022 to i64
%1024 = getelementptr inbounds i8, i8* %1020, i64 %1023
%1025 = load i8, i8* %1024
%1026 = zext i8 %1025 to i32
%1027 = icmp eq i32 %1026, 1
br i1 %1027, label %1028, label %1031
1028: ; preds = %1015
%1029 = load i32, i32* %15
%1030 = add i32 %1029, 1
store i32 %1030, i32* %15
br label %1031
1031: ; preds = %1028, %1015
%1032 = load i8*, i8** %13
%1033 = load i32, i32* %12
%1034 = zext i32 %1033 to i64
%1035 = mul nsw i64 %1034, %17
%1036 = getelementptr inbounds i8, i8* %1032, i64 %1035
%1037 = getelementptr inbounds i8, i8* %1036, i64 0
%1038 = load i8, i8* %1037
%1039 = zext i8 %1038 to i32
%1040 = icmp eq i32 %1039, 1
br i1 %1040, label %1041, label %1044
1041: ; preds = %1031
%1042 = load i32, i32* %15
%1043 = add i32 %1042, 1
store i32 %1043, i32* %15
br label %1044
1044: ; preds = %1041, %1031
%1045 = load i8*, i8** %13
%1046 = load i32, i32* %10
%1047 = sub i32 %1046, 1
%1048 = zext i32 %1047 to i64
%1049 = mul nsw i64 %1048, %17
%1050 = getelementptr inbounds i8, i8* %1045, i64 %1049
%1051 = load i32, i32* %11
%1052 = zext i32 %1051 to i64
%1053 = getelementptr inbounds i8, i8* %1050, i64 %1052
%1054 = load i8, i8* %1053
%1055 = zext i8 %1054 to i32
%1056 = icmp eq i32 %1055, 1
br i1 %1056, label %1057, label %1060
1057: ; preds = %1044
%1058 = load i32, i32* %15
%1059 = add i32 %1058, 1
store i32 %1059, i32* %15
br label %1060
1060: ; preds = %1057, %1044
%1061 = load i8*, i8** %13
%1062 = load i32, i32* %12
%1063 = add i32 %1062, 1
%1064 = zext i32 %1063 to i64
%1065 = mul nsw i64 %1064, %17
%1066 = getelementptr inbounds i8, i8* %1061, i64 %1065
%1067 = load i32, i32* %11
%1068 = zext i32 %1067 to i64
%1069 = getelementptr inbounds i8, i8* %1066, i64 %1068
%1070 = load i8, i8* %1069
%1071 = zext i8 %1070 to i32
%1072 = icmp eq i32 %1071, 1
br i1 %1072, label %1073, label %1076
1073: ; preds = %1060
%1074 = load i32, i32* %15
%1075 = add i32 %1074, 1
store i32 %1075, i32* %15
br label %1076
1076: ; preds = %1073, %1060
%1077 = load i8*, i8** %13
%1078 = load i32, i32* %10
%1079 = sub i32 %1078, 1
%1080 = zext i32 %1079 to i64
%1081 = mul nsw i64 %1080, %17
%1082 = getelementptr inbounds i8, i8* %1077, i64 %1081
%1083 = load i32, i32* %11
%1084 = sub i32 %1083, 1
%1085 = zext i32 %1084 to i64
%1086 = getelementptr inbounds i8, i8* %1082, i64 %1085
%1087 = load i8, i8* %1086
%1088 = zext i8 %1087 to i32
%1089 = icmp eq i32 %1088, 1
br i1 %1089, label %1090, label %1093
1090: ; preds = %1076
%1091 = load i32, i32* %15
%1092 = add i32 %1091, 1
store i32 %1092, i32* %15
br label %1093
1093: ; preds = %1090, %1076
%1094 = load i8*, i8** %13
%1095 = load i32, i32* %10
%1096 = sub i32 %1095, 1
%1097 = zext i32 %1096 to i64
%1098 = mul nsw i64 %1097, %17
%1099 = getelementptr inbounds i8, i8* %1094, i64 %1098
%1100 = getelementptr inbounds i8, i8* %1099, i64 0
%1101 = load i8, i8* %1100
%1102 = zext i8 %1101 to i32
%1103 = icmp eq i32 %1102, 1
br i1 %1103, label %1104, label %1107
1104: ; preds = %1093
%1105 = load i32, i32* %15
%1106 = add i32 %1105, 1
store i32 %1106, i32* %15
br label %1107
1107: ; preds = %1104, %1093
%1108 = load i8*, i8** %13
%1109 = load i32, i32* %12
%1110 = add i32 %1109, 1
%1111 = zext i32 %1110 to i64
%1112 = mul nsw i64 %1111, %17
%1113 = getelementptr inbounds i8, i8* %1108, i64 %1112
%1114 = load i32, i32* %11
%1115 = sub i32 %1114, 1
%1116 = zext i32 %1115 to i64
%1117 = getelementptr inbounds i8, i8* %1113, i64 %1116
%1118 = load i8, i8* %1117
%1119 = zext i8 %1118 to i32
%1120 = icmp eq i32 %1119, 1
br i1 %1120, label %1121, label %1124
1121: ; preds = %1107
%1122 = load i32, i32* %15
%1123 = add i32 %1122, 1
store i32 %1123, i32* %15
br label %1124
1124: ; preds = %1121, %1107
%1125 = load i8*, i8** %13
%1126 = load i32, i32* %12
%1127 = add i32 %1126, 1
%1128 = zext i32 %1127 to i64
%1129 = mul nsw i64 %1128, %17
%1130 = getelementptr inbounds i8, i8* %1125, i64 %1129
%1131 = getelementptr inbounds i8, i8* %1130, i64 0
%1132 = load i8, i8* %1131
%1133 = zext i8 %1132 to i32
%1134 = icmp eq i32 %1133, 1
br i1 %1134, label %1135, label %1138
1135: ; preds = %1124
%1136 = load i32, i32* %15
%1137 = add i32 %1136, 1
store i32 %1137, i32* %15
br label %1138
1138: ; preds = %1135, %1124
br label %1265
1139: ; preds = %1012, %1007
%1140 = load i32, i32* %11
%1141 = load i32, i32* %9
%1142 = sub i32 %1141, 1
%1143 = icmp eq i32 %1140, %1142
br i1 %1143, label %1144, label %1264
1144: ; preds = %1139
%1145 = load i32, i32* %12
%1146 = load i32, i32* %10
%1147 = sub i32 %1146, 1
%1148 = icmp eq i32 %1145, %1147
br i1 %1148, label %1149, label %1264
1149: ; preds = %1144
%1150 = load i8*, i8** %13
%1151 = load i32, i32* %12
%1152 = zext i32 %1151 to i64
%1153 = mul nsw i64 %1152, %17
%1154 = getelementptr inbounds i8, i8* %1150, i64 %1153
%1155 = load i32, i32* %11
%1156 = sub i32 %1155, 1
%1157 = zext i32 %1156 to i64
%1158 = getelementptr inbounds i8, i8* %1154, i64 %1157
%1159 = load i8, i8* %1158
%1160 = zext i8 %1159 to i32
%1161 = icmp eq i32 %1160, 1
br i1 %1161, label %1162, label %1165
1162: ; preds = %1149
%1163 = load i32, i32* %15
%1164 = add i32 %1163, 1
store i32 %1164, i32* %15
br label %1165
1165: ; preds = %1162, %1149
%1166 = load i8*, i8** %13
%1167 = load i32, i32* %12
%1168 = zext i32 %1167 to i64
%1169 = mul nsw i64 %1168, %17
%1170 = getelementptr inbounds i8, i8* %1166, i64 %1169
%1171 = getelementptr inbounds i8, i8* %1170, i64 0
%1172 = load i8, i8* %1171
%1173 = zext i8 %1172 to i32
%1174 = icmp eq i32 %1173, 1
br i1 %1174, label %1175, label %1178
1175: ; preds = %1165
%1176 = load i32, i32* %15
%1177 = add i32 %1176, 1
store i32 %1177, i32* %15
br label %1178
1178: ; preds = %1175, %1165
%1179 = load i8*, i8** %13
%1180 = load i32, i32* %12
%1181 = sub i32 %1180, 1
%1182 = zext i32 %1181 to i64
%1183 = mul nsw i64 %1182, %17
%1184 = getelementptr inbounds i8, i8* %1179, i64 %1183
%1185 = load i32, i32* %11
%1186 = zext i32 %1185 to i64
%1187 = getelementptr inbounds i8, i8* %1184, i64 %1186
%1188 = load i8, i8* %1187
%1189 = zext i8 %1188 to i32
%1190 = icmp eq i32 %1189, 1
br i1 %1190, label %1191, label %1194
1191: ; preds = %1178
%1192 = load i32, i32* %15
%1193 = add i32 %1192, 1
store i32 %1193, i32* %15
br label %1194
1194: ; preds = %1191, %1178
%1195 = load i8*, i8** %13
%1196 = mul nsw i64 0, %17
%1197 = getelementptr inbounds i8, i8* %1195, i64 %1196
%1198 = load i32, i32* %11
%1199 = zext i32 %1198 to i64
%1200 = getelementptr inbounds i8, i8* %1197, i64 %1199
%1201 = load i8, i8* %1200
%1202 = zext i8 %1201 to i32
%1203 = icmp eq i32 %1202, 1
br i1 %1203, label %1204, label %1207
1204: ; preds = %1194
%1205 = load i32, i32* %15
%1206 = add i32 %1205, 1
store i32 %1206, i32* %15
br label %1207
1207: ; preds = %1204, %1194
%1208 = load i8*, i8** %13
%1209 = load i32, i32* %12
%1210 = sub i32 %1209, 1
%1211 = zext i32 %1210 to i64
%1212 = mul nsw i64 %1211, %17
%1213 = getelementptr inbounds i8, i8* %1208, i64 %1212
%1214 = load i32, i32* %11
%1215 = sub i32 %1214, 1
%1216 = zext i32 %1215 to i64
%1217 = getelementptr inbounds i8, i8* %1213, i64 %1216
%1218 = load i8, i8* %1217
%1219 = zext i8 %1218 to i32
%1220 = icmp eq i32 %1219, 1
br i1 %1220, label %1221, label %1224
1221: ; preds = %1207
%1222 = load i32, i32* %15
%1223 = add i32 %1222, 1
store i32 %1223, i32* %15
br label %1224
1224: ; preds = %1221, %1207
%1225 = load i8*, i8** %13
%1226 = load i32, i32* %12
%1227 = sub i32 %1226, 1
%1228 = zext i32 %1227 to i64
%1229 = mul nsw i64 %1228, %17
%1230 = getelementptr inbounds i8, i8* %1225, i64 %1229
%1231 = getelementptr inbounds i8, i8* %1230, i64 0
%1232 = load i8, i8* %1231
%1233 = zext i8 %1232 to i32
%1234 = icmp eq i32 %1233, 1
br i1 %1234, label %1235, label %1238
1235: ; preds = %1224
%1236 = load i32, i32* %15
%1237 = add i32 %1236, 1
store i32 %1237, i32* %15
br label %1238
1238: ; preds = %1235, %1224
%1239 = load i8*, i8** %13
%1240 = mul nsw i64 0, %17
%1241 = getelementptr inbounds i8, i8* %1239, i64 %1240
%1242 = load i32, i32* %11
%1243 = sub i32 %1242, 1
%1244 = zext i32 %1243 to i64
%1245 = getelementptr inbounds i8, i8* %1241, i64 %1244
%1246 = load i8, i8* %1245
%1247 = zext i8 %1246 to i32
%1248 = icmp eq i32 %1247, 1
br i1 %1248, label %1249, label %1252
1249: ; preds = %1238
%1250 = load i32, i32* %15
%1251 = add i32 %1250, 1
store i32 %1251, i32* %15
br label %1252
1252: ; preds = %1249, %1238
%1253 = load i8*, i8** %13
%1254 = mul nsw i64 0, %17
%1255 = getelementptr inbounds i8, i8* %1253, i64 %1254
%1256 = getelementptr inbounds i8, i8* %1255, i64 0
%1257 = load i8, i8* %1256
%1258 = zext i8 %1257 to i32
%1259 = icmp eq i32 %1258, 1
br i1 %1259, label %1260, label %1263
1260: ; preds = %1252
%1261 = load i32, i32* %15
%1262 = add i32 %1261, 1
store i32 %1262, i32* %15
br label %1263
1263: ; preds = %1260, %1252
br label %1264
1264: ; preds = %1263, %1144, %1139
br label %1265
1265: ; preds = %1264, %1138
br label %1266
1266: ; preds = %1265, %1006
br label %1267
1267: ; preds = %1266, %874
br label %1268
1268: ; preds = %1267, %735
br label %1269
1269: ; preds = %1268, %598
br label %1270
1270: ; preds = %1269, %454
br label %1271
1271: ; preds = %1270, %317
br label %1272
1272: ; preds = %1271, %173
%1273 = load i8*, i8** %13
%1274 = load i32, i32* %12
%1275 = zext i32 %1274 to i64
%1276 = mul nsw i64 %1275, %17
%1277 = getelementptr inbounds i8, i8* %1273, i64 %1276
%1278 = load i32, i32* %11
%1279 = zext i32 %1278 to i64
%1280 = getelementptr inbounds i8, i8* %1277, i64 %1279
%1281 = load i8, i8* %1280
%1282 = zext i8 %1281 to i32
%1283 = icmp eq i32 %1282, 1
br i1 %1283, label %1284, label %1299
1284: ; preds = %1272
%1285 = load i32, i32* %15
%1286 = icmp ult i32 %1285, 2
br i1 %1286, label %1290, label %1287
1287: ; preds = %1284
%1288 = load i32, i32* %15
%1289 = icmp ugt i32 %1288, 3
br i1 %1289, label %1290, label %1299
1290: ; preds = %1287, %1284
%1291 = load i8*, i8** %14
%1292 = load i32, i32* %12
%1293 = zext i32 %1292 to i64
%1294 = mul nsw i64 %1293, %22
%1295 = getelementptr inbounds i8, i8* %1291, i64 %1294
%1296 = load i32, i32* %11
%1297 = zext i32 %1296 to i64
%1298 = getelementptr inbounds i8, i8* %1295, i64 %1297
store i8 0, i8* %1298
br label %1342
1299: ; preds = %1287, %1272
%1300 = load i8*, i8** %13
%1301 = load i32, i32* %12
%1302 = zext i32 %1301 to i64
%1303 = mul nsw i64 %1302, %17
%1304 = getelementptr inbounds i8, i8* %1300, i64 %1303
%1305 = load i32, i32* %11
%1306 = zext i32 %1305 to i64
%1307 = getelementptr inbounds i8, i8* %1304, i64 %1306
%1308 = load i8, i8* %1307
%1309 = zext i8 %1308 to i32
%1310 = icmp eq i32 %1309, 0
br i1 %1310, label %1311, label %1323
1311: ; preds = %1299
%1312 = load i32, i32* %15
%1313 = icmp eq i32 %1312, 3
br i1 %1313, label %1314, label %1323
1314: ; preds = %1311
%1315 = load i8*, i8** %14
%1316 = load i32, i32* %12
%1317 = zext i32 %1316 to i64
%1318 = mul nsw i64 %1317, %22
%1319 = getelementptr inbounds i8, i8* %1315, i64 %1318
%1320 = load i32, i32* %11
%1321 = zext i32 %1320 to i64
%1322 = getelementptr inbounds i8, i8* %1319, i64 %1321
store i8 1, i8* %1322
br label %1341
1323: ; preds = %1311, %1299
%1324 = load i8*, i8** %13
%1325 = load i32, i32* %12
%1326 = zext i32 %1325 to i64
%1327 = mul nsw i64 %1326, %17
%1328 = getelementptr inbounds i8, i8* %1324, i64 %1327
%1329 = load i32, i32* %11
%1330 = zext i32 %1329 to i64
%1331 = getelementptr inbounds i8, i8* %1328, i64 %1330
%1332 = load i8, i8* %1331
%1333 = load i8*, i8** %14
%1334 = load i32, i32* %12
%1335 = zext i32 %1334 to i64
%1336 = mul nsw i64 %1335, %22
%1337 = getelementptr inbounds i8, i8* %1333, i64 %1336
%1338 = load i32, i32* %11
%1339 = zext i32 %1338 to i64
%1340 = getelementptr inbounds i8, i8* %1337, i64 %1339
store i8 %1332, i8* %1340
br label %1341
1341: ; preds = %1323, %1314
br label %1342
1342: ; preds = %1341, %1290
ret void
}

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