// File: isimplyexcel[P]text-based-game/Flick.cpp
// Function: Flick::action(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&)
void Flick::action(std::vector<std::string>& container){
	//	welcome user to the car
	std::cout << "Welcome to the " << this->getCarName() << "!" << std::endl;

	//	If you have not turned on the lights
	if(!actionTaken){
		std::cout << "The " << this->getCarName() << " is pitch black!" << std::endl;
		std::cout << "You cannot see anything! You must " << this->getActionName() << " in order"
				  << " to continue.\n" << std::endl;

		std::cout << "\tAction Menu" << std::endl;
	  	std::cout << "1) " << this->getActionName() << "." << std::endl;
	  	std::cout << "Enter your choice: " << std::endl;

	    int flickLights = validate(1,1);
	    std::cout << "\nYou " << this->getActionName() << "! You may now continue to traverse the train!" << std::endl;
	    //	Since the lights are now on, you won't be asked to turn on the lights for this car again
	    actionTaken = true;
	}
	else{
		std::cout << "You've already taken action in this car, hurry up and make your way to "
		          << "the engine car!" << std::endl;
	}

	// If you did not take the item yet
	if(!itemTaken){
		this->findItem(container);
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq 0x7b9b(%rip), %rdi      # 0xcfd0
leaq 0x3c34(%rip), %rsi      # 0x9070
callq 0x21a0
movq -0xe8(%rbp), %rsi
movq %rax, -0xe0(%rbp)
leaq -0x30(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
callq 0x7e80
movq -0xe0(%rbp), %rdi
movq -0xd8(%rbp), %rsi
callq 0x2190
movq %rax, -0xd0(%rbp)
jmp 0x547b
movq -0xd0(%rbp), %rdi
leaq 0x42c6(%rip), %rsi      # 0x974f
callq 0x21a0
movq %rax, -0xf0(%rbp)
jmp 0x5497
movq -0xf0(%rbp), %rdi
movq 0x7b1b(%rip), %rsi      # 0xcfc0
callq 0x21d0
jmp 0x54ac
leaq -0x30(%rbp), %rdi
callq 0x2100
movq -0xe8(%rbp), %rax
testb $0x1, 0x28(%rax)
jne 0x5800
movq 0x7b03(%rip), %rdi      # 0xcfd0
leaq 0x3de0(%rip), %rsi      # 0x92b4
callq 0x21a0
movq -0xe8(%rbp), %rsi
movq %rax, -0x108(%rbp)
leaq -0x60(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0x7e80
movq -0x108(%rbp), %rdi
movq -0x100(%rbp), %rsi
callq 0x2190
movq %rax, -0xf8(%rbp)
jmp 0x5513
movq -0xf8(%rbp), %rdi
leaq 0x3ed2(%rip), %rsi      # 0x93f3
callq 0x21a0
movq %rax, -0x110(%rbp)
jmp 0x552f
movq -0x110(%rbp), %rdi
movq 0x7a83(%rip), %rsi      # 0xcfc0
callq 0x21d0
jmp 0x5544
leaq -0x60(%rbp), %rdi
callq 0x2100
movq 0x7a7c(%rip), %rdi      # 0xcfd0
leaq 0x3ea9(%rip), %rsi      # 0x9404
callq 0x21a0
movq -0xe8(%rbp), %rsi
movq %rax, -0x128(%rbp)
leaq -0x80(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0x7eb0
movq -0x128(%rbp), %rdi
movq -0x120(%rbp), %rsi
callq 0x2190
movq %rax, -0x118(%rbp)
jmp 0x559a
movq -0x118(%rbp), %rdi
leaq 0x3afe(%rip), %rsi      # 0x90a6
callq 0x21a0
movq %rax, -0x130(%rbp)
jmp 0x55b6
movq -0x130(%rbp), %rdi
leaq 0x3e63(%rip), %rsi      # 0x9427
callq 0x21a0
movq %rax, -0x138(%rbp)
jmp 0x55d2
movq -0x138(%rbp), %rdi
movq 0x79e0(%rip), %rsi      # 0xcfc0
callq 0x21d0
jmp 0x55e7
leaq -0x80(%rbp), %rdi
callq 0x2100
movq 0x79d9(%rip), %rdi      # 0xcfd0
movq %rdi, -0x158(%rbp)
leaq 0x3e31(%rip), %rsi      # 0x9436
callq 0x21a0
movq %rax, %rdi
movq 0x79ac(%rip), %rsi      # 0xcfc0
callq 0x21d0
movq -0x158(%rbp), %rdi
leaq 0x3a9d(%rip), %rsi      # 0x90c4
callq 0x21a0
movq -0xe8(%rbp), %rsi
movq %rax, -0x150(%rbp)
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x148(%rbp)
callq 0x7eb0
movq -0x150(%rbp), %rdi
movq -0x148(%rbp), %rsi
callq 0x2190
movq %rax, -0x140(%rbp)
jmp 0x5669
movq -0x140(%rbp), %rdi
leaq 0x3c5b(%rip), %rsi      # 0x92d2
callq 0x21a0
movq %rax, -0x160(%rbp)
jmp 0x5685
movq -0x160(%rbp), %rdi
movq 0x792d(%rip), %rsi      # 0xcfc0
callq 0x21d0
jmp 0x569a
leaq -0xa0(%rbp), %rdi
callq 0x2100
movq 0x7923(%rip), %rdi      # 0xcfd0
movq %rdi, -0x180(%rbp)
leaq 0x3988(%rip), %rsi      # 0x9043
callq 0x21a0
movq %rax, %rdi
movq 0x78f6(%rip), %rsi      # 0xcfc0
callq 0x21d0
movl $0x1, %esi
movl %esi, %edi
callq 0x7f10
movq -0x180(%rbp), %rdi
movl %eax, -0xa4(%rbp)
leaq 0x3be5(%rip), %rsi      # 0x92d4
callq 0x21a0
movq -0xe8(%rbp), %rsi
movq %rax, -0x178(%rbp)
leaq -0xc8(%rbp), %rdi
movq %rdi, -0x170(%rbp)
callq 0x7eb0
movq -0x178(%rbp), %rdi
movq -0x170(%rbp), %rsi
callq 0x2190
movq %rax, -0x168(%rbp)
jmp 0x5731
movq -0x168(%rbp), %rdi
leaq 0x3d04(%rip), %rsi      # 0x9443
callq 0x21a0
movq %rax, -0x188(%rbp)
jmp 0x574d
movq -0x188(%rbp), %rdi
movq 0x7865(%rip), %rsi      # 0xcfc0
callq 0x21d0
jmp 0x5762
leaq -0xc8(%rbp), %rdi
callq 0x2100
movq -0xe8(%rbp), %rax
movb $0x1, 0x28(%rax)
jmp 0x5831
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x2100
jmp 0x5857
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x2100
jmp 0x5857
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x2100
jmp 0x5857
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x2100
jmp 0x5857
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x2100
jmp 0x5857
movq 0x77c9(%rip), %rdi      # 0xcfd0
leaq 0x3ae9(%rip), %rsi      # 0x92f7
callq 0x21a0
movq %rax, %rdi
leaq 0x3b22(%rip), %rsi      # 0x933f
callq 0x21a0
movq %rax, %rdi
movq 0x7794(%rip), %rsi      # 0xcfc0
callq 0x21d0
movq -0xe8(%rbp), %rax
testb $0x1, 0x29(%rax)
jne 0x584e
movq -0xe8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5860
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x22c0