// File: 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
subq $0x680, %rsp            # imm = 0x680
movq %rdi, -0x4b8(%rbp)
movb %dl, %al
movq %rdi, %rcx
movq %rcx, -0x4b0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
movsbl -0x11(%rbp), %esi
callq 0x1a230
movq -0x4a8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x4a0(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x498(%rbp)
leaq -0x39(%rbp), %rdi
movq %rdi, -0x490(%rbp)
callq 0x4300
movq -0x490(%rbp), %rdx
leaq 0x5de9(%rip), %rsi      # 0x1ece0
leaq -0x38(%rbp), %rdi
callq 0x4270
jmp 0x18f02
movq -0x4a0(%rbp), %rsi
movq -0x498(%rbp), %rdi
leaq -0x38(%rbp), %rdx
callq 0x5990
jmp 0x18f1b
leaq -0x38(%rbp), %rdi
callq 0x4130
leaq -0x39(%rbp), %rdi
callq 0x4200
leaq -0x70(%rbp), %rdi
callq 0x4280
leaq -0x90(%rbp), %rdi
callq 0x4280
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x4c0(%rbp)
callq 0x4280
movq -0x4c0(%rbp), %rsi
movq 0xe07d(%rip), %rdi      # 0x26fe0
callq 0x4230
jmp 0x18f6a
leaq -0xd0(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x40e0
jmp 0x18f7f
leaq -0xd0(%rbp), %rdi
callq 0x1a410
movb %al, -0x4c1(%rbp)
jmp 0x18f93
leaq -0xd0(%rbp), %rdi
callq 0x4130
movb -0x4c1(%rbp), %al
testb $0x1, %al
jne 0x18fae
jmp 0x193c9
movq -0x4a8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x4d0(%rbp)
leaq -0x110(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x40e0
jmp 0x18fd4
movq -0x4d0(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
leaq -0x110(%rbp), %rdx
callq 0x8d90
jmp 0x18ff0
leaq -0x70(%rbp), %rdi
movq %rdi, -0x4e0(%rbp)
leaq -0xf0(%rbp), %rsi
movq %rsi, -0x4e8(%rbp)
callq 0x4220
movq -0x4e8(%rbp), %rdi
callq 0x4130
leaq -0x110(%rbp), %rdi
callq 0x4130
movq -0x4e0(%rbp), %rdi
leaq 0x5238(%rip), %rsi      # 0x1e26c
callq 0x5210
movb %al, -0x4d1(%rbp)
jmp 0x19041
movb -0x4d1(%rbp), %al
testb $0x1, %al
jne 0x19050
jmp 0x19166
leaq 0x5ca7(%rip), %rsi      # 0x1ecfe
leaq -0x90(%rbp), %rdi
callq 0x41a0
jmp 0x19065
movq -0x4a8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x4f8(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x4f0(%rbp)
leaq -0x130(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x40e0
jmp 0x19096
movq -0x4f8(%rbp), %rsi
movq -0x4f0(%rbp), %rdi
leaq -0x130(%rbp), %rdx
callq 0x5990
jmp 0x190b2
leaq -0x130(%rbp), %rdi
callq 0x4130
movl $0x2, -0x134(%rbp)
jmp 0x1a1a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x190f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x4130
leaq -0x39(%rbp), %rdi
callq 0x4200
jmp 0x1a221
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x1a1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
leaq 0x512a(%rip), %rsi      # 0x1e297
leaq -0x70(%rbp), %rdi
callq 0x5210
movb %al, -0x4f9(%rbp)
jmp 0x1917e
movb -0x4f9(%rbp), %al
testb $0x1, %al
jne 0x1918d
jmp 0x193ae
movq -0x4a8(%rbp), %rax
movq (%rax), %rdi
callq 0xcff0
movl %eax, -0x500(%rbp)
jmp 0x191a4
movl -0x500(%rbp), %eax
addl $0x1, %eax
cmpl $0x6, %eax
jne 0x19219
leaq -0x135(%rbp), %rdi
movq %rdi, -0x508(%rbp)
callq 0x4300
movq -0x4b8(%rbp), %rdi
movq -0x508(%rbp), %rdx
leaq 0x4f6e(%rip), %rsi      # 0x1e148
callq 0x4270
jmp 0x191e1
leaq -0x135(%rbp), %rdi
callq 0x4200
movl $0x1, -0x134(%rbp)
jmp 0x1a1a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x135(%rbp), %rdi
callq 0x4200
jmp 0x1a1ee
movq -0x4a8(%rbp), %rdi
callq 0x1a8f0
jmp 0x19227
movq -0x4a8(%rbp), %rax
movq (%rax), %rdi
callq 0xcff0
movl %eax, -0x50c(%rbp)
jmp 0x1923e
movl -0x50c(%rbp), %esi
leaq -0x198(%rbp), %rdi
callq 0xdbe0
jmp 0x19252
leaq 0x5ab6(%rip), %rsi      # 0x1ed0f
leaq -0x178(%rbp), %rdi
leaq -0x198(%rbp), %rdx
callq 0xdb90
jmp 0x1926e
leaq 0x5899(%rip), %rdx      # 0x1eb0e
leaq -0x158(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0xdb40
jmp 0x1928a
leaq -0x90(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x4240
jmp 0x1929f
leaq -0x158(%rbp), %rdi
callq 0x4130
leaq -0x178(%rbp), %rdi
callq 0x4130
leaq -0x198(%rbp), %rdi
callq 0x4130
movq -0x4a8(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdi
callq 0x5c50
jmp 0x192d8
movq -0x4a8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x520(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x518(%rbp)
leaq -0x1b8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x40e0
jmp 0x19309
movq -0x520(%rbp), %rsi
movq -0x518(%rbp), %rdi
leaq -0x1b8(%rbp), %rdx
callq 0x5990
jmp 0x19325
leaq -0x1b8(%rbp), %rdi
callq 0x4130
movl $0x2, -0x134(%rbp)
jmp 0x1a1a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x19380
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x19374
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x4130
leaq -0x178(%rbp), %rdi
callq 0x4130
leaq -0x198(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
leaq -0x90(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x4240
jmp 0x193c0
jmp 0x193c2
jmp 0x193c4
jmp 0x19f9e
leaq 0x4dd4(%rip), %rsi      # 0x1e1a4
leaq -0xb0(%rbp), %rdi
callq 0x5210
movb %al, -0x521(%rbp)
jmp 0x193e4
movb -0x521(%rbp), %al
testb $0x1, %al
jne 0x193f3
jmp 0x19662
movq 0xdbe6(%rip), %rdi      # 0x26fe0
leaq -0xb0(%rbp), %rsi
callq 0x4230
jmp 0x19408
leaq -0x1d8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x40e0
jmp 0x1941d
leaq -0x1d8(%rbp), %rdi
callq 0x1a410
movb %al, -0x522(%rbp)
jmp 0x19431
leaq -0x1d8(%rbp), %rdi
callq 0x4130
movb -0x522(%rbp), %al
testb $0x1, %al
jne 0x1944c
jmp 0x195c3
movq -0x4a8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x530(%rbp)
leaq -0x218(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x40e0
jmp 0x19472
movq -0x530(%rbp), %rsi
leaq -0x1f8(%rbp), %rdi
leaq -0x218(%rbp), %rdx
callq 0xc800
jmp 0x1948e
leaq -0x90(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x4240
jmp 0x194a3
leaq -0x1f8(%rbp), %rdi
callq 0x4130
leaq -0x218(%rbp), %rdi
callq 0x4130
leaq 0x5250(%rip), %rsi      # 0x1e712
leaq -0x90(%rbp), %rdi
callq 0x5210
movb %al, -0x531(%rbp)
jmp 0x194d6
movb -0x531(%rbp), %al
testb $0x1, %al
jne 0x194e5
jmp 0x195be
movq -0x4a8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x548(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x540(%rbp)
leaq -0x238(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x40e0
jmp 0x19516
movq -0x548(%rbp), %rsi
movq -0x540(%rbp), %rdi
leaq -0x238(%rbp), %rdx
callq 0x5990
jmp 0x19532
leaq -0x238(%rbp), %rdi
callq 0x4130
movl $0x2, -0x134(%rbp)
jmp 0x1a1a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x19590
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x4130
leaq -0x218(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
jmp 0x1965d
leaq 0x4e4a(%rip), %rsi      # 0x1e414
leaq -0x90(%rbp), %rdi
callq 0x41a0
jmp 0x195d8
movq -0x4a8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x558(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x550(%rbp)
leaq -0x258(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x40e0
jmp 0x19609
movq -0x558(%rbp), %rsi
movq -0x550(%rbp), %rdi
leaq -0x258(%rbp), %rdx
callq 0x5990
jmp 0x19625
leaq -0x258(%rbp), %rdi
callq 0x4130
movl $0x2, -0x134(%rbp)
jmp 0x1a1a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
jmp 0x19f9c
leaq 0x4e8a(%rip), %rsi      # 0x1e4f3
leaq -0xb0(%rbp), %rdi
callq 0x5210
movb %al, -0x559(%rbp)
jmp 0x1967d
movb -0x559(%rbp), %al
testb $0x1, %al
jne 0x1968c
jmp 0x198fb
movq 0xd94d(%rip), %rdi      # 0x26fe0
leaq -0xb0(%rbp), %rsi
callq 0x4230
jmp 0x196a1
leaq -0x278(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x40e0
jmp 0x196b6
leaq -0x278(%rbp), %rdi
callq 0x1a410
movb %al, -0x55a(%rbp)
jmp 0x196ca
leaq -0x278(%rbp), %rdi
callq 0x4130
movb -0x55a(%rbp), %al
testb $0x1, %al
jne 0x196e5
jmp 0x1985c
movq -0x4a8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x568(%rbp)
leaq -0x2b8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x40e0
jmp 0x1970b
movq -0x568(%rbp), %rsi
leaq -0x298(%rbp), %rdi
leaq -0x2b8(%rbp), %rdx
callq 0xb5b0
jmp 0x19727
leaq -0x90(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x4240
jmp 0x1973c
leaq -0x298(%rbp), %rdi
callq 0x4130
leaq -0x2b8(%rbp), %rdi
callq 0x4130
leaq 0x4f6a(%rip), %rsi      # 0x1e6c5
leaq -0x90(%rbp), %rdi
callq 0x5210
movb %al, -0x569(%rbp)
jmp 0x1976f
movb -0x569(%rbp), %al
testb $0x1, %al
jne 0x1977e
jmp 0x19857
movq -0x4a8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x580(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x578(%rbp)
leaq -0x2d8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x40e0
jmp 0x197af
movq -0x580(%rbp), %rsi
movq -0x578(%rbp), %rdi
leaq -0x2d8(%rbp), %rdx
callq 0x5990
jmp 0x197cb
leaq -0x2d8(%rbp), %rdi
callq 0x4130
movl $0x2, -0x134(%rbp)
jmp 0x1a1a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x19829
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x4130
leaq -0x2b8(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
jmp 0x198f6
leaq 0x4bb1(%rip), %rsi      # 0x1e414
leaq -0x90(%rbp), %rdi
callq 0x41a0
jmp 0x19871
movq -0x4a8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x590(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x588(%rbp)
leaq -0x2f8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x40e0
jmp 0x198a2
movq -0x590(%rbp), %rsi
movq -0x588(%rbp), %rdi
leaq -0x2f8(%rbp), %rdx
callq 0x5990
jmp 0x198be
leaq -0x2f8(%rbp), %rdi
callq 0x4130
movl $0x2, -0x134(%rbp)
jmp 0x1a1a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
jmp 0x19f9a
leaq 0x4b2c(%rip), %rsi      # 0x1e42e
leaq -0xb0(%rbp), %rdi
callq 0x5210
movb %al, -0x591(%rbp)
jmp 0x19916
movb -0x591(%rbp), %al
testb $0x1, %al
jne 0x19925
jmp 0x19de2
movq 0xd6b4(%rip), %rdi      # 0x26fe0
leaq -0xb0(%rbp), %rsi
callq 0x4230
jmp 0x1993a
leaq -0x318(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x40e0
jmp 0x1994f
leaq -0x318(%rbp), %rdi
callq 0x1a410
movb %al, -0x592(%rbp)
jmp 0x19963
leaq -0x318(%rbp), %rdi
callq 0x4130
movb -0x592(%rbp), %al
testb $0x1, %al
jne 0x1997e
jmp 0x19ddd
movq -0x4a8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x5a0(%rbp)
leaq -0x358(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x40e0
jmp 0x199a4
movq -0x5a0(%rbp), %rsi
leaq -0x338(%rbp), %rdi
leaq -0x358(%rbp), %rdx
callq 0xa920
jmp 0x199c0
leaq -0x90(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x4240
jmp 0x199d5
leaq -0x338(%rbp), %rdi
callq 0x4130
leaq -0x358(%rbp), %rdi
callq 0x4130
leaq 0x532d(%rip), %rsi      # 0x1ed21
leaq -0x90(%rbp), %rdi
callq 0x5210
movb %al, -0x5a1(%rbp)
jmp 0x19a08
movb -0x5a1(%rbp), %al
testb $0x1, %al
jne 0x19a3e
jmp 0x19a14
leaq 0x497d(%rip), %rsi      # 0x1e398
leaq -0x90(%rbp), %rdi
callq 0x5210
movb %al, -0x5a2(%rbp)
jmp 0x19a2f
movb -0x5a2(%rbp), %al
testb $0x1, %al
jne 0x19a3e
jmp 0x19b17
movq -0x4a8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x5b8(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x5b0(%rbp)
leaq -0x378(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x40e0
jmp 0x19a6f
movq -0x5b8(%rbp), %rsi
movq -0x5b0(%rbp), %rdi
leaq -0x378(%rbp), %rdx
callq 0x5990
jmp 0x19a8b
leaq -0x378(%rbp), %rdi
callq 0x4130
movl $0x2, -0x134(%rbp)
jmp 0x1a1a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x19ae9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x4130
leaq -0x358(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x378(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
leaq 0x488c(%rip), %rsi      # 0x1e3aa
leaq -0x90(%rbp), %rdi
callq 0x5210
movb %al, -0x5b9(%rbp)
jmp 0x19b32
movb -0x5b9(%rbp), %al
testb $0x1, %al
jne 0x19b41
jmp 0x19d3f
movq -0x4a8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x5d0(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x5c8(%rbp)
leaq -0x398(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x40e0
jmp 0x19b72
movq -0x5d0(%rbp), %rsi
movq -0x5c8(%rbp), %rdi
leaq -0x398(%rbp), %rdx
callq 0x5990
jmp 0x19b8e
leaq -0x398(%rbp), %rdi
callq 0x4130
movq 0xd43f(%rip), %rdi      # 0x26fe0
leaq -0xb0(%rbp), %rsi
callq 0x4230
jmp 0x19baf
movq -0x4a8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x5d8(%rbp)
leaq -0x3d8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x40e0
jmp 0x19bd5
movq -0x5d8(%rbp), %rsi
leaq -0x3b8(%rbp), %rdi
leaq -0x3d8(%rbp), %rdx
callq 0xac10
jmp 0x19bf1
leaq -0x90(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
leaq -0x3b8(%rbp), %rsi
movq %rsi, -0x5f0(%rbp)
callq 0x4220
movq -0x5f0(%rbp), %rdi
callq 0x4130
leaq -0x3d8(%rbp), %rdi
callq 0x4130
movq -0x5e8(%rbp), %rdi
leaq 0x48e0(%rip), %rsi      # 0x1e518
callq 0x5210
movb %al, -0x5d9(%rbp)
jmp 0x19c45
movb -0x5d9(%rbp), %al
testb $0x1, %al
jne 0x19c7b
jmp 0x19c51
leaq 0x47fe(%rip), %rsi      # 0x1e456
leaq -0x90(%rbp), %rdi
callq 0x5210
movb %al, -0x5f1(%rbp)
jmp 0x19c6c
movb -0x5f1(%rbp), %al
testb $0x1, %al
jne 0x19c7b
jmp 0x19d3a
movq -0x4a8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x608(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x600(%rbp)
leaq -0x3f8(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x40e0
jmp 0x19cac
movq -0x608(%rbp), %rsi
movq -0x600(%rbp), %rdi
leaq -0x3f8(%rbp), %rdx
callq 0x5990
jmp 0x19cc8
leaq -0x3f8(%rbp), %rdi
callq 0x4130
movl $0x2, -0x134(%rbp)
jmp 0x1a1a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x398(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x3d8(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x3f8(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
jmp 0x19dd9
leaq 0x46ce(%rip), %rsi      # 0x1e414
leaq -0x90(%rbp), %rdi
callq 0x41a0
jmp 0x19d54
movq -0x4a8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x618(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x610(%rbp)
leaq -0x418(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x40e0
jmp 0x19d85
movq -0x618(%rbp), %rsi
movq -0x610(%rbp), %rdi
leaq -0x418(%rbp), %rdx
callq 0x5990
jmp 0x19da1
leaq -0x418(%rbp), %rdi
callq 0x4130
movl $0x2, -0x134(%rbp)
jmp 0x1a1a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x418(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
jmp 0x19ddb
jmp 0x19ddd
jmp 0x19f98
leaq 0x44b5(%rip), %rsi      # 0x1e29e
leaq -0xb0(%rbp), %rdi
callq 0x5210
movb %al, -0x619(%rbp)
jmp 0x19dfd
movb -0x619(%rbp), %al
testb $0x1, %al
jne 0x19e09
jmp 0x19e70
leaq -0x419(%rbp), %rdi
movq %rdi, -0x628(%rbp)
callq 0x4300
movq -0x4b8(%rbp), %rdi
movq -0x628(%rbp), %rdx
leaq 0x42ff(%rip), %rsi      # 0x1e130
callq 0x4270
jmp 0x19e38
leaq -0x419(%rbp), %rdi
callq 0x4200
movl $0x1, -0x134(%rbp)
jmp 0x1a1a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x419(%rbp), %rdi
callq 0x4200
jmp 0x1a1ee
leaq 0x432a(%rip), %rsi      # 0x1e1a1
leaq -0xb0(%rbp), %rdi
callq 0x5210
movb %al, -0x629(%rbp)
jmp 0x19e8b
movb -0x629(%rbp), %al
testb $0x1, %al
jne 0x19e97
jmp 0x19efe
leaq -0x41a(%rbp), %rdi
movq %rdi, -0x638(%rbp)
callq 0x4300
movq -0x4b8(%rbp), %rdi
movq -0x638(%rbp), %rdx
leaq 0x42b5(%rip), %rsi      # 0x1e174
callq 0x4270
jmp 0x19ec6
leaq -0x41a(%rbp), %rdi
callq 0x4200
movl $0x1, -0x134(%rbp)
jmp 0x1a1a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x41a(%rbp), %rdi
callq 0x4200
jmp 0x1a1ee
leaq 0x450f(%rip), %rsi      # 0x1e414
leaq -0x90(%rbp), %rdi
callq 0x41a0
jmp 0x19f13
movq -0x4a8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x648(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x640(%rbp)
leaq -0x440(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x40e0
jmp 0x19f44
movq -0x648(%rbp), %rsi
movq -0x640(%rbp), %rdi
leaq -0x440(%rbp), %rdx
callq 0x5990
jmp 0x19f60
leaq -0x440(%rbp), %rdi
callq 0x4130
movl $0x2, -0x134(%rbp)
jmp 0x1a1a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x440(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
jmp 0x19f9a
jmp 0x19f9c
jmp 0x19f9e
movq -0x4a8(%rbp), %rax
movq (%rax), %rsi
leaq -0x460(%rbp), %rdi
callq 0x8210
jmp 0x19fb6
leaq -0x90(%rbp), %rdi
leaq -0x460(%rbp), %rsi
callq 0x4240
jmp 0x19fcb
leaq -0x460(%rbp), %rdi
callq 0x4130
movq -0x4a8(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdi
callq 0x5c50
jmp 0x19fec
movq -0x4a8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x658(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x650(%rbp)
leaq -0x480(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x40e0
jmp 0x1a01d
movq -0x658(%rbp), %rsi
movq -0x650(%rbp), %rdi
leaq -0x480(%rbp), %rdx
callq 0x5990
jmp 0x1a039
leaq -0x480(%rbp), %rdi
callq 0x4130
movq -0x4a8(%rbp), %rax
movq (%rax), %rax
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0x65c(%rbp)
jmp 0x1a067
movl -0x65c(%rbp), %eax
cmpl $0x0, %eax
jne 0x1a19a
movq 0xcf53(%rip), %rdi      # 0x26fd0
movq 0xcf3c(%rip), %rsi      # 0x26fc0
callq 0x41f0
jmp 0x1a08b
movq 0xcf3e(%rip), %rdi      # 0x26fd0
leaq 0x4c97(%rip), %rsi      # 0x1ed30
callq 0x41c0
movq %rax, -0x668(%rbp)
jmp 0x1a0a7
movq -0x668(%rbp), %rdi
movq 0xcf0b(%rip), %rsi      # 0x26fc0
callq 0x41f0
jmp 0x1a0bc
movq 0xcf0d(%rip), %rdi      # 0x26fd0
leaq 0x4c71(%rip), %rsi      # 0x1ed3b
callq 0x41c0
movq %rax, -0x670(%rbp)
jmp 0x1a0d8
movq -0x670(%rbp), %rdi
movq 0xceda(%rip), %rsi      # 0x26fc0
callq 0x41f0
jmp 0x1a0ed
movq 0xceec(%rip), %rdi      # 0x26fe0
leaq -0xb0(%rbp), %rsi
callq 0x4230
jmp 0x1a102
leaq -0x481(%rbp), %rdi
movq %rdi, -0x678(%rbp)
callq 0x4300
movq -0x4b8(%rbp), %rdi
movq -0x678(%rbp), %rdx
leaq 0x4038(%rip), %rsi      # 0x1e162
callq 0x4270
jmp 0x1a131
leaq -0x481(%rbp), %rdi
callq 0x4200
movl $0x1, -0x134(%rbp)
jmp 0x1a1a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x460(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x480(%rbp), %rdi
callq 0x4130
jmp 0x1a1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x481(%rbp), %rdi
callq 0x4200
jmp 0x1a1ee
movl $0x0, -0x134(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x4130
leaq -0x90(%rbp), %rdi
callq 0x4130
leaq -0x70(%rbp), %rdi
callq 0x4130
movl -0x134(%rbp), %eax
movl %eax, -0x67c(%rbp)
testl %eax, %eax
je 0x1a1e9
jmp 0x1a1d7
movl -0x67c(%rbp), %eax
subl $0x1, %eax
je 0x1a211
jmp 0x1a1e4
jmp 0x18f2d
jmp 0x18f2d
leaq -0xb0(%rbp), %rdi
callq 0x4130
leaq -0x90(%rbp), %rdi
callq 0x4130
leaq -0x70(%rbp), %rdi
callq 0x4130
jmp 0x1a221
movq -0x4b0(%rbp), %rax
addq $0x680, %rsp            # imm = 0x680
popq %rbp
retq
movq -0x48(%rbp), %rdi
callq 0x42f0
nopw (%rax,%rax)