LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/posn.cc
// Function: Posn::getNew(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
Posn Posn::getNew(std::string dir) {
	Posn p;
	if (dir == "ea") {
		p.x = this->x + 1;
		p.y = this->y;
	} else if (dir == "we") {
		p.x = this->x - 1;
		p.y = this->y;
	} else if (dir == "no") {
		p.x = this->x;
		p.y = this->y-1;
	} else if (dir == "so") {
		p.x = this->x;
		p.y = this->y+1;
	} else if (dir == "ne") {
		p.x = this->x + 1;
		p.y = this->y - 1;
	} else if (dir == "nw") {
		p.x = this->x - 1;
		p.y = this->y - 1;
	} else if (dir == "se") {
		p.x = this->x + 1;
		p.y = this->y + 1;
	} else if (dir == "sw") {
		p.x = this->x - 1;
		p.y = this->y + 1;
	}
	return p;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x18101(%rip), %rsi     # 0x1d1cd
movq %r14, %rdi
callq 0x4070
testl %eax, %eax
je 0x516e
leaq 0x180ed(%rip), %rsi     # 0x1d1d0
movq %r14, %rdi
callq 0x4070
testl %eax, %eax
je 0x5177
leaq 0x180d9(%rip), %rsi     # 0x1d1d3
movq %r14, %rdi
callq 0x4070
testl %eax, %eax
je 0x5180
leaq 0x180c9(%rip), %rsi     # 0x1d1d6
movq %r14, %rdi
callq 0x4070
testl %eax, %eax
je 0x5187
leaq 0x180b9(%rip), %rsi     # 0x1d1d9
movq %r14, %rdi
callq 0x4070
testl %eax, %eax
je 0x5190
leaq 0x180a9(%rip), %rsi     # 0x1d1dc
movq %r14, %rdi
callq 0x4070
testl %eax, %eax
je 0x5199
leaq 0x18099(%rip), %rsi     # 0x1d1df
movq %r14, %rdi
callq 0x4070
testl %eax, %eax
je 0x51b0
leaq 0x18089(%rip), %rsi     # 0x1d1e2
movq %r14, %rdi
callq 0x4070
testl %eax, %eax
jne 0x51a2
movl (%rbx), %ecx
movl 0x4(%rbx), %edx
decl %ecx
jmp 0x518c
movl (%rbx), %ecx
movl 0x4(%rbx), %edx
incl %ecx
jmp 0x51a2
movl (%rbx), %ecx
movl 0x4(%rbx), %edx
decl %ecx
jmp 0x51a2
movl (%rbx), %ecx
movl 0x4(%rbx), %edx
jmp 0x51a0
movl (%rbx), %ecx
movl 0x4(%rbx), %edx
incl %edx
jmp 0x51a2
movl (%rbx), %ecx
movl 0x4(%rbx), %edx
incl %ecx
jmp 0x51a0
movl (%rbx), %ecx
movl 0x4(%rbx), %edx
decl %ecx
decl %edx
shlq $0x20, %rdx
movl %ecx, %eax
orq %rdx, %rax
popq %rbx
popq %r14
popq %rbp
retq
movl (%rbx), %ecx
movl 0x4(%rbx), %edx
incl %ecx
jmp 0x518c
nop
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/chamber.cc
// Function: Chamber::checkRange(Posn)
bool Chamber::checkRange(Posn p) {
	int x = p.x;
	int y = p.y;
	if (num == 1 || num == 2 || num == 4) {
		return (x >= col && x <= maxCol && y >= row && y <= maxRow);
	} else if (num == 3) {
		if (x >= col && y >= row && x <= 60 && y <= 6) {
			return true;
		} else if (x == 61 && y >= 3 && y <= 12) {
			return true;
		} else if (x >= 62 && y >= 5 && x <= 69 && y <= 12) {
			return true;
		} else if (x >= 70 && y >= 6 && x <= 72 && y <= 12) {
			return true;
		} else if (x >= 73 && y >= 7 && x <= 75 && y <= 12) {
			return true;
		}
	} else if (num == 5) {
		if (x >= 37 && y >= 19 && x <= 64 && y <= 21) {
			return true;
		} else if (x >= 65 && y >= 16 && x <= 75 && y <= 21) {
			return true;
		}
	}
	return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl (%rdi), %eax
decl %eax
cmpl $0x4, %eax
ja 0x52fe
movq %rsi, %rcx
shrq $0x20, %rcx
leaq 0x17f4f(%rip), %rdx     # 0x1d1e8
movslq (%rdx,%rax,4), %rax
addq %rdx, %rax
jmpq *%rax
xorl %eax, %eax
cmpl %esi, 0x10(%rdi)
jg 0x536d
cmpl %esi, 0x8(%rdi)
jl 0x536d
cmpl %ecx, 0xc(%rdi)
jg 0x536d
cmpl %ecx, 0x4(%rdi)
setge %al
jmp 0x536d
leal -0x25(%rsi), %eax
cmpl $0x1c, %eax
setb %dl
leal -0x13(%rcx), %eax
cmpl $0x3, %eax
setb %dil
movb $0x1, %al
testb %dil, %dl
jne 0x536d
leal -0x41(%rsi), %edx
cmpl $0xb, %edx
setb %dl
addl $-0x10, %ecx
cmpl $0x6, %ecx
setb %cl
testb %cl, %dl
jne 0x536d
xorl %eax, %eax
jmp 0x536d
cmpl %esi, 0x10(%rdi)
jle 0x535c
cmpl $0x3d, %esi
sete %dl
leal -0x3(%rcx), %eax
cmpl $0xa, %eax
setb %dil
movb $0x1, %al
testb %dil, %dl
jne 0x536d
leal -0x3e(%rsi), %edx
cmpl $0x8, %edx
setb %dl
leal -0x5(%rcx), %edi
cmpl $0x8, %edi
setb %dil
testb %dil, %dl
jne 0x536d
leal -0x46(%rsi), %edx
cmpl $0x3, %edx
setb %dl
leal -0x6(%rcx), %edi
cmpl $0x7, %edi
setb %dil
testb %dil, %dl
jne 0x536d
leal -0x49(%rsi), %edx
cmpl $0x3, %edx
setb %dl
addl $-0x7, %ecx
jmp 0x52f4
cmpl $0x6, %ecx
jg 0x5307
cmpl %ecx, 0xc(%rdi)
jg 0x5307
movb $0x1, %al
cmpl $0x3d, %esi
jge 0x5307
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/chamber.cc
// Function: Chamber::getPosition()
Posn Chamber::getPosition() {
	Posn p;
	do {

		int r = rand() % maxRow;
		int c = rand() % maxCol;
		p.x = c;
		p.y = r;
	} while (!checkRange(p));

	return p;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x4060
cltd
idivl 0x4(%rbx)
movl %edx, %r15d
callq 0x4060
cltd
idivl 0x8(%rbx)
movl %edx, %r14d
shlq $0x20, %r15
orq %r15, %r14
movq %rbx, %rdi
movq %r14, %rsi
callq 0x527e
testb %al, %al
je 0x537d
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/display.cc
// Function: Display::readFloor(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void Display::readFloor(std::string file) {
	std::ifstream in (file);
	std::string str;
	for (int i = 0; i < 25; i++) {
		getline(in, str);
		for (int j = 0; j < 79; j++) {
			this->displayGrid[i][j] = str[j];
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x228, %rsp            # imm = 0x228
movq %rdi, %rbx
leaq -0x250(%rbp), %r14
movq %r14, %rdi
movl $0x8, %edx
callq 0x4220
leaq -0x38(%rbp), %r12
movq %r12, -0x10(%r12)
movq $0x0, -0x8(%r12)
movb $0x0, (%r12)
xorl %r13d, %r13d
leaq -0x48(%rbp), %r15
movq -0x250(%rbp), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x4150
movsbl %al, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x4270
movq -0x48(%rbp), %rdi
xorl %eax, %eax
movb (%rdi,%rax), %cl
movb %cl, (%rbx,%rax)
incq %rax
cmpq $0x4f, %rax
jne 0x5431
incq %r13
addq $0x4f, %rbx
cmpq $0x19, %r13
jne 0x5405
cmpq %r12, %rdi
je 0x545e
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0x250(%rbp), %rdi
callq 0x4050
addq $0x228, %rsp            # imm = 0x228
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r12, %rdi
je 0x5494
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0x250(%rbp), %rdi
callq 0x4050
movq %rbx, %rdi
callq 0x4250
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/floor.cc
// Function: Floor::~Floor()
Floor::~Floor() {
	for (int i = 0; i < enemies.size(); ++i) {
		//delete enemies.at(i);
		Enemy * temp = enemies.at(i);
		enemies.erase(enemies.begin() + i);
		delete temp;
		--i;
	}
	for (int i = 0; i < golds.size(); ++i) { 
		//delete golds.at(i); 
		Gold * temp = golds.at(i);
		golds.erase(golds.begin() + i);
		delete temp;
		--i;
	}
	for (int i = 0; i < potions.size(); ++i) {
		//delete potions.at(i);
		Potion * temp = potions.at(i);
		potions.erase(potions.begin() + i);
		delete temp;
		--i;
	}
	for (int i = 0; i < chambers.size(); ++i) {
		//delete chambers.at(i);
		Chamber * temp = chambers.at(i);
		chambers.erase(chambers.begin() + i);
		delete temp;
		--i;
	}
	delete this->player;
	delete this->stair;
	delete this->suit;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq 0x7c0(%rdi), %rdi
movq 0x7c8(%rbx), %rdx
cmpq %rdi, %rdx
je 0x5917
movq (%rdi), %r14
leaq 0x8(%rdi), %rsi
cmpq %rdx, %rsi
je 0x589e
subq %rsi, %rdx
callq 0x4230
movq 0x7c8(%rbx), %rdx
addq $-0x8, %rdx
movq %rdx, 0x7c8(%rbx)
testq %r14, %r14
je 0x58be
movq (%r14), %rax
movq %r14, %rdi
callq *0x60(%rax)
movq 0x7c8(%rbx), %rdx
movq 0x7c0(%rbx), %rdi
jmp 0x587a
movq (%rdi), %r14
leaq 0x8(%rdi), %rsi
cmpq %rdx, %rsi
je 0x58e2
subq %rsi, %rdx
callq 0x4230
movq 0x7e0(%rbx), %rdx
addq $-0x8, %rdx
movq %rdx, 0x7e0(%rbx)
testq %r14, %r14
je 0x590a
movq 0x18(%r14), %rdi
leaq 0x28(%r14), %rax
cmpq %rax, %rdi
je 0x590a
movq (%rax), %rsi
incq %rsi
callq 0x4170
movl $0x38, %esi
movq %r14, %rdi
callq 0x4170
movq 0x7d8(%rbx), %rdi
movq 0x7e0(%rbx), %rdx
cmpq %rdi, %rdx
jne 0x58c7
jmp 0x597c
movq (%rdi), %r14
leaq 0x8(%rdi), %rsi
cmpq %rdx, %rsi
je 0x5947
subq %rsi, %rdx
callq 0x4230
movq 0x7f8(%rbx), %rdx
addq $-0x8, %rdx
movq %rdx, 0x7f8(%rbx)
testq %r14, %r14
je 0x596f
movq 0x10(%r14), %rdi
leaq 0x20(%r14), %rax
cmpq %rax, %rdi
je 0x596f
movq (%rax), %rsi
incq %rsi
callq 0x4170
movl $0x30, %esi
movq %r14, %rdi
callq 0x4170
movq 0x7f0(%rbx), %rdi
movq 0x7f8(%rbx), %rdx
cmpq %rdi, %rdx
jne 0x592c
jmp 0x59c4
movq (%rdi), %r14
leaq 0x8(%rdi), %rsi
cmpq %rdx, %rsi
je 0x59ac
subq %rsi, %rdx
callq 0x4230
movq 0x810(%rbx), %rdx
addq $-0x8, %rdx
movq %rdx, 0x810(%rbx)
movl $0x14, %esi
movq %r14, %rdi
callq 0x4170
movq 0x808(%rbx), %rdi
movq 0x810(%rbx), %rdx
cmpq %rdi, %rdx
jne 0x5991
movq 0xfe0(%rbx), %rdi
testq %rdi, %rdi
je 0x59e9
movq (%rdi), %rax
callq *0x60(%rax)
movq 0xfd8(%rbx), %rdi
movl $0xc, %esi
callq 0x4170
movq 0xfe8(%rbx), %rdi
movl $0x10, %esi
callq 0x4170
movq 0x808(%rbx), %rdi
testq %rdi, %rdi
je 0x5a26
movq 0x818(%rbx), %rsi
subq %rdi, %rsi
callq 0x4170
movq 0x7f0(%rbx), %rdi
testq %rdi, %rdi
je 0x5a41
movq 0x800(%rbx), %rsi
subq %rdi, %rsi
callq 0x4170
movq 0x7d8(%rbx), %rdi
testq %rdi, %rdi
je 0x5a5c
movq 0x7e8(%rbx), %rsi
subq %rdi, %rsi
callq 0x4170
movq 0x7c0(%rbx), %rdi
testq %rdi, %rdi
je 0x5a7b
movq 0x7d0(%rbx), %rsi
subq %rdi, %rsi
popq %rbx
popq %r14
popq %rbp
jmp 0x4170
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/floor.cc
// Function: Floor::generatePosition(int&, Posn&)
void Floor::generatePosition(int &id, Posn &pos) {
	id = rand() % 5 + 1;

	Chamber *c = chambers.at(id - 1);
	Posn p;
	do {
		p = c->getPosition();
	} while (!this->validTile(p));
	pos = p;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
callq 0x4060
cltq
imulq $0x66666667, %rax, %rcx # imm = 0x66666667
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x21, %rcx
addl %edx, %ecx
leal (%rcx,%rcx,4), %ecx
movl %eax, %edx
subl %ecx, %edx
negl %ecx
addl %ecx, %eax
incl %eax
movl %eax, (%r15)
movslq %edx, %rsi
movq 0x808(%r14), %rax
movq 0x810(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %rsi, %rdx
jbe 0x5b30
movq (%rax,%rsi,8), %r15
leaq -0x30(%rbp), %r12
leaq -0x38(%rbp), %r13
movq %r15, %rdi
callq 0x5370
movq %rax, -0x38(%rbp)
movq %r12, %rdi
movq %r13, %rsi
callq 0x51e6
movq -0x30(%rbp), %rsi
movq %r14, %rdi
callq 0x5b3e
testb %al, %al
je 0x5aee
leaq -0x30(%rbp), %rsi
movq %rbx, %rdi
callq 0x51e6
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x17c98(%rip), %rdi     # 0x1d7cf
xorl %eax, %eax
callq 0x41e0
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/floor.cc
// Function: Floor::initFloor(char)
void Floor::initFloor(char type) {
	int id;
	int dragons = 0;
	srand(time(NULL));
	generateChamber();
	generatePlayer(type, id);
	generateStair(id);
	generateItems(dragons);
	generateEnemies(dragons);
	assignCompass();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x10, %rsp
movl %esi, %r15d
movq %rdi, %rbx
leaq -0x24(%rbp), %r14
movl $0x0, (%r14)
xorl %edi, %edi
callq 0x4130
movl %eax, %edi
callq 0x4140
movq %rbx, %rdi
callq 0x5f00
leaq -0x28(%rbp), %r12
movq %rbx, %rdi
movl %r15d, %esi
movq %r12, %rdx
callq 0x5f96
movl (%r12), %esi
movq %rbx, %rdi
callq 0x6138
movq %rbx, %rdi
movq %r14, %rsi
callq 0x622e
movl (%r14), %esi
movq %rbx, %rdi
callq 0x694e
movq %rbx, %rdi
addq $0x10, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x6af4
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/floor.cc
// Function: Floor::generatePlayer(char, int&)
void Floor::generatePlayer(char type, int &id) {


	id = rand() % 5 + 1;

	Chamber *c = chambers.at(id - 1);
	Posn p;
	do {
		p = c->getPosition();
	} while (!(this->displayGrid[p.y][p.x] == '.'));


	if (type == 'h') {
	 	this->player = new Human(140, 0, p);
	} else if (type == 'o') {
		this->player = new Orc(1800, 0, p);
	} else if (type == 'e') {
		this->player = new Elf(1400, 0, p);
	} else if (type == 'd') {
		this->player = new Dwarf(1000, 0, p);
	}
	displayGrid[p.y][p.x] = '@';
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdx, %r15
movl %esi, -0x34(%rbp)
movq %rdi, %rbx
callq 0x4060
cltq
imulq $0x66666667, %rax, %rcx # imm = 0x66666667
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x21, %rcx
addl %edx, %ecx
leal (%rcx,%rcx,4), %ecx
movl %eax, %edx
subl %ecx, %edx
negl %ecx
addl %ecx, %eax
incl %eax
movl %eax, (%r15)
movslq %edx, %rsi
movq 0x808(%rbx), %rax
movq 0x810(%rbx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %rsi, %rdx
jbe 0x610c
movq (%rax,%rsi,8), %r15
leaq 0x820(%rbx), %r14
leaq -0x30(%rbp), %r12
leaq -0x40(%rbp), %r13
movq %r15, %rdi
callq 0x5370
movq %rax, -0x40(%rbp)
movq %r12, %rdi
movq %r13, %rsi
callq 0x51e6
movslq -0x2c(%rbp), %rax
movslq -0x30(%rbp), %rcx
imulq $0x4f, %rax, %rax
addq %r14, %rax
cmpb $0x2e, (%rcx,%rax)
jne 0x600f
movsbl -0x34(%rbp), %eax
cmpl $0x67, %eax
jg 0x6074
cmpl $0x64, %eax
je 0x60a0
cmpl $0x65, %eax
jne 0x60e9
movl $0x50, %edi
callq 0x4160
movq %rax, %r15
movq -0x30(%rbp), %rcx
movq %rax, %rdi
movl $0x578, %esi            # imm = 0x578
xorl %edx, %edx
callq 0xe4b0
jmp 0x60e2
cmpl $0x6f, %eax
je 0x60c2
cmpl $0x68, %eax
jne 0x60e9
movl $0x50, %edi
callq 0x4160
movq %rax, %r15
movq -0x30(%rbp), %rcx
movq %rax, %rdi
movl $0x8c, %esi
xorl %edx, %edx
callq 0xc04c
jmp 0x60e2
movl $0x50, %edi
callq 0x4160
movq %rax, %r15
movq -0x30(%rbp), %rcx
movq %rax, %rdi
movl $0x3e8, %esi            # imm = 0x3E8
xorl %edx, %edx
callq 0xf6fc
jmp 0x60e2
movl $0x50, %edi
callq 0x4160
movq %rax, %r15
movq -0x30(%rbp), %rcx
movq %rax, %rdi
movl $0x708, %esi            # imm = 0x708
xorl %edx, %edx
callq 0xc220
movq %r15, 0xfe0(%rbx)
movslq -0x2c(%rbp), %rax
movslq -0x30(%rbp), %rcx
imulq $0x4f, %rax, %rax
addq %rax, %r14
movb $0x40, (%rcx,%r14)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x176bc(%rip), %rdi     # 0x1d7cf
xorl %eax, %eax
callq 0x41e0
jmp 0x6120
jmp 0x6120
jmp 0x6120
movq %rax, %rbx
movl $0x50, %esi
movq %r15, %rdi
callq 0x4170
movq %rbx, %rdi
callq 0x4250
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/floor.cc
// Function: Floor::generateStair(int)
void Floor::generateStair(int id) {
	int id2;
	Posn p;
	do {
		id2 = rand() % 5 + 1;
	} while (id == id2);
	Chamber *c = chambers.at(id2 - 1);
	do {
		p = c->getPosition();
	} while (!(this->displayGrid[p.y][p.x] == '.'));
	 
	this->stair = new Stair(p);
	//this->displayGrid[p.y][p.x] == '/';
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movl %esi, %r14d
movq %rdi, %rbx
callq 0x4060
movslq %eax, %rcx
imulq $0x66666667, %rcx, %rcx # imm = 0x66666667
movq %rcx, %rdx
shrq $0x3f, %rdx
sarq $0x21, %rcx
addl %edx, %ecx
leal (%rcx,%rcx,4), %ecx
movl %ecx, %edx
negl %edx
addl %eax, %edx
incl %edx
cmpl %r14d, %edx
je 0x614f
subl %ecx, %eax
movslq %eax, %rsi
movq 0x808(%rbx), %rax
movq 0x810(%rbx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %rsi, %rdx
jbe 0x6208
movq (%rax,%rsi,8), %r14
leaq 0x820(%rbx), %r13
leaq -0x30(%rbp), %r15
leaq -0x38(%rbp), %r12
movq %r14, %rdi
callq 0x5370
movq %rax, -0x38(%rbp)
movq %r15, %rdi
movq %r12, %rsi
callq 0x51e6
movslq -0x2c(%rbp), %rax
movslq -0x30(%rbp), %rcx
imulq $0x4f, %rax, %rax
addq %r13, %rax
cmpb $0x2e, (%rcx,%rax)
jne 0x61ad
movl $0xc, %edi
callq 0x4160
movq %rax, %r14
movq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x51fc
movq %r14, 0xfd8(%rbx)
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x175c0(%rip), %rdi     # 0x1d7cf
xorl %eax, %eax
callq 0x41e0
movq %rax, %rbx
movl $0xc, %esi
movq %r14, %rdi
callq 0x4170
movq %rbx, %rdi
callq 0x4250
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/floor.cc
// Function: Floor::generateEnemies(int)
void Floor::generateEnemies(int dragons) {
	for (int i = 0; i < 20 - dragons; i++) {
		int num = rand() % 18 + 1;
		int id;
		Posn pos;
		generatePosition(id, pos);
		Enemy *e;
		if (num <= 4) {
			e = new Werewolf(pos, id);
			this->enemies.push_back(e);
		} else if (num > 4 && num <= 7) {
			e = new Vampire(pos, id);
			this->enemies.push_back(e);
		} else if (num > 7 && num <= 12) {
			e = new Goblin(pos, id);
			this->enemies.push_back(e);
		} else if (num > 12 && num <= 14) {
			e = new Troll(pos, id);
			this->enemies.push_back(e);
		} else if (num > 14 && num <= 16) {
			e = new Phoenix(pos, id);
			this->enemies.push_back(e);
		} else if (num > 16 && num <= 18) {
			e = new Merchant(pos, id);
			this->enemies.push_back(e);
		}
		displayGrid[pos.y][pos.x] = e->getSymbol();
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
cmpl $0x13, %esi
jg 0x6ac3
movq %rdi, %rbx
movl $0x14, %eax
subl %esi, %eax
leaq 0x7c0(%rdi), %rcx
movq %rcx, -0x48(%rbp)
cmpl $0x2, %eax
movl $0x1, %r14d
cmovgel %eax, %r14d
leaq 0x820(%rdi), %r15
callq 0x4060
movslq %eax, %r12
imulq $0x38e38e39, %r12, %rax # imm = 0x38E38E39
movq %rax, %rcx
shrq $0x3f, %rcx
sarq $0x22, %rax
addl %ecx, %eax
addl %eax, %eax
leal (%rax,%rax,8), %eax
subl %eax, %r12d
movq %rbx, %rdi
leaq -0x34(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x5a80
movl $0x50, %edi
cmpl $0x3, %r12d
jg 0x69ec
callq 0x4160
movq %rax, %r13
movq -0x40(%rbp), %rsi
movl -0x34(%rbp), %edx
movq %rax, %rdi
callq 0x15224
jmp 0x6a70
cmpl $0x6, %r12d
ja 0x6a0b
callq 0x4160
movq %rax, %r13
movq -0x40(%rbp), %rsi
movl -0x34(%rbp), %edx
movq %rax, %rdi
callq 0x144a8
jmp 0x6a70
cmpl $0xb, %r12d
ja 0x6a2a
callq 0x4160
movq %rax, %r13
movq -0x40(%rbp), %rsi
movl -0x34(%rbp), %edx
movq %rax, %rdi
callq 0x10a08
jmp 0x6a70
cmpl $0xd, %r12d
ja 0x6a49
callq 0x4160
movq %rax, %r13
movq -0x40(%rbp), %rsi
movl -0x34(%rbp), %edx
movq %rax, %rdi
callq 0x1289c
jmp 0x6a70
callq 0x4160
movq %rax, %r13
movq -0x40(%rbp), %rsi
movl -0x34(%rbp), %edx
cmpl $0xf, %r12d
ja 0x6a68
movq %r13, %rdi
callq 0x116a4
jmp 0x6a70
movq %r13, %rdi
callq 0x11584
movq %r13, -0x30(%rbp)
movq 0x7c8(%rbx), %rsi
cmpq 0x7d0(%rbx), %rsi
je 0x6a91
movq %r13, (%rsi)
addq $0x8, 0x7c8(%rbx)
jmp 0x6a9e
movq -0x48(%rbp), %rdi
leaq -0x30(%rbp), %rdx
callq 0xa69c
movq -0x30(%rbp), %rdi
movq (%rdi), %rax
callq *0x30(%rax)
movslq -0x3c(%rbp), %rcx
movslq -0x40(%rbp), %rdx
imulq $0x4f, %rcx, %rcx
addq %r15, %rcx
movb %al, (%rdx,%rcx)
decl %r14d
jne 0x6991
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x6adc
jmp 0x6adc
jmp 0x6adc
jmp 0x6adc
jmp 0x6adc
movq %rax, %rbx
movl $0x50, %esi
movq %r13, %rdi
callq 0x4170
movq %rbx, %rdi
callq 0x4250
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/floor.cc
// Function: Floor::talkMerchant(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
std::string Floor::talkMerchant(std::string direction){
	if (this->getHostile()){
		return "You are my enemy!";
	}
	Posn p = this->player->getPosition().getNew(direction);
	for (int i = 0; i < this->enemies.size(); ++i){
		if (p == this->enemies.at(i)->getPosition()){
			if (this->enemies.at(i)->getRace() == "Merchant") {
				return "(B)uckler Shield: 3g (T)arge Shield: 6g (P)avise Shield: 12g (N)odachi: 3g (K)atana: 7g (U)chigatana: 15g";
			}
		}
	}
	return "Invalid input. Try again.";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rdi, %r13
cmpb $0x1, 0x4(%rsi)
jne 0x8514
leaq 0x10(%r13), %rax
movq %rax, (%r13)
leaq 0x14f47(%rip), %rsi     # 0x1d444
leaq 0x14f51(%rip), %rdx     # 0x1d455
movq %r13, %rdi
callq 0x501a
movq %r13, %rax
jmp 0x866a
movq %rdx, %r15
movq %rsi, %r14
movq 0xfe0(%rsi), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
leaq -0x58(%rbp), %rbx
movq %rax, (%rbx)
leaq -0x68(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq -0x78(%rbp), %r15
movq %r15, %rdi
callq 0xa4be
movq %rbx, %rdi
movq %r15, %rsi
callq 0x50b8
movq %r13, -0x30(%rbp)
movq %rax, -0x38(%rbp)
movq -0x78(%rbp), %rdi
cmpq %r12, %rdi
je 0x8575
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4170
movq 0x7c0(%r14), %rax
cmpq %rax, 0x7c8(%r14)
je 0x862b
xorl %r15d, %r15d
leaq -0x38(%rbp), %r12
leaq -0x58(%rbp), %r13
movq (%rax,%r15,8), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
movq %rax, -0x58(%rbp)
movq %r12, %rdi
movq %r13, %rsi
callq 0x51ba
testb %al, %al
je 0x860a
movq 0x7c0(%r14), %rax
movq 0x7c8(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r15, %rdx
jbe 0x8679
movq (%rax,%r15,8), %rsi
movq (%rsi), %rax
movq %r13, %rdi
callq *0x28(%rax)
movq %r13, %rdi
leaq 0x14ce4(%rip), %rsi     # 0x1d2ca
callq 0x4070
movl %eax, %ebx
movq -0x58(%rbp), %rdi
leaq -0x48(%rbp), %rax
cmpq %rax, %rdi
je 0x8606
movq -0x48(%rbp), %rsi
incq %rsi
callq 0x4170
testl %ebx, %ebx
je 0x8646
incq %r15
movq 0x7c0(%r14), %rax
movq 0x7c8(%r14), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %r15, %rcx
ja 0x8594
movq -0x30(%rbp), %rbx
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x14e83(%rip), %rsi     # 0x1d4c0
leaq 0x14e95(%rip), %rdx     # 0x1d4d9
jmp 0x865f
movq -0x30(%rbp), %rbx
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x14dfe(%rip), %rsi     # 0x1d456
leaq 0x14e60(%rip), %rdx     # 0x1d4bf
movq %rbx, %rdi
callq 0x501a
movq %rbx, %rax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1514f(%rip), %rdi     # 0x1d7cf
movq %r15, %rsi
xorl %eax, %eax
callq 0x41e0
movq %rax, %rbx
movq -0x78(%rbp), %rdi
cmpq %r12, %rdi
je 0x86a2
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x4170
movq %rbx, %rdi
callq 0x4250
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/player.cc
// Function: Player::takeDamage(int)
void Player::takeDamage(int amount)
{
    if (this->barrier())
    {
        this->HP -= ceil(amount / 2);
    }
    else
    {
        this->HP -= amount;
    }
    if (this->HP < 0)
    {
        this->HP = 0;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
cmpb $0x1, 0x48(%rdi)
jne 0xb538
movl %esi, %ecx
shrl $0x1f, %ecx
addl %esi, %ecx
sarl %ecx
movl 0x10(%rdi), %eax
subl %ecx, %eax
jmp 0xb53d
movl 0x10(%rdi), %eax
subl %esi, %eax
movl %eax, 0x10(%rdi)
testl %eax, %eax
jns 0xb54b
movl $0x0, 0x10(%rdi)
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/human.cc
// Function: Human::Human(int, int, Posn)
Human::Human(int HP, int gold, Posn position)
{
    this->Atk = 20;
    this->Def = 20;
    this->HP = HP;
    this->gold = gold;
    this->race = "Human";
    this->symbol = '@';
    this->position = position;
    this->MaxHP = 140;
    this->hasBarrier = false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq %rcx, -0x20(%rbp)
leaq 0x18(%rdi), %rdi
leaq 0x28(%rbx), %r15
movq %r15, 0x18(%rbx)
movq $0x0, 0x20(%rbx)
movb $0x0, 0x28(%rbx)
leaq 0x174bc(%rip), %rax     # 0x23538
movq %rax, (%rbx)
movabsq $0x1400000014, %rax     # imm = 0x1400000014
movq %rax, 0x8(%rbx)
movl %esi, 0x10(%rbx)
movl %edx, 0x14(%rbx)
leaq 0x11916(%rip), %rcx     # 0x1d9b0
movl $0x5, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4200
movb $0x40, 0x38(%rbx)
leaq 0x3c(%rbx), %rdi
leaq -0x20(%rbp), %rsi
callq 0x51e6
movl $0x8c, 0x44(%rbx)
movb $0x0, 0x48(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x1728e(%rip), %rax     # 0x23368
addq $0x10, %rax
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
cmpq %r15, %rdi
je 0xc0f5
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %r14, %rdi
callq 0x4250
nop
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/human.cc
// Function: Human::Human(int, int, Posn, int, int, bool)
Human::Human(int HP, int gold, Posn position, int Atk, int Def, bool hasBarrier)
{
    this->Atk = Atk;
    this->Def = Def;
    this->HP = HP;
    this->gold = gold;
    this->race = "Human";
    this->symbol = '@';
    this->position = position;
    this->MaxHP = 140;
    this->hasBarrier = hasBarrier;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq %rcx, -0x20(%rbp)
leaq 0x18(%rdi), %rdi
leaq 0x28(%rbx), %r15
movq %r15, 0x18(%rbx)
movq $0x0, 0x20(%rbx)
movb $0x0, 0x28(%rbx)
leaq 0x1740a(%rip), %rax     # 0x23538
movq %rax, (%rbx)
movl %r8d, 0x8(%rbx)
movl %r9d, 0xc(%rbx)
movl %esi, 0x10(%rbx)
movl %edx, 0x14(%rbx)
leaq 0x1186a(%rip), %rcx     # 0x1d9b0
movl $0x5, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4200
movb $0x40, 0x38(%rbx)
leaq 0x3c(%rbx), %rdi
leaq -0x20(%rbp), %rsi
callq 0x51e6
movb 0x10(%rbp), %al
movl $0x8c, 0x44(%rbx)
movb %al, 0x48(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x171e0(%rip), %rax     # 0x23368
addq $0x10, %rax
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
cmpq %r15, %rdi
je 0xc1a3
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %r14, %rdi
callq 0x4250
nop
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/orc.cc
// Function: Orc::Orc(int, int, Posn)
Orc::Orc(int HP, int gold, Posn position)
{
    this->Atk = 30;
    this->Def = 25;
    this->HP = HP;
    this->gold = gold;
    this->race = "Orc";
    this->symbol = '@';
    this->position = position;
    this->MaxHP = 1800;
    this->hasBarrier = false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq %rcx, -0x20(%rbp)
leaq 0x18(%rdi), %rdi
leaq 0x28(%rbx), %r15
movq %r15, 0x18(%rbx)
movq $0x0, 0x20(%rbx)
movb $0x0, 0x28(%rbx)
leaq 0x17380(%rip), %rax     # 0x235d0
movq %rax, (%rbx)
movabsq $0x190000001e, %rax     # imm = 0x190000001E
movq %rax, 0x8(%rbx)
movl %esi, 0x10(%rbx)
movl %edx, 0x14(%rbx)
leaq 0x11762(%rip), %rcx     # 0x1d9d0
movl $0x3, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4200
movb $0x40, 0x38(%rbx)
leaq 0x3c(%rbx), %rdi
leaq -0x20(%rbp), %rsi
callq 0x51e6
movl $0x708, 0x44(%rbx)      # imm = 0x708
movb $0x0, 0x48(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x170ba(%rip), %rax     # 0x23368
addq $0x10, %rax
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
cmpq %r15, %rdi
je 0xc2c9
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %r14, %rdi
callq 0x4250
nop
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/orc.cc
// Function: Orc::Orc(int, int, Posn, int, int, bool)
Orc::Orc(int HP, int gold, Posn position, int Atk, int Def, bool hasBarrier)
{
    this->Atk = Atk;
    this->Def = Def;
    this->HP = HP;
    this->gold = gold;
    this->race = "Orc";
    this->symbol = '@';
    this->position = position;
    this->MaxHP = 1800;
    this->hasBarrier = hasBarrier;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq %rcx, -0x20(%rbp)
leaq 0x18(%rdi), %rdi
leaq 0x28(%rbx), %r15
movq %r15, 0x18(%rbx)
movq $0x0, 0x20(%rbx)
movb $0x0, 0x28(%rbx)
leaq 0x172ce(%rip), %rax     # 0x235d0
movq %rax, (%rbx)
movl %r8d, 0x8(%rbx)
movl %r9d, 0xc(%rbx)
movl %esi, 0x10(%rbx)
movl %edx, 0x14(%rbx)
leaq 0x116b6(%rip), %rcx     # 0x1d9d0
movl $0x3, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4200
movb $0x40, 0x38(%rbx)
leaq 0x3c(%rbx), %rdi
leaq -0x20(%rbp), %rsi
callq 0x51e6
movb 0x10(%rbp), %al
movl $0x708, 0x44(%rbx)      # imm = 0x708
movb %al, 0x48(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x1700c(%rip), %rax     # 0x23368
addq $0x10, %rax
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
cmpq %r15, %rdi
je 0xc377
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %r14, %rdi
callq 0x4250
nop
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/elf.cc
// Function: Elf::Elf(int, int, Posn)
Elf::Elf(int HP, int gold, Posn position)
{
    this->Atk = 30;
    this->Def = 10;
    this->HP = HP;
    this->gold = gold;
    this->race = "Elf";
    this->symbol = '@';
    this->position = position;
    this->MaxHP = 140;
    this->hasBarrier = false;

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq %rcx, -0x20(%rbp)
leaq 0x18(%rdi), %rdi
leaq 0x28(%rbx), %r15
movq %r15, 0x18(%rbx)
movq $0x0, 0x20(%rbx)
movb $0x0, 0x28(%rbx)
leaq 0x15188(%rip), %rax     # 0x23668
movq %rax, (%rbx)
movabsq $0xa0000001e, %rax      # imm = 0xA0000001E
movq %rax, 0x8(%rbx)
movl %esi, 0x10(%rbx)
movl %edx, 0x14(%rbx)
leaq 0xf168(%rip), %rcx      # 0x1d666
movl $0x3, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4200
movb $0x40, 0x38(%rbx)
leaq 0x3c(%rbx), %rdi
leaq -0x20(%rbp), %rsi
callq 0x51e6
movl $0x8c, 0x44(%rbx)
movb $0x0, 0x48(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x14e2a(%rip), %rax     # 0x23368
addq $0x10, %rax
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
cmpq %r15, %rdi
je 0xe559
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %r14, %rdi
callq 0x4250
nop
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/elf.cc
// Function: Elf::Elf(int, int, Posn, int, int, bool)
Elf::Elf(int HP, int gold, Posn position, int Atk, int Def, bool hasBarrier){
    this->Atk = Atk;
    this->Def = Def;
    this->HP = HP;
    this->gold = gold;
    this->race = "Elf";
    this->symbol = '@';
    this->position = position;
    this->MaxHP = 140;
    this->hasBarrier = hasBarrier;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq %rcx, -0x20(%rbp)
leaq 0x18(%rdi), %rdi
leaq 0x28(%rbx), %r15
movq %r15, 0x18(%rbx)
movq $0x0, 0x20(%rbx)
movb $0x0, 0x28(%rbx)
leaq 0x150d6(%rip), %rax     # 0x23668
movq %rax, (%rbx)
movl %r8d, 0x8(%rbx)
movl %r9d, 0xc(%rbx)
movl %esi, 0x10(%rbx)
movl %edx, 0x14(%rbx)
leaq 0xf0bc(%rip), %rcx      # 0x1d666
movl $0x3, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4200
movb $0x40, 0x38(%rbx)
leaq 0x3c(%rbx), %rdi
leaq -0x20(%rbp), %rsi
callq 0x51e6
movb 0x10(%rbp), %al
movl $0x8c, 0x44(%rbx)
movb %al, 0x48(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x14d7c(%rip), %rax     # 0x23368
addq $0x10, %rax
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
cmpq %r15, %rdi
je 0xe607
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %r14, %rdi
callq 0x4250
nop
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/dwarf.cc
// Function: Dwarf::Dwarf(int, int, Posn)
Dwarf::Dwarf(int HP, int gold, Posn position)
{
    this->Atk = 20;
    this->Def = 30;
    this->HP = HP;
    this->gold = gold;
    this->race = "Dwarf";
    this->symbol = '@';
    this->position = position;
    this->MaxHP = 1000;
    this->hasBarrier = false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq %rcx, -0x20(%rbp)
leaq 0x18(%rdi), %rdi
leaq 0x28(%rbx), %r15
movq %r15, 0x18(%rbx)
movq $0x0, 0x20(%rbx)
movb $0x0, 0x28(%rbx)
leaq 0x13fd4(%rip), %rax     # 0x23700
movq %rax, (%rbx)
movabsq $0x1e00000014, %rax     # imm = 0x1E00000014
movq %rax, 0x8(%rbx)
movl %esi, 0x10(%rbx)
movl %edx, 0x14(%rbx)
leaq 0xe313(%rip), %rcx      # 0x1da5d
movl $0x5, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4200
movb $0x40, 0x38(%rbx)
leaq 0x3c(%rbx), %rdi
leaq -0x20(%rbp), %rsi
callq 0x51e6
movl $0x3e8, 0x44(%rbx)      # imm = 0x3E8
movb $0x0, 0x48(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x13bde(%rip), %rax     # 0x23368
addq $0x10, %rax
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
cmpq %r15, %rdi
je 0xf7a5
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %r14, %rdi
callq 0x4250
nop
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/dwarf.cc
// Function: Dwarf::Dwarf(int, int, Posn, int, int, bool)
Dwarf::Dwarf(int HP, int gold, Posn position, int Atk, int Def, bool hasBarrier)
{
    this->Atk = Atk;
    this->Def = Def;
    this->HP = HP;
    this->gold = gold;
    this->race = "Dwarf";
    this->symbol = '@';
    this->position = position;
    this->MaxHP = 1000;
    this->hasBarrier = hasBarrier;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq %rcx, -0x20(%rbp)
leaq 0x18(%rdi), %rdi
leaq 0x28(%rbx), %r15
movq %r15, 0x18(%rbx)
movq $0x0, 0x20(%rbx)
movb $0x0, 0x28(%rbx)
leaq 0x13f22(%rip), %rax     # 0x23700
movq %rax, (%rbx)
movl %r8d, 0x8(%rbx)
movl %r9d, 0xc(%rbx)
movl %esi, 0x10(%rbx)
movl %edx, 0x14(%rbx)
leaq 0xe267(%rip), %rcx      # 0x1da5d
movl $0x5, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4200
movb $0x40, 0x38(%rbx)
leaq 0x3c(%rbx), %rdi
leaq -0x20(%rbp), %rsi
callq 0x51e6
movb 0x10(%rbp), %al
movl $0x3e8, 0x44(%rbx)      # imm = 0x3E8
movb %al, 0x48(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x13b30(%rip), %rax     # 0x23368
addq $0x10, %rax
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
cmpq %r15, %rdi
je 0xf853
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %r14, %rdi
callq 0x4250
nop
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/goblin.cc
// Function: Goblin::Goblin(Posn, int)
Goblin::Goblin(Posn position, int chamberID)
{
    this->Atk = 5;
    this->Def = 10;
    this->HP = 70;
    this->gold = 1;
    this->race = "Goblin";
    this->symbol = 'N';
    this->hasCompass = false;
    this->chamberID = chamberID;
    this->position = position;
    this->stunned = false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %r14d
movq %rdi, %rbx
movq %rsi, -0x20(%rbp)
leaq 0x18(%rdi), %rdi
leaq 0x28(%rbx), %r15
movq %r15, 0x18(%rbx)
movq $0x0, 0x20(%rbx)
movb $0x0, 0x28(%rbx)
leaq 0x12d5d(%rip), %rax     # 0x23798
movq %rax, (%rbx)
movaps 0xd0fb(%rip), %xmm0     # 0x1db40
movups %xmm0, 0x8(%rbx)
leaq 0xd100(%rip), %rcx      # 0x1db50
movl $0x6, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4200
movb $0x4e, 0x38(%rbx)
movb $0x0, 0x44(%rbx)
movl %r14d, 0x48(%rbx)
leaq 0x3c(%rbx), %rdi
leaq -0x20(%rbp), %rsi
callq 0x51e6
movb $0x0, 0x39(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x128d7(%rip), %rax     # 0x23368
addq $0x10, %rax
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
cmpq %r15, %rdi
je 0x10aac
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %r14, %rdi
callq 0x4250
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/phoenix.cc
// Function: Phoenix::Phoenix(Posn, int)
Phoenix::Phoenix(Posn position, int chamberID)
{
    this->Atk = 35;
    this->Def = 20;
    this->HP = 50;
    this->gold = 1;
    this->race = "Phoenix";
    this->symbol = 'X';
    this->hasCompass = false;
    this->chamberID = chamberID;
    this->position = position;
    this->stunned = false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %r14d
movq %rdi, %rbx
movq %rsi, -0x20(%rbp)
leaq 0x18(%rdi), %rdi
leaq 0x28(%rbx), %r15
movq %r15, 0x18(%rbx)
movq $0x0, 0x20(%rbx)
movb $0x0, 0x28(%rbx)
leaq 0x12201(%rip), %rax     # 0x238d8
movq %rax, (%rbx)
movaps 0xc4bf(%rip), %xmm0     # 0x1dba0
movups %xmm0, 0x8(%rbx)
leaq 0xc4cc(%rip), %rcx      # 0x1dbb8
movl $0x7, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4200
movb $0x58, 0x38(%rbx)
movb $0x0, 0x44(%rbx)
movl %r14d, 0x48(%rbx)
leaq 0x3c(%rbx), %rdi
leaq -0x20(%rbp), %rsi
callq 0x51e6
movb $0x0, 0x39(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x11c3b(%rip), %rax     # 0x23368
addq $0x10, %rax
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
cmpq %r15, %rdi
je 0x11748
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %r14, %rdi
callq 0x4250
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/troll.cc
// Function: Troll::Troll(Posn, int)
Troll::Troll(Posn position, int chamberID)
{
    this->Atk = 25;
    this->Def = 15;
    this->HP = 120;
    this->gold = 1;
    this->race = "Troll";
    this->symbol = 'T';
    this->hasCompass = false;
    this->chamberID = chamberID;
    this->position = position;
    this->stunned = false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %r14d
movq %rdi, %rbx
movq %rsi, -0x20(%rbp)
leaq 0x18(%rdi), %rdi
leaq 0x28(%rbx), %r15
movq %r15, 0x18(%rbx)
movq $0x0, 0x20(%rbx)
movb $0x0, 0x28(%rbx)
leaq 0x110a9(%rip), %rax     # 0x23978
movq %rax, (%rbx)
movaps 0xb357(%rip), %xmm0     # 0x1dc30
movups %xmm0, 0x8(%rbx)
leaq 0xb364(%rip), %rcx      # 0x1dc48
movl $0x5, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4200
movb $0x54, 0x38(%rbx)
movb $0x0, 0x44(%rbx)
movl %r14d, 0x48(%rbx)
leaq 0x3c(%rbx), %rdi
leaq -0x20(%rbp), %rsi
callq 0x51e6
movb $0x0, 0x39(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x10a43(%rip), %rax     # 0x23368
addq $0x10, %rax
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
cmpq %r15, %rdi
je 0x12940
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %r14, %rdi
callq 0x4250
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/vampire.cc
// Function: Vampire::Vampire(Posn, int)
Vampire::Vampire(Posn position, int chamberID)
{
    this->Atk = 25;
    this->Def = 25;
    this->HP = 50;
    this->gold = 1;
    this->race = "Vampire";
    this->symbol = 'V';
    this->hasCompass = false;
    this->chamberID = chamberID;
    this->position = position;
    this->stunned = false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %r14d
movq %rdi, %rbx
movq %rsi, -0x20(%rbp)
leaq 0x18(%rdi), %rdi
leaq 0x28(%rbx), %r15
movq %r15, 0x18(%rbx)
movq $0x0, 0x20(%rbx)
movb $0x0, 0x28(%rbx)
leaq 0xf53d(%rip), %rax      # 0x23a18
movq %rax, (%rbx)
movaps 0x97bb(%rip), %xmm0     # 0x1dca0
movups %xmm0, 0x8(%rbx)
leaq 0x97c0(%rip), %rcx      # 0x1dcb0
movl $0x7, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4200
movb $0x56, 0x38(%rbx)
movb $0x0, 0x44(%rbx)
movl %r14d, 0x48(%rbx)
leaq 0x3c(%rbx), %rdi
leaq -0x20(%rbp), %rsi
callq 0x51e6
movb $0x0, 0x39(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0xee37(%rip), %rax      # 0x23368
addq $0x10, %rax
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
cmpq %r15, %rdi
je 0x1454c
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %r14, %rdi
callq 0x4250
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/werewolf.cc
// Function: Werewolf::Werewolf(Posn, int)
Werewolf::Werewolf(Posn position, int chamberID)
{
    this->Atk = 30;
    this->Def = 5;
    this->HP = 120;
    this->gold = 1;
    this->race = "Werewolf";
    this->symbol = 'W';
    this->hasCompass = false;
    this->chamberID = chamberID;
    this->position = position;
    this->stunned = false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movl %edx, %r14d
movq %rdi, %rbx
movq %rsi, -0x20(%rbp)
leaq 0x18(%rdi), %rdi
leaq 0x28(%rbx), %r15
movq %r15, 0x18(%rbx)
movq $0x0, 0x20(%rbx)
movb $0x0, 0x28(%rbx)
leaq 0xe861(%rip), %rax      # 0x23ab8
movq %rax, (%rbx)
movaps 0x8a7f(%rip), %xmm0     # 0x1dce0
movups %xmm0, 0x8(%rbx)
leaq 0x8a84(%rip), %rcx      # 0x1dcf0
movl $0x8, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4200
movb $0x57, 0x38(%rbx)
movb $0x0, 0x44(%rbx)
movl %r14d, 0x48(%rbx)
leaq 0x3c(%rbx), %rdi
leaq -0x20(%rbp), %rsi
callq 0x51e6
movb $0x0, 0x39(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0xe0bb(%rip), %rax      # 0x23368
addq $0x10, %rax
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
cmpq %r15, %rdi
je 0x152c8
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %r14, %rdi
callq 0x4250
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/gold.cc
// Function: normalHoard::normalHoard(Posn)
normalHoard::normalHoard(Posn p) {
    this->p = p;
    this->symbol = 'G';
    this->type = "normalHoard";
    this->value = 2;
    this->guarded = false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq -0x20(%rbp), %rax
movq %rsi, (%rax)
leaq 0x18(%rdi), %r14
leaq 0x28(%rdi), %r15
movq %r15, 0x18(%rdi)
movq $0x0, 0x20(%rdi)
movb $0x0, 0x28(%rdi)
addq $0x4, %rdi
movq %rax, %rsi
callq 0x51e6
movb $0x47, (%rbx)
movq 0x20(%rbx), %rdx
leaq 0x7e52(%rip), %rcx      # 0x1dd84
movl $0xb, %r8d
movq %r14, %rdi
xorl %esi, %esi
callq 0x4200
movl $0x2, 0xc(%rbx)
movb $0x0, 0x10(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq (%r14), %rdi
cmpq %r15, %rdi
je 0x15f6e
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %rbx, %rdi
callq 0x4250
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/gold.cc
// Function: dragonHoard::dragonHoard(Posn)
dragonHoard::dragonHoard(Posn p) {
    this->p = p;
    this->type = "dragonHoard";
    this->symbol = 'G';
    this->value = 6;
    this->guarded = true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq -0x20(%rbp), %rax
movq %rsi, (%rax)
leaq 0x18(%rdi), %r14
leaq 0x28(%rdi), %r15
movq %r15, 0x18(%rdi)
movq $0x0, 0x20(%rdi)
movb $0x0, 0x28(%rdi)
addq $0x4, %rdi
movq %rax, %rsi
callq 0x51e6
movq 0x20(%rbx), %rdx
leaq 0x7d58(%rip), %rcx      # 0x1dd9b
movl $0xb, %r8d
movq %r14, %rdi
xorl %esi, %esi
callq 0x4200
movb $0x47, (%rbx)
movl $0x6, 0xc(%rbx)
movb $0x1, 0x10(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq (%r14), %rdi
cmpq %r15, %rdi
je 0x16082
movq (%r15), %rsi
incq %rsi
callq 0x4170
movq %rbx, %rdi
callq 0x4250
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/dragon.cc
// Function: Dragon::Dragon(Posn, Gold*, barrierSuit*, int)
Dragon::Dragon(Posn position, Gold *hoard, barrierSuit *suit, int chamberID)
{
    this->Atk = 20;
    this->Def = 20;
    this->HP = 150;
    this->gold = 0;
    this->race = "Dragon";
    this->symbol = 'D';
    this->hasCompass = false;
    this->chamberID = chamberID;
    this->position = position;
    this->hoard = hoard;
    this->suit = suit;
    this->stunned = false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl %r8d, %r12d
movq %rcx, %r14
movq %rdx, %r15
movq %rdi, %rbx
movq %rsi, -0x30(%rbp)
leaq 0x18(%rdi), %rdi
leaq 0x28(%rbx), %r13
movq %r13, 0x18(%rbx)
movq $0x0, 0x20(%rbx)
movb $0x0, 0x28(%rbx)
leaq 0xd9fb(%rip), %rax      # 0x23b58
movq %rax, (%rbx)
movaps 0x7c49(%rip), %xmm0     # 0x1ddb0
movups %xmm0, 0x8(%rbx)
leaq 0x7161(%rip), %rcx      # 0x1d2d3
movl $0x6, %r8d
xorl %esi, %esi
xorl %edx, %edx
callq 0x4200
movb $0x44, 0x38(%rbx)
movb $0x0, 0x44(%rbx)
movl %r12d, 0x48(%rbx)
leaq 0x3c(%rbx), %rdi
leaq -0x30(%rbp), %rsi
callq 0x51e6
movq %r15, 0x50(%rbx)
movq %r14, 0x58(%rbx)
movb $0x0, 0x39(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0xd1a9(%rip), %rax      # 0x23368
addq $0x10, %rax
movq %rax, (%rbx)
movq 0x18(%rbx), %rdi
cmpq %r13, %rdi
je 0x161db
movq (%r13), %rsi
incq %rsi
callq 0x4170
movq %r14, %rdi
callq 0x4250
nop
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/game.cc
// Function: Controller::gameInit(char)
void Controller::gameInit(char type) {
	this->floor = new Floor(1, false, false);
	this->display = new Display();
	this->display->readFloor("map.txt");
	for (int i = 0; i < 25; i++) {
		for (int j = 0; j < 79; j++) {
			char c = this->display->getChar(i, j);
			floor->displayGrid[i][j] = c;
			floor->defaultGrid[i][j] = c;
		}
	}

	this->floor->initFloor(type);
	this->display->updateDisplay(floor);
	
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movl %esi, %r14d
movq %rdi, %rbx
movl $0xff8, %edi            # imm = 0xFF8
callq 0x4160
movq %rax, %r15
movq %rax, %rdi
movl $0x1, %esi
xorl %edx, %edx
xorl %ecx, %ecx
callq 0x5818
movq %r15, (%rbx)
movl $0x7b7, %edi            # imm = 0x7B7
callq 0x4160
movq %rax, %r15
movl $0x7b7, %edx            # imm = 0x7B7
movq %rax, %rdi
xorl %esi, %esi
callq 0x40d0
movq %r15, 0x8(%rbx)
leaq -0x38(%rbp), %r13
movq %r13, -0x10(%r13)
leaq 0x584d(%rip), %rsi      # 0x1de9a
leaq 0x584d(%rip), %rdx      # 0x1dea1
leaq -0x48(%rbp), %r12
movq %r12, %rdi
callq 0x501a
movq %r15, %rdi
movq %r12, %rsi
callq 0x53bc
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x18680
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
xorl %r13d, %r13d
xorl %r15d, %r15d
xorl %r12d, %r12d
movq 0x8(%rbx), %rdi
movl %r15d, %esi
movl %r12d, %edx
callq 0x5800
movq (%rbx), %rcx
addq %r13, %rcx
movb %al, 0x820(%r12,%rcx)
movq (%rbx), %rcx
addq %r13, %rcx
movb %al, 0x6(%r12,%rcx)
incq %r12
cmpq $0x4f, %r12
jne 0x18689
incq %r15
addq $0x4f, %r13
cmpq $0x19, %r15
jne 0x18686
movq (%rbx), %rdi
movsbl %r14b, %esi
callq 0x5e82
movq (%rbx), %rsi
movq 0x8(%rbx), %rdi
callq 0x57ce
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x48(%rbp), %rdi
cmpq %r13, %rdi
je 0x18713
movq -0x38(%rbp), %rsi
incq %rsi
jmp 0x1870e
movq %rax, %rbx
movl $0xff8, %esi            # imm = 0xFF8
movq %r15, %rdi
callq 0x4170
movq %rbx, %rdi
callq 0x4250
// File: /workspace/github_cpp_makefile_star2_O3/malcolmyeh[P]CC3K/game.cc
// Function: validDirection(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bool validDirection(std::string s){
	std::string dir[8] = {"ea", "we", "no", "so", "ne", "nw", "se", "sw"};
	for (int i = 0; i < 8; ++i){
		if (s == dir[i]){
			return true;
		}
	}
	return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %rdi, -0x30(%rbp)
leaq -0x120(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x4a88(%rip), %rsi      # 0x1d1cd
leaq 0x4a83(%rip), %rdx      # 0x1d1cf
leaq -0x130(%rbp), %rbx
movq %rbx, %rdi
callq 0x501a
leaq -0x110(%rbp), %r14
leaq -0x100(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x4a5c(%rip), %rsi      # 0x1d1d0
leaq 0x4a57(%rip), %rdx      # 0x1d1d2
movq %r14, %rdi
callq 0x501a
leaq -0xf0(%rbp), %r14
leaq -0xe0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x4a37(%rip), %rsi      # 0x1d1d3
leaq 0x4a32(%rip), %rdx      # 0x1d1d5
movq %r14, %rdi
callq 0x501a
leaq -0xd0(%rbp), %r14
leaq -0xc0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x4a12(%rip), %rsi      # 0x1d1d6
leaq 0x4a0d(%rip), %rdx      # 0x1d1d8
movq %r14, %rdi
callq 0x501a
leaq -0xb0(%rbp), %r14
leaq -0xa0(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x49ed(%rip), %rsi      # 0x1d1d9
leaq 0x49e8(%rip), %rdx      # 0x1d1db
movq %r14, %rdi
callq 0x501a
leaq -0x90(%rbp), %r14
leaq -0x80(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x49cb(%rip), %rsi      # 0x1d1dc
leaq 0x49c6(%rip), %rdx      # 0x1d1de
movq %r14, %rdi
callq 0x501a
leaq -0x70(%rbp), %r14
leaq -0x60(%rbp), %rax
movq %rax, -0x10(%rax)
leaq 0x49ac(%rip), %rsi      # 0x1d1df
leaq 0x49a7(%rip), %rdx      # 0x1d1e1
movq %r14, %rdi
callq 0x501a
leaq -0x50(%rbp), %r14
leaq -0x40(%rbp), %r12
movq %r12, -0x10(%r12)
leaq 0x498c(%rip), %rsi      # 0x1d1e2
leaq 0x4987(%rip), %rdx      # 0x1d1e4
movq %r14, %rdi
callq 0x501a
movq -0x30(%rbp), %rax
movq 0x8(%rax), %r14
movb $0x1, %bl
leaq -0x128(%rbp), %r13
xorl %r15d, %r15d
cmpq (%r13), %r14
jne 0x1889b
testq %r14, %r14
je 0x188b3
movq -0x8(%r13), %rsi
movq -0x30(%rbp), %rax
movq (%rax), %rdi
movq %r14, %rdx
callq 0x4180
testl %eax, %eax
je 0x188b3
cmpq $0x7, %r15
leaq 0x1(%r15), %rax
setb %bl
addq $0x20, %r13
movq %rax, %r15
cmpq $0x8, %rax
jne 0x18879
movq $-0x100, %r14
movq -0x10(%r12), %rdi
cmpq %rdi, %r12
je 0x188d0
movq (%r12), %rsi
incq %rsi
callq 0x4170
addq $-0x20, %r12
addq $0x20, %r14
jne 0x188ba
andb $0x1, %bl
movl %ebx, %eax
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x188fd
jmp 0x188fd
jmp 0x188fd
jmp 0x188fd
jmp 0x188fd
jmp 0x188fd
movq %rax, %r15
addq $-0x10, %r14
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x18918
movq (%r14), %rsi
incq %rsi
callq 0x4170
leaq -0x20(%r14), %rax
addq $-0x10, %r14
cmpq %rbx, %r14
movq %rax, %r14
jne 0x18904
movq %r15, %rdi
callq 0x4250