int bot1(int grid[6][7], int move) {
  int count, i, j, r;
  printf("l");
  for (j = 0; j < 7; j++) {
    if (grid[0][j] == 0 && j < 6) {
      continue;
    }
    r = rand() % 7;
    return r;
  }
  for (i = 0; i < 6; i++) {
    for (j = 0; j < 7; j++) {
      if (grid[i][j] == 1) {
        count++;
        if ((j + 1) < 7 && grid[i][j + 1] == 1) {
          count++;
          if ((j + 2) < 7 && grid[i][j + 2] == 1) {
            count++;
            if ((j + 3) < 7 && grid[i][j + 3] == 0)
              return j + 3;
            if ((j - 1) > 0 && grid[i][j - 1] == 0)
              return j - 1;
          }
        }
      }
    }
  }
  for (i = 0; i < 6; i++) {
    for (j = 0; j < 7; j++) {
      if (grid[i][j] == -1) {
        count++;
        if ((j + 1) < 7 && grid[i][j + 1] == -1) {
          count++;
          if ((j + 2) < 7 && grid[i][j + 2] == -1) {
            count++;
            if ((j + 3) < 7 && grid[i][j + 3] == 0)
              return j + 3;
            if ((j - 1) > 0 && grid[i][j - 1] == 0)
              return j - 1;
          }
        }
      }
    }
  }
  for (i = 0; i < 6; i++) {
    for (j = 0; j < 7; j++) {
      if (grid[i][j] == 1) {
        count++;
        if ((i + 1) < 4 && grid[i + 1][j] == 1) {
          count++;
          if ((i + 2) < 4 && grid[i + 2][j] == 1) {
            count++;
            if ((i + 3) < 4 && grid[i + 3][j] == 0)
              return j;
          }
        }
      }
    }
  }
  for (i = 0; i < 6; i++) {
    for (j = 0; j < 7; j++) {
      if (grid[i][j] == -1) {
        count++;
        if ((i + 1) < 4 && grid[i + 1][j] == -1) {
          count++;
          if ((i + 2) < 4 && grid[i + 2][j] == -1) {
            count++;
            if ((i + 3) < 4 && grid[i + 3][j] == 0)
              return j;
          }
        }
      }
    }
  }
  for (i = 0; i < 6; i++) {
    for (j = 0; j < 7; j++) {
      if (grid[i][j] == 1) {
        count++;
        if ((i + 1) < 4 && (j + 1) < 7 && grid[i + 1][j + 1] == 1) {
          count++;
          if ((i + 2) < 4 && (j + 2) < 7 && grid[i + 2][j + 2] == 1) {
            count++;
            if ((i + 3) < 4 && (j + 3) < 7 && grid[i + 3][j + 3] == 0)
              return j;
          }
        }
      }
    }
  }
  for (i = 0; i < 6; i++) {
    for (j = 0; j < 7; j++) {
      if (grid[i][j] == -1) {
        count++;
        if ((i + 1) < 4 && (j + 1) < 7 && grid[i + 1][j + 1] == -1) {
          count++;
          if ((i + 2) < 4 && (j + 2) < 7 && grid[i + 2][j + 2] == -1) {
            count++;
            if ((i + 3) < 4 && (j + 3) < 7 && grid[i + 3][j + 3] == 0)
              return j;
          }
        }
      }
    }
  }
}


