user: Translate the below assembly code into C programming language:

```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    L4158
  mov    $0xffffffff,%r9d
  mov    0x1c(%rsp),%r10d
  mov    0x18(%rsp),%r11d
  mov    $0x1e,%ebx
  mov    %r9w,0x16(%rsp)
  lea    D8(%rip),%rbp
  mov    %r10d,%r15d
  nopl   0x0(%rax,%rax,1)
L5033:
  lea    0x1(%rbx),%eax
  cmp    $0x1e,%ax
  ja     L7317
  movzwl %ax,%eax
  movslq 0x0(%rbp,%rax,4),%rax
  add    %rbp,%rax
  notrack jmp *%rax
  nopl   0x0(%rax,%rax,1)
  cmp    $0x4,%r14w
  jle    L8469
  mov    %r14d,%eax
  and    $0x3,%eax
  cmp    $0x1,%ax
  je     L8469
  lea    -0x5(%r14),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x8(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L1611
  test   %r11w,%r11w
  je     L297
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L297:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4254
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4254:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L9500
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L9500:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L4947
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L4947:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L8556
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L8556:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L6374
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L6374:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L4272
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L4272:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L1314
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L1314:
  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     L2473
  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)
L8469:
  sub    $0x1,%ebx
  jmp    L5033
  nopl   0x0(%rax,%rax,1)
  cmp    $0x4,%r14w
  jle    L8469
  lea    -0x4(%r14),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x8(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L6393
  test   %r11w,%r11w
  je     L5116
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5116:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L8338
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L8338:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L736
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L736:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L3499
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L3499:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4766
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4766:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L78
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L78:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L4408
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L4408:
  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     L2473
  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    L8469
  cmp    $0x4,%r14w
  jle    L8469
  test   $0x3,%r14b
  je     L8469
  lea    -0x3(%r14),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x8(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L3824
  test   %r11w,%r11w
  je     L4246
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L4246:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L406
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L406:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L8231
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L8231:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L9408
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L9408:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L6283
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L6283:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L1813
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L1813:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L9410
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L9410:
  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     L2473
  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    L8469
  nopl   0x0(%rax)
  test   %r14w,%r14w
  je     L8469
  test   $0x3,%r14b
  je     L8469
  lea    0x1(%r14),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x8(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L5060
  test   %r11w,%r11w
  je     L7353
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7353:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L7603
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L7603:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L688
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L688:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L5754
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L5754:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L5121
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L5121:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L9581
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L9581:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L7564
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L7564:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L10075
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L10075:
  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     L2473
  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    L8469
  nopl   0x0(%rax,%rax,1)
  test   %r14w,%r14w
  je     L8469
  cmp    $0x14,%r14w
  jg     L8469
  test   $0x3,%r14b
  je     L8469
  lea    0x5(%r14),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x8(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L6279
  test   %r11w,%r11w
  je     L2177
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L2177:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L8086
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L8086:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L4870
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L4870:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L5723
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L5723:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L3566
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L3566:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L991
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L991:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L3691
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L3691:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L8499
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L8499:
  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     L2473
  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    L8469
  nopl   0x0(%rax,%rax,1)
  test   %r14w,%r14w
  je     L8469
  cmp    $0x14,%r14w
  jg     L8469
  lea    0x4(%r14),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x8(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L6605
  test   %r11w,%r11w
  je     L9529
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9529:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2907
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L2907:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L2292
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L2292:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L3024
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L3024:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L7491
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L7491:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L7823
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L7823:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L4411
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L4411:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L7313
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L7313:
  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     L2473
  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    L8469
  nopl   0x0(%rax)
  test   %r13w,%r13w
  je     L8469
  cmp    $0x14,%r13w
  jg     L8469
  mov    %r13d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L8469
  lea    0x3(%r13),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L7698
  test   %r11w,%r11w
  je     L7618
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7618:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L66
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L66:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L637
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L637:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L5994
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L5994:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L2767
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2767:
  movl   $0x0,0x18(%rsp)
  test   %r10w,%r10w
  je     L1392
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
  mov    %eax,0x18(%rsp)
L1392:
  movzwl 0xc(%rsp),%r10d
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L9273
  mov    $0x19,%eax
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L9273:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L6032
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L6032:
  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     L2473
  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    L8469
  nopl   (%rax)
  test   %r13w,%r13w
  je     L8469
  mov    %r13d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L8469
  lea    -0x1(%r13),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L1471
  test   %r11w,%r11w
  je     L9593
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9593:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5522
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L5522:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L2509
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L2509:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L3137
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L3137:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L3789
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L3789:
  movl   $0x0,0x18(%rsp)
  test   %r10w,%r10w
  je     L2202
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
  mov    %eax,0x18(%rsp)
L2202:
  movzwl 0xc(%rsp),%r10d
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L5772
  mov    $0x19,%eax
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L5772:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L8221
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L8221:
  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     L2473
  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    L8469
  nopl   0x0(%rax)
  cmp    $0x4,%r13w
  jle    L8469
  mov    %r13d,%eax
  and    $0x3,%eax
  cmp    $0x1,%ax
  je     L8469
  lea    -0x5(%r13),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L8053
  test   %r11w,%r11w
  je     L8281
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8281:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5064
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L5064:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L5380
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L5380:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L210
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L210:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L675
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L675:
  movl   $0x0,0x18(%rsp)
  test   %r10w,%r10w
  je     L7478
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
  mov    %eax,0x18(%rsp)
L7478:
  movzwl 0xc(%rsp),%r10d
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L4206
  mov    $0x19,%eax
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L4206:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L1711
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L1711:
  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     L2473
  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    L8469
  nopw   0x0(%rax,%rax,1)
  cmp    $0x4,%r13w
  jle    L8469
  lea    -0x4(%r13),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L5130
  test   %r11w,%r11w
  je     L9456
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9456:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L9243
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L9243:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L5533
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L5533:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L5360
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L5360:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L148
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L148:
  mov    $0x19,%eax
  mov    %eax,%ecx
  sub    %r10d,%ecx
  movzwl 0xc(%rsp),%r10d
  mov    %cx,0x18(%rsp)
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L5038
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L5038:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L2151
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L2151:
  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     L2473
  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    L8469
  nopl   0x0(%rax)
  cmp    $0x4,%r13w
  jle    L8469
  test   $0x3,%r13b
  je     L8469
  lea    -0x3(%r13),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L2869
  test   %r11w,%r11w
  je     L9222
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9222:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L870
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L870:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L712
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L712:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L8285
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L8285:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L978
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L978:
  mov    $0x19,%eax
  mov    %eax,%ecx
  sub    %r10d,%ecx
  movzwl 0xc(%rsp),%r10d
  mov    %cx,0x18(%rsp)
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L9274
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L9274:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L7596
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L7596:
  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     L2473
  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    L8469
  nopl   0x0(%rax)
  test   %r13w,%r13w
  je     L8469
  test   $0x3,%r13b
  je     L8469
  lea    0x1(%r13),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L7056
  test   %r11w,%r11w
  je     L9816
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9816:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L9252
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L9252:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L8222
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L8222:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L5719
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L5719:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L6628
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L6628:
  movl   $0x0,0x18(%rsp)
  test   %r10w,%r10w
  je     L8777
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
  mov    %eax,0x18(%rsp)
L8777:
  movzwl 0xc(%rsp),%r10d
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L6412
  mov    $0x19,%eax
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L6412:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L9293
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L9293:
  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     L2473
  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    L8469
  nopl   (%rax)
  test   %r13w,%r13w
  je     L8469
  cmp    $0x14,%r13w
  jg     L8469
  test   $0x3,%r13b
  je     L8469
  lea    0x5(%r13),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L1016
  test   %r11w,%r11w
  je     L7865
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7865:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L9297
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L9297:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L9699
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L9699:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L280
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L280:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L5876
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L5876:
  movl   $0x0,0x18(%rsp)
  test   %r10w,%r10w
  je     L6301
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
  mov    %eax,0x18(%rsp)
L6301:
  movzwl 0xc(%rsp),%r10d
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L9294
  mov    $0x19,%eax
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L9294:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L6253
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L6253:
  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     L2473
  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    L8469
  xchg   %ax,%ax
  test   %r13w,%r13w
  je     L8469
  cmp    $0x14,%r13w
  jg     L8469
  lea    0x4(%r13),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x8(%rsp),%r10w
  je     L5637
  test   %r11w,%r11w
  je     L3259
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L3259:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L3672
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L3672:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L6464
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6464:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L6154
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L6154:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4041
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4041:
  movl   $0x0,0x18(%rsp)
  test   %r10w,%r10w
  je     L6811
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
  mov    %eax,0x18(%rsp)
L6811:
  movzwl 0xc(%rsp),%r10d
  xor    %ecx,%ecx
  test   %r10w,%r10w
  je     L5093
  mov    $0x19,%eax
  sub    %r10d,%eax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L5093:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L4136
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L4136:
  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     L2473
  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    L8469
  xchg   %ax,%ax
  test   %r15w,%r15w
  je     L8469
  cmp    $0x14,%r15w
  jg     L8469
  mov    %r15d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L8469
  lea    0x3(%r15),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L2935
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L4937
  test   %r11w,%r11w
  je     L3798
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L3798:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L3445
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L3445:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L2143
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L2143:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L5745
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L5745:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L2147
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2147:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L8352
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L8352:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L7798
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L7798:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L2968
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L2968:
  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     L2473
  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    L8469
  nopl   (%rax)
  test   %r15w,%r15w
  je     L8469
  mov    %r15d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L8469
  lea    -0x1(%r15),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L4815
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L2824
  test   %r11w,%r11w
  je     L1379
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L1379:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4524
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4524:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L56
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L56:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L4111
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L4111:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L2753
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2753:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L9804
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L9804:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L8932
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L8932:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L1218
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L1218:
  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     L2473
  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    L8469
  nopl   0x0(%rax)
  cmp    $0x4,%r15w
  jle    L8469
  mov    %r15d,%eax
  and    $0x3,%eax
  cmp    $0x1,%ax
  je     L8469
  lea    -0x5(%r15),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L4811
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L327
  test   %r11w,%r11w
  je     L663
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L663:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L7824
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L7824:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L975
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L975:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L3331
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L3331:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L3819
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L3819:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L806
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L806:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L8854
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L8854:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L527
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L527:
  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     L2473
  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    L8469
  nopl   0x0(%rax)
  cmp    $0x4,%r15w
  jle    L8469
  lea    -0x4(%r15),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L3338
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L2749
  test   %r11w,%r11w
  je     L5736
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5736:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L9864
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L9864:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L372
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L372:
  mov    $0x19,%eax
  xor    %edx,%edx
  mov    %eax,%ecx
  sub    %r10d,%ecx
  mov    %ecx,%r10d
  movzwl 0x10(%rsp),%ecx
  test   %cx,%cx
  je     L9950
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L9950:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L94
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L94:
  movzwl 0xc(%rsp),%r9d
  xor    %ecx,%ecx
  test   %r9w,%r9w
  je     L8788
  mov    $0x19,%ecx
  sub    %r9d,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L8788:
  xor    %r9d,%r9d
  test   %r14w,%r14w
  je     L5816
  mov    $0x19,%r9d
  sub    %r14d,%r9d
  mov    %r9d,%r14d
  movswl %r9w,%r9d
L5816:
  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     L2473
  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    L8469
  nopl   0x0(%rax,%rax,1)
  cmp    $0x4,%r15w
  jle    L8469
  test   $0x3,%r15b
  je     L8469
  lea    -0x3(%r15),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L459
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L892
  test   %r11w,%r11w
  je     L8925
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8925:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L3302
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L3302:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L3386
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L3386:
  mov    $0x19,%eax
  xor    %edx,%edx
  mov    %eax,%ecx
  sub    %r10d,%ecx
  mov    %ecx,%r10d
  movzwl 0x10(%rsp),%ecx
  test   %cx,%cx
  je     L1797
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L1797:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L614
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L614:
  movzwl 0xc(%rsp),%r9d
  xor    %ecx,%ecx
  test   %r9w,%r9w
  je     L3778
  mov    $0x19,%ecx
  sub    %r9d,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L3778:
  xor    %r9d,%r9d
  test   %r14w,%r14w
  je     L8769
  mov    $0x19,%r9d
  sub    %r14d,%r9d
  mov    %r9d,%r14d
  movswl %r9w,%r9d
L8769:
  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     L2473
  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    L8469
  nopl   (%rax)
  test   %r15w,%r15w
  je     L8469
  test   $0x3,%r15b
  je     L8469
  lea    0x1(%r15),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L5258
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L8841
  test   %r11w,%r11w
  je     L294
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L294:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L6473
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L6473:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L1933
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1933:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L5620
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L5620:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L1350
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L1350:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L7870
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L7870:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L4716
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L4716:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L6075
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L6075:
  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     L2473
  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    L8469
  nopl   (%rax)
  test   %r15w,%r15w
  je     L8469
  cmp    $0x14,%r15w
  jg     L8469
  test   $0x3,%r15b
  je     L8469
  lea    0x5(%r15),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L36
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L969
  test   %r11w,%r11w
  je     L3720
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L3720:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4962
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4962:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L579
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L579:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L4869
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L4869:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L8913
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L8913:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L5434
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L5434:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L1214
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L1214:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L5090
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L5090:
  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     L2473
  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    L8469
  nopl   0x0(%rax,%rax,1)
  test   %r15w,%r15w
  je     L8469
  cmp    $0x14,%r15w
  jg     L8469
  lea    0x4(%r15),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    0x8(%rsp),%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x10(%rsp),%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L4806
  xor    %edi,%edi
  cmp    0xc(%rsp),%r10w
  je     L6753
  test   %r11w,%r11w
  je     L7481
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7481:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L3814
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L3814:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L6461
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6461:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L8123
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L8123:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L2856
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2856:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L4940
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L4940:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L8434
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L8434:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L2433
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L2433:
  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     L2473
  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    L8469
  nopl   0x0(%rax)
  test   %r12w,%r12w
  je     L8469
  cmp    $0x14,%r12w
  jg     L8469
  mov    %r12d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L8469
  lea    0x3(%r12),%r10d
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    %r11w,%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x8(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L4382
  cmp    0xc(%rsp),%r10w
  je     L6633
  test   %r11w,%r11w
  je     L4303
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L4303:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L7750
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L7750:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L3926
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L3926:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L2558
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L2558:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L3683
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L3683:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L4277
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L4277:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L1550
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L1550:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L1316
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L1316:
  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     L2473
  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    L8469
  xchg   %ax,%ax
  test   %r12w,%r12w
  je     L8469
  mov    %r12d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L8469
  lea    -0x1(%r12),%r10d
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    %r11w,%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x8(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L8818
  cmp    0xc(%rsp),%r10w
  je     L9206
  test   %r11w,%r11w
  je     L9095
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9095:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L996
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L996:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L1510
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1510:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L9188
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L9188:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L2034
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2034:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L8072
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L8072:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L2012
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L2012:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L7132
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L7132:
  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     L2473
  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    L8469
  nopl   (%rax)
  cmp    $0x4,%r12w
  jle    L8469
  mov    %r12d,%eax
  and    $0x3,%eax
  cmp    $0x1,%ax
  je     L8469
  lea    -0x5(%r12),%r10d
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    %r11w,%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x8(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L2897
  cmp    0xc(%rsp),%r10w
  je     L681
  test   %r11w,%r11w
  je     L8360
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8360:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L8308
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L8308:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L7387
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L7387:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L8927
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L8927:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L8166
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L8166:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L6129
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L6129:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L776
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L776:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L3587
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L3587:
  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     L2473
  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    L8469
  nopl   (%rax)
  cmp    $0x4,%r12w
  jle    L8469
  lea    -0x4(%r12),%r10d
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    %r11w,%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x8(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L3345
  cmp    0xc(%rsp),%r10w
  je     L848
  test   %r11w,%r11w
  je     L5724
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5724:
  mov    $0x19,%eax
  movzwl 0x8(%rsp),%ecx
  mov    %eax,%esi
  sub    %r10d,%esi
  mov    %esi,%r10d
  xor    %esi,%esi
  test   %cx,%cx
  je     L107
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L107:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L1812
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L1812:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L832
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L832:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L7975
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L7975:
  movzwl 0xc(%rsp),%r8d
  xor    %ecx,%ecx
  test   %r8w,%r8w
  je     L9526
  mov    $0x19,%ecx
  sub    %r8d,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L9526:
  xor    %r8d,%r8d
  test   %r14w,%r14w
  je     L3005
  mov    $0x19,%r8d
  sub    %r14d,%r8d
  mov    %r8d,%r14d
  movswl %r8w,%r8d
L3005:
  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     L2473
  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    L8469
  nopl   0x0(%rax)
  cmp    $0x4,%r12w
  jle    L8469
  test   $0x3,%r12b
  je     L8469
  lea    -0x3(%r12),%r10d
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    %r11w,%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x8(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L3254
  cmp    0xc(%rsp),%r10w
  je     L6674
  test   %r11w,%r11w
  je     L8004
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8004:
  mov    $0x19,%eax
  movzwl 0x8(%rsp),%ecx
  mov    %eax,%esi
  sub    %r10d,%esi
  mov    %esi,%r10d
  xor    %esi,%esi
  test   %cx,%cx
  je     L5228
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L5228:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L7778
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L7778:
  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     L2693
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L2693:
  movzwl 0xc(%rsp),%r8d
  xor    %ecx,%ecx
  test   %r8w,%r8w
  je     L4814
  mov    $0x19,%ecx
  sub    %r8d,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L4814:
  xor    %r8d,%r8d
  test   %r14w,%r14w
  je     L5462
  mov    $0x19,%r8d
  sub    %r14d,%r8d
  mov    %r8d,%r14d
  movswl %r8w,%r8d
L5462:
  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     L2473
  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    L8469
  cs nopw 0x0(%rax,%rax,1)
  test   %r12w,%r12w
  je     L8469
  test   $0x3,%r12b
  je     L8469
  lea    0x1(%r12),%r10d
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    %r11w,%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x8(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L1436
  cmp    0xc(%rsp),%r10w
  je     L5363
  test   %r11w,%r11w
  je     L1860
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L1860:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L1417
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L1417:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L4193
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L4193:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L1482
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L1482:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L6645
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L6645:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L5644
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L5644:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L3794
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L3794:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L7171
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L7171:
  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     L2473
  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    L8469
  cs nopw 0x0(%rax,%rax,1)
  test   %r12w,%r12w
  je     L8469
  cmp    $0x14,%r12w
  jg     L8469
  test   $0x3,%r12b
  je     L8469
  lea    0x5(%r12),%r10d
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r14w,%r10w
  setne  %dl
  cmp    %r11w,%r10w
  setne  %al
  test   %al,%dl
  je     L8469
  cmp    0x8(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L3398
  cmp    0xc(%rsp),%r10w
  je     L6340
  test   %r11w,%r11w
  je     L5328
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5328:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L9101
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L9101:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L7193
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L7193:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L3242
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L3242:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4400
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4400:
  xor    %r10d,%r10d
  test   %r13w,%r13w
  je     L4178
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%r10d
  mov    %r10d,%r13d
L4178:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L5702
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L5702:
  xor    %eax,%eax
  test   %r14w,%r14w
  je     L750
  mov    $0x19,%eax
  sub    %r14d,%eax
  mov    %eax,%r14d
  cwtl
L750:
  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     L2473
  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    L8469
  nopl   0x0(%rax)
  mov    %r15d,%r10d
  test   %r12w,%r12w
  je     L3780
  cmp    $0x14,%r12w
  jg     L3780
  add    $0x4,%r12d
  cmp    %r15w,%r12w
  je     L3780
  cmp    %r13w,%r12w
  je     L3780
  cmp    %r14w,%r12w
  setne  %dl
  cmp    %r11w,%r12w
  setne  %al
  test   %al,%dl
  je     L3780
  cmp    0x8(%rsp),%r12w
  je     L3780
  xor    %edi,%edi
  cmp    0x10(%rsp),%r12w
  je     L8501
  cmp    0xc(%rsp),%r12w
  je     L8552
  test   %r11w,%r11w
  je     L8068
  mov    $0x19,%edi
  sub    %r11d,%edi
  movswl %di,%edi
L8068:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5319
  mov    $0x19,%r8d
  sub    %r12d,%r8d
  movswl %r8w,%r8d
L5319:
  movzwl 0x8(%rsp),%eax
  xor    %esi,%esi
  test   %ax,%ax
  je     L8372
  mov    $0x19,%esi
  sub    %eax,%esi
  movswl %si,%esi
L8372:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L4322
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L4322:
  movzwl 0x10(%rsp),%eax
  xor    %edx,%edx
  test   %ax,%ax
  je     L324
  mov    $0x19,%edx
  sub    %eax,%edx
  movswl %dx,%edx
L324:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L5320
  mov    $0x19,%eax
  sub    %r13d,%eax
  cwtl
L5320:
  movzwl 0xc(%rsp),%ebx
  xor    %ecx,%ecx
  test   %bx,%bx
  je     L6166
  mov    $0x19,%ecx
  sub    %ebx,%ecx
  movswl %cx,%ecx
L6166:
  xor    %r10d,%r10d
  test   %r14w,%r14w
  je     L8613
  mov    $0x19,%r10d
  sub    %r14d,%r10d
  movswl %r10w,%r10d
L8613:
  push   %r10
  push   %rax
L7661:
  xor    %eax,%eax
  call   <get_first_winning_move_3@plt>
  pop    %rdi
  pop    %r8
  cmp    $0xffff,%ax
  je     L2473
  test   %ax,%ax
  mov    $0x0,%eax
  cmovs  0x16(%rsp),%ax
  mov    %ax,0x16(%rsp)
L3780:
  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     L8469
  mov    %r14d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L8469
  lea    -0x1(%r14),%r10d
  cmp    %r12w,%r10w
  je     L8469
  cmp    %r15w,%r10w
  je     L8469
  cmp    %r13w,%r10w
  je     L8469
  cmp    %r11w,%r10w
  je     L8469
  cmp    0x8(%rsp),%r10w
  je     L8469
  cmp    0xc(%rsp),%r10w
  je     L8469
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L9454
  test   %r11w,%r11w
  je     L5911
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5911:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4912
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4912:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L3651
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L3651:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L6440
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L6440:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L410
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L410:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L5146
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L5146:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L2076
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L2076:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L952
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L952:
  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     L2473
  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    L8469
  nopw   0x0(%rax,%rax,1)
L7317:
  test   %r14w,%r14w
  je     L5833
  cmp    $0x14,%r14w
  jg     L5833
  mov    %r14d,%eax
  and    $0x8003,%ax
  cmp    $0x1,%ax
  je     L5833
  lea    0x3(%r14),%r10d
  cmp    %r12w,%r10w
  je     L5833
  cmp    %r15w,%r10w
  je     L5833
  cmp    %r13w,%r10w
  je     L5833
  cmp    %r11w,%r10w
  je     L5833
  cmp    0x8(%rsp),%r10w
  je     L5833
  cmp    0xc(%rsp),%r10w
  je     L5833
  xor    %edi,%edi
  cmp    0x10(%rsp),%r10w
  je     L3772
  test   %r11w,%r11w
  je     L8986
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8986:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2874
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L2874:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L1330
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1330:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L6960
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L6960:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L1604
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L1604:
  movl   $0x0,0x18(%rsp)
  test   %r13w,%r13w
  je     L7003
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
  mov    %eax,0x18(%rsp)
L7003:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L6027
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L6027:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L9901
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L9901:
  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     L2473
  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
L5833:
  cmp    $0xffff,%bx
  je     L3780
  sub    $0x1,%ebx
  jmp    L5033
L8818:
  test   %r11w,%r11w
  je     L5353
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5353:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L6179
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L6179:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L1814
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1814:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L5571
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L5571:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L8635
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L8635:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L371
  mov    $0x19,%edx
  sub    0xc(%rsp),%dx
  mov    %dx,0xc(%rsp)
  movswl %dx,%ecx
L371:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L582
  mov    $0x19,%edx
  sub    %r14d,%edx
  mov    %edx,%r14d
  movswl %dx,%edx
L582:
  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     L2473
  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    L8469
L2897:
  test   %r11w,%r11w
  je     L6060
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6060:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L2912
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L2912:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L9289
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L9289:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L4593
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L4593:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L7067
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L7067:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L4337
  mov    $0x19,%edx
  sub    0xc(%rsp),%dx
  mov    %dx,0xc(%rsp)
  movswl %dx,%ecx
L4337:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L9442
  mov    $0x19,%edx
  sub    %r14d,%edx
  mov    %edx,%r14d
  movswl %dx,%edx
L9442:
  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     L2473
  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    L8469
L848:
  test   %r11w,%r11w
  je     L7667
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7667:
  mov    $0x19,%eax
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  mov    %eax,%r8d
  sub    %r10d,%r8d
  test   %cx,%cx
  je     L8916
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L8916:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L5749
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L5749:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L7789
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L7789:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L4080
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L4080:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L9423
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L9423:
  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     L2473
  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    L8469
L6393:
  test   %r11w,%r11w
  je     L8966
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8966:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4185
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4185:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L6693
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6693:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L1336
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L1336:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L1996
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L1996:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L4026
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L4026:
  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     L2473
  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    L8469
L5130:
  test   %r11w,%r11w
  je     L7712
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7712:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L8467
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L8467:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L1165
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L1165:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L7187
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L7187:
  mov    $0x19,%esi
  xor    %ecx,%ecx
  mov    %esi,%eax
  sub    %r10d,%eax
  cmpw   $0x0,0xc(%rsp)
  je     L9867
  sub    0xc(%rsp),%si
  mov    %si,0xc(%rsp)
  movswl %si,%ecx
L9867:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L3126
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L3126:
  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     L2473
  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    L8469
L2749:
  test   %r11w,%r11w
  je     L8522
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8522:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4598
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4598:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L9059
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L9059:
  mov    $0x19,%eax
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  mov    %eax,%r9d
  sub    %r10d,%r9d
  test   %cx,%cx
  je     L6061
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L6061:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L673
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L673:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L4434
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L4434:
  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     L2473
  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    L8469
L6605:
  test   %r11w,%r11w
  je     L780
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L780:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2648
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L2648:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L1538
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1538:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L8826
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L8826:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L5478
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L5478:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L2122
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L2122:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L2318
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L2318:
  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     L2473
  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    L8469
L4382:
  test   %r11w,%r11w
  je     L6353
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6353:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L8227
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L8227:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L4868
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L4868:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L3791
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L3791:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L8335
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L8335:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L4059
  mov    $0x19,%edx
  sub    0xc(%rsp),%dx
  mov    %dx,0xc(%rsp)
  movswl %dx,%ecx
L4059:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L8959
  mov    $0x19,%edx
  sub    %r14d,%edx
  mov    %edx,%r14d
  movswl %dx,%edx
L8959:
  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     L2473
  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    L8469
L6753:
  test   %r11w,%r11w
  je     L4957
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L4957:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L9833
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L9833:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L4173
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L4173:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L5746
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L5746:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L7035
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L7035:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L1124
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L1124:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L7829
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L7829:
  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     L2473
  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    L8469
L2935:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L8600
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L8600:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L8548
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L8548:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L1067
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L1067:
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  test   %di,%di
  je     L4676
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4676:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L9187
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L9187:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L2757
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L2757:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L5374
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L5374:
  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     L2473
  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    L8469
L8552:
  test   %r11w,%r11w
  je     L8951
  mov    $0x19,%edi
  sub    %r11d,%edi
  movswl %di,%edi
L8951:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L6668
  mov    $0x19,%r8d
  sub    %r12d,%r8d
  movswl %r8w,%r8d
L6668:
  movzwl 0x8(%rsp),%eax
  xor    %esi,%esi
  test   %ax,%ax
  je     L9697
  mov    $0x19,%esi
  sub    %eax,%esi
  movswl %si,%esi
L9697:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L7405
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L7405:
  movzwl 0x10(%rsp),%eax
  xor    %edx,%edx
  test   %ax,%ax
  je     L6847
  mov    $0x19,%edx
  sub    %eax,%edx
  movswl %dx,%edx
L6847:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L300
  mov    $0x19,%eax
  sub    %r13d,%eax
  cwtl
L300:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L86
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  movswl %cx,%ecx
L86:
  push   %rcx
  xor    %ecx,%ecx
  push   %rax
  jmp    L7661
L4815:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L3618
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L3618:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L3753
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L3753:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L6292
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L6292:
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  test   %di,%di
  je     L222
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L222:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L5639
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L5639:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L598
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L598:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L4615
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L4615:
  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     L2473
  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    L8469
L4811:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5793
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L5793:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L1013
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1013:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L1225
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L1225:
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  test   %di,%di
  je     L5881
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L5881:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L3650
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L3650:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L3263
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L3263:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L9981
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L9981:
  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     L2473
  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    L8469
L5637:
  test   %r11w,%r11w
  je     L7772
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7772:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L6767
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L6767:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L6010
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L6010:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L2284
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2284:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L7477
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L7477:
  movzwl 0xc(%rsp),%esi
  xor    %ecx,%ecx
  test   %si,%si
  je     L6201
  mov    $0x19,%ecx
  sub    %esi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L6201:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L8583
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L8583:
  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     L2473
  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    L8469
L2473:
  mov    $0xffffffff,%esi
  mov    %si,0x16(%rsp)
  jmp    L3780
L4806:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L1957
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L1957:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L1059
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1059:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L737
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L737:
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  test   %di,%di
  je     L7839
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L7839:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L6761
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L6761:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L6413
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L6413:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L4232
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L4232:
  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     L2473
  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    L8469
L8501:
  test   %r11w,%r11w
  je     L2204
  mov    $0x19,%edi
  sub    %r11d,%edi
  movswl %di,%edi
L2204:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L442
  mov    $0x19,%r8d
  sub    %r12d,%r8d
  movswl %r8w,%r8d
L442:
  movzwl 0x8(%rsp),%eax
  xor    %esi,%esi
  test   %ax,%ax
  je     L3432
  mov    $0x19,%esi
  sub    %eax,%esi
  movswl %si,%esi
L3432:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L9994
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L9994:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L3171
  mov    $0x19,%eax
  sub    %r13d,%eax
  cwtl
L3171:
  movzwl 0xc(%rsp),%edx
  xor    %ecx,%ecx
  test   %dx,%dx
  je     L5240
  mov    $0x19,%ecx
  sub    %edx,%ecx
  movswl %cx,%ecx
L5240:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L8087
  mov    $0x19,%edx
  sub    %r14d,%edx
  movswl %dx,%edx
L8087:
  push   %rdx
  xor    %edx,%edx
  push   %rax
  jmp    L7661
L3338:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L8963
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L8963:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L2474
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L2474:
  mov    $0x19,%eax
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  mov    %eax,%r9d
  sub    %r10d,%r9d
  test   %di,%di
  je     L3173
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L3173:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L254
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L254:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L9137
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L9137:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L7195
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L7195:
  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     L2473
  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    L8469
L3345:
  test   %r11w,%r11w
  je     L928
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L928:
  mov    $0x19,%eax
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  mov    %eax,%r8d
  sub    %r10d,%r8d
  test   %cx,%cx
  je     L8597
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L8597:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L3657
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L3657:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L7968
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L7968:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L5817
  mov    $0x19,%edx
  sub    0xc(%rsp),%dx
  mov    %dx,0xc(%rsp)
  movswl %dx,%ecx
L5817:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L6531
  mov    $0x19,%edx
  sub    %r14d,%edx
  mov    %edx,%r14d
  movswl %dx,%edx
L6531:
  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     L2473
  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    L8469
L4158:
  mov    $0xfffffffe,%eax
  mov    %ax,0x16(%rsp)
  jmp    L3780
L459:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L9913
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L9913:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L2013
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L2013:
  mov    $0x19,%eax
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  mov    %eax,%r9d
  sub    %r10d,%r9d
  test   %di,%di
  je     L359
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L359:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L5785
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L5785:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L555
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L555:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L3463
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L3463:
  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     L2473
  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    L8469
L2824:
  test   %r11w,%r11w
  je     L4953
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L4953:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5433
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L5433:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L5246
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L5246:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L3054
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L3054:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L919
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L919:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L9594
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L9594:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L4742
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L4742:
  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     L2473
  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    L8469
L327:
  test   %r11w,%r11w
  je     L7595
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7595:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2889
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L2889:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L9995
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L9995:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L3923
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L3923:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L5920
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L5920:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L8122
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L8122:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L5818
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L5818:
  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     L2473
  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    L8469
L1471:
  test   %r11w,%r11w
  je     L4429
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L4429:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L8846
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L8846:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L728
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L728:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L7000
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L7000:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L1357
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L1357:
  movzwl 0xc(%rsp),%esi
  xor    %ecx,%ecx
  test   %si,%si
  je     L738
  mov    $0x19,%ecx
  sub    %esi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L738:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L7758
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L7758:
  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     L2473
  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    L8469
L36:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L7942
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L7942:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L4624
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L4624:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L9233
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L9233:
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  test   %di,%di
  je     L8599
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L8599:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L8543
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L8543:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L6424
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L6424:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L1072
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L1072:
  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     L2473
  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    L8469
L3398:
  test   %r11w,%r11w
  je     L6801
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6801:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L468
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L468:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L6327
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L6327:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L698
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L698:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L1956
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L1956:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L5294
  mov    $0x19,%edx
  sub    0xc(%rsp),%dx
  mov    %dx,0xc(%rsp)
  movswl %dx,%ecx
L5294:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L2293
  mov    $0x19,%edx
  sub    %r14d,%edx
  mov    %edx,%r14d
  movswl %dx,%edx
L2293:
  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     L2473
  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    L8469
L3772:
  test   %r11w,%r11w
  je     L155
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L155:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L349
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L349:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L3001
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L3001:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L6656
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L6656:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L5755
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L5755:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L2735
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L2735:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L2498
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L2498:
  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     L2473
  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    L5833
L1611:
  test   %r11w,%r11w
  je     L3042
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L3042:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L8996
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L8996:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L8045
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L8045:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L6860
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L6860:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L7398
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L7398:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L7082
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L7082:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L1970
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L1970:
  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     L2473
  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    L8469
L8053:
  test   %r11w,%r11w
  je     L8836
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8836:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L6630
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L6630:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L2286
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L2286:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L2026
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2026:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L3419
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L3419:
  movzwl 0xc(%rsp),%esi
  xor    %ecx,%ecx
  test   %si,%si
  je     L7063
  mov    $0x19,%ecx
  sub    %esi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L7063:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L703
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L703:
  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     L2473
  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    L8469
L7698:
  test   %r11w,%r11w
  je     L9379
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9379:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2892
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L2892:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L7708
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L7708:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L3258
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L3258:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L6975
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L6975:
  movzwl 0xc(%rsp),%esi
  xor    %ecx,%ecx
  test   %si,%si
  je     L4487
  mov    $0x19,%ecx
  sub    %esi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L4487:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L8093
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L8093:
  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     L2473
  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    L8469
L4937:
  test   %r11w,%r11w
  je     L5438
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5438:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L8682
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L8682:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L3679
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L3679:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L1122
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L1122:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L8874
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L8874:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L6477
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L6477:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L3230
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L3230:
  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     L2473
  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    L8469
L6633:
  test   %r11w,%r11w
  je     L1816
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L1816:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L9404
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L9404:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L5260
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L5260:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L2661
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L2661:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L7274
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L7274:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L5237
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L5237:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L1116
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L1116:
  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     L2473
  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    L8469
L681:
  test   %r11w,%r11w
  je     L10062
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L10062:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L5539
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L5539:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L7362
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L7362:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L5922
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L5922:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4929
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4929:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L2569
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L2569:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L8014
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L8014:
  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     L2473
  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    L8469
L9206:
  test   %r11w,%r11w
  je     L7808
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7808:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L1425
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L1425:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L7028
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L7028:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L564
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L564:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4558
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4558:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L8089
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L8089:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L1356
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L1356:
  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     L2473
  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    L8469
L5258:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L3866
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L3866:
  movzwl 0x8(%rsp),%edi
  xor    %esi,%esi
  test   %di,%di
  je     L9538
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L9538:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L7791
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L7791:
  movzwl 0x10(%rsp),%edi
  xor    %edx,%edx
  test   %di,%di
  je     L1147
  mov    $0x19,%eax
  sub    %edi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L1147:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L8557
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L8557:
  movzwl 0xc(%rsp),%edi
  xor    %ecx,%ecx
  test   %di,%di
  je     L6236
  mov    $0x19,%ecx
  sub    %edi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L6236:
  xor    %edi,%edi
  test   %r14w,%r14w
  je     L6173
  mov    $0x19,%edi
  sub    %r14d,%edi
  mov    %edi,%r14d
  movswl %di,%edi
L6173:
  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     L2473
  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    L8469
L3254:
  test   %r11w,%r11w
  je     L3106
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L3106:
  mov    $0x19,%eax
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  mov    %eax,%r8d
  sub    %r10d,%r8d
  test   %cx,%cx
  je     L944
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L944:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L7201
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L7201:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L2667
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L2667:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L1841
  mov    $0x19,%edx
  sub    0xc(%rsp),%dx
  mov    %dx,0xc(%rsp)
  movswl %dx,%ecx
L1841:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L9281
  mov    $0x19,%edx
  sub    %r14d,%edx
  mov    %edx,%r14d
  movswl %dx,%edx
L9281:
  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     L2473
  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    L8469
L1436:
  test   %r11w,%r11w
  je     L6034
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L6034:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L9109
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L9109:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L9292
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L9292:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L1663
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L1663:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L547
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L547:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L4057
  mov    $0x19,%edx
  sub    0xc(%rsp),%dx
  mov    %dx,0xc(%rsp)
  movswl %dx,%ecx
L4057:
  xor    %edx,%edx
  test   %r14w,%r14w
  je     L1953
  mov    $0x19,%edx
  sub    %r14d,%edx
  mov    %edx,%r14d
  movswl %dx,%edx
L1953:
  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     L2473
  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    L8469
L9454:
  test   %r11w,%r11w
  je     L7923
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L7923:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L3535
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L3535:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L5611
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L5611:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L346
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L346:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L1394
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L1394:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L1942
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L1942:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L7939
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L7939:
  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     L2473
  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    L8469
L2869:
  test   %r11w,%r11w
  je     L8425
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8425:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L7813
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L7813:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L633
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L633:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L2885
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L2885:
  mov    $0x19,%esi
  xor    %ecx,%ecx
  mov    %esi,%eax
  sub    %r10d,%eax
  cmpw   $0x0,0xc(%rsp)
  je     L4984
  sub    0xc(%rsp),%si
  mov    %si,0xc(%rsp)
  movswl %si,%ecx
L4984:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L5138
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L5138:
  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     L2473
  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    L8469
L892:
  test   %r11w,%r11w
  je     L9725
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9725:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L6985
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L6985:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L61
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L61:
  mov    $0x19,%eax
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  mov    %eax,%r9d
  sub    %r10d,%r9d
  test   %cx,%cx
  je     L1328
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L1328:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L3664
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L3664:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L8546
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L8546:
  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     L2473
  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    L8469
L8841:
  test   %r11w,%r11w
  je     L624
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L624:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L10073
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L10073:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L3069
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L3069:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L2257
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L2257:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L6088
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L6088:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L4856
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L4856:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L303
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L303:
  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     L2473
  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    L8469
L6674:
  test   %r11w,%r11w
  je     L3108
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L3108:
  mov    $0x19,%eax
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  mov    %eax,%r8d
  sub    %r10d,%r8d
  test   %cx,%cx
  je     L7669
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L7669:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L4356
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L4356:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4209
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4209:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L2102
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L2102:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L2021
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L2021:
  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     L2473
  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    L8469
L7056:
  test   %r11w,%r11w
  je     L4024
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L4024:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L4599
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L4599:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L4230
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L4230:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L1579
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L1579:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L6546
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L6546:
  movzwl 0xc(%rsp),%esi
  xor    %ecx,%ecx
  test   %si,%si
  je     L8364
  mov    $0x19,%ecx
  sub    %esi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L8364:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L3066
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L3066:
  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     L2473
  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    L8469
L1016:
  test   %r11w,%r11w
  je     L8426
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8426:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L6650
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L6650:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L7830
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L7830:
  movzwl 0x10(%rsp),%esi
  xor    %edx,%edx
  test   %si,%si
  je     L3975
  mov    $0x19,%eax
  sub    %esi,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L3975:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L2283
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L2283:
  movzwl 0xc(%rsp),%esi
  xor    %ecx,%ecx
  test   %si,%si
  je     L1181
  mov    $0x19,%ecx
  sub    %esi,%ecx
  mov    %cx,0xc(%rsp)
  movswl %cx,%ecx
L1181:
  xor    %esi,%esi
  test   %r14w,%r14w
  je     L7675
  mov    $0x19,%esi
  sub    %r14d,%esi
  mov    %esi,%r14d
  movswl %si,%esi
L7675:
  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     L2473
  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    L8469
L5060:
  test   %r11w,%r11w
  je     L9
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L9:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L2130
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L2130:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L3827
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L3827:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L1262
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L1262:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L1570
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L1570:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L9272
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L9272:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L6031
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L6031:
  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     L2473
  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    L8469
L6279:
  test   %r11w,%r11w
  je     L4233
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L4233:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L3913
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L3913:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L565
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L565:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L1249
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L1249:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L9445
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L9445:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L8397
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L8397:
  xor    %eax,%eax
  test   %r10w,%r10w
  je     L1195
  mov    $0x19,%eax
  sub    %r10d,%eax
  cwtl
L1195:
  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     L2473
  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    L8469
L5363:
  test   %r11w,%r11w
  je     L5077
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5077:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L1713
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L1713:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L2787
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L2787:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L1810
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L1810:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L1010
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L1010:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L5597
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L5597:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L1881
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L1881:
  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     L2473
  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    L8469
L6340:
  test   %r11w,%r11w
  je     L3881
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L3881:
  xor    %r8d,%r8d
  test   %r10w,%r10w
  je     L7371
  mov    $0x19,%r8d
  sub    %r10d,%r8d
  movswl %r8w,%r8d
L7371:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L1755
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L1755:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L4603
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L4603:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L4969
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L4969:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L2432
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L2432:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L856
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L856:
  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     L2473
  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    L8469
L969:
  test   %r11w,%r11w
  je     L8757
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L8757:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L8576
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L8576:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L5819
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L5819:
  xor    %r9d,%r9d
  test   %r10w,%r10w
  je     L7670
  mov    $0x19,%r9d
  sub    %r10d,%r9d
  movswl %r9w,%r9d
L7670:
  movzwl 0x10(%rsp),%ecx
  xor    %edx,%edx
  test   %cx,%cx
  je     L9755
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x10(%rsp)
  movswl %ax,%edx
L9755:
  xor    %eax,%eax
  test   %r13w,%r13w
  je     L6644
  mov    $0x19,%eax
  sub    %r13d,%eax
  mov    %eax,%r13d
  cwtl
L6644:
  xor    %ecx,%ecx
  test   %r14w,%r14w
  je     L9664
  mov    $0x19,%ecx
  sub    %r14d,%ecx
  mov    %ecx,%r14d
  movswl %cx,%ecx
L9664:
  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     L2473
  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    L8469
L3824:
  test   %r11w,%r11w
  je     L5934
  mov    $0x19,%eax
  sub    %r11d,%eax
  movswl %ax,%edi
  mov    %edi,%r11d
L5934:
  xor    %r8d,%r8d
  test   %r12w,%r12w
  je     L5925
  mov    $0x19,%eax
  sub    %r12d,%eax
  movswl %ax,%r8d
  mov    %r8d,%r12d
L5925:
  movzwl 0x8(%rsp),%ecx
  xor    %esi,%esi
  test   %cx,%cx
  je     L7668
  mov    $0x19,%eax
  sub    %ecx,%eax
  mov    %ax,0x8(%rsp)
  movswl %ax,%esi
L7668:
  xor    %r9d,%r9d
  test   %r15w,%r15w
  je     L6041
  mov    $0x19,%eax
  sub    %r15d,%eax
  movswl %ax,%r9d
  mov    %r9d,%r15d
L6041:
  xor    %edx,%edx
  test   %r13w,%r13w
  je     L913
  mov    $0x19,%eax
  sub    %r13d,%eax
  movswl %ax,%edx
  mov    %edx,%r13d
L913:
  xor    %ecx,%ecx
  cmpw   $0x0,0xc(%rsp)
  je     L2821
  mov    $0x19,%eax
  sub    0xc(%rsp),%ax
  mov    %ax,0xc(%rsp)
  movswl %ax,%ecx
L2821:
  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     L2473
  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    L8469
```

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;
}
```