unsigned char **player1_draw(unsigned char **a,
                             struct game_position_t *game_positions,
                             int player1_move, int rows, int cols) {
  int i;
  if (player1_move == 1) {
    a[20][14] = 1;
    for (i = 1; i < 5; i++) {
      a[20 + i][14 + i] = 1;
      a[20 - i][14 + i] = 1;
      a[20 + i][14 - i] = 1;
      a[20 - i][14 - i] = 1;
    }
  } else if (player1_move == 2) {
    a[50][14] = 1;
    for (i = 1; i < 5; i++) {
      a[50 + i][14 + i] = 1;
      a[50 - i][14 + i] = 1;
      a[50 + i][14 - i] = 1;
      a[50 - i][14 - i] = 1;
    }
  } else if (player1_move == 3) {
    a[79][14] = 1;
    for (i = 1; i < 5; i++) {
      a[79 + i][14 + i] = 1;
      a[79 - i][14 + i] = 1;
      a[79 + i][14 - i] = 1;
      a[79 - i][14 - i] = 1;
    }
  } else if (player1_move == 4) {
    a[20][38] = 1;
    for (i = 1; i < 5; i++) {
      a[20 + i][38 + i] = 1;
      a[20 - i][38 + i] = 1;
      a[20 + i][38 - i] = 1;
      a[20 - i][38 - i] = 1;
    }
  } else if (player1_move == 5) {
    a[50][38] = 1;
    for (i = 1; i < 5; i++) {
      a[50 + i][38 + i] = 1;
      a[50 - i][38 + i] = 1;
      a[50 + i][38 - i] = 1;
      a[50 - i][38 - i] = 1;
    }
  } else if (player1_move == 6) {
    a[79][38] = 1;
    for (i = 1; i < 5; i++) {
      a[79 + i][38 + i] = 1;
      a[79 - i][38 + i] = 1;
      a[79 + i][38 - i] = 1;
      a[79 - i][38 - i] = 1;
    }
  } else if (player1_move == 7) {
    a[20][61] = 1;
    for (i = 1; i < 5; i++) {
      a[20 + i][61 + i] = 1;
      a[20 - i][61 + i] = 1;
      a[20 + i][61 - i] = 1;
      a[20 - i][61 - i] = 1;
    }
  } else if (player1_move == 8) {
    a[50][61] = 1;
    for (i = 1; i < 5; i++) {
      a[50 + i][61 + i] = 1;
      a[50 - i][61 + i] = 1;
      a[50 + i][61 - i] = 1;
      a[50 - i][61 - i] = 1;
    }
  } else if (player1_move == 9) {
    a[79][61] = 1;
    for (i = 1; i < 5; i++) {
      a[79 + i][61 + i] = 1;
      a[79 - i][61 + i] = 1;
      a[79 + i][61 - i] = 1;
      a[79 - i][61 - i] = 1;
    }
  }
  return a;
}


