// File: EstherJin[P]TetrisRemake/game.cc
// Function: Game::Game(int, bool, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, unsigned int)
Game::Game(int startLevel, bool textOnly, string script1, string script2, unsigned seed): defaultLevel{startLevel}, textOnly{textOnly}, script1{script1}, script2{script2}, seed{seed} {
	brd1 = make_shared <BasicBoard> (1, startLevel, startLevel, textOnly, script1, seed);
	brd2 = make_shared <BasicBoard> (2, startLevel, startLevel, textOnly, script2, seed);
	if (startLevel >= 3) {
		brd1 = make_shared<Heavy> (brd1);
		brd2 = make_shared<Heavy> (brd2);
	}
	brd1->getNextBlock();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %r8, -0x98(%rbp)
movq %rcx, -0xb0(%rbp)
movl %esi, %ecx
movq -0xb0(%rbp), %rsi
movb %dl, %al
movq %rdi, -0x8(%rbp)
movl %ecx, -0xc(%rbp)
andb $0x1, %al
movb %al, -0xd(%rbp)
movq %rsi, -0x18(%rbp)
movq %r8, -0x20(%rbp)
movl %r9d, -0x24(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0xa0(%rbp)
movl $0x12, (%rdi)
movl $0x0, 0x4(%rdi)
movl -0xc(%rbp), %eax
movl %eax, 0x8(%rdi)
movb -0xd(%rbp), %al
andb $0x1, %al
movb %al, 0xc(%rdi)
addq $0x10, %rdi
movq %rdi, -0xa8(%rbp)
callq 0x6150
movq -0xa0(%rbp), %rdi
movq -0x98(%rbp), %rsi
addq $0x30, %rdi
movq %rdi, -0x90(%rbp)
callq 0x6150
jmp 0x150d2
movq -0xa0(%rbp), %rdi
movl -0x24(%rbp), %eax
movl %eax, 0x50(%rdi)
addq $0x58, %rdi
movq %rdi, -0xc0(%rbp)
callq 0x165a0
movq -0xa0(%rbp), %rdi
addq $0x68, %rdi
movq %rdi, -0xb8(%rbp)
callq 0x165a0
movq -0xb0(%rbp), %r9
movl $0x1, -0x4c(%rbp)
movq %rsp, %rax
leaq -0x24(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x48(%rbp), %rdi
leaq -0x4c(%rbp), %rsi
leaq -0xc(%rbp), %rcx
leaq -0xd(%rbp), %r8
movq %rcx, %rdx
callq 0x165c0
jmp 0x15138
movq -0xa0(%rbp), %rdi
addq $0x58, %rdi
leaq -0x48(%rbp), %rsi
movq %rsi, -0xc8(%rbp)
callq 0x16660
movq -0xc8(%rbp), %rdi
callq 0x16690
movq -0x98(%rbp), %r9
movl $0x2, -0x64(%rbp)
movq %rsp, %rax
leaq -0x24(%rbp), %rcx
movq %rcx, (%rax)
leaq -0x60(%rbp), %rdi
leaq -0x64(%rbp), %rsi
leaq -0xc(%rbp), %rcx
leaq -0xd(%rbp), %r8
movq %rcx, %rdx
callq 0x165c0
jmp 0x15191
movq -0xa0(%rbp), %rdi
addq $0x68, %rdi
leaq -0x60(%rbp), %rsi
callq 0x16660
leaq -0x60(%rbp), %rdi
callq 0x16690
cmpl $0x3, -0xc(%rbp)
jl 0x15273
movq -0xa0(%rbp), %rsi
addq $0x58, %rsi
leaq -0x78(%rbp), %rdi
callq 0x166b0
jmp 0x151ce
movq -0xa0(%rbp), %rdi
addq $0x58, %rdi
leaq -0x78(%rbp), %rsi
movq %rsi, -0xd0(%rbp)
callq 0x16720
movq -0xd0(%rbp), %rdi
callq 0x16750
movq -0xa0(%rbp), %rsi
addq $0x68, %rsi
leaq -0x88(%rbp), %rdi
callq 0x166b0
jmp 0x1520e
movq -0xa0(%rbp), %rdi
addq $0x68, %rdi
leaq -0x88(%rbp), %rsi
callq 0x16720
leaq -0x88(%rbp), %rdi
callq 0x16750
jmp 0x15273
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
jmp 0x1529a
movq -0xb8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
callq 0x76e0
movq -0xc0(%rbp), %rdi
callq 0x76e0
movq -0x90(%rbp), %rdi
callq 0x6230
jmp 0x1529a
movq -0xa0(%rbp), %rdi
addq $0x58, %rdi
callq 0x12de0
movq %rax, %rdi
movq (%rdi), %rax
movq 0x48(%rax), %rax
callq *%rax
jmp 0x15291
addq $0xe0, %rsp
popq %rbp
retq
movq -0xa8(%rbp), %rdi
callq 0x6230
movq -0x30(%rbp), %rdi
callq 0x65c0
nop