// File: /workspace/github_cpp_makefile_star2_O1/tewalds[P]pentagod/./move.h
// Function: Move::Move(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned int)
Move(const std::string & str, unsigned int O = 8){
		if(     str == "swap"    ){ l = M_SWAP;    r = 14; o = O; }
		else if(str == "resign"  ){ l = M_RESIGN;  r = 14; o = O; }
		else if(str == "none"    ){ l = M_NONE;    r = 14; o = O; }
		else if(str == "unknown" ){ l = M_UNKNOWN; r = 14; o = O; }
		else if(str.length() <= 2){ l = M_NONE;    r = 14; o = O; }
		else{
			unsigned int y = tolower(str[0]) - 'a'; //[abcdef]
			unsigned int x = str[1] - '1';          //[123456]
			l = y*6+x;

			char c = tolower(str[2]);
			if(     c >= '1' && c <= '8') r = c - '1'; //[12345678]
			else if(c >= 's' && c <= 'z') r = c - 's'; //[stuvwxyz]
			else if(c >= 'a' && c <= 'h') r = c - 'a'; //[abcdefgh]
			else r = 0; //unknown, but do something

			if(str.length() == 5) {
				assert(O == 8 && str[3] == ':');
				o = str[4] - '0';
			} else {
				o = O;
			}
		}
	}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x1c983(%rip), %rsi     # 0x29aa9
movq %r14, %rdi
callq 0x40a0
testl %eax, %eax
je 0xd180
leaq 0x1c975(%rip), %rsi     # 0x29aae
movq %r14, %rdi
callq 0x40a0
testl %eax, %eax
je 0xd18e
leaq 0x1c958(%rip), %rsi     # 0x29aa4
movq %r14, %rdi
callq 0x40a0
testl %eax, %eax
je 0xd172
leaq 0x1c93d(%rip), %rsi     # 0x29a9c
movq %r14, %rdi
callq 0x40a0
testl %eax, %eax
je 0xd19c
cmpq $0x2, 0x8(%r14)
ja 0xd1aa
shll $0xc, %ebp
orl $0xefd, %ebp            # imm = 0xEFD
jmp 0xd257
shll $0xc, %ebp
orl $0xeff, %ebp            # imm = 0xEFF
jmp 0xd257
shll $0xc, %ebp
orl $0xefe, %ebp            # imm = 0xEFE
jmp 0xd257
shll $0xc, %ebp
orl $0xefc, %ebp            # imm = 0xEFC
jmp 0xd257
movq (%r14), %r15
movsbl (%r15), %edi
callq 0x4410
movzbl 0x1(%r15), %ecx
leal (%rax,%rax,2), %eax
leal 0x89(%rcx,%rax,2), %eax
movzbl 0x1(%rbx), %ecx
shll $0x8, %ecx
movzbl %al, %r15d
orl %ecx, %r15d
movw %r15w, (%rbx)
movq (%r14), %rax
movsbl 0x2(%rax), %edi
callq 0x4410
movsbl %al, %ecx
leal -0x31(%rcx), %edx
cmpl $0x7, %edx
ja 0xd1fc
shll $0x8, %eax
movl $0xf00, %ecx            # imm = 0xF00
addl %ecx, %eax
andl %ecx, %eax
jmp 0xd211
leal -0x73(%rcx), %edx
cmpl $0x7, %edx
ja 0xd265
shll $0x8, %eax
addl $0xd00, %eax            # imm = 0xD00
andl $0xf00, %eax            # imm = 0xF00
andl $0xfffff0ff, %r15d      # imm = 0xFFFFF0FF
orl %eax, %r15d
movw %r15w, (%rbx)
cmpq $0x5, 0x8(%r14)
jne 0xd248
cmpl $0x8, %ebp
jne 0xd276
movq (%r14), %rax
cmpb $0x3a, 0x3(%rax)
jne 0xd276
movzbl 0x4(%rax), %eax
movzwl (%rbx), %ebp
shll $0xc, %eax
andl $0xfff, %ebp            # imm = 0xFFF
orl %eax, %ebp
jmp 0xd257
movzwl (%rbx), %eax
shll $0xc, %ebp
andl $0xfff, %eax            # imm = 0xFFF
orl %ebp, %eax
movl %eax, %ebp
movw %bp, (%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
addl $-0x61, %ecx
cmpl $0x7, %ecx
jbe 0xd1ee
andl $0xf0ff, %r15d          # imm = 0xF0FF
jmp 0xd21b
leaq 0x1cfd1(%rip), %rdi     # 0x2a24e
leaq 0x1c78b(%rip), %rsi     # 0x29a0f
leaq 0x1cfdb(%rip), %rcx     # 0x2a266
movl $0x4a, %edx
callq 0x41b0