LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: Fohlen[P]cubescript-standalone/tools.cpp
// Function: filtertext(char*, char const*, bool, unsigned long)
void filtertext(char *dst, const char *src, bool whitespace, size_t len)
{
    for(int c = uchar(*src); c; c = uchar(*++src))
    {
        if(c == '\f')
        {
            if(!*++src) break;
            continue;
        }
        if(iscubeprint(c) || (iscubespace(c) && whitespace))
        {
            *dst++ = c;
            if(!--len) break;
        }
    }
    *dst = '\0';
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %dl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
movq %rcx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
je 0x1bd7d
cmpl $0xc, -0x24(%rbp)
jne 0x1bd0e
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rbp)
cmpb $0x0, 0x1(%rax)
jne 0x1bd0c
jmp 0x1bd7d
jmp 0x1bd62
movl -0x24(%rbp), %eax
movzbl %al, %edi
callq 0x1bd90
cmpl $0x0, %eax
jne 0x1bd34
movl -0x24(%rbp), %eax
movzbl %al, %edi
callq 0x1bdb0
cmpl $0x0, %eax
je 0x1bd60
testb $0x1, -0x11(%rbp)
je 0x1bd60
movl -0x24(%rbp), %eax
movb %al, %cl
movq -0x8(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x8(%rbp)
movb %cl, (%rax)
movq -0x20(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
jne 0x1bd5e
jmp 0x1bd7d
jmp 0x1bd60
jmp 0x1bd62
movq -0x10(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x10(%rbp)
movzbl 0x1(%rax), %eax
movl %eax, -0x24(%rbp)
jmp 0x1bce5
movq -0x8(%rbp), %rax
movb $0x0, (%rax)
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: Fohlen[P]cubescript-standalone/./tools.h
// Function: databuf<unsigned char>::get()
const T &get()
    {
        static T overreadval = 0;
        if(len<maxlen) return buf[len++];
        flags |= OVERREAD;
        return overreadval;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rcx
movq %rcx, -0x18(%rbp)
movl 0x8(%rcx), %eax
cmpl 0xc(%rcx), %eax
jge 0x1be36
movq -0x18(%rbp), %rdx
movq (%rdx), %rax
movl 0x8(%rdx), %ecx
movl %ecx, %esi
addl $0x1, %esi
movl %esi, 0x8(%rdx)
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x8(%rbp)
jmp 0x1be4f
movq -0x18(%rbp), %rax
movzbl 0x10(%rax), %ecx
orl $0x1, %ecx
movb %cl, 0x10(%rax)
leaq 0xd365(%rip), %rax      # 0x291b0
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
popq %rbp
retq
nopw %cs:(%rax,%rax)
nop
// File: Fohlen[P]cubescript-standalone/./tools.h
// Function: databuf<unsigned char>::get(unsigned char*, int)
int get(T *vals, int numvals)
    {
        int read = min(maxlen-len, numvals);
        if(read<numvals) flags |= OVERREAD;
        memcpy(vals, (void *)&buf[len], read*sizeof(T));
        len += read;
        return read;
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movl 0xc(%rax), %edi
subl 0x8(%rax), %edi
movl -0x14(%rbp), %esi
callq 0x1bdd0
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0x14(%rbp), %eax
jge 0x1bea2
movq -0x20(%rbp), %rax
movzbl 0x10(%rax), %ecx
orl $0x1, %ecx
movb %cl, 0x10(%rax)
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rdi
movq (%rax), %rsi
movslq 0x8(%rax), %rax
addq %rax, %rsi
movslq -0x18(%rbp), %rdx
shlq $0x0, %rdx
callq 0x2170
movq -0x20(%rbp), %rax
movl -0x18(%rbp), %ecx
addl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movl -0x18(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: malcolmyeh[P]CC3K/main.cc
// Function: readFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, char (*) [89])
void readFile(std::string file, char display[27][89]) {
	std::string str;
	std::ifstream in (file);
	for (int i = 0; i < 27; i++)
    {
        getline(in, str);
        for (int j = 0; j < 89; j++)
        {
            display[i][j] = str[j];
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x260, %rsp            # imm = 0x260
movq %rdi, -0x258(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x4280
movq -0x258(%rbp), %rsi
leaq -0x238(%rbp), %rdi
movl $0x8, %edx
callq 0x42c0
jmp 0x460d
movl $0x0, -0x248(%rbp)
cmpl $0x1b, -0x248(%rbp)
jge 0x46e6
leaq -0x238(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x4060
jmp 0x4636
movl $0x0, -0x24c(%rbp)
cmpl $0x59, -0x24c(%rbp)
jge 0x46d0
movslq -0x24c(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x4340
movq %rax, -0x260(%rbp)
jmp 0x4666
movq -0x260(%rbp), %rax
movb (%rax), %dl
movq -0x10(%rbp), %rax
movslq -0x248(%rbp), %rcx
imulq $0x59, %rcx, %rcx
addq %rcx, %rax
movslq -0x24c(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x24c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24c(%rbp)
jmp 0x4640
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x4704
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x4080
jmp 0x4704
jmp 0x46d2
movl -0x248(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x248(%rbp)
jmp 0x4617
leaq -0x238(%rbp), %rdi
callq 0x4080
leaq -0x30(%rbp), %rdi
callq 0x4130
addq $0x260, %rsp            # imm = 0x260
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x4130
movq -0x240(%rbp), %rdi
callq 0x42f0
nopl (%rax)
// File: malcolmyeh[P]CC3K/main.cc
// Function: printDisplay(char (*) [89])
void printDisplay(char display[27][89]) {
	std::cout << "\033[2J\033[1;1H";
	for (int i = 0; i < 27; i++) {
		for (int j = 0; j < 89; j++) {
			std::cout << display[i][j];
		}
		std::cout << std::endl;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq 0x2289d(%rip), %rdi     # 0x26fd0
leaq 0x198ca(%rip), %rsi     # 0x1e004
callq 0x41c0
movl $0x0, -0xc(%rbp)
cmpl $0x1b, -0xc(%rbp)
jge 0x47a5
movl $0x0, -0x10(%rbp)
cmpl $0x59, -0x10(%rbp)
jge 0x4787
movq -0x8(%rbp), %rax
movslq -0xc(%rbp), %rcx
imulq $0x59, %rcx, %rcx
addq %rcx, %rax
movslq -0x10(%rbp), %rcx
movq 0x2285d(%rip), %rdi     # 0x26fd0
movsbl (%rax,%rcx), %esi
callq 0x4210
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x4753
movq 0x22842(%rip), %rdi     # 0x26fd0
movq 0x2282b(%rip), %rsi     # 0x26fc0
callq 0x41f0
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x4746
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: malcolmyeh[P]CC3K/main.cc
// Function: printEnd()
void printEnd() {
	std::cout << "\033[2J\033[1;1H";
	std::cout << "Thanks for playing Chamber Crawler 3000 +" << std::endl << std::endl;
	std::cout << "Project by Malcolm Yeh, Zayaan Moez, Kai Lu for CS246" << std::endl;
	std::cout << std::endl << std::endl << std::endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq 0x22815(%rip), %rdi     # 0x26fd0
leaq 0x19842(%rip), %rsi     # 0x1e004
callq 0x41c0
movq 0x22802(%rip), %rdi     # 0x26fd0
leaq 0x1983a(%rip), %rsi     # 0x1e00f
callq 0x41c0
movq %rax, %rdi
movq 0x227dc(%rip), %rsi     # 0x26fc0
callq 0x41f0
movq %rax, %rdi
movq 0x227cd(%rip), %rsi     # 0x26fc0
callq 0x41f0
movq 0x227d1(%rip), %rdi     # 0x26fd0
leaq 0x19833(%rip), %rsi     # 0x1e039
callq 0x41c0
movq %rax, %rdi
movq 0x227ab(%rip), %rsi     # 0x26fc0
callq 0x41f0
movq 0x227af(%rip), %rdi     # 0x26fd0
movq 0x22798(%rip), %rsi     # 0x26fc0
callq 0x41f0
movq %rax, %rdi
movq 0x22789(%rip), %rsi     # 0x26fc0
callq 0x41f0
movq %rax, %rdi
movq 0x2277a(%rip), %rsi     # 0x26fc0
callq 0x41f0
popq %rbp
retq
nopl (%rax)
// File: 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
subq $0x30, %rsp
movq %rsi, -0x20(%rbp)
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x54a0
movq -0x20(%rbp), %rdi
leaq 0x18f33(%rip), %rsi     # 0x1e1a3
callq 0x5210
testb $0x1, %al
jne 0x527b
jmp 0x5292
movq -0x28(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, -0x8(%rbp)
movl 0x4(%rax), %eax
movl %eax, -0x4(%rbp)
jmp 0x53dc
movq -0x20(%rbp), %rdi
leaq 0x18f09(%rip), %rsi     # 0x1e1a6
callq 0x5210
testb $0x1, %al
jne 0x52a8
jmp 0x52bf
movq -0x28(%rbp), %rax
movl (%rax), %ecx
subl $0x1, %ecx
movl %ecx, -0x8(%rbp)
movl 0x4(%rax), %eax
movl %eax, -0x4(%rbp)
jmp 0x53da
movq -0x20(%rbp), %rdi
leaq 0x18edf(%rip), %rsi     # 0x1e1a9
callq 0x5210
testb $0x1, %al
jne 0x52d5
jmp 0x52ec
movq -0x28(%rbp), %rax
movl (%rax), %ecx
movl %ecx, -0x8(%rbp)
movl 0x4(%rax), %eax
subl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x53d8
movq -0x20(%rbp), %rdi
leaq 0x18eb5(%rip), %rsi     # 0x1e1ac
callq 0x5210
testb $0x1, %al
jne 0x5302
jmp 0x5319
movq -0x28(%rbp), %rax
movl (%rax), %ecx
movl %ecx, -0x8(%rbp)
movl 0x4(%rax), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x53d6
movq -0x20(%rbp), %rdi
leaq 0x18e8b(%rip), %rsi     # 0x1e1af
callq 0x5210
testb $0x1, %al
jne 0x532f
jmp 0x5349
movq -0x28(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, -0x8(%rbp)
movl 0x4(%rax), %eax
subl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x53d4
movq -0x20(%rbp), %rdi
leaq 0x18e5e(%rip), %rsi     # 0x1e1b2
callq 0x5210
testb $0x1, %al
jne 0x535f
jmp 0x5376
movq -0x28(%rbp), %rax
movl (%rax), %ecx
subl $0x1, %ecx
movl %ecx, -0x8(%rbp)
movl 0x4(%rax), %eax
subl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x53d2
movq -0x20(%rbp), %rdi
leaq 0x18e34(%rip), %rsi     # 0x1e1b5
callq 0x5210
testb $0x1, %al
jne 0x538c
jmp 0x53a3
movq -0x28(%rbp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, -0x8(%rbp)
movl 0x4(%rax), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x53d0
movq -0x20(%rbp), %rdi
leaq 0x18e0a(%rip), %rsi     # 0x1e1b8
callq 0x5210
testb $0x1, %al
jne 0x53b9
jmp 0x53ce
movq -0x28(%rbp), %rax
movl (%rax), %ecx
subl $0x1, %ecx
movl %ecx, -0x8(%rbp)
movl 0x4(%rax), %eax
addl $0x1, %eax
movl %eax, -0x4(%rbp)
jmp 0x53d0
jmp 0x53d2
jmp 0x53d4
jmp 0x53d6
jmp 0x53d8
jmp 0x53da
jmp 0x53dc
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: malcolmyeh[P]CC3K/chamber.cc
// Function: Chamber::Chamber(int)
Chamber::Chamber(int num) {
	if (num == 1) {
		this->num = num;
		this->row = 3;
		this->col = 3;
		this->maxRow = 6;
		this->maxCol = 28;
	} else if (num == 2) {
		this->num = num;
		this->row = 15;
		this->col = 4;
		this->maxRow = 21;
		this->maxCol = 24;
	} else if (num == 3) {
		this->num = num;
		this->row = 3;
		this->col = 39;
		this->maxRow = 12;
		this->maxCol = 75;
	} else if (num == 4) {
		this->num = num;
		this->row = 10;
		this->col = 38;
		this->maxRow = 12;
		this->maxCol = 49;
	} else if (num == 5) {
		this->num = num;
		this->row = 16;
		this->col = 37;
		this->maxRow = 21;
		this->maxCol = 75;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x18(%rbp)
cmpl $0x1, -0xc(%rbp)
jne 0x5563
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, (%rax)
movl $0x3, 0xc(%rax)
movl $0x3, 0x10(%rax)
movl $0x6, 0x4(%rax)
movl $0x1c, 0x8(%rax)
jmp 0x5620
cmpl $0x2, -0xc(%rbp)
jne 0x5593
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, (%rax)
movl $0xf, 0xc(%rax)
movl $0x4, 0x10(%rax)
movl $0x15, 0x4(%rax)
movl $0x18, 0x8(%rax)
jmp 0x561e
cmpl $0x3, -0xc(%rbp)
jne 0x55c0
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, (%rax)
movl $0x3, 0xc(%rax)
movl $0x27, 0x10(%rax)
movl $0xc, 0x4(%rax)
movl $0x4b, 0x8(%rax)
jmp 0x561c
cmpl $0x4, -0xc(%rbp)
jne 0x55ed
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, (%rax)
movl $0xa, 0xc(%rax)
movl $0x26, 0x10(%rax)
movl $0xc, 0x4(%rax)
movl $0x31, 0x8(%rax)
jmp 0x561a
cmpl $0x5, -0xc(%rbp)
jne 0x5618
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, (%rax)
movl $0x10, 0xc(%rax)
movl $0x25, 0x10(%rax)
movl $0x15, 0x4(%rax)
movl $0x4b, 0x8(%rax)
jmp 0x561a
jmp 0x561c
jmp 0x561e
jmp 0x5620
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: 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
movq %rsi, -0xc(%rbp)
movq %rdi, -0x18(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movl -0xc(%rbp), %ecx
movl %ecx, -0x1c(%rbp)
movl -0x8(%rbp), %ecx
movl %ecx, -0x20(%rbp)
cmpl $0x1, (%rax)
je 0x5667
movq -0x28(%rbp), %rax
cmpl $0x2, (%rax)
je 0x5667
movq -0x28(%rbp), %rax
cmpl $0x4, (%rax)
jne 0x56b7
movq -0x28(%rbp), %rdx
movl -0x1c(%rbp), %ecx
xorl %eax, %eax
cmpl 0x10(%rdx), %ecx
movb %al, -0x29(%rbp)
jl 0x56aa
movq -0x28(%rbp), %rdx
movl -0x1c(%rbp), %ecx
xorl %eax, %eax
cmpl 0x8(%rdx), %ecx
movb %al, -0x29(%rbp)
jg 0x56aa
movq -0x28(%rbp), %rdx
movl -0x20(%rbp), %ecx
xorl %eax, %eax
cmpl 0xc(%rdx), %ecx
movb %al, -0x29(%rbp)
jl 0x56aa
movq -0x28(%rbp), %rcx
movl -0x20(%rbp), %eax
cmpl 0x4(%rcx), %eax
setle %al
movb %al, -0x29(%rbp)
movb -0x29(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x57c4
movq -0x28(%rbp), %rax
cmpl $0x3, (%rax)
jne 0x5773
movq -0x28(%rbp), %rcx
movl -0x1c(%rbp), %eax
cmpl 0x10(%rcx), %eax
jl 0x56f1
movq -0x28(%rbp), %rcx
movl -0x20(%rbp), %eax
cmpl 0xc(%rcx), %eax
jl 0x56f1
cmpl $0x3c, -0x1c(%rbp)
jg 0x56f1
cmpl $0x6, -0x20(%rbp)
jg 0x56f1
movb $0x1, -0x1(%rbp)
jmp 0x57c4
cmpl $0x3d, -0x1c(%rbp)
jne 0x570c
cmpl $0x3, -0x20(%rbp)
jl 0x570c
cmpl $0xc, -0x20(%rbp)
jg 0x570c
movb $0x1, -0x1(%rbp)
jmp 0x57c4
cmpl $0x3e, -0x1c(%rbp)
jl 0x572d
cmpl $0x5, -0x20(%rbp)
jl 0x572d
cmpl $0x45, -0x1c(%rbp)
jg 0x572d
cmpl $0xc, -0x20(%rbp)
jg 0x572d
movb $0x1, -0x1(%rbp)
jmp 0x57c4
cmpl $0x46, -0x1c(%rbp)
jl 0x574b
cmpl $0x6, -0x20(%rbp)
jl 0x574b
cmpl $0x48, -0x1c(%rbp)
jg 0x574b
cmpl $0xc, -0x20(%rbp)
jg 0x574b
movb $0x1, -0x1(%rbp)
jmp 0x57c4
cmpl $0x49, -0x1c(%rbp)
jl 0x5769
cmpl $0x7, -0x20(%rbp)
jl 0x5769
cmpl $0x4b, -0x1c(%rbp)
jg 0x5769
cmpl $0xc, -0x20(%rbp)
jg 0x5769
movb $0x1, -0x1(%rbp)
jmp 0x57c4
jmp 0x576b
jmp 0x576d
jmp 0x576f
jmp 0x5771
jmp 0x57be
movq -0x28(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x57bc
cmpl $0x25, -0x1c(%rbp)
jl 0x579a
cmpl $0x13, -0x20(%rbp)
jl 0x579a
cmpl $0x40, -0x1c(%rbp)
jg 0x579a
cmpl $0x15, -0x20(%rbp)
jg 0x579a
movb $0x1, -0x1(%rbp)
jmp 0x57c4
cmpl $0x41, -0x1c(%rbp)
jl 0x57b8
cmpl $0x10, -0x20(%rbp)
jl 0x57b8
cmpl $0x4b, -0x1c(%rbp)
jg 0x57b8
cmpl $0x15, -0x20(%rbp)
jg 0x57b8
movb $0x1, -0x1(%rbp)
jmp 0x57c4
jmp 0x57ba
jmp 0x57bc
jmp 0x57be
jmp 0x57c0
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
popq %rbp
retq
nopl (%rax,%rax)
// File: 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
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
leaq -0x8(%rbp), %rdi
callq 0x54a0
callq 0x4090
movq -0x28(%rbp), %rcx
cltd
idivl 0x4(%rcx)
movl %edx, -0x14(%rbp)
callq 0x4090
movq -0x28(%rbp), %rcx
cltd
idivl 0x8(%rcx)
movl %edx, -0x18(%rbp)
movl -0x18(%rbp), %eax
movl %eax, -0x8(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x4(%rbp)
movq -0x28(%rbp), %rdi
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rsi
callq 0x5630
xorb $-0x1, %al
testb $0x1, %al
jne 0x57ed
movq -0x8(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nop
// File: 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
subq $0x260, %rsp            # imm = 0x260
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x258(%rbp)
leaq -0x218(%rbp), %rdi
movl $0x8, %edx
callq 0x42c0
leaq -0x238(%rbp), %rdi
callq 0x4280
movl $0x0, -0x23c(%rbp)
cmpl $0x19, -0x23c(%rbp)
jge 0x5955
leaq -0x218(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x4060
jmp 0x58a7
movl $0x0, -0x250(%rbp)
cmpl $0x4f, -0x250(%rbp)
jge 0x593f
movslq -0x250(%rbp), %rsi
leaq -0x238(%rbp), %rdi
callq 0x4340
movq %rax, -0x260(%rbp)
jmp 0x58da
movq -0x258(%rbp), %rax
movq -0x260(%rbp), %rcx
movb (%rcx), %dl
movslq -0x23c(%rbp), %rcx
imulq $0x4f, %rcx, %rcx
addq %rcx, %rax
movslq -0x250(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x250(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x250(%rbp)
jmp 0x58b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x248(%rbp)
movl %eax, -0x24c(%rbp)
leaq -0x238(%rbp), %rdi
callq 0x4130
leaq -0x218(%rbp), %rdi
callq 0x4080
jmp 0x5976
jmp 0x5941
movl -0x23c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x23c(%rbp)
jmp 0x5885
leaq -0x238(%rbp), %rdi
callq 0x4130
leaq -0x218(%rbp), %rdi
callq 0x4080
addq $0x260, %rsp            # imm = 0x260
popq %rbp
retq
movq -0x248(%rbp), %rdi
callq 0x42f0
nopw %cs:(%rax,%rax)
// File: malcolmyeh[P]CC3K/floor.cc
// Function: Floor::Floor(int, bool, bool)
Floor::Floor(int level, bool hostile, bool spawned) {
	this->level = level;
	this->merchantHostile = hostile;
	this->barrierSpawned = spawned;
	this->player = NULL;
	this->stair = NULL;
	this->suit = NULL;
	for (int i = 0; i < 6; ++i){
		this->knownPotion[i] = false;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %cl, %al
movb %dl, %cl
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
andb $0x1, %cl
movb %cl, -0xd(%rbp)
andb $0x1, %al
movb %al, -0xe(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x20(%rbp)
addq $0x7c0, %rdi            # imm = 0x7C0
callq 0xd020
movq -0x20(%rbp), %rdi
addq $0x7d8, %rdi            # imm = 0x7D8
callq 0xd040
movq -0x20(%rbp), %rdi
addq $0x7f0, %rdi            # imm = 0x7F0
callq 0xd060
movq -0x20(%rbp), %rdi
addq $0x808, %rdi            # imm = 0x808
callq 0xd080
movq -0x20(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, (%rax)
movb -0xd(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x4(%rax)
movb -0xe(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x5(%rax)
movq $0x0, 0xfe0(%rax)
movq $0x0, 0xfd8(%rax)
movq $0x0, 0xfe8(%rax)
movl $0x0, -0x14(%rbp)
cmpl $0x6, -0x14(%rbp)
jge 0x5dc6
movq -0x20(%rbp), %rax
movslq -0x14(%rbp), %rcx
movb $0x0, 0xff0(%rax,%rcx)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x5da5
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: 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
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x40(%rbp)
callq 0x4090
movq -0x40(%rbp), %rdi
movl $0x5, %ecx
cltd
idivl %ecx
addl $0x1, %edx
movq -0x10(%rbp), %rax
movl %edx, (%rax)
addq $0x808, %rdi            # imm = 0x808
movq -0x10(%rbp), %rax
movl (%rax), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0xd590
movq (%rax), %rax
movq %rax, -0x20(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x54a0
movq -0x20(%rbp), %rdi
callq 0x57d0
movq %rax, -0x30(%rbp)
leaq -0x28(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x5470
movq -0x40(%rbp), %rdi
movq -0x28(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rsi
callq 0x63d0
xorb $-0x1, %al
testb $0x1, %al
jne 0x637e
movq -0x18(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x5470
addq $0x40, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: 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
subq $0x20, %rsp
movb %sil, %al
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movl $0x0, -0x14(%rbp)
xorl %eax, %eax
movl %eax, %edi
callq 0x4190
movl %eax, %edi
callq 0x41b0
movq -0x20(%rbp), %rdi
callq 0x6a60
movq -0x20(%rbp), %rdi
leaq -0x10(%rbp), %rdx
movsbl -0x9(%rbp), %esi
callq 0x6b00
movq -0x20(%rbp), %rdi
movl -0x10(%rbp), %esi
callq 0x6d90
movq -0x20(%rbp), %rdi
leaq -0x14(%rbp), %rsi
callq 0x6e90
movq -0x20(%rbp), %rdi
movl -0x14(%rbp), %esi
callq 0x7ac0
movq -0x20(%rbp), %rdi
callq 0x7e50
addq $0x20, %rsp
popq %rbp
retq
nop
// File: 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
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x48(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x54a0
callq 0x4090
movl $0x5, %ecx
cltd
idivl %ecx
addl $0x1, %edx
movl %edx, -0x10(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x10(%rbp), %eax
je 0x6db0
movq -0x48(%rbp), %rdi
addq $0x808, %rdi            # imm = 0x808
movl -0x10(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0xd590
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x57d0
movq %rax, -0x28(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x5470
movq -0x48(%rbp), %rax
addq $0x820, %rax            # imm = 0x820
movslq -0x14(%rbp), %rcx
imulq $0x4f, %rcx, %rcx
addq %rcx, %rax
movslq -0x18(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2e, %eax
sete %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x6deb
movl $0xc, %edi
callq 0x41d0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rsi
callq 0x54b0
jmp 0x6e55
movq -0x48(%rbp), %rax
movq -0x50(%rbp), %rcx
movq %rcx, 0xfd8(%rax)
addq $0x50, %rsp
popq %rbp
retq
movq -0x50(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
movl $0xc, %esi
callq 0x41e0
movq -0x38(%rbp), %rdi
callq 0x42f0
nopl (%rax)
// File: 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
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x18(%rbp)
callq 0x11700
testb $0x1, %al
jne 0x11c22
jmp 0x11c4f
movl -0xc(%rbp), %eax
movl $0x2, %ecx
cltd
idivl %ecx
cvtsi2sd %eax, %xmm0
callq 0x4050
movq -0x18(%rbp), %rax
movaps %xmm0, %xmm1
cvtsi2sdl 0x10(%rax), %xmm0
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %ecx
movl %ecx, 0x10(%rax)
jmp 0x11c5e
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %edx
movl 0x10(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0x10(%rax)
movq -0x18(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jge 0x11c73
movq -0x18(%rbp), %rax
movl $0x0, 0x10(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: malcolmyeh[P]CC3K/player.cc
// Function: Player::heal(int)
void Player::heal(int amount)
{
    this->HP += amount;
    if (this->HP > this->MaxHP){
        this->HP = this->MaxHP;
    }
    if (this->HP <= 0){
        this->HP = 1;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rcx
movq %rcx, -0x18(%rbp)
movl -0xc(%rbp), %eax
addl 0x10(%rcx), %eax
movl %eax, 0x10(%rcx)
movl 0x10(%rcx), %eax
cmpl 0x44(%rcx), %eax
jle 0x11cae
movq -0x18(%rbp), %rax
movl 0x44(%rax), %ecx
movl %ecx, 0x10(%rax)
movq -0x18(%rbp), %rax
cmpl $0x0, 0x10(%rax)
jg 0x11cc3
movq -0x18(%rbp), %rax
movl $0x1, 0x10(%rax)
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: 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
subq $0x30, %rsp
movq %rcx, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x30(%rbp)
callq 0x12b00
movq -0x30(%rbp), %rdi
leaq 0x13bc2(%rip), %rax     # 0x26530
movq %rax, (%rdi)
movl $0x14, 0x8(%rdi)
movl $0x14, 0xc(%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x10(%rdi)
movl -0x18(%rbp), %eax
movl %eax, 0x14(%rdi)
addq $0x18, %rdi
leaq 0xbf6a(%rip), %rsi      # 0x1e900
callq 0x4260
jmp 0x1299d
movq -0x30(%rbp), %rdi
movb $0x40, 0x38(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x129b4
movq -0x30(%rbp), %rax
movl $0x8c, 0x44(%rax)
movb $0x0, 0x48(%rax)
addq $0x30, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x11e50
movq -0x20(%rbp), %rdi
callq 0x42f0
nopw (%rax,%rax)
// File: 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
subq $0x40, %rsp
movb 0x10(%rbp), %al
movq %rcx, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movl %r8d, -0x1c(%rbp)
movl %r9d, -0x20(%rbp)
andb $0x1, %al
movb %al, -0x21(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x40(%rbp)
callq 0x12b00
movq -0x40(%rbp), %rdi
leaq 0x13b02(%rip), %rax     # 0x26530
movq %rax, (%rdi)
movl -0x1c(%rbp), %eax
movl %eax, 0x8(%rdi)
movl -0x20(%rbp), %eax
movl %eax, 0xc(%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x10(%rdi)
movl -0x18(%rbp), %eax
movl %eax, 0x14(%rdi)
addq $0x18, %rdi
leaq 0xbeac(%rip), %rsi      # 0x1e900
callq 0x4260
jmp 0x12a5b
movq -0x40(%rbp), %rdi
movb $0x40, 0x38(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x12a72
movq -0x40(%rbp), %rax
movl $0x8c, 0x44(%rax)
movb -0x21(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x48(%rax)
addq $0x40, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
callq 0x11e50
movq -0x30(%rbp), %rdi
callq 0x42f0
nopw (%rax,%rax)
// File: 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
subq $0x30, %rsp
movq %rcx, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x30(%rbp)
callq 0x12b00
movq -0x30(%rbp), %rdi
leaq 0x139ea(%rip), %rax     # 0x265c8
movq %rax, (%rdi)
movl $0x1e, 0x8(%rdi)
movl $0x19, 0xc(%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x10(%rdi)
movl -0x18(%rbp), %eax
movl %eax, 0x14(%rdi)
addq $0x18, %rdi
leaq 0xbd1a(%rip), %rsi      # 0x1e920
callq 0x4260
jmp 0x12c0d
movq -0x30(%rbp), %rdi
movb $0x40, 0x38(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x12c24
movq -0x30(%rbp), %rax
movl $0x708, 0x44(%rax)      # imm = 0x708
movb $0x0, 0x48(%rax)
addq $0x30, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x11e50
movq -0x20(%rbp), %rdi
callq 0x42f0
nopw (%rax,%rax)
// File: 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
subq $0x40, %rsp
movb 0x10(%rbp), %al
movq %rcx, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movl %r8d, -0x1c(%rbp)
movl %r9d, -0x20(%rbp)
andb $0x1, %al
movb %al, -0x21(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x40(%rbp)
callq 0x12b00
movq -0x40(%rbp), %rdi
leaq 0x1392a(%rip), %rax     # 0x265c8
movq %rax, (%rdi)
movl -0x1c(%rbp), %eax
movl %eax, 0x8(%rdi)
movl -0x20(%rbp), %eax
movl %eax, 0xc(%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x10(%rdi)
movl -0x18(%rbp), %eax
movl %eax, 0x14(%rdi)
addq $0x18, %rdi
leaq 0xbc5c(%rip), %rsi      # 0x1e920
callq 0x4260
jmp 0x12ccb
movq -0x40(%rbp), %rdi
movb $0x40, 0x38(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x12ce2
movq -0x40(%rbp), %rax
movl $0x708, 0x44(%rax)      # imm = 0x708
movb -0x21(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x48(%rax)
addq $0x40, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
callq 0x11e50
movq -0x30(%rbp), %rdi
callq 0x42f0
nopw (%rax,%rax)
// File: 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
subq $0x30, %rsp
movq %rcx, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x30(%rbp)
callq 0x12b00
movq -0x30(%rbp), %rdi
leaq 0x12992(%rip), %rax     # 0x26660
movq %rax, (%rdi)
movl $0x1e, 0x8(%rdi)
movl $0xa, 0xc(%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x10(%rdi)
movl -0x18(%rbp), %eax
movl %eax, 0x14(%rdi)
addq $0x18, %rdi
leaq 0xa8c4(%rip), %rsi      # 0x1e5ba
callq 0x4260
jmp 0x13cfd
movq -0x30(%rbp), %rdi
movb $0x40, 0x38(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x13d14
movq -0x30(%rbp), %rax
movl $0x8c, 0x44(%rax)
movb $0x0, 0x48(%rax)
addq $0x30, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x11e50
movq -0x20(%rbp), %rdi
callq 0x42f0
nopw (%rax,%rax)
// File: 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
subq $0x40, %rsp
movb 0x10(%rbp), %al
movq %rcx, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movl %r8d, -0x1c(%rbp)
movl %r9d, -0x20(%rbp)
andb $0x1, %al
movb %al, -0x21(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x40(%rbp)
callq 0x12b00
movq -0x40(%rbp), %rdi
leaq 0x128d2(%rip), %rax     # 0x26660
movq %rax, (%rdi)
movl -0x1c(%rbp), %eax
movl %eax, 0x8(%rdi)
movl -0x20(%rbp), %eax
movl %eax, 0xc(%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x10(%rdi)
movl -0x18(%rbp), %eax
movl %eax, 0x14(%rdi)
addq $0x18, %rdi
leaq 0xa806(%rip), %rsi      # 0x1e5ba
callq 0x4260
jmp 0x13dbb
movq -0x40(%rbp), %rdi
movb $0x40, 0x38(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x13dd2
movq -0x40(%rbp), %rax
movl $0x8c, 0x44(%rax)
movb -0x21(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x48(%rax)
addq $0x40, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
callq 0x11e50
movq -0x30(%rbp), %rdi
callq 0x42f0
nopw (%rax,%rax)
// File: 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
subq $0x30, %rsp
movq %rcx, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x30(%rbp)
callq 0x12b00
movq -0x30(%rbp), %rdi
leaq 0x1200a(%rip), %rax     # 0x266f8
movq %rax, (%rdi)
movl $0x14, 0x8(%rdi)
movl $0x1e, 0xc(%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x10(%rdi)
movl -0x18(%rbp), %eax
movl %eax, 0x14(%rdi)
addq $0x18, %rdi
leaq 0xa297(%rip), %rsi      # 0x1e9ad
callq 0x4260
jmp 0x1471d
movq -0x30(%rbp), %rdi
movb $0x40, 0x38(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x14734
movq -0x30(%rbp), %rax
movl $0x3e8, 0x44(%rax)      # imm = 0x3E8
movb $0x0, 0x48(%rax)
addq $0x30, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x11e50
movq -0x20(%rbp), %rdi
callq 0x42f0
nopw (%rax,%rax)
// File: 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
subq $0x40, %rsp
movb 0x10(%rbp), %al
movq %rcx, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movl %edx, -0x18(%rbp)
movl %r8d, -0x1c(%rbp)
movl %r9d, -0x20(%rbp)
andb $0x1, %al
movb %al, -0x21(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x40(%rbp)
callq 0x12b00
movq -0x40(%rbp), %rdi
leaq 0x11f4a(%rip), %rax     # 0x266f8
movq %rax, (%rdi)
movl -0x1c(%rbp), %eax
movl %eax, 0x8(%rdi)
movl -0x20(%rbp), %eax
movl %eax, 0xc(%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x10(%rdi)
movl -0x18(%rbp), %eax
movl %eax, 0x14(%rdi)
addq $0x18, %rdi
leaq 0xa1d9(%rip), %rsi      # 0x1e9ad
callq 0x4260
jmp 0x147db
movq -0x40(%rbp), %rdi
movb $0x40, 0x38(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x147f2
movq -0x40(%rbp), %rax
movl $0x3e8, 0x44(%rax)      # imm = 0x3E8
movb -0x21(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x48(%rax)
addq $0x40, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
callq 0x11e50
movq -0x30(%rbp), %rdi
callq 0x42f0
nopw (%rax,%rax)
// File: 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
subq $0x30, %rsp
movq %rsi, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x30(%rbp)
callq 0x157d0
movq -0x30(%rbp), %rdi
leaq 0x11605(%rip), %rax     # 0x26790
movq %rax, (%rdi)
movl $0x5, 0x8(%rdi)
movl $0xa, 0xc(%rdi)
movl $0x46, 0x10(%rdi)
movl $0x1, 0x14(%rdi)
addq $0x18, %rdi
leaq 0x98d4(%rip), %rsi      # 0x1ea89
callq 0x4260
jmp 0x151bc
movq -0x30(%rbp), %rdi
movb $0x4e, 0x38(%rdi)
movb $0x0, 0x44(%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x48(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x151dd
movq -0x30(%rbp), %rax
movb $0x0, 0x39(%rax)
addq $0x30, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x128f0
movq -0x20(%rbp), %rdi
callq 0x42f0
nopl (%rax)
// File: malcolmyeh[P]CC3K/merchant.cc
// Function: Merchant::Merchant(Posn, int)
Merchant::Merchant(Posn position, int chamberID)
{
    this->Atk = 70;
    this->Def = 5;
    this->HP = 30;
    this->gold = 4;
    this->race = "Merchant";
    this->symbol = 'M';
    this->hasCompass = false;
    this->chamberID = chamberID;
    this->position = position;
    this->stunned = false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rsi, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x30(%rbp)
callq 0x157d0
movq -0x30(%rbp), %rdi
leaq 0x10ff5(%rip), %rax     # 0x26830
movq %rax, (%rdi)
movl $0x46, 0x8(%rdi)
movl $0x5, 0xc(%rdi)
movl $0x1e, 0x10(%rdi)
movl $0x4, 0x14(%rdi)
addq $0x18, %rdi
leaq 0x89b9(%rip), %rsi      # 0x1e21e
callq 0x4260
jmp 0x1586c
movq -0x30(%rbp), %rdi
movb $0x4d, 0x38(%rdi)
movb $0x0, 0x44(%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x48(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x1588d
movq -0x30(%rbp), %rax
movb $0x0, 0x39(%rax)
addq $0x30, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x128f0
movq -0x20(%rbp), %rdi
callq 0x42f0
nopl (%rax)
// File: 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
subq $0x30, %rsp
movq %rsi, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x30(%rbp)
callq 0x157d0
movq -0x30(%rbp), %rdi
leaq 0x10f95(%rip), %rax     # 0x268d0
movq %rax, (%rdi)
movl $0x23, 0x8(%rdi)
movl $0x14, 0xc(%rdi)
movl $0x32, 0x10(%rdi)
movl $0x1, 0x14(%rdi)
addq $0x18, %rdi
leaq 0x916b(%rip), %rsi      # 0x1ead0
callq 0x4260
jmp 0x1596c
movq -0x30(%rbp), %rdi
movb $0x58, 0x38(%rdi)
movb $0x0, 0x44(%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x48(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x1598d
movq -0x30(%rbp), %rax
movb $0x0, 0x39(%rax)
addq $0x30, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x128f0
movq -0x20(%rbp), %rdi
callq 0x42f0
nopl (%rax)
// File: 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
subq $0x30, %rsp
movq %rsi, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x30(%rbp)
callq 0x157d0
movq -0x30(%rbp), %rdi
leaq 0x106e5(%rip), %rax     # 0x26970
movq %rax, (%rdi)
movl $0x19, 0x8(%rdi)
movl $0xf, 0xc(%rdi)
movl $0x78, 0x10(%rdi)
movl $0x1, 0x14(%rdi)
addq $0x18, %rdi
leaq 0x8893(%rip), %rsi      # 0x1eb48
callq 0x4260
jmp 0x162bc
movq -0x30(%rbp), %rdi
movb $0x54, 0x38(%rdi)
movb $0x0, 0x44(%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x48(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x162dd
movq -0x30(%rbp), %rax
movb $0x0, 0x39(%rax)
addq $0x30, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x128f0
movq -0x20(%rbp), %rdi
callq 0x42f0
nopl (%rax)
// File: 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
subq $0x30, %rsp
movq %rsi, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x30(%rbp)
callq 0x157d0
movq -0x30(%rbp), %rdi
leaq 0xfb95(%rip), %rax      # 0x26a10
movq %rax, (%rdi)
movl $0x19, 0x8(%rdi)
movl $0x19, 0xc(%rdi)
movl $0x32, 0x10(%rdi)
movl $0x1, 0x14(%rdi)
addq $0x18, %rdi
leaq 0x7cfb(%rip), %rsi      # 0x1eba0
callq 0x4260
jmp 0x16eac
movq -0x30(%rbp), %rdi
movb $0x56, 0x38(%rdi)
movb $0x0, 0x44(%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x48(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x16ecd
movq -0x30(%rbp), %rax
movb $0x0, 0x39(%rax)
addq $0x30, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x128f0
movq -0x20(%rbp), %rdi
callq 0x42f0
nopl (%rax)
// File: 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
subq $0x30, %rsp
movq %rsi, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x30(%rbp)
callq 0x157d0
movq -0x30(%rbp), %rdi
leaq 0xf545(%rip), %rax      # 0x26ab0
movq %rax, (%rdi)
movl $0x1e, 0x8(%rdi)
movl $0x5, 0xc(%rdi)
movl $0x78, 0x10(%rdi)
movl $0x1, 0x14(%rdi)
addq $0x18, %rdi
leaq 0x7634(%rip), %rsi      # 0x1ebc9
callq 0x4260
jmp 0x1759c
movq -0x30(%rbp), %rdi
movb $0x57, 0x38(%rdi)
movb $0x0, 0x44(%rdi)
movl -0x14(%rbp), %eax
movl %eax, 0x48(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x175bd
movq -0x30(%rbp), %rax
movb $0x0, 0x39(%rax)
addq $0x30, %rsp
popq %rbp
retq
movq -0x30(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x128f0
movq -0x20(%rbp), %rdi
callq 0x42f0
nopl (%rax)
// File: 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
subq $0x30, %rsp
movq %rsi, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x28(%rbp)
callq 0x18380
movq -0x28(%rbp), %rdi
addq $0x4, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x18180
movq -0x28(%rbp), %rdi
movb $0x47, (%rdi)
addq $0x18, %rdi
leaq 0x6acb(%rip), %rsi      # 0x1ec5d
callq 0x4260
jmp 0x18199
movq -0x28(%rbp), %rax
movl $0x2, 0xc(%rax)
movb $0x0, 0x10(%rax)
addq $0x30, %rsp
popq %rbp
retq
movq -0x28(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0xd3b0
movq -0x18(%rbp), %rdi
callq 0x42f0
nopl (%rax)
// File: malcolmyeh[P]CC3K/gold.cc
// Function: smallHoard::smallHoard(Posn)
smallHoard::smallHoard(Posn p) {
    this->p = p;
    this->symbol = 'G';
    this->type = "smallHoard";
    this->value = 1;
    this->guarded = false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rsi, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x28(%rbp)
callq 0x18380
movq -0x28(%rbp), %rdi
addq $0x4, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x18200
movq -0x28(%rbp), %rdi
movb $0x47, (%rdi)
addq $0x18, %rdi
leaq 0x6a57(%rip), %rsi      # 0x1ec69
callq 0x4260
jmp 0x18219
movq -0x28(%rbp), %rax
movl $0x1, 0xc(%rax)
movb $0x0, 0x10(%rax)
addq $0x30, %rsp
popq %rbp
retq
movq -0x28(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0xd3b0
movq -0x18(%rbp), %rdi
callq 0x42f0
nopl (%rax)
// File: 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
subq $0x30, %rsp
movq %rsi, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x28(%rbp)
callq 0x18380
movq -0x28(%rbp), %rdi
addq $0x4, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x18280
movq -0x28(%rbp), %rdi
addq $0x18, %rdi
leaq 0x69e5(%rip), %rsi      # 0x1ec74
callq 0x4260
jmp 0x18296
movq -0x28(%rbp), %rax
movb $0x47, (%rax)
movl $0x6, 0xc(%rax)
movb $0x1, 0x10(%rax)
addq $0x30, %rsp
popq %rbp
retq
movq -0x28(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
callq 0xd3b0
movq -0x18(%rbp), %rdi
callq 0x42f0
nopl (%rax)
// File: 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
subq $0x40, %rsp
movq %rsi, -0x8(%rbp)
movq %rdi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq %rcx, -0x20(%rbp)
movl %r8d, -0x24(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x40(%rbp)
callq 0x157d0
movq -0x40(%rbp), %rdi
leaq 0xe6cc(%rip), %rax      # 0x26b50
movq %rax, (%rdi)
movl $0x14, 0x8(%rdi)
movl $0x14, 0xc(%rdi)
movl $0x96, 0x10(%rdi)
movl $0x0, 0x14(%rdi)
addq $0x18, %rdi
leaq 0x5d79(%rip), %rsi      # 0x1e227
callq 0x4260
jmp 0x184b5
movq -0x40(%rbp), %rdi
movb $0x44, 0x38(%rdi)
movb $0x0, 0x44(%rdi)
movl -0x24(%rbp), %eax
movl %eax, 0x48(%rdi)
addq $0x3c, %rdi
leaq -0x8(%rbp), %rsi
callq 0x5470
jmp 0x184d6
movq -0x40(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, 0x50(%rax)
movq -0x20(%rbp), %rcx
movq %rcx, 0x58(%rax)
movb $0x0, 0x39(%rax)
addq $0x40, %rsp
popq %rbp
retq
movq -0x40(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x30(%rbp)
movl %eax, -0x34(%rbp)
callq 0x128f0
movq -0x30(%rbp), %rdi
callq 0x42f0
nopw %cs:(%rax,%rax)