// File: tewalds[P]morat/hex/agentmcts.cpp
// Function: Morat::Hex::AgentMCTS::move_stats[abi:cxx11](std::vector<Morat::Move, std::allocator<Morat::Move>> const&) const
std::string AgentMCTS::move_stats(const vecmove& moves) const {
	std::string s;
	const Node * node = & root;

	s += "root:\n";
	s += node->to_s() + "\n";

	if(moves.size()){
		s += "path:\n";
		for(const auto& m : moves){
			if(node){
				node = find_child(node, m);
				s += node->to_s() + "\n";
			}
		}
	}

	if(node){
		s += "children:\n";
		for(auto & n : node->children)
			s += n.to_s() + "\n";
	}
	return s;
}

// Assembly:
subq $0x168, %rsp            # imm = 0x168
movq %rdi, 0x28(%rsp)
movq %rdi, %rax
movq %rax, 0x18(%rsp)
movq %rdi, 0x160(%rsp)
movq %rsi, 0x158(%rsp)
movq %rdx, 0x150(%rsp)
movq 0x158(%rsp), %rax
movq %rax, 0x20(%rsp)
movb $0x0, 0x14f(%rsp)
callq 0x55a0
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rdi
addq $0x40e0, %rax           # imm = 0x40E0
movq %rax, 0x140(%rsp)
leaq 0x3428b(%rip), %rsi     # 0x4d430
callq 0x53b0
jmp 0x191ac
movq 0x140(%rsp), %rsi
leaq 0xf0(%rsp), %rdi
callq 0x14ed0
jmp 0x191c3
leaq 0x3371e(%rip), %rdx     # 0x4c8e8
leaq 0x110(%rsp), %rdi
leaq 0xf0(%rsp), %rsi
callq 0xb910
jmp 0x191e1
movq 0x28(%rsp), %rdi
leaq 0x110(%rsp), %rsi
callq 0x5520
jmp 0x191f5
leaq 0x110(%rsp), %rdi
callq 0x5260
leaq 0xf0(%rsp), %rdi
callq 0x5260
movq 0x150(%rsp), %rdi
callq 0x1c5d0
cmpq $0x0, %rax
je 0x1940c
movq 0x28(%rsp), %rdi
leaq 0x34205(%rip), %rsi     # 0x4d437
callq 0x53b0
jmp 0x19239
movq 0x150(%rsp), %rax
movq %rax, 0xe8(%rsp)
movq 0xe8(%rsp), %rdi
callq 0x1c6f0
movq %rax, 0xe0(%rsp)
movq 0xe8(%rsp), %rdi
callq 0x1c720
movq %rax, 0xd8(%rsp)
leaq 0xe0(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x1c750
testb $0x1, %al
jne 0x19291
jmp 0x1940a
leaq 0xe0(%rsp), %rdi
callq 0x1c790
movq %rax, 0xd0(%rsp)
cmpq $0x0, 0x140(%rsp)
je 0x193f6
movq 0x20(%rsp), %rdi
movq 0x140(%rsp), %rsi
movq 0xd0(%rsp), %rdx
callq 0x190a0
movq %rax, 0x10(%rsp)
jmp 0x192d6
movq 0x10(%rsp), %rax
movq %rax, 0x140(%rsp)
movq 0x140(%rsp), %rsi
leaq 0x90(%rsp), %rdi
callq 0x14ed0
jmp 0x192fa
leaq 0x335e7(%rip), %rdx     # 0x4c8e8
leaq 0xb0(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xb910
jmp 0x19318
movq 0x28(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0x5520
jmp 0x1932c
leaq 0xb0(%rsp), %rdi
callq 0x5260
leaq 0x90(%rsp), %rdi
callq 0x5260
jmp 0x193f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
jmp 0x19571
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
jmp 0x1939b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
leaq 0x110(%rsp), %rdi
callq 0x5260
leaq 0xf0(%rsp), %rdi
callq 0x5260
jmp 0x19571
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
jmp 0x193e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
leaq 0xb0(%rsp), %rdi
callq 0x5260
leaq 0x90(%rsp), %rdi
callq 0x5260
jmp 0x19571
jmp 0x193f8
leaq 0xe0(%rsp), %rdi
callq 0x1c7a0
jmp 0x19273
jmp 0x1940c
cmpq $0x0, 0x140(%rsp)
je 0x19548
movq 0x28(%rsp), %rdi
leaq 0x34017(%rip), %rsi     # 0x4d43e
callq 0x53b0
jmp 0x1942e
movq 0x140(%rsp), %rax
addq $0x28, %rax
movq %rax, 0x88(%rsp)
movq 0x88(%rsp), %rdi
callq 0x1c340
movq %rax, 0x8(%rsp)
jmp 0x19456
movq 0x8(%rsp), %rax
movq %rax, 0x80(%rsp)
movq 0x88(%rsp), %rdi
callq 0x1c390
movq %rax, (%rsp)
jmp 0x19476
movq (%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0x80(%rsp), %rax
cmpq 0x78(%rsp), %rax
je 0x19546
movq 0x80(%rsp), %rax
movq %rax, 0x70(%rsp)
movq 0x70(%rsp), %rsi
leaq 0x30(%rsp), %rdi
callq 0x14ed0
jmp 0x194b0
leaq 0x33431(%rip), %rdx     # 0x4c8e8
leaq 0x50(%rsp), %rdi
leaq 0x30(%rsp), %rsi
callq 0xb910
jmp 0x194c8
movq 0x28(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0x5520
jmp 0x194d9
leaq 0x50(%rsp), %rdi
callq 0x5260
leaq 0x30(%rsp), %rdi
callq 0x5260
movq 0x80(%rsp), %rax
addq $0x30, %rax
movq %rax, 0x80(%rsp)
jmp 0x1947f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
jmp 0x1953a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x138(%rsp)
movl %eax, 0x134(%rsp)
leaq 0x50(%rsp), %rdi
callq 0x5260
leaq 0x30(%rsp), %rdi
callq 0x5260
jmp 0x19571
jmp 0x19548
movb $0x1, 0x14f(%rsp)
testb $0x1, 0x14f(%rsp)
jne 0x19564
movq 0x28(%rsp), %rdi
callq 0x5260
movq 0x18(%rsp), %rax
addq $0x168, %rsp            # imm = 0x168
retq
movq 0x28(%rsp), %rdi
callq 0x5260
movq 0x138(%rsp), %rdi
callq 0x5760
nopl (%rax,%rax)