x86 assembly (clang, -O0):
<player1_draw>:
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
mov    %rsi,-0x10(%rbp)
mov    %edx,-0x14(%rbp)
mov    %ecx,-0x18(%rbp)
mov    %r8d,-0x1c(%rbp)
cmpl   $0x1,-0x14(%rbp)
jne    11d3 <player1_draw+0xd3>
mov    -0x8(%rbp),%rax
mov    0xa0(%rax),%rax
movb   $0x1,0xe(%rax)
movl   $0x1,-0x20(%rbp)
cmpl   $0x5,-0x20(%rbp)
jge    11ce <player1_draw+0xce>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x14,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0xe,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x14,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0xe,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x14,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0xe,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x14,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0xe,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1136 <player1_draw+0x36>
jmp    17e3 <player1_draw+0x6e3>
cmpl   $0x2,-0x14(%rbp)
jne    1290 <player1_draw+0x190>
mov    -0x8(%rbp),%rax
mov    0x190(%rax),%rax
movb   $0x1,0xe(%rax)
movl   $0x1,-0x20(%rbp)
cmpl   $0x5,-0x20(%rbp)
jge    128b <player1_draw+0x18b>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x32,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0xe,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x32,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0xe,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x32,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0xe,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x32,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0xe,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    11f3 <player1_draw+0xf3>
jmp    17de <player1_draw+0x6de>
cmpl   $0x3,-0x14(%rbp)
jne    134d <player1_draw+0x24d>
mov    -0x8(%rbp),%rax
mov    0x278(%rax),%rax
movb   $0x1,0xe(%rax)
movl   $0x1,-0x20(%rbp)
cmpl   $0x5,-0x20(%rbp)
jge    1348 <player1_draw+0x248>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x4f,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0xe,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x4f,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0xe,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x4f,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0xe,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x4f,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0xe,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    12b0 <player1_draw+0x1b0>
jmp    17d9 <player1_draw+0x6d9>
cmpl   $0x4,-0x14(%rbp)
jne    140a <player1_draw+0x30a>
mov    -0x8(%rbp),%rax
mov    0xa0(%rax),%rax
movb   $0x1,0x26(%rax)
movl   $0x1,-0x20(%rbp)
cmpl   $0x5,-0x20(%rbp)
jge    1405 <player1_draw+0x305>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x14,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x26,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x14,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x26,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x14,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0x26,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x14,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0x26,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    136d <player1_draw+0x26d>
jmp    17d4 <player1_draw+0x6d4>
cmpl   $0x5,-0x14(%rbp)
jne    14c7 <player1_draw+0x3c7>
mov    -0x8(%rbp),%rax
mov    0x190(%rax),%rax
movb   $0x1,0x26(%rax)
movl   $0x1,-0x20(%rbp)
cmpl   $0x5,-0x20(%rbp)
jge    14c2 <player1_draw+0x3c2>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x32,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x26,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x32,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x26,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x32,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0x26,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x32,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0x26,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    142a <player1_draw+0x32a>
jmp    17cf <player1_draw+0x6cf>
cmpl   $0x6,-0x14(%rbp)
jne    1584 <player1_draw+0x484>
mov    -0x8(%rbp),%rax
mov    0x278(%rax),%rax
movb   $0x1,0x26(%rax)
movl   $0x1,-0x20(%rbp)
cmpl   $0x5,-0x20(%rbp)
jge    157f <player1_draw+0x47f>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x4f,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x26,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x4f,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x26,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x4f,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0x26,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x4f,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0x26,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    14e7 <player1_draw+0x3e7>
jmp    17ca <player1_draw+0x6ca>
cmpl   $0x7,-0x14(%rbp)
jne    1641 <player1_draw+0x541>
mov    -0x8(%rbp),%rax
mov    0xa0(%rax),%rax
movb   $0x1,0x3d(%rax)
movl   $0x1,-0x20(%rbp)
cmpl   $0x5,-0x20(%rbp)
jge    163c <player1_draw+0x53c>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x14,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x3d,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x14,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x3d,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x14,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0x3d,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x14,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0x3d,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    15a4 <player1_draw+0x4a4>
jmp    17c5 <player1_draw+0x6c5>
cmpl   $0x8,-0x14(%rbp)
jne    16fe <player1_draw+0x5fe>
mov    -0x8(%rbp),%rax
mov    0x190(%rax),%rax
movb   $0x1,0x3d(%rax)
movl   $0x1,-0x20(%rbp)
cmpl   $0x5,-0x20(%rbp)
jge    16f9 <player1_draw+0x5f9>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x32,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x3d,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x32,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x3d,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x32,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0x3d,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x32,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0x3d,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    1661 <player1_draw+0x561>
jmp    17c0 <player1_draw+0x6c0>
cmpl   $0x9,-0x14(%rbp)
jne    17bb <player1_draw+0x6bb>
mov    -0x8(%rbp),%rax
mov    0x278(%rax),%rax
movb   $0x1,0x3d(%rax)
movl   $0x1,-0x20(%rbp)
cmpl   $0x5,-0x20(%rbp)
jge    17b6 <player1_draw+0x6b6>
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x4f,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x3d,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x4f,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    -0x20(%rbp),%ecx
add    $0x3d,%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    -0x20(%rbp),%ecx
add    $0x4f,%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0x3d,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x8(%rbp),%rax
mov    $0x4f,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
mov    (%rax,%rcx,8),%rax
mov    $0x3d,%ecx
sub    -0x20(%rbp),%ecx
movslq %ecx,%rcx
movb   $0x1,(%rax,%rcx,1)
mov    -0x20(%rbp),%eax
add    $0x1,%eax
mov    %eax,-0x20(%rbp)
jmp    171e <player1_draw+0x61e>
jmp    17bb <player1_draw+0x6bb>
jmp    17c0 <player1_draw+0x6c0>
jmp    17c5 <player1_draw+0x6c5>
jmp    17ca <player1_draw+0x6ca>
jmp    17cf <player1_draw+0x6cf>
jmp    17d4 <player1_draw+0x6d4>
jmp    17d9 <player1_draw+0x6d9>
jmp    17de <player1_draw+0x6de>
jmp    17e3 <player1_draw+0x6e3>
mov    -0x8(%rbp),%rax
pop    %rbp
ret

