int fin43(int grid1[6][7], int move, int fin, int row, int col, int fut,
          int *r) {
  int f, c, x, y, i, j;
  int grid[6][7], i1, j1;
  for (i1 = 0; i1 < 6; i1++)
    for (j1 = 0; j1 < 7; j1++) {
      grid[i1][j1] = grid1[i1][j1];
    }
  if (col != -1)
    grid[row][col] = move;
  for (i = 0; i < 7; i++) {
    for (j = 0; j < 6; j++) {
      if (grid[j][i] == 0) {
        if (j >= 3)
          if ((grid[j - 1][i] == move) && (grid[j - 2][i] == move) &&
              (grid[j - 3][i] == move))
            if (fin) {
              *r = j;
              return i;
            } else {
              fin = 1;
              grid[j][i] = -move;
            }
        if (i >= 3)
          if ((grid[j][i - 1] == move) && (grid[j][i - 2] == move) &&
              (grid[j][i - 3] == move))
            if (fin) {
              *r = j;
              return i;
            } else {
              fin = 1;
              grid[j][i] = -move;
            }
        if (i >= 2 && i <= 5)
          if ((grid[j][i - 1] == move) && (grid[j][i - 2] == move) &&
              (grid[j][i + 1] == move))
            if (fin) {
              *r = j;
              return i;
            } else {
              fin = 1;
              grid[j][i] = -move;
            }
        if (i >= 1 && i <= 4)
          if ((grid[j][i - 1] == move) && (grid[j][i + 1] == move) &&
              (grid[j][i + 2] == move))
            if (fin) {
              *r = j;
              return i;
            } else {
              fin = 1;
              grid[j][i] = -move;
            }
        if (i <= 3)
          if ((grid[j][i + 1] == move) && (grid[j][i + 2] == move) &&
              (grid[j][i + 3] == move))
            if (fin) {
              *r = j;
              return i;
            } else {
              fin = 1;
              grid[j][i] = -move;
            }
        for (x = j - 1, y = i - 1, c = 0, f = 1; x >= 0 && y >= 0 && f == 1;
             x = x - 1, y = y - 1) {
          if (grid[x][y] != move)
            f = 0;
          else
            c++;
          if (c == 3)
            if (fin) {
              *r = j;
              return i;
            } else {
              fin = 1;
              grid[j][i] = -move;
            }
        }
        for (x = j + 1, y = i + 1, f = 1; x <= 5 && y <= 6 && f == 1;
             x = x + 1, y = y + 1) {
          if (grid[x][y] != move)
            f = 0;
          else
            c++;
          if (c == 3)
            if (fin) {
              *r = j;
              return i;
            } else {
              fin = 1;
              grid[j][i] = -move;
            }
        }
        for (x = j + 1, y = i - 1, c = 0, f = 1; x <= 5 && y >= 0 && f == 1;
             x = x + 1, y = y - 1) {
          if (grid[x][y] != move)
            f = 0;
          else
            c++;
          if (c == 3)
            if (fin) {
              *r = j;
              return i;
            } else {
              fin = 1;
              grid[j][i] = -move;
            }
        }
        for (x = j - 1, y = i + 1, f = 1; x >= 0 && y <= 6 && f == 1;
             x = x - 1, y = y + 1) {
          if (grid[x][y] != move)
            f = 0;
          else
            c++;
          if (c == 3)
            if (fin) {
              *r = j;
              return i;
            } else {
              fin = 1;
              grid[j][i] = -move;
            }
        }
        if (!fut)
          break;
      }
    }
  }
  return -1;
}


