// File: tewalds[P]pentagod/./gtp.h
// Function: GTPclient::GTPclient(_IO_FILE*, _IO_FILE*, _IO_FILE*)
GTPclient(FILE * i = stdin, FILE * o = stdout, FILE * l = NULL){
		in = i;
		out = o;
		logfile = l;
		longest_cmd = 0;
		running = false;

		newcallback("list_commands",    bind(&GTPclient::gtp_list_commands,    this, _1, false), "List the commands");
		newcallback("help",             bind(&GTPclient::gtp_list_commands,    this, _1, true),  "List the commands, with descriptions");
		newcallback("quit",             bind(&GTPclient::gtp_quit,             this, _1), "Quit the program");
		newcallback("exit",             bind(&GTPclient::gtp_quit,             this, _1), "Alias for quit");
		newcallback("protocol_version", bind(&GTPclient::gtp_protocol_version, this, _1), "Show the gtp protocol version");
		newcallback("logfile",          bind(&GTPclient::gtp_logfile,          this, _1), "Start logging the gtp commands to this file, disabled in server mode");
		newcallback("lognote",          bind(&GTPclient::gtp_lognote,          this, _1), "Add a comment to the logfile");
		newcallback("logend",           bind(&GTPclient::gtp_logend,           this, _1), "Stop logging");
	}

