// File: /workspace/github_cpp_makefile_star2_O2/isimplyexcel[P]text-based-game/Game.cpp
// Function: Game::Game()
Game::Game(){
	//	create spaces train cars
	caboose = new Flick("Caboose car", "flick on the lights", "an emergency brake key");
	bar = new Fire("Bar car", "activate emergency sprinklers", "a bottle of Hennessy");
	shopping = new Fire("Shopping car", "use the fire extinguisher", "an OSU T-Shirt");
	baggage = new Flick("Baggage car", "turn on the lights", "a CS-162 syllabus");
	dining = new Fire("Dining car", "use the fire hose", "a burrito");
	engine = new Engine("Engine car", "activate the emergency brake", "a hero badge");

	//	Link all trains
	caboose->setLeftRight(nullptr, bar);
	bar->setLeftRight(caboose, shopping);
	shopping->setLeftRight(bar, baggage);
	baggage->setLeftRight(shopping, dining);
	dining->setLeftRight(baggage, engine);
	engine->setLeftRight(dining, nullptr);

	//	set starting location to caboose
	location = caboose;
	//	initialize steps to 0
	steps = 0;
	//	player is not hero yet because train has not been saved yet
	hero = false;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x250, %rsp            # imm = 0x250
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, 0x40(%rdi)
andq $0x0, 0x50(%rdi)
movl $0x90, %edi
callq 0x2160
movq %rax, %r15
leaq 0x15f1(%rip), %rsi      # 0x5468
leaq 0x230(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x2b68
leaq 0x15e4(%rip), %rsi      # 0x5474
leaq 0x210(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x2b68
leaq 0x120f(%rip), %rsi      # 0x50b8
leaq 0x1f0(%rsp), %rdi
leaq 0xd(%rsp), %rdx
callq 0x2b68
leaq 0x230(%rsp), %rsi
leaq 0x210(%rsp), %rdx
leaq 0x1f0(%rsp), %rcx
movq %r15, %rdi
callq 0x36f0
movq %r15, 0x8(%rbx)
leaq 0x1f0(%rsp), %rdi
callq 0x2090
leaq 0x210(%rsp), %rdi
callq 0x2090
leaq 0x230(%rsp), %rdi
callq 0x2090
movl $0x90, %edi
callq 0x2160
movq %rax, %r15
leaq 0x156e(%rip), %rsi      # 0x5488
leaq 0x1d0(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x2b68
leaq 0x155d(%rip), %rsi      # 0x5490
leaq 0x1b0(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x2b68
leaq 0x1562(%rip), %rsi      # 0x54ae
leaq 0x190(%rsp), %rdi
leaq 0xd(%rsp), %rdx
callq 0x2b68
leaq 0x1d0(%rsp), %rsi
leaq 0x1b0(%rsp), %rdx
leaq 0x190(%rsp), %rcx
movq %r15, %rdi
callq 0x2fa0
movq %r15, 0x10(%rbx)
leaq 0x190(%rsp), %rdi
callq 0x2090
leaq 0x1b0(%rsp), %rdi
callq 0x2090
leaq 0x1d0(%rsp), %rdi
callq 0x2090
movl $0x90, %edi
callq 0x2160
movq %rax, %r15
leaq 0x1506(%rip), %rsi      # 0x54c3
leaq 0x170(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x2b68
leaq 0x14fa(%rip), %rsi      # 0x54d0
leaq 0x150(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x2b68
leaq 0x14fb(%rip), %rsi      # 0x54ea
leaq 0x130(%rsp), %rdi
leaq 0xd(%rsp), %rdx
callq 0x2b68
leaq 0x170(%rsp), %rsi
leaq 0x150(%rsp), %rdx
leaq 0x130(%rsp), %rcx
movq %r15, %rdi
callq 0x2fa0
movq %r15, 0x18(%rbx)
leaq 0x130(%rsp), %rdi
callq 0x2090
leaq 0x150(%rsp), %rdi
callq 0x2090
leaq 0x170(%rsp), %rdi
callq 0x2090
movl $0x90, %edi
callq 0x2160
movq %rax, %r15
leaq 0x1499(%rip), %rsi      # 0x54f9
leaq 0x110(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x2b68
leaq 0x148c(%rip), %rsi      # 0x5505
leaq 0xf0(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x2b68
leaq 0x1486(%rip), %rsi      # 0x5518
leaq 0xd0(%rsp), %rdi
leaq 0xd(%rsp), %rdx
callq 0x2b68
leaq 0x110(%rsp), %rsi
leaq 0xf0(%rsp), %rdx
leaq 0xd0(%rsp), %rcx
movq %r15, %rdi
callq 0x36f0
movq %r15, 0x20(%rbx)
leaq 0xd0(%rsp), %rdi
callq 0x2090
leaq 0xf0(%rsp), %rdi
callq 0x2090
leaq 0x110(%rsp), %rdi
callq 0x2090
movl $0x90, %edi
callq 0x2160
movq %rax, %r15
leaq 0x1427(%rip), %rsi      # 0x552a
leaq 0xb0(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x2b68
leaq 0x1419(%rip), %rsi      # 0x5535
leaq 0x90(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x2b68
leaq 0x1412(%rip), %rsi      # 0x5547
leaq 0x70(%rsp), %rdi
leaq 0xd(%rsp), %rdx
callq 0x2b68
leaq 0xb0(%rsp), %rsi
leaq 0x90(%rsp), %rdx
leaq 0x70(%rsp), %rcx
movq %r15, %rdi
callq 0x2fa0
movq %r15, 0x28(%rbx)
leaq 0x70(%rsp), %rdi
callq 0x2090
leaq 0x90(%rsp), %rdi
callq 0x2090
leaq 0xb0(%rsp), %rdi
callq 0x2090
movl $0x90, %edi
callq 0x2160
movq %rax, %r15
leaq 0x13b4(%rip), %rsi      # 0x5551
leaq 0x50(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x2b68
leaq 0x13a9(%rip), %rsi      # 0x555c
leaq 0x30(%rsp), %rdi
leaq 0xe(%rsp), %rdx
callq 0x2b68
leaq 0x13b0(%rip), %rsi      # 0x5579
leaq 0x10(%rsp), %rdi
leaq 0xd(%rsp), %rdx
callq 0x2b68
leaq 0x50(%rsp), %rsi
leaq 0x30(%rsp), %rdx
leaq 0x10(%rsp), %rcx
movq %r15, %rdi
callq 0x2534
movq %r15, 0x30(%rbx)
leaq 0x10(%rsp), %rdi
callq 0x2090
leaq 0x30(%rsp), %rdi
callq 0x2090
leaq 0x50(%rsp), %rdi
callq 0x2090
movq 0x8(%rbx), %rdi
movq 0x10(%rbx), %rdx
xorl %esi, %esi
callq 0x4d02
movq 0x8(%rbx), %rsi
movq 0x10(%rbx), %rdi
movq 0x18(%rbx), %rdx
callq 0x4d02
movq 0x10(%rbx), %rsi
movq 0x18(%rbx), %rdi
movq 0x20(%rbx), %rdx
callq 0x4d02
movq 0x18(%rbx), %rsi
movq 0x20(%rbx), %rdi
movq 0x28(%rbx), %rdx
callq 0x4d02
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdi
movq 0x30(%rbx), %rdx
callq 0x4d02
movq 0x28(%rbx), %rsi
movq 0x30(%rbx), %rdi
xorl %edx, %edx
callq 0x4d02
movq 0x8(%rbx), %rax
movq %rax, 0x38(%rbx)
andl $0x0, (%rbx)
movb $0x0, 0x58(%rbx)
addq $0x250, %rsp            # imm = 0x250
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %r14
leaq 0x10(%rsp), %rdi
callq 0x2090
jmp 0x42a1
movq %rax, %r14
leaq 0x30(%rsp), %rdi
callq 0x2090
jmp 0x42b0
movq %rax, %r14
leaq 0x50(%rsp), %rdi
jmp 0x43c3
jmp 0x43ca
movq %rax, %r14
leaq 0x70(%rsp), %rdi
callq 0x2090
jmp 0x42d1
movq %rax, %r14
leaq 0x90(%rsp), %rdi
callq 0x2090
jmp 0x42e3
movq %rax, %r14
leaq 0xb0(%rsp), %rdi
jmp 0x43c3
jmp 0x43ca
movq %rax, %r14
leaq 0xd0(%rsp), %rdi
callq 0x2090
jmp 0x430a
movq %rax, %r14
leaq 0xf0(%rsp), %rdi
callq 0x2090
jmp 0x431c
movq %rax, %r14
leaq 0x110(%rsp), %rdi
jmp 0x43c3
jmp 0x43ca
movq %rax, %r14
leaq 0x130(%rsp), %rdi
callq 0x2090
jmp 0x4343
movq %rax, %r14
leaq 0x150(%rsp), %rdi
callq 0x2090
jmp 0x4355
movq %rax, %r14
leaq 0x170(%rsp), %rdi
jmp 0x43c3
jmp 0x43ca
movq %rax, %r14
leaq 0x190(%rsp), %rdi
callq 0x2090
jmp 0x4376
movq %rax, %r14
leaq 0x1b0(%rsp), %rdi
callq 0x2090
jmp 0x4388
movq %rax, %r14
leaq 0x1d0(%rsp), %rdi
jmp 0x43c3
jmp 0x43ca
movq %rax, %r14
leaq 0x1f0(%rsp), %rdi
callq 0x2090
jmp 0x43a9
movq %rax, %r14
leaq 0x210(%rsp), %rdi
callq 0x2090
jmp 0x43bb
movq %rax, %r14
leaq 0x230(%rsp), %rdi
callq 0x2090
jmp 0x43cd
movq %rax, %r14
movl $0x90, %esi
movq %r15, %rdi
callq 0x2170
jmp 0x43df
movq %rax, %r14
addq $0x40, %rbx
movq %rbx, %rdi
callq 0x494a
movq %r14, %rdi
callq 0x21e0
nop