// File: YSRKEN[P]Shioi/I401/main.cpp
// Function: Board::FindGorenMove(Stone)
Result FindGorenMove(const Stone turn) {
		// Row(─)
		for (size_t i : rep(kBoardSize)) {
			for (size_t j : rep(kBoardSize)) {
				size_t p = ToPosition(j, i);
				if (board_[p] != Stone::None) continue;
				size_t rlengh = 0;
				for (int k = j - 1; k >= 0; --k) {
					if (board_[ToPosition(k, i)] != turn) break;
					++rlengh;
				}
				size_t llengh = 0;
				for (size_t k : rep(j + 1, kBoardSize)) {
					if (board_[ToPosition(k, i)] != turn) break;
					++llengh;
				}
				if (turn == Stone::Black) {
					if (rlengh + llengh == 4) return Result(p, true);
				}
				else {
					if (rlengh + llengh >= 4) return Result(p, true);
				}
			}
		}
		// Column(│)
		for (size_t i : rep(kBoardSize)) {
			for (size_t j : rep(kBoardSize)) {
				size_t p = ToPosition(i, j);
				if (board_[p] != Stone::None) continue;
				size_t rlengh = 0;
				for (int k = j - 1; k >= 0; --k) {
					if (board_[ToPosition(i, k)] != turn) break;
					++rlengh;
				}
				size_t llengh = 0;
				for (size_t k : rep(j + 1, kBoardSize)) {
					if (board_[ToPosition(i, k)] != turn) break;
					++llengh;
				}
				if (turn == Stone::Black) {
					if (rlengh + llengh == 4) return Result(p, true);
				}
				else {
					if (rlengh + llengh >= 4) return Result(p, true);
				}
			}
		}
		// Diagonally right(／)
		for (size_t i : rep(4_sz, kBoardSize)) {
			for (size_t j : rep(i)) {
				size_t p = ToPosition(i - j, j);
				if (board_[p] != Stone::None) continue;
				size_t rlengh = 0;
				for (int k = j - 1; k >= 0; --k) {
					if (board_[ToPosition(i - k, k)] != turn) break;
					++rlengh;
				}
				size_t llengh = 0;
				for (size_t k = j + 1; k <= i; ++k) {
					if (board_[ToPosition(i - k, k)] != turn) break;
					++llengh;
				}
				if (turn == Stone::Black) {
					if (rlengh + llengh == 4) return Result(p, true);
				}
				else {
					if (rlengh + llengh >= 4) return Result(p, true);
				}
			}
		}
		for (size_t i : rep(1_sz, kBoardSize - 4_sz)) {
			for (size_t j : rep(kBoardSize - i)) {
				size_t p = ToPosition(kBoardSize - 1 - j, i + j);
				if (board_[p] != Stone::None) continue;
				size_t rlengh = 0;
				for (int k = j - 1; k >= 0; --k) {
					if (board_[ToPosition(kBoardSize - 1 - k, i + k)] != turn) break;
					++rlengh;
				}
				size_t llengh = 0;
				for (size_t k : rep(j + 1, kBoardSize - i)) {
					if (board_[ToPosition(kBoardSize - 1 - k, i + k)] != turn) break;
					++llengh;
				}
				if (turn == Stone::Black) {
					if (rlengh + llengh == 4) return Result(p, true);
				}
				else {
					if (rlengh + llengh >= 4) return Result(p, true);
				}
			}
		}
		// Diagonally left(＼)
		for (size_t i : rep(kBoardSize - 4_sz)) {
			for (size_t j : rep(kBoardSize - i)) {
				size_t p = ToPosition(i + j, j);
				if (board_[p] != Stone::None) continue;
				size_t rlengh = 0;
				for (int k = j - 1; k >= 0; --k) {
					if (board_[ToPosition(i + k, k)] != turn) break;
					++rlengh;
				}
				size_t llengh = 0;
				for (size_t k : rep(j + 1, kBoardSize - i)) {
					if (board_[ToPosition(i + k, k)] != turn) break;
					++llengh;
				}
				if (turn == Stone::Black) {
					if (rlengh + llengh == 4) return Result(p, true);
				}
				else {
					if (rlengh + llengh >= 4) return Result(p, true);
				}
			}
		}
		for (size_t i : rep(1_sz, kBoardSize - 4_sz)) {
			for (size_t j : rep(kBoardSize - i)) {
				size_t p = ToPosition(j, i + j);
				if (board_[p] != Stone::None) continue;
				size_t rlengh = 0;
				for (int k = j - 1; k >= 0; --k) {
					if (board_[ToPosition(k, i + k)] != turn) break;
					++rlengh;
				}
				size_t llengh = 0;
				for (size_t k : rep(j + 1, kBoardSize - i)) {
					if (board_[ToPosition(k, i + k)] != turn) break;
					++llengh;
				}
				if (turn == Stone::Black) {
					if (rlengh + llengh == 4) return Result(p, true);
				}
				else {
					if (rlengh + llengh >= 4) return Result(p, true);
				}
			}
		}
		return Result(0, false);
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4c0, %rsp            # imm = 0x4C0
movb %sil, %al
movq %rdi, -0x18(%rbp)
movb %al, -0x19(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x4c0(%rbp)
movl $0xf, %edi
callq 0x54a0
movq %rax, -0x38(%rbp)
movq %rdx, -0x30(%rbp)
leaq -0x38(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x54e0
movq %rax, -0x40(%rbp)
movq -0x28(%rbp), %rdi
callq 0x5510
movq %rax, -0x48(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0x9b4a
jmp 0x9dde
leaq -0x40(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movl $0xf, %edi
callq 0x54a0
movq %rax, -0x68(%rbp)
movq %rdx, -0x60(%rbp)
leaq -0x68(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rdi
callq 0x54e0
movq %rax, -0x70(%rbp)
movq -0x58(%rbp), %rdi
callq 0x5510
movq %rax, -0x78(%rbp)
leaq -0x70(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0x9ba4
jmp 0x9dce
leaq -0x70(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x80(%rbp)
movq -0x80(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rsi
callq 0x5590
movzbl (%rax), %eax
cmpl $0x0, %eax
je 0x9be8
jmp 0x9dc0
movq $0x0, -0x90(%rbp)
movq -0x80(%rbp), %rax
subq $0x1, %rax
movl %eax, -0x94(%rbp)
cmpl $0x0, -0x94(%rbp)
jl 0x9c59
movslq -0x94(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, %rsi
callq 0x5590
movzbl (%rax), %eax
movzbl -0x19(%rbp), %ecx
cmpl %ecx, %eax
je 0x9c36
jmp 0x9c59
movq -0x90(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x90(%rbp)
movl -0x94(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x94(%rbp)
jmp 0x9c01
movq $0x0, -0xa0(%rbp)
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xc0(%rbp)
leaq -0xc0(%rbp), %rdi
leaq 0x1473f(%rip), %rsi     # 0x1e3c0
callq 0xec40
movq %rax, -0xb8(%rbp)
movq %rdx, -0xb0(%rbp)
leaq -0xb8(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rdi
callq 0x54e0
movq %rax, -0xc8(%rbp)
movq -0xa8(%rbp), %rdi
callq 0x5510
movq %rax, -0xd0(%rbp)
leaq -0xc8(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0x9ce1
jmp 0x9d43
leaq -0xc8(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0xd8(%rbp)
movq -0xd8(%rbp), %rdi
movq -0x50(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, %rsi
callq 0x5590
movzbl (%rax), %eax
movzbl -0x19(%rbp), %ecx
cmpl %ecx, %eax
je 0x9d23
jmp 0x9d43
movq -0xa0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xa0(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x55c0
jmp 0x9cc8
movzbl -0x19(%rbp), %eax
cmpl $0x1, %eax
jne 0x9d85
movq -0x90(%rbp), %rax
addq -0xa0(%rbp), %rax
cmpq $0x4, %rax
jne 0x9d83
movb $0x1, -0xd9(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x88(%rbp), %rsi
leaq -0xd9(%rbp), %rdx
callq 0xec80
jmp 0xaf29
jmp 0x9dbe
movq -0x90(%rbp), %rax
addq -0xa0(%rbp), %rax
cmpq $0x4, %rax
jb 0x9dbc
movb $0x1, -0xda(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x88(%rbp), %rsi
leaq -0xda(%rbp), %rdx
callq 0xec80
jmp 0xaf29
jmp 0x9dbe
jmp 0x9dc0
leaq -0x70(%rbp), %rdi
callq 0x55c0
jmp 0x9b8e
jmp 0x9dd0
leaq -0x40(%rbp), %rdi
callq 0x55c0
jmp 0x9b34
movl $0xf, %edi
callq 0x54a0
movq %rax, -0xf8(%rbp)
movq %rdx, -0xf0(%rbp)
leaq -0xf8(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rdi
callq 0x54e0
movq %rax, -0x100(%rbp)
movq -0xe8(%rbp), %rdi
callq 0x5510
movq %rax, -0x108(%rbp)
leaq -0x100(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0x9e46
jmp 0xa11c
leaq -0x100(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x110(%rbp)
movl $0xf, %edi
callq 0x54a0
movq %rax, -0x128(%rbp)
movq %rdx, -0x120(%rbp)
leaq -0x128(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x118(%rbp), %rdi
callq 0x54e0
movq %rax, -0x130(%rbp)
movq -0x118(%rbp), %rdi
callq 0x5510
movq %rax, -0x138(%rbp)
leaq -0x130(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0x9ec4
jmp 0xa109
leaq -0x130(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x140(%rbp)
movq -0x110(%rbp), %rdi
movq -0x140(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, -0x148(%rbp)
movq -0x148(%rbp), %rsi
callq 0x5590
movzbl (%rax), %eax
cmpl $0x0, %eax
je 0x9f14
jmp 0xa0f8
movq $0x0, -0x150(%rbp)
movq -0x140(%rbp), %rax
subq $0x1, %rax
movl %eax, -0x154(%rbp)
cmpl $0x0, -0x154(%rbp)
jl 0x9f8b
movq -0x110(%rbp), %rdi
movslq -0x154(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, %rsi
callq 0x5590
movzbl (%rax), %eax
movzbl -0x19(%rbp), %ecx
cmpl %ecx, %eax
je 0x9f68
jmp 0x9f8b
movq -0x150(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x150(%rbp)
movl -0x154(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x154(%rbp)
jmp 0x9f30
movq $0x0, -0x160(%rbp)
movq -0x140(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x180(%rbp)
leaq -0x180(%rbp), %rdi
leaq 0x1440a(%rip), %rsi     # 0x1e3c0
callq 0xec40
movq %rax, -0x178(%rbp)
movq %rdx, -0x170(%rbp)
leaq -0x178(%rbp), %rax
movq %rax, -0x168(%rbp)
movq -0x168(%rbp), %rdi
callq 0x54e0
movq %rax, -0x188(%rbp)
movq -0x168(%rbp), %rdi
callq 0x5510
movq %rax, -0x190(%rbp)
leaq -0x188(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0xa016
jmp 0xa07b
leaq -0x188(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x198(%rbp)
movq -0x110(%rbp), %rdi
movq -0x198(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, %rsi
callq 0x5590
movzbl (%rax), %eax
movzbl -0x19(%rbp), %ecx
cmpl %ecx, %eax
je 0xa05b
jmp 0xa07b
movq -0x160(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x160(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x55c0
jmp 0x9ffd
movzbl -0x19(%rbp), %eax
cmpl $0x1, %eax
jne 0xa0bd
movq -0x150(%rbp), %rax
addq -0x160(%rbp), %rax
cmpq $0x4, %rax
jne 0xa0bb
movb $0x1, -0x199(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x148(%rbp), %rsi
leaq -0x199(%rbp), %rdx
callq 0xec80
jmp 0xaf29
jmp 0xa0f6
movq -0x150(%rbp), %rax
addq -0x160(%rbp), %rax
cmpq $0x4, %rax
jb 0xa0f4
movb $0x1, -0x19a(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x148(%rbp), %rsi
leaq -0x19a(%rbp), %rdx
callq 0xec80
jmp 0xaf29
jmp 0xa0f6
jmp 0xa0f8
leaq -0x130(%rbp), %rdi
callq 0x55c0
jmp 0x9ea8
jmp 0xa10b
leaq -0x100(%rbp), %rdi
callq 0x55c0
jmp 0x9e2a
movl $0x4, %edi
callq 0xecb0
movq %rax, -0x1c0(%rbp)
leaq -0x1c0(%rbp), %rdi
leaq 0x14285(%rip), %rsi     # 0x1e3c0
callq 0xec40
movq %rax, -0x1b8(%rbp)
movq %rdx, -0x1b0(%rbp)
leaq -0x1b8(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movq -0x1a8(%rbp), %rdi
callq 0x54e0
movq %rax, -0x1c8(%rbp)
movq -0x1a8(%rbp), %rdi
callq 0x5510
movq %rax, -0x1d0(%rbp)
leaq -0x1c8(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0xa19e
jmp 0xa420
leaq -0x1c8(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x1d8(%rbp)
movq -0x1d8(%rbp), %rdi
callq 0x54a0
movq %rax, -0x1f0(%rbp)
movq %rdx, -0x1e8(%rbp)
leaq -0x1f0(%rbp), %rax
movq %rax, -0x1e0(%rbp)
movq -0x1e0(%rbp), %rdi
callq 0x54e0
movq %rax, -0x1f8(%rbp)
movq -0x1e0(%rbp), %rdi
callq 0x5510
movq %rax, -0x200(%rbp)
leaq -0x1f8(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0xa21e
jmp 0xa40d
leaq -0x1f8(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x208(%rbp)
movq -0x1d8(%rbp), %rdi
subq -0x208(%rbp), %rdi
movq -0x208(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, -0x210(%rbp)
movq -0x210(%rbp), %rsi
callq 0x5590
movzbl (%rax), %eax
cmpl $0x0, %eax
je 0xa275
jmp 0xa3fc
movq $0x0, -0x218(%rbp)
movq -0x208(%rbp), %rax
subq $0x1, %rax
movl %eax, -0x21c(%rbp)
cmpl $0x0, -0x21c(%rbp)
jl 0xa2f6
movq -0x1d8(%rbp), %rdi
movslq -0x21c(%rbp), %rax
subq %rax, %rdi
movslq -0x21c(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, %rsi
callq 0x5590
movzbl (%rax), %eax
movzbl -0x19(%rbp), %ecx
cmpl %ecx, %eax
je 0xa2d3
jmp 0xa2f6
movq -0x218(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x218(%rbp)
movl -0x21c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x21c(%rbp)
jmp 0xa291
movq $0x0, -0x228(%rbp)
movq -0x208(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x230(%rbp)
movq -0x230(%rbp), %rax
cmpq -0x1d8(%rbp), %rax
ja 0xa37f
movq -0x1d8(%rbp), %rdi
subq -0x230(%rbp), %rdi
movq -0x230(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, %rsi
callq 0x5590
movzbl (%rax), %eax
movzbl -0x19(%rbp), %ecx
cmpl %ecx, %eax
je 0xa359
jmp 0xa37f
movq -0x228(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x228(%rbp)
movq -0x230(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x230(%rbp)
jmp 0xa313
movzbl -0x19(%rbp), %eax
cmpl $0x1, %eax
jne 0xa3c1
movq -0x218(%rbp), %rax
addq -0x228(%rbp), %rax
cmpq $0x4, %rax
jne 0xa3bf
movb $0x1, -0x231(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x210(%rbp), %rsi
leaq -0x231(%rbp), %rdx
callq 0xec80
jmp 0xaf29
jmp 0xa3fa
movq -0x218(%rbp), %rax
addq -0x228(%rbp), %rax
cmpq $0x4, %rax
jb 0xa3f8
movb $0x1, -0x232(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x210(%rbp), %rsi
leaq -0x232(%rbp), %rdx
callq 0xec80
jmp 0xaf29
jmp 0xa3fa
jmp 0xa3fc
leaq -0x1f8(%rbp), %rdi
callq 0x55c0
jmp 0xa202
jmp 0xa40f
leaq -0x1c8(%rbp), %rdi
callq 0x55c0
jmp 0xa182
movl $0x1, %edi
callq 0xecb0
movq %rax, -0x258(%rbp)
movl $0x4, %edi
callq 0xecb0
movq %rax, %rcx
movl $0xf, %eax
subq %rcx, %rax
movq %rax, -0x260(%rbp)
leaq -0x258(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0xec40
movq %rax, -0x250(%rbp)
movq %rdx, -0x248(%rbp)
leaq -0x250(%rbp), %rax
movq %rax, -0x240(%rbp)
movq -0x240(%rbp), %rdi
callq 0x54e0
movq %rax, -0x268(%rbp)
movq -0x240(%rbp), %rdi
callq 0x5510
movq %rax, -0x270(%rbp)
leaq -0x268(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0xa4be
jmp 0xa7db
leaq -0x268(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x278(%rbp)
movl $0xf, %edi
subq -0x278(%rbp), %rdi
callq 0x54a0
movq %rax, -0x290(%rbp)
movq %rdx, -0x288(%rbp)
leaq -0x290(%rbp), %rax
movq %rax, -0x280(%rbp)
movq -0x280(%rbp), %rdi
callq 0x54e0
movq %rax, -0x298(%rbp)
movq -0x280(%rbp), %rdi
callq 0x5510
movq %rax, -0x2a0(%rbp)
leaq -0x298(%rbp), %rdi
leaq -0x2a0(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0xa543
jmp 0xa7c8
leaq -0x298(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x2a8(%rbp)
movl $0xe, %edi
subq -0x2a8(%rbp), %rdi
movq -0x278(%rbp), %rsi
addq -0x2a8(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, -0x2b0(%rbp)
movq -0x2b0(%rbp), %rsi
callq 0x5590
movzbl (%rax), %eax
cmpl $0x0, %eax
je 0xa59f
jmp 0xa7b7
movq $0x0, -0x2b8(%rbp)
movq -0x2a8(%rbp), %rax
subq $0x1, %rax
movl %eax, -0x2bc(%rbp)
cmpl $0x0, -0x2bc(%rbp)
jl 0xa628
movslq -0x2bc(%rbp), %rax
movl $0xe, %edi
subq %rax, %rdi
movq -0x278(%rbp), %rsi
movslq -0x2bc(%rbp), %rax
addq %rax, %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, %rsi
callq 0x5590
movzbl (%rax), %eax
movzbl -0x19(%rbp), %ecx
cmpl %ecx, %eax
je 0xa605
jmp 0xa628
movq -0x2b8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x2b8(%rbp)
movl -0x2bc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x2bc(%rbp)
jmp 0xa5bb
movq $0x0, -0x2c8(%rbp)
movq -0x2a8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x2e8(%rbp)
movl $0xf, %eax
subq -0x278(%rbp), %rax
movq %rax, -0x2f0(%rbp)
leaq -0x2e8(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0xec40
movq %rax, -0x2e0(%rbp)
movq %rdx, -0x2d8(%rbp)
leaq -0x2e0(%rbp), %rax
movq %rax, -0x2d0(%rbp)
movq -0x2d0(%rbp), %rdi
callq 0x54e0
movq %rax, -0x2f8(%rbp)
movq -0x2d0(%rbp), %rdi
callq 0x5510
movq %rax, -0x300(%rbp)
leaq -0x2f8(%rbp), %rdi
leaq -0x300(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0xa6c6
jmp 0xa73a
leaq -0x2f8(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x308(%rbp)
movl $0xe, %edi
subq -0x308(%rbp), %rdi
movq -0x278(%rbp), %rsi
addq -0x308(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, %rsi
callq 0x5590
movzbl (%rax), %eax
movzbl -0x19(%rbp), %ecx
cmpl %ecx, %eax
je 0xa717
jmp 0xa73a
movq -0x2c8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x2c8(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x55c0
jmp 0xa6ad
movzbl -0x19(%rbp), %eax
cmpl $0x1, %eax
jne 0xa77c
movq -0x2b8(%rbp), %rax
addq -0x2c8(%rbp), %rax
cmpq $0x4, %rax
jne 0xa77a
movb $0x1, -0x309(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
leaq -0x309(%rbp), %rdx
callq 0xec80
jmp 0xaf29
jmp 0xa7b5
movq -0x2b8(%rbp), %rax
addq -0x2c8(%rbp), %rax
cmpq $0x4, %rax
jb 0xa7b3
movb $0x1, -0x30a(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
leaq -0x30a(%rbp), %rdx
callq 0xec80
jmp 0xaf29
jmp 0xa7b5
jmp 0xa7b7
leaq -0x298(%rbp), %rdi
callq 0x55c0
jmp 0xa527
jmp 0xa7ca
leaq -0x268(%rbp), %rdi
callq 0x55c0
jmp 0xa4a2
movl $0x4, %edi
callq 0xecb0
movl $0xf, %edi
subq %rax, %rdi
callq 0x54a0
movq %rax, -0x328(%rbp)
movq %rdx, -0x320(%rbp)
leaq -0x328(%rbp), %rax
movq %rax, -0x318(%rbp)
movq -0x318(%rbp), %rdi
callq 0x54e0
movq %rax, -0x330(%rbp)
movq -0x318(%rbp), %rdi
callq 0x5510
movq %rax, -0x338(%rbp)
leaq -0x330(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0xa850
jmp 0xab5b
leaq -0x330(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x340(%rbp)
movl $0xf, %edi
subq -0x340(%rbp), %rdi
callq 0x54a0
movq %rax, -0x358(%rbp)
movq %rdx, -0x350(%rbp)
leaq -0x358(%rbp), %rax
movq %rax, -0x348(%rbp)
movq -0x348(%rbp), %rdi
callq 0x54e0
movq %rax, -0x360(%rbp)
movq -0x348(%rbp), %rdi
callq 0x5510
movq %rax, -0x368(%rbp)
leaq -0x360(%rbp), %rdi
leaq -0x368(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0xa8d5
jmp 0xab48
leaq -0x360(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x370(%rbp)
movq -0x340(%rbp), %rdi
addq -0x370(%rbp), %rdi
movq -0x370(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, -0x378(%rbp)
movq -0x378(%rbp), %rsi
callq 0x5590
movzbl (%rax), %eax
cmpl $0x0, %eax
je 0xa92c
jmp 0xab37
movq $0x0, -0x380(%rbp)
movq -0x370(%rbp), %rax
subq $0x1, %rax
movl %eax, -0x384(%rbp)
cmpl $0x0, -0x384(%rbp)
jl 0xa9ad
movq -0x340(%rbp), %rdi
movslq -0x384(%rbp), %rax
addq %rax, %rdi
movslq -0x384(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, %rsi
callq 0x5590
movzbl (%rax), %eax
movzbl -0x19(%rbp), %ecx
cmpl %ecx, %eax
je 0xa98a
jmp 0xa9ad
movq -0x380(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x380(%rbp)
movl -0x384(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x384(%rbp)
jmp 0xa948
movq $0x0, -0x390(%rbp)
movq -0x370(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x3b0(%rbp)
movl $0xf, %eax
subq -0x340(%rbp), %rax
movq %rax, -0x3b8(%rbp)
leaq -0x3b0(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
callq 0xec40
movq %rax, -0x3a8(%rbp)
movq %rdx, -0x3a0(%rbp)
leaq -0x3a8(%rbp), %rax
movq %rax, -0x398(%rbp)
movq -0x398(%rbp), %rdi
callq 0x54e0
movq %rax, -0x3c0(%rbp)
movq -0x398(%rbp), %rdi
callq 0x5510
movq %rax, -0x3c8(%rbp)
leaq -0x3c0(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0xaa4b
jmp 0xaaba
leaq -0x3c0(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x3d0(%rbp)
movq -0x340(%rbp), %rdi
addq -0x3d0(%rbp), %rdi
movq -0x3d0(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, %rsi
callq 0x5590
movzbl (%rax), %eax
movzbl -0x19(%rbp), %ecx
cmpl %ecx, %eax
je 0xaa97
jmp 0xaaba
movq -0x390(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x390(%rbp)
leaq -0x3c0(%rbp), %rdi
callq 0x55c0
jmp 0xaa32
movzbl -0x19(%rbp), %eax
cmpl $0x1, %eax
jne 0xaafc
movq -0x380(%rbp), %rax
addq -0x390(%rbp), %rax
cmpq $0x4, %rax
jne 0xaafa
movb $0x1, -0x3d1(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x378(%rbp), %rsi
leaq -0x3d1(%rbp), %rdx
callq 0xec80
jmp 0xaf29
jmp 0xab35
movq -0x380(%rbp), %rax
addq -0x390(%rbp), %rax
cmpq $0x4, %rax
jb 0xab33
movb $0x1, -0x3d2(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x378(%rbp), %rsi
leaq -0x3d2(%rbp), %rdx
callq 0xec80
jmp 0xaf29
jmp 0xab35
jmp 0xab37
leaq -0x360(%rbp), %rdi
callq 0x55c0
jmp 0xa8b9
jmp 0xab4a
leaq -0x330(%rbp), %rdi
callq 0x55c0
jmp 0xa834
movl $0x1, %edi
callq 0xecb0
movq %rax, -0x3f8(%rbp)
movl $0x4, %edi
callq 0xecb0
movq %rax, %rcx
movl $0xf, %eax
subq %rcx, %rax
movq %rax, -0x400(%rbp)
leaq -0x3f8(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0xec40
movq %rax, -0x3f0(%rbp)
movq %rdx, -0x3e8(%rbp)
leaq -0x3f0(%rbp), %rax
movq %rax, -0x3e0(%rbp)
movq -0x3e0(%rbp), %rdi
callq 0x54e0
movq %rax, -0x408(%rbp)
movq -0x3e0(%rbp), %rdi
callq 0x5510
movq %rax, -0x410(%rbp)
leaq -0x408(%rbp), %rdi
leaq -0x410(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0xabf9
jmp 0xaf01
leaq -0x408(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x418(%rbp)
movl $0xf, %edi
subq -0x418(%rbp), %rdi
callq 0x54a0
movq %rax, -0x430(%rbp)
movq %rdx, -0x428(%rbp)
leaq -0x430(%rbp), %rax
movq %rax, -0x420(%rbp)
movq -0x420(%rbp), %rdi
callq 0x54e0
movq %rax, -0x438(%rbp)
movq -0x420(%rbp), %rdi
callq 0x5510
movq %rax, -0x440(%rbp)
leaq -0x438(%rbp), %rdi
leaq -0x440(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0xac7e
jmp 0xaeee
leaq -0x438(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x448(%rbp)
movq -0x448(%rbp), %rdi
movq -0x418(%rbp), %rsi
addq -0x448(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, -0x450(%rbp)
movq -0x450(%rbp), %rsi
callq 0x5590
movzbl (%rax), %eax
cmpl $0x0, %eax
je 0xacd5
jmp 0xaedd
movq $0x0, -0x458(%rbp)
movq -0x448(%rbp), %rax
subq $0x1, %rax
movl %eax, -0x45c(%rbp)
cmpl $0x0, -0x45c(%rbp)
jl 0xad56
movslq -0x45c(%rbp), %rdi
movq -0x418(%rbp), %rsi
movslq -0x45c(%rbp), %rax
addq %rax, %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, %rsi
callq 0x5590
movzbl (%rax), %eax
movzbl -0x19(%rbp), %ecx
cmpl %ecx, %eax
je 0xad33
jmp 0xad56
movq -0x458(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x458(%rbp)
movl -0x45c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x45c(%rbp)
jmp 0xacf1
movq $0x0, -0x468(%rbp)
movq -0x448(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x488(%rbp)
movl $0xf, %eax
subq -0x418(%rbp), %rax
movq %rax, -0x490(%rbp)
leaq -0x488(%rbp), %rdi
leaq -0x490(%rbp), %rsi
callq 0xec40
movq %rax, -0x480(%rbp)
movq %rdx, -0x478(%rbp)
leaq -0x480(%rbp), %rax
movq %rax, -0x470(%rbp)
movq -0x470(%rbp), %rdi
callq 0x54e0
movq %rax, -0x498(%rbp)
movq -0x470(%rbp), %rdi
callq 0x5510
movq %rax, -0x4a0(%rbp)
leaq -0x498(%rbp), %rdi
leaq -0x4a0(%rbp), %rsi
callq 0x5550
testb $0x1, %al
jne 0xadf4
jmp 0xae63
leaq -0x498(%rbp), %rdi
callq 0x5580
movq (%rax), %rax
movq %rax, -0x4a8(%rbp)
movq -0x4a8(%rbp), %rdi
movq -0x418(%rbp), %rsi
addq -0x4a8(%rbp), %rsi
callq 0x3100
movq -0x4c0(%rbp), %rdi
movq %rax, %rsi
callq 0x5590
movzbl (%rax), %eax
movzbl -0x19(%rbp), %ecx
cmpl %ecx, %eax
je 0xae40
jmp 0xae63
movq -0x468(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x468(%rbp)
leaq -0x498(%rbp), %rdi
callq 0x55c0
jmp 0xaddb
movzbl -0x19(%rbp), %eax
cmpl $0x1, %eax
jne 0xaea5
movq -0x458(%rbp), %rax
addq -0x468(%rbp), %rax
cmpq $0x4, %rax
jne 0xaea3
movb $0x1, -0x4a9(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x450(%rbp), %rsi
leaq -0x4a9(%rbp), %rdx
callq 0xec80
jmp 0xaf29
jmp 0xaedb
movq -0x458(%rbp), %rax
addq -0x468(%rbp), %rax
cmpq $0x4, %rax
jb 0xaed9
movb $0x1, -0x4aa(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x450(%rbp), %rsi
leaq -0x4aa(%rbp), %rdx
callq 0xec80
jmp 0xaf29
jmp 0xaedb
jmp 0xaedd
leaq -0x438(%rbp), %rdi
callq 0x55c0
jmp 0xac62
jmp 0xaef0
leaq -0x408(%rbp), %rdi
callq 0x55c0
jmp 0xabdd
movl $0x0, -0x4b0(%rbp)
movb $0x0, -0x4b1(%rbp)
leaq -0x10(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
leaq -0x4b1(%rbp), %rdx
callq 0xecc0
movq -0x10(%rbp), %rax
movb -0x8(%rbp), %dl
addq $0x4c0, %rsp            # imm = 0x4C0
popq %rbp
retq
nopl (%rax)