// File: /workspace/github_cpp_makefile_star2_O2/tewalds[P]morat/pentago/gtp.h
// Function: Morat::Pentago::GTP::GTP(_IO_FILE*, _IO_FILE*)
GTP(FILE * i = stdin, FILE * o = stdout) : GTPCommon(i, o), hist(Board(Board::default_size)) {
		verbose = 1;
		colorboard = true;

		mem_allowed = 1000;

		agent = new AgentMCTS();

		set_board();

		newcallback("name",            std::bind(&GTP::gtp_name,          this, _1), "Name of the program");
		newcallback("version",         std::bind(&GTP::gtp_version,       this, _1), "Version of the program");
		newcallback("verbose",         std::bind(&GTP::gtp_verbose,       this, _1), "Set verbosity, 0 for quiet, 1 for normal, 2+ for more output");
		newcallback("colorboard",      std::bind(&GTP::gtp_colorboard,    this, _1), "Turn on or off the colored board");
		newcallback("showboard",       std::bind(&GTP::gtp_print,         this, _1), "Show the board");
		newcallback("print",           std::bind(&GTP::gtp_print,         this, _1), "Alias for showboard");
		newcallback("state",           std::bind(&GTP::gtp_state,         this, _1), "Output the board state in a simpler form than print, or set the board state");
		newcallback("hash",            std::bind(&GTP::gtp_hash,          this, _1), "Output the hash for the current position");
		newcallback("clear_board",     std::bind(&GTP::gtp_clearboard,    this, _1), "Clear the board, but keep the size");
		newcallback("clear",           std::bind(&GTP::gtp_clearboard,    this, _1), "Alias for clear_board");
		newcallback("boardsize",       std::bind(&GTP::gtp_clearboard,    this, _1), "Alias for clear_board, board is fixed size");
		newcallback("size",            std::bind(&GTP::gtp_clearboard,    this, _1), "Alias for board_size");
		newcallback("play",            std::bind(&GTP::gtp_play,          this, _1), "Place a stone: play <color> <location>");
		newcallback("white",           std::bind(&GTP::gtp_playwhite,     this, _1), "Place a white stone: white <location>");
		newcallback("black",           std::bind(&GTP::gtp_playblack,     this, _1), "Place a black stone: black <location>");
		newcallback("undo",            std::bind(&GTP::gtp_undo,          this, _1), "Undo one or more moves: undo [amount to undo]");
		newcallback("time",            std::bind(&GTP::gtp_time,          this, _1), "Set the time limits and the algorithm for per game time");
		newcallback("genmove",         std::bind(&GTP::gtp_genmove,       this, _1), "Generate a move: genmove [color] [time]");
		newcallback("solve",           std::bind(&GTP::gtp_solve,         this, _1), "Try to solve this position");

		newcallback("ab",              std::bind(&GTP::gtp_ab,            this, _1), "Switch to use the Alpha/Beta agent to play/solve");
		newcallback("mcts",            std::bind(&GTP::gtp_mcts,          this, _1), "Switch to use the Monte Carlo Tree Search agent to play/solve");
		newcallback("pns",             std::bind(&GTP::gtp_pns,           this, _1), "Switch to use the Proof Number Search agent to play/solve");

		newcallback("all_legal",       std::bind(&GTP::gtp_all_legal,     this, _1), "List all legal moves");
		newcallback("history",         std::bind(&GTP::gtp_history,       this, _1), "List of played moves");
		newcallback("playgame",        std::bind(&GTP::gtp_playgame,      this, _1), "Play a list of moves");
		newcallback("winner",          std::bind(&GTP::gtp_winner,        this, _1), "Check the winner of the game");

		newcallback("pv",              std::bind(&GTP::gtp_pv,            this, _1), "Output the principle variation for the player tree as it stands now");
		newcallback("move_stats",      std::bind(&GTP::gtp_move_stats,    this, _1), "Output the move stats for the player tree as it stands now");

		newcallback("params",          std::bind(&GTP::gtp_params,        this, _1), "Set the options for the player, no args gives options");

		newcallback("save_sgf",        std::bind(&GTP::gtp_save_sgf,      this, _1), "Output an sgf of the current tree");
		newcallback("load_sgf",        std::bind(&GTP::gtp_load_sgf,      this, _1), "Load an sgf generated by save_sgf");
	}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x828, %rsp            # imm = 0x828