x86 assembly (clang, -O2):
<player1_draw>:
mov    %rdi,%rax
add    $0xffffffff,%edx
cmp    $0x8,%edx
ja     1261 <player1_draw+0x161>
movslq %edx,%rcx
lea    0xee7(%rip),%rdx
mov    (%rdx,%rcx,8),%r8
lea    0xf24(%rip),%rdx
mov    (%rdx,%rcx,8),%r9
lea    0xf61(%rip),%rdx
mov    (%rdx,%rcx,8),%r10
lea    0xf9e(%rip),%rsi
mov    (%rsi,%rcx,8),%rsi
mov    (%rax,%r8,8),%rdi
movb   $0x1,(%rdi,%r9,1)
lea    0xfd2(%rip),%rdi
mov    (%rdi,%rcx,8),%rdi
mov    (%rax,%r10,8),%rdx
movb   $0x1,(%rdx,%rsi,1)
mov    (%rax,%rdi,8),%rdx
movb   $0x1,(%rdx,%rsi,1)
lea    0xfff(%rip),%rdx
mov    (%rdx,%rcx,8),%rdx
lea    0x103c(%rip),%rsi
mov    (%rsi,%rcx,8),%r8
mov    (%rax,%r10,8),%rsi
movb   $0x1,(%rsi,%rdx,1)
lea    0x1071(%rip),%rsi
mov    (%rsi,%rcx,8),%rsi
mov    (%rax,%rdi,8),%rdi
movb   $0x1,(%rdi,%rdx,1)
lea    0x10a6(%rip),%rdx
mov    (%rdx,%rcx,8),%rdx
mov    (%rax,%r8,8),%rdi
movb   $0x1,(%rdi,%rsi,1)
mov    (%rax,%rdx,8),%rdi
movb   $0x1,(%rdi,%rsi,1)
lea    0x10d3(%rip),%rsi
mov    (%rsi,%rcx,8),%rsi
lea    0x1110(%rip),%rdi
mov    (%rdi,%rcx,8),%r9
mov    (%rax,%r8,8),%rdi
movb   $0x1,(%rdi,%rsi,1)
lea    0x1145(%rip),%rdi
mov    (%rdi,%rcx,8),%rdi
mov    (%rax,%rdx,8),%rdx
movb   $0x1,(%rdx,%rsi,1)
lea    0x117a(%rip),%rdx
mov    (%rdx,%rcx,8),%rdx
mov    (%rax,%r9,8),%rsi
movb   $0x1,(%rsi,%rdi,1)
mov    (%rax,%rdx,8),%rsi
movb   $0x1,(%rsi,%rdi,1)
lea    0x11a7(%rip),%rsi
mov    (%rsi,%rcx,8),%rsi
lea    0x11e4(%rip),%rdi
mov    (%rdi,%rcx,8),%r8
mov    (%rax,%r9,8),%rdi
movb   $0x1,(%rdi,%rsi,1)
lea    0x1219(%rip),%rdi
mov    (%rdi,%rcx,8),%rdi
mov    (%rax,%rdx,8),%rdx
movb   $0x1,(%rdx,%rsi,1)
lea    0x124e(%rip),%rdx
mov    (%rdx,%rcx,8),%rdx
mov    (%rax,%r8,8),%rsi
movb   $0x1,(%rsi,%rdi,1)
mov    (%rax,%rdx,8),%rsi
movb   $0x1,(%rsi,%rdi,1)
lea    0x127b(%rip),%rsi
mov    (%rsi,%rcx,8),%rcx
mov    (%rax,%r8,8),%rsi
movb   $0x1,(%rsi,%rcx,1)
mov    (%rax,%rdx,8),%rdx
movb   $0x1,(%rdx,%rcx,1)
ret

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

