// File: /workspace/github_cpp_makefile_star2_O3/Leeingnyo[P]newPuyoC/game.cpp
// Function: VSGame::GameInit()
bool VSGame::GameInit() {
    Console::ScreenClear();
    std::cout << Console::GotoXY(X(0), Y(0));

    // prepare game
    int seed = time(NULL);
    my_bipuyo_generator = std::make_shared<BiPuyoGenerator>(seed);
    my_board = std::make_shared<Board>();
    my_board->SetNextBiPuyo(my_bipuyo_generator->GenerateBipuyo());
    my_next_bipuyo = my_bipuyo_generator->GenerateBipuyo();
    other_bipuyo_generator = std::make_shared<BiPuyoGenerator>(seed);
    other_board = std::make_shared<Board>();
    other_board->SetNextBiPuyo(other_bipuyo_generator->GenerateBipuyo());
    other_next_bipuyo = other_bipuyo_generator->GenerateBipuyo();

    std::cout << "Loading..." << std::endl;
    Console::Sleep(500);
    return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %r14
callq 0x3dd8
xorl %r12d, %r12d
leaq -0x40(%rbp), %r15
movq %r12, (%r15)
movq 0xc6a0(%rip), %rbx      # 0x10fd0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3e76
xorl %edi, %edi
callq 0x3240
leaq -0x44(%rbp), %rcx
movl %eax, (%rcx)
movq %r12, (%r15)
leaq -0x38(%rbp), %rdi
leaq -0x29(%rbp), %rdx
movq %r15, %rsi
callq 0x9c3c
movaps (%r15), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, (%r15)
movq 0x18(%r14), %rdi
movups %xmm0, 0x10(%r14)
testq %rdi, %rdi
je 0x4987
callq 0x7f4e
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x4987
callq 0x7f4e
leaq -0x38(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq -0x29(%rbp), %rdx
movq %r15, %rsi
callq 0x9b26
movaps (%r15), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, (%r15)
movq 0x28(%r14), %rdi
movups %xmm0, 0x20(%r14)
testq %rdi, %rdi
je 0x49cb
callq 0x7f4e
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x49cb
callq 0x7f4e
movq 0x20(%r14), %r13
movq 0x10(%r14), %rsi
movq %r15, %rdi
callq 0x6ee8
movq (%r15), %rax
movq %rax, 0x50(%r13)
leaq 0x58(%r13), %rdi
leaq -0x38(%rbp), %r15
movq %r15, %rsi
callq 0x7fc8
movabsq $0x100000002, %r12      # imm = 0x100000002
movq %r12, 0x60(%r13)
movl $0x0, 0x68(%r13)
movq (%r15), %rdi
testq %rdi, %rdi
je 0x4a15
callq 0x7f4e
movq 0x10(%r14), %rsi
leaq -0x40(%rbp), %r15
movq %r15, %rdi
callq 0x6ee8
movaps (%r15), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, (%r15)
movq 0x38(%r14), %rdi
movups %xmm0, 0x30(%r14)
testq %rdi, %rdi
je 0x4a51
callq 0x7f4e
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x4a51
callq 0x7f4e
leaq -0x38(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq -0x29(%rbp), %rdx
leaq -0x44(%rbp), %rcx
movq %r15, %rsi
callq 0x9c3c
movaps (%r15), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, (%r15)
movq 0x58(%r14), %rdi
movups %xmm0, 0x50(%r14)
testq %rdi, %rdi
je 0x4a99
callq 0x7f4e
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x4a99
callq 0x7f4e
leaq -0x38(%rbp), %rdi
movq $0x0, -0x8(%rdi)
leaq -0x29(%rbp), %rdx
movq %r15, %rsi
callq 0x9b26
movaps (%r15), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, (%r15)
movq 0x68(%r14), %rdi
movups %xmm0, 0x60(%r14)
testq %rdi, %rdi
je 0x4add
callq 0x7f4e
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x4add
callq 0x7f4e
movq 0x60(%r14), %r13
movq 0x50(%r14), %rsi
movq %r15, %rdi
callq 0x6ee8
movq (%r15), %rax
movq %rax, 0x50(%r13)
leaq 0x58(%r13), %rdi
leaq -0x38(%rbp), %r15
movq %r15, %rsi
callq 0x7fc8
movq %r12, 0x60(%r13)
movl $0x0, 0x68(%r13)
movq (%r15), %rdi
testq %rdi, %rdi
je 0x4b1d
callq 0x7f4e
movq 0x50(%r14), %rsi
leaq -0x40(%rbp), %r15
movq %r15, %rdi
callq 0x6ee8
movaps (%r15), %xmm0
xorps %xmm1, %xmm1
movaps %xmm1, (%r15)
movq 0x78(%r14), %rdi
movups %xmm0, 0x70(%r14)
testq %rdi, %rdi
je 0x4b59
callq 0x7f4e
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x4b59
callq 0x7f4e
leaq 0x7670(%rip), %rsi      # 0xc1d0
movl $0xa, %edx
movq %rbx, %rdi
callq 0x3310
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x3290
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31d0
movl $0x1f4, %edi            # imm = 0x1F4
callq 0x3dc8
movb $0x1, %al
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop