short get_first_winning_move(short a, short b, short c, short d, short e,
                             short f, short g, short h) {
  if (a != 0 && e == 0 && f == 0 && g != 0 && h == 0) {
    if (a + 4 == g)
      return 0;
    if (a + 5 == g && a % 4 != 0)
      return 1;
    if (a + 1 == g && a % 4 != 0)
      return 2;
    if (a - 3 == g && a % 4 != 0 && 8 < a)
      return 3;
    if (a - 4 == g && 8 < a)
      return 4;
    if (a - 5 == g && a % 4 != 1 && 8 < a)
      return 5;
    if (a - 1 == g && a % 4 != 1)
      return 6;
    if (a + 3 == g && a % 4 != 1)
      return 7;
  }
  if (a != 0 && e == 0 && f == 0 && g == 0 && h != 0) {
    if (a + 4 == h)
      return 0;
    if (a + 5 == h && a % 4 != 0)
      return 1;
    if (a + 1 == h && a % 4 != 0)
      return 2;
    if (a - 3 == h && a % 4 != 0 && 8 < a)
      return 3;
    if (a - 4 == h && 8 < a)
      return 4;
    if (a - 5 == h && a % 4 != 1 && 8 < a)
      return 5;
    if (a - 1 == h && a % 4 != 1)
      return 6;
    if (a + 3 == h && a % 4 != 1)
      return 7;
  }
  if (b != 0 && e != 0 && f == 0 && g == 0 && h == 0) {
    if (b + 4 == e)
      return 8;
    if (b + 5 == e && b % 4 != 0)
      return 9;
    if (b + 1 == e && b % 4 != 0)
      return 10;
    if (b - 3 == e && b % 4 != 0 && 8 < b)
      return 11;
    if (b - 4 == e && 8 < b)
      return 12;
    if (b - 5 == e && b % 4 != 1 && 8 < b)
      return 13;
    if (b - 1 == e && b % 4 != 1)
      return 14;
    if (b + 3 == e && b % 4 != 1)
      return 15;
  }
  if (b != 0 && e == 0 && f == 0 && g == 0 && h != 0) {
    if (b + 4 == h)
      return 8;
    if (b + 5 == h && b % 4 != 0)
      return 9;
    if (b + 1 == h && b % 4 != 0)
      return 10;
    if (b - 3 == h && b % 4 != 0 && 8 < b)
      return 11;
    if (b - 4 == h && 8 < b)
      return 12;
    if (b - 5 == h && b % 4 != 1 && 8 < b)
      return 13;
    if (b - 1 == h && b % 4 != 1)
      return 14;
    if (b + 3 == h && b % 4 != 1)
      return 15;
  }
  if (c != 0 && e == 0 && f != 0 && g == 0 && h == 0) {
    if (c + 4 == f)
      return 16;
    if (c + 5 == f && c % 4 != 0)
      return 17;
    if (c + 1 == f && c % 4 != 0)
      return 18;
    if (c - 3 == f && c % 4 != 0 && 8 < c)
      return 19;
    if (c - 4 == f && 8 < c)
      return 20;
    if (c - 5 == f && c % 4 != 1 && 8 < c)
      return 21;
    if (c - 1 == f && c % 4 != 1)
      return 22;
    if (c + 3 == f && c % 4 != 1)
      return 23;
  }
  if (d != 0 && e == 0 && f == 0 && g != 0 && h == 0) {
    if (d + 4 == g)
      return 24;
    if (d + 5 == g && d % 4 != 0)
      return 25;
    if (d + 1 == g && d % 4 != 0)
      return 26;
    if (d - 3 == g && d % 4 != 0 && 8 < d)
      return 27;
    if (d - 4 == g && 8 < d)
      return 28;
    if (d - 5 == g && d % 4 != 1 && 8 < d)
      return 29;
    if (d - 1 == g && d % 4 != 1)
      return 30;
    if (d + 3 == g && d % 4 != 1)
      return 31;
  }
  if ((a == 17 && e != 21 && f != 21) || (a == 18 && e != 22 && f != 22) ||
      (a == 19 && e != 23 && f != 23) || (a == 20 && e != 24 && f != 24))
    return 0;
  if ((a == 17 && e != 22 && f != 22) || (a == 18 && e != 23 && f != 23) ||
      (a == 19 && e != 24 && f != 24))
    return 1;
  if ((a == 18 && e != 21 && f != 21) || (a == 19 && e != 22 && f != 22) ||
      (a == 20 && e != 23 && f != 23))
    return 7;
  if ((b == 17 && f != 21 && g != 21) || (b == 18 && f != 22 && g != 22) ||
      (b == 19 && f != 23 && g != 23) || (b == 20 && f != 24 && g != 24))
    return 8;
  if ((b == 17 && f != 22 && g != 22) || (b == 18 && f != 23 && g != 23) ||
      (b == 19 && f != 24 && g != 24))
    return 9;
  if ((b == 18 && f != 21 && g != 21) || (b == 19 && f != 22 && g != 22) ||
      (b == 20 && f != 23 && g != 23))
    return 15;
  if ((c == 17 && e != 21 && g != 21 && h != 21) ||
      (c == 18 && e != 22 && g != 22 && h != 22) ||
      (c == 19 && e != 23 && g != 23 && h != 23) ||
      (c == 20 && e != 24 && g != 24 && h != 24))
    return 16;
  if ((c == 17 && e != 22 && g != 22 && h != 22) ||
      (c == 18 && e != 23 && g != 23 && h != 23) ||
      (c == 19 && e != 24 && g != 24 && h != 24))
    return 17;
  if ((c == 18 && e != 21 && g != 21 && h != 21) ||
      (c == 19 && e != 22 && g != 22 && h != 22) ||
      (c == 20 && e != 23 && g != 23 && h != 23))
    return 23;
  if ((d == 17 && e != 21 && f != 21 && h != 21) ||
      (d == 18 && e != 22 && f != 22 && h != 22) ||
      (d == 19 && e != 23 && f != 23 && h != 23) ||
      (d == 20 && e != 24 && f != 24 && h != 24))
    return 24;
  if ((d == 17 && e != 22 && f != 22 && h != 22) ||
      (d == 18 && e != 23 && f != 23 && h != 23) ||
      (d == 19 && e != 24 && f != 24 && h != 24))
    return 25;
  if ((d == 18 && e != 21 && f != 21 && h != 21) ||
      (d == 19 && e != 22 && f != 22 && h != 22) ||
      (d == 20 && e != 23 && f != 23 && h != 23))
    return 31;
  return -1;
}


