// File: /workspace/github_cpp_makefile_star2_O3/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
movl %esi, 0x4(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
movl 0x43b0(%rdi), %eax
movl $0x0, 0x28(%rsp)
cmpl $0x2, %eax
jl 0x5b0c1
movq %rdi, %rbx
decl %eax
shlq $0x4, %rax
movl 0x4(%rdi,%rax), %esi
testl %esi, %esi
je 0x5b0c1
movq %rdx, %r15
leaq 0x9620(%rbx), %rax
movq %rax, 0x8(%rsp)
leaq 0x60(%rsp), %rdi
callq 0x54386
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 0x5ae99
movl 0x95720(%rbx,%rdx,4), %edi
testl %r13d, %r13d
movq 0x8(%rsp), %rsi
jle 0x5a075
movl %r13d, %eax
xorl %ecx, %ecx
cmpl %edi, 0x50(%rsp,%rcx,4)
je 0x5ae99
incq %rcx
cmpq %rcx, %rax
jne 0x5a063
movl %edi, 0x30(%rsp)
movslq %edi, %rax
imulq $0x7c8, %rax, %r12      # imm = 0x7C8
movl 0x4(%rsi,%r12), %eax
cmpl $0x3, %eax
je 0x5a18e
cmpl $0x2, %eax
je 0x5a0e7
cmpl $0x1, %eax
jne 0x5ae8b
movq %rbx, %rdi
movl 0x4(%rsp), %esi
callq 0x5cd12
movq 0x8(%rsp), %rsi
leaq (%rsi,%r12), %r14
movswq 0x8(%rsi,%r12), %rcx
testb %al, %al
je 0x5a25d
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x3, 0x4(%r15,%rax,4)
ja 0x5aec9
movl $0x4, 0x4(%r15,%rax,4)
jmp 0x5aec9
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 0x5baf7
movl %eax, %ebp
movq %r14, %rdi
movl 0x34(%rsp), %r14d
movl %r14d, %esi
movl %ebx, %edx
movl %r12d, %ecx
callq 0x5baf7
cmpl $0x2, %ebp
je 0x5a2c9
cmpl $0x1, %ebp
je 0x5a29c
testl %ebp, %ebp
movq 0x18(%rsp), %rbx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
jne 0x5a2f4
leaq (,%r13,8), %rcx
subq %r13, %rcx
cmpl $0x1, 0xc(%r15,%rcx,4)
ja 0x5a2f4
movl $0x2, 0xc(%r15,%rcx,4)
jmp 0x5a2f4
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 0x5baf7
movl %eax, %r14d
movq %r13, %rdi
movq %rbp, 0x40(%rsp)
movl %ebp, %esi
movl %ebx, %edx
movl %r12d, %ecx
callq 0x5baf7
movl %eax, %ebp
movq %r13, %rdi
movl 0x34(%rsp), %r13d
movl %r13d, %esi
movl %ebx, %edx
movl %r12d, %ecx
callq 0x5baf7
cmpl $0x2, %r14d
je 0x5a798
cmpl $0x1, %r14d
je 0x5a349
testl %r14d, %r14d
movq 0x18(%rsp), %rbx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
jne 0x5a7c8
movq 0x38(%rsp), %rdx
leaq (,%rdx,8), %rcx
subq %rdx, %rcx
cmpl $0x0, 0xc(%r15,%rcx,4)
jne 0x5a7c8
movl $0x1, 0xc(%r15,%rcx,4)
jmp 0x5a7c8
movl 0x7c0(%r14), %edx
leaq (,%rcx,8), %rax
subq %rcx, %rax
movl 0x4(%r15,%rax,4), %ecx
cmpl $0x2, %edx
je 0x5aeab
cmpl $0x1, %edx
jne 0x5aebb
testl %ecx, %ecx
jne 0x5aec9
movl $0x1, 0x4(%r15,%rax,4)
jmp 0x5aec9
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 0x5a2f4
movl $0x4, 0xc(%r15,%rcx,4)
jmp 0x5a2f4
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 0x5a2f4
movl $0x6, 0xc(%r15,%rcx,4)
movslq %r14d, %rcx
cmpl $0x2, %eax
je 0x5a382
cmpl $0x1, %eax
je 0x5a32b
testl %eax, %eax
jne 0x5a39e
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x1, 0xc(%r15,%rax,4)
ja 0x5a39e
movl $0x2, 0xc(%r15,%rax,4)
jmp 0x5a39e
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x3, 0xc(%r15,%rax,4)
ja 0x5a39e
movl $0x4, 0xc(%r15,%rax,4)
jmp 0x5a39e
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 0x5a7c8
movl $0x3, 0xc(%r15,%rcx,4)
jmp 0x5a7c8
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x5, 0xc(%r15,%rax,4)
ja 0x5a39e
movl $0x6, 0xc(%r15,%rax,4)
movswl 0x57c(%rsi), %eax
cmpl $0x3, 0x7c0(%rsi)
jge 0x5a599
cmpl $0x11f, %eax            # imm = 0x11F
je 0x5a784
movslq %eax, %r13
imulq $0x7c8, %r13, %rax      # imm = 0x7C8
leaq (%rdx,%rax), %rbp
movl 0x4(%rdx,%rax), %eax
cmpl $0x2, %eax
je 0x5a410
cmpl $0x1, %eax
jne 0x5a58b
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 0x5a46a
cmpl $0x8, %ecx
ja 0x5a58b
movl $0x9, (%r15,%rax)
jmp 0x5a58b
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 0x5b6a8
leaq (,%r14,8), %rcx
subq %r14, %rcx
movl 0x8(%r15,%rcx,4), %edx
cmpl $0x2, %ebx
jg 0x5a480
testb %al, %al
je 0x5a49a
movl $0xb, %eax
cmpl $0xb, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x5a4ae
jmp 0x5a4b3
cmpl $0xa, %ecx
ja 0x5a58b
movl $0xb, (%r15,%rax)
jmp 0x5a58b
testb %al, %al
je 0x5a4fd
movl $0xd, %eax
cmpl $0xd, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x5a511
jmp 0x5a516
movl $0x3, %eax
cmpl $0x2, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x5a4b3
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5b6a8
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x5a559
cmpl $0xa, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x5a58b
movl $0xb, 0x8(%r15,%rcx,4)
jmp 0x5a58b
movl $0x5, %eax
cmpl $0x4, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x5a516
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5b6a8
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x5a573
cmpl $0xc, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x5a58b
movl $0xd, 0x8(%r15,%rcx,4)
jmp 0x5a58b
cmpl $0x2, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x5a58b
movl $0x3, 0x8(%r15,%rcx,4)
jmp 0x5a58b
cmpl $0x4, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x5a58b
movl $0x5, 0x8(%r15,%rcx,4)
movswl 0x57c(%rsi,%r13,2), %eax
jmp 0x5a3b2
cmpl $0x11f, %eax            # imm = 0x11F
je 0x5a784
movslq %eax, %r13
imulq $0x7c8, %r13, %rax      # imm = 0x7C8
leaq (%rdx,%rax), %rbp
movl 0x4(%rdx,%rax), %eax
cmpl $0x2, %eax
je 0x5a5f7
cmpl $0x1, %eax
jne 0x5a776
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 0x5a655
cmpl $0xc, %ecx
ja 0x5a776
movl $0xd, (%r15,%rax)
jmp 0x5a776
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 0x5b6a8
leaq (,%r14,8), %rcx
subq %r14, %rcx
movl 0x8(%rbx,%rcx,4), %edx
cmpl $0x2, %r15d
jg 0x5a66b
testb %al, %al
je 0x5a685
movl $0xf, %eax
cmpl $0xf, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x5a699
jmp 0x5a69e
cmpl $0xd, %ecx
ja 0x5a776
movl $0xe, (%r15,%rax)
jmp 0x5a776
testb %al, %al
je 0x5a6e8
movl $0x11, %eax
cmpl $0x11, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x5a6fc
jmp 0x5a701
movl $0x7, %eax
cmpl $0x6, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x5a69e
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5b6a8
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x5a744
cmpl $0xe, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x5a776
movl $0xf, 0x8(%r15,%rcx,4)
jmp 0x5a776
movl $0x9, %eax
cmpl $0x8, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x5a701
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5b6a8
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x5a75e
cmpl $0x10, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x5a776
movl $0x11, 0x8(%r15,%rcx,4)
jmp 0x5a776
cmpl $0x6, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x5a776
movl $0x7, 0x8(%r15,%rcx,4)
jmp 0x5a776
cmpl $0x8, %edx
movq 0x8(%rsp), %rdx
movq 0x10(%rsp), %rsi
ja 0x5a776
movl $0x9, 0x8(%r15,%rcx,4)
movswl 0x57c(%rsi,%r13,2), %eax
jmp 0x5a599
movl 0x28(%rsp), %ecx
cmpl $0x11, %ecx
movl $0x20, %eax
cmovll %eax, %ecx
jmp 0x5ae7d
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 0x5a7c8
movl $0x5, 0xc(%r15,%rcx,4)
cmpl $0x2, %ebp
je 0x5a81c
cmpl $0x1, %ebp
je 0x5a7f9
testl %ebp, %ebp
jne 0x5a83d
movq 0x40(%rsp), %rdx
leaq (,%rdx,8), %rcx
subq %rdx, %rcx
cmpl $0x0, 0xc(%r15,%rcx,4)
jne 0x5a83d
movl $0x1, 0xc(%r15,%rcx,4)
jmp 0x5a83d
movq 0x40(%rsp), %rdx
leaq (,%rdx,8), %rcx
subq %rdx, %rcx
cmpl $0x2, 0xc(%r15,%rcx,4)
ja 0x5a83d
movl $0x3, 0xc(%r15,%rcx,4)
jmp 0x5a83d
movq 0x40(%rsp), %rdx
leaq (,%rdx,8), %rcx
subq %rdx, %rcx
cmpl $0x4, 0xc(%r15,%rcx,4)
ja 0x5a83d
movl $0x5, 0xc(%r15,%rcx,4)
movslq %r13d, %rcx
cmpl $0x2, %eax
je 0x5a88a
cmpl $0x1, %eax
je 0x5a86c
testl %eax, %eax
jne 0x5a8a6
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x0, 0xc(%r15,%rax,4)
jne 0x5a8a6
movl $0x1, 0xc(%r15,%rax,4)
jmp 0x5a8a6
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x2, 0xc(%r15,%rax,4)
ja 0x5a8a6
movl $0x3, 0xc(%r15,%rax,4)
jmp 0x5a8a6
leaq (,%rcx,8), %rax
subq %rcx, %rax
cmpl $0x4, 0xc(%r15,%rax,4)
ja 0x5a8a6
movl $0x5, 0xc(%r15,%rax,4)
movswl 0x57c(%r8), %eax
cmpl $0x3, 0x7c0(%r8)
jge 0x5ab95
cmpl $0x11f, %eax            # imm = 0x11F
je 0x5ae6f
movslq %eax, %r13
imulq $0x7c8, %r13, %rax      # imm = 0x7C8
leaq (%rdi,%rax), %rbp
movl 0x4(%rdi,%rax), %eax
cmpl $0x3, %eax
je 0x5a994
cmpl $0x2, %eax
je 0x5a927
cmpl $0x1, %eax
jne 0x5ab87
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 0x5aa80
cmpl $0x7, %ecx
ja 0x5ab87
movl $0x8, (%r15,%rax)
jmp 0x5ab87
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 0x5b6a8
leaq (,%r14,8), %rcx
subq %r14, %rcx
movl 0x8(%rbx,%rcx,4), %edx
cmpl $0x2, %r15d
jg 0x5aa0c
testb %al, %al
je 0x5aa96
movl $0xa, %eax
cmpl $0xa, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x5aaaa
jmp 0x5aaaf
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 0x5aa31
testl %esi, %esi
jne 0x5a9cb
movl $0x1, 0x10(%r15,%rdx)
leaq (,%rcx,8), %rdx
subq %rcx, %rdx
cmpl $0x0, 0x10(%r15,%rdx,4)
jne 0x5a9e7
movl $0x1, 0x10(%r15,%rdx,4)
leaq (,%rax,8), %rcx
subq %rax, %rcx
cmpl $0x0, 0x10(%r15,%rcx,4)
jne 0x5ab87
movl $0x1, 0x10(%r15,%rcx,4)
jmp 0x5ab87
testb %al, %al
je 0x5aaf9
movl $0xc, %eax
cmpl $0xc, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x5ab0d
jmp 0x5ab12
cmpl $0x1, %esi
ja 0x5aa3f
movl $0x2, 0x10(%r15,%rdx)
leaq (,%rcx,8), %rdx
subq %rcx, %rdx
cmpl $0x1, 0x10(%r15,%rdx,4)
ja 0x5aa5b
movl $0x2, 0x10(%r15,%rdx,4)
leaq (,%rax,8), %rcx
subq %rax, %rcx
cmpl $0x1, 0x10(%r15,%rcx,4)
ja 0x5ab87
movl $0x2, 0x10(%r15,%rcx,4)
jmp 0x5ab87
cmpl $0x9, %ecx
ja 0x5ab87
movl $0xa, (%r15,%rax)
jmp 0x5ab87
movl $0x2, %eax
cmpl $0x1, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x5aaaf
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5b6a8
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x5ab55
cmpl $0x9, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5ab87
movl $0xa, 0x8(%r15,%rcx,4)
jmp 0x5ab87
movl $0x4, %eax
cmpl $0x3, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x5ab12
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5b6a8
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x5ab6f
cmpl $0xb, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5ab87
movl $0xc, 0x8(%r15,%rcx,4)
jmp 0x5ab87
cmpl $0x1, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5ab87
movl $0x2, 0x8(%r15,%rcx,4)
jmp 0x5ab87
cmpl $0x3, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5ab87
movl $0x4, 0x8(%r15,%rcx,4)
movswl 0x57c(%r8,%r13,2), %eax
jmp 0x5a8bc
cmpl $0x11f, %eax            # imm = 0x11F
je 0x5ae6f
movslq %eax, %r13
imulq $0x7c8, %r13, %rax      # imm = 0x7C8
leaq (%rdi,%rax), %rbp
movl 0x4(%rdi,%rax), %eax
cmpl $0x3, %eax
je 0x5ac6d
cmpl $0x2, %eax
je 0x5ac00
cmpl $0x1, %eax
jne 0x5ae61
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 0x5ad5a
cmpl $0xb, %ecx
ja 0x5ae61
movl $0xc, (%r15,%rax)
jmp 0x5ae61
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 0x5b6a8
leaq (,%r14,8), %rcx
subq %r14, %rcx
movl 0x8(%rbx,%rcx,4), %edx
cmpl $0x2, %r15d
jg 0x5ace6
testb %al, %al
je 0x5ad70
movl $0xe, %eax
cmpl $0xe, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x5ad84
jmp 0x5ad89
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 0x5ad0b
cmpl $0x2, %esi
ja 0x5aca5
movl $0x3, 0x10(%r15,%rdx)
leaq (,%rcx,8), %rdx
subq %rcx, %rdx
cmpl $0x2, 0x10(%r15,%rdx,4)
ja 0x5acc1
movl $0x3, 0x10(%r15,%rdx,4)
leaq (,%rax,8), %rcx
subq %rax, %rcx
cmpl $0x2, 0x10(%r15,%rcx,4)
ja 0x5ae61
movl $0x3, 0x10(%r15,%rcx,4)
jmp 0x5ae61
testb %al, %al
je 0x5add3
movl $0x10, %eax
cmpl $0x10, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
jb 0x5ade7
jmp 0x5adec
cmpl $0x3, %esi
ja 0x5ad19
movl $0x4, 0x10(%r15,%rdx)
leaq (,%rcx,8), %rdx
subq %rcx, %rdx
cmpl $0x3, 0x10(%r15,%rdx,4)
ja 0x5ad35
movl $0x4, 0x10(%r15,%rdx,4)
leaq (,%rax,8), %rcx
subq %rax, %rcx
cmpl $0x3, 0x10(%r15,%rcx,4)
ja 0x5ae61
movl $0x4, 0x10(%r15,%rcx,4)
jmp 0x5ae61
cmpl $0xe, %ecx
ja 0x5ae61
movl $0xf, (%r15,%rax)
jmp 0x5ae61
movl $0x6, %eax
cmpl $0x5, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x5ad89
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5b6a8
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x5ae2f
cmpl $0xd, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5ae61
movl $0xe, 0x8(%r15,%rcx,4)
jmp 0x5ae61
movl $0x8, %eax
cmpl $0x7, %edx
movq 0x20(%rsp), %r15
movq 0x18(%rsp), %rbx
ja 0x5adec
movl %eax, 0x8(%r15,%rcx,4)
movl 0x7bc(%rbp), %ecx
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
callq 0x5b6a8
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl 0x8(%r15,%rcx,4), %edx
testb %al, %al
je 0x5ae49
cmpl $0xf, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5ae61
movl $0x10, 0x8(%r15,%rcx,4)
jmp 0x5ae61
cmpl $0x5, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5ae61
movl $0x6, 0x8(%r15,%rcx,4)
jmp 0x5ae61
cmpl $0x7, %edx
movq 0x8(%rsp), %rdi
movq 0x10(%rsp), %r8
ja 0x5ae61
movl $0x8, 0x8(%r15,%rcx,4)
movswl 0x57c(%r8,%r13,2), %eax
jmp 0x5ab95
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 0x5a036
jmp 0x5b0c1
cmpl $0x1, %ecx
ja 0x5aec9
movl $0x2, 0x4(%r15,%rax,4)
jmp 0x5aec9
cmpl $0x2, %ecx
ja 0x5aec9
movl $0x3, 0x4(%r15,%rax,4)
movzwl 0x57c(%r14), %eax
movl $0x30, 0x28(%rsp)
cmpl $0x11f, %eax            # imm = 0x11F
je 0x5ae8b
movl %r13d, 0x2c(%rsp)
movswq %ax, %r13
imulq $0x7c8, %r13, %rax      # imm = 0x7C8
cmpl $0x1, 0x4(%rsi,%rax)
jne 0x5b0a8
addq %rsi, %rax
movswl 0x8(%rax), %ecx
movslq %ecx, %r12
movl 0x7c0(%r14), %ecx
movl 0x7c0(%rax), %eax
cmpl $0x2, %ecx
je 0x5af57
cmpl $0x1, %ecx
jne 0x5afaa
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl (%r15,%rcx,4), %edx
cmpl $0x2, %eax
je 0x5b001
cmpl $0x1, %eax
jne 0x5b033
cmpl $0x10, %edx
ja 0x5b0a8
movl $0x11, (%r15,%rcx,4)
jmp 0x5b0a8
cmpl $0x2, %eax
je 0x5b017
cmpl $0x1, %eax
jne 0x5b042
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
movl 0x30(%rsp), %ecx
callq 0x5ba52
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl (%r15,%rcx,4), %edx
testb %al, %al
jne 0x5afe6
cmpl $0x13, %edx
movq 0x8(%rsp), %rsi
ja 0x5b0a8
movl $0x14, (%r15,%rcx,4)
jmp 0x5b0a8
cmpl $0x2, %eax
je 0x5b05e
cmpl $0x1, %eax
jne 0x5b07a
movq %rbx, %rdi
movl %r12d, %esi
movl 0x4(%rsp), %edx
movl 0x30(%rsp), %ecx
callq 0x5ba52
leaq (,%r12,8), %rcx
subq %r12, %rcx
movl (%r15,%rcx,4), %edx
testb %al, %al
je 0x5b096
cmpl $0x19, %edx
movq 0x8(%rsp), %rsi
ja 0x5b0a8
movl $0x1a, (%r15,%rcx,4)
jmp 0x5b0a8
cmpl $0x11, %edx
ja 0x5b0a8
movl $0x12, (%r15,%rcx,4)
jmp 0x5b0a8
leaq (,%r12,8), %rax
subq %r12, %rax
cmpl $0x14, (%r15,%rax,4)
ja 0x5b0a8
movl $0x15, (%r15,%rax,4)
jmp 0x5b0a8
cmpl $0x12, %edx
ja 0x5b0a8
movl $0x13, (%r15,%rcx,4)
jmp 0x5b0a8
leaq (,%r12,8), %rax
subq %r12, %rax
cmpl $0x15, (%r15,%rax,4)
ja 0x5b0a8
movl $0x16, (%r15,%rax,4)
jmp 0x5b0a8
leaq (,%r12,8), %rax
subq %r12, %rax
cmpl $0x17, (%r15,%rax,4)
ja 0x5b0a8
movl $0x18, (%r15,%rax,4)
jmp 0x5b0a8
leaq (,%r12,8), %rax
subq %r12, %rax
cmpl $0x18, (%r15,%rax,4)
ja 0x5b0a8
movl $0x19, (%r15,%rax,4)
jmp 0x5b0a8
cmpl $0x16, %edx
movq 0x8(%rsp), %rsi
ja 0x5b0a8
movl $0x17, (%r15,%rcx,4)
movzwl 0x57c(%r14,%r13,2), %eax
cmpl $0x11f, %eax            # imm = 0x11F
jne 0x5aee5
jmp 0x5ae86
movl 0x28(%rsp), %eax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq