// File: malcolmyeh[P]CC3K/floor.cc
// Function: Floor::movePlayer(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
std::string Floor::movePlayer(std::string direction) {
	
	Posn p = this->player->getPosition().getNew(direction);
	std::string dir[8] = {"ea", "we", "no", "so", "ne", "nw", "sw", "se"};
	std::string dir2[8] = {"East", "West", "North", "South", "Northeast", "Northwest", "Southwest", "Southeast"};
	std::string log;
	if (validMove(p)){
		std::string gold;
		bool g;
		if (displayGrid[p.y][p.x] == 'G') {
			gold = pickGold(p);
			if (gold == "invalid") {
				return gold;
			}
			g = true;
		}
		std::string barrier;
		bool b;
		if (displayGrid[p.y][p.x] == 'B') {
			if (this->suit->isGuarded()) {
				return "invalid";
			}
			b = true;
			this->setSpawned(true);
			this->player->setBarrier(true);
			barrier = "You have acquired a Barrier Suit. ";
		}
		
		if (p == this->stair->getPosition()){
			return "newfloor";
		}
		log += "You move ";
		for (int i = 0; i < 8; i++) {
			if (dir[i] == direction) {
				log += dir2[i] + ". ";
				break;
			}
		}
		if (g) {
			log += gold;
		}
		if (b){
			log += barrier;
		}
		std::string potion;
		potion = seePotion(p);
		if (potion != "invalid") {
			log += potion;
		}
		displayGrid[this->player->getPosition().y][this->player->getPosition().x] = defaultGrid[this->player->getPosition().y][this->player->getPosition().x];
		displayGrid[p.y][p.x] = this->player->getSymbol();
		this->player->move(p);
		return log;
	}
	return "invalid";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x650, %rsp            # imm = 0x650
movq %rdx, -0x400(%rbp)
movq %rdi, -0x418(%rbp)
movq %rdi, %rax
movq %rax, -0x410(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x408(%rbp)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
movq -0x400(%rbp), %rsi
movq %rax, -0x28(%rbp)
leaq -0x48(%rbp), %rdi
movq %rdi, -0x3f8(%rbp)
callq 0x40e0
movq -0x3f8(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0x5240
movq %rax, -0x3f0(%rbp)
jmp 0x8e0e
movq -0x3f0(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x4130
movb $0x1, -0x171(%rbp)
leaq -0x160(%rbp), %rax
movq %rax, -0x428(%rbp)
movq %rax, -0x168(%rbp)
leaq -0x169(%rbp), %rdi
movq %rdi, -0x420(%rbp)
callq 0x4300
movq -0x428(%rbp), %rdi
movq -0x420(%rbp), %rdx
leaq 0x1533d(%rip), %rsi     # 0x1e1a3
callq 0x4270
jmp 0x8e6d
leaq -0x140(%rbp), %rax
movq %rax, -0x438(%rbp)
movq %rax, -0x168(%rbp)
leaq -0x16a(%rbp), %rdi
movq %rdi, -0x430(%rbp)
callq 0x4300
movq -0x438(%rbp), %rdi
movq -0x430(%rbp), %rdx
leaq 0x152fc(%rip), %rsi     # 0x1e1a6
callq 0x4270
jmp 0x8eb1
leaq -0x120(%rbp), %rax
movq %rax, -0x448(%rbp)
movq %rax, -0x168(%rbp)
leaq -0x16b(%rbp), %rdi
movq %rdi, -0x440(%rbp)
callq 0x4300
movq -0x448(%rbp), %rdi
movq -0x440(%rbp), %rdx
leaq 0x152bb(%rip), %rsi     # 0x1e1a9
callq 0x4270
jmp 0x8ef5
leaq -0x100(%rbp), %rax
movq %rax, -0x458(%rbp)
movq %rax, -0x168(%rbp)
leaq -0x16c(%rbp), %rdi
movq %rdi, -0x450(%rbp)
callq 0x4300
movq -0x458(%rbp), %rdi
movq -0x450(%rbp), %rdx
leaq 0x1527a(%rip), %rsi     # 0x1e1ac
callq 0x4270
jmp 0x8f39
leaq -0xe0(%rbp), %rax
movq %rax, -0x468(%rbp)
movq %rax, -0x168(%rbp)
leaq -0x16d(%rbp), %rdi
movq %rdi, -0x460(%rbp)
callq 0x4300
movq -0x468(%rbp), %rdi
movq -0x460(%rbp), %rdx
leaq 0x15239(%rip), %rsi     # 0x1e1af
callq 0x4270
jmp 0x8f7d
leaq -0xc0(%rbp), %rax
movq %rax, -0x478(%rbp)
movq %rax, -0x168(%rbp)
leaq -0x16e(%rbp), %rdi
movq %rdi, -0x470(%rbp)
callq 0x4300
movq -0x478(%rbp), %rdi
movq -0x470(%rbp), %rdx
leaq 0x151f8(%rip), %rsi     # 0x1e1b2
callq 0x4270
jmp 0x8fc1
leaq -0xa0(%rbp), %rax
movq %rax, -0x488(%rbp)
movq %rax, -0x168(%rbp)
leaq -0x16f(%rbp), %rdi
movq %rdi, -0x480(%rbp)
callq 0x4300
movq -0x488(%rbp), %rdi
movq -0x480(%rbp), %rdx
leaq 0x151ba(%rip), %rsi     # 0x1e1b8
callq 0x4270
jmp 0x9005
leaq -0x80(%rbp), %rax
movq %rax, -0x498(%rbp)
movq %rax, -0x168(%rbp)
leaq -0x170(%rbp), %rdi
movq %rdi, -0x490(%rbp)
callq 0x4300
movq -0x498(%rbp), %rdi
movq -0x490(%rbp), %rdx
leaq 0x15176(%rip), %rsi     # 0x1e1b5
callq 0x4270
jmp 0x9046
movb $0x0, -0x171(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x4200
leaq -0x16f(%rbp), %rdi
callq 0x4200
leaq -0x16e(%rbp), %rdi
callq 0x4200
leaq -0x16d(%rbp), %rdi
callq 0x4200
leaq -0x16c(%rbp), %rdi
callq 0x4200
leaq -0x16b(%rbp), %rdi
callq 0x4200
leaq -0x16a(%rbp), %rdi
callq 0x4200
leaq -0x169(%rbp), %rdi
callq 0x4200
movb $0x1, -0x291(%rbp)
leaq -0x280(%rbp), %rax
movq %rax, -0x4a8(%rbp)
movq %rax, -0x288(%rbp)
leaq -0x289(%rbp), %rdi
movq %rdi, -0x4a0(%rbp)
callq 0x4300
movq -0x4a8(%rbp), %rdi
movq -0x4a0(%rbp), %rdx
leaq 0x1513d(%rip), %rsi     # 0x1e22e
callq 0x4270
jmp 0x90f8
leaq -0x260(%rbp), %rax
movq %rax, -0x4b8(%rbp)
movq %rax, -0x288(%rbp)
leaq -0x28a(%rbp), %rdi
movq %rdi, -0x4b0(%rbp)
callq 0x4300
movq -0x4b8(%rbp), %rdi
movq -0x4b0(%rbp), %rdx
leaq 0x150fe(%rip), %rsi     # 0x1e233
callq 0x4270
jmp 0x913c
leaq -0x240(%rbp), %rax
movq %rax, -0x4c8(%rbp)
movq %rax, -0x288(%rbp)
leaq -0x28b(%rbp), %rdi
movq %rdi, -0x4c0(%rbp)
callq 0x4300
movq -0x4c8(%rbp), %rdi
movq -0x4c0(%rbp), %rdx
leaq 0x150bf(%rip), %rsi     # 0x1e238
callq 0x4270
jmp 0x9180
leaq -0x220(%rbp), %rax
movq %rax, -0x4d8(%rbp)
movq %rax, -0x288(%rbp)
leaq -0x28c(%rbp), %rdi
movq %rdi, -0x4d0(%rbp)
callq 0x4300
movq -0x4d8(%rbp), %rdi
movq -0x4d0(%rbp), %rdx
leaq 0x15081(%rip), %rsi     # 0x1e23e
callq 0x4270
jmp 0x91c4
leaq -0x200(%rbp), %rax
movq %rax, -0x4e8(%rbp)
movq %rax, -0x288(%rbp)
leaq -0x28d(%rbp), %rdi
movq %rdi, -0x4e0(%rbp)
callq 0x4300
movq -0x4e8(%rbp), %rdi
movq -0x4e0(%rbp), %rdx
leaq 0x15043(%rip), %rsi     # 0x1e244
callq 0x4270
jmp 0x9208
leaq -0x1e0(%rbp), %rax
movq %rax, -0x4f8(%rbp)
movq %rax, -0x288(%rbp)
leaq -0x28e(%rbp), %rdi
movq %rdi, -0x4f0(%rbp)
callq 0x4300
movq -0x4f8(%rbp), %rdi
movq -0x4f0(%rbp), %rdx
leaq 0x15009(%rip), %rsi     # 0x1e24e
callq 0x4270
jmp 0x924c
leaq -0x1c0(%rbp), %rax
movq %rax, -0x508(%rbp)
movq %rax, -0x288(%rbp)
leaq -0x28f(%rbp), %rdi
movq %rdi, -0x500(%rbp)
callq 0x4300
movq -0x508(%rbp), %rdi
movq -0x500(%rbp), %rdx
leaq 0x14fcf(%rip), %rsi     # 0x1e258
callq 0x4270
jmp 0x9290
leaq -0x1a0(%rbp), %rax
movq %rax, -0x518(%rbp)
movq %rax, -0x288(%rbp)
leaq -0x290(%rbp), %rdi
movq %rdi, -0x510(%rbp)
callq 0x4300
movq -0x518(%rbp), %rdi
movq -0x510(%rbp), %rdx
leaq 0x14f95(%rip), %rsi     # 0x1e262
callq 0x4270
jmp 0x92d4
movb $0x0, -0x291(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x4200
leaq -0x28f(%rbp), %rdi
callq 0x4200
leaq -0x28e(%rbp), %rdi
callq 0x4200
leaq -0x28d(%rbp), %rdi
callq 0x4200
leaq -0x28c(%rbp), %rdi
callq 0x4200
leaq -0x28b(%rbp), %rdi
callq 0x4200
leaq -0x28a(%rbp), %rdi
callq 0x4200
leaq -0x289(%rbp), %rdi
callq 0x4200
leaq -0x2b8(%rbp), %rdi
callq 0x4280
movq -0x408(%rbp), %rdi
movq -0x20(%rbp), %rax
movq %rax, -0x2c0(%rbp)
movq -0x2c0(%rbp), %rsi
callq 0x9e80
movb %al, -0x519(%rbp)
jmp 0x936d
movb -0x519(%rbp), %al
testb $0x1, %al
jne 0x937c
jmp 0x9caa
leaq -0x2e0(%rbp), %rdi
callq 0x4280
movq -0x408(%rbp), %rax
addq $0x820, %rax            # imm = 0x820
movslq -0x1c(%rbp), %rcx
imulq $0x4f, %rcx, %rcx
addq %rcx, %rax
movslq -0x20(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x47, %eax
jne 0x96fc
movq -0x408(%rbp), %rsi
movq -0x20(%rbp), %rax
movq %rax, -0x310(%rbp)
movq -0x310(%rbp), %rdx
leaq -0x308(%rbp), %rdi
callq 0x9f10
jmp 0x93d8
leaq -0x2e0(%rbp), %rdi
movq %rdi, -0x528(%rbp)
leaq -0x308(%rbp), %rsi
movq %rsi, -0x530(%rbp)
callq 0x4220
movq -0x530(%rbp), %rdi
callq 0x4130
movq -0x528(%rbp), %rdi
leaq 0x14e59(%rip), %rsi     # 0x1e26c
callq 0x5210
movb %al, -0x51a(%rbp)
jmp 0x9420
movb -0x51a(%rbp), %al
testb $0x1, %al
jne 0x942f
jmp 0x96f5
movq -0x418(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x4120
movl $0x1, -0x314(%rbp)
jmp 0x9c8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x4130
jmp 0x9e6d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9536
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x952a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x951e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9512
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9506
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x94fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x94ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x4200
leaq -0x16f(%rbp), %rdi
callq 0x4200
leaq -0x16e(%rbp), %rdi
callq 0x4200
leaq -0x16d(%rbp), %rdi
callq 0x4200
leaq -0x16c(%rbp), %rdi
callq 0x4200
leaq -0x16b(%rbp), %rdi
callq 0x4200
leaq -0x16a(%rbp), %rdi
callq 0x4200
leaq -0x169(%rbp), %rdi
callq 0x4200
testb $0x1, -0x171(%rbp)
jne 0x954d
jmp 0x959a
movq -0x168(%rbp), %rax
leaq -0x160(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x538(%rbp)
je 0x9598
movq -0x538(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x540(%rbp)
callq 0x4130
movq -0x540(%rbp), %rax
leaq -0x160(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x538(%rbp)
jne 0x9567
jmp 0x959a
jmp 0x9e6d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x966a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x965e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9652
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9646
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x963a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x962e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9622
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x4200
leaq -0x28f(%rbp), %rdi
callq 0x4200
leaq -0x28e(%rbp), %rdi
callq 0x4200
leaq -0x28d(%rbp), %rdi
callq 0x4200
leaq -0x28c(%rbp), %rdi
callq 0x4200
leaq -0x28b(%rbp), %rdi
callq 0x4200
leaq -0x28a(%rbp), %rdi
callq 0x4200
leaq -0x289(%rbp), %rdi
callq 0x4200
testb $0x1, -0x291(%rbp)
jne 0x9681
jmp 0x96ce
movq -0x288(%rbp), %rax
leaq -0x280(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x548(%rbp)
je 0x96cc
movq -0x548(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x550(%rbp)
callq 0x4130
movq -0x550(%rbp), %rax
leaq -0x280(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x548(%rbp)
jne 0x969b
jmp 0x96ce
jmp 0x9e1f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9d34
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9c99
movb $0x1, -0x2e1(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x4280
movq -0x408(%rbp), %rax
addq $0x820, %rax            # imm = 0x820
movslq -0x1c(%rbp), %rcx
imulq $0x4f, %rcx, %rcx
addq %rcx, %rax
movslq -0x20(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x42, %eax
jne 0x981b
movq -0x408(%rbp), %rax
movq 0xfe8(%rax), %rdi
callq 0x18410
movb %al, -0x551(%rbp)
jmp 0x974c
movb -0x551(%rbp), %al
testb $0x1, %al
jne 0x9758
jmp 0x97d0
leaq -0x33a(%rbp), %rdi
movq %rdi, -0x560(%rbp)
callq 0x4300
movq -0x418(%rbp), %rdi
movq -0x560(%rbp), %rdx
leaq 0x14aec(%rip), %rsi     # 0x1e26c
callq 0x4270
jmp 0x9787
leaq -0x33a(%rbp), %rdi
callq 0x4200
movl $0x1, -0x314(%rbp)
jmp 0x9c6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9c7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x33a(%rbp), %rdi
callq 0x4200
jmp 0x9c7d
movq -0x408(%rbp), %rdi
movb $0x1, -0x339(%rbp)
movl $0x1, %esi
callq 0xa1c0
jmp 0x97ea
movq -0x408(%rbp), %rax
movq 0xfe0(%rax), %rdi
movl $0x1, %esi
callq 0x11d10
jmp 0x9804
leaq 0x14a69(%rip), %rsi     # 0x1e274
leaq -0x338(%rbp), %rdi
callq 0x4260
jmp 0x9819
jmp 0x981b
movq -0x408(%rbp), %rax
movq 0xfd8(%rax), %rdi
callq 0x5500
movq %rax, -0x568(%rbp)
jmp 0x9837
movq -0x568(%rbp), %rax
movq %rax, -0x344(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x344(%rbp), %rsi
callq 0x53f0
movb %al, -0x569(%rbp)
jmp 0x985d
movb -0x569(%rbp), %al
testb $0x1, %al
jne 0x9869
jmp 0x98d0
leaq -0x345(%rbp), %rdi
movq %rdi, -0x578(%rbp)
callq 0x4300
movq -0x418(%rbp), %rdi
movq -0x578(%rbp), %rdx
leaq 0x14a06(%rip), %rsi     # 0x1e297
callq 0x4270
jmp 0x9898
leaq -0x345(%rbp), %rdi
callq 0x4200
movl $0x1, -0x314(%rbp)
jmp 0x9c6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x345(%rbp), %rdi
callq 0x4200
jmp 0x9c7d
leaq 0x149c9(%rip), %rsi     # 0x1e2a0
leaq -0x2b8(%rbp), %rdi
callq 0x41a0
jmp 0x98e5
movl $0x0, -0x34c(%rbp)
cmpl $0x8, -0x34c(%rbp)
jge 0x99a1
movq -0x400(%rbp), %rsi
movslq -0x34c(%rbp), %rax
leaq -0x160(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
callq 0xda30
testb $0x1, %al
jne 0x9923
jmp 0x998b
movslq -0x34c(%rbp), %rax
shlq $0x5, %rax
leaq -0x280(%rbp,%rax), %rsi
leaq 0x151d1(%rip), %rdx     # 0x1eb0e
leaq -0x370(%rbp), %rdi
callq 0xdac0
jmp 0x994b
leaq -0x2b8(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0x4240
jmp 0x9960
leaq -0x370(%rbp), %rdi
callq 0x4130
jmp 0x99a1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x370(%rbp), %rdi
callq 0x4130
jmp 0x9c7d
jmp 0x998d
movl -0x34c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34c(%rbp)
jmp 0x98ef
testb $0x1, -0x2e1(%rbp)
je 0x99c1
leaq -0x2b8(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0x4240
jmp 0x99bf
jmp 0x99c1
testb $0x1, -0x339(%rbp)
je 0x99e1
leaq -0x2b8(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x4240
jmp 0x99df
jmp 0x99e1
leaq -0x390(%rbp), %rdi
callq 0x4280
movq -0x408(%rbp), %rsi
movq -0x20(%rbp), %rax
movq %rax, -0x3b8(%rbp)
movq -0x3b8(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0xa1e0
jmp 0x9a14
leaq -0x390(%rbp), %rdi
movq %rdi, -0x588(%rbp)
leaq -0x3b0(%rbp), %rsi
movq %rsi, -0x590(%rbp)
callq 0x4220
movq -0x590(%rbp), %rdi
callq 0x4130
movq -0x588(%rbp), %rdi
leaq 0x1481d(%rip), %rsi     # 0x1e26c
callq 0x51d0
movb %al, -0x579(%rbp)
jmp 0x9a5c
movb -0x579(%rbp), %al
testb $0x1, %al
jne 0x9a68
jmp 0x9a9c
leaq -0x2b8(%rbp), %rdi
leaq -0x390(%rbp), %rsi
callq 0x4240
jmp 0x9a7d
jmp 0x9a9c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x390(%rbp), %rdi
callq 0x4130
jmp 0x9c7d
movq -0x408(%rbp), %rax
movq %rax, %rcx
addq $0x6, %rcx
movq %rcx, -0x5a0(%rbp)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
movq %rax, -0x598(%rbp)
jmp 0x9aca
movq -0x408(%rbp), %rax
movq -0x5a0(%rbp), %rcx
movq -0x598(%rbp), %rdx
movq %rdx, -0x3c0(%rbp)
movslq -0x3bc(%rbp), %rdx
imulq $0x4f, %rdx, %rdx
addq %rdx, %rcx
movq %rcx, -0x5b0(%rbp)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
movq %rax, -0x5a8(%rbp)
jmp 0x9b14
movq -0x408(%rbp), %rax
movq -0x5b0(%rbp), %rcx
movq -0x5a8(%rbp), %rdx
movq %rdx, -0x3c8(%rbp)
movslq -0x3c8(%rbp), %rdx
movb (%rcx,%rdx), %cl
movb %cl, -0x5c1(%rbp)
movq %rax, %rcx
addq $0x820, %rcx            # imm = 0x820
movq %rcx, -0x5c0(%rbp)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
movq %rax, -0x5b8(%rbp)
jmp 0x9b6a
movq -0x408(%rbp), %rax
movq -0x5c0(%rbp), %rcx
movq -0x5b8(%rbp), %rdx
movq %rdx, -0x3d0(%rbp)
movslq -0x3cc(%rbp), %rdx
imulq $0x4f, %rdx, %rdx
addq %rdx, %rcx
movq %rcx, -0x5d8(%rbp)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
movq %rax, -0x5d0(%rbp)
jmp 0x9bb4
movq -0x408(%rbp), %rax
movq -0x5d8(%rbp), %rcx
movb -0x5c1(%rbp), %sil
movq -0x5d0(%rbp), %rdx
movq %rdx, -0x3d8(%rbp)
movslq -0x3d8(%rbp), %rdx
movb %sil, (%rcx,%rdx)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x30(%rax), %rax
callq *%rax
movb %al, -0x5d9(%rbp)
jmp 0x9bfa
movq -0x408(%rbp), %rax
movb -0x5d9(%rbp), %sil
movslq -0x1c(%rbp), %rcx
imulq $0x4f, %rcx, %rcx
movq %rax, %rdx
addq %rcx, %rdx
movslq -0x20(%rbp), %rcx
movb %sil, 0x820(%rcx,%rdx)
movq 0xfe0(%rax), %rdi
movq -0x20(%rbp), %rax
movq %rax, -0x3e0(%rbp)
movq -0x3e0(%rbp), %rsi
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
jmp 0x9c46
movq -0x418(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x4120
movl $0x1, -0x314(%rbp)
leaq -0x390(%rbp), %rdi
callq 0x4130
leaq -0x338(%rbp), %rdi
callq 0x4130
jmp 0x9c8b
leaq -0x338(%rbp), %rdi
callq 0x4130
jmp 0x9c99
leaq -0x2e0(%rbp), %rdi
callq 0x4130
jmp 0x9d0b
leaq -0x2e0(%rbp), %rdi
callq 0x4130
jmp 0x9d34
leaq -0x3e1(%rbp), %rdi
movq %rdi, -0x5e8(%rbp)
callq 0x4300
movq -0x418(%rbp), %rdi
movq -0x5e8(%rbp), %rdx
leaq 0x1459a(%rip), %rsi     # 0x1e26c
callq 0x4270
jmp 0x9cd9
leaq -0x3e1(%rbp), %rdi
callq 0x4200
movl $0x1, -0x314(%rbp)
jmp 0x9d0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3e1(%rbp), %rdi
callq 0x4200
jmp 0x9d34
leaq -0x2b8(%rbp), %rdi
callq 0x4130
leaq -0x280(%rbp), %rax
movq %rax, -0x5f8(%rbp)
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x5f0(%rbp)
jmp 0x9d5d
leaq -0x2b8(%rbp), %rdi
callq 0x4130
leaq -0x280(%rbp), %rax
movq %rax, -0x608(%rbp)
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x600(%rbp)
jmp 0x9dab
movq -0x5f0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x610(%rbp)
callq 0x4130
movq -0x5f8(%rbp), %rcx
movq -0x610(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x5f0(%rbp)
jne 0x9d5d
leaq -0x160(%rbp), %rax
movq %rax, -0x620(%rbp)
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x618(%rbp)
jmp 0x9dde
movq -0x600(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x628(%rbp)
callq 0x4130
movq -0x608(%rbp), %rcx
movq -0x628(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x600(%rbp)
jne 0x9dab
jmp 0x9e1f
movq -0x618(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x630(%rbp)
callq 0x4130
movq -0x620(%rbp), %rcx
movq -0x630(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x618(%rbp)
jne 0x9dde
movq -0x410(%rbp), %rax
addq $0x650, %rsp            # imm = 0x650
popq %rbp
retq
leaq -0x160(%rbp), %rax
movq %rax, -0x640(%rbp)
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x638(%rbp)
movq -0x638(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x648(%rbp)
callq 0x4130
movq -0x640(%rbp), %rcx
movq -0x648(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x638(%rbp)
jne 0x9e3a
jmp 0x9e6d
movq -0x50(%rbp), %rdi
callq 0x42f0
nopw %cs:(%rax,%rax)