x86 assembly (clang, -O0):
<get_first_winning_move>:
push   %rbp
mov    %rsp,%rbp
mov    %r8d,-0x20(%rbp)
mov    %ecx,%eax
mov    -0x20(%rbp),%ecx
mov    %eax,-0x1c(%rbp)
mov    %edx,%eax
mov    -0x1c(%rbp),%edx
mov    %eax,-0x18(%rbp)
mov    %esi,%eax
mov    -0x18(%rbp),%esi
mov    %eax,-0x14(%rbp)
mov    %edi,%r8d
mov    -0x14(%rbp),%edi
mov    %r9w,%ax
mov    0x18(%rbp),%r9w
mov    0x10(%rbp),%r9w
mov    %r8w,-0x4(%rbp)
mov    %di,-0x6(%rbp)
mov    %si,-0x8(%rbp)
mov    %dx,-0xa(%rbp)
mov    %cx,-0xc(%rbp)
mov    %ax,-0xe(%rbp)
movswl -0x4(%rbp),%eax
cmp    $0x0,%eax
je     1334 <get_first_winning_move+0x234>
movswl -0xc(%rbp),%eax
cmp    $0x0,%eax
jne    1334 <get_first_winning_move+0x234>
movswl -0xe(%rbp),%eax
cmp    $0x0,%eax
jne    1334 <get_first_winning_move+0x234>
movswl 0x10(%rbp),%eax
cmp    $0x0,%eax
je     1334 <get_first_winning_move+0x234>
movswl 0x18(%rbp),%eax
cmp    $0x0,%eax
jne    1334 <get_first_winning_move+0x234>
movswl -0x4(%rbp),%eax
add    $0x4,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    11ac <get_first_winning_move+0xac>
movw   $0x0,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
add    $0x5,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    11df <get_first_winning_move+0xdf>
movswl -0x4(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     11df <get_first_winning_move+0xdf>
movw   $0x1,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
add    $0x1,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    1212 <get_first_winning_move+0x112>
movswl -0x4(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     1212 <get_first_winning_move+0x112>
movw   $0x2,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
sub    $0x3,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    1256 <get_first_winning_move+0x156>
movswl -0x4(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     1256 <get_first_winning_move+0x156>
movswl -0x4(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    1256 <get_first_winning_move+0x156>
movw   $0x3,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
sub    $0x4,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    1285 <get_first_winning_move+0x185>
movswl -0x4(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    1285 <get_first_winning_move+0x185>
movw   $0x4,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
sub    $0x5,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    12c9 <get_first_winning_move+0x1c9>
movswl -0x4(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     12c9 <get_first_winning_move+0x1c9>
movswl -0x4(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    12c9 <get_first_winning_move+0x1c9>
movw   $0x5,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
sub    $0x1,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    12fc <get_first_winning_move+0x1fc>
movswl -0x4(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     12fc <get_first_winning_move+0x1fc>
movw   $0x6,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
add    $0x3,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    132f <get_first_winning_move+0x22f>
movswl -0x4(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     132f <get_first_winning_move+0x22f>
movw   $0x7,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
jmp    1334 <get_first_winning_move+0x234>
movswl -0x4(%rbp),%eax
cmp    $0x0,%eax
je     151b <get_first_winning_move+0x41b>
movswl -0xc(%rbp),%eax
cmp    $0x0,%eax
jne    151b <get_first_winning_move+0x41b>
movswl -0xe(%rbp),%eax
cmp    $0x0,%eax
jne    151b <get_first_winning_move+0x41b>
movswl 0x10(%rbp),%eax
cmp    $0x0,%eax
jne    151b <get_first_winning_move+0x41b>
movswl 0x18(%rbp),%eax
cmp    $0x0,%eax
je     151b <get_first_winning_move+0x41b>
movswl -0x4(%rbp),%eax
add    $0x4,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    1393 <get_first_winning_move+0x293>
movw   $0x0,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
add    $0x5,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    13c6 <get_first_winning_move+0x2c6>
movswl -0x4(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     13c6 <get_first_winning_move+0x2c6>
movw   $0x1,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
add    $0x1,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    13f9 <get_first_winning_move+0x2f9>
movswl -0x4(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     13f9 <get_first_winning_move+0x2f9>
movw   $0x2,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
sub    $0x3,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    143d <get_first_winning_move+0x33d>
movswl -0x4(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     143d <get_first_winning_move+0x33d>
movswl -0x4(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    143d <get_first_winning_move+0x33d>
movw   $0x3,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
sub    $0x4,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    146c <get_first_winning_move+0x36c>
movswl -0x4(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    146c <get_first_winning_move+0x36c>
movw   $0x4,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
sub    $0x5,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    14b0 <get_first_winning_move+0x3b0>
movswl -0x4(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     14b0 <get_first_winning_move+0x3b0>
movswl -0x4(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    14b0 <get_first_winning_move+0x3b0>
movw   $0x5,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
sub    $0x1,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    14e3 <get_first_winning_move+0x3e3>
movswl -0x4(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     14e3 <get_first_winning_move+0x3e3>
movw   $0x6,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
add    $0x3,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    1516 <get_first_winning_move+0x416>
movswl -0x4(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     1516 <get_first_winning_move+0x416>
movw   $0x7,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
jmp    151b <get_first_winning_move+0x41b>
movswl -0x6(%rbp),%eax
cmp    $0x0,%eax
je     1702 <get_first_winning_move+0x602>
movswl -0xc(%rbp),%eax
cmp    $0x0,%eax
je     1702 <get_first_winning_move+0x602>
movswl -0xe(%rbp),%eax
cmp    $0x0,%eax
jne    1702 <get_first_winning_move+0x602>
movswl 0x10(%rbp),%eax
cmp    $0x0,%eax
jne    1702 <get_first_winning_move+0x602>
movswl 0x18(%rbp),%eax
cmp    $0x0,%eax
jne    1702 <get_first_winning_move+0x602>
movswl -0x6(%rbp),%eax
add    $0x4,%eax
movswl -0xc(%rbp),%ecx
cmp    %ecx,%eax
jne    157a <get_first_winning_move+0x47a>
movw   $0x8,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
add    $0x5,%eax
movswl -0xc(%rbp),%ecx
cmp    %ecx,%eax
jne    15ad <get_first_winning_move+0x4ad>
movswl -0x6(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     15ad <get_first_winning_move+0x4ad>
movw   $0x9,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
add    $0x1,%eax
movswl -0xc(%rbp),%ecx
cmp    %ecx,%eax
jne    15e0 <get_first_winning_move+0x4e0>
movswl -0x6(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     15e0 <get_first_winning_move+0x4e0>
movw   $0xa,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
sub    $0x3,%eax
movswl -0xc(%rbp),%ecx
cmp    %ecx,%eax
jne    1624 <get_first_winning_move+0x524>
movswl -0x6(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     1624 <get_first_winning_move+0x524>
movswl -0x6(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    1624 <get_first_winning_move+0x524>
movw   $0xb,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
sub    $0x4,%eax
movswl -0xc(%rbp),%ecx
cmp    %ecx,%eax
jne    1653 <get_first_winning_move+0x553>
movswl -0x6(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    1653 <get_first_winning_move+0x553>
movw   $0xc,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
sub    $0x5,%eax
movswl -0xc(%rbp),%ecx
cmp    %ecx,%eax
jne    1697 <get_first_winning_move+0x597>
movswl -0x6(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     1697 <get_first_winning_move+0x597>
movswl -0x6(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    1697 <get_first_winning_move+0x597>
movw   $0xd,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
sub    $0x1,%eax
movswl -0xc(%rbp),%ecx
cmp    %ecx,%eax
jne    16ca <get_first_winning_move+0x5ca>
movswl -0x6(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     16ca <get_first_winning_move+0x5ca>
movw   $0xe,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
add    $0x3,%eax
movswl -0xc(%rbp),%ecx
cmp    %ecx,%eax
jne    16fd <get_first_winning_move+0x5fd>
movswl -0x6(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     16fd <get_first_winning_move+0x5fd>
movw   $0xf,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
jmp    1702 <get_first_winning_move+0x602>
movswl -0x6(%rbp),%eax
cmp    $0x0,%eax
je     18e9 <get_first_winning_move+0x7e9>
movswl -0xc(%rbp),%eax
cmp    $0x0,%eax
jne    18e9 <get_first_winning_move+0x7e9>
movswl -0xe(%rbp),%eax
cmp    $0x0,%eax
jne    18e9 <get_first_winning_move+0x7e9>
movswl 0x10(%rbp),%eax
cmp    $0x0,%eax
jne    18e9 <get_first_winning_move+0x7e9>
movswl 0x18(%rbp),%eax
cmp    $0x0,%eax
je     18e9 <get_first_winning_move+0x7e9>
movswl -0x6(%rbp),%eax
add    $0x4,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    1761 <get_first_winning_move+0x661>
movw   $0x8,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
add    $0x5,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    1794 <get_first_winning_move+0x694>
movswl -0x6(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     1794 <get_first_winning_move+0x694>
movw   $0x9,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
add    $0x1,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    17c7 <get_first_winning_move+0x6c7>
movswl -0x6(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     17c7 <get_first_winning_move+0x6c7>
movw   $0xa,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
sub    $0x3,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    180b <get_first_winning_move+0x70b>
movswl -0x6(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     180b <get_first_winning_move+0x70b>
movswl -0x6(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    180b <get_first_winning_move+0x70b>
movw   $0xb,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
sub    $0x4,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    183a <get_first_winning_move+0x73a>
movswl -0x6(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    183a <get_first_winning_move+0x73a>
movw   $0xc,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
sub    $0x5,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    187e <get_first_winning_move+0x77e>
movswl -0x6(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     187e <get_first_winning_move+0x77e>
movswl -0x6(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    187e <get_first_winning_move+0x77e>
movw   $0xd,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
sub    $0x1,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    18b1 <get_first_winning_move+0x7b1>
movswl -0x6(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     18b1 <get_first_winning_move+0x7b1>
movw   $0xe,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
add    $0x3,%eax
movswl 0x18(%rbp),%ecx
cmp    %ecx,%eax
jne    18e4 <get_first_winning_move+0x7e4>
movswl -0x6(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     18e4 <get_first_winning_move+0x7e4>
movw   $0xf,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
jmp    18e9 <get_first_winning_move+0x7e9>
movswl -0x8(%rbp),%eax
cmp    $0x0,%eax
je     1ad0 <get_first_winning_move+0x9d0>
movswl -0xc(%rbp),%eax
cmp    $0x0,%eax
jne    1ad0 <get_first_winning_move+0x9d0>
movswl -0xe(%rbp),%eax
cmp    $0x0,%eax
je     1ad0 <get_first_winning_move+0x9d0>
movswl 0x10(%rbp),%eax
cmp    $0x0,%eax
jne    1ad0 <get_first_winning_move+0x9d0>
movswl 0x18(%rbp),%eax
cmp    $0x0,%eax
jne    1ad0 <get_first_winning_move+0x9d0>
movswl -0x8(%rbp),%eax
add    $0x4,%eax
movswl -0xe(%rbp),%ecx
cmp    %ecx,%eax
jne    1948 <get_first_winning_move+0x848>
movw   $0x10,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x8(%rbp),%eax
add    $0x5,%eax
movswl -0xe(%rbp),%ecx
cmp    %ecx,%eax
jne    197b <get_first_winning_move+0x87b>
movswl -0x8(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     197b <get_first_winning_move+0x87b>
movw   $0x11,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x8(%rbp),%eax
add    $0x1,%eax
movswl -0xe(%rbp),%ecx
cmp    %ecx,%eax
jne    19ae <get_first_winning_move+0x8ae>
movswl -0x8(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     19ae <get_first_winning_move+0x8ae>
movw   $0x12,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x8(%rbp),%eax
sub    $0x3,%eax
movswl -0xe(%rbp),%ecx
cmp    %ecx,%eax
jne    19f2 <get_first_winning_move+0x8f2>
movswl -0x8(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     19f2 <get_first_winning_move+0x8f2>
movswl -0x8(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    19f2 <get_first_winning_move+0x8f2>
movw   $0x13,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x8(%rbp),%eax
sub    $0x4,%eax
movswl -0xe(%rbp),%ecx
cmp    %ecx,%eax
jne    1a21 <get_first_winning_move+0x921>
movswl -0x8(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    1a21 <get_first_winning_move+0x921>
movw   $0x14,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x8(%rbp),%eax
sub    $0x5,%eax
movswl -0xe(%rbp),%ecx
cmp    %ecx,%eax
jne    1a65 <get_first_winning_move+0x965>
movswl -0x8(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     1a65 <get_first_winning_move+0x965>
movswl -0x8(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    1a65 <get_first_winning_move+0x965>
movw   $0x15,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x8(%rbp),%eax
sub    $0x1,%eax
movswl -0xe(%rbp),%ecx
cmp    %ecx,%eax
jne    1a98 <get_first_winning_move+0x998>
movswl -0x8(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     1a98 <get_first_winning_move+0x998>
movw   $0x16,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x8(%rbp),%eax
add    $0x3,%eax
movswl -0xe(%rbp),%ecx
cmp    %ecx,%eax
jne    1acb <get_first_winning_move+0x9cb>
movswl -0x8(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     1acb <get_first_winning_move+0x9cb>
movw   $0x17,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
jmp    1ad0 <get_first_winning_move+0x9d0>
movswl -0xa(%rbp),%eax
cmp    $0x0,%eax
je     1cb7 <get_first_winning_move+0xbb7>
movswl -0xc(%rbp),%eax
cmp    $0x0,%eax
jne    1cb7 <get_first_winning_move+0xbb7>
movswl -0xe(%rbp),%eax
cmp    $0x0,%eax
jne    1cb7 <get_first_winning_move+0xbb7>
movswl 0x10(%rbp),%eax
cmp    $0x0,%eax
je     1cb7 <get_first_winning_move+0xbb7>
movswl 0x18(%rbp),%eax
cmp    $0x0,%eax
jne    1cb7 <get_first_winning_move+0xbb7>
movswl -0xa(%rbp),%eax
add    $0x4,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    1b2f <get_first_winning_move+0xa2f>
movw   $0x18,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0xa(%rbp),%eax
add    $0x5,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    1b62 <get_first_winning_move+0xa62>
movswl -0xa(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     1b62 <get_first_winning_move+0xa62>
movw   $0x19,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0xa(%rbp),%eax
add    $0x1,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    1b95 <get_first_winning_move+0xa95>
movswl -0xa(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     1b95 <get_first_winning_move+0xa95>
movw   $0x1a,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0xa(%rbp),%eax
sub    $0x3,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    1bd9 <get_first_winning_move+0xad9>
movswl -0xa(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x0,%edx
je     1bd9 <get_first_winning_move+0xad9>
movswl -0xa(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    1bd9 <get_first_winning_move+0xad9>
movw   $0x1b,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0xa(%rbp),%eax
sub    $0x4,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    1c08 <get_first_winning_move+0xb08>
movswl -0xa(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    1c08 <get_first_winning_move+0xb08>
movw   $0x1c,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0xa(%rbp),%eax
sub    $0x5,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    1c4c <get_first_winning_move+0xb4c>
movswl -0xa(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     1c4c <get_first_winning_move+0xb4c>
movswl -0xa(%rbp),%ecx
mov    $0x8,%eax
cmp    %ecx,%eax
jge    1c4c <get_first_winning_move+0xb4c>
movw   $0x1d,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0xa(%rbp),%eax
sub    $0x1,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    1c7f <get_first_winning_move+0xb7f>
movswl -0xa(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     1c7f <get_first_winning_move+0xb7f>
movw   $0x1e,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0xa(%rbp),%eax
add    $0x3,%eax
movswl 0x10(%rbp),%ecx
cmp    %ecx,%eax
jne    1cb2 <get_first_winning_move+0xbb2>
movswl -0xa(%rbp),%eax
mov    $0x4,%ecx
cltd
idiv   %ecx
cmp    $0x1,%edx
je     1cb2 <get_first_winning_move+0xbb2>
movw   $0x1f,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
jmp    1cb7 <get_first_winning_move+0xbb7>
movswl -0x4(%rbp),%eax
cmp    $0x11,%eax
jne    1cde <get_first_winning_move+0xbde>
movswl -0xc(%rbp),%eax
cmp    $0x15,%eax
je     1cde <get_first_winning_move+0xbde>
movswl -0xe(%rbp),%eax
cmp    $0x15,%eax
jne    1d53 <get_first_winning_move+0xc53>
movswl -0x4(%rbp),%eax
cmp    $0x12,%eax
jne    1d05 <get_first_winning_move+0xc05>
movswl -0xc(%rbp),%eax
cmp    $0x16,%eax
je     1d05 <get_first_winning_move+0xc05>
movswl -0xe(%rbp),%eax
cmp    $0x16,%eax
jne    1d53 <get_first_winning_move+0xc53>
movswl -0x4(%rbp),%eax
cmp    $0x13,%eax
jne    1d2c <get_first_winning_move+0xc2c>
movswl -0xc(%rbp),%eax
cmp    $0x17,%eax
je     1d2c <get_first_winning_move+0xc2c>
movswl -0xe(%rbp),%eax
cmp    $0x17,%eax
jne    1d53 <get_first_winning_move+0xc53>
movswl -0x4(%rbp),%eax
cmp    $0x14,%eax
jne    1d5e <get_first_winning_move+0xc5e>
movswl -0xc(%rbp),%eax
cmp    $0x18,%eax
je     1d5e <get_first_winning_move+0xc5e>
movswl -0xe(%rbp),%eax
cmp    $0x18,%eax
je     1d5e <get_first_winning_move+0xc5e>
movw   $0x0,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
cmp    $0x11,%eax
jne    1d85 <get_first_winning_move+0xc85>
movswl -0xc(%rbp),%eax
cmp    $0x16,%eax
je     1d85 <get_first_winning_move+0xc85>
movswl -0xe(%rbp),%eax
cmp    $0x16,%eax
jne    1dd3 <get_first_winning_move+0xcd3>
movswl -0x4(%rbp),%eax
cmp    $0x12,%eax
jne    1dac <get_first_winning_move+0xcac>
movswl -0xc(%rbp),%eax
cmp    $0x17,%eax
je     1dac <get_first_winning_move+0xcac>
movswl -0xe(%rbp),%eax
cmp    $0x17,%eax
jne    1dd3 <get_first_winning_move+0xcd3>
movswl -0x4(%rbp),%eax
cmp    $0x13,%eax
jne    1dde <get_first_winning_move+0xcde>
movswl -0xc(%rbp),%eax
cmp    $0x18,%eax
je     1dde <get_first_winning_move+0xcde>
movswl -0xe(%rbp),%eax
cmp    $0x18,%eax
je     1dde <get_first_winning_move+0xcde>
movw   $0x1,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x4(%rbp),%eax
cmp    $0x12,%eax
jne    1e05 <get_first_winning_move+0xd05>
movswl -0xc(%rbp),%eax
cmp    $0x15,%eax
je     1e05 <get_first_winning_move+0xd05>
movswl -0xe(%rbp),%eax
cmp    $0x15,%eax
jne    1e53 <get_first_winning_move+0xd53>
movswl -0x4(%rbp),%eax
cmp    $0x13,%eax
jne    1e2c <get_first_winning_move+0xd2c>
movswl -0xc(%rbp),%eax
cmp    $0x16,%eax
je     1e2c <get_first_winning_move+0xd2c>
movswl -0xe(%rbp),%eax
cmp    $0x16,%eax
jne    1e53 <get_first_winning_move+0xd53>
movswl -0x4(%rbp),%eax
cmp    $0x14,%eax
jne    1e5e <get_first_winning_move+0xd5e>
movswl -0xc(%rbp),%eax
cmp    $0x17,%eax
je     1e5e <get_first_winning_move+0xd5e>
movswl -0xe(%rbp),%eax
cmp    $0x17,%eax
je     1e5e <get_first_winning_move+0xd5e>
movw   $0x7,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
cmp    $0x11,%eax
jne    1e85 <get_first_winning_move+0xd85>
movswl -0xe(%rbp),%eax
cmp    $0x15,%eax
je     1e85 <get_first_winning_move+0xd85>
movswl 0x10(%rbp),%eax
cmp    $0x15,%eax
jne    1efa <get_first_winning_move+0xdfa>
movswl -0x6(%rbp),%eax
cmp    $0x12,%eax
jne    1eac <get_first_winning_move+0xdac>
movswl -0xe(%rbp),%eax
cmp    $0x16,%eax
je     1eac <get_first_winning_move+0xdac>
movswl 0x10(%rbp),%eax
cmp    $0x16,%eax
jne    1efa <get_first_winning_move+0xdfa>
movswl -0x6(%rbp),%eax
cmp    $0x13,%eax
jne    1ed3 <get_first_winning_move+0xdd3>
movswl -0xe(%rbp),%eax
cmp    $0x17,%eax
je     1ed3 <get_first_winning_move+0xdd3>
movswl 0x10(%rbp),%eax
cmp    $0x17,%eax
jne    1efa <get_first_winning_move+0xdfa>
movswl -0x6(%rbp),%eax
cmp    $0x14,%eax
jne    1f05 <get_first_winning_move+0xe05>
movswl -0xe(%rbp),%eax
cmp    $0x18,%eax
je     1f05 <get_first_winning_move+0xe05>
movswl 0x10(%rbp),%eax
cmp    $0x18,%eax
je     1f05 <get_first_winning_move+0xe05>
movw   $0x8,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
cmp    $0x11,%eax
jne    1f2c <get_first_winning_move+0xe2c>
movswl -0xe(%rbp),%eax
cmp    $0x16,%eax
je     1f2c <get_first_winning_move+0xe2c>
movswl 0x10(%rbp),%eax
cmp    $0x16,%eax
jne    1f7a <get_first_winning_move+0xe7a>
movswl -0x6(%rbp),%eax
cmp    $0x12,%eax
jne    1f53 <get_first_winning_move+0xe53>
movswl -0xe(%rbp),%eax
cmp    $0x17,%eax
je     1f53 <get_first_winning_move+0xe53>
movswl 0x10(%rbp),%eax
cmp    $0x17,%eax
jne    1f7a <get_first_winning_move+0xe7a>
movswl -0x6(%rbp),%eax
cmp    $0x13,%eax
jne    1f85 <get_first_winning_move+0xe85>
movswl -0xe(%rbp),%eax
cmp    $0x18,%eax
je     1f85 <get_first_winning_move+0xe85>
movswl 0x10(%rbp),%eax
cmp    $0x18,%eax
je     1f85 <get_first_winning_move+0xe85>
movw   $0x9,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x6(%rbp),%eax
cmp    $0x12,%eax
jne    1fac <get_first_winning_move+0xeac>
movswl -0xe(%rbp),%eax
cmp    $0x15,%eax
je     1fac <get_first_winning_move+0xeac>
movswl 0x10(%rbp),%eax
cmp    $0x15,%eax
jne    1ffa <get_first_winning_move+0xefa>
movswl -0x6(%rbp),%eax
cmp    $0x13,%eax
jne    1fd3 <get_first_winning_move+0xed3>
movswl -0xe(%rbp),%eax
cmp    $0x16,%eax
je     1fd3 <get_first_winning_move+0xed3>
movswl 0x10(%rbp),%eax
cmp    $0x16,%eax
jne    1ffa <get_first_winning_move+0xefa>
movswl -0x6(%rbp),%eax
cmp    $0x14,%eax
jne    2005 <get_first_winning_move+0xf05>
movswl -0xe(%rbp),%eax
cmp    $0x17,%eax
je     2005 <get_first_winning_move+0xf05>
movswl 0x10(%rbp),%eax
cmp    $0x17,%eax
je     2005 <get_first_winning_move+0xf05>
movw   $0xf,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x8(%rbp),%eax
cmp    $0x11,%eax
jne    2039 <get_first_winning_move+0xf39>
movswl -0xc(%rbp),%eax
cmp    $0x15,%eax
je     2039 <get_first_winning_move+0xf39>
movswl 0x10(%rbp),%eax
cmp    $0x15,%eax
je     2039 <get_first_winning_move+0xf39>
movswl 0x18(%rbp),%eax
cmp    $0x15,%eax
jne    20d5 <get_first_winning_move+0xfd5>
movswl -0x8(%rbp),%eax
cmp    $0x12,%eax
jne    206d <get_first_winning_move+0xf6d>
movswl -0xc(%rbp),%eax
cmp    $0x16,%eax
je     206d <get_first_winning_move+0xf6d>
movswl 0x10(%rbp),%eax
cmp    $0x16,%eax
je     206d <get_first_winning_move+0xf6d>
movswl 0x18(%rbp),%eax
cmp    $0x16,%eax
jne    20d5 <get_first_winning_move+0xfd5>
movswl -0x8(%rbp),%eax
cmp    $0x13,%eax
jne    20a1 <get_first_winning_move+0xfa1>
movswl -0xc(%rbp),%eax
cmp    $0x17,%eax
je     20a1 <get_first_winning_move+0xfa1>
movswl 0x10(%rbp),%eax
cmp    $0x17,%eax
je     20a1 <get_first_winning_move+0xfa1>
movswl 0x18(%rbp),%eax
cmp    $0x17,%eax
jne    20d5 <get_first_winning_move+0xfd5>
movswl -0x8(%rbp),%eax
cmp    $0x14,%eax
jne    20e0 <get_first_winning_move+0xfe0>
movswl -0xc(%rbp),%eax
cmp    $0x18,%eax
je     20e0 <get_first_winning_move+0xfe0>
movswl 0x10(%rbp),%eax
cmp    $0x18,%eax
je     20e0 <get_first_winning_move+0xfe0>
movswl 0x18(%rbp),%eax
cmp    $0x18,%eax
je     20e0 <get_first_winning_move+0xfe0>
movw   $0x10,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x8(%rbp),%eax
cmp    $0x11,%eax
jne    2114 <get_first_winning_move+0x1014>
movswl -0xc(%rbp),%eax
cmp    $0x16,%eax
je     2114 <get_first_winning_move+0x1014>
movswl 0x10(%rbp),%eax
cmp    $0x16,%eax
je     2114 <get_first_winning_move+0x1014>
movswl 0x18(%rbp),%eax
cmp    $0x16,%eax
jne    217c <get_first_winning_move+0x107c>
movswl -0x8(%rbp),%eax
cmp    $0x12,%eax
jne    2148 <get_first_winning_move+0x1048>
movswl -0xc(%rbp),%eax
cmp    $0x17,%eax
je     2148 <get_first_winning_move+0x1048>
movswl 0x10(%rbp),%eax
cmp    $0x17,%eax
je     2148 <get_first_winning_move+0x1048>
movswl 0x18(%rbp),%eax
cmp    $0x17,%eax
jne    217c <get_first_winning_move+0x107c>
movswl -0x8(%rbp),%eax
cmp    $0x13,%eax
jne    2187 <get_first_winning_move+0x1087>
movswl -0xc(%rbp),%eax
cmp    $0x18,%eax
je     2187 <get_first_winning_move+0x1087>
movswl 0x10(%rbp),%eax
cmp    $0x18,%eax
je     2187 <get_first_winning_move+0x1087>
movswl 0x18(%rbp),%eax
cmp    $0x18,%eax
je     2187 <get_first_winning_move+0x1087>
movw   $0x11,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0x8(%rbp),%eax
cmp    $0x12,%eax
jne    21bb <get_first_winning_move+0x10bb>
movswl -0xc(%rbp),%eax
cmp    $0x15,%eax
je     21bb <get_first_winning_move+0x10bb>
movswl 0x10(%rbp),%eax
cmp    $0x15,%eax
je     21bb <get_first_winning_move+0x10bb>
movswl 0x18(%rbp),%eax
cmp    $0x15,%eax
jne    2223 <get_first_winning_move+0x1123>
movswl -0x8(%rbp),%eax
cmp    $0x13,%eax
jne    21ef <get_first_winning_move+0x10ef>
movswl -0xc(%rbp),%eax
cmp    $0x16,%eax
je     21ef <get_first_winning_move+0x10ef>
movswl 0x10(%rbp),%eax
cmp    $0x16,%eax
je     21ef <get_first_winning_move+0x10ef>
movswl 0x18(%rbp),%eax
cmp    $0x16,%eax
jne    2223 <get_first_winning_move+0x1123>
movswl -0x8(%rbp),%eax
cmp    $0x14,%eax
jne    222e <get_first_winning_move+0x112e>
movswl -0xc(%rbp),%eax
cmp    $0x17,%eax
je     222e <get_first_winning_move+0x112e>
movswl 0x10(%rbp),%eax
cmp    $0x17,%eax
je     222e <get_first_winning_move+0x112e>
movswl 0x18(%rbp),%eax
cmp    $0x17,%eax
je     222e <get_first_winning_move+0x112e>
movw   $0x17,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0xa(%rbp),%eax
cmp    $0x11,%eax
jne    2262 <get_first_winning_move+0x1162>
movswl -0xc(%rbp),%eax
cmp    $0x15,%eax
je     2262 <get_first_winning_move+0x1162>
movswl -0xe(%rbp),%eax
cmp    $0x15,%eax
je     2262 <get_first_winning_move+0x1162>
movswl 0x18(%rbp),%eax
cmp    $0x15,%eax
jne    22fe <get_first_winning_move+0x11fe>
movswl -0xa(%rbp),%eax
cmp    $0x12,%eax
jne    2296 <get_first_winning_move+0x1196>
movswl -0xc(%rbp),%eax
cmp    $0x16,%eax
je     2296 <get_first_winning_move+0x1196>
movswl -0xe(%rbp),%eax
cmp    $0x16,%eax
je     2296 <get_first_winning_move+0x1196>
movswl 0x18(%rbp),%eax
cmp    $0x16,%eax
jne    22fe <get_first_winning_move+0x11fe>
movswl -0xa(%rbp),%eax
cmp    $0x13,%eax
jne    22ca <get_first_winning_move+0x11ca>
movswl -0xc(%rbp),%eax
cmp    $0x17,%eax
je     22ca <get_first_winning_move+0x11ca>
movswl -0xe(%rbp),%eax
cmp    $0x17,%eax
je     22ca <get_first_winning_move+0x11ca>
movswl 0x18(%rbp),%eax
cmp    $0x17,%eax
jne    22fe <get_first_winning_move+0x11fe>
movswl -0xa(%rbp),%eax
cmp    $0x14,%eax
jne    2309 <get_first_winning_move+0x1209>
movswl -0xc(%rbp),%eax
cmp    $0x18,%eax
je     2309 <get_first_winning_move+0x1209>
movswl -0xe(%rbp),%eax
cmp    $0x18,%eax
je     2309 <get_first_winning_move+0x1209>
movswl 0x18(%rbp),%eax
cmp    $0x18,%eax
je     2309 <get_first_winning_move+0x1209>
movw   $0x18,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0xa(%rbp),%eax
cmp    $0x11,%eax
jne    233d <get_first_winning_move+0x123d>
movswl -0xc(%rbp),%eax
cmp    $0x16,%eax
je     233d <get_first_winning_move+0x123d>
movswl -0xe(%rbp),%eax
cmp    $0x16,%eax
je     233d <get_first_winning_move+0x123d>
movswl 0x18(%rbp),%eax
cmp    $0x16,%eax
jne    23a5 <get_first_winning_move+0x12a5>
movswl -0xa(%rbp),%eax
cmp    $0x12,%eax
jne    2371 <get_first_winning_move+0x1271>
movswl -0xc(%rbp),%eax
cmp    $0x17,%eax
je     2371 <get_first_winning_move+0x1271>
movswl -0xe(%rbp),%eax
cmp    $0x17,%eax
je     2371 <get_first_winning_move+0x1271>
movswl 0x18(%rbp),%eax
cmp    $0x17,%eax
jne    23a5 <get_first_winning_move+0x12a5>
movswl -0xa(%rbp),%eax
cmp    $0x13,%eax
jne    23b0 <get_first_winning_move+0x12b0>
movswl -0xc(%rbp),%eax
cmp    $0x18,%eax
je     23b0 <get_first_winning_move+0x12b0>
movswl -0xe(%rbp),%eax
cmp    $0x18,%eax
je     23b0 <get_first_winning_move+0x12b0>
movswl 0x18(%rbp),%eax
cmp    $0x18,%eax
je     23b0 <get_first_winning_move+0x12b0>
movw   $0x19,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movswl -0xa(%rbp),%eax
cmp    $0x12,%eax
jne    23e4 <get_first_winning_move+0x12e4>
movswl -0xc(%rbp),%eax
cmp    $0x15,%eax
je     23e4 <get_first_winning_move+0x12e4>
movswl -0xe(%rbp),%eax
cmp    $0x15,%eax
je     23e4 <get_first_winning_move+0x12e4>
movswl 0x18(%rbp),%eax
cmp    $0x15,%eax
jne    244c <get_first_winning_move+0x134c>
movswl -0xa(%rbp),%eax
cmp    $0x13,%eax
jne    2418 <get_first_winning_move+0x1318>
movswl -0xc(%rbp),%eax
cmp    $0x16,%eax
je     2418 <get_first_winning_move+0x1318>
movswl -0xe(%rbp),%eax
cmp    $0x16,%eax
je     2418 <get_first_winning_move+0x1318>
movswl 0x18(%rbp),%eax
cmp    $0x16,%eax
jne    244c <get_first_winning_move+0x134c>
movswl -0xa(%rbp),%eax
cmp    $0x14,%eax
jne    2457 <get_first_winning_move+0x1357>
movswl -0xc(%rbp),%eax
cmp    $0x17,%eax
je     2457 <get_first_winning_move+0x1357>
movswl -0xe(%rbp),%eax
cmp    $0x17,%eax
je     2457 <get_first_winning_move+0x1357>
movswl 0x18(%rbp),%eax
cmp    $0x17,%eax
je     2457 <get_first_winning_move+0x1357>
movw   $0x1f,-0x2(%rbp)
jmp    245d <get_first_winning_move+0x135d>
movw   $0xffff,-0x2(%rbp)
movswl -0x2(%rbp),%eax
pop    %rbp
ret

x86 assembly (clang, -O2):
<get_first_winning_move>:
push   %rbp
push   %r15
push   %r14
push   %r13
push   %r12
push   %rbx
movswl 0x40(%rsp),%r10d
movzwl 0x38(%rsp),%r11d
test   %di,%di
setne  %bl
mov    %r9d,%ebp
or     %r8w,%bp
sete   %al
and    %bl,%al
movswl %r11w,%r14d
test   %r10d,%r10d
jne    120e <get_first_winning_move+0x10e>
test   %r11w,%r11w
je     120e <get_first_winning_move+0x10e>
test   %al,%al
je     120e <get_first_winning_move+0x10e>
lea    0x4(%rdi),%eax
cmp    %r14d,%eax
je     1233 <get_first_winning_move+0x133>
test   $0x3,%dil
je     1169 <get_first_winning_move+0x69>
lea    0x5(%rdi),%ebx
mov    $0x1,%ax
cmp    %r14d,%ebx
je     1235 <get_first_winning_move+0x135>
test   $0x3,%dil
je     117f <get_first_winning_move+0x7f>
lea    0x1(%rdi),%ebx
mov    $0x2,%ax
cmp    %r14d,%ebx
je     1235 <get_first_winning_move+0x135>
lea    -0x3(%rdi),%eax
cmp    %r14d,%eax
jne    119c <get_first_winning_move+0x9c>
cmp    $0x9,%di
jl     119c <get_first_winning_move+0x9c>
mov    %edi,%ebx
mov    $0x3,%ax
and    $0x3,%ebx
jne    1235 <get_first_winning_move+0x135>
cmp    $0x9,%di
jl     11b2 <get_first_winning_move+0xb2>
lea    -0x4(%rdi),%ebx
mov    $0x4,%ax
cmp    %r14d,%ebx
je     1235 <get_first_winning_move+0x135>
lea    0x3(%rdi),%eax
test   %di,%di
cmovns %edi,%eax
lea    -0x5(%rdi),%r15d
and    $0xfffffffc,%eax
mov    %edi,%ebx
sub    %eax,%ebx
cmp    %r14d,%r15d
jne    11db <get_first_winning_move+0xdb>
cmp    $0x9,%di
jl     11db <get_first_winning_move+0xdb>
mov    $0x5,%ax
cmp    $0x1,%bx
jne    1235 <get_first_winning_move+0x135>
cmp    $0x1,%bx
je     11ee <get_first_winning_move+0xee>
lea    -0x1(%rdi),%r15d
mov    $0x6,%ax
cmp    %r14d,%r15d
je     1235 <get_first_winning_move+0x135>
xor    %r12d,%r12d
cmp    $0x1,%bx
je     12ee <get_first_winning_move+0x1ee>
mov    %edi,%ebx
add    $0x3,%ebx
mov    $0x7,%ax
cmp    %r14d,%ebx
je     1235 <get_first_winning_move+0x135>
jmp    12ee <get_first_winning_move+0x1ee>
test   %r11w,%r11w
sete   %bl
test   %r10w,%r10w
setne  %r12b
je     12ee <get_first_winning_move+0x1ee>
and    %al,%bl
je     12ee <get_first_winning_move+0x1ee>
lea    0x4(%rdi),%eax
cmp    %r10d,%eax
jne    1240 <get_first_winning_move+0x140>
xor    %eax,%eax
pop    %rbx
pop    %r12
pop    %r13
pop    %r14
pop    %r15
pop    %rbp
ret
test   $0x3,%dil
je     1252 <get_first_winning_move+0x152>
lea    0x5(%rdi),%ebx
mov    $0x1,%ax
cmp    %r10d,%ebx
je     1235 <get_first_winning_move+0x135>
test   $0x3,%dil
je     1264 <get_first_winning_move+0x164>
lea    0x1(%rdi),%ebx
mov    $0x2,%ax
cmp    %r10d,%ebx
je     1235 <get_first_winning_move+0x135>
lea    -0x3(%rdi),%eax
cmp    %r10d,%eax
jne    127d <get_first_winning_move+0x17d>
cmp    $0x9,%di
jl     127d <get_first_winning_move+0x17d>
mov    %edi,%ebx
mov    $0x3,%ax
and    $0x3,%ebx
jne    1235 <get_first_winning_move+0x135>
cmp    $0x9,%di
jl     128f <get_first_winning_move+0x18f>
lea    -0x4(%rdi),%ebx
mov    $0x4,%ax
cmp    %r10d,%ebx
je     1235 <get_first_winning_move+0x135>
lea    0x3(%rdi),%eax
test   %di,%di
cmovns %edi,%eax
lea    -0x5(%rdi),%r15d
and    $0xfffffffc,%eax
mov    %edi,%ebx
sub    %eax,%ebx
cmp    %r10d,%r15d
jne    12bc <get_first_winning_move+0x1bc>
cmp    $0x9,%di
jl     12bc <get_first_winning_move+0x1bc>
mov    $0x5,%ax
cmp    $0x1,%bx
jne    1235 <get_first_winning_move+0x135>
cmp    $0x1,%bx
je     12d3 <get_first_winning_move+0x1d3>
lea    -0x1(%rdi),%r15d
mov    $0x6,%ax
cmp    %r10d,%r15d
je     1235 <get_first_winning_move+0x135>
mov    $0x1,%r12b
cmp    $0x1,%bx
je     12ee <get_first_winning_move+0x1ee>
mov    %edi,%ebx
add    $0x3,%ebx
mov    $0x7,%ax
cmp    %r10d,%ebx
je     1235 <get_first_winning_move+0x135>
movswl %si,%r13d
mov    %r10d,%r15d
or     %r11d,%r15d
test   %r13w,%r13w
je     13f7 <get_first_winning_move+0x2f7>
test   %r8w,%r8w
je     13f7 <get_first_winning_move+0x2f7>
mov    %r15d,%eax
or     %r9d,%eax
test   %ax,%ax
jne    13f7 <get_first_winning_move+0x2f7>
lea    0x4(%r13),%ebx
mov    $0x8,%ax
cmp    %r8d,%ebx
je     1235 <get_first_winning_move+0x135>
test   $0x3,%r13b
je     1343 <get_first_winning_move+0x243>
lea    0x5(%r13),%ebx
mov    $0x9,%ax
cmp    %r8d,%ebx
je     1235 <get_first_winning_move+0x135>
test   $0x3,%r13b
je     135a <get_first_winning_move+0x25a>
lea    0x1(%r13),%ebx
mov    $0xa,%ax
cmp    %r8d,%ebx
je     1235 <get_first_winning_move+0x135>
lea    -0x3(%r13),%eax
cmp    %r8d,%eax
jne    1379 <get_first_winning_move+0x279>
cmp    $0x9,%si
jl     1379 <get_first_winning_move+0x279>
mov    %r13d,%ebx
mov    $0xb,%ax
and    $0x3,%ebx
jne    1235 <get_first_winning_move+0x135>
cmp    $0x9,%si
jl     1390 <get_first_winning_move+0x290>
lea    -0x4(%r13),%ebx
mov    $0xc,%ax
cmp    %r8d,%ebx
je     1235 <get_first_winning_move+0x135>
lea    0x3(%rsi),%eax
test   %si,%si
cmovns %esi,%eax
lea    -0x5(%r13),%ebx
mov    %ebx,-0x8(%rsp)
and    $0xfffffffc,%eax
mov    %esi,%ebx
sub    %eax,%ebx
cmp    %r8d,-0x8(%rsp)
jne    13c3 <get_first_winning_move+0x2c3>
cmp    $0x9,%si
jl     13c3 <get_first_winning_move+0x2c3>
mov    $0xd,%ax
cmp    $0x1,%bx
jne    1235 <get_first_winning_move+0x135>
cmp    $0x1,%bx
je     13e0 <get_first_winning_move+0x2e0>
lea    -0x1(%r13),%eax
mov    %eax,-0x8(%rsp)
mov    $0xe,%ax
cmp    %r8d,-0x8(%rsp)
je     1235 <get_first_winning_move+0x135>
cmp    $0x1,%bx
je     13f7 <get_first_winning_move+0x2f7>
lea    0x3(%r13),%ebx
mov    $0xf,%ax
cmp    %r8d,%ebx
je     1235 <get_first_winning_move+0x135>
test   %si,%si
setne  %al
mov    %ebp,%ebx
or     %r11w,%bx
sete   %bl
and    %al,%bl
and    %r12b,%bl
cmp    $0x1,%bl
jne    14e9 <get_first_winning_move+0x3e9>
lea    0x4(%r13),%ebx
mov    $0x8,%ax
cmp    %r10d,%ebx
je     1235 <get_first_winning_move+0x135>
test   $0x3,%r13b
je     143c <get_first_winning_move+0x33c>
lea    0x5(%r13),%ebx
mov    $0x9,%ax
cmp    %r10d,%ebx
je     1235 <get_first_winning_move+0x135>
test   $0x3,%r13b
je     1453 <get_first_winning_move+0x353>
lea    0x1(%r13),%ebx
mov    $0xa,%ax
cmp    %r10d,%ebx
je     1235 <get_first_winning_move+0x135>
lea    -0x3(%r13),%eax
cmp    %r10d,%eax
jne    1472 <get_first_winning_move+0x372>
cmp    $0x9,%si
jl     1472 <get_first_winning_move+0x372>
mov    %r13d,%ebx
mov    $0xb,%ax
and    $0x3,%ebx
jne    1235 <get_first_winning_move+0x135>
cmp    $0x9,%si
jl     1489 <get_first_winning_move+0x389>
lea    -0x4(%r13),%ebx
mov    $0xc,%ax
cmp    %r10d,%ebx
je     1235 <get_first_winning_move+0x135>
lea    0x3(%rsi),%eax
test   %si,%si
cmovns %esi,%eax
lea    -0x5(%r13),%ebx
and    $0xfffffffc,%eax
mov    %esi,%r12d
sub    %eax,%r12d
cmp    %r10d,%ebx
jne    14b9 <get_first_winning_move+0x3b9>
cmp    $0x9,%si
jl     14b9 <get_first_winning_move+0x3b9>
mov    $0xd,%ax
cmp    $0x1,%r12w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x1,%r12w
je     14d1 <get_first_winning_move+0x3d1>
lea    -0x1(%r13),%ebx
mov    $0xe,%ax
cmp    %r10d,%ebx
je     1235 <get_first_winning_move+0x135>
cmp    $0x1,%r12w
je     14e9 <get_first_winning_move+0x3e9>
add    $0x3,%r13d
mov    $0xf,%ax
cmp    %r10d,%r13d
je     1235 <get_first_winning_move+0x135>
test   %dx,%dx
je     15f0 <get_first_winning_move+0x4f0>
test   %r8w,%r8w
jne    15f0 <get_first_winning_move+0x4f0>
test   %r9w,%r9w
je     15f0 <get_first_winning_move+0x4f0>
test   %r15w,%r15w
jne    15f0 <get_first_winning_move+0x4f0>
movswl %dx,%r12d
lea    0x4(%r12),%ebx
mov    $0x10,%ax
cmp    %r9d,%ebx
je     1235 <get_first_winning_move+0x135>
test   $0x3,%r12b
je     153e <get_first_winning_move+0x43e>
lea    0x5(%r12),%ebx
mov    $0x11,%ax
cmp    %r9d,%ebx
je     1235 <get_first_winning_move+0x135>
test   $0x3,%r12b
je     1556 <get_first_winning_move+0x456>
lea    0x1(%r12),%ebx
mov    $0x12,%ax
cmp    %r9d,%ebx
je     1235 <get_first_winning_move+0x135>
lea    -0x3(%r12),%eax
cmp    %r9d,%eax
jne    1576 <get_first_winning_move+0x476>
cmp    $0x9,%dx
jl     1576 <get_first_winning_move+0x476>
mov    %r12d,%ebx
mov    $0x13,%ax
and    $0x3,%ebx
jne    1235 <get_first_winning_move+0x135>
cmp    $0x9,%dx
jl     158e <get_first_winning_move+0x48e>
lea    -0x4(%r12),%ebx
mov    $0x14,%ax
cmp    %r9d,%ebx
je     1235 <get_first_winning_move+0x135>
lea    0x3(%rdx),%eax
test   %dx,%dx
cmovns %edx,%eax
lea    -0x5(%r12),%ebx
and    $0xfffffffc,%eax
mov    %edx,%r15d
sub    %eax,%r15d
cmp    %r9d,%ebx
jne    15bf <get_first_winning_move+0x4bf>
cmp    $0x9,%dx
jl     15bf <get_first_winning_move+0x4bf>
mov    $0x15,%ax
cmp    $0x1,%r15w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x1,%r15w
je     15d8 <get_first_winning_move+0x4d8>
lea    -0x1(%r12),%ebx
mov    $0x16,%ax
cmp    %r9d,%ebx
je     1235 <get_first_winning_move+0x135>
cmp    $0x1,%r15w
je     15f0 <get_first_winning_move+0x4f0>
add    $0x3,%r12d
mov    $0x17,%ax
cmp    %r9d,%r12d
je     1235 <get_first_winning_move+0x135>
test   %r10w,%r10w
jne    16e0 <get_first_winning_move+0x5e0>
test   %r11w,%r11w
je     16e0 <get_first_winning_move+0x5e0>
test   %cx,%cx
je     16e0 <get_first_winning_move+0x5e0>
test   %bp,%bp
jne    16e0 <get_first_winning_move+0x5e0>
movswl %cx,%ebx
lea    0x4(%rbx),%ebp
mov    $0x18,%ax
cmp    %r14d,%ebp
je     1235 <get_first_winning_move+0x135>
test   $0x3,%bl
je     163e <get_first_winning_move+0x53e>
lea    0x5(%rbx),%ebp
mov    $0x19,%ax
cmp    %r14d,%ebp
je     1235 <get_first_winning_move+0x135>
test   $0x3,%bl
je     1653 <get_first_winning_move+0x553>
lea    0x1(%rbx),%ebp
mov    $0x1a,%ax
cmp    %r14d,%ebp
je     1235 <get_first_winning_move+0x135>
lea    -0x3(%rbx),%eax
cmp    %r14d,%eax
jne    1670 <get_first_winning_move+0x570>
cmp    $0x9,%cx
jl     1670 <get_first_winning_move+0x570>
mov    %ebx,%ebp
mov    $0x1b,%ax
and    $0x3,%ebp
jne    1235 <get_first_winning_move+0x135>
cmp    $0x9,%cx
jl     1686 <get_first_winning_move+0x586>
lea    -0x4(%rbx),%ebp
mov    $0x1c,%ax
cmp    %r14d,%ebp
je     1235 <get_first_winning_move+0x135>
lea    0x3(%rcx),%eax
test   %cx,%cx
cmovns %ecx,%eax
lea    -0x5(%rbx),%r15d
and    $0xfffffffc,%eax
mov    %ecx,%ebp
sub    %eax,%ebp
cmp    %r14d,%r15d
jne    16b3 <get_first_winning_move+0x5b3>
cmp    $0x9,%cx
jl     16b3 <get_first_winning_move+0x5b3>
mov    $0x1d,%ax
cmp    $0x1,%bp
jne    1235 <get_first_winning_move+0x135>
cmp    $0x1,%bp
je     16ca <get_first_winning_move+0x5ca>
lea    -0x1(%rbx),%r15d
mov    $0x1e,%ax
cmp    %r14d,%r15d
je     1235 <get_first_winning_move+0x135>
cmp    $0x1,%bp
je     16e0 <get_first_winning_move+0x5e0>
add    $0x3,%ebx
mov    $0x1f,%ax
cmp    %r14d,%ebx
je     1235 <get_first_winning_move+0x135>
cmp    $0x11,%di
jne    16f8 <get_first_winning_move+0x5f8>
cmp    $0x15,%r8w
je     16f8 <get_first_winning_move+0x5f8>
cmp    $0x15,%r9w
jne    1233 <get_first_winning_move+0x133>
cmp    $0x12,%di
jne    1710 <get_first_winning_move+0x610>
cmp    $0x16,%r8w
je     1710 <get_first_winning_move+0x610>
cmp    $0x16,%r9w
jne    1233 <get_first_winning_move+0x133>
cmp    $0x13,%di
jne    1728 <get_first_winning_move+0x628>
cmp    $0x17,%r8w
je     1728 <get_first_winning_move+0x628>
cmp    $0x17,%r9w
jne    1233 <get_first_winning_move+0x133>
cmp    $0x14,%di
jne    1740 <get_first_winning_move+0x640>
cmp    $0x18,%r8w
je     1740 <get_first_winning_move+0x640>
cmp    $0x18,%r9w
jne    1233 <get_first_winning_move+0x133>
cmp    $0x18,%r9w
setne  %bpl
cmp    $0x18,%r8w
setne  %al
cmp    $0x17,%r9w
setne  -0x8(%rsp)
cmp    $0x17,%r8w
setne  -0x1(%rsp)
cmp    $0x13,%di
sete   %r14b
cmp    $0x16,%r9w
setne  %r15b
cmp    $0x16,%r8w
setne  %r12b
cmp    $0x12,%di
sete   %r13b
cmp    $0x11,%di
sete   %bl
and    %al,%r14b
mov    $0x1,%ax
test   %bpl,%r14b
jne    1235 <get_first_winning_move+0x135>
and    %r12b,%bl
and    %r15b,%bl
jne    1235 <get_first_winning_move+0x135>
and    -0x1(%rsp),%r13b
and    -0x8(%rsp),%r13b
jne    1235 <get_first_winning_move+0x135>
cmp    $0x14,%di
sete   %al
cmp    $0x17,%r9w
setne  %r13b
cmp    $0x17,%r8w
setne  %bpl
cmp    $0x13,%di
sete   %r15b
cmp    $0x16,%r9w
setne  -0x8(%rsp)
cmp    $0x16,%r8w
setne  %r14b
cmp    $0x12,%di
sete   %bl
cmp    $0x15,%r9w
setne  %dil
cmp    $0x15,%r8w
setne  %r12b
and    %al,%bpl
mov    $0x7,%ax
test   %r13b,%bpl
jne    1235 <get_first_winning_move+0x135>
and    %r12b,%bl
and    %dil,%bl
jne    1235 <get_first_winning_move+0x135>
and    %r14b,%r15b
and    -0x8(%rsp),%r15b
jne    1235 <get_first_winning_move+0x135>
mov    $0x8,%ax
cmp    $0x11,%si
jne    184d <get_first_winning_move+0x74d>
cmp    $0x15,%r9w
je     184d <get_first_winning_move+0x74d>
cmp    $0x15,%r11w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x12,%si
jne    1865 <get_first_winning_move+0x765>
cmp    $0x16,%r9w
je     1865 <get_first_winning_move+0x765>
cmp    $0x16,%r11w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x13,%si
jne    187d <get_first_winning_move+0x77d>
cmp    $0x17,%r9w
je     187d <get_first_winning_move+0x77d>
cmp    $0x17,%r11w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x14,%si
jne    1895 <get_first_winning_move+0x795>
cmp    $0x18,%r9w
je     1895 <get_first_winning_move+0x795>
cmp    $0x18,%r11w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x18,%r11w
setne  %r13b
cmp    $0x17,%r11w
setne  -0x8(%rsp)
cmp    $0x13,%si
sete   %al
cmp    $0x16,%r11w
setne  %bpl
cmp    $0x12,%si
sete   %r14b
cmp    $0x11,%si
sete   %bl
cmp    $0x18,%r9w
setne  %dil
cmp    $0x17,%r9w
setne  %r15b
cmp    $0x16,%r9w
setne  %r12b
and    %al,%dil
mov    $0x9,%ax
test   %r13b,%dil
jne    1235 <get_first_winning_move+0x135>
and    %r12b,%bl
and    %bpl,%bl
jne    1235 <get_first_winning_move+0x135>
and    %r15b,%r14b
and    -0x8(%rsp),%r14b
jne    1235 <get_first_winning_move+0x135>
cmp    $0x14,%si
sete   %al
cmp    $0x17,%r11w
setne  %r12b
cmp    $0x13,%si
sete   %bpl
cmp    $0x16,%r11w
setne  %dil
cmp    $0x12,%si
sete   %r13b
cmp    $0x15,%r11w
setne  %sil
cmp    $0x17,%r9w
setne  %bl
cmp    $0x16,%r9w
setne  %r14b
cmp    $0x15,%r9w
setne  %r15b
and    %al,%bl
mov    $0xf,%ax
test   %r12b,%bl
jne    1235 <get_first_winning_move+0x135>
and    %r15b,%r13b
and    %sil,%r13b
jne    1235 <get_first_winning_move+0x135>
and    %r14b,%bpl
and    %dil,%bpl
jne    1235 <get_first_winning_move+0x135>
mov    $0x10,%ax
cmp    $0x11,%dx
jne    19a2 <get_first_winning_move+0x8a2>
cmp    $0x15,%r8w
je     19a2 <get_first_winning_move+0x8a2>
cmp    $0x15,%r11w
je     19a2 <get_first_winning_move+0x8a2>
cmp    $0x15,%r10w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x12,%dx
jne    19c1 <get_first_winning_move+0x8c1>
cmp    $0x16,%r8w
je     19c1 <get_first_winning_move+0x8c1>
cmp    $0x16,%r11w
je     19c1 <get_first_winning_move+0x8c1>
cmp    $0x16,%r10w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x13,%dx
jne    19e0 <get_first_winning_move+0x8e0>
cmp    $0x17,%r8w
je     19e0 <get_first_winning_move+0x8e0>
cmp    $0x17,%r11w
je     19e0 <get_first_winning_move+0x8e0>
cmp    $0x17,%r10w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x14,%dx
jne    19ff <get_first_winning_move+0x8ff>
cmp    $0x18,%r8w
je     19ff <get_first_winning_move+0x8ff>
cmp    $0x18,%r11w
je     19ff <get_first_winning_move+0x8ff>
cmp    $0x18,%r10w
jne    1235 <get_first_winning_move+0x135>
mov    $0x11,%ax
cmp    $0x11,%dx
jne    1a22 <get_first_winning_move+0x922>
cmp    $0x16,%r8w
je     1a22 <get_first_winning_move+0x922>
cmp    $0x16,%r11w
je     1a22 <get_first_winning_move+0x922>
cmp    $0x16,%r10w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x12,%dx
jne    1a41 <get_first_winning_move+0x941>
cmp    $0x17,%r8w
je     1a41 <get_first_winning_move+0x941>
cmp    $0x17,%r11w
je     1a41 <get_first_winning_move+0x941>
cmp    $0x17,%r10w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x13,%dx
jne    1a60 <get_first_winning_move+0x960>
cmp    $0x18,%r8w
je     1a60 <get_first_winning_move+0x960>
cmp    $0x18,%r11w
je     1a60 <get_first_winning_move+0x960>
cmp    $0x18,%r10w
jne    1235 <get_first_winning_move+0x135>
mov    $0x17,%ax
cmp    $0x12,%dx
jne    1a83 <get_first_winning_move+0x983>
cmp    $0x15,%r8w
je     1a83 <get_first_winning_move+0x983>
cmp    $0x15,%r11w
je     1a83 <get_first_winning_move+0x983>
cmp    $0x15,%r10w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x13,%dx
jne    1aa2 <get_first_winning_move+0x9a2>
cmp    $0x16,%r8w
je     1aa2 <get_first_winning_move+0x9a2>
cmp    $0x16,%r11w
je     1aa2 <get_first_winning_move+0x9a2>
cmp    $0x16,%r10w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x14,%dx
jne    1ac1 <get_first_winning_move+0x9c1>
cmp    $0x17,%r8w
je     1ac1 <get_first_winning_move+0x9c1>
cmp    $0x17,%r11w
je     1ac1 <get_first_winning_move+0x9c1>
cmp    $0x17,%r10w
jne    1235 <get_first_winning_move+0x135>
mov    $0x18,%ax
cmp    $0x11,%cx
jne    1ae4 <get_first_winning_move+0x9e4>
cmp    $0x15,%r8w
je     1ae4 <get_first_winning_move+0x9e4>
cmp    $0x15,%r9w
je     1ae4 <get_first_winning_move+0x9e4>
cmp    $0x15,%r10w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x12,%cx
jne    1b03 <get_first_winning_move+0xa03>
cmp    $0x16,%r8w
je     1b03 <get_first_winning_move+0xa03>
cmp    $0x16,%r9w
je     1b03 <get_first_winning_move+0xa03>
cmp    $0x16,%r10w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x13,%cx
jne    1b22 <get_first_winning_move+0xa22>
cmp    $0x17,%r8w
je     1b22 <get_first_winning_move+0xa22>
cmp    $0x17,%r9w
je     1b22 <get_first_winning_move+0xa22>
cmp    $0x17,%r10w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x14,%cx
jne    1b41 <get_first_winning_move+0xa41>
cmp    $0x18,%r8w
je     1b41 <get_first_winning_move+0xa41>
cmp    $0x18,%r9w
je     1b41 <get_first_winning_move+0xa41>
cmp    $0x18,%r10w
jne    1235 <get_first_winning_move+0x135>
mov    $0x19,%ax
cmp    $0x11,%cx
jne    1b64 <get_first_winning_move+0xa64>
cmp    $0x16,%r8w
je     1b64 <get_first_winning_move+0xa64>
cmp    $0x16,%r9w
je     1b64 <get_first_winning_move+0xa64>
cmp    $0x16,%r10w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x12,%cx
jne    1b83 <get_first_winning_move+0xa83>
cmp    $0x17,%r8w
je     1b83 <get_first_winning_move+0xa83>
cmp    $0x17,%r9w
je     1b83 <get_first_winning_move+0xa83>
cmp    $0x17,%r10w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x13,%cx
jne    1ba2 <get_first_winning_move+0xaa2>
cmp    $0x18,%r8w
je     1ba2 <get_first_winning_move+0xaa2>
cmp    $0x18,%r9w
je     1ba2 <get_first_winning_move+0xaa2>
cmp    $0x18,%r10w
jne    1235 <get_first_winning_move+0x135>
mov    $0x1f,%ax
cmp    $0x12,%cx
jne    1bc5 <get_first_winning_move+0xac5>
cmp    $0x15,%r8w
je     1bc5 <get_first_winning_move+0xac5>
cmp    $0x15,%r9w
je     1bc5 <get_first_winning_move+0xac5>
cmp    $0x15,%r10w
jne    1235 <get_first_winning_move+0x135>
cmp    $0x13,%cx
jne    1be4 <get_first_winning_move+0xae4>
cmp    $0x16,%r8w
je     1be4 <get_first_winning_move+0xae4>
cmp    $0x16,%r9w
je     1be4 <get_first_winning_move+0xae4>
cmp    $0x16,%r10w
jne    1235 <get_first_winning_move+0x135>
xor    %eax,%eax
cmp    $0x17,%r10w
setne  %al
shl    $0x5,%eax
add    $0xffffffff,%eax
cmp    $0x17,%r9w
mov    $0xffff,%edx
cmove  %edx,%eax
cmp    $0x17,%r8w
cmove  %edx,%eax
cmp    $0x14,%cx
cmovne %edx,%eax
jmp    1235 <get_first_winning_move+0x135>

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

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