// File: /workspace/github_cpp_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %r8, %r12
movq %rcx, %r13
movq %rdi, %r14
movl %esi, 0x28(%rsp)
movb %dl, 0xe(%rsp)
movl %r9d, 0x2c(%rsp)
movq $0x12, (%rdi)
movl %esi, 0x8(%rdi)
movb %dl, 0xc(%rdi)
addq $0x10, %rdi
leaq 0x20(%r14), %rax
movq %rax, 0x38(%rsp)
movq %rax, 0x10(%r14)
movq (%rcx), %rsi
movq 0x8(%rcx), %rdx
addq %rsi, %rdx
movq %rdi, 0x40(%rsp)
callq 0x6510
leaq 0x30(%r14), %r15
leaq 0x40(%r14), %rax
movq %rax, 0x30(%rsp)
movq %rax, 0x30(%r14)
movq (%r12), %rsi
movq 0x8(%r12), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x6510
leaq 0x2c(%rsp), %rbx
movl (%rbx), %eax
movl %eax, 0x50(%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x58(%r14)
movups %xmm0, 0x68(%r14)
leaq 0x24(%rsp), %rcx
movl $0x1, (%rcx)
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x16(%rsp), %rbp
leaq 0x18(%rsp), %rsi
leaq 0x17(%rsp), %rdx
leaq 0x30(%rsp), %r8
movq %r8, %r9
pushq %rbx
pushq %r13
pushq %rbp
callq 0xa0ea
addq $0x20, %rsp
movaps 0x10(%rsp), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, 0x10(%rsp)
movq 0x60(%r14), %rdi
movups %xmm0, 0x58(%r14)
testq %rdi, %rdi
je 0x91ab
callq 0x63c0
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x91ba
callq 0x63c0
leaq 0x24(%rsp), %rcx
movl $0x2, (%rcx)
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x18(%rsp), %rsi
leaq 0x17(%rsp), %rdx
leaq 0x30(%rsp), %r8
movq %r8, %r9
pushq %rbx
pushq %r12
pushq %rbp
callq 0xa0ea
addq $0x20, %rsp
movaps 0x10(%rsp), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, 0x10(%rsp)
movq 0x70(%r14), %rdi
movups %xmm0, 0x68(%r14)
testq %rdi, %rdi
je 0x9215
callq 0x63c0
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x9224
callq 0x63c0
leaq 0x58(%r14), %r12
cmpl $0x3, 0x28(%rsp)
jl 0x92d3
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0x24(%rsp), %rdx
movq %r12, %rcx
callq 0xa2b6
movaps 0x10(%rsp), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, 0x10(%rsp)
movq 0x60(%r14), %rdi
movups %xmm0, 0x58(%r14)
testq %rdi, %rdi
je 0x9272
callq 0x63c0
leaq 0x68(%r14), %r13
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x9285
callq 0x63c0
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0x24(%rsp), %rdx
movq %r13, %rcx
callq 0xa2b6
movaps 0x10(%rsp), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, 0x10(%rsp)
movq 0x70(%r14), %rdi
movups %xmm0, 0x68(%r14)
testq %rdi, %rdi
je 0x92c4
callq 0x63c0
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x92d3
callq 0x63c0
movq (%r12), %rdi
movq (%rdi), %rax
callq *0x48(%rax)
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x92f4
jmp 0x92f4
jmp 0x92f4
jmp 0x92f4
movq %rax, %r12
movq 0x70(%r14), %rdi
testq %rdi, %rdi
je 0x9305
callq 0x63c0
movq 0x60(%r14), %rdi
testq %rdi, %rdi
je 0x9313
callq 0x63c0
movq (%r15), %rdi
cmpq 0x30(%rsp), %rdi
je 0x9332
movq 0x30(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x52c0
jmp 0x9332
movq %rax, %r12
movq 0x40(%rsp), %rax
movq (%rax), %rdi
cmpq 0x38(%rsp), %rdi
je 0x9351
movq 0x38(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x52c0
movq %r12, %rdi
callq 0x5480
nop