// File: tyhsu[P]Ewn/game.cpp
// Function: Game::create_movable_chs_map()
Movable_chs_map Game::create_movable_chs_map()
{
	Movable_chs_map movable_chs_map_;
	for(int exist_=0; exist_<(1<<6); exist_++) { // each exist status
		for(int dice=0; dice<6; dice++) {
			int former_chs_index = -1, latter_chs_index = -1;
			for(int i=dice-1; i>=0; i--) {
				if((exist_%(1<<(i+1)))/(1<<i) == true) {
					former_chs_index = i;
					break;
				}
			}
			for(int i=dice+1; i<6; i++) {
				if((exist_>>i)%2 == true) {
					latter_chs_index = i;
					break;
				}
			}
			former_chs_index = (former_chs_index == -1) ? latter_chs_index : former_chs_index;
			latter_chs_index = (latter_chs_index == -1) ? former_chs_index : latter_chs_index;
			pair<int, int> fir(dice, exist_), sec(former_chs_index, latter_chs_index);
			movable_chs_map_.insert(make_pair(fir, sec));
		}
	}
	return movable_chs_map_;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x78(%rbp)
movq %rdi, %rax
movq %rax, -0x70(%rbp)
movq %rdi, -0x8(%rbp)
movb $0x0, -0x9(%rbp)
callq 0xbb30
movl $0x0, -0x10(%rbp)
cmpl $0x40, -0x10(%rbp)
jge 0xbafd
movl $0x0, -0x14(%rbp)
cmpl $0x6, -0x14(%rbp)
jge 0xbaed
movl $0xffffffff, -0x18(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x1c(%rbp) # imm = 0xFFFFFFFF
movl -0x14(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x20(%rbp)
cmpl $0x0, -0x20(%rbp)
jl 0xb9d2
movl -0x10(%rbp), %eax
movl -0x20(%rbp), %ecx
addl $0x1, %ecx
movl $0x1, %edx
shll %cl, %edx
movl %edx, %ecx
cltd
idivl %ecx
movl %edx, %eax
movl -0x20(%rbp), %ecx
movl $0x1, %edx
shll %cl, %edx
movl %edx, %ecx
cltd
idivl %ecx
cmpl $0x1, %eax
jne 0xb9c5
movl -0x20(%rbp), %eax
movl %eax, -0x18(%rbp)
jmp 0xb9d2
jmp 0xb9c7
movl -0x20(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0xb98c
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
cmpl $0x6, -0x24(%rbp)
jge 0xba0b
movl -0x10(%rbp), %eax
movl -0x24(%rbp), %ecx
sarl %cl, %eax
movl $0x2, %ecx
cltd
idivl %ecx
cmpl $0x1, %edx
jne 0xb9fe
movl -0x24(%rbp), %eax
movl %eax, -0x1c(%rbp)
jmp 0xba0b
jmp 0xba00
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0xb9db
cmpl $-0x1, -0x18(%rbp)
jne 0xba19
movl -0x1c(%rbp), %eax
movl %eax, -0x7c(%rbp)
jmp 0xba1f
movl -0x18(%rbp), %eax
movl %eax, -0x7c(%rbp)
movl -0x7c(%rbp), %eax
movl %eax, -0x18(%rbp)
cmpl $-0x1, -0x1c(%rbp)
jne 0xba33
movl -0x18(%rbp), %eax
movl %eax, -0x80(%rbp)
jmp 0xba39
movl -0x1c(%rbp), %eax
movl %eax, -0x80(%rbp)
movl -0x80(%rbp), %eax
movl %eax, -0x1c(%rbp)
leaq -0x2c(%rbp), %rdi
leaq -0x14(%rbp), %rsi
leaq -0x10(%rbp), %rdx
callq 0x5c40
jmp 0xba52
leaq -0x44(%rbp), %rdi
leaq -0x18(%rbp), %rsi
leaq -0x1c(%rbp), %rdx
callq 0x5c40
jmp 0xba65
leaq -0x2c(%rbp), %rdi
leaq -0x44(%rbp), %rsi
callq 0xbb90
movq %rdx, -0x90(%rbp)
movq %rax, -0x88(%rbp)
jmp 0xba82
movq -0x78(%rbp), %rdi
movq -0x90(%rbp), %rax
movq -0x88(%rbp), %rcx
movq %rcx, -0x54(%rbp)
movq %rax, -0x4c(%rbp)
leaq -0x54(%rbp), %rsi
callq 0xbb50
movb %dl, -0x99(%rbp)
movq %rax, -0x98(%rbp)
jmp 0xbab4
movb -0x99(%rbp), %al
movq -0x98(%rbp), %rcx
movq %rcx, -0x68(%rbp)
movb %al, -0x60(%rbp)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0xb96b
movq -0x78(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
callq 0x27e0
jmp 0xbb1d
jmp 0xbaef
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0xb95a
movb $0x1, -0x9(%rbp)
testb $0x1, -0x9(%rbp)
jne 0xbb10
movq -0x78(%rbp), %rdi
callq 0x27e0
movq -0x70(%rbp), %rax
addq $0xa0, %rsp
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x2210
nopw %cs:(%rax,%rax)