x86 assembly (clang, -O0):
<fin43>:
push   %rbp
mov    %rsp,%rbp
sub    $0x80,%rsp
mov    0x10(%rbp),%rax
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
mov    %edx,-0x18(%rbp)
mov    %ecx,-0x1c(%rbp)
mov    %r8d,-0x20(%rbp)
mov    %r9d,-0x24(%rbp)
movl   $0x0,-0xf4(%rbp)
cmpl   $0x6,-0xf4(%rbp)
jge    11ba <fin43+0xba>
movl   $0x0,-0xf8(%rbp)
cmpl   $0x7,-0xf8(%rbp)
jge    11a1 <fin43+0xa1>
mov    -0x10(%rbp),%rax
movslq -0xf4(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0xf8(%rbp),%rcx
mov    (%rax,%rcx,4),%edx
movslq -0xf4(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0xf8(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
mov    -0xf8(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf8(%rbp)
jmp    1145 <fin43+0x45>
jmp    11a6 <fin43+0xa6>
mov    -0xf4(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0xf4(%rbp)
jmp    112e <fin43+0x2e>
cmpl   $0xffffffff,-0x20(%rbp)
je     11e0 <fin43+0xe0>
mov    -0x14(%rbp),%edx
movslq -0x1c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
movl   $0x0,-0x38(%rbp)
cmpl   $0x7,-0x38(%rbp)
jge    1a82 <fin43+0x982>
movl   $0x0,-0x3c(%rbp)
cmpl   $0x6,-0x3c(%rbp)
jge    1a6f <fin43+0x96f>
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x38(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1a5c <fin43+0x95c>
cmpl   $0x3,-0x3c(%rbp)
jl     12ee <fin43+0x1ee>
mov    -0x3c(%rbp),%eax
sub    $0x1,%eax
movslq %eax,%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    12e9 <fin43+0x1e9>
mov    -0x3c(%rbp),%eax
sub    $0x2,%eax
movslq %eax,%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    12e9 <fin43+0x1e9>
mov    -0x3c(%rbp),%eax
sub    $0x3,%eax
movslq %eax,%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x38(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    12e9 <fin43+0x1e9>
cmpl   $0x0,-0x18(%rbp)
je     12bf <fin43+0x1bf>
mov    -0x3c(%rbp),%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1a89 <fin43+0x989>
movl   $0x1,-0x18(%rbp)
xor    %edx,%edx
sub    -0x14(%rbp),%edx
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x38(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    12e9 <fin43+0x1e9>
jmp    12ee <fin43+0x1ee>
cmpl   $0x3,-0x38(%rbp)
jl     13ba <fin43+0x2ba>
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    13b5 <fin43+0x2b5>
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x38(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    13b5 <fin43+0x2b5>
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x38(%rbp),%ecx
sub    $0x3,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    13b5 <fin43+0x2b5>
cmpl   $0x0,-0x18(%rbp)
je     138b <fin43+0x28b>
mov    -0x3c(%rbp),%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1a89 <fin43+0x989>
movl   $0x1,-0x18(%rbp)
xor    %edx,%edx
sub    -0x14(%rbp),%edx
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x38(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    13b5 <fin43+0x2b5>
jmp    13ba <fin43+0x2ba>
cmpl   $0x2,-0x38(%rbp)
jl     1490 <fin43+0x390>
cmpl   $0x5,-0x38(%rbp)
jg     1490 <fin43+0x390>
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    148b <fin43+0x38b>
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x38(%rbp),%ecx
sub    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    148b <fin43+0x38b>
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x38(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    148b <fin43+0x38b>
cmpl   $0x0,-0x18(%rbp)
je     1461 <fin43+0x361>
mov    -0x3c(%rbp),%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1a89 <fin43+0x989>
movl   $0x1,-0x18(%rbp)
xor    %edx,%edx
sub    -0x14(%rbp),%edx
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x38(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    148b <fin43+0x38b>
jmp    1490 <fin43+0x390>
cmpl   $0x1,-0x38(%rbp)
jl     1566 <fin43+0x466>
cmpl   $0x4,-0x38(%rbp)
jg     1566 <fin43+0x466>
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x38(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    1561 <fin43+0x461>
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x38(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    1561 <fin43+0x461>
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x38(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    1561 <fin43+0x461>
cmpl   $0x0,-0x18(%rbp)
je     1537 <fin43+0x437>
mov    -0x3c(%rbp),%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1a89 <fin43+0x989>
movl   $0x1,-0x18(%rbp)
xor    %edx,%edx
sub    -0x14(%rbp),%edx
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x38(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1561 <fin43+0x461>
jmp    1566 <fin43+0x466>
cmpl   $0x3,-0x38(%rbp)
jg     1632 <fin43+0x532>
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x38(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    162d <fin43+0x52d>
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x38(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    162d <fin43+0x52d>
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x38(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
jne    162d <fin43+0x52d>
cmpl   $0x0,-0x18(%rbp)
je     1603 <fin43+0x503>
mov    -0x3c(%rbp),%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1a89 <fin43+0x989>
movl   $0x1,-0x18(%rbp)
xor    %edx,%edx
sub    -0x14(%rbp),%edx
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x38(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    162d <fin43+0x52d>
jmp    1632 <fin43+0x532>
mov    -0x3c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x38(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x34(%rbp)
movl   $0x0,-0x2c(%rbp)
movl   $0x1,-0x28(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x30(%rbp)
mov    %al,-0xf9(%rbp)
jl     1683 <fin43+0x583>
xor    %eax,%eax
cmpl   $0x0,-0x34(%rbp)
mov    %al,-0xf9(%rbp)
jl     1683 <fin43+0x583>
cmpl   $0x1,-0x28(%rbp)
sete   %al
mov    %al,-0xf9(%rbp)
mov    -0xf9(%rbp),%al
test   $0x1,%al
jne    1696 <fin43+0x596>
jmp    173b <fin43+0x63b>
movslq -0x30(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
je     16c4 <fin43+0x5c4>
movl   $0x0,-0x28(%rbp)
jmp    16cd <fin43+0x5cd>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x3,-0x2c(%rbp)
jne    171f <fin43+0x61f>
cmpl   $0x0,-0x18(%rbp)
je     16f5 <fin43+0x5f5>
mov    -0x3c(%rbp),%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1a89 <fin43+0x989>
movl   $0x1,-0x18(%rbp)
xor    %edx,%edx
sub    -0x14(%rbp),%edx
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x38(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    171f <fin43+0x61f>
jmp    1724 <fin43+0x624>
mov    -0x30(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x34(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1652 <fin43+0x552>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
movl   $0x1,-0x28(%rbp)
xor    %eax,%eax
cmpl   $0x5,-0x30(%rbp)
mov    %al,-0xfa(%rbp)
jg     1785 <fin43+0x685>
xor    %eax,%eax
cmpl   $0x6,-0x34(%rbp)
mov    %al,-0xfa(%rbp)
jg     1785 <fin43+0x685>
cmpl   $0x1,-0x28(%rbp)
sete   %al
mov    %al,-0xfa(%rbp)
mov    -0xfa(%rbp),%al
test   $0x1,%al
jne    1798 <fin43+0x698>
jmp    183d <fin43+0x73d>
movslq -0x30(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
je     17c6 <fin43+0x6c6>
movl   $0x0,-0x28(%rbp)
jmp    17cf <fin43+0x6cf>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x3,-0x2c(%rbp)
jne    1821 <fin43+0x721>
cmpl   $0x0,-0x18(%rbp)
je     17f7 <fin43+0x6f7>
mov    -0x3c(%rbp),%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1a89 <fin43+0x989>
movl   $0x1,-0x18(%rbp)
xor    %edx,%edx
sub    -0x14(%rbp),%edx
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x38(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1821 <fin43+0x721>
jmp    1826 <fin43+0x726>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    1754 <fin43+0x654>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x38(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x34(%rbp)
movl   $0x0,-0x2c(%rbp)
movl   $0x1,-0x28(%rbp)
xor    %eax,%eax
cmpl   $0x5,-0x30(%rbp)
mov    %al,-0xfb(%rbp)
jg     188e <fin43+0x78e>
xor    %eax,%eax
cmpl   $0x0,-0x34(%rbp)
mov    %al,-0xfb(%rbp)
jl     188e <fin43+0x78e>
cmpl   $0x1,-0x28(%rbp)
sete   %al
mov    %al,-0xfb(%rbp)
mov    -0xfb(%rbp),%al
test   $0x1,%al
jne    18a1 <fin43+0x7a1>
jmp    1946 <fin43+0x846>
movslq -0x30(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
je     18cf <fin43+0x7cf>
movl   $0x0,-0x28(%rbp)
jmp    18d8 <fin43+0x7d8>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x3,-0x2c(%rbp)
jne    192a <fin43+0x82a>
cmpl   $0x0,-0x18(%rbp)
je     1900 <fin43+0x800>
mov    -0x3c(%rbp),%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1a89 <fin43+0x989>
movl   $0x1,-0x18(%rbp)
xor    %edx,%edx
sub    -0x14(%rbp),%edx
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x38(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    192a <fin43+0x82a>
jmp    192f <fin43+0x82f>
mov    -0x30(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x34(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    185d <fin43+0x75d>
mov    -0x3c(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
movl   $0x1,-0x28(%rbp)
xor    %eax,%eax
cmpl   $0x0,-0x30(%rbp)
mov    %al,-0xfc(%rbp)
jl     1990 <fin43+0x890>
xor    %eax,%eax
cmpl   $0x6,-0x34(%rbp)
mov    %al,-0xfc(%rbp)
jg     1990 <fin43+0x890>
cmpl   $0x1,-0x28(%rbp)
sete   %al
mov    %al,-0xfc(%rbp)
mov    -0xfc(%rbp),%al
test   $0x1,%al
jne    19a3 <fin43+0x8a3>
jmp    1a48 <fin43+0x948>
movslq -0x30(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x34(%rbp),%rcx
mov    (%rax,%rcx,4),%eax
cmp    -0x14(%rbp),%eax
je     19d1 <fin43+0x8d1>
movl   $0x0,-0x28(%rbp)
jmp    19da <fin43+0x8da>
mov    -0x2c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x2c(%rbp)
cmpl   $0x3,-0x2c(%rbp)
jne    1a2c <fin43+0x92c>
cmpl   $0x0,-0x18(%rbp)
je     1a02 <fin43+0x902>
mov    -0x3c(%rbp),%ecx
mov    0x10(%rbp),%rax
mov    %ecx,(%rax)
mov    -0x38(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    1a89 <fin43+0x989>
movl   $0x1,-0x18(%rbp)
xor    %edx,%edx
sub    -0x14(%rbp),%edx
movslq -0x3c(%rbp),%rcx
lea    -0xf0(%rbp),%rax
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x38(%rbp),%rcx
mov    %edx,(%rax,%rcx,4)
jmp    1a2c <fin43+0x92c>
jmp    1a31 <fin43+0x931>
mov    -0x30(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x30(%rbp)
mov    -0x34(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x34(%rbp)
jmp    195f <fin43+0x85f>
cmpl   $0x0,-0x24(%rbp)
jne    1a57 <fin43+0x957>
jmp    1a6f <fin43+0x96f>
jmp    1a5c <fin43+0x95c>
jmp    1a61 <fin43+0x961>
mov    -0x3c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x3c(%rbp)
jmp    11f8 <fin43+0xf8>
jmp    1a74 <fin43+0x974>
mov    -0x38(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x38(%rbp)
jmp    11e7 <fin43+0xe7>
movl   $0xffffffff,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x80,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<fin43>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
sub    $0x128,%rsp
mov    %r9d,0x2c(%rsp)
mov    %r8d,%ebx
mov    %ecx,%r12d
mov    %edx,%r14d
mov    %esi,%r15d
mov    %rdi,%rsi
lea    0x80(%rsp),%rdi
mov    $0xa8,%edx
call   1030 <memcpy@plt>
cmp    $0xffffffff,%ebx
je     116b <fin43+0x5b>
movslq %r12d,%rax
movslq %ebx,%rcx
lea    (%rax,%rax,8),%rdx
lea    (%rdx,%rdx,2),%rdx
add    %rax,%rdx
lea    (%rsp,%rdx,1),%rax
add    $0x80,%rax
mov    %r15d,(%rax,%rcx,4)
mov    $0xfffffffd,%esi
mov    %r15d,%r9d
neg    %r9d
mov    $0x1,%r10d
xor    %eax,%eax
lea    -0x1(%rax),%edi
lea    -0x2(%rax),%ecx
mov    %rcx,0x10(%rsp)
lea    (%rsi,%rax,1),%ecx
mov    %rcx,0x78(%rsp)
lea    0x1(%rax),%rcx
mov    %rcx,0x18(%rsp)
lea    0x2(%rax),%rcx
mov    %rcx,0x58(%rsp)
lea    0x3(%rax),%rcx
mov    %rcx,0x70(%rsp)
lea    0x1(%r10),%rcx
mov    %rcx,0x20(%rsp)
lea    0x2(%r10),%rcx
mov    %rcx,0x50(%rsp)
lea    0x3(%r10),%rcx
mov    %rcx,0x40(%rsp)
lea    0x4(%r10),%rcx
mov    %rcx,0x30(%rsp)
lea    -0x3(%rax),%ecx
mov    %rcx,0x48(%rsp)
lea    -0x4(%rax),%ecx
mov    %rcx,0x38(%rsp)
lea    -0x2(%rsi,%rax,1),%ecx
mov    %rcx,0x68(%rsp)
lea    0x5(%r10),%rcx
mov    %rcx,0x60(%rsp)
xor    %r13d,%r13d
mov    $0x1,%r11d
mov    %rdi,0x8(%rsp)
jmp    1222 <fin43+0x112>
cs nopw 0x0(%rax,%rax,1)
nopl   0x0(%rax)
add    $0x1,%r13
add    $0x1,%r11
cmp    $0x6,%r13
je     19a3 <fin43+0x893>
lea    0x0(,%r13,8),%rcx
add    %r13,%rcx
lea    (%rcx,%rcx,2),%rcx
add    %r13,%rcx
lea    (%rsp,%rcx,1),%rbx
add    $0x80,%rbx
cmpl   $0x0,(%rbx,%rax,4)
jne    1210 <fin43+0x100>
lea    (%rbx,%rax,4),%r8
cmp    $0x3,%r13
jb     12d0 <fin43+0x1c0>
lea    (%rsi,%r13,1),%ecx
add    $0x2,%ecx
lea    (%rcx,%rcx,8),%rdx
lea    (%rdx,%rdx,2),%rdx
add    %rcx,%rdx
lea    (%rsp,%rdx,1),%rcx
add    $0x80,%rcx
cmp    %r15d,(%rcx,%rax,4)
jne    12d0 <fin43+0x1c0>
lea    (%rsi,%r13,1),%ecx
add    $0x1,%ecx
lea    (%rcx,%rcx,8),%rdx
lea    (%rdx,%rdx,2),%rdx
add    %rcx,%rdx
lea    (%rsp,%rdx,1),%rcx
add    $0x80,%rcx
cmp    %r15d,(%rcx,%rax,4)
jne    12d0 <fin43+0x1c0>
lea    (%rsi,%r13,1),%ecx
lea    (%rcx,%rcx,8),%rdx
lea    (%rdx,%rdx,2),%rdx
add    %rcx,%rdx
lea    (%rsp,%rdx,1),%rcx
add    $0x80,%rcx
cmp    %r15d,(%rcx,%rax,4)
jne    12d0 <fin43+0x1c0>
test   %r14d,%r14d
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%r14d
mov    0x8(%rsp),%rdi
cmp    $0x3,%rax
jb     1310 <fin43+0x200>
cmp    %r15d,(%rbx,%rdi,4)
jne    1310 <fin43+0x200>
mov    0x10(%rsp),%rcx
cmp    %r15d,(%rbx,%rcx,4)
jne    1310 <fin43+0x200>
mov    0x78(%rsp),%rcx
cmp    %r15d,(%rbx,%rcx,4)
jne    1310 <fin43+0x200>
test   %r14d,%r14d
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%r14d
mov    0x8(%rsp),%rdi
nopl   0x0(%rax)
cmpl   $0x3,0x10(%rsp)
ja     1350 <fin43+0x240>
cmp    %r15d,(%rbx,%rdi,4)
jne    1350 <fin43+0x240>
mov    0x10(%rsp),%rcx
cmp    %r15d,(%rbx,%rcx,4)
jne    1350 <fin43+0x240>
mov    0x18(%rsp),%rcx
cmp    %r15d,(%rbx,%rcx,4)
jne    1350 <fin43+0x240>
test   %r14d,%r14d
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%r14d
mov    0x8(%rsp),%rdi
nopw   0x0(%rax,%rax,1)
cmp    $0x3,%edi
ja     1390 <fin43+0x280>
cmp    %r15d,(%rbx,%rdi,4)
jne    1390 <fin43+0x280>
mov    0x18(%rsp),%rcx
cmp    %r15d,(%rbx,%rcx,4)
jne    1390 <fin43+0x280>
mov    0x58(%rsp),%rcx
cmp    %r15d,(%rbx,%rcx,4)
jne    1390 <fin43+0x280>
test   %r14d,%r14d
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%r14d
mov    0x8(%rsp),%rdi
nopl   0x0(%rax,%rax,1)
cmp    $0x3,%rax
ja     13d0 <fin43+0x2c0>
mov    0x18(%rsp),%rcx
cmp    %r15d,(%rbx,%rcx,4)
jne    13d0 <fin43+0x2c0>
mov    0x58(%rsp),%rcx
cmp    %r15d,(%rbx,%rcx,4)
jne    13d0 <fin43+0x2c0>
mov    0x70(%rsp),%rcx
cmp    %r15d,(%rbx,%rcx,4)
jne    13d0 <fin43+0x2c0>
test   %r14d,%r14d
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%r14d
mov    0x8(%rsp),%rdi
xchg   %ax,%ax
xor    %esi,%esi
mov    %r13,%r12
add    $0xffffffffffffffff,%r12
jae    1450 <fin43+0x340>
test   %rax,%rax
je     1450 <fin43+0x340>
xor    %esi,%esi
mov    %edi,%ecx
mov    %r12d,%edx
nopw   0x0(%rax,%rax,1)
mov    %esi,%ebx
mov    %edx,%esi
mov    %ecx,%edi
lea    (%rsi,%rsi,8),%rbp
lea    0x0(%rbp,%rbp,2),%rbp
add    %rsi,%rbp
lea    (%rsp,%rbp,1),%rsi
add    $0x80,%rsi
mov    (%rsi,%rdi,4),%edi
xor    %esi,%esi
cmp    %r15d,%edi
sete   %sil
add    %ebx,%esi
cmp    $0x3,%esi
jne    1432 <fin43+0x322>
test   %r14d,%r14d
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%r14d
cmp    %r15d,%edi
jne    1450 <fin43+0x340>
test   %edx,%edx
jle    1450 <fin43+0x340>
add    $0xffffffff,%edx
lea    -0x1(%rcx),%edi
test   %ecx,%ecx
mov    %edi,%ecx
jg     13f0 <fin43+0x2e0>
nopw   0x0(%rax,%rax,1)
mov    %r14d,%ebp
cmp    $0x4,%r13
ja     15b0 <fin43+0x4a0>
cmp    $0x6,%rax
jae    15b0 <fin43+0x4a0>
lea    (%r11,%r11,8),%rcx
lea    (%rcx,%rcx,2),%rcx
add    %r11,%rcx
lea    (%rsp,%rcx,1),%rdx
add    $0x80,%rdx
mov    (%rdx,%r10,4),%ecx
xor    %edi,%edi
cmp    %r15d,%ecx
sete   %dil
add    %edi,%esi
cmp    $0x3,%esi
jne    14a1 <fin43+0x391>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%ebp
cmp    %r15d,%ecx
jne    15b0 <fin43+0x4a0>
cmp    $0x4,%r11
ja     15b0 <fin43+0x4a0>
cmp    $0x5,%r10
ja     15b0 <fin43+0x4a0>
mov    0x20(%rsp),%rcx
mov    0x1c(%rdx,%rcx,4),%ecx
xor    %edi,%edi
cmp    %r15d,%ecx
sete   %dil
add    %edi,%esi
cmp    $0x3,%esi
jne    14e7 <fin43+0x3d7>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%ebp
cmp    %r15d,%ecx
jne    15b0 <fin43+0x4a0>
cmp    $0x3,%r11
ja     15b0 <fin43+0x4a0>
cmp    $0x4,%r10
ja     15b0 <fin43+0x4a0>
mov    0x50(%rsp),%rcx
mov    0x38(%rdx,%rcx,4),%ecx
xor    %edi,%edi
cmp    %r15d,%ecx
sete   %dil
add    %edi,%esi
cmp    $0x3,%esi
jne    152d <fin43+0x41d>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%ebp
cmp    %r15d,%ecx
jne    15b0 <fin43+0x4a0>
cmp    $0x2,%r11
ja     15b0 <fin43+0x4a0>
cmp    $0x3,%r10
ja     15b0 <fin43+0x4a0>
mov    0x40(%rsp),%rcx
mov    0x54(%rdx,%rcx,4),%ecx
xor    %edi,%edi
cmp    %r15d,%ecx
sete   %dil
add    %edi,%esi
cmp    $0x3,%esi
jne    1567 <fin43+0x457>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%ebp
cmp    %r15d,%ecx
jne    15b0 <fin43+0x4a0>
cmp    $0x1,%r11
ja     15b0 <fin43+0x4a0>
cmp    $0x2,%r10
mov    0x8(%rsp),%rdi
ja     15b5 <fin43+0x4a5>
xor    %ecx,%ecx
mov    0x30(%rsp),%rbx
cmp    %r15d,0x70(%rdx,%rbx,4)
sete   %cl
add    %ecx,%esi
cmp    $0x3,%esi
jne    15b5 <fin43+0x4a5>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%ebp
cs nopw 0x0(%rax,%rax,1)
nopl   (%rax)
mov    0x8(%rsp),%rdi
xor    %r14d,%r14d
cmp    $0x4,%r13
ja     1720 <fin43+0x610>
test   %rax,%rax
je     1720 <fin43+0x610>
lea    (%r11,%r11,8),%rcx
lea    (%rcx,%rcx,2),%rcx
add    %r11,%rcx
lea    (%rsp,%rcx,1),%rdx
add    $0x80,%rdx
xor    %r14d,%r14d
cmp    %r15d,(%rdx,%rdi,4)
sete   %r14b
jne    1720 <fin43+0x610>
cmp    $0x4,%r11
ja     1720 <fin43+0x610>
test   %edi,%edi
jle    1720 <fin43+0x610>
mov    0x10(%rsp),%rcx
mov    0x1c(%rdx,%rcx,4),%ecx
xor    %esi,%esi
cmp    %r15d,%ecx
sete   %sil
add    %esi,%r14d
cmp    $0x3,%r14d
jne    1634 <fin43+0x524>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%ebp
mov    0x8(%rsp),%rdi
cmp    %r15d,%ecx
jne    1720 <fin43+0x610>
cmp    $0x3,%r11
ja     1720 <fin43+0x610>
cmpl   $0x0,0x10(%rsp)
jle    1720 <fin43+0x610>
mov    0x48(%rsp),%rcx
mov    0x38(%rdx,%rcx,4),%ecx
xor    %esi,%esi
cmp    %r15d,%ecx
sete   %sil
add    %esi,%r14d
cmp    $0x3,%r14d
jne    1682 <fin43+0x572>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%ebp
mov    0x8(%rsp),%rdi
cmp    %r15d,%ecx
jne    1720 <fin43+0x610>
cmp    $0x2,%r11
ja     1720 <fin43+0x610>
cmpl   $0x0,0x48(%rsp)
jle    1720 <fin43+0x610>
mov    0x38(%rsp),%rcx
mov    0x54(%rdx,%rcx,4),%ecx
xor    %esi,%esi
cmp    %r15d,%ecx
sete   %sil
add    %esi,%r14d
cmp    $0x3,%r14d
jne    16cb <fin43+0x5bb>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%ebp
cmp    %r15d,%ecx
jne    1719 <fin43+0x609>
cmp    $0x1,%r11
ja     170a <fin43+0x5fa>
cmpl   $0x0,0x38(%rsp)
mov    0x8(%rsp),%rdi
jle    1720 <fin43+0x610>
xor    %ecx,%ecx
mov    0x68(%rsp),%rsi
cmp    %r15d,0x70(%rdx,%rsi,4)
sete   %cl
add    %ecx,%r14d
cmp    $0x3,%r14d
jne    1720 <fin43+0x610>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%ebp
mov    0x8(%rsp),%rdi
test   %r13,%r13
jne    1729 <fin43+0x619>
jmp    1990 <fin43+0x880>
mov    0x8(%rsp),%rdi
xchg   %ax,%ax
test   %r13,%r13
je     1990 <fin43+0x880>
cmp    $0x5,%rax
ja     1990 <fin43+0x880>
mov    %r12d,%ecx
lea    (%rcx,%rcx,8),%rdx
lea    (%rdx,%rdx,2),%rdx
add    %rcx,%rdx
lea    (%rsp,%rdx,1),%rcx
add    $0x80,%rcx
mov    (%rcx,%r10,4),%ecx
xor    %edx,%edx
cmp    %r15d,%ecx
sete   %dl
add    %edx,%r14d
cmp    $0x3,%r14d
jne    1776 <fin43+0x666>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%ebp
mov    0x8(%rsp),%rdi
cmp    %r15d,%ecx
jne    1990 <fin43+0x880>
test   %r12d,%r12d
jle    1990 <fin43+0x880>
cmp    $0x5,%r10
ja     1990 <fin43+0x880>
mov    $0xfffffffd,%ecx
add    %r13d,%ecx
add    $0x1,%ecx
lea    (%rcx,%rcx,8),%rdx
lea    (%rdx,%rdx,2),%rdx
add    %rcx,%rdx
lea    (%rsp,%rdx,1),%rcx
add    $0x80,%rcx
mov    0x20(%rsp),%rdx
mov    (%rcx,%rdx,4),%ecx
xor    %edx,%edx
cmp    %r15d,%ecx
sete   %dl
add    %edx,%r14d
cmp    $0x3,%r14d
jne    17e1 <fin43+0x6d1>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%ebp
mov    0x8(%rsp),%rdi
cmp    %r15d,%ecx
jne    1990 <fin43+0x880>
cmp    $0x2,%r12d
jl     1990 <fin43+0x880>
cmp    $0x4,%r10
ja     1990 <fin43+0x880>
mov    $0xfffffffd,%ecx
add    %r13d,%ecx
lea    (%rcx,%rcx,8),%rdx
lea    (%rdx,%rdx,2),%rdx
add    %rcx,%rdx
lea    (%rsp,%rdx,1),%rcx
add    $0x80,%rcx
mov    0x50(%rsp),%rdx
mov    (%rcx,%rdx,4),%ecx
xor    %edx,%edx
cmp    %r15d,%ecx
sete   %dl
add    %edx,%r14d
cmp    $0x3,%r14d
jne    184a <fin43+0x73a>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%ebp
mov    0x8(%rsp),%rdi
cmp    %r15d,%ecx
jne    1990 <fin43+0x880>
cmp    $0x3,%r12d
jl     1990 <fin43+0x880>
cmp    $0x3,%r10
ja     1990 <fin43+0x880>
mov    $0xfffffffd,%ecx
add    %r13d,%ecx
add    $0xffffffff,%ecx
lea    (%rcx,%rcx,8),%rdx
lea    (%rdx,%rdx,2),%rdx
add    %rcx,%rdx
lea    (%rsp,%rdx,1),%rcx
add    $0x80,%rcx
mov    0x40(%rsp),%rdx
mov    (%rcx,%rdx,4),%ecx
xor    %edx,%edx
cmp    %r15d,%ecx
sete   %dl
add    %edx,%r14d
cmp    $0x3,%r14d
jne    18b6 <fin43+0x7a6>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%ebp
mov    0x8(%rsp),%rdi
cmp    %r15d,%ecx
jne    1990 <fin43+0x880>
cmp    $0x4,%r12d
jl     1990 <fin43+0x880>
cmp    $0x2,%r10
ja     1990 <fin43+0x880>
mov    $0xfffffffd,%ecx
add    %r13d,%ecx
add    $0xfffffffe,%ecx
lea    (%rcx,%rcx,8),%rdx
lea    (%rdx,%rdx,2),%rdx
add    %rcx,%rdx
lea    (%rsp,%rdx,1),%rcx
add    $0x80,%rcx
mov    0x30(%rsp),%rdx
mov    (%rcx,%rdx,4),%ecx
xor    %edx,%edx
cmp    %r15d,%ecx
sete   %dl
add    %edx,%r14d
cmp    $0x3,%r14d
jne    1922 <fin43+0x812>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%ebp
mov    0x8(%rsp),%rdi
cmp    %r15d,%ecx
jne    1990 <fin43+0x880>
cmp    $0x5,%r12d
jl     1990 <fin43+0x880>
cmp    $0x1,%r10
mov    $0xfffffffd,%esi
ja     1995 <fin43+0x885>
lea    (%rsi,%r13,1),%ecx
add    $0xfffffffd,%ecx
lea    (%rcx,%rcx,8),%rdx
lea    (%rdx,%rdx,2),%rdx
add    %rcx,%rdx
lea    (%rsp,%rdx,1),%rcx
add    $0x80,%rcx
xor    %edx,%edx
mov    0x60(%rsp),%rbx
cmp    %r15d,(%rcx,%rbx,4)
sete   %dl
add    %edx,%r14d
cmp    $0x3,%r14d
jne    1995 <fin43+0x885>
test   %ebp,%ebp
jne    19be <fin43+0x8ae>
mov    %r9d,(%r8)
mov    $0x1,%r14d
mov    $0xfffffffd,%esi
mov    0x8(%rsp),%rdi
jmp    1998 <fin43+0x888>
cs nopw 0x0(%rax,%rax,1)
nop
mov    $0xfffffffd,%esi
mov    %ebp,%r14d
cmpl   $0x0,0x2c(%rsp)
jne    1210 <fin43+0x100>
mov    0x18(%rsp),%rax
cmp    $0x7,%rax
mov    0x20(%rsp),%r10
jne    117e <fin43+0x6e>
mov    $0xffffffff,%eax
jmp    19c9 <fin43+0x8b9>
mov    0x160(%rsp),%rcx
mov    %r13d,(%rcx)
add    $0x128,%rsp
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret

LLVM IR (-O0):
define i32 @fin43([7 x i32]* %0, i32 %1, i32 %2, i32 %3, i32 %4, i32 %5, i32* %6) {
%8 = alloca i32
%9 = alloca [7 x i32]*
%10 = alloca i32
%11 = alloca i32
%12 = alloca i32
%13 = alloca i32
%14 = alloca i32
%15 = alloca i32*
%16 = alloca i32
%17 = alloca i32
%18 = alloca i32
%19 = alloca i32
%20 = alloca i32
%21 = alloca i32
%22 = alloca [6 x [7 x i32]]
%23 = alloca i32
%24 = alloca i32
store [7 x i32]* %0, [7 x i32]** %9
store i32 %1, i32* %10
store i32 %2, i32* %11
store i32 %3, i32* %12
store i32 %4, i32* %13
store i32 %5, i32* %14
store i32* %6, i32** %15
store i32 0, i32* %23
br label %25
25: ; preds = %51, %7
%26 = load i32, i32* %23
%27 = icmp slt i32 %26, 6
br i1 %27, label %28, label %54
28: ; preds = %25
store i32 0, i32* %24
br label %29
29: ; preds = %47, %28
%30 = load i32, i32* %24
%31 = icmp slt i32 %30, 7
br i1 %31, label %32, label %50
32: ; preds = %29
%33 = load [7 x i32]*, [7 x i32]** %9
%34 = load i32, i32* %23
%35 = sext i32 %34 to i64
%36 = getelementptr inbounds [7 x i32], [7 x i32]* %33, i64 %35
%37 = load i32, i32* %24
%38 = sext i32 %37 to i64
%39 = getelementptr inbounds [7 x i32], [7 x i32]* %36, i64 0, i64 %38
%40 = load i32, i32* %39
%41 = load i32, i32* %23
%42 = sext i32 %41 to i64
%43 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %42
%44 = load i32, i32* %24
%45 = sext i32 %44 to i64
%46 = getelementptr inbounds [7 x i32], [7 x i32]* %43, i64 0, i64 %45
store i32 %40, i32* %46
br label %47
47: ; preds = %32
%48 = load i32, i32* %24
%49 = add nsw i32 %48, 1
store i32 %49, i32* %24
br label %29
50: ; preds = %29
br label %51
51: ; preds = %50
%52 = load i32, i32* %23
%53 = add nsw i32 %52, 1
store i32 %53, i32* %23
br label %25
54: ; preds = %25
%55 = load i32, i32* %13
%56 = icmp ne i32 %55, -1
br i1 %56, label %57, label %65
57: ; preds = %54
%58 = load i32, i32* %10
%59 = load i32, i32* %12
%60 = sext i32 %59 to i64
%61 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %60
%62 = load i32, i32* %13
%63 = sext i32 %62 to i64
%64 = getelementptr inbounds [7 x i32], [7 x i32]* %61, i64 0, i64 %63
store i32 %58, i32* %64
br label %65
65: ; preds = %57, %54
store i32 0, i32* %20
br label %66
66: ; preds = %592, %65
%67 = load i32, i32* %20
%68 = icmp slt i32 %67, 7
br i1 %68, label %69, label %595
69: ; preds = %66
store i32 0, i32* %21
br label %70
70: ; preds = %588, %69
%71 = load i32, i32* %21
%72 = icmp slt i32 %71, 6
br i1 %72, label %73, label %591
73: ; preds = %70
%74 = load i32, i32* %21
%75 = sext i32 %74 to i64
%76 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %75
%77 = load i32, i32* %20
%78 = sext i32 %77 to i64
%79 = getelementptr inbounds [7 x i32], [7 x i32]* %76, i64 0, i64 %78
%80 = load i32, i32* %79
%81 = icmp eq i32 %80, 0
br i1 %81, label %82, label %587
82: ; preds = %73
%83 = load i32, i32* %21
%84 = icmp sge i32 %83, 3
br i1 %84, label %85, label %136
85: ; preds = %82
%86 = load i32, i32* %21
%87 = sub nsw i32 %86, 1
%88 = sext i32 %87 to i64
%89 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %88
%90 = load i32, i32* %20
%91 = sext i32 %90 to i64
%92 = getelementptr inbounds [7 x i32], [7 x i32]* %89, i64 0, i64 %91
%93 = load i32, i32* %92
%94 = load i32, i32* %10
%95 = icmp eq i32 %93, %94
br i1 %95, label %96, label %135
96: ; preds = %85
%97 = load i32, i32* %21
%98 = sub nsw i32 %97, 2
%99 = sext i32 %98 to i64
%100 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %99
%101 = load i32, i32* %20
%102 = sext i32 %101 to i64
%103 = getelementptr inbounds [7 x i32], [7 x i32]* %100, i64 0, i64 %102
%104 = load i32, i32* %103
%105 = load i32, i32* %10
%106 = icmp eq i32 %104, %105
br i1 %106, label %107, label %135
107: ; preds = %96
%108 = load i32, i32* %21
%109 = sub nsw i32 %108, 3
%110 = sext i32 %109 to i64
%111 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %110
%112 = load i32, i32* %20
%113 = sext i32 %112 to i64
%114 = getelementptr inbounds [7 x i32], [7 x i32]* %111, i64 0, i64 %113
%115 = load i32, i32* %114
%116 = load i32, i32* %10
%117 = icmp eq i32 %115, %116
br i1 %117, label %118, label %135
118: ; preds = %107
%119 = load i32, i32* %11
%120 = icmp ne i32 %119, 0
br i1 %120, label %121, label %125
121: ; preds = %118
%122 = load i32, i32* %21
%123 = load i32*, i32** %15
store i32 %122, i32* %123
%124 = load i32, i32* %20
store i32 %124, i32* %8
br label %596
125: ; preds = %118
store i32 1, i32* %11
%126 = load i32, i32* %10
%127 = sub nsw i32 0, %126
%128 = load i32, i32* %21
%129 = sext i32 %128 to i64
%130 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %129
%131 = load i32, i32* %20
%132 = sext i32 %131 to i64
%133 = getelementptr inbounds [7 x i32], [7 x i32]* %130, i64 0, i64 %132
store i32 %127, i32* %133
br label %134
134: ; preds = %125
br label %135
135: ; preds = %134, %107, %96, %85
br label %136
136: ; preds = %135, %82
%137 = load i32, i32* %20
%138 = icmp sge i32 %137, 3
br i1 %138, label %139, label %190
139: ; preds = %136
%140 = load i32, i32* %21
%141 = sext i32 %140 to i64
%142 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %141
%143 = load i32, i32* %20
%144 = sub nsw i32 %143, 1
%145 = sext i32 %144 to i64
%146 = getelementptr inbounds [7 x i32], [7 x i32]* %142, i64 0, i64 %145
%147 = load i32, i32* %146
%148 = load i32, i32* %10
%149 = icmp eq i32 %147, %148
br i1 %149, label %150, label %189
150: ; preds = %139
%151 = load i32, i32* %21
%152 = sext i32 %151 to i64
%153 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %152
%154 = load i32, i32* %20
%155 = sub nsw i32 %154, 2
%156 = sext i32 %155 to i64
%157 = getelementptr inbounds [7 x i32], [7 x i32]* %153, i64 0, i64 %156
%158 = load i32, i32* %157
%159 = load i32, i32* %10
%160 = icmp eq i32 %158, %159
br i1 %160, label %161, label %189
161: ; preds = %150
%162 = load i32, i32* %21
%163 = sext i32 %162 to i64
%164 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %163
%165 = load i32, i32* %20
%166 = sub nsw i32 %165, 3
%167 = sext i32 %166 to i64
%168 = getelementptr inbounds [7 x i32], [7 x i32]* %164, i64 0, i64 %167
%169 = load i32, i32* %168
%170 = load i32, i32* %10
%171 = icmp eq i32 %169, %170
br i1 %171, label %172, label %189
172: ; preds = %161
%173 = load i32, i32* %11
%174 = icmp ne i32 %173, 0
br i1 %174, label %175, label %179
175: ; preds = %172
%176 = load i32, i32* %21
%177 = load i32*, i32** %15
store i32 %176, i32* %177
%178 = load i32, i32* %20
store i32 %178, i32* %8
br label %596
179: ; preds = %172
store i32 1, i32* %11
%180 = load i32, i32* %10
%181 = sub nsw i32 0, %180
%182 = load i32, i32* %21
%183 = sext i32 %182 to i64
%184 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %183
%185 = load i32, i32* %20
%186 = sext i32 %185 to i64
%187 = getelementptr inbounds [7 x i32], [7 x i32]* %184, i64 0, i64 %186
store i32 %181, i32* %187
br label %188
188: ; preds = %179
br label %189
189: ; preds = %188, %161, %150, %139
br label %190
190: ; preds = %189, %136
%191 = load i32, i32* %20
%192 = icmp sge i32 %191, 2
br i1 %192, label %193, label %247
193: ; preds = %190
%194 = load i32, i32* %20
%195 = icmp sle i32 %194, 5
br i1 %195, label %196, label %247
196: ; preds = %193
%197 = load i32, i32* %21
%198 = sext i32 %197 to i64
%199 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %198
%200 = load i32, i32* %20
%201 = sub nsw i32 %200, 1
%202 = sext i32 %201 to i64
%203 = getelementptr inbounds [7 x i32], [7 x i32]* %199, i64 0, i64 %202
%204 = load i32, i32* %203
%205 = load i32, i32* %10
%206 = icmp eq i32 %204, %205
br i1 %206, label %207, label %246
207: ; preds = %196
%208 = load i32, i32* %21
%209 = sext i32 %208 to i64
%210 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %209
%211 = load i32, i32* %20
%212 = sub nsw i32 %211, 2
%213 = sext i32 %212 to i64
%214 = getelementptr inbounds [7 x i32], [7 x i32]* %210, i64 0, i64 %213
%215 = load i32, i32* %214
%216 = load i32, i32* %10
%217 = icmp eq i32 %215, %216
br i1 %217, label %218, label %246
218: ; preds = %207
%219 = load i32, i32* %21
%220 = sext i32 %219 to i64
%221 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %220
%222 = load i32, i32* %20
%223 = add nsw i32 %222, 1
%224 = sext i32 %223 to i64
%225 = getelementptr inbounds [7 x i32], [7 x i32]* %221, i64 0, i64 %224
%226 = load i32, i32* %225
%227 = load i32, i32* %10
%228 = icmp eq i32 %226, %227
br i1 %228, label %229, label %246
229: ; preds = %218
%230 = load i32, i32* %11
%231 = icmp ne i32 %230, 0
br i1 %231, label %232, label %236
232: ; preds = %229
%233 = load i32, i32* %21
%234 = load i32*, i32** %15
store i32 %233, i32* %234
%235 = load i32, i32* %20
store i32 %235, i32* %8
br label %596
236: ; preds = %229
store i32 1, i32* %11
%237 = load i32, i32* %10
%238 = sub nsw i32 0, %237
%239 = load i32, i32* %21
%240 = sext i32 %239 to i64
%241 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %240
%242 = load i32, i32* %20
%243 = sext i32 %242 to i64
%244 = getelementptr inbounds [7 x i32], [7 x i32]* %241, i64 0, i64 %243
store i32 %238, i32* %244
br label %245
245: ; preds = %236
br label %246
246: ; preds = %245, %218, %207, %196
br label %247
247: ; preds = %246, %193, %190
%248 = load i32, i32* %20
%249 = icmp sge i32 %248, 1
br i1 %249, label %250, label %304
250: ; preds = %247
%251 = load i32, i32* %20
%252 = icmp sle i32 %251, 4
br i1 %252, label %253, label %304
253: ; preds = %250
%254 = load i32, i32* %21
%255 = sext i32 %254 to i64
%256 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %255
%257 = load i32, i32* %20
%258 = sub nsw i32 %257, 1
%259 = sext i32 %258 to i64
%260 = getelementptr inbounds [7 x i32], [7 x i32]* %256, i64 0, i64 %259
%261 = load i32, i32* %260
%262 = load i32, i32* %10
%263 = icmp eq i32 %261, %262
br i1 %263, label %264, label %303
264: ; preds = %253
%265 = load i32, i32* %21
%266 = sext i32 %265 to i64
%267 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %266
%268 = load i32, i32* %20
%269 = add nsw i32 %268, 1
%270 = sext i32 %269 to i64
%271 = getelementptr inbounds [7 x i32], [7 x i32]* %267, i64 0, i64 %270
%272 = load i32, i32* %271
%273 = load i32, i32* %10
%274 = icmp eq i32 %272, %273
br i1 %274, label %275, label %303
275: ; preds = %264
%276 = load i32, i32* %21
%277 = sext i32 %276 to i64
%278 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %277
%279 = load i32, i32* %20
%280 = add nsw i32 %279, 2
%281 = sext i32 %280 to i64
%282 = getelementptr inbounds [7 x i32], [7 x i32]* %278, i64 0, i64 %281
%283 = load i32, i32* %282
%284 = load i32, i32* %10
%285 = icmp eq i32 %283, %284
br i1 %285, label %286, label %303
286: ; preds = %275
%287 = load i32, i32* %11
%288 = icmp ne i32 %287, 0
br i1 %288, label %289, label %293
289: ; preds = %286
%290 = load i32, i32* %21
%291 = load i32*, i32** %15
store i32 %290, i32* %291
%292 = load i32, i32* %20
store i32 %292, i32* %8
br label %596
293: ; preds = %286
store i32 1, i32* %11
%294 = load i32, i32* %10
%295 = sub nsw i32 0, %294
%296 = load i32, i32* %21
%297 = sext i32 %296 to i64
%298 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %297
%299 = load i32, i32* %20
%300 = sext i32 %299 to i64
%301 = getelementptr inbounds [7 x i32], [7 x i32]* %298, i64 0, i64 %300
store i32 %295, i32* %301
br label %302
302: ; preds = %293
br label %303
303: ; preds = %302, %275, %264, %253
br label %304
304: ; preds = %303, %250, %247
%305 = load i32, i32* %20
%306 = icmp sle i32 %305, 3
br i1 %306, label %307, label %358
307: ; preds = %304
%308 = load i32, i32* %21
%309 = sext i32 %308 to i64
%310 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %309
%311 = load i32, i32* %20
%312 = add nsw i32 %311, 1
%313 = sext i32 %312 to i64
%314 = getelementptr inbounds [7 x i32], [7 x i32]* %310, i64 0, i64 %313
%315 = load i32, i32* %314
%316 = load i32, i32* %10
%317 = icmp eq i32 %315, %316
br i1 %317, label %318, label %357
318: ; preds = %307
%319 = load i32, i32* %21
%320 = sext i32 %319 to i64
%321 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %320
%322 = load i32, i32* %20
%323 = add nsw i32 %322, 2
%324 = sext i32 %323 to i64
%325 = getelementptr inbounds [7 x i32], [7 x i32]* %321, i64 0, i64 %324
%326 = load i32, i32* %325
%327 = load i32, i32* %10
%328 = icmp eq i32 %326, %327
br i1 %328, label %329, label %357
329: ; preds = %318
%330 = load i32, i32* %21
%331 = sext i32 %330 to i64
%332 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %331
%333 = load i32, i32* %20
%334 = add nsw i32 %333, 3
%335 = sext i32 %334 to i64
%336 = getelementptr inbounds [7 x i32], [7 x i32]* %332, i64 0, i64 %335
%337 = load i32, i32* %336
%338 = load i32, i32* %10
%339 = icmp eq i32 %337, %338
br i1 %339, label %340, label %357
340: ; preds = %329
%341 = load i32, i32* %11
%342 = icmp ne i32 %341, 0
br i1 %342, label %343, label %347
343: ; preds = %340
%344 = load i32, i32* %21
%345 = load i32*, i32** %15
store i32 %344, i32* %345
%346 = load i32, i32* %20
store i32 %346, i32* %8
br label %596
347: ; preds = %340
store i32 1, i32* %11
%348 = load i32, i32* %10
%349 = sub nsw i32 0, %348
%350 = load i32, i32* %21
%351 = sext i32 %350 to i64
%352 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %351
%353 = load i32, i32* %20
%354 = sext i32 %353 to i64
%355 = getelementptr inbounds [7 x i32], [7 x i32]* %352, i64 0, i64 %354
store i32 %349, i32* %355
br label %356
356: ; preds = %347
br label %357
357: ; preds = %356, %329, %318, %307
br label %358
358: ; preds = %357, %304
%359 = load i32, i32* %21
%360 = sub nsw i32 %359, 1
store i32 %360, i32* %18
%361 = load i32, i32* %20
%362 = sub nsw i32 %361, 1
store i32 %362, i32* %19
store i32 0, i32* %17
store i32 1, i32* %16
br label %363
363: ; preds = %409, %358
%364 = load i32, i32* %18
%365 = icmp sge i32 %364, 0
br i1 %365, label %366, label %372
366: ; preds = %363
%367 = load i32, i32* %19
%368 = icmp sge i32 %367, 0
br i1 %368, label %369, label %372
369: ; preds = %366
%370 = load i32, i32* %16
%371 = icmp eq i32 %370, 1
br label %372
372: ; preds = %369, %366, %363
%373 = phi i1 [ false, %366 ], [ false, %363 ], [ %371, %369 ]
br i1 %373, label %374, label %414
374: ; preds = %372
%375 = load i32, i32* %18
%376 = sext i32 %375 to i64
%377 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %376
%378 = load i32, i32* %19
%379 = sext i32 %378 to i64
%380 = getelementptr inbounds [7 x i32], [7 x i32]* %377, i64 0, i64 %379
%381 = load i32, i32* %380
%382 = load i32, i32* %10
%383 = icmp ne i32 %381, %382
br i1 %383, label %384, label %385
384: ; preds = %374
store i32 0, i32* %16
br label %388
385: ; preds = %374
%386 = load i32, i32* %17
%387 = add nsw i32 %386, 1
store i32 %387, i32* %17
br label %388
388: ; preds = %385, %384
%389 = load i32, i32* %17
%390 = icmp eq i32 %389, 3
br i1 %390, label %391, label %408
391: ; preds = %388
%392 = load i32, i32* %11
%393 = icmp ne i32 %392, 0
br i1 %393, label %394, label %398
394: ; preds = %391
%395 = load i32, i32* %21
%396 = load i32*, i32** %15
store i32 %395, i32* %396
%397 = load i32, i32* %20
store i32 %397, i32* %8
br label %596
398: ; preds = %391
store i32 1, i32* %11
%399 = load i32, i32* %10
%400 = sub nsw i32 0, %399
%401 = load i32, i32* %21
%402 = sext i32 %401 to i64
%403 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %402
%404 = load i32, i32* %20
%405 = sext i32 %404 to i64
%406 = getelementptr inbounds [7 x i32], [7 x i32]* %403, i64 0, i64 %405
store i32 %400, i32* %406
br label %407
407: ; preds = %398
br label %408
408: ; preds = %407, %388
br label %409
409: ; preds = %408
%410 = load i32, i32* %18
%411 = sub nsw i32 %410, 1
store i32 %411, i32* %18
%412 = load i32, i32* %19
%413 = sub nsw i32 %412, 1
store i32 %413, i32* %19
br label %363
414: ; preds = %372
%415 = load i32, i32* %21
%416 = add nsw i32 %415, 1
store i32 %416, i32* %18
%417 = load i32, i32* %20
%418 = add nsw i32 %417, 1
store i32 %418, i32* %19
store i32 1, i32* %16
br label %419
419: ; preds = %465, %414
%420 = load i32, i32* %18
%421 = icmp sle i32 %420, 5
br i1 %421, label %422, label %428
422: ; preds = %419
%423 = load i32, i32* %19
%424 = icmp sle i32 %423, 6
br i1 %424, label %425, label %428
425: ; preds = %422
%426 = load i32, i32* %16
%427 = icmp eq i32 %426, 1
br label %428
428: ; preds = %425, %422, %419
%429 = phi i1 [ false, %422 ], [ false, %419 ], [ %427, %425 ]
br i1 %429, label %430, label %470
430: ; preds = %428
%431 = load i32, i32* %18
%432 = sext i32 %431 to i64
%433 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %432
%434 = load i32, i32* %19
%435 = sext i32 %434 to i64
%436 = getelementptr inbounds [7 x i32], [7 x i32]* %433, i64 0, i64 %435
%437 = load i32, i32* %436
%438 = load i32, i32* %10
%439 = icmp ne i32 %437, %438
br i1 %439, label %440, label %441
440: ; preds = %430
store i32 0, i32* %16
br label %444
441: ; preds = %430
%442 = load i32, i32* %17
%443 = add nsw i32 %442, 1
store i32 %443, i32* %17
br label %444
444: ; preds = %441, %440
%445 = load i32, i32* %17
%446 = icmp eq i32 %445, 3
br i1 %446, label %447, label %464
447: ; preds = %444
%448 = load i32, i32* %11
%449 = icmp ne i32 %448, 0
br i1 %449, label %450, label %454
450: ; preds = %447
%451 = load i32, i32* %21
%452 = load i32*, i32** %15
store i32 %451, i32* %452
%453 = load i32, i32* %20
store i32 %453, i32* %8
br label %596
454: ; preds = %447
store i32 1, i32* %11
%455 = load i32, i32* %10
%456 = sub nsw i32 0, %455
%457 = load i32, i32* %21
%458 = sext i32 %457 to i64
%459 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %458
%460 = load i32, i32* %20
%461 = sext i32 %460 to i64
%462 = getelementptr inbounds [7 x i32], [7 x i32]* %459, i64 0, i64 %461
store i32 %456, i32* %462
br label %463
463: ; preds = %454
br label %464
464: ; preds = %463, %444
br label %465
465: ; preds = %464
%466 = load i32, i32* %18
%467 = add nsw i32 %466, 1
store i32 %467, i32* %18
%468 = load i32, i32* %19
%469 = add nsw i32 %468, 1
store i32 %469, i32* %19
br label %419
470: ; preds = %428
%471 = load i32, i32* %21
%472 = add nsw i32 %471, 1
store i32 %472, i32* %18
%473 = load i32, i32* %20
%474 = sub nsw i32 %473, 1
store i32 %474, i32* %19
store i32 0, i32* %17
store i32 1, i32* %16
br label %475
475: ; preds = %521, %470
%476 = load i32, i32* %18
%477 = icmp sle i32 %476, 5
br i1 %477, label %478, label %484
478: ; preds = %475
%479 = load i32, i32* %19
%480 = icmp sge i32 %479, 0
br i1 %480, label %481, label %484
481: ; preds = %478
%482 = load i32, i32* %16
%483 = icmp eq i32 %482, 1
br label %484
484: ; preds = %481, %478, %475
%485 = phi i1 [ false, %478 ], [ false, %475 ], [ %483, %481 ]
br i1 %485, label %486, label %526
486: ; preds = %484
%487 = load i32, i32* %18
%488 = sext i32 %487 to i64
%489 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %488
%490 = load i32, i32* %19
%491 = sext i32 %490 to i64
%492 = getelementptr inbounds [7 x i32], [7 x i32]* %489, i64 0, i64 %491
%493 = load i32, i32* %492
%494 = load i32, i32* %10
%495 = icmp ne i32 %493, %494
br i1 %495, label %496, label %497
496: ; preds = %486
store i32 0, i32* %16
br label %500
497: ; preds = %486
%498 = load i32, i32* %17
%499 = add nsw i32 %498, 1
store i32 %499, i32* %17
br label %500
500: ; preds = %497, %496
%501 = load i32, i32* %17
%502 = icmp eq i32 %501, 3
br i1 %502, label %503, label %520
503: ; preds = %500
%504 = load i32, i32* %11
%505 = icmp ne i32 %504, 0
br i1 %505, label %506, label %510
506: ; preds = %503
%507 = load i32, i32* %21
%508 = load i32*, i32** %15
store i32 %507, i32* %508
%509 = load i32, i32* %20
store i32 %509, i32* %8
br label %596
510: ; preds = %503
store i32 1, i32* %11
%511 = load i32, i32* %10
%512 = sub nsw i32 0, %511
%513 = load i32, i32* %21
%514 = sext i32 %513 to i64
%515 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %514
%516 = load i32, i32* %20
%517 = sext i32 %516 to i64
%518 = getelementptr inbounds [7 x i32], [7 x i32]* %515, i64 0, i64 %517
store i32 %512, i32* %518
br label %519
519: ; preds = %510
br label %520
520: ; preds = %519, %500
br label %521
521: ; preds = %520
%522 = load i32, i32* %18
%523 = add nsw i32 %522, 1
store i32 %523, i32* %18
%524 = load i32, i32* %19
%525 = sub nsw i32 %524, 1
store i32 %525, i32* %19
br label %475
526: ; preds = %484
%527 = load i32, i32* %21
%528 = sub nsw i32 %527, 1
store i32 %528, i32* %18
%529 = load i32, i32* %20
%530 = add nsw i32 %529, 1
store i32 %530, i32* %19
store i32 1, i32* %16
br label %531
531: ; preds = %577, %526
%532 = load i32, i32* %18
%533 = icmp sge i32 %532, 0
br i1 %533, label %534, label %540
534: ; preds = %531
%535 = load i32, i32* %19
%536 = icmp sle i32 %535, 6
br i1 %536, label %537, label %540
537: ; preds = %534
%538 = load i32, i32* %16
%539 = icmp eq i32 %538, 1
br label %540
540: ; preds = %537, %534, %531
%541 = phi i1 [ false, %534 ], [ false, %531 ], [ %539, %537 ]
br i1 %541, label %542, label %582
542: ; preds = %540
%543 = load i32, i32* %18
%544 = sext i32 %543 to i64
%545 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %544
%546 = load i32, i32* %19
%547 = sext i32 %546 to i64
%548 = getelementptr inbounds [7 x i32], [7 x i32]* %545, i64 0, i64 %547
%549 = load i32, i32* %548
%550 = load i32, i32* %10
%551 = icmp ne i32 %549, %550
br i1 %551, label %552, label %553
552: ; preds = %542
store i32 0, i32* %16
br label %556
553: ; preds = %542
%554 = load i32, i32* %17
%555 = add nsw i32 %554, 1
store i32 %555, i32* %17
br label %556
556: ; preds = %553, %552
%557 = load i32, i32* %17
%558 = icmp eq i32 %557, 3
br i1 %558, label %559, label %576
559: ; preds = %556
%560 = load i32, i32* %11
%561 = icmp ne i32 %560, 0
br i1 %561, label %562, label %566
562: ; preds = %559
%563 = load i32, i32* %21
%564 = load i32*, i32** %15
store i32 %563, i32* %564
%565 = load i32, i32* %20
store i32 %565, i32* %8
br label %596
566: ; preds = %559
store i32 1, i32* %11
%567 = load i32, i32* %10
%568 = sub nsw i32 0, %567
%569 = load i32, i32* %21
%570 = sext i32 %569 to i64
%571 = getelementptr inbounds [6 x [7 x i32]], [6 x [7 x i32]]* %22, i64 0, i64 %570
%572 = load i32, i32* %20
%573 = sext i32 %572 to i64
%574 = getelementptr inbounds [7 x i32], [7 x i32]* %571, i64 0, i64 %573
store i32 %568, i32* %574
br label %575
575: ; preds = %566
br label %576
576: ; preds = %575, %556
br label %577
577: ; preds = %576
%578 = load i32, i32* %18
%579 = sub nsw i32 %578, 1
store i32 %579, i32* %18
%580 = load i32, i32* %19
%581 = add nsw i32 %580, 1
store i32 %581, i32* %19
br label %531
582: ; preds = %540
%583 = load i32, i32* %14
%584 = icmp ne i32 %583, 0
br i1 %584, label %586, label %585
585: ; preds = %582
br label %591
586: ; preds = %582
br label %587
587: ; preds = %586, %73
br label %588
588: ; preds = %587
%589 = load i32, i32* %21
%590 = add nsw i32 %589, 1
store i32 %590, i32* %21
br label %70
591: ; preds = %585, %70
br label %592
592: ; preds = %591
%593 = load i32, i32* %20
%594 = add nsw i32 %593, 1
store i32 %594, i32* %20
br label %66
595: ; preds = %66
store i32 -1, i32* %8
br label %596
596: ; preds = %595, %562, %506, %450, %394, %343, %289, %232, %175, %121
%597 = load i32, i32* %8
ret i32 %597
}

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