movq %rdi, %rbx
callq 0x7bfc
leaq 0x1e93d(%rip), %rsi     # 0x24786
leaq 0x808(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq 0x5130
leaq 0x1edb0(%rip), %rax     # 0x24c12
leaq 0x1edac(%rip), %rcx     # 0x24c15
leaq 0x68(%rbx), %r14
vxorps %xmm0, %xmm0, %xmm0
leaq 0x808(%rsp), %rdi
movb (%rax), %al
movb (%rcx), %cl
vmovups %ymm0, 0x11(%r14)
vmovups %ymm0, (%r14)
movb %al, 0x99(%rbx)
movb %cl, 0x9a(%rbx)
movw $0xdead, 0x9c(%rbx)     # imm = 0xDEAD
andq $0x0, 0xa0(%rbx)
vzeroupper
callq 0x5170
movl $0x1, 0xa8(%rbx)
movb $0x1, 0xac(%rbx)
movl $0x3e8, 0xb0(%rbx)      # imm = 0x3E8
movl $0x1590, %edi           # imm = 0x1590
callq 0x5360
movq %rax, %rdi
movq %rax, %r12
callq 0xd02c
movq %r12, 0xb8(%rbx)
leaq 0x80(%rbx), %rsi
movq (%r12), %rax
pushq $0x1
popq %rdx
movq %r12, %rdi
callq *0x20(%rax)
leaq 0x192e2(%rip), %rsi     # 0x1f1e1
leaq 0x7e8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x11a20(%rip), %rax     # 0x17938
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x192ac(%rip), %rsi     # 0x1f1e6
leaq 0x7c8(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x7e8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x7c8(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x7c8(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x7e8(%rsp), %rdi
callq 0x5170
leaq 0x19851(%rip), %rsi     # 0x1f7e5
leaq 0x7a8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x11a15(%rip), %rax     # 0x179c2
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x1922b(%rip), %rsi     # 0x1f1fa
leaq 0x788(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x7a8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x788(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x788(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x7a8(%rsp), %rdi
callq 0x5170
leaq 0x19148(%rip), %rsi     # 0x1f171
leaq 0x768(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x119dc(%rip), %rax     # 0x17a1e
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x191ad(%rip), %rsi     # 0x1f211
leaq 0x748(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x768(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x748(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x748(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x768(%rsp), %rdi
callq 0x5170
leaq 0x19190(%rip), %rsi     # 0x1f24e
leaq 0x728(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x119f7(%rip), %rax     # 0x17ace
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x19160(%rip), %rsi     # 0x1f259
leaq 0x708(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x728(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x708(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x708(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x728(%rsp), %rdi
callq 0x5170
leaq 0x19146(%rip), %rsi     # 0x1f299
leaq 0x6e8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x10c36(%rip), %r15     # 0x16da2
leaq 0x30(%rsp), %rsi
movq %r15, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x190ec(%rip), %rsi     # 0x1f27a
leaq 0x6c8(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x6e8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x6c8(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x6c8(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x6e8(%rsp), %rdi
callq 0x5170
leaq 0x190a1(%rip), %rsi     # 0x1f289
leaq 0x6a8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x30(%rsp), %rsi
movq %r15, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x19073(%rip), %rsi     # 0x1f28f
leaq 0x688(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x6a8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x688(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x688(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x6a8(%rsp), %rdi
callq 0x5170
leaq 0x19073(%rip), %rsi     # 0x1f2e9
leaq 0x668(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x10abf(%rip), %rax     # 0x16d4e
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18ff2(%rip), %rsi     # 0x1f2a3
leaq 0x648(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x668(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x648(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x648(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x668(%rsp), %rdi
callq 0x5170
leaq 0x18fe4(%rip), %rsi     # 0x1f2ef
leaq 0x628(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x11864(%rip), %rax     # 0x17b88
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18fae(%rip), %rsi     # 0x1f2f4
leaq 0x608(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x628(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x608(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x608(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x628(%rsp), %rdi
callq 0x5170
leaq 0x18fb0(%rip), %rsi     # 0x1f350
leaq 0x5e8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x10b09(%rip), %r15     # 0x16ec2
leaq 0x30(%rsp), %rsi
movq %r15, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18f42(%rip), %rsi     # 0x1f31d
leaq 0x5c8(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x5e8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x5c8(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x5c8(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x5e8(%rsp), %rdi
callq 0x5170
leaq 0x18f0b(%rip), %rsi     # 0x1f340
leaq 0x5a8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x30(%rsp), %rsi
movq %r15, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18edd(%rip), %rsi     # 0x1f346
leaq 0x588(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x5a8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x588(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x588(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x5a8(%rsp), %rdi
callq 0x5170
leaq 0x18e99(%rip), %rsi     # 0x1f35c
leaq 0x568(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x30(%rsp), %rsi
movq %r15, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18e6f(%rip), %rsi     # 0x1f366
leaq 0x548(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x568(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x548(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x548(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x568(%rsp), %rdi
callq 0x5170
leaq 0x1e29c(%rip), %rsi     # 0x247ed
leaq 0x528(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x30(%rsp), %rsi
movq %r15, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18e0c(%rip), %rsi     # 0x1f391
leaq 0x508(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x528(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x508(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x508(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x528(%rsp), %rdi
callq 0x5170
leaq 0x18dc7(%rip), %rsi     # 0x1f3a6
leaq 0x4e8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x110f4(%rip), %rax     # 0x176ec
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18d91(%rip), %rsi     # 0x1f3ab
leaq 0x4c8(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x4e8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x4c8(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x4c8(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x4e8(%rsp), %rdi
callq 0x5170
leaq 0x18d5e(%rip), %rsi     # 0x1f3d2
leaq 0x4a8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x11145(%rip), %rax     # 0x177d2
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18d29(%rip), %rsi     # 0x1f3d8
leaq 0x488(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x4a8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x488(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x488(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x4a8(%rsp), %rdi
callq 0x5170
leaq 0x18cf5(%rip), %rsi     # 0x1f3fe
leaq 0x468(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x11132(%rip), %rax     # 0x17854
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18cc0(%rip), %rsi     # 0x1f404
leaq 0x448(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x468(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x448(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x448(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x468(%rsp), %rdi
callq 0x5170
leaq 0x18c8c(%rip), %rsi     # 0x1f42a
leaq 0x428(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x10799(%rip), %rax     # 0x16f50
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18c56(%rip), %rsi     # 0x1f42f
leaq 0x408(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x428(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x408(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x408(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x428(%rsp), %rdi
callq 0x5170
leaq 0x18c5d(%rip), %rsi     # 0x1f490
leaq 0x3e8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x166da(%rip), %rax     # 0x1cf26
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7f20
leaq 0x18bef(%rip), %rsi     # 0x1f45d
leaq 0x3c8(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x3e8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x3c8(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x3c8(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x3e8(%rsp), %rdi
callq 0x5170
leaq 0x18bcd(%rip), %rsi     # 0x1f495
leaq 0x3a8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x12b17(%rip), %rax     # 0x193f8
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18b9a(%rip), %rsi     # 0x1f49d
leaq 0x388(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x3a8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x388(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x388(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x3a8(%rsp), %rdi
callq 0x5170
leaq 0x18bb1(%rip), %rsi     # 0x1f50e
leaq 0x368(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x126c8(%rip), %rax     # 0x1903e
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18b2d(%rip), %rsi     # 0x1f4c5
leaq 0x348(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x368(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x348(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x348(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x368(%rsp), %rdi
callq 0x5170
leaq 0x18aee(%rip), %rsi     # 0x1f4e0
leaq 0x328(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x10291(%rip), %rax     # 0x16c9c
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18ab6(%rip), %rsi     # 0x1f4e3
leaq 0x308(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x328(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x308(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x308(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x328(%rsp), %rdi
callq 0x5170
leaq 0x18a8d(%rip), %rsi     # 0x1f514
leaq 0x2e8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x10094(%rip), %rax     # 0x16b34
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18a57(%rip), %rsi     # 0x1f519
leaq 0x2c8(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x2e8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x2c8(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x2c8(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x2e8(%rsp), %rdi
callq 0x5170
leaq 0x18a3b(%rip), %rsi     # 0x1f557
leaq 0x2a8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x100b3(%rip), %rax     # 0x16be8
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18a04(%rip), %rsi     # 0x1f55b
leaq 0x288(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x2a8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x288(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x288(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x2a8(%rsp), %rdi
callq 0x5170
leaq 0x189e4(%rip), %rsi     # 0x1f595
leaq 0x268(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x10490(%rip), %rax     # 0x1705a
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x189b3(%rip), %rsi     # 0x1f59f
leaq 0x248(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x268(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x248(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x248(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x268(%rsp), %rdi
callq 0x5170
leaq 0x1896e(%rip), %rsi     # 0x1f5b4
leaq 0x228(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x10555(%rip), %rax     # 0x171b4
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x1893b(%rip), %rsi     # 0x1f5bc
leaq 0x208(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x228(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x208(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x208(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x228(%rsp), %rdi
callq 0x5170
leaq 0x188f6(%rip), %rsi     # 0x1f5d1
leaq 0x1e8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x1092a(%rip), %rax     # 0x1761e
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x188c4(%rip), %rsi     # 0x1f5da
leaq 0x1c8(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x1e8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x1c8(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x1c8(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x1e8(%rsp), %rdi
callq 0x5170
leaq 0x1887f(%rip), %rsi     # 0x1f5ef
leaq 0x1a8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x10b4d(%rip), %rax     # 0x178d6
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x1884b(%rip), %rsi     # 0x1f5f6
leaq 0x188(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x1a8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x188(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x188(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x1a8(%rsp), %rdi
callq 0x5170
leaq 0x1880e(%rip), %rsi     # 0x1f613
leaq 0x168(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x129aa(%rip), %rax     # 0x197c8
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x187d6(%rip), %rsi     # 0x1f616
leaq 0x148(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x168(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x148(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x148(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x168(%rsp), %rdi
callq 0x5170
leaq 0x187c0(%rip), %rsi     # 0x1f65a
leaq 0x128(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x12065(%rip), %rax     # 0x18f18
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18790(%rip), %rsi     # 0x1f665
leaq 0x108(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x128(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x108(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x108(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x128(%rsp), %rdi
callq 0x5170
leaq 0x18771(%rip), %rsi     # 0x1f6a0
leaq 0xe8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x129c0(%rip), %rax     # 0x19908
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x1873d(%rip), %rsi     # 0x1f6a7
leaq 0xc8(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0xe8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0xc8(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0xc8(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0xe8(%rsp), %rdi
callq 0x5170
leaq 0x1875d(%rip), %rsi     # 0x1f721
leaq 0xa8(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x10c09(%rip), %rax     # 0x17be6
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x186de(%rip), %rsi     # 0x1f6dd
leaq 0x88(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0xa8(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x88(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x88(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0xa8(%rsp), %rdi
callq 0x5170
leaq 0x186a6(%rip), %rsi     # 0x1f6ff
leaq 0x68(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x5130
leaq 0x110e9(%rip), %rax     # 0x18158
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
andq $0x0, 0x8(%rsi)
movq %rbx, 0x10(%rsi)
leaq 0x10(%rsp), %rdi
callq 0x7ebc
leaq 0x18677(%rip), %rsi     # 0x1f708
leaq 0x48(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x5130
leaq 0x68(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x48(%rsp), %rcx
movq %rbx, %rdi
callq 0x7dce
leaq 0x48(%rsp), %rdi
callq 0x5170
leaq 0x10(%rsp), %rdi
callq 0x7f04
leaq 0x68(%rsp), %rdi
callq 0x5170
addq $0x828, %rsp            # imm = 0x828
popq %rbx
popq %r12
popq %r14
popq %r15
retq
leaq 0x48(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x70f6
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x7105
movq %rax, %r15
leaq 0x68(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x88(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x7129
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x7138
movq %rax, %r15
leaq 0xa8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0xc8(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x715f
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x716e
movq %rax, %r15
leaq 0xe8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x108(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x7195
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x71a4
movq %rax, %r15
leaq 0x128(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x148(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x71cb
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x71da
movq %rax, %r15
leaq 0x168(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x188(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x7201
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x7210
movq %rax, %r15
leaq 0x1a8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x1c8(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x7237
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x7246
movq %rax, %r15
leaq 0x1e8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x208(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x726d
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x727c
movq %rax, %r15
leaq 0x228(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x248(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x72a3
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x72b2
movq %rax, %r15
leaq 0x268(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x288(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x72d9
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x72e8
movq %rax, %r15
leaq 0x2a8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x2c8(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x730f
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x731e
movq %rax, %r15
leaq 0x2e8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x308(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x7345
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x7354
movq %rax, %r15
leaq 0x328(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x348(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x737b
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x738a
movq %rax, %r15
leaq 0x368(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x388(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x73b1
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x73c0
movq %rax, %r15
leaq 0x3a8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x3c8(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x73e7
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x73f6
movq %rax, %r15
leaq 0x3e8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x408(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x741d
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x742c
movq %rax, %r15
leaq 0x428(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x448(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x7453
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x7462
movq %rax, %r15
leaq 0x468(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x488(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x7489
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x7498
movq %rax, %r15
leaq 0x4a8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x4c8(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x74bf
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x74ce
movq %rax, %r15
leaq 0x4e8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x508(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x74f5
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x7504
movq %rax, %r15
leaq 0x528(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x548(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x752b
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x753a
movq %rax, %r15
leaq 0x568(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x588(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x7561
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x7570
movq %rax, %r15
leaq 0x5a8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x5c8(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x7597
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x75a6
movq %rax, %r15
leaq 0x5e8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x608(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x75cd
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x75dc
movq %rax, %r15
leaq 0x628(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x648(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x7603
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x7612
movq %rax, %r15
leaq 0x668(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x688(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x7639
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x7648
movq %rax, %r15
leaq 0x6a8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x6c8(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x766f
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x767e
movq %rax, %r15
leaq 0x6e8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x708(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x76a5
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x76b4
movq %rax, %r15
leaq 0x728(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x748(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x76db
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x76ea
movq %rax, %r15
leaq 0x768(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x788(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x770b
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x771a
movq %rax, %r15
leaq 0x7a8(%rsp), %rdi
jmp 0x7752
jmp 0x776d
leaq 0x7c8(%rsp), %rdi
movq %rax, %r15
callq 0x5170
jmp 0x773b
movq %rax, %r15
leaq 0x10(%rsp), %rdi
callq 0x7f04
jmp 0x774a
movq %rax, %r15
leaq 0x7e8(%rsp), %rdi
callq 0x5170
jmp 0x7770
jmp 0x776d
movq %r12, %rdi
movq %rax, %r15
callq 0x5320
jmp 0x7770
movq %rax, %r15
jmp 0x7778
movq %rax, %r15
movq %r14, %rdi
callq 0x947e
addq $0x10, %rbx
movq %rbx, %rdi
callq 0x86b6
movq %r15, %rdi
callq 0x5690