LLVM IR (-O2):
%struct.game_position_t = type opaque
@switch.table.player1_draw = [9 x i64] [i64 20, i64 50, i64 79, i64 20, i64 50, i64 79, i64 20, i64 50, i64 79]
@switch.table.player1_draw.1 = [9 x i64] [i64 14, i64 14, i64 14, i64 38, i64 38, i64 38, i64 61, i64 61, i64 61]
@switch.table.player1_draw.2 = [9 x i64] [i64 21, i64 51, i64 80, i64 21, i64 51, i64 80, i64 21, i64 51, i64 80]
@switch.table.player1_draw.3 = [9 x i64] [i64 15, i64 15, i64 15, i64 39, i64 39, i64 39, i64 62, i64 62, i64 62]
@switch.table.player1_draw.4 = [9 x i64] [i64 19, i64 49, i64 78, i64 19, i64 49, i64 78, i64 19, i64 49, i64 78]
@switch.table.player1_draw.5 = [9 x i64] [i64 13, i64 13, i64 13, i64 37, i64 37, i64 37, i64 60, i64 60, i64 60]
@switch.table.player1_draw.6 = [9 x i64] [i64 22, i64 52, i64 81, i64 22, i64 52, i64 81, i64 22, i64 52, i64 81]
@switch.table.player1_draw.7 = [9 x i64] [i64 16, i64 16, i64 16, i64 40, i64 40, i64 40, i64 63, i64 63, i64 63]
@switch.table.player1_draw.8 = [9 x i64] [i64 18, i64 48, i64 77, i64 18, i64 48, i64 77, i64 18, i64 48, i64 77]
@switch.table.player1_draw.9 = [9 x i64] [i64 12, i64 12, i64 12, i64 36, i64 36, i64 36, i64 59, i64 59, i64 59]
@switch.table.player1_draw.10 = [9 x i64] [i64 23, i64 53, i64 82, i64 23, i64 53, i64 82, i64 23, i64 53, i64 82]
@switch.table.player1_draw.11 = [9 x i64] [i64 17, i64 17, i64 17, i64 41, i64 41, i64 41, i64 64, i64 64, i64 64]
@switch.table.player1_draw.12 = [9 x i64] [i64 17, i64 47, i64 76, i64 17, i64 47, i64 76, i64 17, i64 47, i64 76]
@switch.table.player1_draw.13 = [9 x i64] [i64 11, i64 11, i64 11, i64 35, i64 35, i64 35, i64 58, i64 58, i64 58]
@switch.table.player1_draw.14 = [9 x i64] [i64 24, i64 54, i64 83, i64 24, i64 54, i64 83, i64 24, i64 54, i64 83]
@switch.table.player1_draw.15 = [9 x i64] [i64 18, i64 18, i64 18, i64 42, i64 42, i64 42, i64 65, i64 65, i64 65]
@switch.table.player1_draw.16 = [9 x i64] [i64 16, i64 46, i64 75, i64 16, i64 46, i64 75, i64 16, i64 46, i64 75]
@switch.table.player1_draw.17 = [9 x i64] [i64 10, i64 10, i64 10, i64 34, i64 34, i64 34, i64 57, i64 57, i64 57]
define i8** @player1_draw(i8** returned %0, %struct.game_position_t* nocapture readnone %1, i32 %2, i32 %3, i32 %4) {
%6 = add i32 %2, -1
%7 = icmp ult i32 %6, 9
br i1 %7, label %8, label %106
8: ; preds = %5
%9 = sext i32 %6 to i64
%10 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw, i64 0, i64 %9
%11 = load i64, i64* %10
%12 = sext i32 %6 to i64
%13 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.1, i64 0, i64 %12
%14 = load i64, i64* %13
%15 = sext i32 %6 to i64
%16 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.2, i64 0, i64 %15
%17 = load i64, i64* %16
%18 = sext i32 %6 to i64
%19 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.3, i64 0, i64 %18
%20 = load i64, i64* %19
%21 = sext i32 %6 to i64
%22 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.4, i64 0, i64 %21
%23 = load i64, i64* %22
%24 = sext i32 %6 to i64
%25 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.5, i64 0, i64 %24
%26 = load i64, i64* %25
%27 = sext i32 %6 to i64
%28 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.6, i64 0, i64 %27
%29 = load i64, i64* %28
%30 = sext i32 %6 to i64
%31 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.7, i64 0, i64 %30
%32 = load i64, i64* %31
%33 = sext i32 %6 to i64
%34 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.8, i64 0, i64 %33
%35 = load i64, i64* %34
%36 = sext i32 %6 to i64
%37 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.9, i64 0, i64 %36
%38 = load i64, i64* %37
%39 = sext i32 %6 to i64
%40 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.10, i64 0, i64 %39
%41 = load i64, i64* %40
%42 = sext i32 %6 to i64
%43 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.11, i64 0, i64 %42
%44 = load i64, i64* %43
%45 = sext i32 %6 to i64
%46 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.12, i64 0, i64 %45
%47 = load i64, i64* %46
%48 = sext i32 %6 to i64
%49 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.13, i64 0, i64 %48
%50 = load i64, i64* %49
%51 = sext i32 %6 to i64
%52 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.14, i64 0, i64 %51
%53 = load i64, i64* %52
%54 = sext i32 %6 to i64
%55 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.15, i64 0, i64 %54
%56 = load i64, i64* %55
%57 = sext i32 %6 to i64
%58 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.16, i64 0, i64 %57
%59 = load i64, i64* %58
%60 = sext i32 %6 to i64
%61 = getelementptr inbounds [9 x i64], [9 x i64]* @switch.table.player1_draw.17, i64 0, i64 %60
%62 = load i64, i64* %61
%63 = getelementptr inbounds i8*, i8** %0, i64 %11
%64 = load i8*, i8** %63
%65 = getelementptr inbounds i8, i8* %64, i64 %14
store i8 1, i8* %65
%66 = getelementptr inbounds i8*, i8** %0, i64 %17
%67 = load i8*, i8** %66
%68 = getelementptr inbounds i8, i8* %67, i64 %20
store i8 1, i8* %68
%69 = getelementptr inbounds i8*, i8** %0, i64 %23
%70 = load i8*, i8** %69
%71 = getelementptr inbounds i8, i8* %70, i64 %20
store i8 1, i8* %71
%72 = load i8*, i8** %66
%73 = getelementptr inbounds i8, i8* %72, i64 %26
store i8 1, i8* %73
%74 = load i8*, i8** %69
%75 = getelementptr inbounds i8, i8* %74, i64 %26
store i8 1, i8* %75
%76 = getelementptr inbounds i8*, i8** %0, i64 %29
%77 = load i8*, i8** %76
%78 = getelementptr inbounds i8, i8* %77, i64 %32
store i8 1, i8* %78
%79 = getelementptr inbounds i8*, i8** %0, i64 %35
%80 = load i8*, i8** %79
%81 = getelementptr inbounds i8, i8* %80, i64 %32
store i8 1, i8* %81
%82 = load i8*, i8** %76
%83 = getelementptr inbounds i8, i8* %82, i64 %38
store i8 1, i8* %83
%84 = load i8*, i8** %79
%85 = getelementptr inbounds i8, i8* %84, i64 %38
store i8 1, i8* %85
%86 = getelementptr inbounds i8*, i8** %0, i64 %41
%87 = load i8*, i8** %86
%88 = getelementptr inbounds i8, i8* %87, i64 %44
store i8 1, i8* %88
%89 = getelementptr inbounds i8*, i8** %0, i64 %47
%90 = load i8*, i8** %89
%91 = getelementptr inbounds i8, i8* %90, i64 %44
store i8 1, i8* %91
%92 = load i8*, i8** %86
%93 = getelementptr inbounds i8, i8* %92, i64 %50
store i8 1, i8* %93
%94 = load i8*, i8** %89
%95 = getelementptr inbounds i8, i8* %94, i64 %50
store i8 1, i8* %95
%96 = getelementptr inbounds i8*, i8** %0, i64 %53
%97 = load i8*, i8** %96
%98 = getelementptr inbounds i8, i8* %97, i64 %56
store i8 1, i8* %98
%99 = getelementptr inbounds i8*, i8** %0, i64 %59
%100 = load i8*, i8** %99
%101 = getelementptr inbounds i8, i8* %100, i64 %56
store i8 1, i8* %101
%102 = load i8*, i8** %96
%103 = getelementptr inbounds i8, i8* %102, i64 %62
store i8 1, i8* %103
%104 = load i8*, i8** %99
%105 = getelementptr inbounds i8, i8* %104, i64 %62
store i8 1, i8* %105
br label %106
106: ; preds = %5, %8
ret i8** %0
}