// File: /workspace/github_cpp_makefile_star2_O1/kobanium[P]Ray/src/feature/UctFeature.cpp
// Function: CheckFeaturesForTree(game_info_t const*, int, unsigned int*)
int
CheckFeaturesForTree( const game_info_t *game, const int color, unsigned int *tactical_features )
{
  const char *board = game->board;
  const string_t *string = game->string;
  const int *string_id = game->string_id;
  int status = 0;
  int checked = 0, previous_move = PASS, id;
  int neighbor4[4], check[4] = { 0 };
  bool ladder, already_checked;

  if (game->moves > 1) previous_move = game->record[game->moves - 1].pos;

  if (previous_move == PASS) return status;

  GetNeighbor4(neighbor4, previous_move);

  for (int i = 0; i < 4; i++) {
    if (board[neighbor4[i]] == color) {
      id = string_id[neighbor4[i]];
      already_checked = false;
      for (int j = 0; j < checked; j++) {
        if (check[j] == id) {
          already_checked = true;
          break;
        }
      }
      if (already_checked) continue;
      if (string[id].libs == 1) {
        ladder = CheckLadderExtension(game, color, neighbor4[i]);
        CheckFeaturesLib1ForTree(game, color, id, ladder, tactical_features);
        status = MOVE_DISTANCE_MAX * 3;
      } else if (string[id].libs == 2) {
        CheckFeaturesLib2ForTree(game, color, id, tactical_features);
        status = (status <= MOVE_DISTANCE_MAX * 1) ? MOVE_DISTANCE_MAX * 2 : status;
      } else if (string[id].libs == 3) {
        CheckFeaturesLib3ForTree(game, color, id, tactical_features);
        status = (status <= MOVE_DISTANCE_MAX * 0) ? MOVE_DISTANCE_MAX * 1 : status;
      }
      check[checked++] = id;
    }
  }

  return status;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rdx, %r15
movl %esi, 0x4(%rsp)
movq %rdi, %rbx
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
movl 0x43b0(%rdi), %eax
movl $0x0, 0x28(%rsp)
movl $0x0, %esi
cmpl $0x2, %eax
jl 0x5973a
decl %eax
shlq $0x4, %rax
movl 0x4(%rbx,%rax), %esi
testl %esi, %esi
je 0x5a7ff
leaq 0x9620(%rbx), %rax
movq %rax, 0x8(%rsp)
leaq 0x60(%rsp), %rdi
callq 0x53e40
xorl %ebp, %ebp
movl $0x0, 0x28(%rsp)
xorl %r13d, %r13d
movq %r15, 0x20(%rsp)
movq %rbx, 0x18(%rsp)
movslq 0x60(%rsp,%rbp,4), %rdx
movsbl 0x43f8(%rbx,%rdx), %eax
cmpl 0x4(%rsp), %eax
jne 0x5a5d1
movl 0x95720(%rbx,%rdx,4), %edi
testl %r13d, %r13d
movq 0x8(%rsp), %rsi
jle 0x597ae
movl %r13d, %eax
xorl %ecx, %ecx
cmpl %edi, 0x50(%rsp,%rcx,4)
je 0x5a5d1
incq %rcx
cmpq %rcx, %rax
jne 0x5979c
movl %edi, 0x30(%rsp)
movslq %edi, %rax
imulq $0x7c8, %rax, %r12      # imm = 0x7C8
movl 0x4(%rsi,%r12), %eax
cmpl $0x3, %eax
je 0x598c7
cmpl $0x2, %eax
je 0x59820
cmpl $0x1, %eax
jne 0x5a5c3
movq %rbx, %rdi
movl 0x4(%rsp), %esi
callq 0x5c4a2
movq 0x8(%rsp), %rsi
leaq (%rsi,%r12), %r14
movswq 0x8(%rsi,%r12), %rcx
testb %al, %al
je 0x59996
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x3, 0x4(%r15,%rax,4)
ja 0x5a607
movl $0x4, 0x4(%r15,%rax,4)
jmp 0x5a607
movl %r13d, 0x2c(%rsp)
movq %rbp, 0x48(%rsp)
leaq (%rsi,%r12), %rcx
movswl 0x8(%rsi,%r12), %eax
movslq %eax, %r13
movq %rcx, 0x10(%rsp)
movswl 0x8(%rcx,%r13,2), %eax
movl %eax, 0x34(%rsp)
movq %rbx, %rdi
movl %r13d, %esi
movq %rbx, %r14
movl 0x4(%rsp), %ebx
movl %ebx, %edx
movl 0x30(%rsp), %r12d
movl %r12d, %ecx
callq 0x5b250
movl %eax, %ebp
movq %r14, %rdi
movl 0x34(%rsp), %r14d
movl %r14d, %esi
movl %ebx, %edx
movl %r12d, %ecx
callq 0x5b250
cmpl $0x2, %ebp
je 0x59a01
cmpl $0x1, %ebp
je 0x599d4
testl %ebp, %ebp
movq 0x18(%rsp), %rbx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
jne 0x59a2c
leaq (,%r13,8), %rcx
subq %r13, %rcx
cmpl $0x1, 0xc(%r15,%rcx,4)
ja 0x59a2c
movl $0x2, 0xc(%r15,%rcx,4)
jmp 0x59a2c
movl %r13d, 0x2c(%rsp)
movq %rbp, 0x48(%rsp)
leaq (%rsi,%r12), %rcx
movswl 0x8(%rsi,%r12), %eax
movslq %eax, %rsi
movswl 0x8(%rcx,%rsi,2), %eax
movslq %eax, %rbp
movq %rcx, 0x10(%rsp)
movswl 0x8(%rcx,%rbp,2), %eax
movl %eax, 0x34(%rsp)
movq %rbx, %rdi
movq %rsi, 0x38(%rsp)
movq %rbx, %r13
movl 0x4(%rsp), %ebx
movl %ebx, %edx
movl 0x30(%rsp), %r12d
movl %r12d, %ecx
callq 0x5b250
movl %eax, %r14d
movq %r13, %rdi
movq %rbp, 0x40(%rsp)
movl %ebp, %esi
movl %ebx, %edx
movl %r12d, %ecx
callq 0x5b250
movl %eax, %ebp
movq %r13, %rdi
movl 0x34(%rsp), %r13d
movl %r13d, %esi
movl %ebx, %edx
movl %r12d, %ecx
callq 0x5b250
cmpl $0x2, %r14d
je 0x59ed0
cmpl $0x1, %r14d
je 0x59a81
testl %r14d, %r14d
movq 0x18(%rsp), %rbx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
jne 0x59f00
movq 0x38(%rsp), %rdx
leaq (,%rdx,8), %rcx
subq %rdx, %rcx
cmpl $0x0, 0xc(%r15,%rcx,4)
jne 0x59f00
movl $0x1, 0xc(%r15,%rcx,4)
jmp 0x59f00
movl 0x7c0(%r14), %edx
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x2, %edx
je 0x5a5e3
cmpl $0x1, %edx
jne 0x5a5f6
cmpl $0x0, 0x4(%r15,%rax,4)
jne 0x5a607
movl $0x1, 0x4(%r15,%rax,4)
jmp 0x5a607
leaq (,%r13,8), %rcx
subq %r13, %rcx
cmpl $0x3, 0xc(%r15,%rcx,4)
movq 0x18(%rsp), %rbx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x59a2c
movl $0x4, 0xc(%r15,%rcx,4)
jmp 0x59a2c
leaq (,%r13,8), %rcx
subq %r13, %rcx
cmpl $0x5, 0xc(%r15,%rcx,4)
movq 0x18(%rsp), %rbx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x59a2c
movl $0x6, 0xc(%r15,%rcx,4)
movslq %r14d, %rcx
cmpl $0x2, %eax
je 0x59aba
cmpl $0x1, %eax
je 0x59a63
testl %eax, %eax
jne 0x59ad6
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x1, 0xc(%r15,%rax,4)
ja 0x59ad6
movl $0x2, 0xc(%r15,%rax,4)
jmp 0x59ad6
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x3, 0xc(%r15,%rax,4)
ja 0x59ad6
movl $0x4, 0xc(%r15,%rax,4)
jmp 0x59ad6
movq 0x38(%rsp), %rdx
leaq (,%rdx,8), %rcx
subq %rdx, %rcx
cmpl $0x2, 0xc(%r15,%rcx,4)
movq 0x18(%rsp), %rbx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x59f00
movl $0x3, 0xc(%r15,%rcx,4)
jmp 0x59f00
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x5, 0xc(%r15,%rax,4)
ja 0x59ad6
movl $0x6, 0xc(%r15,%rax,4)
movswl 0x57c(%rsi), %eax
cmpl $0x3, 0x7c0(%rsi)
jge 0x59cd1
cmpl $0x11f, %eax            # imm = 0x11F
je 0x59ebc
movslq %eax, %r13
imulq $0x7c8, %r13, %rax      # imm = 0x7C8
leaq (%rdx,%rax), %rbp
movl 0x4(%rdx,%rax), %eax
cmpl $0x2, %eax
je 0x59b48
cmpl $0x1, %eax
jne 0x59cc3
movswq 0x8(%rbp), %rcx
leaq (%rcx,%rcx,8), %rax
leaq (%rax,%rax,2), %rax
addq %rcx, %rax
cmpl $0x2, 0x7c0(%rbp)
movl (%r15,%rax), %ecx
jg 0x59ba2
cmpl $0x8, %ecx
ja 0x59cc3
movl $0x9, (%r15,%rax)
jmp 0x59cc3
movswl 0x8(%rbp), %eax
movslq %eax, %r14
movswl 0x8(%rbp,%r14,2), %eax
movslq %eax, %r12
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl 0x7c0(%rbp), %ebx
movl %r14d, %esi
movl 0x4(%rsp), %edx
callq 0x5ae04
leaq (,%r14,8), %rcx
subq %r14, %rcx
movl 0x8(%r15,%rcx,4), %edx
cmpl $0x2, %ebx
jg 0x59bb8
testb %al, %al
je 0x59bd2
movl $0xb, %eax
cmpl $0xb, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x59be6
jmp 0x59beb
cmpl $0xa, %ecx
ja 0x59cc3
movl $0xb, (%r15,%rax)
jmp 0x59cc3
testb %al, %al
je 0x59c35
movl $0xd, %eax
cmpl $0xd, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x59c49
jmp 0x59c4e
movl $0x3, %eax
cmpl $0x2, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x59beb
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5ae04
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x59c91
cmpl $0xa, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x59cc3
movl $0xb, 0x8(%r15,%rcx,4)
jmp 0x59cc3
movl $0x5, %eax
cmpl $0x4, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x59c4e
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5ae04
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x59cab
cmpl $0xc, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x59cc3
movl $0xd, 0x8(%r15,%rcx,4)
jmp 0x59cc3
cmpl $0x2, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x59cc3
movl $0x3, 0x8(%r15,%rcx,4)
jmp 0x59cc3
cmpl $0x4, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x59cc3
movl $0x5, 0x8(%r15,%rcx,4)
movswl 0x57c(%rsi,%r13,2), %eax
jmp 0x59aea
cmpl $0x11f, %eax            # imm = 0x11F
je 0x59ebc
movslq %eax, %r13
imulq $0x7c8, %r13, %rax      # imm = 0x7C8
leaq (%rdx,%rax), %rbp
movl 0x4(%rdx,%rax), %eax
cmpl $0x2, %eax
je 0x59d2f
cmpl $0x1, %eax
jne 0x59eae
movswq 0x8(%rbp), %rcx
leaq (%rcx,%rcx,8), %rax
leaq (%rax,%rax,2), %rax
addq %rcx, %rax
cmpl $0x2, 0x7c0(%rbp)
movl (%r15,%rax), %ecx
jg 0x59d8d
cmpl $0xc, %ecx
ja 0x59eae
movl $0xd, (%r15,%rax)
jmp 0x59eae
movswl 0x8(%rbp), %eax
movslq %eax, %r14
movswl 0x8(%rbp,%r14,2), %eax
movslq %eax, %r12
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movq %r15, %rbx
movl 0x7c0(%rbp), %r15d
movl %r14d, %esi
movl 0x4(%rsp), %edx
callq 0x5ae04
leaq (,%r14,8), %rcx
subq %r14, %rcx
movl 0x8(%rbx,%rcx,4), %edx
cmpl $0x2, %r15d
jg 0x59da3
testb %al, %al
je 0x59dbd
movl $0xf, %eax
cmpl $0xf, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x59dd1
jmp 0x59dd6
cmpl $0xd, %ecx
ja 0x59eae
movl $0xe, (%r15,%rax)
jmp 0x59eae
testb %al, %al
je 0x59e20
movl $0x11, %eax
cmpl $0x11, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x59e34
jmp 0x59e39
movl $0x7, %eax
cmpl $0x6, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x59dd6
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5ae04
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x59e7c
cmpl $0xe, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x59eae
movl $0xf, 0x8(%r15,%rcx,4)
jmp 0x59eae
movl $0x9, %eax
cmpl $0x8, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x59e39
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5ae04
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x59e96
cmpl $0x10, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x59eae
movl $0x11, 0x8(%r15,%rcx,4)
jmp 0x59eae
cmpl $0x6, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x59eae
movl $0x7, 0x8(%r15,%rcx,4)
jmp 0x59eae
cmpl $0x8, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x59eae
movl $0x9, 0x8(%r15,%rcx,4)
movswl 0x57c(%rsi,%r13,2), %eax
jmp 0x59cd1
movl 0x28(%rsp), %ecx
cmpl $0x11, %ecx
movl $0x20, %eax
cmovll %eax, %ecx
jmp 0x5a5b5
movq 0x38(%rsp), %rdx
leaq (,%rdx,8), %rcx
subq %rdx, %rcx
cmpl $0x4, 0xc(%r15,%rcx,4)
movq 0x18(%rsp), %rbx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x59f00
movl $0x5, 0xc(%r15,%rcx,4)
cmpl $0x2, %ebp
je 0x59f54
cmpl $0x1, %ebp
je 0x59f31
testl %ebp, %ebp
jne 0x59f75
movq 0x40(%rsp), %rdx
leaq (,%rdx,8), %rcx
subq %rdx, %rcx
cmpl $0x0, 0xc(%r15,%rcx,4)
jne 0x59f75
movl $0x1, 0xc(%r15,%rcx,4)
jmp 0x59f75
movq 0x40(%rsp), %rdx
leaq (,%rdx,8), %rcx
subq %rdx, %rcx
cmpl $0x2, 0xc(%r15,%rcx,4)
ja 0x59f75
movl $0x3, 0xc(%r15,%rcx,4)
jmp 0x59f75
movq 0x40(%rsp), %rdx
leaq (,%rdx,8), %rcx
subq %rdx, %rcx
cmpl $0x4, 0xc(%r15,%rcx,4)
ja 0x59f75
movl $0x5, 0xc(%r15,%rcx,4)
movslq %r13d, %rcx
cmpl $0x2, %eax
je 0x59fc2
cmpl $0x1, %eax
je 0x59fa4
testl %eax, %eax
jne 0x59fde
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x0, 0xc(%r15,%rax,4)
jne 0x59fde
movl $0x1, 0xc(%r15,%rax,4)
jmp 0x59fde
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x2, 0xc(%r15,%rax,4)
ja 0x59fde
movl $0x3, 0xc(%r15,%rax,4)
jmp 0x59fde
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x4, 0xc(%r15,%rax,4)
ja 0x59fde
movl $0x5, 0xc(%r15,%rax,4)
movswl 0x57c(%r8), %eax
cmpl $0x3, 0x7c0(%r8)
jge 0x5a2cd
cmpl $0x11f, %eax            # imm = 0x11F
je 0x5a5a7
movslq %eax, %r13
imulq $0x7c8, %r13, %rax      # imm = 0x7C8
leaq (%rdi,%rax), %rbp
movl 0x4(%rdi,%rax), %eax
cmpl $0x3, %eax
je 0x5a0cc
cmpl $0x2, %eax
je 0x5a05f
cmpl $0x1, %eax
jne 0x5a2bf
movswq 0x8(%rbp), %rcx
leaq (%rcx,%rcx,8), %rax
leaq (%rax,%rax,2), %rax
addq %rcx, %rax
cmpl $0x2, 0x7c0(%rbp)
movl (%r15,%rax), %ecx
jg 0x5a1b8
cmpl $0x7, %ecx
ja 0x5a2bf
movl $0x8, (%r15,%rax)
jmp 0x5a2bf
movswl 0x8(%rbp), %eax
movslq %eax, %r14
movswl 0x8(%rbp,%r14,2), %eax
movslq %eax, %r12
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movq %r15, %rbx
movl 0x7c0(%rbp), %r15d
movl %r14d, %esi
movl 0x4(%rsp), %edx
callq 0x5ae04
leaq (,%r14,8), %rcx
subq %r14, %rcx
movl 0x8(%rbx,%rcx,4), %edx
cmpl $0x2, %r15d
jg 0x5a144
testb %al, %al
je 0x5a1ce
movl $0xa, %eax
cmpl $0xa, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x5a1e2
jmp 0x5a1e7
movswq 0x8(%rbp), %rsi
movswq 0x8(%rbp,%rsi,2), %rcx
movswq 0x8(%rbp,%rcx,2), %rax
leaq (%rsi,%rsi,8), %rdx
leaq (%rdx,%rdx,2), %rdx
addq %rsi, %rdx
cmpl $0x2, 0x7c0(%rbp)
movl 0x10(%r15,%rdx), %esi
jg 0x5a169
testl %esi, %esi
jne 0x5a103
movl $0x1, 0x10(%r15,%rdx)
leaq (,%rcx,8), %rdx
subq %rcx, %rdx
cmpl $0x0, 0x10(%r15,%rdx,4)
jne 0x5a11f
movl $0x1, 0x10(%r15,%rdx,4)
leaq (,%rax,8), %rcx
subq %rax, %rcx
cmpl $0x0, 0x10(%r15,%rcx,4)
jne 0x5a2bf
movl $0x1, 0x10(%r15,%rcx,4)
jmp 0x5a2bf
testb %al, %al
je 0x5a231
movl $0xc, %eax
cmpl $0xc, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x5a245
jmp 0x5a24a
cmpl $0x1, %esi
ja 0x5a177
movl $0x2, 0x10(%r15,%rdx)
leaq (,%rcx,8), %rdx
subq %rcx, %rdx
cmpl $0x1, 0x10(%r15,%rdx,4)
ja 0x5a193
movl $0x2, 0x10(%r15,%rdx,4)
leaq (,%rax,8), %rcx
subq %rax, %rcx
cmpl $0x1, 0x10(%r15,%rcx,4)
ja 0x5a2bf
movl $0x2, 0x10(%r15,%rcx,4)
jmp 0x5a2bf
cmpl $0x9, %ecx
ja 0x5a2bf
movl $0xa, (%r15,%rax)
jmp 0x5a2bf
movl $0x2, %eax
cmpl $0x1, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x5a1e7
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5ae04
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x5a28d
cmpl $0x9, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5a2bf
movl $0xa, 0x8(%r15,%rcx,4)
jmp 0x5a2bf
movl $0x4, %eax
cmpl $0x3, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x5a24a
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5ae04
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x5a2a7
cmpl $0xb, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5a2bf
movl $0xc, 0x8(%r15,%rcx,4)
jmp 0x5a2bf
cmpl $0x1, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5a2bf
movl $0x2, 0x8(%r15,%rcx,4)
jmp 0x5a2bf
cmpl $0x3, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5a2bf
movl $0x4, 0x8(%r15,%rcx,4)
movswl 0x57c(%r8,%r13,2), %eax
jmp 0x59ff4
cmpl $0x11f, %eax            # imm = 0x11F
je 0x5a5a7
movslq %eax, %r13
imulq $0x7c8, %r13, %rax      # imm = 0x7C8
leaq (%rdi,%rax), %rbp
movl 0x4(%rdi,%rax), %eax
cmpl $0x3, %eax
je 0x5a3a5
cmpl $0x2, %eax
je 0x5a338
cmpl $0x1, %eax
jne 0x5a599
movswq 0x8(%rbp), %rcx
leaq (%rcx,%rcx,8), %rax
leaq (%rax,%rax,2), %rax
addq %rcx, %rax
cmpl $0x2, 0x7c0(%rbp)
movl (%r15,%rax), %ecx
jg 0x5a492
cmpl $0xb, %ecx
ja 0x5a599
movl $0xc, (%r15,%rax)
jmp 0x5a599
movswl 0x8(%rbp), %eax
movslq %eax, %r14
movswl 0x8(%rbp,%r14,2), %eax
movslq %eax, %r12
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movq %r15, %rbx
movl 0x7c0(%rbp), %r15d
movl %r14d, %esi
movl 0x4(%rsp), %edx
callq 0x5ae04
leaq (,%r14,8), %rcx
subq %r14, %rcx
movl 0x8(%rbx,%rcx,4), %edx
cmpl $0x2, %r15d
jg 0x5a41e
testb %al, %al
je 0x5a4a8
movl $0xe, %eax
cmpl $0xe, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x5a4bc
jmp 0x5a4c1
movswq 0x8(%rbp), %rsi
movswq 0x8(%rbp,%rsi,2), %rcx
movswq 0x8(%rbp,%rcx,2), %rax
leaq (%rsi,%rsi,8), %rdx
leaq (%rdx,%rdx,2), %rdx
addq %rsi, %rdx
cmpl $0x2, 0x7c0(%rbp)
movl 0x10(%r15,%rdx), %esi
jg 0x5a443
cmpl $0x2, %esi
ja 0x5a3dd
movl $0x3, 0x10(%r15,%rdx)
leaq (,%rcx,8), %rdx
subq %rcx, %rdx
cmpl $0x2, 0x10(%r15,%rdx,4)
ja 0x5a3f9
movl $0x3, 0x10(%r15,%rdx,4)
leaq (,%rax,8), %rcx
subq %rax, %rcx
cmpl $0x2, 0x10(%r15,%rcx,4)
ja 0x5a599
movl $0x3, 0x10(%r15,%rcx,4)
jmp 0x5a599
testb %al, %al
je 0x5a50b
movl $0x10, %eax
cmpl $0x10, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x5a51f
jmp 0x5a524
cmpl $0x3, %esi
ja 0x5a451
movl $0x4, 0x10(%r15,%rdx)
leaq (,%rcx,8), %rdx
subq %rcx, %rdx
cmpl $0x3, 0x10(%r15,%rdx,4)
ja 0x5a46d
movl $0x4, 0x10(%r15,%rdx,4)
leaq (,%rax,8), %rcx
subq %rax, %rcx
cmpl $0x3, 0x10(%r15,%rcx,4)
ja 0x5a599
movl $0x4, 0x10(%r15,%rcx,4)
jmp 0x5a599
cmpl $0xe, %ecx
ja 0x5a599
movl $0xf, (%r15,%rax)
jmp 0x5a599
movl $0x6, %eax
cmpl $0x5, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x5a4c1
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5ae04
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x5a567
cmpl $0xd, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5a599
movl $0xe, 0x8(%r15,%rcx,4)
jmp 0x5a599
movl $0x8, %eax
cmpl $0x7, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x5a524
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5ae04
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x5a581
cmpl $0xf, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5a599
movl $0x10, 0x8(%r15,%rcx,4)
jmp 0x5a599
cmpl $0x5, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5a599
movl $0x6, 0x8(%r15,%rcx,4)
jmp 0x5a599
cmpl $0x7, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5a599
movl $0x8, 0x8(%r15,%rcx,4)
movswl 0x57c(%r8,%r13,2), %eax
jmp 0x5a2cd
movl 0x28(%rsp), %ecx
testl %ecx, %ecx
movl $0x10, %eax
cmovlel %eax, %ecx
movl %ecx, 0x28(%rsp)
movq 0x48(%rsp), %rbp
movl 0x2c(%rsp), %r13d
movslq %r13d, %rax
incl %r13d
movl 0x30(%rsp), %ecx
movl %ecx, 0x50(%rsp,%rax,4)
incq %rbp
cmpq $0x4, %rbp
jne 0x5976f
jmp 0x5a7ff
cmpl $0x1, 0x4(%r15,%rax,4)
ja 0x5a607
movl $0x2, 0x4(%r15,%rax,4)
jmp 0x5a607
cmpl $0x2, 0x4(%r15,%rax,4)
ja 0x5a607
movl $0x3, 0x4(%r15,%rax,4)
movzwl 0x57c(%r14), %eax
movl $0x30, 0x28(%rsp)
cmpl $0x11f, %eax            # imm = 0x11F
je 0x5a5c3
movl %r13d, 0x2c(%rsp)
movswq %ax, %r13
imulq $0x7c8, %r13, %rax      # imm = 0x7C8
cmpl $0x1, 0x4(%rsi,%rax)
jne 0x5a7e6
addq %rsi, %rax
movswl 0x8(%rax), %ecx
movslq %ecx, %r12
movl 0x7c0(%r14), %ecx
movl 0x7c0(%rax), %eax
cmpl $0x2, %ecx
je 0x5a695
cmpl $0x1, %ecx
jne 0x5a6e8
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl (%r15,%rcx,4), %edx
cmpl $0x2, %eax
je 0x5a73f
cmpl $0x1, %eax
jne 0x5a771
cmpl $0x10, %edx
ja 0x5a7e6
movl $0x11, (%r15,%rcx,4)
jmp 0x5a7e6
cmpl $0x2, %eax
je 0x5a755
cmpl $0x1, %eax
jne 0x5a780
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
movl 0x30(%rsp), %ecx
callq 0x5b1ab
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl (%r15,%rcx,4), %edx
testb %al, %al
jne 0x5a724
cmpl $0x13, %edx
movq 0x8(%rsp), %rsi
ja 0x5a7e6
movl $0x14, (%r15,%rcx,4)
jmp 0x5a7e6
cmpl $0x2, %eax
je 0x5a79c
cmpl $0x1, %eax
jne 0x5a7b8
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
movl 0x30(%rsp), %ecx
callq 0x5b1ab
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl (%r15,%rcx,4), %edx
testb %al, %al
je 0x5a7d4
cmpl $0x19, %edx
movq 0x8(%rsp), %rsi
ja 0x5a7e6
movl $0x1a, (%r15,%rcx,4)
jmp 0x5a7e6
cmpl $0x11, %edx
ja 0x5a7e6
movl $0x12, (%r15,%rcx,4)
jmp 0x5a7e6
leaq (,%r12,8), %rax
subq %r12, %rax
cmpl $0x14, (%r15,%rax,4)
ja 0x5a7e6
movl $0x15, (%r15,%rax,4)
jmp 0x5a7e6
cmpl $0x12, %edx
ja 0x5a7e6
movl $0x13, (%r15,%rcx,4)
jmp 0x5a7e6
leaq (,%r12,8), %rax
subq %r12, %rax
cmpl $0x15, (%r15,%rax,4)
ja 0x5a7e6
movl $0x16, (%r15,%rax,4)
jmp 0x5a7e6
leaq (,%r12,8), %rax
subq %r12, %rax
cmpl $0x17, (%r15,%rax,4)
ja 0x5a7e6
movl $0x18, (%r15,%rax,4)
jmp 0x5a7e6
leaq (,%r12,8), %rax
subq %r12, %rax
cmpl $0x18, (%r15,%rax,4)
ja 0x5a7e6
movl $0x19, (%r15,%rax,4)
jmp 0x5a7e6
cmpl $0x16, %edx
movq 0x8(%rsp), %rsi
ja 0x5a7e6
movl $0x17, (%r15,%rcx,4)
movzwl 0x57c(%r14,%r13,2), %eax
cmpl $0x11f, %eax            # imm = 0x11F
jne 0x5a623
jmp 0x5a5be
movl 0x28(%rsp), %eax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq