user: Please show me the C implementation that matches the assembly code listed below:

```asm
<get_first_losing_move_4>:
  endbr64
  push   %r15
  mov    %esi,%r10d
  mov    %r8d,%r11d
  movswl %si,%esi
  push   %r14
  movswl %r8w,%r8d
  mov    %ecx,%r14d
  movswl %cx,%ecx
  push   %r13
  mov    %edx,%r13d
  movswl %dx,%edx
  push   %r12
  mov    %edi,%r12d
  movswl %di,%edi
  push   %rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    0x68(%rsp),%ebp
  mov    0x60(%rsp),%ebx
  mov    %r9w,0x8(%rsp)
  movswl %r9w,%r9d
  mov    %r10d,0x1c(%rsp)
  movswl %bp,%eax
  mov    %r11d,0x18(%rsp)
  mov    %bx,0x10(%rsp)
  mov    %bp,0xc(%rsp)
  push   %rax
  movswl %bx,%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffffffff,%eax
  jne    L2675
  mov    $0xffffffff,%r9d
  mov    0x1c(%rsp),%r10d
  mov    0x18(%rsp),%r11d
  mov    $0x1e,%ebx
  mov    %r9w,0x16(%rsp)
  lea    D1(%rip),%rbp
  mov    %r10d,%r15d
  nopl   0x0(%rax,%rax,1)
L7744:
  lea    0x1(%rbx),%eax
  cmp    $0x1e,%ax
  ja     L510
  movzwl %ax,%eax
  movslq 0x0(%rbp,%rax,4),%rax
  add    %rbp,%rax
  notrack jmp *%rax
  nopl   0x0(%rax,%rax,1)
  cmp    $0x4,%r14w
  jle    L5436
  mov    %r14d,%eax
  and    $0x3,%eax
  cmp    $0x1,%ax
  je     L5436
  lea    -0x5(%r14),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x8(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L75
  test   %r11w,%r11w
  je     L5933
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5933:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4577
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4577:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L7575
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L7575:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L1203
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L1203:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L8843
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L8843:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L3349
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L3349:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L8244
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L8244:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L5949
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L5949:
  mov    %r11d,0x1c(%rsp)
  push   %rax
  mov    0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1d,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%ecx
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  sub    %ecx,%eax
  test   %cx,%cx
  cmove  %ecx,%eax
  mov    %dx,0x10(%rsp)
  mov    %ax,0xc(%rsp)
  nopl   0x0(%rax,%rax,1)
L5436:
  sub    $0x1,%ebx
  jmp    L7744
  nopl   0x0(%rax,%rax,1)
  cmp    $0x4,%r14w
  jle    L5436
  lea    -0x4(%r14),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x8(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L3482
  test   %r11w,%r11w
  je     L4188
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L4188:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L1250
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L1250:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L9881
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L9881:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L2560
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L2560:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L1072
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L1072:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L2089
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L2089:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L2742
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L2742:
  mov    $0x19,%eax
  mov    %r11d,0x1c(%rsp)
  sub    %r10d,%eax
  cwtl
  push   %rax
  mov    0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1c,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%esi
  sub    %r12d,%eax
  test   %r12w,%r12w
  cmovne %eax,%r12d
  mov    $0x19,%eax
  sub    %r11d,%eax
  test   %r11w,%r11w
  cmovne %eax,%r11d
  mov    $0x19,%eax
  sub    %r15d,%eax
  test   %r15w,%r15w
  cmovne %eax,%r15d
  mov    $0x19,%eax
  sub    %ecx,%eax
  test   %cx,%cx
  cmove  %ecx,%eax
  mov    %ax,0x8(%rsp)
  mov    $0x19,%eax
  sub    %r13d,%eax
  test   %r13w,%r13w
  cmovne %eax,%r13d
  mov    $0x19,%eax
  sub    %edi,%eax
  test   %di,%di
  cmove  %edi,%eax
  mov    %ax,0x10(%rsp)
  mov    $0x19,%eax
  sub    %esi,%eax
  test   %si,%si
  cmove  %esi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  cmp    $0x4,%r14w
  jle    L5436
  test   $0x3,%r14b
  je     L5436
  lea    -0x3(%r14),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x8(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L4091
  test   %r11w,%r11w
  je     L8724
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8724:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5934
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L5934:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L9779
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L9779:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L8592
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L8592:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L9464
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L9464:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L1255
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L1255:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L4374
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L4374:
  mov    $0x19,%eax
  mov    %r11d,0x1c(%rsp)
  sub    %r10d,%eax
  cwtl
  push   %rax
  mov    0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1b,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%edi
  sub    %r12d,%eax
  test   %r12w,%r12w
  cmovne %eax,%r12d
  mov    $0x19,%eax
  sub    %r11d,%eax
  test   %r11w,%r11w
  cmovne %eax,%r11d
  mov    $0x19,%eax
  sub    %r15d,%eax
  test   %r15w,%r15w
  cmovne %eax,%r15d
  mov    $0x19,%eax
  sub    %esi,%eax
  test   %si,%si
  cmove  %esi,%eax
  mov    %ax,0x8(%rsp)
  mov    $0x19,%eax
  sub    %r13d,%eax
  test   %r13w,%r13w
  cmovne %eax,%r13d
  mov    $0x19,%eax
  sub    %ecx,%eax
  test   %cx,%cx
  cmove  %ecx,%eax
  mov    %ax,0x10(%rsp)
  mov    $0x19,%eax
  sub    %edi,%eax
  test   %di,%di
  cmove  %edi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   0x0(%rax)
  test   %r14w,%r14w
  je     L5436
  test   $0x3,%r14b
  je     L5436
  lea    0x1(%r14),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x8(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L2402
  test   %r11w,%r11w
  je     L2523
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L2523:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L310
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L310:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L3187
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L3187:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L4882
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L4882:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L9368
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L9368:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L6540
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L6540:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L8643
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L8643:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L399
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L399:
  mov    %r11d,0x1c(%rsp)
  push   %rax
  mov    0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1a,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%ecx
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  sub    %ecx,%eax
  test   %cx,%cx
  cmove  %ecx,%eax
  mov    %dx,0x10(%rsp)
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   0x0(%rax,%rax,1)
  test   %r14w,%r14w
  je     L5436
  cmp    $0x14,%r14w
  jg     L5436
  test   $0x3,%r14b
  je     L5436
  lea    0x5(%r14),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x8(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L7069
  test   %r11w,%r11w
  je     L2564
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L2564:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2517
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L2517:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L6983
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6983:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L8913
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L8913:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L3263
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L3263:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L3878
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L3878:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L9478
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L9478:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L1706
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L1706:
  mov    %r11d,0x1c(%rsp)
  push   %rax
  mov    0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  mov    %eax,%edx
  pop    %rax
  pop    %rcx
  cmp    $0xffff,%dx
  je     L18
  mov    $0x19,%eax
  movzwl 0x16(%rsp),%esi
  test   %dx,%dx
  mov    0x1c(%rsp),%r11d
  mov    %eax,%edx
  movzwl 0x8(%rsp),%ecx
  movzwl 0x10(%rsp),%edi
  cmovns %eax,%esi
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %si,0x16(%rsp)
  movzwl 0xc(%rsp),%esi
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  sub    %esi,%eax
  test   %si,%si
  cmove  %esi,%eax
  mov    %dx,0x10(%rsp)
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   0x0(%rax,%rax,1)
  test   %r14w,%r14w
  je     L5436
  cmp    $0x14,%r14w
  jg     L5436
  lea    0x4(%r14),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x8(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L2017
  test   %r11w,%r11w
  je     L6779
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6779:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4451
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4451:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L4035
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L4035:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L9380
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L9380:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L3194
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L3194:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L1123
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L1123:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L7751
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L7751:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L823
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L823:
  mov    %r11d,0x1c(%rsp)
  push   %rax
  mov    0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x18,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%edi
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  sub    %edi,%eax
  test   %di,%di
  cmove  %edi,%eax
  mov    %dx,0x10(%rsp)
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   0x0(%rax)
  test   %r13w,%r13w
  je     L5436
  cmp    $0x14,%r13w
  jg     L5436
  mov    %r13d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L5436
  lea    0x3(%r13),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L4848
  test   %r11w,%r11w
  je     L9090
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9090:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L3055
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L3055:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L6758
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6758:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L9959
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L9959:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L23
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L23:
  movl   $0x0,0x18(%rsp)
  test   %r10w,%r10w
  je     L3556
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
  mov    %eax,0x18(%rsp)
L3556:
  movzwl 0xc(%rsp),%r10d
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L7966
  mov    $0x19,%eax
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L7966:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L7127
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L7127:
  mov    %r11d,0x1c(%rsp)
  push   %rax
  mov    0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x17,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%ecx
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %ecx,%eax
  test   %cx,%cx
  cmove  %ecx,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   (%rax)
  test   %r13w,%r13w
  je     L5436
  mov    %r13d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L5436
  lea    -0x1(%r13),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L5000
  test   %r11w,%r11w
  je     L197
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L197:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5412
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L5412:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L1134
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1134:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L6793
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L6793:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L5429
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L5429:
  movl   $0x0,0x18(%rsp)
  test   %r10w,%r10w
  je     L5763
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
  mov    %eax,0x18(%rsp)
L5763:
  movzwl 0xc(%rsp),%r10d
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L2806
  mov    $0x19,%eax
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L2806:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L6315
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L6315:
  mov    %r11d,0x1c(%rsp)
  push   %rax
  mov    0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x16,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%edi
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  test   %di,%di
  cmove  %edi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   0x0(%rax)
  cmp    $0x4,%r13w
  jle    L5436
  mov    %r13d,%eax
  and    $0x3,%eax
  cmp    $0x1,%ax
  je     L5436
  lea    -0x5(%r13),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L1877
  test   %r11w,%r11w
  je     L8374
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8374:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L7774
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L7774:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L6028
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6028:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L6319
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L6319:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L5945
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L5945:
  movl   $0x0,0x18(%rsp)
  test   %r10w,%r10w
  je     L5924
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
  mov    %eax,0x18(%rsp)
L5924:
  movzwl 0xc(%rsp),%r10d
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L9411
  mov    $0x19,%eax
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L9411:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L9916
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L9916:
  mov    %r11d,0x1c(%rsp)
  push   %rax
  mov    0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x15,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%esi
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %esi,%eax
  test   %si,%si
  cmove  %esi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopw   0x0(%rax,%rax,1)
  cmp    $0x4,%r13w
  jle    L5436
  lea    -0x4(%r13),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L2107
  test   %r11w,%r11w
  je     L9057
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9057:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L6697
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L6697:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L6141
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6141:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L6790
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L6790:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L6469
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L6469:
  mov    $0x19,%eax
  mov    %eax,%ecx
  sub    %r10d,%ecx
  movzwl 0xc(%rsp),%r10d
  mov    %cx,0x18(%rsp)
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L7379
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L7379:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L9265
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L9265:
  mov    %r11d,0x1c(%rsp)
  push   %rax
  movswl 0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x14,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%edi
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  test   %di,%di
  cmove  %edi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   0x0(%rax)
  cmp    $0x4,%r13w
  jle    L5436
  test   $0x3,%r13b
  je     L5436
  lea    -0x3(%r13),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L234
  test   %r11w,%r11w
  je     L6935
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6935:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5474
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L5474:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L7373
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L7373:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L5968
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L5968:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4714
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4714:
  mov    $0x19,%eax
  mov    %eax,%ecx
  sub    %r10d,%ecx
  movzwl 0xc(%rsp),%r10d
  mov    %cx,0x18(%rsp)
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L8854
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L8854:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L239
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L239:
  mov    %r11d,0x1c(%rsp)
  push   %rax
  movswl 0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x13,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  movzwl 0xc(%rsp),%ecx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %ecx,%eax
  test   %cx,%cx
  cmove  %ecx,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   0x0(%rax)
  test   %r13w,%r13w
  je     L5436
  test   $0x3,%r13b
  je     L5436
  lea    0x1(%r13),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L7983
  test   %r11w,%r11w
  je     L1287
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L1287:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L281
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L281:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L9652
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L9652:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L8017
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L8017:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L3765
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L3765:
  movl   $0x0,0x18(%rsp)
  test   %r10w,%r10w
  je     L6079
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
  mov    %eax,0x18(%rsp)
L6079:
  movzwl 0xc(%rsp),%r10d
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L9026
  mov    $0x19,%eax
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L9026:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L8110
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L8110:
  mov    %r11d,0x1c(%rsp)
  push   %rax
  mov    0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x12,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%esi
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %esi,%eax
  test   %si,%si
  cmove  %esi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   (%rax)
  test   %r13w,%r13w
  je     L5436
  cmp    $0x14,%r13w
  jg     L5436
  test   $0x3,%r13b
  je     L5436
  lea    0x5(%r13),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L5241
  test   %r11w,%r11w
  je     L4701
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L4701:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L8868
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L8868:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L5868
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L5868:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L2931
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L2931:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4303
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4303:
  movl   $0x0,0x18(%rsp)
  test   %r10w,%r10w
  je     L7737
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
  mov    %eax,0x18(%rsp)
L7737:
  movzwl 0xc(%rsp),%r10d
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L5620
  mov    $0x19,%eax
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L5620:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L449
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L449:
  mov    %r11d,0x1c(%rsp)
  push   %rax
  mov    0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x11,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  movzwl 0xc(%rsp),%edi
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  test   %di,%di
  cmove  %edi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  xchg   %ax,%ax
  test   %r13w,%r13w
  je     L5436
  cmp    $0x14,%r13w
  jg     L5436
  lea    0x4(%r13),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L8736
  test   %r11w,%r11w
  je     L2369
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L2369:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2358
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L2358:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L5881
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L5881:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L9660
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L9660:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L5466
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L5466:
  movl   $0x0,0x18(%rsp)
  test   %r10w,%r10w
  je     L3541
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
  mov    %eax,0x18(%rsp)
L3541:
  movzwl 0xc(%rsp),%r10d
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L6720
  mov    $0x19,%eax
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L6720:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L9588
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L9588:
  mov    %r11d,0x1c(%rsp)
  push   %rax
  mov    0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x10,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%ecx
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %ecx,%eax
  test   %cx,%cx
  cmove  %ecx,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  xchg   %ax,%ax
  test   %r15w,%r15w
  je     L5436
  cmp    $0x14,%r15w
  jg     L5436
  mov    %r15d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L5436
  lea    0x3(%r15),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L1382
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L4363
  test   %r11w,%r11w
  je     L8613
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8613:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5288
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L5288:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L3363
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L3363:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L3491
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L3491:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L147
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L147:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L1407
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L1407:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L2922
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L2922:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L2587
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L2587:
  mov    %r11d,0x18(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %r10
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xf,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%ecx
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %ecx,%eax
  test   %cx,%cx
  cmove  %ecx,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   (%rax)
  test   %r15w,%r15w
  je     L5436
  mov    %r15d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L5436
  lea    -0x1(%r15),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L6868
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L8808
  test   %r11w,%r11w
  je     L6001
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6001:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L1083
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L1083:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L6470
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6470:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L8726
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L8726:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L1610
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L1610:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L904
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L904:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L5588
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L5588:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L7772
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L7772:
  mov    %r11d,0x18(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %r10
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xe,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%ecx
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %ecx,%eax
  test   %cx,%cx
  cmove  %ecx,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   0x0(%rax)
  cmp    $0x4,%r15w
  jle    L5436
  mov    %r15d,%eax
  and    $0x3,%eax
  cmp    $0x1,%ax
  je     L5436
  lea    -0x5(%r15),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L8528
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L2303
  test   %r11w,%r11w
  je     L7998
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7998:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L1646
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L1646:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L5639
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L5639:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L620
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L620:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4669
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4669:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L9087
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L9087:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L7579
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L7579:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L49
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L49:
  mov    %r11d,0x18(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %r10
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xd,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%esi
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %esi,%eax
  test   %si,%si
  cmove  %esi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   0x0(%rax)
  cmp    $0x4,%r15w
  jle    L5436
  lea    -0x4(%r15),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L1819
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L7647
  test   %r11w,%r11w
  je     L8479
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8479:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4409
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4409:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L7902
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L7902:
  mov    $0x19,%eax
  xor    %edx,%edx
  mov    %eax,%ecx
  sub    %r10d,%ecx
  mov    %ecx,%r10d
  movzwl 0x10(%rsp),%ecx
  test   %cx,%cx
  je     L146
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L146:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L7863
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L7863:
  movzwl 0xc(%rsp),%r9d
  xor    %ecx,%ecx
  test   %r9w,%r9w
  je     L201
  mov    $0x19,%ecx
  sub    %r9d,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L201:
  xor    %r9d,%r9d
  test   %r14w,%r14w
  je     L5896
  mov    $0x19,%r9d
  sub    %r14d,%r9d
  mov    %r9d,%r14d
  movswl %r9w,%r9d
L5896:
  mov    %r11d,0x18(%rsp)
  push   %r9
  movswl %r10w,%r9d
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xc,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  movzwl 0xc(%rsp),%edi
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  test   %di,%di
  cmove  %edi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   0x0(%rax,%rax,1)
  cmp    $0x4,%r15w
  jle    L5436
  test   $0x3,%r15b
  je     L5436
  lea    -0x3(%r15),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L176
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L2989
  test   %r11w,%r11w
  je     L2224
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L2224:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L3308
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L3308:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L1839
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1839:
  mov    $0x19,%eax
  xor    %edx,%edx
  mov    %eax,%ecx
  sub    %r10d,%ecx
  mov    %ecx,%r10d
  movzwl 0x10(%rsp),%ecx
  test   %cx,%cx
  je     L8562
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L8562:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L2434
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L2434:
  movzwl 0xc(%rsp),%r9d
  xor    %ecx,%ecx
  test   %r9w,%r9w
  je     L488
  mov    $0x19,%ecx
  sub    %r9d,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L488:
  xor    %r9d,%r9d
  test   %r14w,%r14w
  je     L291
  mov    $0x19,%r9d
  sub    %r14d,%r9d
  mov    %r9d,%r14d
  movswl %r9w,%r9d
L291:
  mov    %r11d,0x18(%rsp)
  push   %r9
  movswl %r10w,%r9d
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xb,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%edi
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  test   %di,%di
  cmove  %edi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   (%rax)
  test   %r15w,%r15w
  je     L5436
  test   $0x3,%r15b
  je     L5436
  lea    0x1(%r15),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L3532
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L9970
  test   %r11w,%r11w
  je     L1066
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L1066:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L3810
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L3810:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L7508
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L7508:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L5456
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L5456:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L1023
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L1023:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L1112
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L1112:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L8272
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L8272:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L9960
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L9960:
  mov    %r11d,0x18(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %r10
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xa,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%ecx
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %ecx,%eax
  test   %cx,%cx
  cmove  %ecx,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   (%rax)
  test   %r15w,%r15w
  je     L5436
  cmp    $0x14,%r15w
  jg     L5436
  test   $0x3,%r15b
  je     L5436
  lea    0x5(%r15),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L10029
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L3378
  test   %r11w,%r11w
  je     L9545
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9545:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L1359
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L1359:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L1752
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1752:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L4961
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L4961:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L7404
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L7404:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L7578
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L7578:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L6387
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L6387:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L7780
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L7780:
  mov    %r11d,0x18(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %r10
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x9,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%esi
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %esi,%eax
  test   %si,%si
  cmove  %esi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   0x0(%rax,%rax,1)
  test   %r15w,%r15w
  je     L5436
  cmp    $0x14,%r15w
  jg     L5436
  lea    0x4(%r15),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x10(%rsp),%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L8857
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L8022
  test   %r11w,%r11w
  je     L5707
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5707:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4235
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4235:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L2769
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L2769:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L1408
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L1408:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L2397
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2397:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L8467
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L8467:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L7764
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L7764:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L8549
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L8549:
  mov    %r11d,0x18(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %r10
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x8,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%edi
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  test   %di,%di
  cmove  %edi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   0x0(%rax)
  test   %r12w,%r12w
  je     L5436
  cmp    $0x14,%r12w
  jg     L5436
  mov    %r12d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L5436
  lea    0x3(%r12),%r10d
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    %r11w,%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x8(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L8817
  cmp    0xc(%rsp),%r10w
  je     L4854
  test   %r11w,%r11w
  je     L8560
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8560:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L6297
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L6297:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L6818
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6818:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L7787
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L7787:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L2512
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2512:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L7274
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L7274:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L3006
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L3006:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L5873
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L5873:
  mov    %r11d,0x18(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %r10
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x7,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%esi
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %esi,%eax
  test   %si,%si
  cmove  %esi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  xchg   %ax,%ax
  test   %r12w,%r12w
  je     L5436
  mov    %r12d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L5436
  lea    -0x1(%r12),%r10d
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    %r11w,%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x8(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L7690
  cmp    0xc(%rsp),%r10w
  je     L8784
  test   %r11w,%r11w
  je     L643
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L643:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L9666
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L9666:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L2818
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L2818:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L6439
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L6439:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L5443
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L5443:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L2367
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L2367:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L621
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L621:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L3647
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L3647:
  mov    %r11d,0x18(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %r10
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x6,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%esi
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %esi,%eax
  test   %si,%si
  cmove  %esi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   (%rax)
  cmp    $0x4,%r12w
  jle    L5436
  mov    %r12d,%eax
  and    $0x3,%eax
  cmp    $0x1,%ax
  je     L5436
  lea    -0x5(%r12),%r10d
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    %r11w,%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x8(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L2552
  cmp    0xc(%rsp),%r10w
  je     L4586
  test   %r11w,%r11w
  je     L6661
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6661:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L4062
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L4062:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L4415
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L4415:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L2232
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L2232:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L7797
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L7797:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L182
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L182:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L8493
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L8493:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L2100
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L2100:
  mov    %r11d,0x18(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %r10
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x5,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%esi
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %esi,%eax
  test   %si,%si
  cmove  %esi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   (%rax)
  cmp    $0x4,%r12w
  jle    L5436
  lea    -0x4(%r12),%r10d
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    %r11w,%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x8(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L2522
  cmp    0xc(%rsp),%r10w
  je     L9833
  test   %r11w,%r11w
  je     L9341
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9341:
  mov    $0x19,%eax
  movzwl 0x8(%rsp),%ecx
  mov    %eax,%esi
  sub    %r10d,%esi
  mov    %esi,%r10d
  xor    %esi,%esi
  test   %cx,%cx
  je     L6521
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6521:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L5128
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L5128:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L2387
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2387:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L2442
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L2442:
  movzwl 0xc(%rsp),%r8d
  xor    %ecx,%ecx
  test   %r8w,%r8w
  je     L3612
  mov    $0x19,%ecx
  sub    %r8d,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L3612:
  xor    %r8d,%r8d
  test   %r14w,%r14w
  je     L1644
  mov    $0x19,%r8d
  sub    %r14d,%r8d
  mov    %r8d,%r14d
  movswl %r8w,%r8d
L1644:
  mov    %r11d,0x18(%rsp)
  push   %r8
  movswl %r10w,%r8d
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x4,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  movzwl 0xc(%rsp),%esi
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %esi,%eax
  test   %si,%si
  cmove  %esi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   0x0(%rax)
  cmp    $0x4,%r12w
  jle    L5436
  test   $0x3,%r12b
  je     L5436
  lea    -0x3(%r12),%r10d
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    %r11w,%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x8(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L6484
  cmp    0xc(%rsp),%r10w
  je     L9223
  test   %r11w,%r11w
  je     L2139
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L2139:
  mov    $0x19,%eax
  movzwl 0x8(%rsp),%ecx
  mov    %eax,%esi
  sub    %r10d,%esi
  mov    %esi,%r10d
  xor    %esi,%esi
  test   %cx,%cx
  je     L2054
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L2054:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L980
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L980:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L416
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L416:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L428
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L428:
  movzwl 0xc(%rsp),%r8d
  xor    %ecx,%ecx
  test   %r8w,%r8w
  je     L4177
  mov    $0x19,%ecx
  sub    %r8d,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L4177:
  xor    %r8d,%r8d
  test   %r14w,%r14w
  je     L8625
  mov    $0x19,%r8d
  sub    %r14d,%r8d
  mov    %r8d,%r14d
  movswl %r8w,%r8d
L8625:
  mov    %r11d,0x18(%rsp)
  push   %r8
  movswl %r10w,%r8d
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x3,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%ecx
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %ecx,%eax
  test   %cx,%cx
  cmove  %ecx,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  cs nopw 0x0(%rax,%rax,1)
  test   %r12w,%r12w
  je     L5436
  test   $0x3,%r12b
  je     L5436
  lea    0x1(%r12),%r10d
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    %r11w,%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x8(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L4851
  cmp    0xc(%rsp),%r10w
  je     L6179
  test   %r11w,%r11w
  je     L6563
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6563:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L5660
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L5660:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L1086
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1086:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L3165
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L3165:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L604
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L604:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L6963
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L6963:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L4775
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L4775:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L8986
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L8986:
  mov    %r11d,0x18(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %r10
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x2,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%edi
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  test   %di,%di
  cmove  %edi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  cs nopw 0x0(%rax,%rax,1)
  test   %r12w,%r12w
  je     L5436
  cmp    $0x14,%r12w
  jg     L5436
  test   $0x3,%r12b
  je     L5436
  lea    0x5(%r12),%r10d
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r14w,%r10w
  setne  %dl
  cmp    %r11w,%r10w
  setne  %al
  test   %al,%dl
  je     L5436
  cmp    0x8(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L6348
  cmp    0xc(%rsp),%r10w
  je     L162
  test   %r11w,%r11w
  je     L7223
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7223:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L8127
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L8127:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L536
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L536:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L4615
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L4615:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L2153
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2153:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L59
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L59:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L3732
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L3732:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L5818
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L5818:
  mov    %r11d,0x18(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %r10
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%edi
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  test   %di,%di
  cmove  %edi,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopl   0x0(%rax)
  mov    %r15d,%r10d
  test   %r12w,%r12w
  je     L9829
  cmp    $0x14,%r12w
  jg     L9829
  add    $0x4,%r12d
  cmp    %r15w,%r12w
  je     L9829
  cmp    %r13w,%r12w
  je     L9829
  cmp    %r14w,%r12w
  setne  %dl
  cmp    %r11w,%r12w
  setne  %al
  test   %al,%dl
  je     L9829
  cmp    0x8(%rsp),%r12w
  je     L9829
  xor    %edi,%edi
  cmp    0x10(%rsp),%r12w
  je     L2778
  cmp    0xc(%rsp),%r12w
  je     L3492
  test   %r11w,%r11w
  je     L434
  mov    $0x19,%edi
  sub    %r11d,%edi
  movswl %di,%edi
L434:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2803
  mov    $0x19,%r8d
  sub    %r12d,%r8d
  movswl %r8w,%r8d
L2803:
  movzwl 0x8(%rsp),%eax
  xor    %esi,%esi
  test   %ax,%ax
  je     L9494
  mov    $0x19,%esi
  sub    %eax,%esi
  movswl %si,%esi
L9494:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L787
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L787:
  movzwl 0x10(%rsp),%eax
  xor    %edx,%edx
  test   %ax,%ax
  je     L4548
  mov    $0x19,%edx
  sub    %eax,%edx
  movswl %dx,%edx
L4548:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L7571
  mov    $0x19,%eax
  sub    %r13d,%eax
  cwtl
L7571:
  movzwl 0xc(%rsp),%ebx
  xor    %ecx,%ecx
  test   %bx,%bx
  je     L1640
  mov    $0x19,%ecx
  sub    %ebx,%ecx
  movswl %cx,%ecx
L1640:
  xor    %r10d,%r10d
  test   %r14w,%r14w
  je     L1936
  mov    $0x19,%r10d
  sub    %r14d,%r10d
  movswl %r10w,%r10d
L1936:
  push   %r10
  push   %rax
L2409:
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdi
  pop    %r8
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x0,%eax
  cmovs  0x16(%rsp),%ax
  mov    %ax,0x16(%rsp)
L9829:
  movzwl 0x16(%rsp),%eax
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
  test   %r14w,%r14w
  je     L5436
  mov    %r14d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L5436
  lea    -0x1(%r14),%r10d
  cmp    %r12w,%r10w
  je     L5436
  cmp    %r15w,%r10w
  je     L5436
  cmp    %r13w,%r10w
  je     L5436
  cmp    %r11w,%r10w
  je     L5436
  cmp    0x8(%rsp),%r10w
  je     L5436
  cmp    0xc(%rsp),%r10w
  je     L5436
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L1111
  test   %r11w,%r11w
  je     L8
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L1122
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1122:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L6011
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L6011:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4718
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4718:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L735
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L735:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L7146
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L7146:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L9594
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L9594:
  mov    %r11d,0x1c(%rsp)
  push   %rax
  mov    0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1e,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%edi
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  sub    %edi,%eax
  test   %di,%di
  cmove  %edi,%eax
  mov    %dx,0x10(%rsp)
  mov    %ax,0xc(%rsp)
  jmp    L5436
  nopw   0x0(%rax,%rax,1)
L510:
  test   %r14w,%r14w
  je     L390
  cmp    $0x14,%r14w
  jg     L390
  mov    %r14d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L390
  lea    0x3(%r14),%r10d
  cmp    %r12w,%r10w
  je     L390
  cmp    %r15w,%r10w
  je     L390
  cmp    %r13w,%r10w
  je     L390
  cmp    %r11w,%r10w
  je     L390
  cmp    0x8(%rsp),%r10w
  je     L390
  cmp    0xc(%rsp),%r10w
  je     L390
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L9084
  test   %r11w,%r11w
  je     L1368
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L1368:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5371
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L5371:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L10033
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L10033:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L5708
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L5708:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L9570
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L9570:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L9506
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L9506:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L9076
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L9076:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L9123
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L9123:
  mov    %r11d,0x1c(%rsp)
  push   %rax
  mov    0x20(%rsp),%eax
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1f,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x1c(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  movzwl 0xc(%rsp),%esi
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  sub    %esi,%eax
  test   %si,%si
  cmove  %esi,%eax
  mov    %dx,0x10(%rsp)
  mov    %ax,0xc(%rsp)
  xchg   %ax,%ax
L390:
  cmp    $0xffff,%bx
  je     L9829
  sub    $0x1,%ebx
  jmp    L7744
L7690:
  test   %r11w,%r11w
  je     L6380
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6380:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L1426
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L1426:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L6751
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6751:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L8580
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L8580:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L6224
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L6224:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L1215
  mov    $0x19,%edx
  sub    0xc(%rsp),%dx
  mov    %dx,0xc(%rsp)
  movswl %dx,%ecx
L1215:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L2070
  mov    $0x19,%edx
  sub    %r14d,%edx
  mov    %edx,%r14d
  movswl %dx,%edx
L2070:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x10(%rsp)
  push   %rdx
  xor    %edx,%edx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x6,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0xc(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x10(%rsp),%r10d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %r10w,0x10(%rsp)
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L2552:
  test   %r11w,%r11w
  je     L920
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L920:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L1088
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L1088:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L4976
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L4976:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L4450
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L4450:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L127
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L127:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L5971
  mov    $0x19,%edx
  sub    0xc(%rsp),%dx
  mov    %dx,0xc(%rsp)
  movswl %dx,%ecx
L5971:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L3874
  mov    $0x19,%edx
  sub    %r14d,%edx
  mov    %edx,%r14d
  movswl %dx,%edx
L3874:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x10(%rsp)
  push   %rdx
  xor    %edx,%edx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x5,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0xc(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x10(%rsp),%r10d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %r10w,0x10(%rsp)
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L9833:
  test   %r11w,%r11w
  je     L7395
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7395:
  mov    $0x19,%eax
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  mov    %eax,%r8d
  sub    %r10d,%r8d
  test   %cx,%cx
  je     L6373
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6373:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L3470
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L3470:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4090
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4090:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L230
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L230:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L4760
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L4760:
  mov    %r11d,0x18(%rsp)
  movswl %r8w,%r8d
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x4,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L3482:
  test   %r11w,%r11w
  je     L2049
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L2049:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L8262
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L8262:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L2614
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L2614:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L3081
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L3081:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L4159
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L4159:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L3902
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L3902:
  mov    $0x19,%eax
  mov    %r11d,0x18(%rsp)
  sub    %r10d,%eax
  mov    %r10d,0x10(%rsp)
  cwtl
  push   %rax
  xor    %eax,%eax
  push   %rdx
  xor    %edx,%edx
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1c,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0xc(%rsp),%ecx
  mov    $0x19,%edx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x10(%rsp),%r10d
  sub    %r12d,%eax
  test   %r12w,%r12w
  cmovne %eax,%r12d
  mov    $0x19,%eax
  mov    %r10w,0x10(%rsp)
  sub    %r11d,%eax
  test   %r11w,%r11w
  cmovne %eax,%r11d
  mov    $0x19,%eax
  sub    %r15d,%eax
  test   %r15w,%r15w
  cmovne %eax,%r15d
  mov    $0x19,%eax
  sub    %esi,%eax
  test   %si,%si
  cmove  %esi,%eax
  mov    %ax,0x8(%rsp)
  mov    $0x19,%eax
  sub    %r13d,%eax
  test   %r13w,%r13w
  cmovne %eax,%r13d
  sub    %ecx,%edx
  mov    %ecx,%eax
  test   %cx,%cx
  cmovne %edx,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
L2107:
  test   %r11w,%r11w
  je     L8095
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8095:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4512
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4512:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L7581
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L7581:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L76
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L76:
  mov    $0x19,%esi
  xor    %ecx,%ecx
  mov    %esi,%eax
  sub    %r10d,%eax
  cmpw   $0x0,0xc(%rsp)
  je     L817
  sub    0xc(%rsp),%si
  mov    %si,0xc(%rsp)
  movswl %si,%ecx
L817:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L5361
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L5361:
  cwtl
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x8(%rsp)
  push   %rsi
  xor    %esi,%esi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x14,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x10(%rsp),%edi
  mov    0x8(%rsp),%r10d
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  mov    %r10w,0x8(%rsp)
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  movzwl 0xc(%rsp),%edi
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L7647:
  test   %r11w,%r11w
  je     L5459
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5459:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2263
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L2263:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L9934
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L9934:
  mov    $0x19,%eax
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  mov    %eax,%r9d
  sub    %r10d,%r9d
  test   %cx,%cx
  je     L5913
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L5913:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L5835
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L5835:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L7669
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L7669:
  mov    %r11d,0x18(%rsp)
  movswl %r9w,%r9d
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xc,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L2017:
  test   %r11w,%r11w
  je     L4000
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L4000:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5264
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L5264:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L2970
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L2970:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L4844
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L4844:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L4083
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L4083:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L6873
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L6873:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L4044
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L4044:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x10(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %rdx
  xor    %edx,%edx
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x18,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0xc(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x10(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0x10(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  sub    %esi,%eax
  mov    %esi,%edx
  test   %si,%si
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L8817:
  test   %r11w,%r11w
  je     L2296
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L2296:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L3118
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L3118:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L6162
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6162:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L10040
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L10040:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L5910
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L5910:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L7798
  mov    $0x19,%edx
  sub    0xc(%rsp),%dx
  mov    %dx,0xc(%rsp)
  movswl %dx,%ecx
L7798:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L490
  mov    $0x19,%edx
  sub    %r14d,%edx
  mov    %edx,%r14d
  movswl %dx,%edx
L490:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x10(%rsp)
  push   %rdx
  xor    %edx,%edx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x7,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0xc(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x10(%rsp),%r10d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %r10w,0x10(%rsp)
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L8022:
  test   %r11w,%r11w
  je     L7909
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7909:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5044
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L5044:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L3518
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L3518:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L7427
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L7427:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L3380
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L3380:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L8588
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L8588:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L2817
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L2817:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x8,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L1382:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L6731
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L6731:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L5472
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L5472:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L6677
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L6677:
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  test   %di,%di
  je     L1520
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L1520:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L5672
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L5672:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L6848
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L6848:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L2843
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L2843:
  mov    %r10d,0x18(%rsp)
  push   %rdi
  xor    %edi,%edi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xf,%eax
  cmovs  0x16(%rsp),%ax
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    0x18(%rsp),%r10d
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  mov    %r10d,%r11d
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  movzwl 0xc(%rsp),%esi
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %esi,%eax
  mov    %esi,%edx
  test   %si,%si
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L3492:
  test   %r11w,%r11w
  je     L8309
  mov    $0x19,%edi
  sub    %r11d,%edi
  movswl %di,%edi
L8309:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L1983
  mov    $0x19,%r8d
  sub    %r12d,%r8d
  movswl %r8w,%r8d
L1983:
  movzwl 0x8(%rsp),%eax
  xor    %esi,%esi
  test   %ax,%ax
  je     L5191
  mov    $0x19,%esi
  sub    %eax,%esi
  movswl %si,%esi
L5191:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L6623
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L6623:
  movzwl 0x10(%rsp),%eax
  xor    %edx,%edx
  test   %ax,%ax
  je     L7148
  mov    $0x19,%edx
  sub    %eax,%edx
  movswl %dx,%edx
L7148:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L6803
  mov    $0x19,%eax
  sub    %r13d,%eax
  cwtl
L6803:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L3809
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  movswl %cx,%ecx
L3809:
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  jmp    L2409
L6868:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2252
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L2252:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L5320
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L5320:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L1385
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L1385:
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  test   %di,%di
  je     L560
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L560:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L9445
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L9445:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L7586
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L7586:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L2469
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L2469:
  mov    %r10d,0x18(%rsp)
  push   %rdi
  xor    %edi,%edi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xe,%eax
  cmovs  0x16(%rsp),%ax
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%esi
  mov    0x18(%rsp),%r10d
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  mov    %r10d,%r11d
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  movzwl 0xc(%rsp),%edi
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L8528:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4108
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4108:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L6487
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6487:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L3575
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L3575:
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  test   %di,%di
  je     L4666
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4666:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L8392
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L8392:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L4858
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L4858:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L7829
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L7829:
  mov    %r10d,0x18(%rsp)
  push   %rdi
  xor    %edi,%edi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xd,%eax
  cmovs  0x16(%rsp),%ax
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    0x18(%rsp),%r10d
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  mov    %r10d,%r11d
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  movzwl 0xc(%rsp),%esi
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %esi,%eax
  mov    %esi,%edx
  test   %si,%si
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L8736:
  test   %r11w,%r11w
  je     L3010
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L3010:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2509
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L2509:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L1722
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L1722:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L3050
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L3050:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L2020
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L2020:
  movzwl 0xc(%rsp),%esi
  xor    %ecx,%ecx
  test   %si,%si
  je     L6752
  mov    $0x19,%ecx
  sub    %esi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L6752:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L6595
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L6595:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x8(%rsp)
  push   %rsi
  xor    %esi,%esi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x10,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x10(%rsp),%edi
  movzwl 0xc(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x8(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0x8(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %ecx,%eax
  mov    %ecx,%edx
  test   %cx,%cx
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L18:
  mov    $0xffffffff,%esi
  mov    %si,0x16(%rsp)
  jmp    L9829
L8857:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4951
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4951:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L8196
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L8196:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L8470
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L8470:
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  test   %di,%di
  je     L8973
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L8973:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L1813
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L1813:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L767
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L767:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L4465
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L4465:
  mov    %r10d,0x18(%rsp)
  push   %rdi
  xor    %edi,%edi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x8,%eax
  cmovs  0x16(%rsp),%ax
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%ecx
  mov    0x18(%rsp),%r10d
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  mov    %r10d,%r11d
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  movzwl 0xc(%rsp),%edi
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L2778:
  test   %r11w,%r11w
  je     L609
  mov    $0x19,%edi
  sub    %r11d,%edi
  movswl %di,%edi
L609:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L3522
  mov    $0x19,%r8d
  sub    %r12d,%r8d
  movswl %r8w,%r8d
L3522:
  movzwl 0x8(%rsp),%eax
  xor    %esi,%esi
  test   %ax,%ax
  je     L5075
  mov    $0x19,%esi
  sub    %eax,%esi
  movswl %si,%esi
L5075:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L2701
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L2701:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L5011
  mov    $0x19,%eax
  sub    %r13d,%eax
  cwtl
L5011:
  movzwl 0xc(%rsp),%edx
  xor    %ecx,%ecx
  test   %dx,%dx
  je     L5512
  mov    $0x19,%ecx
  sub    %edx,%ecx
  movswl %cx,%ecx
L5512:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L349
  mov    $0x19,%edx
  sub    %r14d,%edx
  movswl %dx,%edx
L349:
  push   %rdx
  xor    %edx,%edx
  push   %rax
  jmp    L2409
L1819:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L1200
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L1200:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L4294
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L4294:
  mov    $0x19,%eax
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  mov    %eax,%r9d
  sub    %r10d,%r9d
  test   %di,%di
  je     L5285
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L5285:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L8812
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L8812:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L1686
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L1686:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L5351
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L5351:
  mov    %r10d,0x18(%rsp)
  movswl %r9w,%r9d
  push   %rdi
  xor    %edi,%edi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xc,%eax
  cmovs  0x16(%rsp),%ax
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    0x18(%rsp),%r10d
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  mov    %r10d,%r11d
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  movzwl 0xc(%rsp),%edi
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L2522:
  test   %r11w,%r11w
  je     L1030
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L1030:
  mov    $0x19,%eax
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  mov    %eax,%r8d
  sub    %r10d,%r8d
  test   %cx,%cx
  je     L2272
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L2272:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L987
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L987:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L676
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L676:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L6819
  mov    $0x19,%edx
  sub    0xc(%rsp),%dx
  mov    %dx,0xc(%rsp)
  movswl %dx,%ecx
L6819:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L9541
  mov    $0x19,%edx
  sub    %r14d,%edx
  mov    %edx,%r14d
  movswl %dx,%edx
L9541:
  mov    %r11d,0x18(%rsp)
  movswl %r8w,%r8d
  mov    %r10d,0x10(%rsp)
  push   %rdx
  xor    %edx,%edx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x4,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0xc(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x10(%rsp),%r10d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %r10w,0x10(%rsp)
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L2675:
  mov    $0xfffffffe,%eax
  mov    %ax,0x16(%rsp)
  jmp    L9829
L176:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L8926
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L8926:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L1380
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1380:
  mov    $0x19,%eax
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  mov    %eax,%r9d
  sub    %r10d,%r9d
  test   %di,%di
  je     L3557
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L3557:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L8556
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L8556:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L4194
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L4194:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L3664
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L3664:
  mov    %r10d,0x18(%rsp)
  movswl %r9w,%r9d
  push   %rdi
  xor    %edi,%edi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xb,%eax
  cmovs  0x16(%rsp),%ax
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    0x18(%rsp),%r10d
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  mov    %r10d,%r11d
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  movzwl 0xc(%rsp),%esi
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %esi,%eax
  mov    %esi,%edx
  test   %si,%si
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L8808:
  test   %r11w,%r11w
  je     L979
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L979:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2660
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L2660:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L4723
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L4723:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L1594
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L1594:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4093
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4093:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L5312
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L5312:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L8614
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L8614:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xe,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L2303:
  test   %r11w,%r11w
  je     L5147
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5147:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L7892
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L7892:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L3425
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L3425:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L1827
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L1827:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L6045
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L6045:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L745
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L745:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L3534
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L3534:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xd,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L5000:
  test   %r11w,%r11w
  je     L8695
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8695:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5293
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L5293:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L4924
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L4924:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L7382
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L7382:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L9863
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L9863:
  movzwl 0xc(%rsp),%esi
  xor    %ecx,%ecx
  test   %si,%si
  je     L3739
  mov    $0x19,%ecx
  sub    %esi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L3739:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L3679
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L3679:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x8(%rsp)
  push   %rsi
  xor    %esi,%esi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x16,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x10(%rsp),%edi
  movzwl 0xc(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x8(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0x8(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %ecx,%eax
  mov    %ecx,%edx
  test   %cx,%cx
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L10029:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4568
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4568:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L6841
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6841:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L3072
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L3072:
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  test   %di,%di
  je     L1893
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L1893:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L4815
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L4815:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L1479
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L1479:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L1467
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L1467:
  mov    %r10d,0x18(%rsp)
  push   %rdi
  xor    %edi,%edi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x9,%eax
  cmovs  0x16(%rsp),%ax
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    0x18(%rsp),%r10d
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  mov    %r10d,%r11d
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  movzwl 0xc(%rsp),%esi
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %esi,%eax
  mov    %esi,%edx
  test   %si,%si
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L6348:
  test   %r11w,%r11w
  je     L9073
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9073:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L3385
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L3385:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L4913
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L4913:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L4208
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L4208:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L8166
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L8166:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L9857
  mov    $0x19,%edx
  sub    0xc(%rsp),%dx
  mov    %dx,0xc(%rsp)
  movswl %dx,%ecx
L9857:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L5960
  mov    $0x19,%edx
  sub    %r14d,%edx
  mov    %edx,%r14d
  movswl %dx,%edx
L5960:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x10(%rsp)
  push   %rdx
  xor    %edx,%edx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  mov    0x10(%rsp),%r10d
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  mov    %r10w,0x10(%rsp)
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  movzwl 0xc(%rsp),%edi
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L9084:
  test   %r11w,%r11w
  je     L759
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L759:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4132
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4132:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L1999
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1999:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L7597
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L7597:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L538
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L538:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L5445
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L5445:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L6134
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L6134:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x10(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %rdx
  xor    %edx,%edx
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1f,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0xc(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x10(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0x10(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  sub    %ecx,%eax
  mov    %ecx,%edx
  test   %cx,%cx
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L390
L75:
  test   %r11w,%r11w
  je     L5553
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5553:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L8150
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L8150:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L8312
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L8312:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L804
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L804:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L7112
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L7112:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L3870
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L3870:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L9854
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L9854:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x10(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %rdx
  xor    %edx,%edx
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1d,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0xc(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x10(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0x10(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L1877:
  test   %r11w,%r11w
  je     L16
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L16:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L31
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L31:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L7769
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L7769:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L2291
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2291:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L6981
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L6981:
  movzwl 0xc(%rsp),%esi
  xor    %ecx,%ecx
  test   %si,%si
  je     L3828
  mov    $0x19,%ecx
  sub    %esi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L3828:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L2240
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L2240:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x8(%rsp)
  push   %rsi
  xor    %esi,%esi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x15,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x10(%rsp),%esi
  mov    0x8(%rsp),%r10d
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  mov    %r10w,0x8(%rsp)
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  movzwl 0xc(%rsp),%esi
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %esi,%eax
  mov    %esi,%edx
  test   %si,%si
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L4848:
  test   %r11w,%r11w
  je     L6041
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6041:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L1454
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L1454:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L3313
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L3313:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L4243
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4243:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L4695
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L4695:
  movzwl 0xc(%rsp),%esi
  xor    %ecx,%ecx
  test   %si,%si
  je     L7107
  mov    $0x19,%ecx
  sub    %esi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L7107:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L9745
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L9745:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x8(%rsp)
  push   %rsi
  xor    %esi,%esi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x17,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x10(%rsp),%esi
  movzwl 0xc(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x8(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0x8(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L4363:
  test   %r11w,%r11w
  je     L6962
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6962:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4830
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4830:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L8218
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L8218:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L8531
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L8531:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L8670
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L8670:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L2288
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L2288:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L5059
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L5059:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xf,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L4854:
  test   %r11w,%r11w
  je     L9525
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9525:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L5970
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L5970:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L3760
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L3760:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L331
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L331:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L2681
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2681:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L825
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L825:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L9592
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L9592:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x7,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L4586:
  test   %r11w,%r11w
  je     L2574
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L2574:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L10051
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L10051:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L5986
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L5986:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L2457
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L2457:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L5092
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L5092:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L9236
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L9236:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L2495
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L2495:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x5,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L8784:
  test   %r11w,%r11w
  je     L10068
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L10068:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L2782
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L2782:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L931
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L931:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L8109
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L8109:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L757
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L757:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L3042
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L3042:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L6339
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L6339:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x6,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L3532:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L393
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L393:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L1657
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1657:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L7039
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L7039:
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  test   %di,%di
  je     L2483
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2483:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L911
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L911:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L1912
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L1912:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L9693
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L9693:
  mov    %r10d,0x18(%rsp)
  push   %rdi
  xor    %edi,%edi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xa,%eax
  cmovs  0x16(%rsp),%ax
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%esi
  mov    0x18(%rsp),%r10d
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  mov    %r10d,%r11d
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  movzwl 0xc(%rsp),%edi
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L6484:
  test   %r11w,%r11w
  je     L9677
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9677:
  mov    $0x19,%eax
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  mov    %eax,%r8d
  sub    %r10d,%r8d
  test   %cx,%cx
  je     L2663
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L2663:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L5363
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L5363:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L9536
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L9536:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L8055
  mov    $0x19,%edx
  sub    0xc(%rsp),%dx
  mov    %dx,0xc(%rsp)
  movswl %dx,%ecx
L8055:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L9305
  mov    $0x19,%edx
  sub    %r14d,%edx
  mov    %edx,%r14d
  movswl %dx,%edx
L9305:
  mov    %r11d,0x18(%rsp)
  movswl %r8w,%r8d
  mov    %r10d,0x10(%rsp)
  push   %rdx
  xor    %edx,%edx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r8
  pop    %r9
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x3,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0xc(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x10(%rsp),%r10d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %r10w,0x10(%rsp)
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L4851:
  test   %r11w,%r11w
  je     L6261
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6261:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L4082
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L4082:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L8771
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L8771:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L4788
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L4788:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L8814
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L8814:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L476
  mov    $0x19,%edx
  sub    0xc(%rsp),%dx
  mov    %dx,0xc(%rsp)
  movswl %dx,%ecx
L476:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L1792
  mov    $0x19,%edx
  sub    %r14d,%edx
  mov    %edx,%r14d
  movswl %dx,%edx
L1792:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x10(%rsp)
  push   %rdx
  xor    %edx,%edx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x2,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0xc(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x10(%rsp),%r10d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %r10w,0x10(%rsp)
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L1111:
  test   %r11w,%r11w
  je     L6222
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6222:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L966
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L966:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L4938
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L4938:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L7664
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L7664:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L4472
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L4472:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L3872
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L3872:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L3985
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L3985:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x10(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %rdx
  xor    %edx,%edx
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1e,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0xc(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x10(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0x10(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  sub    %esi,%eax
  mov    %esi,%edx
  test   %si,%si
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L234:
  test   %r11w,%r11w
  je     L9307
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9307:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L7377
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L7377:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L4513
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L4513:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L8548
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L8548:
  mov    $0x19,%esi
  xor    %ecx,%ecx
  mov    %esi,%eax
  sub    %r10d,%eax
  cmpw   $0x0,0xc(%rsp)
  je     L1035
  sub    0xc(%rsp),%si
  mov    %si,0xc(%rsp)
  movswl %si,%ecx
L1035:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L3271
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L3271:
  cwtl
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x8(%rsp)
  push   %rsi
  xor    %esi,%esi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x13,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x10(%rsp),%edi
  movzwl 0xc(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x8(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0x8(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %ecx,%eax
  mov    %ecx,%edx
  test   %cx,%cx
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L2989:
  test   %r11w,%r11w
  je     L7559
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7559:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2416
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L2416:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L3819
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L3819:
  mov    $0x19,%eax
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  mov    %eax,%r9d
  sub    %r10d,%r9d
  test   %cx,%cx
  je     L3167
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L3167:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L9458
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L9458:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L710
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L710:
  mov    %r11d,0x18(%rsp)
  movswl %r9w,%r9d
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xb,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L9970:
  test   %r11w,%r11w
  je     L3202
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L3202:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5390
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L5390:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L7875
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L7875:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L2094
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L2094:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L9800
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L9800:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L2161
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L2161:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L5955
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L5955:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0xa,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0x10(%rsp),%ecx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L9223:
  test   %r11w,%r11w
  je     L2062
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L2062:
  mov    $0x19,%eax
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  mov    %eax,%r8d
  sub    %r10d,%r8d
  test   %cx,%cx
  je     L6909
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6909:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L354
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L354:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L10002
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L10002:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L8148
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L8148:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L6570
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L6570:
  mov    %r11d,0x18(%rsp)
  movswl %r8w,%r8d
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x3,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L7983:
  test   %r11w,%r11w
  je     L631
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L631:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2042
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L2042:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L2362
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L2362:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L9744
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L9744:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L9127
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L9127:
  movzwl 0xc(%rsp),%esi
  xor    %ecx,%ecx
  test   %si,%si
  je     L2080
  mov    $0x19,%ecx
  sub    %esi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L2080:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L5536
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L5536:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x8(%rsp)
  push   %rsi
  xor    %esi,%esi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x12,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x10(%rsp),%esi
  mov    0x8(%rsp),%r10d
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    %eax,%edx
  mov    %r10w,0x8(%rsp)
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  movzwl 0xc(%rsp),%esi
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %esi,%eax
  mov    %esi,%edx
  test   %si,%si
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L5241:
  test   %r11w,%r11w
  je     L22
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L22:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L3071
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L3071:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L5087
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L5087:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L9814
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L9814:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L2507
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L2507:
  movzwl 0xc(%rsp),%esi
  xor    %ecx,%ecx
  test   %si,%si
  je     L2881
  mov    $0x19,%ecx
  sub    %esi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L2881:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L932
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L932:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x8(%rsp)
  push   %rsi
  xor    %esi,%esi
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x11,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x10(%rsp),%esi
  movzwl 0xc(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x8(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0x8(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x10(%rsp)
  mov    %eax,%edx
  sub    %r14d,%edx
  test   %r14w,%r14w
  cmovne %edx,%r14d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L2402:
  test   %r11w,%r11w
  je     L9215
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9215:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L1950
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L1950:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L9426
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L9426:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L4207
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L4207:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L3890
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L3890:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L4687
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L4687:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L7118
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L7118:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x10(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %rdx
  xor    %edx,%edx
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1a,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0xc(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x10(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0x10(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  sub    %edi,%eax
  mov    %edi,%edx
  test   %di,%di
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L7069:
  test   %r11w,%r11w
  je     L4720
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L4720:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L1914
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L1914:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L5854
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L5854:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L1858
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L1858:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L6242
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L6242:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L158
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L158:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L2785
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L2785:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0x10(%rsp)
  push   %rax
  xor    %eax,%eax
  push   %rdx
  xor    %edx,%edx
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  mov    %eax,%edx
  cmp    $0xffff,%ax
  je     L18
  mov    $0x19,%eax
  movzwl 0x16(%rsp),%esi
  test   %dx,%dx
  mov    0x18(%rsp),%r11d
  mov    %eax,%edx
  movzwl 0xc(%rsp),%ecx
  mov    0x10(%rsp),%r10d
  cmovns %eax,%esi
  sub    %r12d,%edx
  test   %r12w,%r12w
  cmovne %edx,%r12d
  mov    %eax,%edx
  mov    %r10w,0x10(%rsp)
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %si,0x16(%rsp)
  movzwl 0x8(%rsp),%esi
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  sub    %ecx,%eax
  mov    %ecx,%edx
  test   %cx,%cx
  cmovne %eax,%edx
  mov    %dx,0xc(%rsp)
  jmp    L5436
L6179:
  test   %r11w,%r11w
  je     L7948
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7948:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L6226
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L6226:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L785
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L785:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L5396
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L5396:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L6478
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L6478:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L5134
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L5134:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L4839
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L4839:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdx
  pop    %rcx
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x2,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L162:
  test   %r11w,%r11w
  je     L6827
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6827:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L784
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L784:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L8756
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L8756:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L2731
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L2731:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4311
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4311:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L6686
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L6686:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L8545
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L8545:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%esi
  movzwl 0x10(%rsp),%edi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %r15d,%edx
  test   %r15w,%r15w
  cmovne %edx,%r15d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %edi,%edx
  test   %di,%di
  cmove  %edi,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L3378:
  test   %r11w,%r11w
  je     L9279
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9279:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L6032
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L6032:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L152
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L152:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L6589
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L6589:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4236
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4236:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L8733
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L8733:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L8217
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L8217:
  mov    %r11d,0x18(%rsp)
  mov    %r10d,0xc(%rsp)
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %r10
  pop    %r11
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x9,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%ecx
  movzwl 0x10(%rsp),%esi
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0xc(%rsp),%r10d
  mov    %eax,%edx
  sub    %r12d,%edx
  test   %r12w,%r12w
  mov    %r10w,0xc(%rsp)
  cmovne %edx,%r12d
  mov    %eax,%edx
  sub    %r11d,%edx
  test   %r11w,%r11w
  cmovne %edx,%r11d
  mov    %eax,%edx
  sub    %ecx,%edx
  test   %cx,%cx
  cmove  %ecx,%edx
  mov    %dx,0x8(%rsp)
  mov    %eax,%edx
  sub    %r13d,%edx
  test   %r13w,%r13w
  cmovne %edx,%r13d
  mov    %eax,%edx
  sub    %esi,%edx
  test   %si,%si
  cmove  %esi,%edx
  sub    %r14d,%eax
  test   %r14w,%r14w
  mov    %dx,0x10(%rsp)
  mov    %r14d,%edx
  cmovne %eax,%edx
  mov    %edx,%r14d
  jmp    L5436
L4091:
  test   %r11w,%r11w
  je     L5666
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5666:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4225
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4225:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L892
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L892:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L2436
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L2436:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L6960
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L6960:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L6175
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L6175:
  mov    $0x19,%eax
  mov    %r11d,0x18(%rsp)
  sub    %r10d,%eax
  mov    %r10d,0x10(%rsp)
  cwtl
  push   %rax
  xor    %eax,%eax
  push   %rdx
  xor    %edx,%edx
  call   <get_first_winning_move_3@plt>
  pop    %rsi
  pop    %rdi
  cmp    $0xffff,%ax
  je     L18
  test   %ax,%ax
  mov    $0x1b,%eax
  cmovs  0x16(%rsp),%ax
  mov    0x18(%rsp),%r11d
  movzwl 0x8(%rsp),%edi
  movzwl 0xc(%rsp),%esi
  mov    $0x19,%edx
  mov    %ax,0x16(%rsp)
  mov    $0x19,%eax
  mov    0x10(%rsp),%r10d
  sub    %r12d,%eax
  test   %r12w,%r12w
  cmovne %eax,%r12d
  mov    $0x19,%eax
  mov    %r10w,0x10(%rsp)
  sub    %r11d,%eax
  test   %r11w,%r11w
  cmovne %eax,%r11d
  mov    $0x19,%eax
  sub    %r15d,%eax
  test   %r15w,%r15w
  cmovne %eax,%r15d
  mov    $0x19,%eax
  sub    %edi,%eax
  test   %di,%di
  cmove  %edi,%eax
  mov    %ax,0x8(%rsp)
  mov    $0x19,%eax
  sub    %r13d,%eax
  test   %r13w,%r13w
  cmovne %eax,%r13d
  sub    %esi,%edx
  mov    %esi,%eax
  test   %si,%si
  cmovne %edx,%eax
  mov    %ax,0xc(%rsp)
  jmp    L5436
```

