// File: 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
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x28(%rbp)
movq %rdi, %rax
movq %rax, -0x48(%rbp)
callq 0x1cf00
movq -0x28(%rbp), %rdi
addq $0x40, %rdi
movq %rdi, -0x20(%rbp)
callq 0x3300
movq -0x28(%rbp), %rdi
addq $0x60, %rdi
movq %rdi, -0x40(%rbp)
callq 0x3300
movq -0x28(%rbp), %rdi
subq $-0x80, %rdi
movq %rdi, -0x38(%rbp)
callq 0x3300
movq -0x28(%rbp), %rdi
addq $0xa0, %rdi
movq %rdi, -0x30(%rbp)
callq 0x3300
movq -0x28(%rbp), %rax
movq -0x20(%rbp), %rdi
movl $0x12, 0x38(%rax)
movl $0xe, 0x3c(%rax)
leaq 0x65b1(%rip), %rsi      # 0x1f728
callq 0x32e0
jmp 0x1917e
movq -0x48(%rbp), %rdi
addq $0x60, %rdi
leaq 0x65c5(%rip), %rsi      # 0x1f752
callq 0x32e0
jmp 0x19194
movq -0x48(%rbp), %rdi
subq $-0x80, %rdi
leaq 0x65da(%rip), %rsi      # 0x1f77d
callq 0x32e0
jmp 0x191aa
movq -0x48(%rbp), %rdi
addq $0xa0, %rdi
leaq 0x65f9(%rip), %rsi      # 0x1f7b5
callq 0x32e0
jmp 0x191c3
movl $0x68, %edi
callq 0x3220
movq %rax, -0x50(%rbp)
jmp 0x191d3
movq -0x50(%rbp), %rdi
callq 0x151b0
jmp 0x191de
movq -0x48(%rbp), %rax
movq -0x50(%rbp), %rcx
movq %rcx, 0xc8(%rax)
movl $0x68, %edi
callq 0x3220
movq %rax, -0x58(%rbp)
jmp 0x191fd
movq -0x58(%rbp), %rdi
callq 0x15e40
jmp 0x19208
movq -0x48(%rbp), %rax
movq -0x58(%rbp), %rcx
movq %rcx, 0xf8(%rax)
movl $0x68, %edi
callq 0x3220
movq %rax, -0x60(%rbp)
jmp 0x19227
movq -0x60(%rbp), %rdi
callq 0x15bc0
jmp 0x19232
movq -0x48(%rbp), %rax
movq -0x60(%rbp), %rcx
movq %rcx, 0xe0(%rax)
movl $0x68, %edi
callq 0x3220
movq %rax, -0x68(%rbp)
jmp 0x19251
movq -0x68(%rbp), %rdi
callq 0x1c9e0
jmp 0x1925c
movq -0x48(%rbp), %rax
movq -0x68(%rbp), %rcx
movq %rcx, 0xd8(%rax)
movl $0x68, %edi
callq 0x3220
movq %rax, -0x70(%rbp)
jmp 0x1927b
movq -0x70(%rbp), %rdi
callq 0x1c080
jmp 0x19286
movq -0x48(%rbp), %rax
movq -0x70(%rbp), %rcx
movq %rcx, 0xd0(%rax)
movl $0x68, %edi
callq 0x3220
movq %rax, -0x78(%rbp)
jmp 0x192a5
movq -0x78(%rbp), %rdi
callq 0x17130
jmp 0x192b0
movq -0x48(%rbp), %rax
movq -0x78(%rbp), %rcx
movq %rcx, 0xe8(%rax)
movl $0x68, %edi
callq 0x3220
movq %rax, -0x80(%rbp)
jmp 0x192cf
movq -0x80(%rbp), %rdi
callq 0x18d30
jmp 0x192da
movq -0x48(%rbp), %rax
movq -0x80(%rbp), %rcx
movq %rcx, 0xf0(%rax)
movq 0xf8(%rax), %rcx
movq %rcx, 0xc0(%rax)
movq 0xc8(%rax), %rcx
movq $0x0, 0x48(%rcx)
movq 0xc8(%rax), %rcx
movq $0x0, 0x60(%rcx)
movq 0xf8(%rax), %rdx
movq 0xc8(%rax), %rcx
movq %rdx, 0x50(%rcx)
movq 0xc8(%rax), %rcx
movq $0x0, 0x58(%rcx)
movq 0xc8(%rax), %rdx
movq 0xf8(%rax), %rcx
movq %rdx, 0x48(%rcx)
movq 0xd8(%rax), %rdx
movq 0xf8(%rax), %rcx
movq %rdx, 0x60(%rcx)
movq 0xd0(%rax), %rdx
movq 0xf8(%rax), %rcx
movq %rdx, 0x50(%rcx)
movq 0xe0(%rax), %rdx
movq 0xf8(%rax), %rcx
movq %rdx, 0x58(%rcx)
movq 0xe0(%rax), %rcx
movq $0x0, 0x48(%rcx)
movq 0xf8(%rax), %rdx
movq 0xe0(%rax), %rcx
movq %rdx, 0x60(%rcx)
movq 0xe0(%rax), %rcx
movq $0x0, 0x50(%rcx)
movq 0xe0(%rax), %rcx
movq $0x0, 0x58(%rcx)
movq 0xd8(%rax), %rcx
movq $0x0, 0x48(%rcx)
movq 0xd8(%rax), %rcx
movq $0x0, 0x60(%rcx)
movq 0xe8(%rax), %rdx
movq 0xd8(%rax), %rcx
movq %rdx, 0x50(%rcx)
movq 0xf8(%rax), %rdx
movq 0xd8(%rax), %rcx
movq %rdx, 0x58(%rcx)
movq 0xf8(%rax), %rdx
movq 0xd0(%rax), %rcx
movq %rdx, 0x48(%rcx)
movq 0xd0(%rax), %rcx
movq $0x0, 0x60(%rcx)
movq 0xf0(%rax), %rdx
movq 0xd0(%rax), %rcx
movq %rdx, 0x50(%rcx)
movq 0xd0(%rax), %rcx
movq $0x0, 0x58(%rcx)
movq 0xd8(%rax), %rdx
movq 0xe8(%rax), %rcx
movq %rdx, 0x48(%rcx)
movq 0xe8(%rax), %rcx
movq $0x0, 0x60(%rcx)
movq 0xe8(%rax), %rcx
movq $0x0, 0x50(%rcx)
movq 0xe8(%rax), %rcx
movq $0x0, 0x58(%rcx)
movq 0xd0(%rax), %rdx
movq 0xf0(%rax), %rcx
movq %rdx, 0x48(%rcx)
movq 0xf0(%rax), %rcx
movq $0x0, 0x60(%rcx)
movq 0xf0(%rax), %rcx
movq $0x0, 0x50(%rcx)
movq 0xf0(%rax), %rax
movq $0x0, 0x58(%rax)
addq $0x80, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
jmp 0x1957b
movq -0x50(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
callq 0x31f0
jmp 0x1957b
movq -0x58(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
callq 0x31f0
jmp 0x1957b
movq -0x60(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
callq 0x31f0
jmp 0x1957b
movq -0x68(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
callq 0x31f0
jmp 0x1957b
movq -0x70(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
callq 0x31f0
jmp 0x1957b
movq -0x78(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
callq 0x31f0
jmp 0x1957b
movq -0x80(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x10(%rbp)
movl %eax, -0x14(%rbp)
callq 0x31f0
movq -0x30(%rbp), %rdi
callq 0x3448
movq -0x38(%rbp), %rdi
callq 0x3448
movq -0x40(%rbp), %rdi
callq 0x3448
movq -0x20(%rbp), %rdi
callq 0x3448
movq -0x28(%rbp), %rdi
callq 0x1bea0
movq -0x10(%rbp), %rdi
callq 0x33c0
nopw %cs:(%rax,%rax)