// File: tewalds[P]pentagod/./gtp.h
// Function: GTPclient::cmd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
GTPResponse cmd(string line){
		vecstr parts = explode(line, " ");
		string id;

		if(parts.size() > 1 && atoi(parts[0].c_str())){
			id = parts[0];
			parts.erase(parts.begin());
		}

		string name = parts[0];
		parts.erase(parts.begin());

		int cb = find_callback(name);
		GTPResponse response;

		if(cb < 0){
			response = GTPResponse(false, "Unknown command");
		}else{
			response = callbacks[cb].func(parts);
		}

		response.id = id;

		return response;
	}

// Assembly:
subq $0x218, %rsp            # imm = 0x218
movq %rdx, 0x40(%rsp)
movq %rdi, 0x48(%rsp)
movq %rdi, %rax
movq %rax, 0x50(%rsp)
movq %rdi, 0x210(%rsp)
movq %rsi, 0x208(%rsp)
movq %rdx, 0x200(%rsp)
movq 0x208(%rsp), %rax
movq %rax, 0x58(%rsp)
leaq 0x1c7(%rsp), %rdi
movq %rdi, 0x60(%rsp)
callq 0x4670
movq 0x60(%rsp), %rdx
leaq 0x37ba1(%rip), %rsi     # 0x407bd
leaq 0x1c8(%rsp), %rdi
callq 0x44d0
jmp 0x8c2b
movq 0x40(%rsp), %rsi
leaq 0x1e8(%rsp), %rdi
leaq 0x1c8(%rsp), %rdx
callq 0x1ea90
jmp 0x8c47
leaq 0x1c8(%rsp), %rdi
callq 0x4210
leaq 0x1c7(%rsp), %rdi
callq 0x43f0
leaq 0x190(%rsp), %rdi
callq 0x44e0
leaq 0x1e8(%rsp), %rdi
callq 0xcbe0
cmpq $0x1, %rax
jbe 0x8d8b
leaq 0x1e8(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xcc00
movq %rax, %rdi
callq 0x4160
movq %rax, %rdi
callq 0x4590
cmpl $0x0, %eax
je 0x8d8b
xorl %eax, %eax
movl %eax, %esi
leaq 0x1e8(%rsp), %rdi
callq 0xcc00
movq %rax, %rsi
leaq 0x190(%rsp), %rdi
callq 0x4050
jmp 0x8cd2
leaq 0x1e8(%rsp), %rdi
movq %rdi, 0x30(%rsp)
callq 0xfdb0
movq %rax, 0x180(%rsp)
leaq 0x188(%rsp), %rdi
leaq 0x180(%rsp), %rsi
callq 0xfde0
movq 0x30(%rsp), %rdi
movq 0x188(%rsp), %rsi
callq 0xfd40
movq %rax, 0x38(%rsp)
jmp 0x8d1a
movq 0x38(%rsp), %rax
movq %rax, 0x178(%rsp)
jmp 0x8d8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b8(%rsp)
movl %eax, 0x1b4(%rsp)
jmp 0x8d60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b8(%rsp)
movl %eax, 0x1b4(%rsp)
leaq 0x1c8(%rsp), %rdi
callq 0x4210
leaq 0x1c7(%rsp), %rdi
callq 0x43f0
jmp 0x9077
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b8(%rsp)
movl %eax, 0x1b4(%rsp)
jmp 0x905d
xorl %eax, %eax
movl %eax, %esi
leaq 0x1e8(%rsp), %rdi
callq 0xcc00
movq %rax, %rsi
leaq 0x158(%rsp), %rdi
callq 0x4170
jmp 0x8dae
leaq 0x1e8(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xfdb0
movq %rax, 0x148(%rsp)
leaq 0x150(%rsp), %rdi
leaq 0x148(%rsp), %rsi
callq 0xfde0
movq 0x20(%rsp), %rdi
movq 0x150(%rsp), %rsi
callq 0xfd40
movq %rax, 0x28(%rsp)
jmp 0x8df6
movq 0x58(%rsp), %rdi
movq 0x28(%rsp), %rax
movq %rax, 0x140(%rsp)
leaq 0x158(%rsp), %rsi
callq 0xfe20
movl %eax, 0x1c(%rsp)
jmp 0x8e1b
movq 0x48(%rsp), %rdi
movl 0x1c(%rsp), %eax
movl %eax, 0x13c(%rsp)
movb $0x0, 0x13b(%rsp)
callq 0xfec0
jmp 0x8e3a
cmpl $0x0, 0x13c(%rsp)
jge 0x8f2e
leaq 0xcf(%rsp), %rdi
movq %rdi, 0x10(%rsp)
callq 0x4670
movq 0x10(%rsp), %rdx
leaq 0x34c39(%rip), %rsi     # 0x3da9f
leaq 0xd0(%rsp), %rdi
callq 0x44d0
jmp 0x8e75
leaq 0xf0(%rsp), %rdi
xorl %esi, %esi
leaq 0xd0(%rsp), %rdx
callq 0xb680
jmp 0x8e8e
movq 0x48(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0xfef0
leaq 0xf0(%rsp), %rdi
callq 0x9090
leaq 0xd0(%rsp), %rdi
callq 0x4210
leaq 0xcf(%rsp), %rdi
callq 0x43f0
jmp 0x8fde
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b8(%rsp)
movl %eax, 0x1b4(%rsp)
jmp 0x9050
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b8(%rsp)
movl %eax, 0x1b4(%rsp)
jmp 0x8f1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b8(%rsp)
movl %eax, 0x1b4(%rsp)
leaq 0xd0(%rsp), %rdi
callq 0x4210
leaq 0xcf(%rsp), %rdi
callq 0x43f0
jmp 0x9046
movq 0x58(%rsp), %rdi
addq $0x18, %rdi
movslq 0x13c(%rsp), %rsi
callq 0xb660
addq $0x40, %rax
movq %rax, 0x8(%rsp)
leaq 0x68(%rsp), %rdi
leaq 0x1e8(%rsp), %rsi
callq 0xffb0
jmp 0x8f61
movq 0x8(%rsp), %rsi
leaq 0x80(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0xff50
jmp 0x8f7a
movq 0x48(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0xfef0
leaq 0x80(%rsp), %rdi
callq 0x9090
leaq 0x68(%rsp), %rdi
callq 0xbe20
jmp 0x8fde
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b8(%rsp)
movl %eax, 0x1b4(%rsp)
jmp 0x9046
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x1b8(%rsp)
movl %eax, 0x1b4(%rsp)
leaq 0x68(%rsp), %rdi
callq 0xbe20
jmp 0x9046
movq 0x48(%rsp), %rdi
addq $0x8, %rdi
leaq 0x190(%rsp), %rsi
callq 0x4050
jmp 0x8ff6
movb $0x1, 0x13b(%rsp)
testb $0x1, 0x13b(%rsp)
jne 0x9012
movq 0x48(%rsp), %rdi
callq 0x9090
leaq 0x158(%rsp), %rdi
callq 0x4210
leaq 0x190(%rsp), %rdi
callq 0x4210
leaq 0x1e8(%rsp), %rdi
callq 0xbe20
movq 0x50(%rsp), %rax
addq $0x218, %rsp            # imm = 0x218
retq
movq 0x48(%rsp), %rdi
callq 0x9090
leaq 0x158(%rsp), %rdi
callq 0x4210
leaq 0x190(%rsp), %rdi
callq 0x4210
leaq 0x1e8(%rsp), %rdi
callq 0xbe20
movq 0x1b8(%rsp), %rdi
callq 0x4660
nopw %cs:(%rax,%rax)
nop