// File: zerolfx[P]P-Machine/lod.cpp
// Function: Lod::execute(StackMachine*)
void Lod::execute(StackMachine *stack)
{

	if(stack->base(fP, stack->fMP) + fQ > stack->fSP)
		throw ExecutionError("instruction lod: trying to access element above SP");
		
	StackElement *element = stack->fStore[stack->base(fP, stack->fMP) + fQ];
	
	switch(fType)
	{
		case integer:
		{
			StackInteger p;

			if(typeid(p) != typeid(*element))
			{
				strstream convertor;
				convertor << "instruction lod: element at MP + " << fQ << " you are trying to access is not of type integer.";
				throw ExecutionError(convertor.str());
			}
			else
				stack->fStore.push_back(new StackInteger(*(dynamic_cast<StackInteger*>(element))));

			break;
		}	
		case real:
		{
			StackReal p;

			if(typeid(p) != typeid(*element))
			{
				strstream convertor;
				convertor << "instruction lod: element at MP + " << fQ << " you are trying to access is not of type real.";
				throw ExecutionError(convertor.str());
			}
			else
				stack->fStore.push_back(new StackReal(*(dynamic_cast<StackReal*>(element))));


			break;
		}
		case boolean:
		{
			StackBoolean p;
			
			if(typeid(p) != typeid(*element))
			{
				strstream convertor;
				convertor << "instruction lod: element at MP + " << fQ << " you are trying to access is not of type boolean.";
				throw ExecutionError(convertor.str());
			}
			else
				stack->fStore.push_back(new StackBoolean(*(dynamic_cast<StackBoolean*>(element))));


			break;
		}
		case character:
		{
			StackCharacter p;

			if(typeid(p) != typeid(*element))
			{
				strstream convertor;
				convertor << "instruction lod: element at MP + " << fQ << " you are trying to access is not of type character.";
				throw ExecutionError(convertor.str());
			}
			else
				stack->fStore.push_back(new StackCharacter(*(dynamic_cast<StackCharacter*>(element))));


			break;
		}
		case address:
		{
			StackAddress p;
			
			if(typeid(p) != typeid(*element))
			{
				strstream convertor;
				convertor << "instruction lod: element at MP + " << fQ << " you are trying to access is not of type address.";
				throw ExecutionError(convertor.str());
			}
			else
				stack->fStore.push_back(new StackAddress(*(dynamic_cast<StackAddress*>(element))));


			break;
		}
	}
	
	++stack->fSP;
	
	// adding cost of this instruction
	stack->fTime.count("lod");

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xae0, %rsp            # imm = 0xAE0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x918(%rbp)
movq -0x10(%rbp), %rdi
movl 0xc(%rax), %esi
movq -0x10(%rbp), %rax
movl 0xc0(%rax), %edx
callq 0x2d050
movq -0x918(%rbp), %rcx
addl 0x10(%rcx), %eax
movq -0x10(%rbp), %rcx
cmpl 0xb4(%rcx), %eax
jle 0x17f26
movb $0x1, -0x45(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x928(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x920(%rbp)
callq 0x74f0
movq -0x920(%rbp), %rdx
leaq 0x21074(%rip), %rsi     # 0x38f15
leaq -0x30(%rbp), %rdi
callq 0x8940
jmp 0x17eac
movq -0x928(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x283d0
jmp 0x17ebe
movq -0x928(%rbp), %rdi
movb $0x0, -0x45(%rbp)
leaq 0x31bb0(%rip), %rsi     # 0x49a80
leaq 0x10529(%rip), %rdx     # 0x28400
callq 0x74a0
jmp 0x18cab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x17f04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x7170
leaq -0x31(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x45(%rbp)
jne 0x17f15
jmp 0x17f21
movq -0x928(%rbp), %rdi
callq 0x71c0
jmp 0x18ca2
movq -0x918(%rbp), %rax
movq -0x10(%rbp), %rdi
movq %rdi, %rcx
addq $0x18, %rcx
movq %rcx, -0x938(%rbp)
movl 0xc(%rax), %esi
movl 0xc0(%rdi), %edx
callq 0x2d050
movq -0x938(%rbp), %rdi
movq -0x918(%rbp), %rcx
movl 0x10(%rcx), %ecx
addl %ecx, %eax
movslq %eax, %rsi
callq 0x8e70
movq %rax, %rcx
movq -0x918(%rbp), %rax
movq (%rcx), %rcx
movq %rcx, -0x50(%rbp)
movl 0x8(%rax), %eax
movq %rax, -0x930(%rbp)
subq $0x4, %rax
ja 0x18bea
movq -0x930(%rbp), %rax
leaq 0x20f61(%rip), %rcx     # 0x38efc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0x60(%rbp), %rdi
xorl %esi, %esi
callq 0x27340
movq -0x50(%rbp), %rax
movq %rax, -0x940(%rbp)
cmpq $0x0, %rax
jne 0x17fc7
callq 0x7300
jmp 0x17fc7
movq -0x940(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x32b14(%rip), %rdi     # 0x4aaf0
callq 0x9370
testb $0x1, %al
jne 0x17fea
jmp 0x18158
leaq -0x1d8(%rbp), %rdi
callq 0x73d0
jmp 0x17ff8
leaq -0x1c8(%rbp), %rdi
leaq 0x20f42(%rip), %rsi     # 0x38f48
callq 0x7250
movq %rax, -0x948(%rbp)
jmp 0x18014
movq -0x948(%rbp), %rdi
movq -0x918(%rbp), %rax
movl 0x10(%rax), %esi
callq 0x74c0
movq %rax, -0x950(%rbp)
jmp 0x18033
movq -0x950(%rbp), %rdi
leaq 0x21d34(%rip), %rsi     # 0x39d75
callq 0x7250
jmp 0x18048
movb $0x1, -0x1fa(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x968(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x7410
movq %rax, -0x960(%rbp)
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0x958(%rbp)
callq 0x74f0
movq -0x960(%rbp), %rsi
movq -0x958(%rbp), %rdx
leaq -0x1f8(%rbp), %rdi
callq 0x8940
jmp 0x180a2
movq -0x968(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x283d0
jmp 0x180b7
movq -0x968(%rbp), %rdi
movb $0x0, -0x1fa(%rbp)
leaq 0x319b4(%rip), %rsi     # 0x49a80
leaq 0x1032d(%rip), %rdx     # 0x28400
callq 0x74a0
jmp 0x18cab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18203
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18147
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18122
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x7170
leaq -0x1f9(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x1fa(%rbp)
jne 0x18139
jmp 0x18145
movq -0x968(%rbp), %rdi
callq 0x71c0
jmp 0x18147
leaq -0x1d8(%rbp), %rdi
callq 0x7520
jmp 0x18203
movq -0x10(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x978(%rbp)
movl $0x10, %edi
callq 0x7270
movq %rax, -0x970(%rbp)
jmp 0x1817a
movq -0x50(%rbp), %rax
movq %rax, -0x980(%rbp)
cmpq $0x0, %rax
je 0x181b2
movq -0x980(%rbp), %rdi
leaq 0x3288f(%rip), %rsi     # 0x4aa28
leaq 0x32950(%rip), %rdx     # 0x4aaf0
xorl %eax, %eax
movl %eax, %ecx
callq 0x7320
movq %rax, -0x988(%rbp)
jmp 0x181bd
xorl %eax, %eax
movq %rax, -0x988(%rbp)
jmp 0x181bd
movq -0x970(%rbp), %rdi
movq -0x988(%rbp), %rsi
callq 0xd2d0
movq -0x970(%rbp), %rax
movq -0x978(%rbp), %rdi
movq %rax, -0x208(%rbp)
leaq -0x208(%rbp), %rsi
callq 0xd2a0
jmp 0x181f3
jmp 0x181f5
leaq -0x60(%rbp), %rdi
callq 0x27380
jmp 0x18bea
leaq -0x60(%rbp), %rdi
callq 0x27380
jmp 0x18ca2
leaq -0x218(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x27840
movq -0x50(%rbp), %rax
movq %rax, -0x990(%rbp)
cmpq $0x0, %rax
jne 0x18238
callq 0x7300
jmp 0x18238
movq -0x990(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x32973(%rip), %rdi     # 0x4abc0
callq 0x9370
testb $0x1, %al
jne 0x1825b
jmp 0x183c9
leaq -0x390(%rbp), %rdi
callq 0x73d0
jmp 0x18269
leaq -0x380(%rbp), %rdi
leaq 0x20cd1(%rip), %rsi     # 0x38f48
callq 0x7250
movq %rax, -0x998(%rbp)
jmp 0x18285
movq -0x998(%rbp), %rdi
movq -0x918(%rbp), %rax
movl 0x10(%rax), %esi
callq 0x74c0
movq %rax, -0x9a0(%rbp)
jmp 0x182a4
movq -0x9a0(%rbp), %rdi
leaq 0x21b0d(%rip), %rsi     # 0x39dbf
callq 0x7250
jmp 0x182b9
movb $0x1, -0x3b2(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x9b8(%rbp)
leaq -0x390(%rbp), %rdi
callq 0x7410
movq %rax, -0x9b0(%rbp)
leaq -0x3b1(%rbp), %rdi
movq %rdi, -0x9a8(%rbp)
callq 0x74f0
movq -0x9b0(%rbp), %rsi
movq -0x9a8(%rbp), %rdx
leaq -0x3b0(%rbp), %rdi
callq 0x8940
jmp 0x18313
movq -0x9b8(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x283d0
jmp 0x18328
movq -0x9b8(%rbp), %rdi
movb $0x0, -0x3b2(%rbp)
leaq 0x31743(%rip), %rsi     # 0x49a80
leaq 0x100bc(%rip), %rdx     # 0x28400
callq 0x74a0
jmp 0x18cab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18477
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x183b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18393
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x7170
leaq -0x3b1(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x3b2(%rbp)
jne 0x183aa
jmp 0x183b6
movq -0x9b8(%rbp), %rdi
callq 0x71c0
jmp 0x183b8
leaq -0x390(%rbp), %rdi
callq 0x7520
jmp 0x18477
movq -0x10(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x9c8(%rbp)
movl $0x10, %edi
callq 0x7270
movq %rax, -0x9c0(%rbp)
jmp 0x183eb
movq -0x50(%rbp), %rax
movq %rax, -0x9d0(%rbp)
cmpq $0x0, %rax
je 0x18423
movq -0x9d0(%rbp), %rdi
leaq 0x3261e(%rip), %rsi     # 0x4aa28
leaq 0x327af(%rip), %rdx     # 0x4abc0
xorl %eax, %eax
movl %eax, %ecx
callq 0x7320
movq %rax, -0x9d8(%rbp)
jmp 0x1842e
xorl %eax, %eax
movq %rax, -0x9d8(%rbp)
jmp 0x1842e
movq -0x9c0(%rbp), %rdi
movq -0x9d8(%rbp), %rsi
callq 0xd320
movq -0x9c0(%rbp), %rax
movq -0x9c8(%rbp), %rdi
movq %rax, -0x3c0(%rbp)
leaq -0x3c0(%rbp), %rsi
callq 0xd2a0
jmp 0x18464
jmp 0x18466
leaq -0x218(%rbp), %rdi
callq 0x27880
jmp 0x18bea
leaq -0x218(%rbp), %rdi
callq 0x27880
jmp 0x18ca2
leaq -0x3d0(%rbp), %rdi
xorl %esi, %esi
callq 0x27d20
movq -0x50(%rbp), %rax
movq %rax, -0x9e0(%rbp)
cmpq $0x0, %rax
jne 0x184ae
callq 0x7300
jmp 0x184ae
movq -0x9e0(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x327cd(%rip), %rdi     # 0x4ac90
callq 0x9370
testb $0x1, %al
jne 0x184d1
jmp 0x1863f
leaq -0x548(%rbp), %rdi
callq 0x73d0
jmp 0x184df
leaq -0x538(%rbp), %rdi
leaq 0x20a5b(%rip), %rsi     # 0x38f48
callq 0x7250
movq %rax, -0x9e8(%rbp)
jmp 0x184fb
movq -0x9e8(%rbp), %rdi
movq -0x918(%rbp), %rax
movl 0x10(%rax), %esi
callq 0x74c0
movq %rax, -0x9f0(%rbp)
jmp 0x1851a
movq -0x9f0(%rbp), %rdi
leaq 0x218de(%rip), %rsi     # 0x39e06
callq 0x7250
jmp 0x1852f
movb $0x1, -0x56a(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0xa08(%rbp)
leaq -0x548(%rbp), %rdi
callq 0x7410
movq %rax, -0xa00(%rbp)
leaq -0x569(%rbp), %rdi
movq %rdi, -0x9f8(%rbp)
callq 0x74f0
movq -0xa00(%rbp), %rsi
movq -0x9f8(%rbp), %rdx
leaq -0x568(%rbp), %rdi
callq 0x8940
jmp 0x18589
movq -0xa08(%rbp), %rdi
leaq -0x568(%rbp), %rsi
callq 0x283d0
jmp 0x1859e
movq -0xa08(%rbp), %rdi
movb $0x0, -0x56a(%rbp)
leaq 0x314cd(%rip), %rsi     # 0x49a80
leaq 0xfe46(%rip), %rdx      # 0x28400
callq 0x74a0
jmp 0x18cab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x186ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1862e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18609
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x568(%rbp), %rdi
callq 0x7170
leaq -0x569(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x56a(%rbp)
jne 0x18620
jmp 0x1862c
movq -0xa08(%rbp), %rdi
callq 0x71c0
jmp 0x1862e
leaq -0x548(%rbp), %rdi
callq 0x7520
jmp 0x186ed
movq -0x10(%rbp), %rax
addq $0x18, %rax
movq %rax, -0xa18(%rbp)
movl $0x10, %edi
callq 0x7270
movq %rax, -0xa10(%rbp)
jmp 0x18661
movq -0x50(%rbp), %rax
movq %rax, -0xa20(%rbp)
cmpq $0x0, %rax
je 0x18699
movq -0xa20(%rbp), %rdi
leaq 0x323a8(%rip), %rsi     # 0x4aa28
leaq 0x32609(%rip), %rdx     # 0x4ac90
xorl %eax, %eax
movl %eax, %ecx
callq 0x7320
movq %rax, -0xa28(%rbp)
jmp 0x186a4
xorl %eax, %eax
movq %rax, -0xa28(%rbp)
jmp 0x186a4
movq -0xa10(%rbp), %rdi
movq -0xa28(%rbp), %rsi
callq 0xd370
movq -0xa10(%rbp), %rax
movq -0xa18(%rbp), %rdi
movq %rax, -0x578(%rbp)
leaq -0x578(%rbp), %rsi
callq 0xd2a0
jmp 0x186da
jmp 0x186dc
leaq -0x3d0(%rbp), %rdi
callq 0x27d70
jmp 0x18bea
leaq -0x3d0(%rbp), %rdi
callq 0x27d70
jmp 0x18ca2
leaq -0x588(%rbp), %rdi
movl $0x61, %esi
callq 0x28170
movq -0x50(%rbp), %rax
movq %rax, -0xa30(%rbp)
cmpq $0x0, %rax
jne 0x18727
callq 0x7300
jmp 0x18727
movq -0xa30(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x32624(%rip), %rdi     # 0x4ad60
callq 0x9370
testb $0x1, %al
jne 0x1874a
jmp 0x188b8
leaq -0x700(%rbp), %rdi
callq 0x73d0
jmp 0x18758
leaq -0x6f0(%rbp), %rdi
leaq 0x207e2(%rip), %rsi     # 0x38f48
callq 0x7250
movq %rax, -0xa38(%rbp)
jmp 0x18774
movq -0xa38(%rbp), %rdi
movq -0x918(%rbp), %rax
movl 0x10(%rax), %esi
callq 0x74c0
movq %rax, -0xa40(%rbp)
jmp 0x18793
movq -0xa40(%rbp), %rdi
leaq 0x216af(%rip), %rsi     # 0x39e50
callq 0x7250
jmp 0x187a8
movb $0x1, -0x722(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0xa58(%rbp)
leaq -0x700(%rbp), %rdi
callq 0x7410
movq %rax, -0xa50(%rbp)
leaq -0x721(%rbp), %rdi
movq %rdi, -0xa48(%rbp)
callq 0x74f0
movq -0xa50(%rbp), %rsi
movq -0xa48(%rbp), %rdx
leaq -0x720(%rbp), %rdi
callq 0x8940
jmp 0x18802
movq -0xa58(%rbp), %rdi
leaq -0x720(%rbp), %rsi
callq 0x283d0
jmp 0x18817
movq -0xa58(%rbp), %rdi
movb $0x0, -0x722(%rbp)
leaq 0x31254(%rip), %rsi     # 0x49a80
leaq 0xfbcd(%rip), %rdx      # 0x28400
callq 0x74a0
jmp 0x18cab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18966
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x188a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18882
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x720(%rbp), %rdi
callq 0x7170
leaq -0x721(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x722(%rbp)
jne 0x18899
jmp 0x188a5
movq -0xa58(%rbp), %rdi
callq 0x71c0
jmp 0x188a7
leaq -0x700(%rbp), %rdi
callq 0x7520
jmp 0x18966
movq -0x10(%rbp), %rax
addq $0x18, %rax
movq %rax, -0xa68(%rbp)
movl $0x10, %edi
callq 0x7270
movq %rax, -0xa60(%rbp)
jmp 0x188da
movq -0x50(%rbp), %rax
movq %rax, -0xa70(%rbp)
cmpq $0x0, %rax
je 0x18912
movq -0xa70(%rbp), %rdi
leaq 0x3212f(%rip), %rsi     # 0x4aa28
leaq 0x32460(%rip), %rdx     # 0x4ad60
xorl %eax, %eax
movl %eax, %ecx
callq 0x7320
movq %rax, -0xa78(%rbp)
jmp 0x1891d
xorl %eax, %eax
movq %rax, -0xa78(%rbp)
jmp 0x1891d
movq -0xa60(%rbp), %rdi
movq -0xa78(%rbp), %rsi
callq 0xd3c0
movq -0xa60(%rbp), %rax
movq -0xa68(%rbp), %rdi
movq %rax, -0x730(%rbp)
leaq -0x730(%rbp), %rsi
callq 0xd2a0
jmp 0x18953
jmp 0x18955
leaq -0x588(%rbp), %rdi
callq 0x281b0
jmp 0x18bea
leaq -0x588(%rbp), %rdi
callq 0x281b0
jmp 0x18ca2
leaq -0x740(%rbp), %rdi
xorl %esi, %esi
callq 0x26800
movq -0x50(%rbp), %rax
movq %rax, -0xa80(%rbp)
cmpq $0x0, %rax
jne 0x1899d
callq 0x7300
jmp 0x1899d
movq -0xa80(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x31fa6(%rip), %rdi     # 0x4a958
callq 0x9370
testb $0x1, %al
jne 0x189c0
jmp 0x18b2e
leaq -0x8b8(%rbp), %rdi
callq 0x73d0
jmp 0x189ce
leaq -0x8a8(%rbp), %rdi
leaq 0x2056c(%rip), %rsi     # 0x38f48
callq 0x7250
movq %rax, -0xa88(%rbp)
jmp 0x189ea
movq -0xa88(%rbp), %rdi
movq -0x918(%rbp), %rax
movl 0x10(%rax), %esi
callq 0x74c0
movq %rax, -0xa90(%rbp)
jmp 0x18a09
movq -0xa90(%rbp), %rdi
leaq 0x21485(%rip), %rsi     # 0x39e9c
callq 0x7250
jmp 0x18a1e
movb $0x1, -0x8da(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0xaa8(%rbp)
leaq -0x8b8(%rbp), %rdi
callq 0x7410
movq %rax, -0xaa0(%rbp)
leaq -0x8d9(%rbp), %rdi
movq %rdi, -0xa98(%rbp)
callq 0x74f0
movq -0xaa0(%rbp), %rsi
movq -0xa98(%rbp), %rdx
leaq -0x8d8(%rbp), %rdi
callq 0x8940
jmp 0x18a78
movq -0xaa8(%rbp), %rdi
leaq -0x8d8(%rbp), %rsi
callq 0x283d0
jmp 0x18a8d
movq -0xaa8(%rbp), %rdi
movb $0x0, -0x8da(%rbp)
leaq 0x30fde(%rip), %rsi     # 0x49a80
leaq 0xf957(%rip), %rdx      # 0x28400
callq 0x74a0
jmp 0x18cab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18bd9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18b1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18af8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x8d8(%rbp), %rdi
callq 0x7170
leaq -0x8d9(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x8da(%rbp)
jne 0x18b0f
jmp 0x18b1b
movq -0xaa8(%rbp), %rdi
callq 0x71c0
jmp 0x18b1d
leaq -0x8b8(%rbp), %rdi
callq 0x7520
jmp 0x18bd9
movq -0x10(%rbp), %rax
addq $0x18, %rax
movq %rax, -0xab8(%rbp)
movl $0x10, %edi
callq 0x7270
movq %rax, -0xab0(%rbp)
jmp 0x18b50
movq -0x50(%rbp), %rax
movq %rax, -0xac0(%rbp)
cmpq $0x0, %rax
je 0x18b88
movq -0xac0(%rbp), %rdi
leaq 0x31eb9(%rip), %rsi     # 0x4aa28
leaq 0x31de2(%rip), %rdx     # 0x4a958
xorl %eax, %eax
movl %eax, %ecx
callq 0x7320
movq %rax, -0xac8(%rbp)
jmp 0x18b93
xorl %eax, %eax
movq %rax, -0xac8(%rbp)
jmp 0x18b93
movq -0xab0(%rbp), %rdi
movq -0xac8(%rbp), %rsi
callq 0xd410
movq -0xab0(%rbp), %rax
movq -0xab8(%rbp), %rdi
movq %rax, -0x8e8(%rbp)
leaq -0x8e8(%rbp), %rsi
callq 0xd2a0
jmp 0x18bc9
jmp 0x18bcb
leaq -0x740(%rbp), %rdi
callq 0x26840
jmp 0x18bea
leaq -0x740(%rbp), %rdi
callq 0x26840
jmp 0x18ca2
movq -0x10(%rbp), %rax
movl 0xb4(%rax), %ecx
incl %ecx
movl %ecx, 0xb4(%rax)
movq -0x10(%rbp), %rax
addq $0x78, %rax
movq %rax, -0xad8(%rbp)
leaq -0x909(%rbp), %rdi
movq %rdi, -0xad0(%rbp)
callq 0x74f0
movq -0xad0(%rbp), %rdx
leaq 0x2033e(%rip), %rsi     # 0x38f6a
leaq -0x908(%rbp), %rdi
callq 0x8940
jmp 0x18c3a
movq -0xad8(%rbp), %rdi
leaq -0x908(%rbp), %rsi
callq 0x2c4d0
jmp 0x18c4f
leaq -0x908(%rbp), %rdi
callq 0x7170
leaq -0x909(%rbp), %rdi
callq 0x72e0
addq $0xae0, %rsp            # imm = 0xAE0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x18c96
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x908(%rbp), %rdi
callq 0x7170
leaq -0x909(%rbp), %rdi
callq 0x72e0
movq -0x40(%rbp), %rdi
callq 0x74e0
nopl (%rax,%rax)