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

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xb8, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r13
movq 0xfe0(%rsi), %rdi
movq (%rdi), %rax
callq *0x38(%rax)
leaq -0xb0(%rbp), %r15
movq %rax, (%r15)
leaq -0xd0(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq -0xe0(%rbp), %rbx
movq %rbx, %rdi
callq 0xa4be
movq %r15, %rdi
movq %rbx, %rsi
callq 0x50b8
movq %r13, -0xc0(%rbp)
movq %rax, -0xb8(%rbp)
movq -0xe0(%rbp), %rdi
cmpq %r12, %rdi
je 0x8f9d
movq -0xd0(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0xa0(%rbp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x7f0(%r14), %rax
cmpq %rax, 0x7f8(%r14)
je 0x9011
xorl %r13d, %r13d
leaq -0xb8(%rbp), %rbx
leaq -0x48(%rbp), %r12
xorl %r15d, %r15d
movq (%rax,%r13), %rdi
callq 0x15c2c
movq %rax, -0x48(%rbp)
movq %rbx, %rdi
movq %r12, %rsi
callq 0x51ba
testb %al, %al
jne 0x9060
incq %r15
movq 0x7f0(%r14), %rax
movq 0x7f8(%r14), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
addq $0x8, %r13
cmpq %r15, %rcx
ja 0x8fd4
movq -0xc0(%rbp), %rbx
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x1474b(%rip), %rsi     # 0x1d771
leaq 0x1475c(%rip), %rdx     # 0x1d789
movq %rbx, %rdi
callq 0x501a
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x9af0
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x9af0
movq 0x7f0(%r14), %rax
movq 0x7f8(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r15, %rdx
jbe 0x9bfd
movq (%rax,%r13), %rsi
leaq -0x48(%rbp), %rdi
callq 0x17168
leaq 0x14226(%rip), %rsi     # 0x1d2b8
leaq -0x48(%rbp), %r12
movq %r12, %rdi
callq 0x4070
movl %eax, %ebx
movq (%r12), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x90b9
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
testl %ebx, %ebx
je 0x934d
movq 0x7f0(%r14), %rax
movq 0x7f8(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r15, %rdx
jbe 0x9c22
movq (%rax,%r13), %rsi
leaq -0x48(%rbp), %rdi
callq 0x17168
leaq 0x141c8(%rip), %rsi     # 0x1d2bb
movq %r12, %rdi
callq 0x4070
movl %eax, %ebx
movq (%r12), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x9116
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
testl %ebx, %ebx
je 0x93d7
movq 0x7f0(%r14), %rax
movq 0x7f8(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r15, %rdx
jbe 0x9c33
movq (%rax,%r13), %rsi
leaq -0x48(%rbp), %rdi
callq 0x17168
leaq 0x1416e(%rip), %rsi     # 0x1d2be
movq %r12, %rdi
callq 0x4070
movl %eax, %ebx
movq (%r12), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x9173
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
testl %ebx, %ebx
je 0x9475
movq 0x7f0(%r14), %rax
movq 0x7f8(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r15, %rdx
jbe 0x9c44
movq (%rax,%r13), %rsi
leaq -0x48(%rbp), %rdi
callq 0x17168
leaq 0x14114(%rip), %rsi     # 0x1d2c1
movq %r12, %rdi
callq 0x4070
movl %eax, %ebx
movq (%r12), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x91d0
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
testl %ebx, %ebx
je 0x9513
movq 0x7f0(%r14), %rax
movq 0x7f8(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r15, %rdx
jbe 0x9c55
movq (%rax,%r13), %rsi
leaq -0x48(%rbp), %rdi
callq 0x17168
leaq 0x140ba(%rip), %rsi     # 0x1d2c4
movq %r12, %rdi
callq 0x4070
movl %eax, %ebx
movq (%r12), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x922d
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
testl %ebx, %ebx
je 0x95ba
movq 0x7f0(%r14), %rax
movq 0x7f8(%r14), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r15, %rdx
jbe 0x9c66
movq (%rax,%r13), %rsi
leaq -0x48(%rbp), %rdi
callq 0x17168
leaq 0x14060(%rip), %rsi     # 0x1d2c7
movq %r12, %rdi
callq 0x4070
movl %eax, %ebx
movq (%r12), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x928a
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
testl %ebx, %ebx
jne 0x9a0e
movb $0x1, 0xff5(%r14)
movq 0xfe0(%r14), %rsi
movq (%rsi), %rax
leaq -0x48(%rbp), %rdi
callq *0x28(%rax)
leaq 0x143b4(%rip), %rsi     # 0x1d666
movq %r12, %rdi
callq 0x4070
movl %eax, %ebx
movq (%r12), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x92d5
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
testl %ebx, %ebx
je 0x9b05
movl $0x60, %edi
callq 0x4160
movq %rax, %r12
movq 0xfe0(%r14), %rsi
movq %rax, %rdi
movl $0xfffffffb, %edx       # imm = 0xFFFFFFFB
callq 0x1ccdc
movq %r12, 0xfe0(%r14)
movq (%r12), %rax
movq %r12, %rdi
callq *0x10(%rax)
leaq -0x38(%rbp), %rbx
leaq -0x68(%rbp), %rdi
movl %eax, %esi
callq 0xa3a2
leaq 0x1441e(%rip), %rsi     # 0x1d743
leaq -0x88(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0xa328
leaq 0x148b9(%rip), %rsi     # 0x1dbf5
leaq -0x88(%rbp), %rdi
callq 0x4280
jmp 0x9b70
movq 0xfe0(%r14), %rdi
movl $0xa, %esi
callq 0xb54e
movb $0x1, 0xff0(%r14)
movq 0xfe0(%r14), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
movl %eax, %r12d
movl %eax, %edi
negl %edi
cmovsl %eax, %edi
movl $0x1, %ebx
cmpl $0xa, %edi
jb 0x967c
movl $0x4, %ebx
movl $0xd1b71759, %esi       # imm = 0xD1B71759
movl %edi, %ecx
cmpl $0x63, %ecx
jbe 0x9675
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x967a
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x967c
movl %ecx, %edx
imulq %rsi, %rdx
shrq $0x2d, %rdx
addl $0x4, %ebx
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x9397
addl $-0x3, %ebx
jmp 0x967c
movl $0x60, %edi
callq 0x4160
movq %rax, %r12
movq 0xfe0(%r14), %rsi
movq %rax, %rdi
movl $0x5, %edx
callq 0x1cc1c
movq %r12, 0xfe0(%r14)
movb $0x1, 0xff1(%r14)
movq (%r12), %rax
movq %r12, %rdi
callq *0x8(%rax)
movl %eax, %r12d
movl %eax, %edi
negl %edi
cmovsl %eax, %edi
movl $0x1, %ebx
cmpl $0xa, %edi
jb 0x9790
movl $0x4, %ebx
movl $0xd1b71759, %esi       # imm = 0xD1B71759
movl %edi, %ecx
cmpl $0x63, %ecx
jbe 0x9789
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x978e
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x9790
movl %ecx, %edx
imulq %rsi, %rdx
shrq $0x2d, %rdx
addl $0x4, %ebx
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x9435
addl $-0x3, %ebx
jmp 0x9790
movl $0x60, %edi
callq 0x4160
movq %rax, %r12
movq 0xfe0(%r14), %rsi
movq %rax, %rdi
movl $0x5, %edx
callq 0x1ccdc
movq %r12, 0xfe0(%r14)
movb $0x1, 0xff2(%r14)
movq (%r12), %rax
movq %r12, %rdi
callq *0x10(%rax)
movl %eax, %r12d
movl %eax, %edi
negl %edi
cmovsl %eax, %edi
movl $0x1, %ebx
cmpl $0xa, %edi
jb 0x98bf
movl $0x4, %ebx
movl $0xd1b71759, %esi       # imm = 0xD1B71759
movl %edi, %ecx
cmpl $0x63, %ecx
jbe 0x98b8
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x98bd
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x98bf
movl %ecx, %edx
imulq %rsi, %rdx
shrq $0x2d, %rdx
addl $0x4, %ebx
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x94d3
addl $-0x3, %ebx
jmp 0x98bf
movb $0x1, 0xff3(%r14)
movq 0xfe0(%r14), %rsi
movq (%rsi), %rax
leaq -0x48(%rbp), %rdi
callq *0x28(%rax)
leaq 0x14133(%rip), %rsi     # 0x1d666
movq %r12, %rdi
callq 0x4070
movl %eax, %ebx
movq (%r12), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x9556
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq 0xfe0(%r14), %rdi
testl %ebx, %ebx
je 0x9734
movl $0xfffffff6, %esi       # imm = 0xFFFFFFF6
callq 0xb54e
movq 0xfe0(%r14), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
leaq -0x68(%rbp), %rdi
movl %eax, %esi
callq 0xa3a2
leaq 0x14106(%rip), %rsi     # 0x1d694
leaq -0x88(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0xa328
leaq -0x38(%rbp), %rbx
leaq 0x1464c(%rip), %rsi     # 0x1dbf5
leaq -0x88(%rbp), %rdi
callq 0x4280
jmp 0x9b70
movb $0x1, 0xff4(%r14)
movq 0xfe0(%r14), %rsi
movq (%rsi), %rax
leaq -0x48(%rbp), %rdi
callq *0x28(%rax)
leaq 0x1408c(%rip), %rsi     # 0x1d666
movq %r12, %rdi
callq 0x4070
movl %eax, %ebx
movq (%r12), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x95fd
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
testl %ebx, %ebx
je 0x9848
movl $0x60, %edi
callq 0x4160
movq %rax, %r12
movq 0xfe0(%r14), %rsi
movq %rax, %rdi
movl $0xfffffffb, %edx       # imm = 0xFFFFFFFB
callq 0x1cc1c
movq %r12, 0xfe0(%r14)
movq (%r12), %rax
movq %r12, %rdi
callq *0x8(%rax)
leaq -0x38(%rbp), %rbx
leaq -0x68(%rbp), %rdi
movl %eax, %esi
callq 0xa3a2
leaq 0x1409d(%rip), %rsi     # 0x1d6ea
leaq -0x88(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0xa328
leaq 0x14591(%rip), %rsi     # 0x1dbf5
leaq -0x88(%rbp), %rdi
callq 0x4280
jmp 0x9b70
addl $-0x2, %ebx
jmp 0x967c
decl %ebx
movl %edi, -0x8c(%rbp)
shrl $0x1f, %r12d
leal (%rbx,%r12), %esi
leaq -0x58(%rbp), %rax
movq %rax, -0x10(%rax)
leaq -0x68(%rbp), %rdi
movl $0x2d, %edx
callq 0x41b0
movl %r12d, %edi
leaq -0x68(%rbp), %r12
addq (%r12), %rdi
movl %ebx, %esi
movl -0x8c(%rbp), %edx
callq 0xa44c
leaq 0x13f24(%rip), %rcx     # 0x1d5e3
movl $0x2a, %r8d
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x4190
leaq -0x78(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq -0x38(%rbp), %rbx
je 0x96fd
movq %rdx, -0x88(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x78(%rbp)
jmp 0x9705
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq -0x88(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x144cb(%rip), %rsi     # 0x1dbf5
callq 0x4280
jmp 0x9972
movl $0xa, %esi
callq 0xb54e
movq 0xfe0(%r14), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
leaq -0x68(%rbp), %rdi
movl %eax, %esi
callq 0xa3a2
leaq 0x13f0d(%rip), %rsi     # 0x1d66a
leaq -0x88(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0xa328
leaq -0x38(%rbp), %rbx
leaq 0x1447d(%rip), %rsi     # 0x1dbf5
leaq -0x88(%rbp), %rdi
callq 0x4280
jmp 0x9b70
addl $-0x2, %ebx
jmp 0x9790
decl %ebx
movl %edi, -0x8c(%rbp)
shrl $0x1f, %r12d
leal (%rbx,%r12), %esi
leaq -0x58(%rbp), %rax
movq %rax, -0x10(%rax)
leaq -0x68(%rbp), %rdi
movl $0x2d, %edx
callq 0x41b0
movl %r12d, %edi
leaq -0x68(%rbp), %r12
addq (%r12), %rdi
movl %ebx, %esi
movl -0x8c(%rbp), %edx
callq 0xa44c
leaq 0x13e3b(%rip), %rcx     # 0x1d60e
movl $0x2a, %r8d
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x4190
leaq -0x78(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq -0x38(%rbp), %rbx
je 0x9811
movq %rdx, -0x88(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x78(%rbp)
jmp 0x9819
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq -0x88(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x143b7(%rip), %rsi     # 0x1dbf5
callq 0x4280
jmp 0x9972
movl $0x60, %edi
callq 0x4160
movq %rax, %r12
movq 0xfe0(%r14), %rsi
movq %rax, %rdi
movl $0x5, %edx
callq 0x1cc1c
movq %r12, 0xfe0(%r14)
movq (%r12), %rax
movq %r12, %rdi
callq *0x8(%rax)
leaq -0x38(%rbp), %rbx
leaq -0x68(%rbp), %rdi
movl %eax, %esi
callq 0xa3a2
leaq 0x13e2f(%rip), %rsi     # 0x1d6bf
leaq -0x88(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0xa328
leaq 0x1434e(%rip), %rsi     # 0x1dbf5
leaq -0x88(%rbp), %rdi
callq 0x4280
jmp 0x9b70
addl $-0x2, %ebx
jmp 0x98bf
decl %ebx
movl %edi, -0x8c(%rbp)
shrl $0x1f, %r12d
leal (%rbx,%r12), %esi
leaq -0x58(%rbp), %rax
movq %rax, -0x10(%rax)
leaq -0x68(%rbp), %rdi
movl $0x2d, %edx
callq 0x41b0
movl %r12d, %edi
leaq -0x68(%rbp), %r12
addq (%r12), %rdi
movl %ebx, %esi
movl -0x8c(%rbp), %edx
callq 0xa44c
leaq 0x13d37(%rip), %rcx     # 0x1d639
movl $0x2c, %r8d
movq %r12, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x4190
leaq -0x78(%rbp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
leaq -0x38(%rbp), %rbx
je 0x9940
movq %rdx, -0x88(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x78(%rbp)
jmp 0x9948
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
leaq -0x88(%rbp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x14288(%rip), %rsi     # 0x1dbf5
callq 0x4280
movq %rbx, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x9992
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x9998
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq %rbx, %r12
movq 0x8(%rax), %rdx
leaq -0x48(%rbp), %rbx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0xb0(%rbp), %rdi
movq %rbx, %rsi
callq 0x41c0
movq (%rbx), %rdi
cmpq %r12, %rdi
je 0x99d9
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x88(%rbp), %rdi
leaq -0x78(%rbp), %rax
cmpq %rax, %rdi
je 0x99f5
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x4170
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x9a0e
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x4170
movslq -0xb4(%rbp), %rax
movslq -0xb8(%rbp), %rcx
imulq $0x4f, %rax, %rax
addq %r14, %rax
movb 0x6(%rcx,%rax), %dl
movb %dl, 0x820(%rcx,%rax)
movq 0x7f0(%r14), %rdi
movq 0x7f8(%r14), %rcx
movq %rcx, %rdx
subq %rdi, %rdx
movq %rdx, %rax
sarq $0x3, %rax
cmpq %r15, %rax
jbe 0x9c0e
leaq (%rdi,%r13), %rsi
addq $0x8, %rsi
movq -0x8(%rsi), %rbx
cmpq %rcx, %rsi
je 0x9a79
addq %r13, %rdi
subq %r13, %rdx
addq $-0x8, %rdx
callq 0x4230
movq 0x7f8(%r14), %rcx
addq $-0x8, %rcx
movq %rcx, 0x7f8(%r14)
testq %rbx, %rbx
je 0x9aa1
movq 0x10(%rbx), %rdi
leaq 0x20(%rbx), %rax
cmpq %rax, %rdi
je 0x9aa1
movq (%rax), %rsi
incq %rsi
callq 0x4170
movl $0x30, %esi
movq %rbx, %rdi
callq 0x4170
movq -0xc0(%rbp), %rbx
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
movq -0xb0(%rbp), %rcx
leaq -0xa0(%rbp), %rdx
cmpq %rdx, %rcx
je 0x9adf
movq %rcx, (%rbx)
movq -0xa0(%rbp), %rax
movq %rax, 0x10(%rbx)
jmp 0x9ae5
movups (%rdx), %xmm0
movups %xmm0, (%rax)
movq -0xa8(%rbp), %rax
movq %rax, 0x8(%rbx)
movq %rbx, %rax
addq $0xb8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x60, %edi
callq 0x4160
movq %rax, %r12
movq 0xfe0(%r14), %rsi
movq %rax, %rdi
movl $0x5, %edx
callq 0x1ccdc
movq %r12, 0xfe0(%r14)
movq (%r12), %rax
movq %r12, %rdi
callq *0x10(%rax)
leaq -0x38(%rbp), %rbx
leaq -0x68(%rbp), %rdi
movl %eax, %esi
callq 0xa3a2
leaq 0x13bc9(%rip), %rsi     # 0x1d716
leaq -0x88(%rbp), %rdi
leaq -0x68(%rbp), %rdx
callq 0xa328
leaq 0x14091(%rip), %rsi     # 0x1dbf5
leaq -0x88(%rbp), %rdi
callq 0x4280
movq %rbx, -0x48(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x9b90
movq %rdx, -0x48(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x38(%rbp)
jmp 0x9b96
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq %rbx, %r12
movq 0x8(%rax), %rdx
leaq -0x48(%rbp), %rbx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0xb0(%rbp), %rdi
movq %rbx, %rsi
callq 0x41c0
movq (%rbx), %rdi
cmpq %r12, %rdi
je 0x9bd7
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0x78(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9bf0
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x4170
leaq -0x58(%rbp), %rax
movq -0x10(%rax), %rdi
jmp 0x99fd
leaq 0x13bcb(%rip), %rdi     # 0x1d7cf
movq %r15, %rsi
xorl %eax, %eax
callq 0x41e0
leaq 0x13bba(%rip), %rdi     # 0x1d7cf
movq %r15, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x41e0
leaq 0x13ba6(%rip), %rdi     # 0x1d7cf
movq %r15, %rsi
xorl %eax, %eax
callq 0x41e0
leaq 0x13b95(%rip), %rdi     # 0x1d7cf
movq %r15, %rsi
xorl %eax, %eax
callq 0x41e0
leaq 0x13b84(%rip), %rdi     # 0x1d7cf
movq %r15, %rsi
xorl %eax, %eax
callq 0x41e0
leaq 0x13b73(%rip), %rdi     # 0x1d7cf
movq %r15, %rsi
xorl %eax, %eax
callq 0x41e0
leaq 0x13b62(%rip), %rdi     # 0x1d7cf
movq %r15, %rsi
xorl %eax, %eax
callq 0x41e0
jmp 0x9ca7
jmp 0x9cc5
jmp 0x9cf7
jmp 0x9ca7
jmp 0x9cc5
jmp 0x9cf7
jmp 0x9ca7
jmp 0x9cc5
jmp 0x9cf7
jmp 0x9d6d
jmp 0x9ca7
jmp 0x9cc5
jmp 0x9ca7
jmp 0x9cc5
jmp 0x9cf7
jmp 0x9d6d
jmp 0x9d6d
jmp 0x9d6d
movq %rax, %rbx
leaq -0x78(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9cc8
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x9cc8
movq %rax, %rbx
leaq -0x58(%rbp), %rax
movq -0x10(%rax), %rdi
jmp 0x9d30
jmp 0x9d6d
jmp 0x9d6d
jmp 0x9d6d
jmp 0x9d6d
jmp 0x9d6d
jmp 0x9d08
jmp 0x9d25
jmp 0x9cf7
jmp 0x9d6d
jmp 0x9d08
jmp 0x9d25
movq %rax, %rbx
movl $0x60, %esi
movq %r12, %rdi
jmp 0x9d3c
jmp 0x9d6d
jmp 0x9d6d
movq %rax, %rbx
movq -0x88(%rbp), %rdi
cmpq %r12, %rdi
je 0x9d28
movq -0x78(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x9d28
movq %rax, %rbx
movq -0x68(%rbp), %rdi
leaq -0x58(%rbp), %rax
cmpq %rax, %rdi
je 0x9d70
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x4170
jmp 0x9d70
jmp 0x9d6d
jmp 0x9d6d
jmp 0x9d6d
jmp 0x9d6d
jmp 0x9d6d
jmp 0x9d6d
jmp 0x9d6d
jmp 0x9d6d
jmp 0x9d6d
movq %rax, %rbx
movq -0xe0(%rbp), %rdi
cmpq %r12, %rdi
je 0x9d92
movq -0xd0(%rbp), %rsi
jmp 0x9d8a
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x9d92
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x4170
movq %rbx, %rdi
callq 0x4250