// File: /workspace/github_cpp_makefile_star2_O3/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 0x185e6
movq (%r14), %rbx
movq 0x8(%r14), %r15
leaq -0x3a8(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x6c0d(%rip), %rsi      # 0x1de20
leaq 0x6c23(%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 0x17252
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 0xcd33(%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 0xa4be
leaq -0x1b8(%rbp), %rdi
callq 0x1871b
movl %eax, %ebx
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
cmpq %rax, %rdi
je 0x17311
movq -0x1a8(%rbp), %rsi
incq %rsi
callq 0x4170
testb %bl, %bl
je 0x173f4
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 0xa4be
leaq -0x48(%rbp), %r13
movq %r13, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x732a
leaq -0xb8(%rbp), %rdi
movq %r13, %rsi
callq 0x41c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x17381
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x398(%rbp), %rdi
leaq -0x388(%rbp), %rax
cmpq %rax, %rdi
je 0x173a3
movq -0x388(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
leaq 0x5f64(%rip), %rsi      # 0x1d318
callq 0x4070
testl %eax, %eax
je 0x17630
movq %rbx, %rdi
leaq 0x5f78(%rip), %rsi      # 0x1d343
callq 0x4070
testl %eax, %eax
je 0x177f2
movq -0xb8(%rbp), %rsi
movq -0xb0(%rbp), %rdx
leaq -0x68(%rbp), %rdi
callq 0x4080
jmp 0x17ec1
leaq -0x88(%rbp), %rbx
movq %rbx, %rdi
leaq 0x5dc9(%rip), %rsi      # 0x1d1ce
callq 0x4070
testl %eax, %eax
je 0x174cf
movq %rbx, %rdi
leaq 0x6183(%rip), %rsi      # 0x1d59f
callq 0x4070
testl %eax, %eax
je 0x17691
movq %rbx, %rdi
leaq 0x60a7(%rip), %rsi      # 0x1d4da
callq 0x4070
testl %eax, %eax
je 0x1788f
movq %rbx, %rdi
leaq 0x5f00(%rip), %rsi      # 0x1d34a
callq 0x4070
testl %eax, %eax
je 0x17b0a
movq %rbx, %rdi
leaq 0x5d40(%rip), %rsi      # 0x1d1a1
callq 0x4070
testl %eax, %eax
je 0x17b35
leaq -0x68(%rbp), %rdi
leaq 0x6047(%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 0xa4be
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x1d8(%rbp), %rdx
callq 0x54a8
movq -0x1d8(%rbp), %rdi
leaq -0x1c8(%rbp), %rcx
jmp 0x17d7b
movq 0xcb0a(%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 0xa4be
leaq -0x198(%rbp), %rdi
callq 0x1871b
movl %eax, %ebx
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x17536
movq -0x188(%rbp), %rsi
incq %rsi
callq 0x4170
testb %bl, %bl
je 0x1782e
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 0xa4be
leaq -0x48(%rbp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x9d9a
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 0x175a5
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x338(%rbp), %rdi
leaq -0x328(%rbp), %rax
cmpq %rax, %rdi
je 0x175c7
movq -0x328(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0x68(%rbp), %rdi
leaq 0x61ec(%rip), %rsi      # 0x1d7be
callq 0x4070
testl %eax, %eax
jne 0x17ec1
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 0xa4be
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x318(%rbp), %rdx
callq 0x54a8
movq -0x318(%rbp), %rdi
leaq -0x308(%rbp), %rcx
jmp 0x17d7b
leaq -0x68(%rbp), %rdi
leaq 0x6803(%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 0xa4be
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x378(%rbp), %rdx
callq 0x54a8
movq -0x378(%rbp), %rdi
leaq -0x368(%rbp), %rcx
jmp 0x17d7b
movq 0xc948(%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 0xa4be
leaq -0x178(%rbp), %rdi
callq 0x1871b
movl %eax, %ebx
movq -0x178(%rbp), %rdi
leaq -0x168(%rbp), %rax
cmpq %rax, %rdi
je 0x176f8
movq -0x168(%rbp), %rsi
incq %rsi
callq 0x4170
testb %bl, %bl
je 0x17a30
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 0xa4be
leaq -0x48(%rbp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x8f10
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 0x17767
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x2d8(%rbp), %rdi
leaq -0x2c8(%rbp), %rax
cmpq %rax, %rdi
je 0x17789
movq -0x2c8(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0x68(%rbp), %rdi
leaq 0x5fdd(%rip), %rsi      # 0x1d771
callq 0x4070
testl %eax, %eax
jne 0x17ec1
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 0xa4be
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x2b8(%rbp), %rdx
callq 0x54a8
movq -0x2b8(%rbp), %rdi
leaq -0x2a8(%rbp), %rcx
jmp 0x17d7b
movq (%r14), %rdi
callq 0xa2ba
cmpl $0x5, %eax
jne 0x17a91
movq -0x90(%rbp), %rdi
movq -0x98(%rbp), %rax
movq %rax, (%rdi)
movb $0x1, %bl
leaq 0x592b(%rip), %rsi      # 0x1d148
leaq 0x5927(%rip), %rdx      # 0x1d14b
callq 0x501a
jmp 0x17f79
leaq -0x68(%rbp), %rdi
leaq 0x5c87(%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 0xa4be
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x2f8(%rbp), %rdx
callq 0x54a8
movq -0x2f8(%rbp), %rdi
leaq -0x2e8(%rbp), %rcx
jmp 0x17d7b
movq 0xc74a(%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 0xa4be
leaq -0x158(%rbp), %rdi
callq 0x1871b
movl %eax, %ebx
movq -0x158(%rbp), %rdi
leaq -0x148(%rbp), %rax
cmpq %rax, %rdi
je 0x178f6
movq -0x148(%rbp), %rsi
incq %rsi
callq 0x4170
testb %bl, %bl
je 0x17ec1
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 0xa4be
leaq -0x48(%rbp), %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x84d4
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 0x17965
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x278(%rbp), %rdi
leaq -0x268(%rbp), %rax
cmpq %rax, %rdi
je 0x17987
movq -0x268(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0x68(%rbp), %rbx
movq %rbx, %rdi
leaq 0x64cc(%rip), %rsi      # 0x1de61
callq 0x4070
testl %eax, %eax
je 0x17b60
movq %rbx, %rdi
leaq 0x5a98(%rip), %rsi      # 0x1d444
callq 0x4070
testl %eax, %eax
je 0x17b60
movq %rbx, %rdi
leaq 0x5a93(%rip), %rsi      # 0x1d456
callq 0x4070
testl %eax, %eax
je 0x17d97
movq %rbx, %rdi
leaq 0x5ae6(%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 0xa4be
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x1f8(%rbp), %rdx
callq 0x54a8
movq -0x1f8(%rbp), %rdi
leaq -0x1e8(%rbp), %rcx
jmp 0x17d7b
leaq -0x68(%rbp), %rdi
leaq 0x5a85(%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 0xa4be
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x298(%rbp), %rdx
callq 0x54a8
movq -0x298(%rbp), %rdi
leaq -0x288(%rbp), %rcx
jmp 0x17d7b
movq %r14, %rdi
callq 0x18930
movq (%r14), %rdi
callq 0xa2ba
movl %eax, %ebx
movl %eax, %r15d
negl %r15d
cmovsl %eax, %r15d
movl $0x1, %r13d
cmpl $0xa, %r15d
jb 0x17bba
movl $0x4, %r13d
movl %r15d, %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x17bb1
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x17bb7
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x17bba
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r13d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x17acb
addl $-0x3, %r13d
jmp 0x17bba
movq -0x90(%rbp), %rdi
movq -0x98(%rbp), %rax
movq %rax, (%rdi)
movb $0x1, %bl
leaq 0x560c(%rip), %rsi      # 0x1d130
leaq 0x560c(%rip), %rdx      # 0x1d137
callq 0x501a
jmp 0x17f79
movq -0x90(%rbp), %rdi
movq -0x98(%rbp), %rax
movq %rax, (%rdi)
movb $0x1, %bl
leaq 0x5625(%rip), %rsi      # 0x1d174
leaq 0x5622(%rip), %rdx      # 0x1d178
callq 0x501a
jmp 0x17f79
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 0xa4be
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x258(%rbp), %rdx
callq 0x54a8
movq -0x258(%rbp), %rdi
leaq -0x248(%rbp), %rcx
jmp 0x17d7b
addl $-0x2, %r13d
jmp 0x17bba
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 0xa44c
movl $0x11, %r8d
leaq -0xf8(%rbp), %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x6243(%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 0x17c41
movq %rdx, -0xd8(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xc8(%rbp)
jmp 0x17c47
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 0x5f87(%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 0x17c98
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x17c9e
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 0x17cdf
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x17d01
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0x17d23
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 0xa4be
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 0x17f77
movq (%rax), %rsi
incq %rsi
callq 0x4170
jmp 0x17f77
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 0xa4be
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x138(%rbp), %rdx
callq 0x54a8
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0x17df7
movq -0x128(%rbp), %rsi
incq %rsi
callq 0x4170
movq 0xc1e2(%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 0xa4be
leaq -0x48(%rbp), %r15
movq %r15, %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x86aa
leaq -0x68(%rbp), %rdi
movq %r15, %rsi
callq 0x41c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x17e6f
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x238(%rbp), %rdi
leaq -0x228(%rbp), %rax
cmpq %rax, %rdi
je 0x17e91
movq -0x228(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0x68(%rbp), %rdi
leaq 0x5728(%rip), %rsi      # 0x1d5c4
callq 0x4070
testl %eax, %eax
je 0x180e1
leaq -0x68(%rbp), %rdi
leaq 0x564e(%rip), %rsi      # 0x1d502
callq 0x4070
testl %eax, %eax
je 0x180e1
movq (%r14), %rsi
leaq -0x48(%rbp), %rdi
callq 0x6d80
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 0x17ef7
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 0xa4be
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x118(%rbp), %rdx
callq 0x54a8
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rax
cmpq %rax, %rdi
je 0x17f63
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 0x17fdd
xorl %ebx, %ebx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x17f95
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x17fae
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x17fd0
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x4170
testb %bl, %bl
je 0x17267
jmp 0x18132
movq 0xbfec(%rip), %rcx      # 0x23fd0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x4150
movsbl %al, %esi
movq 0xbfce(%rip), %rdi      # 0x23fd0
callq 0x4030
movq %rax, %rdi
callq 0x40e0
movl $0xa, %edx
movq 0xbfb5(%rip), %rdi      # 0x23fd0
leaq 0x5e4e(%rip), %rsi      # 0x1de70
callq 0x41a0
movq 0xbfa2(%rip), %rcx      # 0x23fd0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x4150
movsbl %al, %esi
movq 0xbf84(%rip), %rdi      # 0x23fd0
callq 0x4030
movq %rax, %rdi
callq 0x40e0
movl $0x1e, %edx
movq 0xbf6b(%rip), %rdi      # 0x23fd0
leaq 0x5e0f(%rip), %rsi      # 0x1de7b
callq 0x41a0
movq 0xbf58(%rip), %rcx      # 0x23fd0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x4150
movsbl %al, %esi
movq 0xbf3a(%rip), %rdi      # 0x23fd0
callq 0x4030
movq %rax, %rdi
callq 0x40e0
movq 0xbf36(%rip), %rdi      # 0x23fe0
leaq -0x88(%rbp), %rsi
callq 0x41d0
movq -0x90(%rbp), %rdi
movq -0x98(%rbp), %rax
movq %rax, (%rdi)
movb $0x1, %bl
leaq 0x5092(%rip), %rsi      # 0x1d162
leaq 0x508f(%rip), %rdx      # 0x1d166
callq 0x501a
jmp 0x17f79
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 0xa4be
movq %r15, %rdi
movq %rbx, %rsi
leaq -0x218(%rbp), %rdx
callq 0x54a8
movq -0x218(%rbp), %rdi
leaq -0x208(%rbp), %rcx
jmp 0x17d7b
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 0x18587
movq -0x208(%rbp), %rsi
jmp 0x1857a
movq %rax, %rbx
movq -0x238(%rbp), %rdi
leaq -0x228(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x228(%rbp), %rsi
jmp 0x1857a
jmp 0x18584
movq %rax, %rbx
movq -0x138(%rbp), %rdi
leaq -0x128(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x128(%rbp), %rsi
jmp 0x1857a
movq %rax, %rbx
movq -0x1f8(%rbp), %rdi
leaq -0x1e8(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x1e8(%rbp), %rsi
jmp 0x1857a
movq %rax, %rbx
movq -0x2b8(%rbp), %rdi
leaq -0x2a8(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x2a8(%rbp), %rsi
jmp 0x1857a
movq %rax, %rbx
movq -0x258(%rbp), %rdi
leaq -0x248(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x248(%rbp), %rsi
jmp 0x1857a
jmp 0x18584
movq %rax, %rbx
movq -0x3b8(%rbp), %rdi
cmpq %r13, %rdi
je 0x185de
movq -0x3a8(%rbp), %rsi
jmp 0x185d6
movq %rax, %rbx
movq -0x318(%rbp), %rdi
leaq -0x308(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x308(%rbp), %rsi
jmp 0x1857a
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x1829f
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x1829f
movq %rax, %rbx
movq -0x278(%rbp), %rdi
leaq -0x268(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x268(%rbp), %rsi
jmp 0x1857a
jmp 0x18584
jmp 0x18584
movq %rax, %rbx
movq -0x1d8(%rbp), %rdi
leaq -0x1c8(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x1c8(%rbp), %rsi
jmp 0x1857a
jmp 0x18584
movq %rax, %rbx
movq -0x358(%rbp), %rdi
leaq -0x348(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x348(%rbp), %rsi
jmp 0x1857a
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x1833e
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x1833e
movq %rax, %rbx
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x18365
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x18365
movq %rax, %rbx
movq -0xf8(%rbp), %rdi
leaq -0xe8(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0xe8(%rbp), %rsi
jmp 0x1857a
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x183a9
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x183a9
movq %rax, %rbx
movq -0x2d8(%rbp), %rdi
leaq -0x2c8(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x2c8(%rbp), %rsi
jmp 0x1857a
jmp 0x18584
movq %rax, %rbx
movq -0x298(%rbp), %rdi
leaq -0x288(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x288(%rbp), %rsi
jmp 0x1857a
movq %rax, %rbx
movq -0x158(%rbp), %rdi
leaq -0x148(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x148(%rbp), %rsi
jmp 0x1857a
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x1843e
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x1843e
movq %rax, %rbx
movq -0x338(%rbp), %rdi
leaq -0x328(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x328(%rbp), %rsi
jmp 0x1857a
jmp 0x18584
movq %rax, %rbx
movq -0x2f8(%rbp), %rdi
leaq -0x2e8(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x2e8(%rbp), %rsi
jmp 0x1857a
jmp 0x18584
movq %rax, %rbx
movq -0x178(%rbp), %rdi
leaq -0x168(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x168(%rbp), %rsi
jmp 0x1857a
jmp 0x18584
movq %rax, %rbx
movq -0x198(%rbp), %rdi
leaq -0x188(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x188(%rbp), %rsi
jmp 0x1857a
movq %rax, %rbx
movq -0x378(%rbp), %rdi
leaq -0x368(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x368(%rbp), %rsi
jmp 0x1857a
movq %rax, %rbx
movq -0x118(%rbp), %rdi
leaq -0x108(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x108(%rbp), %rsi
jmp 0x1857a
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x38(%rbp), %rsi
jmp 0x1857a
jmp 0x18584
jmp 0x18584
movq %rax, %rbx
movq -0x398(%rbp), %rdi
leaq -0x388(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x388(%rbp), %rsi
jmp 0x1857a
movq %rax, %rbx
movq -0x1b8(%rbp), %rdi
leaq -0x1a8(%rbp), %rax
cmpq %rax, %rdi
je 0x18587
movq -0x1a8(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x18587
movq %rax, %rbx
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x185a3
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x185bc
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0xb8(%rbp), %rdi
leaq -0xa8(%rbp), %rax
cmpq %rax, %rdi
je 0x185de
movq -0xa8(%rbp), %rsi
incq %rsi
callq 0x4170
movq %rbx, %rdi
callq 0x4250