// File: malcolmyeh[P]CC3K/floor.cc
// Function: Floor::usePotion(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
std::string Floor::usePotion(std::string direction){
	Posn p = this->player->getPosition().getNew(direction);
	std::string log;
	for (int i = 0; i < this->potions.size(); ++i){
		if (p == this->potions.at(i)->getPosition()){
			if(this->potions.at(i)->getType() == "RH"){
				this->player->heal(10);
				this->knownPotion[0] = true;
				log = "Restore Health potion restores 10 HP (HP: " + std::to_string(this->player->getHP()) + "). ";
			} else if (this->potions.at(i)->getType() == "BA"){
				this->player = new AtkBuff(this->player, 5);
				this->knownPotion[1] = true;
				log =  "Boost Attack potion grants 5 damage (Atk: " + std::to_string(this->player->getAtk()) + "). ";				
			} else if (this->potions.at(i)->getType() == "BD"){
				this->player = new DefBuff(this->player, 5);
				this->knownPotion[2] = true;
				log =  "Boost Defense potion grants 5 defense (Def: " + std::to_string(this->player->getDef()) + "). ";				
			} else if (this->potions.at(i)->getType() == "PH"){
				this->knownPotion[3] = true;
				if (this->player->getRace() == "Elf"){
					this->player->heal(10);
					log =  "Poison Health potion restores 10 HP (HP: " + std::to_string(this->player->getHP()) + "). ";
				} else {
					this->player->heal(-10);
					log =  "Poison Health potion deals 10 damage (HP: " + std::to_string(this->player->getHP()) + "). ";
				}		
			} else if (this->potions.at(i)->getType() == "WA"){
				this->knownPotion[4] = true;
				if (this->player->getRace() == "Elf"){
					this->player = new AtkBuff(this->player, 5);
					log =  "Wound Attack potion grants 5 damage (Atk: " + std::to_string(this->player->getAtk()) + "). ";
				} else {
					this->player = new AtkBuff(this->player, -5);
					log =  "Wound Attack potion reduces 5 damage (Atk: " + std::to_string(this->player->getAtk()) + "). ";				
				}								
			} else if (this->potions.at(i)->getType() == "WD"){
				this->knownPotion[5] = true;
				if (this->player->getRace() == "Elf"){
					this->player = new DefBuff(this->player, 5);
					log =  "Wound Defense potion grants 5 defense (Def: " + std::to_string(this->player->getDef()) + "). ";
				} else {
					this->player = new DefBuff(this->player, -5);
					log =  "Wound Defense potion reduces 5 defense (Def: " + std::to_string(this->player->getDef()) + "). ";
				}							
			}
			displayGrid[p.y][p.x] = defaultGrid[p.y][p.x];
			Potion * temp = this->potions.at(i);
			this->potions.erase(this->potions.begin() + i);
			delete temp;
			return log;
		}
		
	}
	return "No potion in direction. ";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x680, %rsp            # imm = 0x680
movq %rdx, -0x550(%rbp)
movq %rdi, -0x568(%rbp)
movq %rdi, %rax
movq %rax, -0x560(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x558(%rbp)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
movq -0x550(%rbp), %rsi
movq %rax, -0x28(%rbp)
leaq -0x48(%rbp), %rdi
movq %rdi, -0x548(%rbp)
callq 0x40e0
movq -0x548(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x5240
movq %rax, -0x540(%rbp)
jmp 0xb62e
movq -0x540(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x4130
leaq -0x78(%rbp), %rdi
callq 0x4280
movl $0x0, -0x7c(%rbp)
movq -0x558(%rbp), %rdi
movslq -0x7c(%rbp), %rax
movq %rax, -0x570(%rbp)
addq $0x7f0, %rdi            # imm = 0x7F0
callq 0xd3d0
movq %rax, %rcx
movq -0x570(%rbp), %rax
cmpq %rcx, %rax
jae 0xc766
movq -0x558(%rbp), %rdi
addq $0x7f0, %rdi            # imm = 0x7F0
movslq -0x7c(%rbp), %rsi
callq 0xd3f0
movq %rax, -0x578(%rbp)
jmp 0xb6a3
movq -0x578(%rbp), %rax
movq (%rax), %rdi
callq 0x17b70
movq %rax, -0x580(%rbp)
jmp 0xb6bb
movq -0x580(%rbp), %rax
movq %rax, -0x84(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x84(%rbp), %rsi
callq 0x53f0
movb %al, -0x581(%rbp)
jmp 0xb6e1
movb -0x581(%rbp), %al
testb $0x1, %al
jne 0xb6f0
jmp 0xc756
movq -0x558(%rbp), %rdi
addq $0x7f0, %rdi            # imm = 0x7F0
movslq -0x7c(%rbp), %rsi
callq 0xd3f0
movq %rax, -0x590(%rbp)
jmp 0xb710
movq -0x590(%rbp), %rax
movq (%rax), %rsi
leaq -0xa8(%rbp), %rdi
callq 0x18df0
jmp 0xb728
leaq 0x12add(%rip), %rsi     # 0x1e20c
leaq -0xa8(%rbp), %rdi
callq 0x5210
movb %al, -0x591(%rbp)
jmp 0xb743
leaq -0xa8(%rbp), %rdi
callq 0x4130
movb -0x591(%rbp), %al
testb $0x1, %al
jne 0xb75e
jmp 0xb8a2
movq -0x558(%rbp), %rax
movq 0xfe0(%rax), %rdi
movl $0xa, %esi
callq 0x11c80
jmp 0xb778
movq -0x558(%rbp), %rax
movb $0x1, 0xff0(%rax)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0x598(%rbp)
jmp 0xb79e
movl -0x598(%rbp), %esi
leaq -0x108(%rbp), %rdi
callq 0xdbe0
jmp 0xb7b2
leaq 0x12d7e(%rip), %rsi     # 0x1e537
leaq -0xe8(%rbp), %rdi
leaq -0x108(%rbp), %rdx
callq 0xdb90
jmp 0xb7ce
leaq 0x13338(%rip), %rdx     # 0x1eb0d
leaq -0xc8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0xdb40
jmp 0xb7ea
leaq -0x78(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x4220
leaq -0xc8(%rbp), %rdi
callq 0x4130
leaq -0xe8(%rbp), %rdi
callq 0x4130
leaq -0x108(%rbp), %rdi
callq 0x4130
jmp 0xc646
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x4130
jmp 0xc7e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xc7e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xb891
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x4130
leaq -0x108(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movq -0x558(%rbp), %rdi
addq $0x7f0, %rdi            # imm = 0x7F0
movslq -0x7c(%rbp), %rsi
callq 0xd3f0
movq %rax, -0x5a0(%rbp)
jmp 0xb8c2
movq -0x5a0(%rbp), %rax
movq (%rax), %rsi
leaq -0x128(%rbp), %rdi
callq 0x18df0
jmp 0xb8da
leaq 0x1292e(%rip), %rsi     # 0x1e20f
leaq -0x128(%rbp), %rdi
callq 0x5210
movb %al, -0x5a1(%rbp)
jmp 0xb8f5
leaq -0x128(%rbp), %rdi
callq 0x4130
movb -0x5a1(%rbp), %al
testb $0x1, %al
jne 0xb910
jmp 0xba73
movl $0x60, %edi
callq 0x41d0
movq %rax, -0x5b0(%rbp)
jmp 0xb923
movq -0x5b0(%rbp), %rdi
movq -0x558(%rbp), %rax
movq 0xfe0(%rax), %rsi
movl $0x5, %edx
callq 0x1d3d0
jmp 0xb944
movq -0x558(%rbp), %rax
movq -0x5b0(%rbp), %rcx
movq %rcx, 0xfe0(%rax)
movb $0x1, 0xff1(%rax)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
callq *%rax
movl %eax, -0x5b4(%rbp)
jmp 0xb978
movl -0x5b4(%rbp), %esi
leaq -0x188(%rbp), %rdi
callq 0xdbe0
jmp 0xb98c
leaq 0x12bcf(%rip), %rsi     # 0x1e562
leaq -0x168(%rbp), %rdi
leaq -0x188(%rbp), %rdx
callq 0xdb90
jmp 0xb9a8
leaq 0x1315e(%rip), %rdx     # 0x1eb0d
leaq -0x148(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0xdb40
jmp 0xb9c4
leaq -0x78(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x4220
leaq -0x148(%rbp), %rdi
callq 0x4130
leaq -0x168(%rbp), %rdi
callq 0x4130
leaq -0x188(%rbp), %rdi
callq 0x4130
jmp 0xc644
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movq -0x5b0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl $0x60, %esi
callq 0x41e0
jmp 0xc7e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xba62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x4130
leaq -0x188(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movq -0x558(%rbp), %rdi
addq $0x7f0, %rdi            # imm = 0x7F0
movslq -0x7c(%rbp), %rsi
callq 0xd3f0
movq %rax, -0x5c0(%rbp)
jmp 0xba93
movq -0x5c0(%rbp), %rax
movq (%rax), %rsi
leaq -0x1a8(%rbp), %rdi
callq 0x18df0
jmp 0xbaab
leaq 0x12760(%rip), %rsi     # 0x1e212
leaq -0x1a8(%rbp), %rdi
callq 0x5210
movb %al, -0x5c1(%rbp)
jmp 0xbac6
leaq -0x1a8(%rbp), %rdi
callq 0x4130
movb -0x5c1(%rbp), %al
testb $0x1, %al
jne 0xbae1
jmp 0xbc44
movl $0x60, %edi
callq 0x41d0
movq %rax, -0x5d0(%rbp)
jmp 0xbaf4
movq -0x5d0(%rbp), %rdi
movq -0x558(%rbp), %rax
movq 0xfe0(%rax), %rsi
movl $0x5, %edx
callq 0x1d510
jmp 0xbb15
movq -0x558(%rbp), %rax
movq -0x5d0(%rbp), %rcx
movq %rcx, 0xfe0(%rax)
movb $0x1, 0xff2(%rax)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movl %eax, -0x5d4(%rbp)
jmp 0xbb49
movl -0x5d4(%rbp), %esi
leaq -0x208(%rbp), %rdi
callq 0xdbe0
jmp 0xbb5d
leaq 0x12a29(%rip), %rsi     # 0x1e58d
leaq -0x1e8(%rbp), %rdi
leaq -0x208(%rbp), %rdx
callq 0xdb90
jmp 0xbb79
leaq 0x12f8d(%rip), %rdx     # 0x1eb0d
leaq -0x1c8(%rbp), %rdi
leaq -0x1e8(%rbp), %rsi
callq 0xdb40
jmp 0xbb95
leaq -0x78(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0x4220
leaq -0x1c8(%rbp), %rdi
callq 0x4130
leaq -0x1e8(%rbp), %rdi
callq 0x4130
leaq -0x208(%rbp), %rdi
callq 0x4130
jmp 0xc642
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movq -0x5d0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl $0x60, %esi
callq 0x41e0
jmp 0xc7e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xbc33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x4130
leaq -0x208(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movq -0x558(%rbp), %rdi
addq $0x7f0, %rdi            # imm = 0x7F0
movslq -0x7c(%rbp), %rsi
callq 0xd3f0
movq %rax, -0x5e0(%rbp)
jmp 0xbc64
movq -0x5e0(%rbp), %rax
movq (%rax), %rsi
leaq -0x228(%rbp), %rdi
callq 0x18df0
jmp 0xbc7c
leaq 0x12592(%rip), %rsi     # 0x1e215
leaq -0x228(%rbp), %rdi
callq 0x5210
movb %al, -0x5e1(%rbp)
jmp 0xbc97
leaq -0x228(%rbp), %rdi
callq 0x4130
movb -0x5e1(%rbp), %al
testb $0x1, %al
jne 0xbcb2
jmp 0xbf35
movq -0x558(%rbp), %rax
movb $0x1, 0xff3(%rax)
movq 0xfe0(%rax), %rsi
movq (%rsi), %rax
movq 0x28(%rax), %rax
leaq -0x248(%rbp), %rdi
callq *%rax
jmp 0xbcd9
leaq 0x128da(%rip), %rsi     # 0x1e5ba
leaq -0x248(%rbp), %rdi
callq 0x5210
movb %al, -0x5e2(%rbp)
jmp 0xbcf4
leaq -0x248(%rbp), %rdi
callq 0x4130
movb -0x5e2(%rbp), %al
testb $0x1, %al
jne 0xbd0f
jmp 0xbe3e
movq -0x558(%rbp), %rax
movq 0xfe0(%rax), %rdi
movl $0xa, %esi
callq 0x11c80
jmp 0xbd29
movq -0x558(%rbp), %rax
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0x5e8(%rbp)
jmp 0xbd48
movl -0x5e8(%rbp), %esi
leaq -0x2a8(%rbp), %rdi
callq 0xdbe0
jmp 0xbd5c
leaq 0x1285b(%rip), %rsi     # 0x1e5be
leaq -0x288(%rbp), %rdi
leaq -0x2a8(%rbp), %rdx
callq 0xdb90
jmp 0xbd78
leaq 0x12d8e(%rip), %rdx     # 0x1eb0d
leaq -0x268(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0xdb40
jmp 0xbd94
leaq -0x78(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x4220
leaq -0x268(%rbp), %rdi
callq 0x4130
leaq -0x288(%rbp), %rdi
callq 0x4130
leaq -0x2a8(%rbp), %rdi
callq 0x4130
jmp 0xbf30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xbe2d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x4130
leaq -0x2a8(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movq -0x558(%rbp), %rax
movq 0xfe0(%rax), %rdi
movl $0xfffffff6, %esi       # imm = 0xFFFFFFF6
callq 0x11c80
jmp 0xbe58
movq -0x558(%rbp), %rax
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x18(%rax), %rax
callq *%rax
movl %eax, -0x5ec(%rbp)
jmp 0xbe77
movl -0x5ec(%rbp), %esi
leaq -0x308(%rbp), %rdi
callq 0xdbe0
jmp 0xbe8b
leaq 0x12756(%rip), %rsi     # 0x1e5e8
leaq -0x2e8(%rbp), %rdi
leaq -0x308(%rbp), %rdx
callq 0xdb90
jmp 0xbea7
leaq 0x12c5f(%rip), %rdx     # 0x1eb0d
leaq -0x2c8(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0xdb40
jmp 0xbec3
leaq -0x78(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0x4220
leaq -0x2c8(%rbp), %rdi
callq 0x4130
leaq -0x2e8(%rbp), %rdi
callq 0x4130
leaq -0x308(%rbp), %rdi
callq 0x4130
jmp 0xbf30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xbf1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x4130
leaq -0x308(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
jmp 0xc640
movq -0x558(%rbp), %rdi
addq $0x7f0, %rdi            # imm = 0x7F0
movslq -0x7c(%rbp), %rsi
callq 0xd3f0
movq %rax, -0x5f8(%rbp)
jmp 0xbf55
movq -0x5f8(%rbp), %rax
movq (%rax), %rsi
leaq -0x328(%rbp), %rdi
callq 0x18df0
jmp 0xbf6d
leaq 0x122a4(%rip), %rsi     # 0x1e218
leaq -0x328(%rbp), %rdi
callq 0x5210
movb %al, -0x5f9(%rbp)
jmp 0xbf88
leaq -0x328(%rbp), %rdi
callq 0x4130
movb -0x5f9(%rbp), %al
testb $0x1, %al
jne 0xbfa3
jmp 0xc2ba
movq -0x558(%rbp), %rax
movb $0x1, 0xff4(%rax)
movq 0xfe0(%rax), %rsi
movq (%rsi), %rax
movq 0x28(%rax), %rax
leaq -0x348(%rbp), %rdi
callq *%rax
jmp 0xbfca
leaq 0x125e9(%rip), %rsi     # 0x1e5ba
leaq -0x348(%rbp), %rdi
callq 0x5210
movb %al, -0x5fa(%rbp)
jmp 0xbfe5
leaq -0x348(%rbp), %rdi
callq 0x4130
movb -0x5fa(%rbp), %al
testb $0x1, %al
jne 0xc000
jmp 0xc179
movl $0x60, %edi
callq 0x41d0
movq %rax, -0x608(%rbp)
jmp 0xc013
movq -0x608(%rbp), %rdi
movq -0x558(%rbp), %rax
movq 0xfe0(%rax), %rsi
movl $0x5, %edx
callq 0x1d3d0
jmp 0xc034
movq -0x558(%rbp), %rax
movq -0x608(%rbp), %rcx
movq %rcx, 0xfe0(%rax)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
callq *%rax
movl %eax, -0x60c(%rbp)
jmp 0xc061
movl -0x60c(%rbp), %esi
leaq -0x3a8(%rbp), %rdi
callq 0xdbe0
jmp 0xc075
leaq 0x12597(%rip), %rsi     # 0x1e613
leaq -0x388(%rbp), %rdi
leaq -0x3a8(%rbp), %rdx
callq 0xdb90
jmp 0xc091
leaq 0x12a75(%rip), %rdx     # 0x1eb0d
leaq -0x368(%rbp), %rdi
leaq -0x388(%rbp), %rsi
callq 0xdb40
jmp 0xc0ad
leaq -0x78(%rbp), %rdi
leaq -0x368(%rbp), %rsi
callq 0x4220
leaq -0x368(%rbp), %rdi
callq 0x4130
leaq -0x388(%rbp), %rdi
callq 0x4130
leaq -0x3a8(%rbp), %rdi
callq 0x4130
jmp 0xc2b5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x328(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x348(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movq -0x608(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl $0x60, %esi
callq 0x41e0
jmp 0xc7e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xc168
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x388(%rbp), %rdi
callq 0x4130
leaq -0x3a8(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movl $0x60, %edi
callq 0x41d0
movq %rax, -0x618(%rbp)
jmp 0xc18c
movq -0x618(%rbp), %rdi
movq -0x558(%rbp), %rax
movq 0xfe0(%rax), %rsi
movl $0xfffffffb, %edx       # imm = 0xFFFFFFFB
callq 0x1d3d0
jmp 0xc1ad
movq -0x558(%rbp), %rax
movq -0x618(%rbp), %rcx
movq %rcx, 0xfe0(%rax)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x8(%rax), %rax
callq *%rax
movl %eax, -0x61c(%rbp)
jmp 0xc1da
movl -0x61c(%rbp), %esi
leaq -0x408(%rbp), %rdi
callq 0xdbe0
jmp 0xc1ee
leaq 0x12449(%rip), %rsi     # 0x1e63e
leaq -0x3e8(%rbp), %rdi
leaq -0x408(%rbp), %rdx
callq 0xdb90
jmp 0xc20a
leaq 0x128fc(%rip), %rdx     # 0x1eb0d
leaq -0x3c8(%rbp), %rdi
leaq -0x3e8(%rbp), %rsi
callq 0xdb40
jmp 0xc226
leaq -0x78(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0x4220
leaq -0x3c8(%rbp), %rdi
callq 0x4130
leaq -0x3e8(%rbp), %rdi
callq 0x4130
leaq -0x408(%rbp), %rdi
callq 0x4130
jmp 0xc2b5
movq -0x618(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl $0x60, %esi
callq 0x41e0
jmp 0xc7e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xc2a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3e8(%rbp), %rdi
callq 0x4130
leaq -0x408(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
jmp 0xc63e
movq -0x558(%rbp), %rdi
addq $0x7f0, %rdi            # imm = 0x7F0
movslq -0x7c(%rbp), %rsi
callq 0xd3f0
movq %rax, -0x628(%rbp)
jmp 0xc2da
movq -0x628(%rbp), %rax
movq (%rax), %rsi
leaq -0x428(%rbp), %rdi
callq 0x18df0
jmp 0xc2f2
leaq 0x11f22(%rip), %rsi     # 0x1e21b
leaq -0x428(%rbp), %rdi
callq 0x5210
movb %al, -0x629(%rbp)
jmp 0xc30d
leaq -0x428(%rbp), %rdi
callq 0x4130
movb -0x629(%rbp), %al
testb $0x1, %al
jne 0xc328
jmp 0xc63c
movq -0x558(%rbp), %rax
movb $0x1, 0xff5(%rax)
movq 0xfe0(%rax), %rsi
movq (%rsi), %rax
movq 0x28(%rax), %rax
leaq -0x448(%rbp), %rdi
callq *%rax
jmp 0xc34f
leaq 0x12264(%rip), %rsi     # 0x1e5ba
leaq -0x448(%rbp), %rdi
callq 0x5210
movb %al, -0x62a(%rbp)
jmp 0xc36a
leaq -0x448(%rbp), %rdi
callq 0x4130
movb -0x62a(%rbp), %al
testb $0x1, %al
jne 0xc385
jmp 0xc4fe
movl $0x60, %edi
callq 0x41d0
movq %rax, -0x638(%rbp)
jmp 0xc398
movq -0x638(%rbp), %rdi
movq -0x558(%rbp), %rax
movq 0xfe0(%rax), %rsi
movl $0x5, %edx
callq 0x1d510
jmp 0xc3b9
movq -0x558(%rbp), %rax
movq -0x638(%rbp), %rcx
movq %rcx, 0xfe0(%rax)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movl %eax, -0x63c(%rbp)
jmp 0xc3e6
movl -0x63c(%rbp), %esi
leaq -0x4a8(%rbp), %rdi
callq 0xdbe0
jmp 0xc3fa
leaq 0x12269(%rip), %rsi     # 0x1e66a
leaq -0x488(%rbp), %rdi
leaq -0x4a8(%rbp), %rdx
callq 0xdb90
jmp 0xc416
leaq 0x126f0(%rip), %rdx     # 0x1eb0d
leaq -0x468(%rbp), %rdi
leaq -0x488(%rbp), %rsi
callq 0xdb40
jmp 0xc432
leaq -0x78(%rbp), %rdi
leaq -0x468(%rbp), %rsi
callq 0x4220
leaq -0x468(%rbp), %rdi
callq 0x4130
leaq -0x488(%rbp), %rdi
callq 0x4130
leaq -0x4a8(%rbp), %rdi
callq 0x4130
jmp 0xc63a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x428(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x448(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movq -0x638(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl $0x60, %esi
callq 0x41e0
jmp 0xc7e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xc4ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x488(%rbp), %rdi
callq 0x4130
leaq -0x4a8(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
movl $0x60, %edi
callq 0x41d0
movq %rax, -0x648(%rbp)
jmp 0xc511
movq -0x648(%rbp), %rdi
movq -0x558(%rbp), %rax
movq 0xfe0(%rax), %rsi
movl $0xfffffffb, %edx       # imm = 0xFFFFFFFB
callq 0x1d510
jmp 0xc532
movq -0x558(%rbp), %rax
movq -0x648(%rbp), %rcx
movq %rcx, 0xfe0(%rax)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movl %eax, -0x64c(%rbp)
jmp 0xc55f
movl -0x64c(%rbp), %esi
leaq -0x508(%rbp), %rdi
callq 0xdbe0
jmp 0xc573
leaq 0x1211d(%rip), %rsi     # 0x1e697
leaq -0x4e8(%rbp), %rdi
leaq -0x508(%rbp), %rdx
callq 0xdb90
jmp 0xc58f
leaq 0x12577(%rip), %rdx     # 0x1eb0d
leaq -0x4c8(%rbp), %rdi
leaq -0x4e8(%rbp), %rsi
callq 0xdb40
jmp 0xc5ab
leaq -0x78(%rbp), %rdi
leaq -0x4c8(%rbp), %rsi
callq 0x4220
leaq -0x4c8(%rbp), %rdi
callq 0x4130
leaq -0x4e8(%rbp), %rdi
callq 0x4130
leaq -0x508(%rbp), %rdi
callq 0x4130
jmp 0xc63a
movq -0x648(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
movl $0x60, %esi
callq 0x41e0
jmp 0xc7e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xc629
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x4e8(%rbp), %rdi
callq 0x4130
leaq -0x508(%rbp), %rdi
callq 0x4130
jmp 0xc7e0
jmp 0xc63c
jmp 0xc63e
jmp 0xc640
jmp 0xc642
jmp 0xc644
jmp 0xc646
movq -0x558(%rbp), %rdi
movslq -0x1c(%rbp), %rax
imulq $0x4f, %rax, %rdx
movslq -0x20(%rbp), %rax
movq %rdi, %rcx
addq %rdx, %rcx
movb 0x6(%rax,%rcx), %dl
movb %dl, 0x820(%rax,%rcx)
addq $0x7f0, %rdi            # imm = 0x7F0
movslq -0x7c(%rbp), %rsi
callq 0xd3f0
movq %rax, -0x658(%rbp)
jmp 0xc683
movq -0x558(%rbp), %rdi
movq -0x658(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x510(%rbp)
addq $0x7f0, %rdi            # imm = 0x7F0
movq %rdi, -0x668(%rbp)
callq 0xd4a0
movq %rax, -0x528(%rbp)
movslq -0x7c(%rbp), %rsi
leaq -0x528(%rbp), %rdi
callq 0xd4d0
movq %rax, -0x520(%rbp)
leaq -0x518(%rbp), %rdi
leaq -0x520(%rbp), %rsi
callq 0xd510
movq -0x668(%rbp), %rdi
movq -0x518(%rbp), %rsi
callq 0xd430
movq %rax, -0x660(%rbp)
jmp 0xc6fb
movq -0x660(%rbp), %rax
movq %rax, -0x530(%rbp)
movq -0x510(%rbp), %rax
movq %rax, -0x670(%rbp)
cmpq $0x0, %rax
je 0xc73a
movq -0x670(%rbp), %rdi
callq 0xd550
movq -0x670(%rbp), %rdi
movl $0x30, %esi
callq 0x41e0
movq -0x568(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x4120
movl $0x1, -0x534(%rbp)
jmp 0xc7c7
jmp 0xc758
movl -0x7c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7c(%rbp)
jmp 0xb652
leaq -0x535(%rbp), %rdi
movq %rdi, -0x678(%rbp)
callq 0x4300
movq -0x568(%rbp), %rdi
movq -0x678(%rbp), %rdx
leaq 0x11f37(%rip), %rsi     # 0x1e6c5
callq 0x4270
jmp 0xc795
leaq -0x535(%rbp), %rdi
callq 0x4200
movl $0x1, -0x534(%rbp)
jmp 0xc7c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x535(%rbp), %rdi
callq 0x4200
jmp 0xc7e0
leaq -0x78(%rbp), %rdi
callq 0x4130
movq -0x560(%rbp), %rax
addq $0x680, %rsp            # imm = 0x680
popq %rbp
retq
leaq -0x78(%rbp), %rdi
callq 0x4130
movq -0x50(%rbp), %rdi
callq 0x42f0
nopw %cs:(%rax,%rax)