// File: iTruth[P]klotski/./klotski_board.h
// Function: klotski_board::klotski_board<std::vector<int, std::allocator<int>>>(std::vector<int, std::allocator<int>> const&, int, int)
klotski_board::klotski_board(const T& situation_array, int dx, int dy):
	dx(dx), dy(dy),
	x_distribution(std::uniform_int_distribution<>(0, dx-1)),
	y_distribution(std::uniform_int_distribution<>(0, dy-1)){
		resize_board_to_fit();
		auto const_array_iterator = situation_array.cbegin();
		for(auto& i: situation){
			for(auto& n: i){
				if(const_array_iterator != situation_array.cend()){
					n = *const_array_iterator++;
				}else{
					throw std::invalid_argument("situation array is not fit");
				}
			}
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xa0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x88(%rbp)
leaq 0x186ed(%rip), %rax     # 0x23c98
addq $0x10, %rax
movq %rax, (%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x8(%rdi)
movl -0x18(%rbp), %eax
movl %eax, 0xc(%rdi)
movl $0x0, 0x10(%rdi)
movl $0x0, 0x14(%rdi)
addq $0x18, %rdi
movq %rdi, -0x90(%rbp)
callq 0xb7d0
movq -0x88(%rbp), %rdi
addq $0x30, %rdi
movl -0x14(%rbp), %edx
decl %edx
xorl %esi, %esi
callq 0xb7f0
jmp 0xb5f5
movq -0x88(%rbp), %rdi
addq $0x38, %rdi
movl -0x18(%rbp), %edx
decl %edx
xorl %esi, %esi
callq 0xb7f0
jmp 0xb60e
movq -0x88(%rbp), %rdi
addq $0x40, %rdi
movsd 0xcacf(%rip), %xmm0     # 0x180f0
callq 0xb820
jmp 0xb628
movq -0x88(%rbp), %rdi
callq 0xc7a0
jmp 0xb636
movq -0x10(%rbp), %rdi
callq 0xb850
movq %rax, %rcx
movq -0x88(%rbp), %rax
movq %rcx, -0x30(%rbp)
addq $0x18, %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
callq 0x8f50
movq %rax, -0x40(%rbp)
movq -0x38(%rbp), %rdi
callq 0x8f80
movq %rax, -0x48(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0xb880
testb $0x1, %al
jne 0xb685
jmp 0xb7a5
leaq -0x40(%rbp), %rdi
callq 0x9800
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rdi
callq 0xafb0
movq %rax, -0x60(%rbp)
movq -0x58(%rbp), %rdi
callq 0xae40
movq %rax, -0x68(%rbp)
leaq -0x60(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0xb8c0
testb $0x1, %al
jne 0xb6ca
jmp 0xb795
leaq -0x60(%rbp), %rdi
callq 0xb900
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rdi
callq 0xb960
movq %rax, -0x78(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0xb920
testb $0x1, %al
jne 0xb6f7
jmp 0xb72a
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
callq 0xb990
movq %rax, -0x80(%rbp)
leaq -0x80(%rbp), %rdi
callq 0xb9d0
movl (%rax), %ecx
movq -0x70(%rbp), %rax
movl %ecx, (%rax)
jmp 0xb785
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0xb7ae
movl $0x10, %edi
callq 0x3130
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x98(%rbp)
leaq 0xce22(%rip), %rsi      # 0x1856a
callq 0x3520
jmp 0xb74f
movq -0x98(%rbp), %rdi
movq 0x18873(%rip), %rsi     # 0x23fd0
movq 0x18854(%rip), %rdx     # 0x23fb8
callq 0x34b0
jmp 0xb7c3
movq -0x98(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x3210
jmp 0xb7ae
jmp 0xb787
leaq -0x60(%rbp), %rdi
callq 0xb9f0
jmp 0xb6b4
jmp 0xb797
leaq -0x40(%rbp), %rdi
callq 0x9820
jmp 0xb66f
addq $0xa0, %rsp
popq %rbp
retq
movq -0x90(%rbp), %rdi
callq 0x74b0
movq -0x20(%rbp), %rdi
callq 0x34e0
nopw %cs:(%rax,%rax)
nopl (%rax)