// File: /workspace/github_cpp_makefile_star2_O1/YSRKEN[P]Shioi/I401/main.cpp
// Function: Board::FindNormalMove(unsigned long, bool)
Result FindNormalMove(const size_t depth, bool debug_flg = false) {
		vector<size_t> next_move;
		next_move.reserve(kBoardSize * kBoardSize);
		int max_score = -kScoreInf2;
		if (depth == 0) {
			if (turn_ == Stone::Black) {
				for (size_t p : rep(kBoardSize * kBoardSize)) {
					if (board_[p] != Stone::None) continue;
					// Judge valid move
					bool cho_ren_flg = false;
					size_t sum_4_strong = 0, sum_4_normal = 0, sum_3 = 0;
					for (uint8_t dir = 0; dir < Direction::Directions; ++dir) {
						auto move_pattern = GetPatternB(p, static_cast<Direction>(dir));
						if (Board_helper::IsChorenB(move_pattern)) {
							cho_ren_flg = true;
							break;
						}
						size_t s4s, s4n, s3;
						std::tie(s4s, s4n, s3) = CountRenB(move_pattern, p, static_cast<Direction>(dir));
						sum_4_strong += s4s;
						sum_4_normal += s4n;
						sum_3 += s3;
					}
					if (cho_ren_flg || sum_4_strong + sum_4_normal >= 2 || sum_3 >= 2) continue;
					if (sum_4_strong == 1) return Result(p, true);
					// Find enemy's Shioi
					board_[p] = turn_;
					auto result = FindShioiMove(EnemyTurn(turn_), kShioiDepth2);
					board_[p] = Stone::None;
					// Don't block Shioi : Normal Score
					const int score = (result.second) ? -kScoreInf : CalcScore(p, turn_);
					if (max_score < score) {
						max_score = score;
						if (debug_flg) std::cerr << endl << "  " << score << " : ";
						next_move.clear();
					}
					if (max_score == score) {
						if (debug_flg) std::cerr << PositionToString(p) << ", ";
						next_move.push_back(p);
					}
				}
			}else{
				for (size_t p : rep(kBoardSize * kBoardSize)) {
					if (board_[p] != Stone::None) continue;
					size_t sum_4_strong = 0, sum_4_normal = 0, sum_3 = 0;
					for (uint8_t dir = 0; dir < Direction::Directions; ++dir) {
						auto move_pattern = GetPatternB(p, static_cast<Direction>(dir));
						if (Board_helper::IsChorenB(move_pattern)) return Result(p, true);
						size_t s4s, s4n, s3;
						std::tie(s4s, s4n, s3) = CountRenB(move_pattern, p, static_cast<Direction>(dir));
						sum_4_strong += s4s;
						sum_4_normal += s4n;
						sum_3 += s3;
					}
					if (sum_4_strong >= 1 || sum_4_normal >= 2) return Result(p, true);
					// Find enemy's Shioi
					board_[p] = turn_;
					auto result = FindShioiMove(EnemyTurn(turn_), kShioiDepth2);
					board_[p] = Stone::None;
					// Don't block Shioi : Normal Score
					const int score = (result.second) ? -kScoreInf : CalcScore(p, turn_);
					if (max_score < score) {
						max_score = score;
						if (debug_flg) std::cerr << endl << "  " << score << " : ";
						next_move.clear();
					}
					if (max_score == score) {
						if (debug_flg) std::cerr << PositionToString(p) << ", ";
						next_move.push_back(p);
					}
				}
			}
		}
		else {
			vector<Score> next_move2;
			auto range = GetRange();
			if (turn_ == Stone::Black) {
				for (size_t y : rep(range[1], range[3])) {
					for (size_t x : rep(range[0], range[2])) {
						size_t p = ToPosition(x, y);
						if (board_[p] != Stone::None) continue;
						// Judge valid move
						bool cho_ren_flg = false;
						size_t sum_4_strong = 0, sum_4_normal = 0, sum_3 = 0;
						for (uint8_t dir = 0; dir < Direction::Directions; ++dir) {
							auto move_pattern = GetPatternB(p, static_cast<Direction>(dir));
							if (Board_helper::IsChorenB(move_pattern)) {
								cho_ren_flg = true;
								break;
							}
							size_t s4s, s4n, s3;
							std::tie(s4s, s4n, s3) = CountRenB(move_pattern, p, static_cast<Direction>(dir));
							sum_4_strong += s4s;
							sum_4_normal += s4n;
							sum_3 += s3;
						}
						if (cho_ren_flg || sum_4_strong + sum_4_normal >= 2 || sum_3 >= 2) continue;
						if (sum_4_strong == 1) return Result(p, true);
						// Find enemy's Shioi
						board_[p] = Stone::Black;
						auto result = FindShioiMove(Stone::White, kShioiDepth2);
						board_[p] = Stone::None;
						if (result.second) {
							// Don't block Shioi
							next_move2.emplace_back(p, -kScoreInf);
						}
						else {
							// Normal Score
							next_move2.emplace_back(p, kTenGenDist[p]);
						}
					}
				}
			}
			else {
				for (size_t y : rep(range[1], range[3])) {
					for (size_t x : rep(range[0], range[2])) {
						size_t p = ToPosition(x, y);
						if (board_[p] != Stone::None) continue;
						size_t sum_4_strong = 0, sum_4_normal = 0, sum_3 = 0;
						for (uint8_t dir = 0; dir < Direction::Directions; ++dir) {
							auto move_pattern = GetPatternB(p, static_cast<Direction>(dir));
							if (Board_helper::IsChorenB(move_pattern)) return Result(p, true);
							size_t s4s, s4n, s3;
							std::tie(s4s, s4n, s3) = CountRenB(move_pattern, p, static_cast<Direction>(dir));
							sum_4_strong += s4s;
							sum_4_normal += s4n;
							sum_3 += s3;
						}
						if (sum_4_strong >= 1 || sum_4_normal >= 2) return Result(p, true);
						// Find enemy's Shioi
						board_[p] = Stone::White;
						auto result = FindShioiMove(Stone::Black, kShioiDepth2);
						board_[p] = Stone::None;
						if (result.second) {
							// Don't block Shioi
							next_move2.emplace_back(p, -kScoreInf);
						}
						else {
							// Normal Score
							next_move2.emplace_back(p, kTenGenDist[p]);
						}
					}
				}
			}
			std::sort(next_move2.begin(), next_move2.end(), [](const Score &a, const Score &b) {return a.second > b.second; });
			for (auto &it : next_move2) {
				board_[it.first] = turn_;
				int score = -NegaMax(EnemyTurn(turn_), depth - 1, -kScoreInf2, kScoreInf2) + CalcScore(it.first, turn_);
				board_[it.first] = Stone::None;
				if (score == kScoreInf) return Result(it.first, true);
				if (max_score < score) {
					max_score = score;
					if (debug_flg) std::cerr << endl << "  " << score << " : ";
					next_move.clear();
				}
				if (max_score == score) {
					if (debug_flg) std::cerr << PositionToString(it.first) << ", ";
					next_move.push_back(it.first);
				}
			}
		}
		if (max_score == -kScoreInf) return Result(kBoardSize * kBoardSize, false);
		return (next_move.size() == 0 ? Result(0, false) : Result(next_move[RandInt(next_move.size())], true));
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x188, %rsp            # imm = 0x188
movl %edx, 0x44(%rsp)
movq %rsi, %r12
movq %rdi, %r13
xorps %xmm0, %xmm0
leaq 0x70(%rsp), %rdi
movaps %xmm0, (%rdi)
movq $0x0, 0x10(%rdi)
movl $0xe1, %esi
callq 0x9f14
testq %r12, %r12
movq %r13, 0x8(%rsp)
je 0x5af7
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
leaq 0xa8(%rsp), %rbx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x7f28
movq 0x8(%rbx), %r15
movq 0x18(%rbx), %rbx
cmpq %rbx, %r15
sete 0x17(%rsp)
cmpb $0x1, 0xe1(%r13)
movq %r12, 0x20(%rsp)
movq %rbx, 0x90(%rsp)
jne 0x5e0c
cmpq %rbx, %r15
jne 0x6118
jmp 0x63b1
cmpb $0x1, 0xe1(%r13)
jne 0x5e1c
movl $0xfffffc17, %r12d      # imm = 0xFFFFFC17
xorl %r15d, %r15d
leaq 0xe8(%rsp), %rbp
movq $0x0, 0x28(%rsp)
movq 0x28(%rsp), %rax
movq %rax, 0x50(%rsp)
movl $0x3, %r14d
cmpb $0x0, (%r13,%rax)
jne 0x5c44
movq %r15, 0x48(%rsp)
movl %r12d, 0x20(%rsp)
movq $0x0, 0x38(%rsp)
xorl %r14d, %r14d
xorl %r15d, %r15d
movq $0x0, 0x18(%rsp)
xorl %r12d, %r12d
movq 0x50(%rsp), %rdx
movzbl %r12b, %r13d
movq %rbp, %rbx
movq %rbp, %rdi
movq 0x8(%rsp), %rsi
movl %r13d, %ecx
callq 0x6f68
movq %rbx, %rdi
callq 0x70a3
movl %eax, %ebx
testb %al, %al
je 0x5b93
movb $0x1, %al
movq %rax, 0x38(%rsp)
jmp 0x5bd2
movq 0x50(%rsp), %rcx
leaq 0xa8(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %rbp, %rdx
movl %r13d, %r8d
callq 0x7248
addq 0xb8(%rsp), %r14
addq 0xb0(%rsp), %r15
movq 0x18(%rsp), %rax
addq 0xa8(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpb $0x3, %r12b
leal 0x1(%r12), %eax
setae %cl
orb %bl, %cl
movl %eax, %r12d
je 0x5b60
testb $0x1, 0x38(%rsp)
je 0x5bfc
movq 0x8(%rsp), %r13
movl 0x20(%rsp), %r12d
jmp 0x5c39
addq %r14, %r15
cmpq $0x1, %r15
movl 0x20(%rsp), %r12d
ja 0x5c34
cmpq $0x1, 0x18(%rsp)
ja 0x5c34
cmpq $0x1, %r14
movq 0x48(%rsp), %r15
jne 0x5c76
movl $0x1, %r14d
movq 0x50(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x8(%rsp), %r13
jmp 0x5c44
movq 0x8(%rsp), %r13
movq 0x48(%rsp), %r15
movl $0x3, %r14d
cmpl $0x3, %r14d
je 0x5c53
testl %r14d, %r14d
jne 0x6102
movq 0x28(%rsp), %rcx
incq %rcx
movq %rcx, 0x28(%rsp)
cmpq $0xe1, %rcx
sete %r15b
jne 0x5b1f
jmp 0x6102
movq 0x8(%rsp), %r13
movb 0xe1(%r13), %al
movq 0x50(%rsp), %rcx
movb %al, (%r13,%rcx)
xorl %esi, %esi
cmpb $0x1, 0xe1(%r13)
sete %sil
incl %esi
movl $0x3, %edx
movq %r13, %rdi
callq 0x519a
movq 0x50(%rsp), %rsi
movb $0x0, (%r13,%rsi)
movl $0xfffffc18, %ebx       # imm = 0xFFFFFC18
testb $0x1, %dl
jne 0x5cd0
movzbl 0xe1(%r13), %edx
movq %r13, %rdi
callq 0x9faa
movl %eax, %ebx
cmpl %ebx, %r12d
jge 0x5d5e
cmpb $0x0, 0x44(%rsp)
je 0x5d47
movq 0xa301(%rip), %rcx      # 0xffe8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq 0xa2e3(%rip), %rdi      # 0xffe8
callq 0x2030
movq %rax, %rdi
callq 0x2150
movq %rax, %r14
movl $0x2, %edx
movq %rax, %rdi
leaq 0x6687(%rip), %rsi      # 0xc3ab
callq 0x2210
movq %r14, %rdi
movl %ebx, %esi
callq 0x2320
movl $0x3, %edx
movq %rax, %rdi
leaq 0x6437(%rip), %rsi      # 0xc179
callq 0x2210
movq 0x70(%rsp), %rax
movl %ebx, %r12d
cmpq %rax, 0x78(%rsp)
je 0x5d5e
movq %rax, 0x78(%rsp)
movl %ebx, %r12d
xorl %r14d, %r14d
cmpl %ebx, %r12d
jne 0x5c44
cmpb $0x0, 0x44(%rsp)
je 0x5dd3
movq 0x50(%rsp), %rsi
movq %rbp, %rdi
callq 0x271c
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
movq 0xa253(%rip), %rdi      # 0xffe8
callq 0x2210
movl $0x2, %edx
movq %rax, %rdi
leaq 0x6605(%rip), %rsi      # 0xc3ae
callq 0x2210
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x5dd3
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x78(%rsp), %rsi
cmpq 0x80(%rsp), %rsi
je 0x5df8
movq 0x50(%rsp), %rax
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x78(%rsp)
jmp 0x5c44
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0xabcc
jmp 0x5c44
cmpq %rbx, %r15
jne 0x63c9
movb $0x1, %al
jmp 0x65f1
movl $0xfffffc17, %r12d      # imm = 0xFFFFFC17
xorl %ebp, %ebp
xorl %eax, %eax
movq %rax, 0x50(%rsp)
movl $0x8, %ebx
movq %rax, 0x38(%rsp)
cmpb $0x0, (%r13,%rax)
jne 0x60ca
leaq 0xe8(%rsp), %r15
movq %rbp, 0x28(%rsp)
movl %r12d, 0x20(%rsp)
xorl %r12d, %r12d
xorl %r14d, %r14d
movq $0x0, 0x18(%rsp)
xorl %ebp, %ebp
movq 0x50(%rsp), %rdx
movzbl %bpl, %r13d
movq %r15, %rbx
movq %r15, %rdi
movq 0x8(%rsp), %rsi
movl %r13d, %ecx
callq 0x6f68
movq %rbx, %rdi
callq 0x70a3
movl %eax, %ebx
testb %al, %al
je 0x5e9a
movq 0x50(%rsp), %rax
movq %rax, 0x68(%rsp)
jmp 0x5ed1
movq 0x50(%rsp), %rcx
leaq 0xa8(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %r15, %rdx
movl %r13d, %r8d
callq 0x7248
addq 0xb8(%rsp), %r14
movq 0x18(%rsp), %rax
addq 0xb0(%rsp), %rax
movq %rax, 0x18(%rsp)
testb %bl, %bl
jne 0x5ef1
cmpb $0x3, %bpl
leal 0x1(%rbp), %eax
setae %r12b
movl %eax, %ebp
cmpb $0x4, %al
jne 0x5e64
movl $0x9, %ebx
jmp 0x5ef6
movl $0x1, %ebx
testb $0x1, %r12b
je 0x60a5
testq %r14, %r14
movl 0x20(%rsp), %r12d
jne 0x60b1
cmpq $0x2, 0x18(%rsp)
jae 0x60b1
movq 0x8(%rsp), %r13
movb 0xe1(%r13), %al
movq 0x50(%rsp), %rcx
movb %al, (%r13,%rcx)
xorl %esi, %esi
cmpb $0x1, 0xe1(%r13)
sete %sil
incl %esi
movl $0x3, %edx
movq %r13, %rdi
callq 0x519a
movq 0x50(%rsp), %rsi
movb $0x0, (%r13,%rsi)
movl $0xfffffc18, %r15d      # imm = 0xFFFFFC18
testb $0x1, %dl
movq 0x28(%rsp), %rbp
jne 0x5f7b
movzbl 0xe1(%r13), %edx
movq %r13, %rdi
callq 0x9faa
movl %eax, %r15d
cmpl %r15d, %r12d
jge 0x600a
cmpb $0x0, 0x44(%rsp)
je 0x5ff3
movq 0xa056(%rip), %rcx      # 0xffe8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq 0xa038(%rip), %rdi      # 0xffe8
callq 0x2030
movq %rax, %rdi
callq 0x2150
movq %rax, %r14
movl $0x2, %edx
movq %rax, %rdi
leaq 0x63dc(%rip), %rsi      # 0xc3ab
callq 0x2210
movq %r14, %rdi
movl %r15d, %esi
callq 0x2320
movl $0x3, %edx
movq %rax, %rdi
leaq 0x618b(%rip), %rsi      # 0xc179
callq 0x2210
movq 0x70(%rsp), %rax
movl %r15d, %r12d
cmpq %rax, 0x78(%rsp)
je 0x600a
movq %rax, 0x78(%rsp)
movl %r15d, %r12d
xorl %ebx, %ebx
cmpl %r15d, %r12d
jne 0x60ca
cmpb $0x0, 0x44(%rsp)
je 0x6083
movq 0x50(%rsp), %rsi
leaq 0xe8(%rsp), %rdi
callq 0x271c
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
movq 0x9fa3(%rip), %rdi      # 0xffe8
callq 0x2210
movl $0x2, %edx
movq %rax, %rdi
leaq 0x6355(%rip), %rsi      # 0xc3ae
callq 0x2210
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x6083
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x78(%rsp), %rsi
cmpq 0x80(%rsp), %rsi
je 0x60e9
movq 0x50(%rsp), %rax
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x78(%rsp)
jmp 0x60ca
movq 0x8(%rsp), %r13
movl 0x20(%rsp), %r12d
jmp 0x60c5
movl $0x1, %ebx
movq 0x50(%rsp), %rax
movq %rax, 0x68(%rsp)
movq 0x8(%rsp), %r13
movq 0x28(%rsp), %rbp
testb $0x7, %bl
movq 0x38(%rsp), %rax
jne 0x60fa
incq %rax
cmpq $0xe1, %rax
sete %bpl
jne 0x5e26
jmp 0x60fa
leaq 0x70(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq 0xabcc
jmp 0x60ca
movb $0x1, %bl
testb $0x1, %bpl
jmp 0x6108
movb $0x1, %bl
testb $0x1, %r15b
movq 0x68(%rsp), %r14
jne 0x6840
jmp 0x6898
leaq 0x3928(%r13), %rax
movq %rax, 0xe0(%rsp)
leaq 0xe8(%rsp), %rdi
movq 0xa8(%rsp), %rbp
movq 0xb8(%rsp), %rcx
movl $0xe, %eax
cmpq %rcx, %rbp
je 0x6397
leaq (%r15,%r15,4), %rax
leaq (%rax,%rax,2), %rdx
movq %r15, 0x48(%rsp)
movq %rcx, 0x98(%rsp)
movq %rdx, 0xa0(%rsp)
leaq (%rdx,%rbp), %rax
movq %rax, 0x30(%rsp)
movl $0xf, %esi
cmpb $0x0, (%r13,%rax)
jne 0x62da
movq %rbp, 0x28(%rsp)
movq $0x0, 0x38(%rsp)
xorl %ebp, %ebp
xorl %r15d, %r15d
movq $0x0, 0x18(%rsp)
xorl %r13d, %r13d
movq 0x30(%rsp), %rdx
movzbl %r13b, %r12d
movq 0x8(%rsp), %rsi
movq %rdi, %r14
movl %r12d, %ecx
callq 0x6f68
movq %r14, %rdi
callq 0x70a3
movl %eax, %ebx
testb %al, %al
je 0x61d3
movb $0x1, %al
movq %rax, 0x38(%rsp)
jmp 0x6212
movq 0x30(%rsp), %rcx
leaq 0xc8(%rsp), %rdi
movq 0x8(%rsp), %rsi
movq %r14, %rdx
movl %r12d, %r8d
callq 0x7248
addq 0xd8(%rsp), %rbp
addq 0xd0(%rsp), %r15
movq 0x18(%rsp), %rax
addq 0xc8(%rsp), %rax
movq %rax, 0x18(%rsp)
cmpb $0x3, %r13b
leal 0x1(%r13), %eax
setae %cl
orb %bl, %cl
movl %eax, %r13d
movq %r14, %rdi
je 0x61a3
testb $0x1, 0x38(%rsp)
je 0x6265
movq 0x8(%rsp), %r13
movq 0x20(%rsp), %r12
movq 0x48(%rsp), %r15
movq 0x90(%rsp), %rbx
movq 0x28(%rsp), %rbp
movq 0x98(%rsp), %rcx
movq 0xa0(%rsp), %rdx
movl $0xf, %esi
jmp 0x62da
addq %rbp, %r15
cmpq $0x1, %r15
movq 0x98(%rsp), %rcx
movq 0xa0(%rsp), %rdx
movl $0xf, %esi
ja 0x62be
cmpq $0x1, 0x18(%rsp)
ja 0x62be
movl $0x1, %esi
movq 0x30(%rsp), %rax
cmpq $0x1, %rbp
movq 0x20(%rsp), %r12
movq 0x48(%rsp), %r15
movq 0x90(%rsp), %rbx
movq 0x28(%rsp), %rbp
jne 0x62f8
movq %rax, 0x68(%rsp)
movq 0x8(%rsp), %r13
jmp 0x62da
movq 0x8(%rsp), %r13
movq 0x20(%rsp), %r12
movq 0x48(%rsp), %r15
movq 0x90(%rsp), %rbx
movq 0x28(%rsp), %rbp
cmpl $0xf, %esi
je 0x62e7
testl %esi, %esi
jne 0x6395
incq %rbp
cmpq %rcx, %rbp
jne 0x616a
jmp 0x638e
movq 0x8(%rsp), %r13
movb $0x1, (%r13,%rax)
movl $0x3, %edx
movq %r13, %rdi
movl $0x2, %esi
callq 0x519a
movq 0x30(%rsp), %rax
movb $0x0, (%r13,%rax)
testb $0x1, %dl
je 0x6359
movl $0xfffffc18, 0xe8(%rsp) # imm = 0xFFFFFC18
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
movq %r14, %rdx
callq 0xa18a
xorl %esi, %esi
movq %r14, %rdi
movq 0x98(%rsp), %rcx
movq 0xa0(%rsp), %rdx
jmp 0x62da
movq 0xe0(%rsp), %rcx
leaq (%rcx,%rax,8), %rdx
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0xa1b2
xorl %esi, %esi
movq %r14, %rdi
movq 0x98(%rsp), %rcx
movq 0xa0(%rsp), %rdx
jmp 0x62da
movl $0xe, %eax
jmp 0x6397
movl %esi, %eax
cmpl $0xe, %eax
je 0x63a0
testl %eax, %eax
jne 0x63b1
incq %r15
cmpq %rbx, %r15
sete 0x17(%rsp)
jne 0x612f
testb $0x1, 0x17(%rsp)
jne 0x65f9
movl $0xfffffc17, %ebp       # imm = 0xFFFFFC17
xorl %r15d, %r15d
jmp 0x6819
leaq 0x3928(%r13), %rax
movq %rax, 0x98(%rsp)
xorl %ecx, %ecx
movq 0xa8(%rsp), %r14
movq 0xb8(%rsp), %rax
movl $0x15, %ebp
movq %rax, 0x38(%rsp)
cmpq %rax, %r14
je 0x65d0
movq %r15, 0x48(%rsp)
leaq (%r15,%r15,4), %rax
leaq (%rax,%rax,2), %r15
movq 0x38(%rsp), %rbx
movq %r15, 0x28(%rsp)
leaq (%r14,%r15), %rax
movq %rax, 0x30(%rsp)
movl $0x16, %ebp
cmpb $0x0, (%r13,%rax)
jne 0x656b
movq %r14, 0x18(%rsp)
xorl %r13d, %r13d
xorl %r15d, %r15d
xorl %ebx, %ebx
xorl %r14d, %r14d
movq 0x30(%rsp), %rdx
movzbl %r15b, %r12d
leaq 0xe8(%rsp), %rbp
movq %rbp, %rdi
movq 0x8(%rsp), %rsi
movl %r12d, %ecx
callq 0x6f68
movq %rbp, %rdi
callq 0x70a3
movl %eax, %ebp
testb %al, %al
je 0x6479
movq 0x30(%rsp), %rax
movq %rax, 0x68(%rsp)
jmp 0x64ab
movq 0x30(%rsp), %rcx
leaq 0xc8(%rsp), %rdi
movq 0x8(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
movl %r12d, %r8d
callq 0x7248
addq 0xd8(%rsp), %r14
addq 0xd0(%rsp), %rbx
testb %bpl, %bpl
jne 0x64ce
cmpb $0x3, %r15b
leal 0x1(%r15), %eax
setae %r13b
movl %eax, %r15d
cmpb $0x4, %al
jne 0x643e
movl $0x17, %ebp
jmp 0x64d3
movl $0x1, %ebp
testb $0x1, %r13b
movq 0x28(%rsp), %r15
je 0x655c
movl $0x1, %ebp
movq 0x30(%rsp), %rax
testq %r14, %r14
jne 0x6557
cmpq $0x1, %rbx
movq 0x8(%rsp), %r13
movq 0x18(%rsp), %r14
ja 0x6550
movb $0x2, (%r13,%rax)
movl $0x3, %edx
movq %r13, %rdi
movl $0x1, %esi
callq 0x519a
movq 0x38(%rsp), %rbx
movq 0x30(%rsp), %rax
movb $0x0, (%r13,%rax)
testb $0x1, %dl
je 0x6582
movl $0xfffffc18, 0xe8(%rsp) # imm = 0xFFFFFC18
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
callq 0xa18a
xorl %ebp, %ebp
jmp 0x656b
movq %rax, 0x68(%rsp)
jmp 0x6566
movq %rax, 0x68(%rsp)
movq 0x8(%rsp), %r13
movq 0x18(%rsp), %r14
movq 0x38(%rsp), %rbx
cmpl $0x16, %ebp
je 0x6574
testl %ebp, %ebp
jne 0x65bc
incq %r14
cmpq %rbx, %r14
jne 0x6414
jmp 0x65a1
movq 0x98(%rsp), %rcx
leaq (%rcx,%rax,8), %rdx
xorl %ebp, %ebp
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0xa1b2
jmp 0x656b
movq 0x20(%rsp), %r12
movq 0x48(%rsp), %r15
movq 0x90(%rsp), %rbx
xorl %ecx, %ecx
movl $0x15, %ebp
jmp 0x65d0
movq 0x20(%rsp), %r12
movq 0x48(%rsp), %r15
movq 0x90(%rsp), %rbx
xorl %ecx, %ecx
cmpl $0x15, %ebp
cmovel %ecx, %ebp
testl %ebp, %ebp
jne 0x65eb
incq %r15
cmpq %rbx, %r15
jne 0x63da
movl $0x13, %ebp
cmpl $0x13, %ebp
sete %al
testb %al, %al
je 0x63bc
movq 0x50(%rsp), %rbx
movq 0x58(%rsp), %r14
cmpq %r14, %rbx
je 0x6635
movq %r14, %rax
subq %rbx, %rax
sarq $0x4, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %rbx, %rdi
movq %r14, %rsi
callq 0xaef0
movq %rbx, %rdi
movq %r14, %rsi
callq 0xaff4
movq 0x50(%rsp), %r14
movq 0x58(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq %rax, %r14
sete %r15b
je 0x6814
decq %r12
movq %r12, 0x20(%rsp)
movl $0xfffffc17, %ebp       # imm = 0xFFFFFC17
movb 0xe1(%r13), %al
movq (%r14), %rcx
movb %al, (%r13,%rcx)
xorl %esi, %esi
cmpb $0x1, 0xe1(%r13)
sete %sil
incl %esi
movq %r13, %rdi
movq 0x20(%rsp), %rdx
movl $0xfffffc17, %ecx       # imm = 0xFFFFFC17
movl $0x3e9, %r8d            # imm = 0x3E9
callq 0xa1da
movl %eax, %r12d
movq (%r14), %rsi
movzbl 0xe1(%r13), %edx
movq %r13, %rdi
callq 0x9faa
movl %eax, %ebx
subl %r12d, %ebx
movq (%r14), %rax
movb $0x0, (%r13,%rax)
cmpl $0x3e8, %ebx            # imm = 0x3E8
jne 0x66cb
movq %rax, 0x68(%rsp)
jmp 0x67f7
cmpl %ebx, %ebp
jge 0x6756
cmpb $0x0, 0x44(%rsp)
je 0x6741
movq 0x9907(%rip), %rcx      # 0xffe8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x21c0
movsbl %al, %esi
movq 0x98e9(%rip), %rdi      # 0xffe8
callq 0x2030
movq %rax, %rdi
callq 0x2150
movq %rax, %r12
movl $0x2, %edx
movq %rax, %rdi
leaq 0x5c8d(%rip), %rsi      # 0xc3ab
callq 0x2210
movq %r12, %rdi
movl %ebx, %esi
callq 0x2320
movl $0x3, %edx
movq %rax, %rdi
leaq 0x5a3d(%rip), %rsi      # 0xc179
callq 0x2210
movq 0x70(%rsp), %rax
movl %ebx, %ebp
cmpq %rax, 0x78(%rsp)
je 0x6756
movq %rax, 0x78(%rsp)
movl %ebx, %ebp
cmpl %ebx, %ebp
jne 0x67f7
cmpb $0x0, 0x44(%rsp)
je 0x67ca
movq (%r14), %rsi
leaq 0xe8(%rsp), %rdi
callq 0x271c
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
movq 0x985c(%rip), %rdi      # 0xffe8
callq 0x2210
movl $0x2, %edx
movq %rax, %rdi
leaq 0x5c0e(%rip), %rsi      # 0xc3ae
callq 0x2210
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x67ca
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21f0
movq 0x78(%rsp), %rsi
cmpq 0x80(%rsp), %rsi
je 0x67ea
movq (%r14), %rax
movq %rax, (%rsi)
addq $0x8, %rsi
movq %rsi, 0x78(%rsp)
jmp 0x67f7
leaq 0x70(%rsp), %rdi
movq %r14, %rdx
callq 0xabcc
cmpl $0x3e8, %ebx            # imm = 0x3E8
je 0x6819
addq $0x10, %r14
cmpq 0x8(%rsp), %r14
sete %r15b
jne 0x665e
jmp 0x6819
movl $0xfffffc17, %ebp       # imm = 0xFFFFFC17
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x6830
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
movb $0x1, %bl
testb $0x1, %r15b
movq 0x68(%rsp), %r14
movl %ebp, %r12d
je 0x6898
cmpl $0xfffffc18, %r12d      # imm = 0xFFFFFC18
jne 0x6851
movl $0xe1, %r14d
jmp 0x6896
movq 0x78(%rsp), %rax
subq 0x70(%rsp), %rax
je 0x6893
sarq $0x3, %rax
decq %rax
leaq 0xe8(%rsp), %rdi
movq $0x0, (%rdi)
movq %rax, 0x8(%rdi)
leaq 0xad02(%rip), %rsi      # 0x11580
movq %rdi, %rdx
callq 0x6d2e
movq 0x70(%rsp), %rcx
movq (%rcx,%rax,8), %r14
movb $0x1, %bl
jmp 0x6898
xorl %r14d, %r14d
xorl %ebx, %ebx
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x68b2
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
movq %r14, %rax
movl %ebx, %edx
addq $0x188, %rsp            # imm = 0x188
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x6940
jmp 0x68d3
jmp 0x6940
jmp 0x6940
jmp 0x6940
movq %rax, %rbx
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x6963
movq 0xf8(%rsp), %rsi
incq %rsi
jmp 0x695e
jmp 0x6940
jmp 0x6949
jmp 0x6949
jmp 0x6940
movq %rax, %rbx
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x694c
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21f0
jmp 0x694c
jmp 0x6940
jmp 0x6949
jmp 0x6940
jmp 0x6949
jmp 0x6949
jmp 0x6949
jmp 0x6949
jmp 0x6940
jmp 0x6940
jmp 0x6940
jmp 0x6949
movq %rax, %rbx
jmp 0x6963
jmp 0x6949
jmp 0x6949
movq %rax, %rbx
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x6963
movq 0x60(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x697d
movq 0x80(%rsp), %rsi
subq %rdi, %rsi
callq 0x21f0
movq %rbx, %rdi
callq 0x2330
nop