// File: /workspace/github_cpp_makefile_star2_O3/zerolfx[P]P-Machine/movd.cpp
// Function: Movd::execute(StackMachine*)
void Movd::execute(StackMachine *stack)
{	cout << "begin " << stack->fStore[stack->fMP + fQ]->getValue() << endl;
	cout << "einde " << stack->fStore[stack->fMP + fQ + 2]->getValue() << endl;
	cout << "totaal " << stack->fStore[stack->fMP + fQ]->getValue() + stack->fStore[stack->fMP + fQ + 2]->getValue() - 1 << endl;
	if(stack->fStore[stack->fStore[stack->fMP + fQ]->getValue() + stack->fStore[stack->fMP + fQ + 2]->getValue()]->getValue() < 0)
	{
		// copying a block from the heapspace to the top of the stack
				
		StackInteger p1;
		StackBoolean p2;
		StackAddress p3;
		StackCharacter p4;
		StackReal p5;
		
		int baseaddress = stack->fStore[stack->fMP + fQ]->getValue() + stack->fStore[stack->fMP + fQ + 2]->getValue() - 1;
		
		for(int i = 1; i <= stack->fStore[stack->fMP + fQ + 1]->getValue(); ++i)
		{
			int effectiveaddress = - baseaddress - i - 1;
			
			if((-effectiveaddress >= 0) || (-effectiveaddress < stack->fNP))
				throw ExecutionError("instruction movd: trying to access a heapaddress that is out of range.");

			if(typeid(p1) == typeid(*stack->fHeap[effectiveaddress]))			
				stack->fStore.push_back(new StackInteger(*(dynamic_cast<StackInteger*>(stack->fHeap[-effectiveaddress]))));
			if(typeid(p2) == typeid(*stack->fHeap[effectiveaddress]))
				stack->fStore.push_back(new StackBoolean(*(dynamic_cast<StackBoolean*>(stack->fHeap[-effectiveaddress]))));
			if(typeid(p3) == typeid(*stack->fHeap[effectiveaddress]))
				stack->fStore.push_back(new StackAddress(*(dynamic_cast<StackAddress*>(stack->fHeap[-effectiveaddress]))));
			if(typeid(p4) == typeid(*stack->fHeap[effectiveaddress]))
				stack->fStore.push_back(new StackCharacter(*(dynamic_cast<StackCharacter*>(stack->fHeap[-effectiveaddress]))));
			if(typeid(p5) == typeid(*stack->fHeap[effectiveaddress]))
				stack->fStore.push_back(new StackReal(*(dynamic_cast<StackReal*>(stack->fHeap[-effectiveaddress]))));
		}
	}
	else
	{
		// copying a block from the stackspace to the top of the stack
				
		StackInteger p1;
		StackBoolean p2;
		StackAddress p3;
		StackCharacter p4;
		StackReal p5;
		
		int baseaddress = stack->fStore[stack->fMP + fQ]->getValue() + stack->fStore[stack->fMP + fQ + 2]->getValue() - 1;
		
		for(int i = 1; i <= stack->fStore[stack->fMP + fQ + 1]->getValue(); ++i)
		{
			int effectiveaddress = baseaddress + i;
			
			if((effectiveaddress < 0) || (effectiveaddress > stack->fSP))
				throw ExecutionError("instruction movd: trying to access a stackaddress that is out of range.");

			if(typeid(p1) == typeid(*stack->fStore[effectiveaddress]))			
				stack->fStore.push_back(new StackInteger(*(dynamic_cast<StackInteger*>(stack->fStore[effectiveaddress]))));
			if(typeid(p2) == typeid(*stack->fStore[effectiveaddress]))
				stack->fStore.push_back(new StackBoolean(*(dynamic_cast<StackBoolean*>(stack->fStore[effectiveaddress]))));
			if(typeid(p3) == typeid(*stack->fStore[effectiveaddress]))
				stack->fStore.push_back(new StackAddress(*(dynamic_cast<StackAddress*>(stack->fStore[effectiveaddress]))));
			if(typeid(p4) == typeid(*stack->fStore[effectiveaddress]))
				stack->fStore.push_back(new StackCharacter(*(dynamic_cast<StackCharacter*>(stack->fStore[effectiveaddress]))));
			if(typeid(p5) == typeid(*stack->fStore[effectiveaddress]))
				stack->fStore.push_back(new StackReal(*(dynamic_cast<StackReal*>(stack->fStore[effectiveaddress]))));
		}
	}
	
	delete stack->fStore[stack->fMP + fQ];
	stack->fStore[stack->fMP + fQ] = new StackAddress(stack->fSP + 1 - stack->fStore[stack->fMP + fQ + 2]->getValue());
	
	// increase the SP with the total size of the array (that has just been place on top of the stack)
	stack->fSP += stack->fStore[stack->fMP + fQ + 1]->getValue();	
	
	// adding cost of this instruction
	stack->fTime.count("movd");

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %rsi, %rbx
movq %rdi, %r13
movq 0x228a7(%rip), %r14     # 0x33fc0
leaq 0x13853(%rip), %rsi     # 0x24f73
movl $0x6, %edx
movq %r14, %rdi
callq 0x6270
leaq 0x18(%rbx), %rax
movq %rax, -0x30(%rbp)
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq (%rax,%rcx,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
movq %r14, %rdi
movl %eax, %esi
callq 0x63f0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x61d0
movsbl %al, %esi
movq %r12, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6140
leaq 0x137ee(%rip), %rsi     # 0x24f7a
movl $0x6, %edx
movq %r14, %rdi
callq 0x6270
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq 0x10(%rax,%rcx,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
movq %r14, %rdi
movl %eax, %esi
callq 0x63f0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x61d0
movsbl %al, %esi
movq %r12, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6140
leaq 0x13790(%rip), %rsi     # 0x24f81
movl $0x7, %edx
movq %r14, %rdi
callq 0x6270
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq (%rax,%rcx,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
movl %eax, %r12d
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq 0x10(%rax,%rcx,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
leal (%r12,%rax), %esi
decl %esi
movq %r14, %rdi
callq 0x63f0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x61d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x6030
movq %rax, %rdi
callq 0x6140
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq (%rax,%rcx,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
movl %eax, %r14d
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq 0x10(%rax,%rcx,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
addl %r14d, %eax
cltq
movq 0x18(%rbx), %rcx
movq (%rcx,%rax,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
testl %eax, %eax
movq %r13, -0x90(%rbp)
leaq -0xe0(%rbp), %rdi
js 0x11d00
xorl %esi, %esi
callq 0x1a9d4
leaq -0xd0(%rbp), %rdi
xorl %esi, %esi
callq 0x1ae40
leaq -0xc0(%rbp), %rdi
xorl %esi, %esi
callq 0x1a104
leaq -0xb0(%rbp), %rdi
movl $0x61, %esi
callq 0x1b03c
leaq -0xa0(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1abfc
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq (%rax,%rcx,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
movl %eax, %r14d
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq 0x10(%rax,%rcx,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
addl %r14d, %eax
decl %eax
movl %eax, -0x3c(%rbp)
cltq
movq %rax, -0x88(%rbp)
leaq (,%rax,8), %rax
movq %rax, -0x38(%rbp)
movl $0x1, %r14d
leaq 0x220c0(%rip), %rax     # 0x33a40
addq $0x10, %rax
movq %rax, -0x80(%rbp)
leaq 0x22251(%rip), %rax     # 0x33be0
addq $0x10, %rax
movq %rax, -0x78(%rbp)
leaq 0x21f0a(%rip), %rax     # 0x338a8
addq $0x10, %rax
movq %rax, -0x70(%rbp)
leaq 0x22303(%rip), %rax     # 0x33cb0
addq $0x10, %rax
movq %rax, -0x68(%rbp)
leaq 0x22154(%rip), %rax     # 0x33b10
addq $0x10, %rax
movq %rax, -0xe8(%rbp)
movq %rbx, -0xf0(%rbp)
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq 0x8(%rax,%rcx,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
cltq
cmpq %rax, %r14
jg 0x120d1
cmpl $-0x1, -0x3c(%rbp)
jl 0x12205
movq -0x88(%rbp), %rax
addq %r14, %rax
movslq 0xb4(%rbx), %rcx
cmpq %rcx, %rax
jg 0x12205
movq -0x30(%rbp), %rax
movq (%rax), %r15
movq -0x38(%rbp), %rax
leaq (%r15,%rax), %rbx
movq (%rbx,%r14,8), %r12
testq %r12, %r12
je 0x12200
movq (%r12), %rax
movq -0x8(%rax), %rax
leaq 0x220b3(%rip), %rcx     # 0x33af8
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
je 0x11a60
cmpb $0x2a, (%rdi)
je 0x11ac1
callq 0x6310
testl %eax, %eax
jne 0x11ac1
movl $0x10, %edi
callq 0x6200
movq -0x30(%rbp), %r15
movq %rax, %r12
movq (%rbx,%r14,8), %rdi
leaq 0x21fb4(%rip), %rsi     # 0x33a30
leaq 0x22075(%rip), %rdx     # 0x33af8
xorl %ecx, %ecx
callq 0x6260
movq -0x80(%rbp), %rcx
movq %rcx, (%r12)
movl 0x8(%rax), %eax
movl %eax, 0x8(%r12)
movq %r12, -0x60(%rbp)
movq %r15, %rdi
leaq -0x60(%rbp), %rsi
callq 0xa334
movq (%r15), %r15
movq -0x38(%rbp), %rax
addq %r15, %rax
movq (%rax,%r14,8), %r12
testq %r12, %r12
je 0x12200
movq (%r12), %rax
movq -0x8(%rax), %rax
leaq 0x221c8(%rip), %rcx     # 0x33c98
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
movq -0x30(%rbp), %rbx
je 0x11aef
cmpb $0x2a, (%rdi)
je 0x11b50
callq 0x6310
testl %eax, %eax
jne 0x11b50
movl $0x10, %edi
callq 0x6200
movq -0x38(%rbp), %r13
movq %rax, %r12
addq %r13, %r15
movq (%r15,%r14,8), %rdi
leaq 0x21f22(%rip), %rsi     # 0x33a30
leaq 0x22183(%rip), %rdx     # 0x33c98
xorl %ecx, %ecx
callq 0x6260
movq -0x78(%rbp), %rcx
movq %rcx, (%r12)
movl 0x8(%rax), %eax
movl %eax, 0x8(%r12)
movq %r12, -0x60(%rbp)
movq %rbx, %rdi
leaq -0x60(%rbp), %rsi
callq 0xa334
movq (%rbx), %r15
leaq (%r15,%r13), %rax
movq (%rax,%r14,8), %r12
testq %r12, %r12
je 0x12200
movq (%r12), %rax
movq -0x8(%rax), %rax
leaq 0x21e01(%rip), %rcx     # 0x33960
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
movq -0x30(%rbp), %rbx
je 0x11b7e
cmpb $0x2a, (%rdi)
je 0x11bdf
callq 0x6310
testl %eax, %eax
jne 0x11bdf
movl $0x10, %edi
callq 0x6200
movq -0x38(%rbp), %r13
movq %rax, %r12
addq %r13, %r15
movq (%r15,%r14,8), %rdi
leaq 0x21e93(%rip), %rsi     # 0x33a30
leaq 0x21dbc(%rip), %rdx     # 0x33960
xorl %ecx, %ecx
callq 0x6260
movq -0x70(%rbp), %rcx
movq %rcx, (%r12)
movl 0x8(%rax), %eax
movl %eax, 0x8(%r12)
movq %r12, -0x60(%rbp)
movq %rbx, %rdi
leaq -0x60(%rbp), %rsi
callq 0xa334
movq (%rbx), %r15
leaq (%r15,%r13), %rax
movq (%rax,%r14,8), %r12
testq %r12, %r12
je 0x12200
movq (%r12), %rax
movq -0x8(%rax), %rax
leaq 0x2217a(%rip), %rcx     # 0x33d68
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
movq -0x30(%rbp), %rbx
je 0x11c0d
cmpb $0x2a, (%rdi)
je 0x11c6e
callq 0x6310
testl %eax, %eax
jne 0x11c6e
movl $0x10, %edi
callq 0x6200
movq -0x38(%rbp), %r13
movq %rax, %r12
addq %r13, %r15
movq (%r15,%r14,8), %rdi
leaq 0x21e04(%rip), %rsi     # 0x33a30
leaq 0x22135(%rip), %rdx     # 0x33d68
xorl %ecx, %ecx
callq 0x6260
movq -0x68(%rbp), %rcx
movq %rcx, (%r12)
movb 0x8(%rax), %al
movb %al, 0x8(%r12)
movq %r12, -0x60(%rbp)
movq %rbx, %rdi
leaq -0x60(%rbp), %rsi
callq 0xa334
movq (%rbx), %r15
leaq (%r15,%r13), %rax
movq (%rax,%r14,8), %r12
testq %r12, %r12
je 0x12200
movq (%r12), %rax
movq -0x8(%rax), %rax
leaq 0x21f4b(%rip), %rcx     # 0x33bc8
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
movq -0xf0(%rbp), %rbx
movq -0x90(%rbp), %r13
je 0x11ca6
cmpb $0x2a, (%rdi)
je 0x11cf8
callq 0x6310
testl %eax, %eax
jne 0x11cf8
movl $0x10, %edi
callq 0x6200
movq %rax, %r12
addq -0x38(%rbp), %r15
movq (%r15,%r14,8), %rdi
leaq 0x21d6e(%rip), %rsi     # 0x33a30
leaq 0x21eff(%rip), %rdx     # 0x33bc8
xorl %ecx, %ecx
callq 0x6260
movq -0xe8(%rbp), %rcx
movq %rcx, (%r12)
movsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%r12)
movq %r12, -0x60(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xa334
incq %r14
jmp 0x119ce
xorl %esi, %esi
callq 0x1a9d4
leaq -0xd0(%rbp), %rdi
xorl %esi, %esi
callq 0x1ae40
leaq -0xc0(%rbp), %rdi
xorl %esi, %esi
callq 0x1a104
leaq -0xb0(%rbp), %rdi
movl $0x61, %esi
callq 0x1b03c
leaq -0xa0(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1abfc
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq (%rax,%rcx,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
movl %eax, %r14d
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq 0x10(%rax,%rcx,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
leal (%rax,%r14), %ecx
addl %r14d, %eax
incl %eax
movslq %eax, %r14
notl %ecx
movl %ecx, -0x3c(%rbp)
movl $0x1, %eax
movq %rax, -0x38(%rbp)
leaq 0x21ca0(%rip), %rax     # 0x33a40
addq $0x10, %rax
movq %rax, -0x88(%rbp)
leaq 0x21e2e(%rip), %rax     # 0x33be0
addq $0x10, %rax
movq %rax, -0x80(%rbp)
leaq 0x21ae7(%rip), %rax     # 0x338a8
addq $0x10, %rax
movq %rax, -0x78(%rbp)
leaq 0x21ee0(%rip), %rax     # 0x33cb0
addq $0x10, %rax
movq %rax, -0x70(%rbp)
leaq 0x21d31(%rip), %rax     # 0x33b10
addq $0x10, %rax
movq %rax, -0x68(%rbp)
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq 0x8(%rax,%rcx,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
cltq
cmpq %rax, -0x38(%rbp)
jg 0x120d1
testl %r14d, %r14d
jns 0x12260
cmpl 0xb8(%rbx), %r14d
jl 0x12260
movslq -0x3c(%rbp), %r13
movq 0x30(%rbx), %r15
movq (%r15,%r13,8), %r12
testq %r12, %r12
je 0x1225b
movq (%r12), %rax
movq -0x8(%rax), %rax
leaq 0x21cae(%rip), %rcx     # 0x33af8
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
je 0x11e65
cmpb $0x2a, (%rdi)
je 0x11ec0
callq 0x6310
testl %eax, %eax
jne 0x11ec0
movl $0x10, %edi
callq 0x6200
movq %rax, %r12
movq (%r15,%r14,8), %rdi
leaq 0x21bb3(%rip), %rsi     # 0x33a30
leaq 0x21c74(%rip), %rdx     # 0x33af8
xorl %ecx, %ecx
callq 0x6260
movq -0x88(%rbp), %rcx
movq %rcx, (%r12)
movl 0x8(%rax), %eax
movl %eax, 0x8(%r12)
movq %r12, -0x60(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xa334
movq 0x30(%rbx), %r15
movq (%r15,%r13,8), %r12
testq %r12, %r12
je 0x1225b
movq (%r12), %rax
movq -0x8(%rax), %rax
leaq 0x21dc9(%rip), %rcx     # 0x33c98
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
je 0x11eea
cmpb $0x2a, (%rdi)
je 0x11f42
callq 0x6310
testl %eax, %eax
jne 0x11f42
movl $0x10, %edi
callq 0x6200
movq %rax, %r12
movq (%r15,%r14,8), %rdi
leaq 0x21b2e(%rip), %rsi     # 0x33a30
leaq 0x21d8f(%rip), %rdx     # 0x33c98
xorl %ecx, %ecx
callq 0x6260
movq -0x80(%rbp), %rcx
movq %rcx, (%r12)
movl 0x8(%rax), %eax
movl %eax, 0x8(%r12)
movq %r12, -0x60(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xa334
movq 0x30(%rbx), %r15
movq (%r15,%r13,8), %r12
testq %r12, %r12
je 0x1225b
movq (%r12), %rax
movq -0x8(%rax), %rax
leaq 0x21a0f(%rip), %rcx     # 0x33960
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
je 0x11f6c
cmpb $0x2a, (%rdi)
je 0x11fc4
callq 0x6310
testl %eax, %eax
jne 0x11fc4
movl $0x10, %edi
callq 0x6200
movq %rax, %r12
movq (%r15,%r14,8), %rdi
leaq 0x21aac(%rip), %rsi     # 0x33a30
leaq 0x219d5(%rip), %rdx     # 0x33960
xorl %ecx, %ecx
callq 0x6260
movq -0x78(%rbp), %rcx
movq %rcx, (%r12)
movl 0x8(%rax), %eax
movl %eax, 0x8(%r12)
movq %r12, -0x60(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xa334
movq 0x30(%rbx), %r15
movq (%r15,%r13,8), %r12
testq %r12, %r12
je 0x1225b
movq (%r12), %rax
movq -0x8(%rax), %rax
leaq 0x21d95(%rip), %rcx     # 0x33d68
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
je 0x11fee
cmpb $0x2a, (%rdi)
je 0x12046
callq 0x6310
testl %eax, %eax
jne 0x12046
movl $0x10, %edi
callq 0x6200
movq %rax, %r12
movq (%r15,%r14,8), %rdi
leaq 0x21a2a(%rip), %rsi     # 0x33a30
leaq 0x21d5b(%rip), %rdx     # 0x33d68
xorl %ecx, %ecx
callq 0x6260
movq -0x70(%rbp), %rcx
movq %rcx, (%r12)
movb 0x8(%rax), %al
movb %al, 0x8(%r12)
movq %r12, -0x60(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xa334
movq 0x30(%rbx), %r15
movq (%r15,%r13,8), %r12
testq %r12, %r12
je 0x1225b
movq (%r12), %rax
movq -0x8(%rax), %rax
leaq 0x21b73(%rip), %rcx     # 0x33bc8
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
movq -0x90(%rbp), %r13
je 0x12077
cmpb $0x2a, (%rdi)
je 0x120c2
callq 0x6310
testl %eax, %eax
jne 0x120c2
movl $0x10, %edi
callq 0x6200
movq %rax, %r12
movq (%r15,%r14,8), %rdi
leaq 0x219a1(%rip), %rsi     # 0x33a30
leaq 0x21b32(%rip), %rdx     # 0x33bc8
xorl %ecx, %ecx
callq 0x6260
movq -0x68(%rbp), %rcx
movq %rcx, (%r12)
movsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%r12)
movq %r12, -0x60(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xa334
incq -0x38(%rbp)
incq %r14
decl -0x3c(%rbp)
jmp 0x11de7
leaq -0xa0(%rbp), %rdi
callq 0x1ac2a
leaq -0xb0(%rbp), %rdi
callq 0x1b060
leaq -0xc0(%rbp), %rdi
callq 0x1a128
leaq -0xd0(%rbp), %rdi
callq 0x1ae64
leaq -0xe0(%rbp), %rdi
callq 0x1a9f8
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq (%rax,%rcx,8), %r14
testq %r14, %r14
je 0x12130
movq %r14, %rdi
callq 0x1a300
movl $0x8, %esi
movq %r14, %rdi
callq 0x6210
movl $0x10, %edi
callq 0x6200
movq %rax, %r14
movl 0xb4(%rbx), %r15d
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq 0x10(%rax,%rcx,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
subl %eax, %r15d
incl %r15d
movq %r14, %rdi
movl %r15d, %esi
callq 0x1a104
movslq 0xc0(%rbx), %rax
movslq 0x8(%r13), %rcx
addq %rax, %rcx
movq 0x18(%rbx), %rax
movq %r14, (%rax,%rcx,8)
movq 0x18(%rbx), %rax
movq 0x8(%rax,%rcx,8), %rdi
movq (%rdi), %rax
callq *0x68(%rax)
addl %eax, 0xb4(%rbx)
leaq -0x50(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x12e5f(%rip), %rsi     # 0x25018
leaq 0x12e5c(%rip), %rdx     # 0x2501c
leaq -0x60(%rbp), %rdi
callq 0x746c
addq $0x78, %rbx
leaq -0x60(%rbp), %rsi
movq %rbx, %rdi
callq 0x1cbc8
movq -0x60(%rbp), %rdi
cmpq %r14, %rdi
je 0x121ee
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x6210
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x6250
movl $0x20, %edi
callq 0x6100
movq %rax, %r14
leaq -0x50(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x12daf(%rip), %rsi     # 0x24fd0
leaq 0x12def(%rip), %rdx     # 0x25017
leaq -0x60(%rbp), %rdi
callq 0x746c
movb $0x1, %r12b
leaq -0x60(%rbp), %rsi
movq %r14, %rdi
callq 0x1b14c
xorl %r12d, %r12d
leaq 0x2083e(%rip), %rsi     # 0x32a88
leaq 0x8f19(%rip), %rdx      # 0x1b16a
movq %r14, %rdi
callq 0x63e0
jmp 0x122b4
callq 0x6250
movl $0x20, %edi
callq 0x6100
movq %rax, %r14
leaq -0x50(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x12d0d(%rip), %rsi     # 0x24f89
leaq 0x12d4c(%rip), %rdx     # 0x24fcf
leaq -0x60(%rbp), %rdi
callq 0x746c
movb $0x1, %r12b
leaq -0x60(%rbp), %rsi
movq %r14, %rdi
callq 0x1b14c
xorl %r12d, %r12d
leaq 0x207e3(%rip), %rsi     # 0x32a88
leaq 0x8ebe(%rip), %rdx      # 0x1b16a
movq %r14, %rdi
callq 0x63e0
jmp 0x122bc
jmp 0x122c4
jmp 0x122cc
jmp 0x122d4
movq %rax, %rbx
jmp 0x12372
movq %rax, %rbx
jmp 0x1237e
movq %rax, %rbx
jmp 0x1238a
movq %rax, %rbx
jmp 0x12396
jmp 0x12363
movq %rax, %rbx
movq -0x60(%rbp), %rdi
cmpq %r14, %rdi
je 0x123a2
movq -0x50(%rbp), %rsi
incq %rsi
jmp 0x1230f
movq %rax, %rbx
jmp 0x123a2
jmp 0x12363
movq %rax, %rbx
movl $0x10, %esi
movq %r14, %rdi
callq 0x6210
jmp 0x123a2
jmp 0x12363
jmp 0x12363
jmp 0x12363
jmp 0x12363
jmp 0x12363
jmp 0x12333
jmp 0x12352
jmp 0x12363
jmp 0x12363
jmp 0x12363
jmp 0x12363
jmp 0x12363
jmp 0x12363
movq %rax, %rbx
movq -0x60(%rbp), %rdi
cmpq %r15, %rdi
je 0x1234b
movq -0x50(%rbp), %rsi
incq %rsi
callq 0x6210
testb %r12b, %r12b
jne 0x12355
jmp 0x12366
movq %rax, %rbx
movq %r14, %rdi
callq 0x6170
jmp 0x12366
jmp 0x12363
jmp 0x12363
movq %rax, %rbx
leaq -0xa0(%rbp), %rdi
callq 0x1ac2a
leaq -0xb0(%rbp), %rdi
callq 0x1b060
leaq -0xc0(%rbp), %rdi
callq 0x1a128
leaq -0xd0(%rbp), %rdi
callq 0x1ae64
leaq -0xe0(%rbp), %rdi
callq 0x1a9f8
movq %rbx, %rdi
callq 0x6410