// Assembly:
subq $0x5e8, %rsp            # imm = 0x5E8
movq %rdi, 0x5e0(%rsp)
movq %rsi, 0x5d8(%rsp)
movq %rdx, 0x5d0(%rsp)
movq %rcx, 0x5c8(%rsp)
movq 0x5e0(%rsp), %rdi
movq %rdi, 0x88(%rsp)
addq $0x18, %rdi
movq %rdi, 0x80(%rsp)
callq 0xa830
movq 0x88(%rsp), %rax
movq 0x5d8(%rsp), %rcx
movq %rcx, (%rax)
movq 0x5d0(%rsp), %rcx
movq %rcx, 0x8(%rax)
movq 0x5c8(%rsp), %rcx
movq %rcx, 0x10(%rax)
movl $0x0, 0x30(%rax)
movb $0x0, 0x34(%rax)
leaq 0x5a7(%rsp), %rdi
movq %rdi, 0x90(%rsp)
callq 0x4670
movq 0x90(%rsp), %rdx
leaq 0x341c4(%rip), %rsi     # 0x3d856
leaq 0x5a8(%rsp), %rdi
callq 0x44d0
jmp 0x96a1
movq 0x88(%rsp), %rax
leaq 0x11e0(%rip), %rcx      # 0xa890
movq %rcx, 0x540(%rsp)
movq $0x0, 0x548(%rsp)
movq %rax, 0x538(%rsp)
movb $0x0, 0x537(%rsp)
movq 0x468fd(%rip), %rcx     # 0x4ffd8
leaq 0x550(%rsp), %rdi
leaq 0x540(%rsp), %rsi
leaq 0x538(%rsp), %rdx
leaq 0x537(%rsp), %r8
callq 0xa840
jmp 0x9702
leaq 0x570(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0xaba0
jmp 0x9719
leaq 0x50f(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq 0x4670
movq 0x78(%rsp), %rdx
leaq 0x3412d(%rip), %rsi     # 0x3d864
leaq 0x510(%rsp), %rdi
callq 0x44d0
jmp 0x9746
movq 0x88(%rsp), %rdi
leaq 0x5a8(%rsp), %rsi
leaq 0x570(%rsp), %rdx
leaq 0x510(%rsp), %rcx
callq 0xa590
jmp 0x976d
leaq 0x510(%rsp), %rdi
callq 0x4210
leaq 0x50f(%rsp), %rdi
callq 0x43f0
leaq 0x570(%rsp), %rdi
callq 0xa810
leaq 0x5a8(%rsp), %rdi
callq 0x4210
leaq 0x5a7(%rsp), %rdi
callq 0x43f0
leaq 0x4e7(%rsp), %rdi
movq %rdi, 0x70(%rsp)
callq 0x4670
movq 0x70(%rsp), %rdx
leaq 0x33b74(%rip), %rsi     # 0x3d340
leaq 0x4e8(%rsp), %rdi
callq 0x44d0
jmp 0x97db
movq 0x88(%rsp), %rax
leaq 0x10a6(%rip), %rcx      # 0xa890
movq %rcx, 0x490(%rsp)
movq $0x0, 0x498(%rsp)
movq %rax, 0x488(%rsp)
movb $0x1, 0x487(%rsp)
movq 0x467c3(%rip), %rcx     # 0x4ffd8
leaq 0x4a0(%rsp), %rdi
leaq 0x490(%rsp), %rsi
leaq 0x488(%rsp), %rdx
leaq 0x487(%rsp), %r8
callq 0xa840
jmp 0x983c
leaq 0x4c0(%rsp), %rdi
leaq 0x4a0(%rsp), %rsi
callq 0xaba0
jmp 0x9853
leaq 0x45f(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0x4670
movq 0x68(%rsp), %rdx
leaq 0x34005(%rip), %rsi     # 0x3d876
leaq 0x460(%rsp), %rdi
callq 0x44d0
jmp 0x9880
movq 0x88(%rsp), %rdi
leaq 0x4e8(%rsp), %rsi
leaq 0x4c0(%rsp), %rdx
leaq 0x460(%rsp), %rcx
callq 0xa590
jmp 0x98a7
leaq 0x460(%rsp), %rdi
callq 0x4210
leaq 0x45f(%rsp), %rdi
callq 0x43f0
leaq 0x4c0(%rsp), %rdi
callq 0xa810
leaq 0x4e8(%rsp), %rdi
callq 0x4210
leaq 0x4e7(%rsp), %rdi
callq 0x43f0
leaq 0x437(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x4670
movq 0x60(%rsp), %rdx
leaq 0x33fb5(%rip), %rsi     # 0x3d8bb
leaq 0x438(%rsp), %rdi
callq 0x44d0
jmp 0x9915
movq 0x88(%rsp), %rax
leaq 0x136c(%rip), %rcx      # 0xac90
movq %rcx, 0x3e8(%rsp)
movq $0x0, 0x3f0(%rsp)
movq %rax, 0x3e0(%rsp)
movq 0x46691(%rip), %rcx     # 0x4ffd8
leaq 0x3f8(%rsp), %rdi
leaq 0x3e8(%rsp), %rsi
leaq 0x3e0(%rsp), %rdx
callq 0xac50
jmp 0x9966
leaq 0x410(%rsp), %rdi
leaq 0x3f8(%rsp), %rsi
callq 0xad50
jmp 0x997d
leaq 0x3bf(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq 0x4670
movq 0x58(%rsp), %rdx
leaq 0x33f00(%rip), %rsi     # 0x3d89b
leaq 0x3c0(%rsp), %rdi
callq 0x44d0
jmp 0x99aa
movq 0x88(%rsp), %rdi
leaq 0x438(%rsp), %rsi
leaq 0x410(%rsp), %rdx
leaq 0x3c0(%rsp), %rcx
callq 0xa590
jmp 0x99d1
leaq 0x3c0(%rsp), %rdi
callq 0x4210
leaq 0x3bf(%rsp), %rdi
callq 0x43f0
leaq 0x410(%rsp), %rdi
callq 0xa810
leaq 0x438(%rsp), %rdi
callq 0x4210
leaq 0x437(%rsp), %rdi
callq 0x43f0
leaq 0x397(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x4670
movq 0x50(%rsp), %rdx
leaq 0x33e7c(%rip), %rsi     # 0x3d8ac
leaq 0x398(%rsp), %rdi
callq 0x44d0
jmp 0x9a3f
movq 0x88(%rsp), %rax
leaq 0x1242(%rip), %rcx      # 0xac90
movq %rcx, 0x348(%rsp)
movq $0x0, 0x350(%rsp)
movq %rax, 0x340(%rsp)
movq 0x46567(%rip), %rcx     # 0x4ffd8
leaq 0x358(%rsp), %rdi
leaq 0x348(%rsp), %rsi
leaq 0x340(%rsp), %rdx
callq 0xac50
jmp 0x9a90
leaq 0x370(%rsp), %rdi
leaq 0x358(%rsp), %rsi
callq 0xad50
jmp 0x9aa7
leaq 0x31f(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq 0x4670
movq 0x48(%rsp), %rdx
leaq 0x33dec(%rip), %rsi     # 0x3d8b1
leaq 0x320(%rsp), %rdi
callq 0x44d0
jmp 0x9ad4
movq 0x88(%rsp), %rdi
leaq 0x398(%rsp), %rsi
leaq 0x370(%rsp), %rdx
leaq 0x320(%rsp), %rcx
callq 0xa590
jmp 0x9afb
leaq 0x320(%rsp), %rdi
callq 0x4210
leaq 0x31f(%rsp), %rdi
callq 0x43f0
leaq 0x370(%rsp), %rdi
callq 0xa810
leaq 0x398(%rsp), %rdi
callq 0x4210
leaq 0x397(%rsp), %rdi
callq 0x43f0
leaq 0x2f7(%rsp), %rdi
movq %rdi, 0x40(%rsp)
callq 0x4670
movq 0x40(%rsp), %rdx
leaq 0x33d66(%rip), %rsi     # 0x3d8c0
leaq 0x2f8(%rsp), %rdi
callq 0x44d0
jmp 0x9b69
movq 0x88(%rsp), %rax
leaq 0x1288(%rip), %rcx      # 0xae00
movq %rcx, 0x2a8(%rsp)
movq $0x0, 0x2b0(%rsp)
movq %rax, 0x2a0(%rsp)
movq 0x4643d(%rip), %rcx     # 0x4ffd8
leaq 0x2b8(%rsp), %rdi
leaq 0x2a8(%rsp), %rsi
leaq 0x2a0(%rsp), %rdx
callq 0xac50
jmp 0x9bba
leaq 0x2d0(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
callq 0xad50
jmp 0x9bd1
leaq 0x27f(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x4670
movq 0x38(%rsp), %rdx
leaq 0x33ce2(%rip), %rsi     # 0x3d8d1
leaq 0x280(%rsp), %rdi
callq 0x44d0
jmp 0x9bfe
movq 0x88(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
leaq 0x2d0(%rsp), %rdx
leaq 0x280(%rsp), %rcx
callq 0xa590
jmp 0x9c25
leaq 0x280(%rsp), %rdi
callq 0x4210
leaq 0x27f(%rsp), %rdi
callq 0x43f0
leaq 0x2d0(%rsp), %rdi
callq 0xa810
leaq 0x2f8(%rsp), %rdi
callq 0x4210
leaq 0x2f7(%rsp), %rdi
callq 0x43f0
leaq 0x257(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0x4670
movq 0x30(%rsp), %rdx
leaq 0x33ccd(%rip), %rsi     # 0x3d951
leaq 0x258(%rsp), %rdi
callq 0x44d0
jmp 0x9c93
movq 0x88(%rsp), %rax
leaq 0x121e(%rip), %rcx      # 0xaec0
movq %rcx, 0x208(%rsp)
movq $0x0, 0x210(%rsp)
movq %rax, 0x200(%rsp)
movq 0x46313(%rip), %rcx     # 0x4ffd8
leaq 0x218(%rsp), %rdi
leaq 0x208(%rsp), %rsi
leaq 0x200(%rsp), %rdx
callq 0xac50
jmp 0x9ce4
leaq 0x230(%rsp), %rdi
leaq 0x218(%rsp), %rsi
callq 0xad50
jmp 0x9cfb
leaq 0x1df(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x4670
movq 0x28(%rsp), %rdx
leaq 0x33bd6(%rip), %rsi     # 0x3d8ef
leaq 0x1e0(%rsp), %rdi
callq 0x44d0
jmp 0x9d28
movq 0x88(%rsp), %rdi
leaq 0x258(%rsp), %rsi
leaq 0x230(%rsp), %rdx
leaq 0x1e0(%rsp), %rcx
callq 0xa590
jmp 0x9d4f
leaq 0x1e0(%rsp), %rdi
callq 0x4210
leaq 0x1df(%rsp), %rdi
callq 0x43f0
leaq 0x230(%rsp), %rdi
callq 0xa810
leaq 0x258(%rsp), %rdi
callq 0x4210
leaq 0x257(%rsp), %rdi
callq 0x43f0
leaq 0x1b7(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x4670
movq 0x20(%rsp), %rdx
leaq 0x33b86(%rip), %rsi     # 0x3d934
leaq 0x1b8(%rsp), %rdi
callq 0x44d0
jmp 0x9dbd
movq 0x88(%rsp), %rax
leaq 0x1364(%rip), %rcx      # 0xb130
movq %rcx, 0x168(%rsp)
movq $0x0, 0x170(%rsp)
movq %rax, 0x160(%rsp)
movq 0x461e9(%rip), %rcx     # 0x4ffd8
leaq 0x178(%rsp), %rdi
leaq 0x168(%rsp), %rsi
leaq 0x160(%rsp), %rdx
callq 0xac50
jmp 0x9e0e
leaq 0x190(%rsp), %rdi
leaq 0x178(%rsp), %rsi
callq 0xad50
jmp 0x9e25
leaq 0x13f(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq 0x4670
movq 0x18(%rsp), %rdx
leaq 0x33af9(%rip), %rsi     # 0x3d93c
leaq 0x140(%rsp), %rdi
callq 0x44d0
jmp 0x9e52
movq 0x88(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
leaq 0x190(%rsp), %rdx
leaq 0x140(%rsp), %rcx
callq 0xa590
jmp 0x9e79
leaq 0x140(%rsp), %rdi
callq 0x4210
leaq 0x13f(%rsp), %rdi
callq 0x43f0
leaq 0x190(%rsp), %rdi
callq 0xa810
leaq 0x1b8(%rsp), %rdi
callq 0x4210
leaq 0x1b7(%rsp), %rdi
callq 0x43f0
leaq 0x117(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x4670
movq 0x10(%rsp), %rdx
leaq 0x33a81(%rip), %rsi     # 0x3d959
leaq 0x118(%rsp), %rdi
callq 0x44d0
jmp 0x9ee7
movq 0x88(%rsp), %rax
leaq 0x13da(%rip), %rcx      # 0xb2d0
movq %rcx, 0xc8(%rsp)
movq $0x0, 0xd0(%rsp)
movq %rax, 0xc0(%rsp)
movq 0x460bf(%rip), %rcx     # 0x4ffd8
leaq 0xd8(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0xac50
jmp 0x9f38
leaq 0xf0(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0xad50
jmp 0x9f4f
leaq 0x9f(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0x4670
movq 0x8(%rsp), %rdx
leaq 0x339f3(%rip), %rsi     # 0x3d960
leaq 0xa0(%rsp), %rdi
callq 0x44d0
jmp 0x9f7c
movq 0x88(%rsp), %rdi
leaq 0x118(%rsp), %rsi
leaq 0xf0(%rsp), %rdx
leaq 0xa0(%rsp), %rcx
callq 0xa590
jmp 0x9fa3
leaq 0xa0(%rsp), %rdi
callq 0x4210
leaq 0x9f(%rsp), %rdi
callq 0x43f0
leaq 0xf0(%rsp), %rdi
callq 0xa810
leaq 0x118(%rsp), %rdi
callq 0x4210
leaq 0x117(%rsp), %rdi
callq 0x43f0
addq $0x5e8, %rsp            # imm = 0x5E8
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa076
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa069
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa04f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x510(%rsp), %rdi
callq 0x4210
leaq 0x50f(%rsp), %rdi
callq 0x43f0
leaq 0x570(%rsp), %rdi
callq 0xa810
leaq 0x5a8(%rsp), %rdi
callq 0x4210
leaq 0x5a7(%rsp), %rdi
callq 0x43f0
jmp 0xa4c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa112
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa105
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa0eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x460(%rsp), %rdi
callq 0x4210
leaq 0x45f(%rsp), %rdi
callq 0x43f0
leaq 0x4c0(%rsp), %rdi
callq 0xa810
leaq 0x4e8(%rsp), %rdi
callq 0x4210
leaq 0x4e7(%rsp), %rdi
callq 0x43f0
jmp 0xa4c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa1ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa1a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa187
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x3c0(%rsp), %rdi
callq 0x4210
leaq 0x3bf(%rsp), %rdi
callq 0x43f0
leaq 0x410(%rsp), %rdi
callq 0xa810
leaq 0x438(%rsp), %rdi
callq 0x4210
leaq 0x437(%rsp), %rdi
callq 0x43f0
jmp 0xa4c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa24a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa23d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa223
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x320(%rsp), %rdi
callq 0x4210
leaq 0x31f(%rsp), %rdi
callq 0x43f0
leaq 0x370(%rsp), %rdi
callq 0xa810
leaq 0x398(%rsp), %rdi
callq 0x4210
leaq 0x397(%rsp), %rdi
callq 0x43f0
jmp 0xa4c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa2e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa2d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa2bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x280(%rsp), %rdi
callq 0x4210
leaq 0x27f(%rsp), %rdi
callq 0x43f0
leaq 0x2d0(%rsp), %rdi
callq 0xa810
leaq 0x2f8(%rsp), %rdi
callq 0x4210
leaq 0x2f7(%rsp), %rdi
callq 0x43f0
jmp 0xa4c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa382
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa375
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa35b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x1e0(%rsp), %rdi
callq 0x4210
leaq 0x1df(%rsp), %rdi
callq 0x43f0
leaq 0x230(%rsp), %rdi
callq 0xa810
leaq 0x258(%rsp), %rdi
callq 0x4210
leaq 0x257(%rsp), %rdi
callq 0x43f0
jmp 0xa4c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa41e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa411
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa3f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0x140(%rsp), %rdi
callq 0x4210
leaq 0x13f(%rsp), %rdi
callq 0x43f0
leaq 0x190(%rsp), %rdi
callq 0xa810
leaq 0x1b8(%rsp), %rdi
callq 0x4210
leaq 0x1b7(%rsp), %rdi
callq 0x43f0
jmp 0xa4c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa4ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa4ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
jmp 0xa493
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x598(%rsp)
movl %eax, 0x594(%rsp)
leaq 0xa0(%rsp), %rdi
callq 0x4210
leaq 0x9f(%rsp), %rdi
callq 0x43f0
leaq 0xf0(%rsp), %rdi
callq 0xa810
leaq 0x118(%rsp), %rdi
callq 0x4210
leaq 0x117(%rsp), %rdi
callq 0x43f0
movq 0x80(%rsp), %rdi
callq 0xb3a0
movq 0x598(%rsp), %rdi
callq 0x4660
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)