assistant: ```c
short get_first_losing_move_4(short a, short b, short c, short d, short e, short f, short g, short h) {
  short tmp, org, dst;
  if (get_first_winning_move_3(a, b, c, d, e, f, g, h) != -1)
    return -2;
  short first_losing_move = -1;
  for (short move = 31; 0 <= move; move--) {
    {
      if (move == 0) {
        if (a != 0 && a < 21) {
          org = a;
          dst = org + 4;
          if (dst != b && dst != c && dst != d && dst != e && dst != f) {
            a = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else if (h == dst) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            a = org;
          }
        }
      } else if (move == 1) {
        if (a != 0 && a < 21 && a % 4 != 0) {
          org = a;
          dst = org + 5;
          if (dst != b && dst != c && dst != d && dst != e && dst != f) {
            a = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else if (h == dst) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            a = org;
          }
        }
      } else if (move == 2) {
        if (a != 0 && a % 4 != 0) {
          org = a;
          dst = org + 1;
          if (dst != b && dst != c && dst != d && dst != e && dst != f) {
            a = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else if (h == dst) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            a = org;
          }
        }
      } else if (move == 3) {
        if (a != 0 && 4 < a && a % 4 != 0) {
          org = a;
          dst = org - 3;
          if (dst != b && dst != c && dst != d && dst != e && dst != f) {
            a = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else if (h == dst) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            a = org;
          }
        }
      } else if (move == 4) {
        if (a != 0 && 4 < a) {
          org = a;
          dst = org - 4;
          if (dst != b && dst != c && dst != d && dst != e && dst != f) {
            a = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else if (h == dst) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            a = org;
          }
        }
      } else if (move == 5) {
        if (a != 0 && 4 < a && a % 4 != 1) {
          org = a;
          dst = org - 5;
          if (dst != b && dst != c && dst != d && dst != e && dst != f) {
            a = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else if (h == dst) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            a = org;
          }
        }
      } else if (move == 6) {
        if (a != 0 && a % 4 != 1) {
          org = a;
          dst = org - 1;
          if (dst != b && dst != c && dst != d && dst != e && dst != f) {
            a = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else if (h == dst) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            a = org;
          }
        }
      } else if (move == 7) {
        if (a != 0 && a < 21 && a % 4 != 1) {
          org = a;
          dst = org + 3;
          if (dst != b && dst != c && dst != d && dst != e && dst != f) {
            a = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else if (h == dst) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            a = org;
          }
        }
      } else if (move == 8) {
        if (b != 0 && b < 21) {
          org = b;
          dst = org + 4;
          if (dst != a && dst != c && dst != d && dst != f && dst != g) {
            b = dst;
            if (e == dst) {
              e = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              e = dst;
            } else if (dst == h) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            b = org;
          }
        }
      } else if (move == 9) {
        if (b != 0 && b < 21 && b % 4 != 0) {
          org = b;
          dst = org + 5;
          if (dst != a && dst != c && dst != d && dst != f && dst != g) {
            b = dst;
            if (e == dst) {
              e = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              e = dst;
            } else if (dst == h) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            b = org;
          }
        }
      } else if (move == 10) {
        if (b != 0 && b % 4 != 0) {
          org = b;
          dst = org + 1;
          if (dst != a && dst != c && dst != d && dst != f && dst != g) {
            b = dst;
            if (e == dst) {
              e = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              e = dst;
            } else if (dst == h) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            b = org;
          }
        }
      } else if (move == 11) {
        if (b != 0 && 4 < b && b % 4 != 0) {
          org = b;
          dst = org - 3;
          if (dst != a && dst != c && dst != d && dst != f && dst != g) {
            b = dst;
            if (e == dst) {
              e = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              e = dst;
            } else if (dst == h) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            b = org;
          }
        }
      } else if (move == 12) {
        if (b != 0 && 4 < b) {
          org = b;
          dst = org - 4;
          if (dst != a && dst != c && dst != d && dst != f && dst != g) {
            b = dst;
            if (e == dst) {
              e = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              e = dst;
            } else if (dst == h) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            b = org;
          }
        }
      } else if (move == 13) {
        if (b != 0 && 4 < b && b % 4 != 1) {
          org = b;
          dst = org - 5;
          if (dst != a && dst != c && dst != d && dst != f && dst != g) {
            b = dst;
            if (e == dst) {
              e = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              e = dst;
            } else if (dst == h) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            b = org;
          }
        }
      } else if (move == 14) {
        if (b != 0 && b % 4 != 1) {
          org = b;
          dst = org - 1;
          if (dst != a && dst != c && dst != d && dst != f && dst != g) {
            b = dst;
            if (e == dst) {
              e = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              e = dst;
            } else if (dst == h) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            b = org;
          }
        }
      } else if (move == 15) {
        if (b != 0 && b < 21 && b % 4 != 1) {
          org = b;
          dst = org + 3;
          if (dst != a && dst != c && dst != d && dst != f && dst != g) {
            b = dst;
            if (e == dst) {
              e = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              e = dst;
            } else if (dst == h) {
              h = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              h = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            b = org;
          }
        }
      } else if (move == 16) {
        if (c != 0 && c < 21) {
          org = c;
          dst = org + 4;
          if (dst != a && dst != b && dst != d && dst != e && dst != g && dst != h) {
            c = dst;
            if (f == dst) {
              f = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              f = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            c = org;
          }
        }
      } else if (move == 17) {
        if (c != 0 && c < 21 && c % 4 != 0) {
          org = c;
          dst = org + 5;
          if (dst != a && dst != b && dst != d && dst != e && dst != g && dst != h) {
            c = dst;
            if (f == dst) {
              f = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              f = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            c = org;
          }
        }
      } else if (move == 18) {
        if (c != 0 && c % 4 != 0) {
          org = c;
          dst = org + 1;
          if (dst != a && dst != b && dst != d && dst != e && dst != g && dst != h) {
            c = dst;
            if (f == dst) {
              f = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              f = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            c = org;
          }
        }
      } else if (move == 19) {
        if (c != 0 && 4 < c && c % 4 != 0) {
          org = c;
          dst = org - 3;
          if (dst != a && dst != b && dst != d && dst != e && dst != g && dst != h) {
            c = dst;
            if (f == dst) {
              f = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              f = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            c = org;
          }
        }
      } else if (move == 20) {
        if (c != 0 && 4 < c) {
          org = c;
          dst = org - 4;
          if (dst != a && dst != b && dst != d && dst != e && dst != g && dst != h) {
            c = dst;
            if (f == dst) {
              f = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              f = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            c = org;
          }
        }
      } else if (move == 21) {
        if (c != 0 && 4 < c && c % 4 != 1) {
          org = c;
          dst = org - 5;
          if (dst != a && dst != b && dst != d && dst != e && dst != g && dst != h) {
            c = dst;
            if (f == dst) {
              f = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              f = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            c = org;
          }
        }
      } else if (move == 22) {
        if (c != 0 && c % 4 != 1) {
          org = c;
          dst = org - 1;
          if (dst != a && dst != b && dst != d && dst != e && dst != g && dst != h) {
            c = dst;
            if (f == dst) {
              f = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              f = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            c = org;
          }
        }
      } else if (move == 23) {
        if (c != 0 && c < 21 && c % 4 != 1) {
          org = c;
          dst = org + 3;
          if (dst != a && dst != b && dst != d && dst != e && dst != g && dst != h) {
            c = dst;
            if (f == dst) {
              f = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              f = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            c = org;
          }
        }
      } else if (move == 24) {
        if (d != 0 && d < 21) {
          org = d;
          dst = org + 4;
          if (dst != a && dst != b && dst != c && dst != e && dst != f && dst != h) {
            d = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            d = org;
          }
        }
      } else if (move == 25) {
        if (d != 0 && d < 21 && d % 4 != 0) {
          org = d;
          dst = org + 5;
          if (dst != a && dst != b && dst != c && dst != e && dst != f && dst != h) {
            d = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            d = org;
          }
        }
      } else if (move == 26) {
        if (d != 0 && d % 4 != 0) {
          org = d;
          dst = org + 1;
          if (dst != a && dst != b && dst != c && dst != e && dst != f && dst != h) {
            d = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            d = org;
          }
        }
      } else if (move == 27) {
        if (d != 0 && 4 < d && d % 4 != 0) {
          org = d;
          dst = org - 3;
          if (dst != a && dst != b && dst != c && dst != e && dst != f && dst != h) {
            d = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            d = org;
          }
        }
      } else if (move == 28) {
        if (d != 0 && 4 < d) {
          org = d;
          dst = org - 4;
          if (dst != a && dst != b && dst != c && dst != e && dst != f && dst != h) {
            d = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            d = org;
          }
        }
      } else if (move == 29) {
        if (d != 0 && 4 < d && d % 4 != 1) {
          org = d;
          dst = org - 5;
          if (dst != a && dst != b && dst != c && dst != e && dst != f && dst != h) {
            d = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            d = org;
          }
        }
      } else if (move == 30) {
        if (d != 0 && d % 4 != 1) {
          org = d;
          dst = org - 1;
          if (dst != a && dst != b && dst != c && dst != e && dst != f && dst != h) {
            d = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            d = org;
          }
        }
      } else if (move == 31) {
        if (d != 0 && d < 21 && d % 4 != 1) {
          org = d;
          dst = org + 3;
          if (dst != a && dst != b && dst != c && dst != e && dst != f && dst != h) {
            d = dst;
            if (g == dst) {
              g = 0;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              g = dst;
            } else {
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
              tmp = get_first_winning_move_3(a, b, c, d, e, f, g, h);
              if (tmp == -1)
                return -1;
              if (0 <= tmp)
                first_losing_move = move;
              {
                tmp = a;
                a = (e == 0 ? 0 : 25 - e);
                e = (tmp == 0 ? 0 : 25 - tmp);
                tmp = b;
                b = (f == 0 ? 0 : 25 - f);
                f = (tmp == 0 ? 0 : 25 - tmp);
                tmp = c;
                c = (g == 0 ? 0 : 25 - g);
                g = (tmp == 0 ? 0 : 25 - tmp);
                tmp = d;
                d = (h == 0 ? 0 : 25 - h);
                h = (tmp == 0 ? 0 : 25 - tmp);
              }
            }
            d = org;
          }
        }
      }
    }
  }
  return first_losing_move;
}
```