// File: malcolmyeh[P]CC3K/floor.cc
// Function: Floor::actEnemy[abi:cxx11]()
std::string Floor::actEnemy() {
	std::string combatLog;
	std::string dir[8] = {"ea", "we", "no", "so", "ne", "nw", "sw", "se"};
	for (int i = 0; i < enemies.size(); ++i) {
		Enemy *e = enemies.at(i);
		if ((e->withinRange(this->player->getPosition()) && e->getRace() != "Merchant") ||
		(e->getRace() == "Merchant" && this->getHostile() && e->withinRange(this->player->getPosition()))) {
			combatLog += e->dealDamage(this->player);
		} else if (e->getRace() != "Dragon"){
			Posn p;
			do {
				int num = rand() % 8;
				p = e->getPosition().getNew(dir[num]);
			} while(!validTile(p));
			displayGrid[e->getPosition().y][e->getPosition().x] = '.';
			e->move(p);
			displayGrid[e->getPosition().y][e->getPosition().x] = e->getSymbol();
		}
	}
	return combatLog; 
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3e0, %rsp            # imm = 0x3E0
movq %rdi, -0x288(%rbp)
movq %rdi, %rax
movq %rax, -0x280(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x278(%rbp)
movb $0x0, -0x11(%rbp)
callq 0x4280
movb $0x1, -0x144(%rbp)
leaq -0x120(%rbp), %rax
movq %rax, -0x270(%rbp)
movq %rax, -0x128(%rbp)
leaq -0x129(%rbp), %rdi
movq %rdi, -0x268(%rbp)
callq 0x4300
movq -0x270(%rbp), %rdi
movq -0x268(%rbp), %rdx
leaq 0x15f17(%rip), %rsi     # 0x1e1a3
callq 0x4270
jmp 0x8293
leaq -0x100(%rbp), %rax
movq %rax, -0x298(%rbp)
movq %rax, -0x128(%rbp)
leaq -0x13d(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x4300
movq -0x298(%rbp), %rdi
movq -0x290(%rbp), %rdx
leaq 0x15ed6(%rip), %rsi     # 0x1e1a6
callq 0x4270
jmp 0x82d7
leaq -0xe0(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq %rax, -0x128(%rbp)
leaq -0x13e(%rbp), %rdi
movq %rdi, -0x2a0(%rbp)
callq 0x4300
movq -0x2a8(%rbp), %rdi
movq -0x2a0(%rbp), %rdx
leaq 0x15e95(%rip), %rsi     # 0x1e1a9
callq 0x4270
jmp 0x831b
leaq -0xc0(%rbp), %rax
movq %rax, -0x2b8(%rbp)
movq %rax, -0x128(%rbp)
leaq -0x13f(%rbp), %rdi
movq %rdi, -0x2b0(%rbp)
callq 0x4300
movq -0x2b8(%rbp), %rdi
movq -0x2b0(%rbp), %rdx
leaq 0x15e54(%rip), %rsi     # 0x1e1ac
callq 0x4270
jmp 0x835f
leaq -0xa0(%rbp), %rax
movq %rax, -0x2c8(%rbp)
movq %rax, -0x128(%rbp)
leaq -0x140(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x4300
movq -0x2c8(%rbp), %rdi
movq -0x2c0(%rbp), %rdx
leaq 0x15e13(%rip), %rsi     # 0x1e1af
callq 0x4270
jmp 0x83a3
leaq -0x80(%rbp), %rax
movq %rax, -0x2d8(%rbp)
movq %rax, -0x128(%rbp)
leaq -0x141(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
callq 0x4300
movq -0x2d8(%rbp), %rdi
movq -0x2d0(%rbp), %rdx
leaq 0x15dd5(%rip), %rsi     # 0x1e1b2
callq 0x4270
jmp 0x83e4
leaq -0x60(%rbp), %rax
movq %rax, -0x2e8(%rbp)
movq %rax, -0x128(%rbp)
leaq -0x142(%rbp), %rdi
movq %rdi, -0x2e0(%rbp)
callq 0x4300
movq -0x2e8(%rbp), %rdi
movq -0x2e0(%rbp), %rdx
leaq 0x15d9a(%rip), %rsi     # 0x1e1b8
callq 0x4270
jmp 0x8425
leaq -0x40(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movq %rax, -0x128(%rbp)
leaq -0x143(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0x4300
movq -0x2f8(%rbp), %rdi
movq -0x2f0(%rbp), %rdx
leaq 0x15d56(%rip), %rsi     # 0x1e1b5
callq 0x4270
jmp 0x8466
movb $0x0, -0x144(%rbp)
leaq -0x143(%rbp), %rdi
callq 0x4200
leaq -0x142(%rbp), %rdi
callq 0x4200
leaq -0x141(%rbp), %rdi
callq 0x4200
leaq -0x140(%rbp), %rdi
callq 0x4200
leaq -0x13f(%rbp), %rdi
callq 0x4200
leaq -0x13e(%rbp), %rdi
callq 0x4200
leaq -0x13d(%rbp), %rdi
callq 0x4200
leaq -0x129(%rbp), %rdi
callq 0x4200
movl $0x0, -0x148(%rbp)
movq -0x278(%rbp), %rdi
movslq -0x148(%rbp), %rax
movq %rax, -0x300(%rbp)
addq $0x7c0, %rdi            # imm = 0x7C0
callq 0xd0a0
movq %rax, %rcx
movq -0x300(%rbp), %rax
cmpq %rcx, %rax
jae 0x8c88
movq -0x278(%rbp), %rdi
addq $0x7c0, %rdi            # imm = 0x7C0
movslq -0x148(%rbp), %rsi
callq 0xd0c0
movq %rax, -0x308(%rbp)
jmp 0x852e
movq -0x278(%rbp), %rax
movq -0x308(%rbp), %rcx
movq (%rcx), %rcx
movq %rcx, -0x150(%rbp)
movq -0x150(%rbp), %rcx
movq %rcx, -0x318(%rbp)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
movb $0x0, -0x179(%rbp)
movb $0x0, -0x1a1(%rbp)
callq *%rax
movq %rax, -0x310(%rbp)
jmp 0x857b
movq -0x318(%rbp), %rdi
movq -0x310(%rbp), %rax
movq %rax, -0x158(%rbp)
movq -0x158(%rbp), %rsi
callq 0x11ee0
movb %al, -0x319(%rbp)
jmp 0x85a4
movb -0x319(%rbp), %al
testb $0x1, %al
jne 0x85b0
jmp 0x8604
movq -0x150(%rbp), %rsi
movq (%rsi), %rax
movq 0x28(%rax), %rax
leaq -0x178(%rbp), %rdi
callq *%rax
jmp 0x85c9
movb $0x1, -0x179(%rbp)
leaq 0x15c47(%rip), %rsi     # 0x1e21e
leaq -0x178(%rbp), %rdi
callq 0x51d0
movb %al, -0x31a(%rbp)
jmp 0x85eb
movb -0x31a(%rbp), %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x31b(%rbp)
jne 0x86f1
jmp 0x8604
movq -0x150(%rbp), %rsi
movq (%rsi), %rax
movq 0x28(%rax), %rax
leaq -0x1a0(%rbp), %rdi
callq *%rax
jmp 0x861d
movb $0x1, -0x1a1(%rbp)
leaq 0x15bf3(%rip), %rsi     # 0x1e21e
leaq -0x1a0(%rbp), %rdi
callq 0x5210
movb %al, -0x31c(%rbp)
jmp 0x863f
movb -0x31c(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x31d(%rbp)
jne 0x8657
jmp 0x86e5
movq -0x278(%rbp), %rdi
callq 0x8d70
movb %al, -0x31e(%rbp)
jmp 0x866b
movb -0x31e(%rbp), %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0x31d(%rbp)
jne 0x8680
jmp 0x86e5
movq -0x278(%rbp), %rax
movq -0x150(%rbp), %rcx
movq %rcx, -0x330(%rbp)
movq 0xfe0(%rax), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
movq %rax, -0x328(%rbp)
jmp 0x86ae
movq -0x330(%rbp), %rdi
movq -0x328(%rbp), %rax
movq %rax, -0x1ac(%rbp)
movq -0x1ac(%rbp), %rsi
callq 0x11ee0
movb %al, -0x331(%rbp)
jmp 0x86d7
movb -0x331(%rbp), %al
movb %al, -0x31d(%rbp)
jmp 0x86e5
movb -0x31d(%rbp), %al
movb %al, -0x31b(%rbp)
movb -0x31b(%rbp), %al
movb %al, -0x332(%rbp)
testb $0x1, -0x1a1(%rbp)
jne 0x8708
jmp 0x8714
leaq -0x1a0(%rbp), %rdi
callq 0x4130
testb $0x1, -0x179(%rbp)
jne 0x871f
jmp 0x872b
leaq -0x178(%rbp), %rdi
callq 0x4130
movb -0x332(%rbp), %al
testb $0x1, %al
jne 0x873a
jmp 0x8980
movq -0x278(%rbp), %rax
movq -0x150(%rbp), %rsi
movq 0xfe0(%rax), %rdx
movq (%rsi), %rax
movq 0x50(%rax), %rax
leaq -0x1d0(%rbp), %rdi
callq *%rax
jmp 0x8761
movq -0x288(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x4240
jmp 0x8776
leaq -0x1d0(%rbp), %rdi
callq 0x4130
jmp 0x8c72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x8882
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x8876
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x886a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x885e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x8852
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x8846
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x883a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x143(%rbp), %rdi
callq 0x4200
leaq -0x142(%rbp), %rdi
callq 0x4200
leaq -0x141(%rbp), %rdi
callq 0x4200
leaq -0x140(%rbp), %rdi
callq 0x4200
leaq -0x13f(%rbp), %rdi
callq 0x4200
leaq -0x13e(%rbp), %rdi
callq 0x4200
leaq -0x13d(%rbp), %rdi
callq 0x4200
leaq -0x129(%rbp), %rdi
callq 0x4200
testb $0x1, -0x144(%rbp)
jne 0x8899
jmp 0x88e6
movq -0x128(%rbp), %rax
leaq -0x120(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x340(%rbp)
je 0x88e4
movq -0x340(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x348(%rbp)
callq 0x4130
movq -0x348(%rbp), %rax
leaq -0x120(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x340(%rbp)
jne 0x88b3
jmp 0x88e6
jmp 0x8d4a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x8ce0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x8941
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
testb $0x1, -0x1a1(%rbp)
jne 0x8933
jmp 0x893f
leaq -0x1a0(%rbp), %rdi
callq 0x4130
jmp 0x8941
testb $0x1, -0x179(%rbp)
jne 0x894c
jmp 0x8958
leaq -0x178(%rbp), %rdi
callq 0x4130
jmp 0x8ce0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x4130
jmp 0x8ce0
movq -0x150(%rbp), %rsi
movq (%rsi), %rax
movq 0x28(%rax), %rax
leaq -0x1f0(%rbp), %rdi
callq *%rax
jmp 0x8999
leaq 0x15887(%rip), %rsi     # 0x1e227
leaq -0x1f0(%rbp), %rdi
callq 0x51d0
movb %al, -0x349(%rbp)
jmp 0x89b4
leaq -0x1f0(%rbp), %rdi
callq 0x4130
movb -0x349(%rbp), %al
testb $0x1, %al
jne 0x89cf
jmp 0x8c70
leaq -0x1f8(%rbp), %rdi
callq 0x54a0
jmp 0x89dd
jmp 0x89df
callq 0x4090
movl %eax, %edx
addl $0x7, %edx
testl %eax, %eax
movl %eax, %ecx
cmovsl %edx, %ecx
andl $-0x8, %ecx
subl %ecx, %eax
movl %eax, -0x1fc(%rbp)
movq -0x150(%rbp), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
movq %rax, -0x358(%rbp)
jmp 0x8a14
movq -0x358(%rbp), %rax
movq %rax, -0x20c(%rbp)
movslq -0x1fc(%rbp), %rax
shlq $0x5, %rax
leaq -0x120(%rbp,%rax), %rsi
leaq -0x230(%rbp), %rdi
callq 0x40e0
jmp 0x8a43
leaq -0x20c(%rbp), %rdi
leaq -0x230(%rbp), %rsi
callq 0x5240
movq %rax, -0x360(%rbp)
jmp 0x8a5f
movq -0x360(%rbp), %rax
movq %rax, -0x204(%rbp)
leaq -0x1f8(%rbp), %rdi
leaq -0x204(%rbp), %rsi
callq 0x5470
jmp 0x8a82
leaq -0x230(%rbp), %rdi
callq 0x4130
movq -0x278(%rbp), %rdi
movq -0x1f8(%rbp), %rax
movq %rax, -0x238(%rbp)
movq -0x238(%rbp), %rsi
callq 0x63d0
movb %al, -0x361(%rbp)
jmp 0x8ab7
movb -0x361(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x89df
movq -0x278(%rbp), %rax
addq $0x820, %rax            # imm = 0x820
movq %rax, -0x378(%rbp)
movq -0x150(%rbp), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
movq %rax, -0x370(%rbp)
jmp 0x8af4
movq -0x378(%rbp), %rax
movq -0x370(%rbp), %rcx
movq %rcx, -0x240(%rbp)
movslq -0x23c(%rbp), %rcx
imulq $0x4f, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x388(%rbp)
movq -0x150(%rbp), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
movq %rax, -0x380(%rbp)
jmp 0x8b37
movq -0x388(%rbp), %rax
movq -0x380(%rbp), %rcx
movq %rcx, -0x248(%rbp)
movslq -0x248(%rbp), %rcx
movb $0x2e, (%rax,%rcx)
movq -0x150(%rbp), %rdi
movq -0x1f8(%rbp), %rax
movq %rax, -0x250(%rbp)
movq -0x250(%rbp), %rsi
movq (%rdi), %rax
movq 0x40(%rax), %rax
callq *%rax
jmp 0x8b7e
movq -0x150(%rbp), %rdi
movq (%rdi), %rax
movq 0x30(%rax), %rax
callq *%rax
movb %al, -0x389(%rbp)
jmp 0x8b96
movq -0x278(%rbp), %rax
addq $0x820, %rax            # imm = 0x820
movq %rax, -0x3a0(%rbp)
movq -0x150(%rbp), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
movq %rax, -0x398(%rbp)
jmp 0x8bc3
movq -0x3a0(%rbp), %rax
movq -0x398(%rbp), %rcx
movq %rcx, -0x258(%rbp)
movslq -0x254(%rbp), %rcx
imulq $0x4f, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x3b0(%rbp)
movq -0x150(%rbp), %rdi
movq (%rdi), %rax
movq 0x38(%rax), %rax
callq *%rax
movq %rax, -0x3a8(%rbp)
jmp 0x8c06
movq -0x3b0(%rbp), %rax
movb -0x389(%rbp), %dl
movq -0x3a8(%rbp), %rcx
movq %rcx, -0x260(%rbp)
movslq -0x260(%rbp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x8c70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x4130
jmp 0x8ce0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x230(%rbp), %rdi
callq 0x4130
jmp 0x8ce0
jmp 0x8c72
jmp 0x8c74
movl -0x148(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x148(%rbp)
jmp 0x84d7
movb $0x1, -0x11(%rbp)
leaq -0x120(%rbp), %rax
movq %rax, -0x3c0(%rbp)
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x3b8(%rbp)
movq -0x3b8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x3c8(%rbp)
callq 0x4130
movq -0x3c0(%rbp), %rcx
movq -0x3c8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x3b8(%rbp)
jne 0x8ca7
testb $0x1, -0x11(%rbp)
jne 0x8d3a
jmp 0x8d2e
leaq -0x120(%rbp), %rax
movq %rax, -0x3d8(%rbp)
addq $0x100, %rax            # imm = 0x100
movq %rax, -0x3d0(%rbp)
movq -0x3d0(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x3e0(%rbp)
callq 0x4130
movq -0x3d8(%rbp), %rcx
movq -0x3e0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x3d0(%rbp)
jne 0x8cfb
jmp 0x8d4a
movq -0x288(%rbp), %rdi
callq 0x4130
movq -0x280(%rbp), %rax
addq $0x3e0, %rsp            # imm = 0x3E0
popq %rbp
retq
movq -0x288(%rbp), %rdi
callq 0x4130
movq -0x138(%rbp), %rdi
callq 0x42f0
nopw %cs:(%rax,%rax)