// File: /workspace/github_cpp_makefile_star2_O3/dnegovan[P]Intruder-On-Donnar-V/Game.cpp
// Function: Game::Game()
Game::Game()
{
    //initialize time
    timeLeft = TIME_START;
    timeTilHint = TIME_HINT;
    deadline =   "                    TIME UNTIL INCUBATION";
    objective1 = "-Talk to the crew to discover the imposter";
	objective2 = "-Gather ingredients and produce Neutralization Compound";
	objective3 = "-Neutralize the parasite";

    //allocate rooms
    bridge = new Bridge;
    corridor = new Corridor;
    captainsQ = new CaptainsQuarters;
    lounge = new Lounge;
    lab = new Lab;
    crewQ = new CrewQuarters;
    engineering = new Engineering;

    //set player position
    currentSpace = corridor;

    //build map
    bridge->up = nullptr;
    bridge->right = nullptr;
    bridge->down = corridor;
    bridge->left = nullptr;
    corridor->up = bridge;
    corridor->right = lounge;
    corridor->down = lab;
    corridor->left = captainsQ;
    captainsQ->up = nullptr;
    captainsQ->right = corridor;
    captainsQ->down = nullptr;
    captainsQ->left = nullptr;
    lounge->up = nullptr;
    lounge->right = nullptr;
    lounge->down = crewQ;
    lounge->left = corridor;
    lab->up = corridor;
    lab->right = nullptr;
    lab->down = engineering;
    lab->left = nullptr;
    crewQ->up = lounge;
    crewQ->right = nullptr;
    crewQ->down = nullptr;
    crewQ->left = nullptr;
    engineering->up = lab;
    engineering->right = nullptr;
    engineering->down = nullptr;
    engineering->left = nullptr;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
callq 0x13fcc
leaq 0x40(%rbx), %rdi
leaq 0x50(%rbx), %rax
movq %rax, -0x50(%rbp)
movq %rax, 0x40(%rbx)
xorl %eax, %eax
movq %rax, 0x48(%rbx)
movb %al, 0x50(%rbx)
leaq 0x60(%rbx), %rcx
movq %rcx, -0x38(%rbp)
leaq 0x70(%rbx), %rcx
movq %rcx, -0x48(%rbp)
movq %rcx, 0x60(%rbx)
movq %rax, 0x68(%rbx)
movb %al, 0x70(%rbx)
leaq 0x80(%rbx), %r12
leaq 0x90(%rbx), %rcx
movq %rcx, -0x40(%rbp)
movq %rcx, 0x80(%rbx)
movq %rax, 0x88(%rbx)
movb %al, 0x90(%rbx)
leaq 0xa0(%rbx), %r13
leaq 0xb0(%rbx), %r15
movq %r15, 0xa0(%rbx)
movq %rax, 0xa8(%rbx)
movb %al, 0xb0(%rbx)
movabsq $0xe00000012, %rax      # imm = 0xE00000012
movq %rax, 0x38(%rbx)
leaq 0x57d2(%rip), %rcx      # 0x16728
movl $0x29, %r8d
movq %rdi, -0x58(%rbp)
xorl %esi, %esi
xorl %edx, %edx
callq 0x3290
movq 0x68(%rbx), %rdx
leaq 0x57de(%rip), %rcx      # 0x16752
movl $0x2a, %r8d
movq -0x38(%rbp), %rdi
xorl %esi, %esi
callq 0x3290
movq 0x88(%rbx), %rdx
leaq 0x57ea(%rip), %rcx      # 0x1677d
movl $0x37, %r8d
movq %r12, %rdi
xorl %esi, %esi
callq 0x3290
movq 0xa8(%rbx), %rdx
leaq 0x5804(%rip), %rcx      # 0x167b5
movl $0x18, %r8d
movq %r13, %rdi
xorl %esi, %esi
callq 0x3290
movl $0x68, %edi
callq 0x31e0
movq %rax, %r14
movq %rax, %rdi
callq 0xde88
movq %r14, 0xc8(%rbx)
movl $0x68, %edi
callq 0x31e0
movq %rax, %r14
movq %rax, %rdi
callq 0xe9b4
movq %r14, 0xf8(%rbx)
movl $0x68, %edi
callq 0x31e0
movq %rax, %r14
movq %rax, %rdi
callq 0xe814
movq %r14, 0xe0(%rbx)
movl $0x68, %edi
callq 0x31e0
movq %rax, %r14
movq %rax, %rdi
callq 0x13c88
movq %r14, 0xd8(%rbx)
movl $0x68, %edi
callq 0x31e0
movq %rax, %r14
movq %rax, %rdi
callq 0x13520
movq %r14, 0xd0(%rbx)
movl $0x68, %edi
callq 0x31e0
movq %rax, %r14
movq %rax, %rdi
callq 0xf390
movq %r14, 0xe8(%rbx)
movl $0x68, %edi
callq 0x31e0
movq %rax, %r14
movq %rax, %rdi
callq 0x10bb0
movq %r14, 0xf0(%rbx)
movq 0xc8(%rbx), %rcx
movq 0xf8(%rbx), %rdx
movq %rdx, 0xc0(%rbx)
xorl %eax, %eax
movq %rax, 0x48(%rcx)
movq %rdx, 0x50(%rcx)
xorps %xmm0, %xmm0
movups %xmm0, 0x58(%rcx)
movq %rcx, 0x48(%rdx)
movq 0xd8(%rbx), %rcx
movq %rcx, 0x60(%rdx)
movq 0xd0(%rbx), %rsi
movq %rsi, 0x50(%rdx)
movq 0xe0(%rbx), %rdi
movq %rdi, 0x58(%rdx)
movq %rax, 0x48(%rdi)
movq %rdx, 0x60(%rdi)
movups %xmm0, 0x50(%rdi)
movq %rax, 0x48(%rcx)
movq %rax, 0x60(%rcx)
movq 0xe8(%rbx), %rdi
movq %rdi, 0x50(%rcx)
movq %rdx, 0x58(%rcx)
movq %rdx, 0x48(%rsi)
movq %r14, 0x50(%rsi)
movups %xmm0, 0x58(%rsi)
movq %rcx, 0x48(%rdi)
movups %xmm0, 0x50(%rdi)
movq %rax, 0x60(%rdi)
movq %rsi, 0x48(%r14)
movups %xmm0, 0x50(%r14)
movq %rax, 0x60(%r14)
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x11133
jmp 0x11133
jmp 0x11133
jmp 0x11133
jmp 0x11133
jmp 0x11133
movq %rax, -0x30(%rbp)
movq %r14, %rdi
callq 0x31c0
jmp 0x11145
movq %rax, -0x30(%rbp)
movq (%r13), %rdi
cmpq %r15, %rdi
je 0x11153
callq 0x31c0
movq (%r12), %rdi
cmpq -0x40(%rbp), %rdi
je 0x11162
callq 0x31c0
movq -0x38(%rbp), %rax
movq (%rax), %rdi
cmpq -0x48(%rbp), %rdi
je 0x11174
callq 0x31c0
movq -0x58(%rbp), %rax
movq (%rax), %rdi
cmpq -0x50(%rbp), %rdi
je 0x11186
callq 0x31c0
movq %rbx, %rdi
callq 0xd718
movq -0x30(%rbp), %rdi
callq 0x3320
nop