x86 assembly (clang, -O0):
<bot1>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
mov    %esi,-0x14(%rbp)
lea    0xeca(%rip),%rdi
mov    $0x0,%al
call   1030 <printf@plt>
movl   $0x0,-0x20(%rbp)
cmpl   $0x7,-0x20(%rbp)
jge    119a <bot1+0x7a>
mov    -0x10(%rbp),%rax
movslq -0x20(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    116f <bot1+0x4f>
cmpl   $0x6,-0x20(%rbp)
jge    116f <bot1+0x4f>
jmp    118c <bot1+0x6c>
mov    $0x0,%al
call   1040 <rand@plt>
mov    $0x7,%ecx
cltd
idiv   %ecx
mov    %edx,-0x24(%rbp)
mov    -0x24(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    19a4 <bot1+0x884>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1144 <bot1+0x24>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x6,-0x1c(%rbp)
jge    1309 <bot1+0x1e9>
movl   $0x0,-0x20(%rbp)
cmpl   $0x7,-0x20(%rbp)
jge    12f6 <bot1+0x1d6>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    12e3 <bot1+0x1c3>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
cmp    $0x7,%eax
jge    12de <bot1+0x1be>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    12de <bot1+0x1be>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x20(%rbp),%eax
add    $0x2,%eax
cmp    $0x7,%eax
jge    12d9 <bot1+0x1b9>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    12d9 <bot1+0x1b9>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x20(%rbp),%eax
add    $0x3,%eax
cmp    $0x7,%eax
jge    1295 <bot1+0x175>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1295 <bot1+0x175>
mov    -0x20(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x4(%rbp)
jmp    19a4 <bot1+0x884>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jle    12d4 <bot1+0x1b4>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    12d4 <bot1+0x1b4>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    19a4 <bot1+0x884>
jmp    12d9 <bot1+0x1b9>
jmp    12de <bot1+0x1be>
jmp    12e3 <bot1+0x1c3>
jmp    12e8 <bot1+0x1c8>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    11b2 <bot1+0x92>
jmp    12fb <bot1+0x1db>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    11a1 <bot1+0x81>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x6,-0x1c(%rbp)
jge    1478 <bot1+0x358>
movl   $0x0,-0x20(%rbp)
cmpl   $0x7,-0x20(%rbp)
jge    1465 <bot1+0x345>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
cmpl   $0xffffffff,(%rax,%rcx,4)
jne    1452 <bot1+0x332>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
cmp    $0x7,%eax
jge    144d <bot1+0x32d>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0xffffffff,(%rax,%rcx,4)
jne    144d <bot1+0x32d>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x20(%rbp),%eax
add    $0x2,%eax
cmp    $0x7,%eax
jge    1448 <bot1+0x328>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0xffffffff,(%rax,%rcx,4)
jne    1448 <bot1+0x328>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x20(%rbp),%eax
add    $0x3,%eax
cmp    $0x7,%eax
jge    1404 <bot1+0x2e4>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1404 <bot1+0x2e4>
mov    -0x20(%rbp),%eax
add    $0x3,%eax
mov    %eax,-0x4(%rbp)
jmp    19a4 <bot1+0x884>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
cmp    $0x0,%eax
jle    1443 <bot1+0x323>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
sub    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1443 <bot1+0x323>
mov    -0x20(%rbp),%eax
sub    $0x1,%eax
mov    %eax,-0x4(%rbp)
jmp    19a4 <bot1+0x884>
jmp    1448 <bot1+0x328>
jmp    144d <bot1+0x32d>
jmp    1452 <bot1+0x332>
jmp    1457 <bot1+0x337>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1321 <bot1+0x201>
jmp    146a <bot1+0x34a>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1310 <bot1+0x1f0>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x6,-0x1c(%rbp)
jge    15a5 <bot1+0x485>
movl   $0x0,-0x20(%rbp)
cmpl   $0x7,-0x20(%rbp)
jge    1592 <bot1+0x472>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    157f <bot1+0x45f>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    $0x4,%eax
jge    157a <bot1+0x45a>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    157a <bot1+0x45a>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x2,%eax
cmp    $0x4,%eax
jge    1575 <bot1+0x455>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1575 <bot1+0x455>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x3,%eax
cmp    $0x4,%eax
jge    1570 <bot1+0x450>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1570 <bot1+0x450>
mov    -0x20(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    19a4 <bot1+0x884>
jmp    1575 <bot1+0x455>
jmp    157a <bot1+0x45a>
jmp    157f <bot1+0x45f>
jmp    1584 <bot1+0x464>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1490 <bot1+0x370>
jmp    1597 <bot1+0x477>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    147f <bot1+0x35f>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x6,-0x1c(%rbp)
jge    16d2 <bot1+0x5b2>
movl   $0x0,-0x20(%rbp)
cmpl   $0x7,-0x20(%rbp)
jge    16bf <bot1+0x59f>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
cmpl   $0xffffffff,(%rax,%rcx,4)
jne    16ac <bot1+0x58c>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    $0x4,%eax
jge    16a7 <bot1+0x587>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
cmpl   $0xffffffff,(%rax,%rcx,4)
jne    16a7 <bot1+0x587>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x2,%eax
cmp    $0x4,%eax
jge    16a2 <bot1+0x582>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
cmpl   $0xffffffff,(%rax,%rcx,4)
jne    16a2 <bot1+0x582>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x3,%eax
cmp    $0x4,%eax
jge    169d <bot1+0x57d>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    169d <bot1+0x57d>
mov    -0x20(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    19a4 <bot1+0x884>
jmp    16a2 <bot1+0x582>
jmp    16a7 <bot1+0x587>
jmp    16ac <bot1+0x58c>
jmp    16b1 <bot1+0x591>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    15bd <bot1+0x49d>
jmp    16c4 <bot1+0x5a4>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    15ac <bot1+0x48c>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x6,-0x1c(%rbp)
jge    183b <bot1+0x71b>
movl   $0x0,-0x20(%rbp)
cmpl   $0x7,-0x20(%rbp)
jge    1828 <bot1+0x708>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1815 <bot1+0x6f5>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    $0x4,%eax
jge    1810 <bot1+0x6f0>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
cmp    $0x7,%eax
jge    1810 <bot1+0x6f0>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    1810 <bot1+0x6f0>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x2,%eax
cmp    $0x4,%eax
jge    180b <bot1+0x6eb>
mov    -0x20(%rbp),%eax
add    $0x2,%eax
cmp    $0x7,%eax
jge    180b <bot1+0x6eb>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0x1,(%rax,%rcx,4)
jne    180b <bot1+0x6eb>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x3,%eax
cmp    $0x4,%eax
jge    1806 <bot1+0x6e6>
mov    -0x20(%rbp),%eax
add    $0x3,%eax
cmp    $0x7,%eax
jge    1806 <bot1+0x6e6>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    1806 <bot1+0x6e6>
mov    -0x20(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    19a4 <bot1+0x884>
jmp    180b <bot1+0x6eb>
jmp    1810 <bot1+0x6f0>
jmp    1815 <bot1+0x6f5>
jmp    181a <bot1+0x6fa>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    16ea <bot1+0x5ca>
jmp    182d <bot1+0x70d>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    16d9 <bot1+0x5b9>
movl   $0x0,-0x1c(%rbp)
cmpl   $0x6,-0x1c(%rbp)
jge    19a4 <bot1+0x884>
movl   $0x0,-0x20(%rbp)
cmpl   $0x7,-0x20(%rbp)
jge    1991 <bot1+0x871>
mov    -0x10(%rbp),%rax
movslq -0x1c(%rbp),%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
movslq -0x20(%rbp),%rcx
cmpl   $0xffffffff,(%rax,%rcx,4)
jne    197e <bot1+0x85e>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
cmp    $0x4,%eax
jge    1979 <bot1+0x859>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
cmp    $0x7,%eax
jge    1979 <bot1+0x859>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x1,%ecx
movslq %ecx,%rcx
cmpl   $0xffffffff,(%rax,%rcx,4)
jne    1979 <bot1+0x859>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x2,%eax
cmp    $0x4,%eax
jge    1974 <bot1+0x854>
mov    -0x20(%rbp),%eax
add    $0x2,%eax
cmp    $0x7,%eax
jge    1974 <bot1+0x854>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x2,%ecx
movslq %ecx,%rcx
cmpl   $0xffffffff,(%rax,%rcx,4)
jne    1974 <bot1+0x854>
mov    -0x18(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x18(%rbp)
mov    -0x1c(%rbp),%eax
add    $0x3,%eax
cmp    $0x4,%eax
jge    196f <bot1+0x84f>
mov    -0x20(%rbp),%eax
add    $0x3,%eax
cmp    $0x7,%eax
jge    196f <bot1+0x84f>
mov    -0x10(%rbp),%rax
mov    -0x1c(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
imul   $0x1c,%rcx,%rcx
add    %rcx,%rax
mov    -0x20(%rbp),%ecx
add    $0x3,%ecx
movslq %ecx,%rcx
cmpl   $0x0,(%rax,%rcx,4)
jne    196f <bot1+0x84f>
mov    -0x20(%rbp),%eax
mov    %eax,-0x4(%rbp)
jmp    19a4 <bot1+0x884>
jmp    1974 <bot1+0x854>
jmp    1979 <bot1+0x859>
jmp    197e <bot1+0x85e>
jmp    1983 <bot1+0x863>
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1853 <bot1+0x733>
jmp    1996 <bot1+0x876>
mov    -0x1c(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x1c(%rbp)
jmp    1842 <bot1+0x722>
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<bot1>:
push   %rax
mov    $0x6c,%edi
call   1030 <putchar@plt>
xor    %eax,%eax
call   1040 <rand@plt>
movslq %eax,%rcx
imul   $0xffffffff92492493,%rcx,%rax
shr    $0x20,%rax
add    %ecx,%eax
mov    %eax,%edx
shr    $0x1f,%edx
sar    $0x2,%eax
add    %edx,%eax
lea    0x0(,%rax,8),%edx
sub    %edx,%eax
add    %ecx,%eax
pop    %rcx
ret

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

LLVM IR (-O2):
define i32 @bot1([7 x i32]* %0, i32 %1) {
%3 = tail call i32 @putchar(i32 108)
%4 = tail call i32 (...) @rand()
%5 = srem i32 %4, 7
ret i32 %5
}