// File: moporgic[P]2048-Framework/./episode.h
// Function: operator>>(std::istream&, episode&)
std::istream& operator >>(std::istream& in, episode& ep) {
		ep = {};
		std::string token;
		std::getline(in, token, '|');
		std::stringstream(token) >> ep.ep_open;
		std::getline(in, token, '|');
		for (std::stringstream moves(token); !moves.eof(); moves.peek()) {
			ep.ep_moves.emplace_back();
			moves >> ep.ep_moves.back();
			ep.ep_score += action(ep.ep_moves.back()).apply(ep.ep_state);
		}
		std::getline(in, token, '|');
		std::stringstream(token) >> ep.ep_close;
		return in;
	}

// Assembly:
subq $0x5d8, %rsp            # imm = 0x5D8
movq %rdi, 0x5d0(%rsp)
movq %rsi, 0x5c8(%rsp)
leaq 0x508(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0x9fb0
movq 0x20(%rsp), %rsi
movq 0x5c8(%rsp), %rdi
callq 0xb440
movq 0x20(%rsp), %rdi
callq 0xb4e0
leaq 0x4e8(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq 0x43d0
movq 0x28(%rsp), %rsi
movq 0x5d0(%rsp), %rdi
movl $0x7c, %edx
callq 0x4550
jmp 0xb150
movl $0x10, %edi
movl $0x8, %esi
callq 0x6b90
movl %eax, 0x1c(%rsp)
jmp 0xb165
movl 0x1c(%rsp), %edx
leaq 0x350(%rsp), %rdi
leaq 0x4e8(%rsp), %rsi
callq 0x4460
jmp 0xb180
movq 0x5c8(%rsp), %rsi
addq $0x70, %rsi
leaq 0x350(%rsp), %rdi
callq 0xb520
jmp 0xb19b
leaq 0x350(%rsp), %rdi
callq 0x4260
movq 0x5d0(%rsp), %rdi
leaq 0x4e8(%rsp), %rsi
movl $0x7c, %edx
callq 0x4550
jmp 0xb1c4
movl $0x10, %edi
movl $0x8, %esi
callq 0x6b90
movl %eax, 0x18(%rsp)
jmp 0xb1d9
movl 0x18(%rsp), %edx
leaq 0x1c8(%rsp), %rdi
leaq 0x4e8(%rsp), %rsi
callq 0x4460
jmp 0xb1f4
jmp 0xb1f6
movq 0x1c8(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x1c8(%rsp,%rax), %rdi
callq 0x4540
movb %al, 0x17(%rsp)
jmp 0xb215
movb 0x17(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0xb289
leaq 0x1c8(%rsp), %rdi
callq 0x4260
jmp 0xb368
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0xb419
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
leaq 0x350(%rsp), %rdi
callq 0x4260
jmp 0xb419
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
jmp 0xb356
movq 0x5c8(%rsp), %rdi
addq $0x50, %rdi
callq 0xb550
jmp 0xb29c
movq 0x5c8(%rsp), %rdi
addq $0x50, %rdi
callq 0xb690
movq %rax, %rsi
leaq 0x1c8(%rsp), %rdi
callq 0xb5b0
jmp 0xb2bf
movq 0x5c8(%rsp), %rdi
addq $0x50, %rdi
callq 0xb690
movq %rax, %rsi
leaq 0x1b8(%rsp), %rdi
callq 0xb6d0
jmp 0xb2e2
movq 0x5c8(%rsp), %rsi
leaq 0x1b8(%rsp), %rdi
callq 0x6cc0
movl %eax, 0x10(%rsp)
jmp 0xb2fd
movl 0x10(%rsp), %eax
movslq %eax, %rcx
movq 0x5c8(%rsp), %rax
addq 0x48(%rax), %rcx
movq %rcx, 0x48(%rax)
leaq 0x1b8(%rsp), %rdi
callq 0x5fd0
leaq 0x1c8(%rsp), %rdi
callq 0x4120
jmp 0xb330
jmp 0xb1f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
leaq 0x1b8(%rsp), %rdi
callq 0x5fd0
leaq 0x1c8(%rsp), %rdi
callq 0x4260
jmp 0xb419
movq 0x5d0(%rsp), %rdi
leaq 0x4e8(%rsp), %rsi
movl $0x7c, %edx
callq 0x4550
jmp 0xb384
movl $0x10, %edi
movl $0x8, %esi
callq 0x6b90
movl %eax, 0xc(%rsp)
jmp 0xb399
movl 0xc(%rsp), %edx
leaq 0x30(%rsp), %rdi
leaq 0x4e8(%rsp), %rsi
callq 0x4460
jmp 0xb3b1
movq 0x5c8(%rsp), %rsi
addq $0x98, %rsi
leaq 0x30(%rsp), %rdi
callq 0xb520
jmp 0xb3cc
leaq 0x30(%rsp), %rdi
callq 0x4260
movq 0x5d0(%rsp), %rax
movq %rax, (%rsp)
leaq 0x4e8(%rsp), %rdi
callq 0x4210
movq (%rsp), %rax
addq $0x5d8, %rsp            # imm = 0x5D8
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4e0(%rsp)
movl %eax, 0x4dc(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x4260
leaq 0x4e8(%rsp), %rdi
callq 0x4210
movq 0x4e0(%rsp), %rdi
callq 0x44f0
nopw %cs:(%rax,%rax)
nopl (%rax)