user: 下面的汇编指令对应的C源代码是什么：

```asm
<get_first_winning_move>:
  endbr64
  mov    %edi,%eax
  test   %r8w,%r8w
  push   %r15
  mov    %edx,%r11d
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  sete   %bpl
  push   %rbx
  mov    0x38(%rsp),%edi
  mov    0x40(%rsp),%ebx
  test   %ax,%ax
  je     L892
  test   %bpl,%bpl
  je     L892
  mov    %ebx,%edx
  or     %r9w,%dx
  jne    L2564
  test   %di,%di
  jne    L1433
L2564:
  mov    %edi,%edx
  or     %r9w,%dx
  jne    L2816
  test   %bx,%bx
  jne    L1998
L2816:
  test   %si,%si
  setne  %dl
L1296:
  and    %bpl,%dl
  je     L2662
  mov    %edi,%r10d
  or     %r9w,%r10w
  jne    L2662
  test   %bx,%bx
  je     L298
  movswl %si,%ebp
  movswl %bx,%r12d
  lea    0x4(%rbp),%r13d
  cmp    %r12d,%r13d
  je     L1532
  lea    0x5(%rbp),%r13d
  cmp    %r13d,%r12d
  je     L386
  lea    0x1(%rbp),%r13d
  cmp    %r13d,%r12d
  je     L2138
L135:
  cmp    $0x8,%si
  lea    -0x3(%rbp),%r15d
  setg   %r13b
  mov    %r13d,%r14d
  cmp    %r15d,%r12d
  je     L2056
L1907:
  lea    -0x4(%rbp),%r13d
  cmp    %r12d,%r13d
  jne    L2012
  test   %r14b,%r14b
  je     L2012
L396:
  mov    $0xc,%r10d
L2827:
  pop    %rbx
  mov    %r10d,%eax
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L892:
  test   %si,%si
  setne  %r10b
  mov    %r10d,%edx
  test   %r8w,%r8w
  je     L1296
  test   %r10b,%r10b
  je     L1296
  mov    %ebx,%edx
  or     %edi,%edx
  or     %r9w,%dx
  jne    L2154
  movswl %si,%edx
  movswl %r8w,%ebp
  lea    0x4(%rdx),%r10d
  cmp    %ebp,%r10d
  je     L1532
  lea    0x5(%rdx),%r10d
  cmp    %r10d,%ebp
  je     L2376
  lea    0x1(%rdx),%r10d
  cmp    %r10d,%ebp
  je     L1891
L2497:
  cmp    $0x8,%si
  lea    -0x3(%rdx),%r10d
  setg   %r12b
  cmp    %r10d,%ebp
  je     L2169
L761:
  lea    -0x4(%rdx),%r10d
  cmp    %ebp,%r10d
  jne    L402
  test   %r12b,%r12b
  jne    L396
L402:
  lea    -0x5(%rdx),%r10d
  cmp    %r10d,%ebp
  je     L1536
L537:
  lea    -0x1(%rdx),%r10d
  cmp    %r10d,%ebp
  je     L745
L136:
  add    $0x3,%edx
  cmp    %edx,%ebp
  je     L213
  nopl   (%rax)
L2351:
  cmp    $0x11,%ax
  sete   %bpl
  cmp    $0x15,%r8w
  setne  %dl
  mov    %ebp,%r12d
  and    %dl,%r12b
  je     L2397
  xor    %r10d,%r10d
  cmp    $0x15,%r9w
  jne    L2827
  cmp    $0x16,%r8w
  setne  %r15b
  cmp    $0x17,%r8w
  setne  %r14b
  mov    %r15d,%r13d
  cmp    $0x18,%r8w
  mov    $0x1,%r8d
  setne  %al
  and    $0x1,%r13d
  je     L2343
  mov    $0x1,%r10d
  pop    %rbx
  pop    %rbp
  mov    %r10d,%eax
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L2662:
  test   %r11w,%r11w
  je     L2154
  test   %bpl,%bpl
  je     L2154
  test   %r9w,%r9w
  je     L2154
  test   %di,%di
  jne    L2154
  test   %bx,%bx
  jne    L2351
  movswl %r11w,%edx
  movswl %r9w,%ebp
  lea    0x4(%rdx),%r10d
  cmp    %ebp,%r10d
  je     L1074
  lea    0x5(%rdx),%r10d
  cmp    %r10d,%ebp
  je     L1555
  lea    0x1(%rdx),%r10d
  cmp    %r10d,%ebp
  je     L643
L2132:
  cmp    $0x8,%r11w
  lea    -0x3(%rdx),%r10d
  setg   %r12b
  cmp    %r10d,%ebp
  je     L2474
L2513:
  lea    -0x4(%rdx),%r10d
  cmp    %ebp,%r10d
  jne    L114
  test   %r12b,%r12b
  jne    L2009
L114:
  lea    -0x5(%rdx),%r10d
  cmp    %r10d,%ebp
  je     L1470
L2360:
  lea    -0x1(%rdx),%r10d
  cmp    %r10d,%ebp
  je     L661
  add    $0x3,%edx
  cmp    %edx,%ebp
  jne    L2351
  mov    %r11d,%edx
  mov    $0x17,%r10d
  and    $0x8003,%dx
  cmp    $0x1,%dx
  je     L2351
  jmp    L2827
L2154:
  test   %cx,%cx
  je     L2351
  test   %bpl,%bpl
  je     L2351
  mov    %ebx,%edx
  or     %r9w,%dx
  sete   %r10b
  test   %di,%di
  setne  %dl
  mov    %r10d,%r15d
  and    %dl,%r15b
  je     L2351
  movswl %cx,%edx
  movswl %di,%r12d
  lea    0x4(%rdx),%r10d
  cmp    %r12d,%r10d
  je     L482
  lea    0x5(%rdx),%r10d
  cmp    %r10d,%r12d
  je     L2640
  lea    0x1(%rdx),%r10d
  cmp    %r10d,%r12d
  je     L329
L1490:
  cmp    $0x8,%cx
  lea    -0x3(%rdx),%r10d
  setg   %r13b
  cmp    %r10d,%r12d
  je     L2134
L2644:
  lea    -0x4(%rdx),%r10d
  cmp    %r12d,%r10d
  sete   %bpl
  and    %r13b,%bpl
  jne    L61
  lea    -0x5(%rdx),%r10d
  cmp    %r10d,%r12d
  je     L138
L111:
  lea    -0x1(%rdx),%r10d
  cmp    %r10d,%r12d
  je     L1006
  add    $0x3,%edx
  cmp    %edx,%r12d
  je     L1515
L839:
  xor    %r10d,%r10d
  cmp    $0x11,%ax
  je     L2827
  cmp    $0x12,%ax
  mov    %r15d,%edx
  sete   %r12b
  je     L2827
  nopl   0x0(%rax)
L1894:
  cmp    $0x13,%ax
  sete   -0x6(%rsp)
  cmp    $0x17,%r8w
  movzbl -0x6(%rsp),%r13d
  setne  %r14b
  and    %r14b,%r13b
  je     L2567
  xor    %r10d,%r10d
  cmp    $0x17,%r9w
  jne    L2827
  movb   $0x0,-0x4(%rsp)
  cmp    $0x18,%r8w
  mov    %r13d,%r14d
  mov    %r13d,%r8d
  movb   $0x0,-0x5(%rsp)
  setne  %al
  xor    %ebp,%ebp
L2430:
  cmp    $0x18,%r9w
  setne  %r12b
  test   %r13b,%al
  je     L2439
  mov    $0x1,%r10d
  test   %r12b,%r12b
  jne    L2827
L2439:
  cmp    $0x15,%r9w
  setne  %r9b
  test   %dl,-0x5(%rsp)
  je     L2771
  mov    $0x7,%r10d
  test   %r9b,%r9b
  jne    L2827
L2771:
  test   %r13b,%r15b
  je     L1593
  mov    $0x7,%r10d
  test   %r8b,%r8b
  jne    L2827
L1593:
  test   %r14b,-0x4(%rsp)
  je     L80
  mov    $0x7,%r10d
  test   %bpl,%bpl
  jne    L2827
L80:
  cmp    $0x11,%si
  sete   -0x6(%rsp)
  jne    L1757
  test   %r9b,%r9b
  je     L1757
  mov    $0x8,%r10d
  cmp    $0x15,%di
  jne    L2827
  movzbl -0x6(%rsp),%esi
  movb   $0x1,-0x2(%rsp)
  and    %r8b,%sil
  mov    %sil,-0x4(%rsp)
  je     L2398
L729:
  mov    $0x9,%r10d
  jmp    L2827
  nopl   0x0(%rax)
L298:
  cmp    $0x11,%ax
  sete   %bpl
  je     L2827
L2397:
  cmp    $0x12,%ax
  sete   %r12b
  cmp    $0x16,%r8w
  setne  %r15b
  mov    %r12d,%r14d
  and    %r15b,%r14b
  mov    %r14b,-0x5(%rsp)
  je     L1894
  xor    %r10d,%r10d
  cmp    $0x16,%r9w
  jne    L2827
  cmp    $0x17,%r8w
  mov    $0x1,%ebp
  mov    $0x1,%r10d
  setne  %r14b
  cmp    $0x18,%r8w
  mov    %r14d,%r15d
  setne  %al
  and    $0x1,%r15d
  mov    %r15b,-0x4(%rsp)
  jne    L2827
  movzbl -0x5(%rsp),%r15d
  mov    $0x1,%r12d
  xor    %r13d,%r13d
  xor    %r8d,%r8d
  jmp    L2439
  nopl   0x0(%rax,%rax,1)
L1433:
  movswl %ax,%edx
  movswl %di,%r12d
  xor    %r10d,%r10d
  lea    0x4(%rdx),%r13d
  cmp    %r12d,%r13d
  je     L2827
L2293:
  lea    0x5(%rdx),%r10d
  cmp    %r10d,%r12d
  je     L2091
  lea    0x1(%rdx),%r10d
  cmp    %r10d,%r12d
  je     L2111
L395:
  cmp    $0x8,%ax
  lea    -0x3(%rdx),%r10d
  setg   %r13b
  cmp    %r10d,%r12d
  je     L711
L1604:
  lea    -0x4(%rdx),%r10d
  cmp    %r12d,%r10d
  jne    L1951
  test   %r13b,%r13b
  jne    L1963
L1951:
  lea    -0x5(%rdx),%r10d
  cmp    %r10d,%r12d
  je     L2388
L2226:
  lea    -0x1(%rdx),%r10d
  cmp    %r10d,%r12d
  je     L154
  add    $0x3,%edx
  cmp    %edx,%r12d
  jne    L2816
  mov    %eax,%edx
  mov    $0x7,%r10d
  and    $0x8003,%dx
  cmp    $0x1,%dx
  je     L2816
  jmp    L2827
  nopw   0x0(%rax,%rax,1)
L1998:
  movswl %ax,%edx
  movswl %bx,%r12d
  xor    %r10d,%r10d
  lea    0x4(%rdx),%r13d
  cmp    %r12d,%r13d
  jne    L2293
  jmp    L2827
  nopl   0x0(%rax)
L2012:
  lea    -0x5(%rbp),%r13d
  cmp    %r13d,%r12d
  je     L2046
L1104:
  lea    -0x1(%rbp),%r13d
  cmp    %r13d,%r12d
  je     L1829
  add    $0x3,%ebp
  cmp    %ebp,%r12d
  jne    L298
  mov    %esi,%ebp
  and    $0x8003,%bp
  cmp    $0x1,%bp
  je     L298
  mov    $0xf,%r10d
  jmp    L2827
  nopw   0x0(%rax,%rax,1)
L2567:
  cmp    $0x14,%ax
  sete   %r10b
  cmp    $0x18,%r8w
  setne  %al
  cmp    $0x18,%r9w
  mov    %r10b,-0x4(%rsp)
  setne  %r8b
  test   %al,%r8b
  je     L487
  test   %r10b,%r10b
  je     L487
  xor    %r10d,%r10d
  jmp    L2827
  nopl   0x0(%rax,%rax,1)
L2091:
  mov    $0x1,%r10d
  test   $0x3,%al
  jne    L2827
  lea    0x1(%rdx),%r10d
  cmp    %r10d,%r12d
  jne    L395
L313:
  cmp    $0x8,%ax
  setg   %r13b
  jmp    L1604
  nopl   0x0(%rax,%rax,1)
L2376:
  mov    $0x9,%r10d
  test   $0x3,%sil
  jne    L2827
  lea    0x1(%rdx),%r10d
  cmp    %r10d,%ebp
  jne    L2497
L2369:
  cmp    $0x8,%si
  setg   %r12b
  jmp    L761
  nopw   0x0(%rax,%rax,1)
L213:
  mov    %esi,%edx
  mov    $0xf,%r10d
  and    $0x8003,%dx
  cmp    $0x1,%dx
  je     L2351
  jmp    L2827
  nopl   0x0(%rax)
L1532:
  mov    $0x8,%r10d
  jmp    L2827
  nopl   0x0(%rax,%rax,1)
L2640:
  mov    $0x19,%r10d
  test   $0x3,%cl
  jne    L2827
  lea    0x1(%rdx),%r10d
  cmp    %r10d,%r12d
  jne    L1490
L951:
  cmp    $0x8,%cx
  setg   %r13b
  jmp    L2644
  nopl   0x0(%rax)
L2046:
  mov    %esi,%r13d
  and    $0x8003,%r13w
  cmp    $0x1,%r13w
  je     L1104
  test   %r14b,%r14b
  je     L1104
  mov    $0xd,%r10d
  jmp    L2827
  nopl   0x0(%rax,%rax,1)
L1829:
  mov    %esi,%ebp
  and    $0x8003,%bp
  cmp    $0x1,%bp
  je     L298
  mov    $0xe,%r10d
  jmp    L2827
  nopl   0x0(%rax)
L2138:
  test   $0x3,%sil
  jne    L33
L924:
  cmp    $0x8,%si
  setg   %r14b
  jmp    L1907
  nopw   0x0(%rax,%rax,1)
L643:
  mov    $0x12,%r10d
  test   $0x3,%r11b
  jne    L2827
L697:
  cmp    $0x8,%r11w
  setg   %r12b
  jmp    L2513
  xchg   %ax,%ax
L2056:
  test   $0x3,%sil
  je     L1907
  test   %r13b,%r13b
  je     L1907
  mov    $0xb,%r10d
  jmp    L2827
  xchg   %ax,%ax
L1536:
  mov    %esi,%r10d
  and    $0x8003,%r10w
  cmp    $0x1,%r10w
  je     L537
  mov    $0xd,%r10d
  test   %r12b,%r12b
  je     L537
  jmp    L2827
  nopl   0x0(%rax,%rax,1)
L2388:
  mov    %eax,%r10d
  and    $0x8003,%r10w
  cmp    $0x1,%r10w
  je     L2226
  mov    $0x5,%r10d
  test   %r13b,%r13b
  je     L2226
  jmp    L2827
  nopl   0x0(%rax,%rax,1)
L745:
  mov    %esi,%r12d
  mov    $0xe,%r10d
  and    $0x8003,%r12w
  cmp    $0x1,%r12w
  je     L136
  jmp    L2827
  nop
L154:
  mov    %eax,%edx
  mov    $0x6,%r10d
  and    $0x8003,%dx
  cmp    $0x1,%dx
  je     L2816
  jmp    L2827
  nopl   0x0(%rax)
L2111:
  mov    $0x2,%r10d
  test   $0x3,%al
  je     L313
  jmp    L2827
  nopl   0x0(%rax,%rax,1)
L1891:
  mov    $0xa,%r10d
  test   $0x3,%sil
  je     L2369
  jmp    L2827
  nopl   (%rax)
L2169:
  test   $0x3,%sil
  je     L761
  mov    $0xb,%r10d
  test   %r12b,%r12b
  je     L761
  jmp    L2827
  xchg   %ax,%ax
L711:
  test   $0x3,%al
  je     L1604
  mov    $0x3,%r10d
  test   %r13b,%r13b
  je     L1604
  jmp    L2827
  nopl   0x0(%rax)
L386:
  test   $0x3,%sil
  jne    L729
  lea    0x1(%rbp),%r13d
  cmp    %r13d,%r12d
  jne    L135
  jmp    L924
  nopl   0x0(%rax)
L1555:
  mov    $0x11,%r10d
  test   $0x3,%r11b
  jne    L2827
  lea    0x1(%rdx),%r10d
  cmp    %r10d,%ebp
  jne    L2132
  jmp    L697
  nopw   0x0(%rax,%rax,1)
L1757:
  cmp    $0x12,%si
  sete   %r13b
  mov    %r13d,%r10d
  and    %r8b,%r10b
  mov    %r10b,-0x5(%rsp)
  je     L2586
  mov    $0x8,%r10d
  cmp    $0x16,%di
  jne    L2827
  mov    %ebp,%r8d
  mov    $0x1,%esi
  mov    $0x9,%r10d
  and    $0x1,%r8d
  mov    %r8b,-0x4(%rsp)
  jne    L2827
  movb   $0x1,-0x1(%rsp)
  movzbl -0x5(%rsp),%r13d
  movb   $0x0,-0x3(%rsp)
  movb   $0x0,-0x2(%rsp)
L262:
  cmp    $0x15,%di
  setne  -0x6(%rsp)
  movzbl -0x6(%rsp),%edi
  test   %r9b,%dil
  je     L1803
  mov    $0xf,%r10d
  test   %r13b,%r13b
  jne    L2827
L1803:
  movzbl -0x5(%rsp),%r8d
L2032:
  test   %r8b,-0x3(%rsp)
  je     L580
  cmpb   $0x0,-0x2(%rsp)
  mov    $0xf,%r10d
  jne    L2827
L580:
  test   %bpl,-0x4(%rsp)
  je     L1232
  mov    $0xf,%r10d
  test   %sil,%sil
  jne    L2827
L1232:
  cmp    $0x11,%r11w
  sete   -0x5(%rsp)
  jne    L2303
  test   %dl,%dl
  je     L2303
  cmp    $0x15,%bx
  mov    $0x10,%r10d
  setne  %dil
  and    -0x6(%rsp),%dil
  mov    %edi,%r13d
  jne    L2827
  movzbl -0x5(%rsp),%r11d
  and    %r15b,%r11b
  je     L323
  xor    %r11d,%r11d
  xor    %edi,%edi
L228:
  cmp    $0x16,%bx
  je     L247
  cmpb   $0x0,-0x2(%rsp)
  mov    $0x11,%r10d
  jne    L2827
L247:
  test   %r13b,%r13b
  je     L1422
  test   %r14b,%r14b
  je     L1422
L2037:
  cmp    $0x17,%bx
  je     L1103
  mov    $0x11,%r10d
  test   %sil,%sil
  jne    L2827
L1103:
  mov    $0x1,%r13d
L1422:
  test   %dil,%dil
  je     L754
  test   %al,%al
  je     L754
  mov    %dil,-0x4(%rsp)
L1018:
  cmp    $0x18,%bx
  je     L937
  cmpb   $0x0,-0x1(%rsp)
  mov    $0x11,%r10d
  jne    L2827
L937:
  test   %r13b,%r13b
  je     L1876
  test   %dl,%dl
  je     L1876
  cmp    $0x15,%bx
  je     L1876
  cmpb   $0x0,-0x6(%rsp)
  jne    L2135
L1876:
  cmpb   $0x0,-0x4(%rsp)
  je     L1987
  test   %r15b,%r15b
  je     L1987
  cmp    $0x16,%bx
  je     L1987
  cmpb   $0x0,-0x2(%rsp)
  jne    L2135
L1987:
  test   %r14b,%r14b
  je     L2611
  test   %r11b,%r11b
  je     L2611
  cmp    $0x17,%bx
  je     L2611
  test   %sil,%sil
  jne    L2135
L2611:
  cmp    $0x11,%cx
  sete   %dil
  jne    L1522
  test   %dl,%dl
  je     L1522
  cmp    $0x15,%bx
  mov    $0x18,%r10d
  setne  %sil
  and    %r9b,%sil
  jne    L2827
  xor    %ecx,%ecx
  and    %r15b,%dil
  mov    %edi,%r10d
  je     L345
  xor    %r10d,%r10d
L1011:
  cmp    $0x16,%bx
  je     L1567
  test   %r8b,%r8b
  jne    L1432
L1567:
  test   %sil,%sil
  je     L265
  test   %r14b,%r14b
  je     L265
L2720:
  cmp    $0x17,%bx
  je     L2496
  test   %bpl,%bpl
  jne    L1432
L2496:
  mov    $0x1,%esi
L265:
  test   %r10b,%r10b
  je     L2833
  test   %al,%al
  je     L2833
L1427:
  cmp    $0x18,%bx
  je     L2833
  test   %r12b,%r12b
  jne    L1432
L2833:
  test   %sil,%sil
  je     L345
  test   %dl,%dl
  je     L345
  cmp    $0x15,%bx
  je     L345
  test   %r9b,%r9b
  jne    L2600
L345:
  test   %r15b,%r15b
  je     L2041
  test   %r10b,%r10b
  je     L2041
  cmp    $0x16,%bx
  je     L2041
  test   %r8b,%r8b
  jne    L2600
L2041:
  test   %cl,%cl
  je     L1874
  test   %r14b,%r14b
  je     L1874
  cmp    $0x17,%bx
  je     L1874
  test   %bpl,%bpl
  je     L1874
L2600:
  mov    $0x1f,%r10d
  jmp    L2827
  nopl   0x0(%rax)
L1470:
  mov    %r11d,%r10d
  and    $0x8003,%r10w
  cmp    $0x1,%r10w
  je     L2360
  mov    $0x15,%r10d
  test   %r12b,%r12b
  je     L2360
  jmp    L2827
L661:
  mov    %r11d,%edx
  mov    $0x16,%r10d
  and    $0x8003,%dx
  cmp    $0x1,%dx
  je     L2351
  jmp    L2827
  nopl   (%rax)
L138:
  mov    %ecx,%r10d
  and    $0x8003,%r10w
  cmp    $0x1,%r10w
  je     L111
  mov    $0x1d,%r10d
  test   %r13b,%r13b
  je     L111
  jmp    L2827
  nopl   0x0(%rax,%rax,1)
L1006:
  mov    %ecx,%edx
  mov    $0x1e,%r10d
  and    $0x8003,%dx
  cmp    $0x1,%dx
  je     L839
  jmp    L2827
  nopl   0x0(%rax)
L329:
  mov    $0x1a,%r10d
  test   $0x3,%cl
  je     L951
  jmp    L2827
  nopl   0x0(%rax)
L2474:
  test   $0x3,%r11b
  je     L2513
  mov    $0x13,%r10d
  test   %r12b,%r12b
  je     L2513
  jmp    L2827
L2586:
  cmp    $0x13,%si
  sete   -0x5(%rsp)
  movzbl -0x5(%rsp),%r10d
  and    %bpl,%r10b
  mov    %r10b,-0x3(%rsp)
  je     L461
  mov    $0x8,%r10d
  cmp    $0x17,%di
  jne    L2827
  mov    %r12d,%esi
  movb   $0x1,-0x1(%rsp)
  and    $0x1,%esi
  mov    %sil,-0x4(%rsp)
  jne    L729
  movzbl -0x3(%rsp),%ebp
  movb   $0x1,-0x6(%rsp)
  xor    %esi,%esi
  mov    %bpl,-0x2(%rsp)
  jmp    L2032
  nop
L2134:
  test   $0x3,%cl
  je     L2644
  mov    $0x1b,%r10d
  test   %r13b,%r13b
  je     L2644
  jmp    L2827
  nopl   (%rax)
L1515:
  mov    %ecx,%edx
  mov    $0x1f,%r10d
  and    $0x8003,%dx
  cmp    $0x1,%dx
  je     L839
  jmp    L2827
  nopl   0x0(%rax)
L1963:
  mov    $0x4,%r10d
  jmp    L2827
  nopl   0x0(%rax,%rax,1)
L1074:
  mov    $0x10,%r10d
  jmp    L2827
  nopl   0x0(%rax,%rax,1)
L482:
  mov    $0x18,%r10d
  jmp    L2827
L33:
  mov    $0xa,%r10d
  jmp    L2827
L2009:
  mov    $0x14,%r10d
  jmp    L2827
L461:
  cmp    $0x14,%si
  sete   -0x4(%rsp)
  cmp    $0x18,%di
  movzbl -0x4(%rsp),%r10d
  setne  %sil
  test   %sil,%r10b
  je     L407
  test   %r12b,%r12b
  jne    L1532
L407:
  cmp    $0x16,%di
  setne  -0x2(%rsp)
  movzbl -0x2(%rsp),%esi
  test   %sil,-0x6(%rsp)
  je     L1653
  mov    $0x9,%r10d
  test   %r8b,%r8b
  jne    L2827
L1653:
  cmp    $0x17,%di
  setne  %sil
  test   %bpl,%r13b
  je     L961
  mov    $0x9,%r10d
  test   %sil,%sil
  jne    L2827
L961:
  cmp    $0x18,%di
  setne  -0x1(%rsp)
  movzbl -0x1(%rsp),%r10d
  test   %r12b,%r10b
  je     L2080
  cmpb   $0x0,-0x5(%rsp)
  mov    $0x9,%r10d
  jne    L2827
L2080:
  movzbl -0x5(%rsp),%r10d
  mov    %r8b,-0x5(%rsp)
  mov    %r10b,-0x3(%rsp)
  jmp    L262
L61:
  mov    $0x1c,%r10d
  jmp    L2827
L2303:
  cmp    $0x12,%r11w
  sete   %r13b
  mov    %r13d,%edi
  and    %r15b,%dil
  je     L1483
  cmp    $0x16,%bx
  mov    $0x10,%r10d
  setne  %r11b
  and    -0x2(%rsp),%r11b
  jne    L2827
  test   %r14b,%r14b
  je     L1497
  xor    %edi,%edi
  jmp    L2037
L1483:
  cmp    $0x13,%r11w
  sete   %dil
  mov    %edi,%r10d
  and    %r14b,%r10b
  mov    %r10b,-0x4(%rsp)
  je     L1994
  cmp    $0x17,%bx
  mov    $0x10,%r10d
  setne  %dil
  and    %sil,%dil
  mov    %edi,%r13d
  jne    L2827
  xor    %r11d,%r11d
  test   %al,%al
  je     L1876
  mov    %al,-0x4(%rsp)
  jmp    L1018
L1994:
  cmp    $0x14,%r11w
  sete   %r10b
  mov    %r10d,%r11d
  and    %al,%r11b
  je     L2534
  cmp    $0x18,%bx
  je     L247
  cmpb   $0x0,-0x1(%rsp)
  mov    $0x10,%r10d
  je     L247
  jmp    L2827
L1522:
  cmp    $0x12,%cx
  sete   %sil
  mov    %esi,%r11d
  and    %r15b,%r11b
  je     L1810
  cmp    $0x16,%bx
  setne  %cl
  and    %r8b,%cl
  mov    %ecx,%r10d
  jne    L482
  xor    %ecx,%ecx
  mov    %r11d,%esi
  test   %r14b,%r14b
  jne    L2720
  jmp    L2833
L2135:
  mov    $0x17,%r10d
  jmp    L2827
L1810:
  cmp    $0x13,%cx
  sete   %r10b
  mov    %r10d,%r11d
  and    %r14b,%r11b
  je     L657
  cmp    $0x17,%bx
  setne  %cl
  and    %bpl,%cl
  jne    L482
  mov    %r11d,%r10d
  test   %al,%al
  je     L345
  mov    %eax,%r10d
  xor    %esi,%esi
  jmp    L1427
L657:
  cmp    $0x14,%cx
  sete   %cl
  mov    %ecx,%r11d
  and    %al,%r11b
  je     L2249
  cmp    $0x18,%bx
  je     L1700
  test   %r12b,%r12b
  jne    L482
L1700:
  mov    %r11d,%ecx
  jmp    L1567
L323:
  xor    %edi,%edi
L754:
  mov    %dil,-0x4(%rsp)
  jmp    L937
L1432:
  mov    $0x19,%r10d
  jmp    L2827
L1874:
  or     $0xffffffff,%r10d
  jmp    L2827
L2398:
  movb   $0x0,-0x5(%rsp)
  mov    $0x1,%esi
  xor    %r13d,%r13d
  jmp    L961
L487:
  cmp    $0x16,%r9w
  setne  %r8b
  test   %bpl,%r15b
  je     L1746
  mov    $0x1,%r10d
  test   %r8b,%r8b
  jne    L2827
L1746:
  cmp    $0x17,%r9w
  setne  %bpl
  test   %r12b,%r14b
  je     L646
  mov    $0x1,%r10d
  test   %bpl,%bpl
  jne    L2827
L646:
  mov    %r12b,-0x5(%rsp)
  movzbl -0x6(%rsp),%r13d
  jmp    L2430
L2343:
  movb   $0x0,-0x4(%rsp)
  mov    $0x1,%ebp
  mov    %r12d,%edx
  movb   $0x0,-0x5(%rsp)
  jmp    L2430
L2249:
  test   %dil,%dil
  je     L1567
  test   %r15b,%r15b
  jne    L1011
  jmp    L1567
L2534:
  cmpb   $0x0,-0x5(%rsp)
  mov    %r10d,%r11d
  je     L247
  test   %r15b,%r15b
  jne    L228
  jmp    L247
L1497:
  movb   $0x0,-0x4(%rsp)
  mov    %edi,%r13d
  jmp    L937
```

assistant: ```c
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;
}
```