// File: /workspace/github_cpp_makefile_star2_O1/malcolmyeh[P]CC3K/game.cc
// Function: Controller::runGame[abi:cxx11](char)
std::string Controller::runGame(char type) {

	gameInit(type);
	
	display->printFloor(floor,"You have entered the dungeon.");
	while (true) {
		std::string moveStatus;
		std::string log;
		std::string str;
		std::cin >> str; 
		if (validDirection(str)) {
			moveStatus = floor->movePlayer(str);
			if (moveStatus == "invalid") {
				log += "Move is invalid.";
				display->printFloor(floor, log);
				continue;
			} else if (moveStatus == "newfloor") {
				if (floor->getLevel() + 1 == 6) {
					return "won";
				}
				this->newFloor();
				log += "Welcome to Floor " + std::to_string(floor->getLevel()) + ". ";
				display->updateDisplay(floor);
				display->printFloor(floor, log);
				continue;
			} else {
				log += moveStatus;
			}
		} else if (str == "a") {
			std::cin >> str;
			if (validDirection(str)) {
				log += floor->atkPlayer(str);
				if (log == "Invalid attack. ") {
					display->printFloor(floor, log);
					continue;
				}
			} else {
				log += "Invalid input. Try again.";
				display->printFloor(floor, log);
				continue;
			}
		} else if (str == "u") {
			std::cin >> str;
			if (validDirection(str)) {
				log += floor->usePotion(str);
				if (log == "No potion in direction. ") {
					display->printFloor(floor, log);
					continue;
				}
			} else {
				log += "Invalid input. Try again.";
				display->printFloor(floor, log);
				continue;
			}
		} else if (str == "b"){
			std::cin >> str;
			if (validDirection(str)){
				log += floor->talkMerchant(str);
				if (log == "Invalid input." || log == "You are my enemy!"){
					display->printFloor(floor, log);
					continue;
				} else if (log == "(B)uckler Shield: 3g (T)arge Shield: 6g (P)avise Shield: 12g (N)odachi: 3g (K)atana: 7g (U)chigatana: 15g"){
					display->printFloor(floor, log);
					std::cin >> str;
					log = floor->buyMerchant(str);
					if (log == "Sorry I don't have that item. " || log == "You are too poor. "){
						display->printFloor(floor, log);
						continue;
					}
				} else {
					log += "Invalid input. Try again.";
					display->printFloor(floor, log);
					continue;
				}
			}
		} else if (str == "r") {
			return "restart";
		} else if (str == "q") {
			return "quit";
		} else {
			log += "Invalid input. Try again.";
			display->printFloor(floor, log);
			continue;
		}
		log += floor->actEnemy();
		display->updateDisplay(floor);
		display->printFloor(floor, log);
		if (floor->player->getHP() == 0) {
			std::cout << std::endl;
			std::cout << "Game over!" << std::endl;
			std::cout << "Enter any command to continue:" << std::endl;
			std::cin >> str;
			return "loss";
		}	
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x398, %rsp            # imm = 0x398
movq %rsi, %r14
movq %rdi, -0x90(%rbp)
movq %rsi, %rdi
movl %edx, %esi
callq 0x18774
movq (%r14), %rbx
movq 0x8(%r14), %r15
leaq -0x3a8(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x6a7f(%rip), %rsi      # 0x1de20
leaq 0x6a95(%rip), %rdx      # 0x1de3d
leaq -0x3b8(%rbp), %r12
movq %r12, %rdi
callq 0x501a
movq %r15, %rdi
movq %rbx, %rsi
movq %r12, %rdx
callq 0x54a8
movq -0x3b8(%rbp), %rdi
cmpq %r13, %rdi
je 0x173e0
movq -0x3a8(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x90(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x98(%rbp)
xorl %r12d, %r12d
leaq -0xa8(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq %r12, -0xb0(%rbp)
movb %r12b, -0xa8(%rbp)
leaq -0x58(%rbp), %rax
movq %rax, -0x68(%rbp)
movq %r12, -0x60(%rbp)
movb %r12b, -0x58(%rbp)
leaq -0x78(%rbp), %rax
movq %rax, -0x88(%rbp)
movq %r12, -0x80(%rbp)
movb %r12b, -0x78(%rbp)
movq 0xcba5(%rip), %rdi      # 0x23fe0
leaq -0x88(%rbp), %rsi
callq 0x41d0
leaq -0x1a8(%rbp), %rax
movq %rax, -0x1b8(%rbp)
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq %rsi, %rdx
leaq -0x1b8(%rbp), %rdi
callq 0xa582
leaq -0x1b8(%rbp), %rdi
callq 0x188a9
movl %eax, %ebx
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
cmpq %rax, %rdi
je 0x1749f
movq -0x1a8(%rbp), %rsi
incq %rsi
callq 0x4170
testb %bl, %bl
je 0x17582
movq (%r14), %rbx
leaq -0x388(%rbp), %rax
movq %rax, -0x398(%rbp)
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq %rsi, %rdx
leaq -0x398(%rbp), %r15
movq %r15, %rdi
callq 0xa582
leaq -0x48(%rbp), %r13
movq %r13, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x736e
leaq -0xb8(%rbp), %rdi
movq %r13, %rsi
callq 0x41c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x1750f
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x398(%rbp), %rdi
leaq -0x388(%rbp), %rax
cmpq %rax, %rdi
je 0x17531
movq -0x388(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
leaq 0x5dd6(%rip), %rsi      # 0x1d318
callq 0x4070
testl %eax, %eax
je 0x177be
movq %rbx, %rdi
leaq 0x5dea(%rip), %rsi      # 0x1d343
callq 0x4070
testl %eax, %eax
je 0x17980
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
leaq -0x68(%rbp), %rdi
callq 0x4080
jmp 0x1804f
leaq -0x88(%rbp), %rbx
movq %rbx, %rdi
leaq 0x5c3b(%rip), %rsi      # 0x1d1ce
callq 0x4070
testl %eax, %eax
je 0x1765d
movq %rbx, %rdi
leaq 0x5ff5(%rip), %rsi      # 0x1d59f
callq 0x4070
testl %eax, %eax
je 0x1781f
movq %rbx, %rdi
leaq 0x5f19(%rip), %rsi      # 0x1d4da
callq 0x4070
testl %eax, %eax
je 0x17a1d
movq %rbx, %rdi
leaq 0x5d72(%rip), %rsi      # 0x1d34a
callq 0x4070
testl %eax, %eax
je 0x17c98
movq %rbx, %rdi
leaq 0x5bb2(%rip), %rsi      # 0x1d1a1
callq 0x4070
testl %eax, %eax
je 0x17cc3
leaq -0x68(%rbp), %rdi
leaq 0x5eb9(%rip), %rsi      # 0x1d4c0
callq 0x4280
movq (%r14), %rbx
movq 0x8(%r14), %r15
leaq -0x1c8(%rbp), %rax
movq %rax, -0x1d8(%rbp)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
leaq -0x1d8(%rbp), %rdi
callq 0xa582
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x1d8(%rbp), %rdx
callq 0x54a8
movq -0x1d8(%rbp), %rdi
leaq -0x1c8(%rbp), %rcx
jmp 0x17f09
movq 0xc97c(%rip), %rdi      # 0x23fe0
movq %rbx, %rsi
callq 0x41d0
leaq -0x188(%rbp), %rax
movq %rax, -0x198(%rbp)
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq %rsi, %rdx
leaq -0x198(%rbp), %rdi
callq 0xa582
leaq -0x198(%rbp), %rdi
callq 0x188a9
movl %eax, %ebx
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x176c4
movq -0x188(%rbp), %rsi
incq %rsi
callq 0x4170
testb %bl, %bl
je 0x179bc
movq (%r14), %rbx
leaq -0x328(%rbp), %rax
movq %rax, -0x338(%rbp)
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq %rsi, %rdx
leaq -0x338(%rbp), %r15
movq %r15, %rdi
callq 0xa582
leaq -0x48(%rbp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x9e5c
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
leaq -0x68(%rbp), %rdi
callq 0x4080
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x17733
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x338(%rbp), %rdi
leaq -0x328(%rbp), %rax
cmpq %rax, %rdi
je 0x17755
movq -0x328(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0x68(%rbp), %rdi
leaq 0x605e(%rip), %rsi      # 0x1d7be
callq 0x4070
testl %eax, %eax
jne 0x1804f
movq (%r14), %rbx
movq 0x8(%r14), %r15
leaq -0x308(%rbp), %rax
movq %rax, -0x318(%rbp)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
leaq -0x318(%rbp), %rdi
callq 0xa582
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x318(%rbp), %rdx
callq 0x54a8
movq -0x318(%rbp), %rdi
leaq -0x308(%rbp), %rcx
jmp 0x17f09
leaq -0x68(%rbp), %rdi
leaq 0x6675(%rip), %rsi      # 0x1de3e
callq 0x4280
movq (%r14), %rbx
movq 0x8(%r14), %r15
leaq -0x368(%rbp), %rax
movq %rax, -0x378(%rbp)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
leaq -0x378(%rbp), %rdi
callq 0xa582
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x378(%rbp), %rdx
callq 0x54a8
movq -0x378(%rbp), %rdi
leaq -0x368(%rbp), %rcx
jmp 0x17f09
movq 0xc7ba(%rip), %rdi      # 0x23fe0
movq %rbx, %rsi
callq 0x41d0
leaq -0x168(%rbp), %rax
movq %rax, -0x178(%rbp)
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq %rsi, %rdx
leaq -0x178(%rbp), %rdi
callq 0xa582
leaq -0x178(%rbp), %rdi
callq 0x188a9
movl %eax, %ebx
movq -0x178(%rbp), %rdi
leaq -0x168(%rbp), %rax
cmpq %rax, %rdi
je 0x17886
movq -0x168(%rbp), %rsi
incq %rsi
callq 0x4170
testb %bl, %bl
je 0x17bbe
movq (%r14), %rbx
leaq -0x2c8(%rbp), %rax
movq %rax, -0x2d8(%rbp)
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2d8(%rbp), %r15
movq %r15, %rdi
callq 0xa582
leaq -0x48(%rbp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x8fc6
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
leaq -0x68(%rbp), %rdi
callq 0x4080
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x178f5
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x2d8(%rbp), %rdi
leaq -0x2c8(%rbp), %rax
cmpq %rax, %rdi
je 0x17917
movq -0x2c8(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0x68(%rbp), %rdi
leaq 0x5e4f(%rip), %rsi      # 0x1d771
callq 0x4070
testl %eax, %eax
jne 0x1804f
movq (%r14), %rbx
movq 0x8(%r14), %r15
leaq -0x2a8(%rbp), %rax
movq %rax, -0x2b8(%rbp)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2b8(%rbp), %rdi
callq 0xa582
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x2b8(%rbp), %rdx
callq 0x54a8
movq -0x2b8(%rbp), %rdi
leaq -0x2a8(%rbp), %rcx
jmp 0x17f09
movq (%r14), %rdi
callq 0xa37e
cmpl $0x5, %eax
jne 0x17c1f
movq -0x90(%rbp), %rdi
movq -0x98(%rbp), %rax
movq %rax, (%rdi)
movb $0x1, %bl
leaq 0x579d(%rip), %rsi      # 0x1d148
leaq 0x5799(%rip), %rdx      # 0x1d14b
callq 0x501a
jmp 0x18107
leaq -0x68(%rbp), %rdi
leaq 0x5af9(%rip), %rsi      # 0x1d4c0
callq 0x4280
movq (%r14), %rbx
movq 0x8(%r14), %r15
leaq -0x2e8(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
leaq -0x2f8(%rbp), %rdi
callq 0xa582
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x2f8(%rbp), %rdx
callq 0x54a8
movq -0x2f8(%rbp), %rdi
leaq -0x2e8(%rbp), %rcx
jmp 0x17f09
movq 0xc5bc(%rip), %rdi      # 0x23fe0
movq %rbx, %rsi
callq 0x41d0
leaq -0x148(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq %rsi, %rdx
leaq -0x158(%rbp), %rdi
callq 0xa582
leaq -0x158(%rbp), %rdi
callq 0x188a9
movl %eax, %ebx
movq -0x158(%rbp), %rdi
leaq -0x148(%rbp), %rax
cmpq %rax, %rdi
je 0x17a84
movq -0x148(%rbp), %rsi
incq %rsi
callq 0x4170
testb %bl, %bl
je 0x1804f
movq (%r14), %rbx
leaq -0x268(%rbp), %rax
movq %rax, -0x278(%rbp)
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq %rsi, %rdx
leaq -0x278(%rbp), %r15
movq %r15, %rdi
callq 0xa582
leaq -0x48(%rbp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x858a
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
leaq -0x68(%rbp), %rdi
callq 0x4080
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x17af3
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x278(%rbp), %rdi
leaq -0x268(%rbp), %rax
cmpq %rax, %rdi
je 0x17b15
movq -0x268(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0x68(%rbp), %rbx
movq %rbx, %rdi
leaq 0x633e(%rip), %rsi      # 0x1de61
callq 0x4070
testl %eax, %eax
je 0x17cee
movq %rbx, %rdi
leaq 0x590a(%rip), %rsi      # 0x1d444
callq 0x4070
testl %eax, %eax
je 0x17cee
movq %rbx, %rdi
leaq 0x5905(%rip), %rsi      # 0x1d456
callq 0x4070
testl %eax, %eax
je 0x17f25
movq %rbx, %rdi
leaq 0x5958(%rip), %rsi      # 0x1d4c0
callq 0x4280
movq (%r14), %rbx
movq 0x8(%r14), %r15
leaq -0x1e8(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
leaq -0x1f8(%rbp), %rdi
callq 0xa582
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x1f8(%rbp), %rdx
callq 0x54a8
movq -0x1f8(%rbp), %rdi
leaq -0x1e8(%rbp), %rcx
jmp 0x17f09
leaq -0x68(%rbp), %rdi
leaq 0x58f7(%rip), %rsi      # 0x1d4c0
callq 0x4280
movq (%r14), %rbx
movq 0x8(%r14), %r15
leaq -0x288(%rbp), %rax
movq %rax, -0x298(%rbp)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
leaq -0x298(%rbp), %rdi
callq 0xa582
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x298(%rbp), %rdx
callq 0x54a8
movq -0x298(%rbp), %rdi
leaq -0x288(%rbp), %rcx
jmp 0x17f09
movq %r14, %rdi
callq 0x18ad2
movq (%r14), %rdi
callq 0xa37e
movl %eax, %ebx
movl %eax, %r15d
negl %r15d
cmovsl %eax, %r15d
movl $0x1, %r13d
cmpl $0xa, %r15d
jb 0x17d48
movl $0x4, %r13d
movl %r15d, %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x17d3f
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x17d45
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x17d48
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r13d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x17c59
addl $-0x3, %r13d
jmp 0x17d48
movq -0x90(%rbp), %rdi
movq -0x98(%rbp), %rax
movq %rax, (%rdi)
movb $0x1, %bl
leaq 0x547e(%rip), %rsi      # 0x1d130
leaq 0x547e(%rip), %rdx      # 0x1d137
callq 0x501a
jmp 0x18107
movq -0x90(%rbp), %rdi
movq -0x98(%rbp), %rax
movq %rax, (%rdi)
movb $0x1, %bl
leaq 0x5497(%rip), %rsi      # 0x1d174
leaq 0x5494(%rip), %rdx      # 0x1d178
callq 0x501a
jmp 0x18107
movq (%r14), %rbx
movq 0x8(%r14), %r15
leaq -0x248(%rbp), %rax
movq %rax, -0x258(%rbp)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
leaq -0x258(%rbp), %rdi
callq 0xa582
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x258(%rbp), %rdx
callq 0x54a8
movq -0x258(%rbp), %rdi
leaq -0x248(%rbp), %rcx
jmp 0x17f09
addl $-0x2, %r13d
jmp 0x17d48
decl %r13d
shrl $0x1f, %ebx
leal (%rbx,%r13), %esi
leaq -0xe8(%rbp), %rax
movq %rax, -0xf8(%rbp)
leaq -0xf8(%rbp), %rdi
movl $0x2d, %edx
callq 0x41b0
movl %ebx, %edi
addq -0xf8(%rbp), %rdi
movl %r13d, %esi
movl %r15d, %edx
callq 0xa510
movl $0x11, %r8d
leaq -0xf8(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x60b5(%rip), %rcx      # 0x1de4f
callq 0x4190
leaq -0xc8(%rbp), %rsi
movq %rsi, -0xd8(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x17dcf
movq %rdx, -0xd8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xc8(%rbp)
jmp 0x17dd5
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0xd0(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0xd8(%rbp), %rdi
leaq 0x5df9(%rip), %rsi      # 0x1dbf6
callq 0x4280
leaq -0x38(%rbp), %rsi
movq %rsi, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x17e26
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x17e2c
movups (%rcx), %xmm0
movups %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, -0x40(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
leaq -0x68(%rbp), %rdi
callq 0x4080
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x17e6d
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x17e8f
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0x17eb1
movq -0xe8(%rbp), %rsi
incq %rsi
callq 0x4170
movq (%r14), %rsi
movq 0x8(%r14), %rdi
callq 0x57ce
movq (%r14), %rbx
movq 0x8(%r14), %r15
leaq -0x348(%rbp), %rax
movq %rax, -0x358(%rbp)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
leaq -0x358(%rbp), %rdi
callq 0xa582
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x358(%rbp), %rdx
callq 0x54a8
movq -0x358(%rbp), %rdi
leaq -0x348(%rbp), %rcx
movq %rcx, %rax
cmpq %rcx, %rdi
je 0x18105
movq (%rax), %rsi
incq %rsi
callq 0x4170
jmp 0x18105
movq (%r14), %rbx
movq 0x8(%r14), %r15
leaq -0x128(%rbp), %rax
movq %rax, -0x138(%rbp)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
leaq -0x138(%rbp), %rdi
callq 0xa582
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x138(%rbp), %rdx
callq 0x54a8
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0x17f85
movq -0x128(%rbp), %rsi
incq %rsi
callq 0x4170
movq 0xc054(%rip), %rdi      # 0x23fe0
leaq -0x88(%rbp), %rsi
callq 0x41d0
movq (%r14), %rbx
leaq -0x228(%rbp), %rax
movq %rax, -0x238(%rbp)
movq -0x88(%rbp), %rsi
movq -0x80(%rbp), %rdx
addq %rsi, %rdx
leaq -0x238(%rbp), %r13
movq %r13, %rdi
callq 0xa582
leaq -0x48(%rbp), %r15
movq %r15, %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x8760
leaq -0x68(%rbp), %rdi
movq %r15, %rsi
callq 0x41c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x17ffd
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x238(%rbp), %rdi
leaq -0x228(%rbp), %rax
cmpq %rax, %rdi
je 0x1801f
movq -0x228(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0x68(%rbp), %rdi
leaq 0x559a(%rip), %rsi      # 0x1d5c4
callq 0x4070
testl %eax, %eax
je 0x1826f
leaq -0x68(%rbp), %rdi
leaq 0x54c0(%rip), %rsi      # 0x1d502
callq 0x4070
testl %eax, %eax
je 0x1826f
movq (%r14), %rsi
leaq -0x48(%rbp), %rdi
callq 0x6d7a
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
leaq -0x68(%rbp), %rdi
callq 0x4080
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x18085
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq (%r14), %rsi
movq 0x8(%r14), %rdi
callq 0x57ce
movq (%r14), %rbx
movq 0x8(%r14), %r15
leaq -0x108(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
leaq -0x118(%rbp), %rdi
callq 0xa582
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x118(%rbp), %rdx
callq 0x54a8
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rax
cmpq %rax, %rdi
je 0x180f1
movq -0x108(%rbp), %rsi
incq %rsi
callq 0x4170
movq (%r14), %rax
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
testl %eax, %eax
je 0x1816b
xorl %ebx, %ebx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x18123
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x1813c
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x1815e
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x4170
testb %bl, %bl
je 0x173f5
jmp 0x182c0
movq 0xbe5e(%rip), %rcx      # 0x23fd0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x4150
movsbl %al, %esi
movq 0xbe40(%rip), %rdi      # 0x23fd0
callq 0x4030
movq %rax, %rdi
callq 0x40e0
movl $0xa, %edx
movq 0xbe27(%rip), %rdi      # 0x23fd0
leaq 0x5cc0(%rip), %rsi      # 0x1de70
callq 0x41a0
movq 0xbe14(%rip), %rcx      # 0x23fd0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x4150
movsbl %al, %esi
movq 0xbdf6(%rip), %rdi      # 0x23fd0
callq 0x4030
movq %rax, %rdi
callq 0x40e0
movl $0x1e, %edx
movq 0xbddd(%rip), %rdi      # 0x23fd0
leaq 0x5c81(%rip), %rsi      # 0x1de7b
callq 0x41a0
movq 0xbdca(%rip), %rcx      # 0x23fd0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x4150
movsbl %al, %esi
movq 0xbdac(%rip), %rdi      # 0x23fd0
callq 0x4030
movq %rax, %rdi
callq 0x40e0
movq 0xbda8(%rip), %rdi      # 0x23fe0
leaq -0x88(%rbp), %rsi
callq 0x41d0
movq -0x90(%rbp), %rdi
movq -0x98(%rbp), %rax
movq %rax, (%rdi)
movb $0x1, %bl
leaq 0x4f04(%rip), %rsi      # 0x1d162
leaq 0x4f01(%rip), %rdx      # 0x1d166
callq 0x501a
jmp 0x18107
movq (%r14), %rbx
movq 0x8(%r14), %r15
leaq -0x208(%rbp), %rax
movq %rax, -0x218(%rbp)
movq -0x68(%rbp), %rsi
movq -0x60(%rbp), %rdx
addq %rsi, %rdx
leaq -0x218(%rbp), %rdi
callq 0xa582
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x218(%rbp), %rdx
callq 0x54a8
movq -0x218(%rbp), %rdi
leaq -0x208(%rbp), %rcx
jmp 0x17f09
movq -0x90(%rbp), %rax
addq $0x398, %rsp            # imm = 0x398
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x218(%rbp), %rdi
leaq -0x208(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x208(%rbp), %rsi
jmp 0x18708
movq %rax, %rbx
movq -0x238(%rbp), %rdi
leaq -0x228(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x228(%rbp), %rsi
jmp 0x18708
jmp 0x18712
movq %rax, %rbx
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x128(%rbp), %rsi
jmp 0x18708
movq %rax, %rbx
movq -0x1f8(%rbp), %rdi
leaq -0x1e8(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x1e8(%rbp), %rsi
jmp 0x18708
movq %rax, %rbx
movq -0x2b8(%rbp), %rdi
leaq -0x2a8(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x2a8(%rbp), %rsi
jmp 0x18708
movq %rax, %rbx
movq -0x258(%rbp), %rdi
leaq -0x248(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x248(%rbp), %rsi
jmp 0x18708
jmp 0x18712
movq %rax, %rbx
movq -0x3b8(%rbp), %rdi
cmpq %r13, %rdi
je 0x1876c
movq -0x3a8(%rbp), %rsi
jmp 0x18764
movq %rax, %rbx
movq -0x318(%rbp), %rdi
leaq -0x308(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x308(%rbp), %rsi
jmp 0x18708
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x1842d
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x1842d
movq %rax, %rbx
movq -0x278(%rbp), %rdi
leaq -0x268(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x268(%rbp), %rsi
jmp 0x18708
jmp 0x18712
jmp 0x18712
movq %rax, %rbx
movq -0x1d8(%rbp), %rdi
leaq -0x1c8(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x1c8(%rbp), %rsi
jmp 0x18708
jmp 0x18712
movq %rax, %rbx
movq -0x358(%rbp), %rdi
leaq -0x348(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x348(%rbp), %rsi
jmp 0x18708
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x184cc
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x184cc
movq %rax, %rbx
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x184f3
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x184f3
movq %rax, %rbx
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0xe8(%rbp), %rsi
jmp 0x18708
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x18537
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x18537
movq %rax, %rbx
movq -0x2d8(%rbp), %rdi
leaq -0x2c8(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x2c8(%rbp), %rsi
jmp 0x18708
jmp 0x18712
movq %rax, %rbx
movq -0x298(%rbp), %rdi
leaq -0x288(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x288(%rbp), %rsi
jmp 0x18708
movq %rax, %rbx
movq -0x158(%rbp), %rdi
leaq -0x148(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x148(%rbp), %rsi
jmp 0x18708
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x185cc
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x185cc
movq %rax, %rbx
movq -0x338(%rbp), %rdi
leaq -0x328(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x328(%rbp), %rsi
jmp 0x18708
jmp 0x18712
movq %rax, %rbx
movq -0x2f8(%rbp), %rdi
leaq -0x2e8(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x2e8(%rbp), %rsi
jmp 0x18708
jmp 0x18712
movq %rax, %rbx
movq -0x178(%rbp), %rdi
leaq -0x168(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x168(%rbp), %rsi
jmp 0x18708
jmp 0x18712
movq %rax, %rbx
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x188(%rbp), %rsi
jmp 0x18708
movq %rax, %rbx
movq -0x378(%rbp), %rdi
leaq -0x368(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x368(%rbp), %rsi
jmp 0x18708
movq %rax, %rbx
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x108(%rbp), %rsi
jmp 0x18708
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x38(%rbp), %rsi
jmp 0x18708
jmp 0x18712
jmp 0x18712
movq %rax, %rbx
movq -0x398(%rbp), %rdi
leaq -0x388(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x388(%rbp), %rsi
jmp 0x18708
movq %rax, %rbx
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
cmpq %rax, %rdi
je 0x18715
movq -0x1a8(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x18715
movq %rax, %rbx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x18731
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x1874a
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x1876c
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x4170
movq %rbx, %rdi
callq 0x4250