// File: /workspace/github_cpp_makefile_star2_O3/zerolfx[P]P-Machine/movs.cpp
// Function: Movs::execute(StackMachine*)
void Movs::execute(StackMachine *stack)
{	
	StackAddress p;
	
	if((stack->fSP < 0) || (typeid(p) != typeid(*(stack->fStore[stack->fSP]))))
		throw ExecutionError("instruction movs: highest stackposition expected to be of type address.");
		
	int newaddress = stack->fStore[stack->fSP]->getValue();

	delete stack->fStore[stack->fSP];
	stack->fStore[stack->fSP] = 0;
	stack->fStore.pop_back();
	
	if(newaddress < 0)
	{	
		// copying a block from the heapspace to the top of the stack
		// pay attention to the reverse with respect to what the book describes on p50
	
		StackInteger p1;
		StackBoolean p2;
		StackAddress p3;
		StackCharacter p4;
		StackReal p5;
		StackElement p6;
				
		for(int i = 0; i <= fQ - 1; ++i)
		{
			if(typeid(p1) == typeid(*stack->fHeap[- i - newaddress - 1]))
				stack->fStore.push_back(new StackInteger(*(dynamic_cast<StackInteger*>(stack->fHeap[i - newaddress]))));
			if(typeid(p2) == typeid(*stack->fHeap[- i - newaddress - 1]))
				stack->fStore.push_back(new StackBoolean(*(dynamic_cast<StackBoolean*>(stack->fHeap[i - newaddress]))));
			if(typeid(p3) == typeid(*stack->fHeap[- i - newaddress - 1]))
				stack->fStore.push_back(new StackAddress(*(dynamic_cast<StackAddress*>(stack->fHeap[i - newaddress]))));			
			if(typeid(p4) == typeid(*stack->fHeap[- i - newaddress - 1]))
				stack->fStore.push_back(new StackCharacter(*(dynamic_cast<StackCharacter*>(stack->fHeap[i - newaddress]))));
			if(typeid(p5) == typeid(*stack->fHeap[- i - newaddress - 1]))
				stack->fStore.push_back(new StackReal(*(dynamic_cast<StackReal*>(stack->fHeap[i - newaddress]))));
			if(typeid(p6) == typeid(*stack->fHeap[- i - newaddress - 1]))
				stack->fStore.push_back(new StackElement(*(dynamic_cast<StackElement*>(stack->fHeap[i - newaddress]))));
		}
	}
	else
	{
		// copying a block from the stackspace to the top of the stack
		// pay attention to the reverse with respect to what the book describes on p50

		StackInteger p1;
		StackBoolean p2;
		StackAddress p3;
		StackCharacter p4;
		StackReal p5;
		StackElement p6;
	
		for(int i = 0; i <= fQ - 1; ++i)
		{
			if(typeid(p1) == typeid(*stack->fStore[i + newaddress]))
				stack->fStore.push_back(new StackInteger(*(dynamic_cast<StackInteger*>(stack->fStore[i + newaddress]))));
			if(typeid(p2) == typeid(*stack->fStore[i + newaddress]))
				stack->fStore.push_back(new StackBoolean(*(dynamic_cast<StackBoolean*>(stack->fStore[i + newaddress]))));
			if(typeid(p3) == typeid(*stack->fStore[i + newaddress]))
				stack->fStore.push_back(new StackAddress(*(dynamic_cast<StackAddress*>(stack->fStore[i + newaddress]))));			
			if(typeid(p4) == typeid(*stack->fStore[i + newaddress]))
				stack->fStore.push_back(new StackCharacter(*(dynamic_cast<StackCharacter*>(stack->fStore[i + newaddress]))));
			if(typeid(p5) == typeid(*stack->fStore[i + newaddress]))
				stack->fStore.push_back(new StackReal(*(dynamic_cast<StackReal*>(stack->fStore[i + newaddress]))));
			if(typeid(p6) == typeid(*stack->fStore[i + newaddress]))
				stack->fStore.push_back(new StackElement(*(dynamic_cast<StackElement*>(stack->fStore[i + newaddress]))));
		}
	}
	
	stack->fSP = stack->fSP + fQ - 1;
	
	// adding cost of this instruction
	stack->fTime.count("movs");

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movq %rsi, %r15
movq %rdi, -0x48(%rbp)
leaq -0x100(%rbp), %rdi
xorl %esi, %esi
callq 0x1a104
movslq 0xb4(%r15), %rax
testq %rax, %rax
js 0x12dcd
movq 0x18(%r15), %rcx
movq (%rcx,%rax,8), %r14
testq %r14, %r14
je 0x12e21
movq (%r14), %rbx
movq -0x8(%rbx), %rax
leaq 0x214d8(%rip), %rcx     # 0x33960
movq 0x8(%rcx), %r12
movq 0x8(%rax), %rsi
cmpq %rsi, %r12
je 0x124b0
cmpb $0x2a, (%r12)
je 0x12dcd
movq %r12, %rdi
callq 0x6310
testl %eax, %eax
jne 0x12dcd
movq %r14, %rdi
callq *0x68(%rbx)
movl %eax, %r13d
movslq 0xb4(%r15), %rax
movq 0x18(%r15), %rcx
movq (%rcx,%rax,8), %rbx
testq %rbx, %rbx
je 0x124d5
movq %rbx, %rdi
callq 0x1a300
leaq 0x18(%r15), %r14
movl $0x8, %esi
movq %rbx, %rdi
callq 0x6210
movslq 0xb4(%r15), %rax
movq 0x18(%r15), %rcx
movq $0x0, (%rcx,%rax,8)
addq $-0x8, 0x20(%r15)
testl %r13d, %r13d
movq %r12, -0xa8(%rbp)
movq %r14, -0x38(%rbp)
movq %r15, -0x40(%rbp)
js 0x1290e
leaq -0x70(%rbp), %rdi
xorl %esi, %esi
callq 0x1a9d4
leaq -0xe8(%rbp), %rdi
xorl %esi, %esi
callq 0x1ae40
leaq -0xd8(%rbp), %rdi
xorl %esi, %esi
callq 0x1a104
leaq -0xc8(%rbp), %rdi
movl $0x61, %esi
callq 0x1b03c
leaq -0xb8(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1abfc
leaq -0x50(%rbp), %rdi
callq 0x1a2f0
movq -0x48(%rbp), %rax
cmpl $0x0, 0x8(%rax)
jle 0x12d04
movl %r13d, %r15d
shlq $0x3, %r15
xorl %r13d, %r13d
leaq 0x214bb(%rip), %rax     # 0x33a40
addq $0x10, %rax
movq %rax, -0xa0(%rbp)
leaq 0x21649(%rip), %rax     # 0x33be0
addq $0x10, %rax
movq %rax, -0x98(%rbp)
leaq 0x212ff(%rip), %rax     # 0x338a8
addq $0x10, %rax
movq %rax, -0x90(%rbp)
leaq 0x216f5(%rip), %rax     # 0x33cb0
addq $0x10, %rax
movq %rax, -0x88(%rbp)
leaq 0x21543(%rip), %rax     # 0x33b10
addq $0x10, %rax
movq %rax, -0x80(%rbp)
leaq 0x2139c(%rip), %rax     # 0x33978
addq $0x10, %rax
movq %rax, -0x78(%rbp)
movq (%r14), %r14
leaq (%r14,%r15), %r12
movq (%r12,%r13,8), %rbx
testq %rbx, %rbx
je 0x12dc3
movq (%rbx), %rax
movq -0x8(%rax), %rax
leaq 0x214f2(%rip), %rcx     # 0x33af8
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
je 0x12621
cmpb $0x2a, (%rdi)
je 0x1267f
callq 0x6310
testl %eax, %eax
jne 0x1267f
movl $0x10, %edi
callq 0x6200
movq -0x38(%rbp), %r14
movq %rax, %rbx
movq (%r12,%r13,8), %rdi
leaq 0x213f3(%rip), %rsi     # 0x33a30
leaq 0x214b4(%rip), %rdx     # 0x33af8
xorl %ecx, %ecx
callq 0x6260
movq -0xa0(%rbp), %rcx
movq %rcx, (%rbx)
movl 0x8(%rax), %eax
movl %eax, 0x8(%rbx)
movq %rbx, -0x30(%rbp)
movq %r14, %rdi
leaq -0x30(%rbp), %rsi
callq 0xa334
movq (%r14), %r14
leaq (%r14,%r15), %rax
movq (%rax,%r13,8), %rbx
testq %rbx, %rbx
je 0x12dc3
movq (%rbx), %rax
movq -0x8(%rax), %rax
leaq 0x2160b(%rip), %rcx     # 0x33c98
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
je 0x126a8
cmpb $0x2a, (%rdi)
je 0x1270a
callq 0x6310
testl %eax, %eax
jne 0x1270a
movl $0x10, %edi
callq 0x6200
movq -0x38(%rbp), %r12
movq %rax, %rbx
addq %r15, %r14
movq (%r14,%r13,8), %rdi
leaq 0x21369(%rip), %rsi     # 0x33a30
leaq 0x215ca(%rip), %rdx     # 0x33c98
xorl %ecx, %ecx
callq 0x6260
movq -0x98(%rbp), %rcx
movq %rcx, (%rbx)
movl 0x8(%rax), %eax
movl %eax, 0x8(%rbx)
movq %rbx, -0x30(%rbp)
movq %r12, %rdi
leaq -0x30(%rbp), %rsi
callq 0xa334
movq (%r12), %r14
leaq (%r14,%r15), %rax
movq (%rax,%r13,8), %rbx
testq %rbx, %rbx
je 0x12dc3
movq (%rbx), %rax
movq -0x8(%rax), %rax
movq 0x8(%rax), %rsi
movq -0xa8(%rbp), %rdi
cmpq %rsi, %rdi
je 0x1272f
cmpb $0x2a, (%rdi)
je 0x12791
callq 0x6310
testl %eax, %eax
jne 0x12791
movl $0x10, %edi
callq 0x6200
movq -0x38(%rbp), %r12
movq %rax, %rbx
addq %r15, %r14
movq (%r14,%r13,8), %rdi
leaq 0x212e2(%rip), %rsi     # 0x33a30
leaq 0x2120b(%rip), %rdx     # 0x33960
xorl %ecx, %ecx
callq 0x6260
movq -0x90(%rbp), %rcx
movq %rcx, (%rbx)
movl 0x8(%rax), %eax
movl %eax, 0x8(%rbx)
movq %rbx, -0x30(%rbp)
movq %r12, %rdi
leaq -0x30(%rbp), %rsi
callq 0xa334
movq (%r12), %r14
leaq (%r14,%r15), %rax
movq (%rax,%r13,8), %rbx
testq %rbx, %rbx
je 0x12dc3
movq (%rbx), %rax
movq -0x8(%rax), %rax
leaq 0x215c9(%rip), %rcx     # 0x33d68
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
je 0x127ba
cmpb $0x2a, (%rdi)
je 0x1281c
callq 0x6310
testl %eax, %eax
jne 0x1281c
movl $0x10, %edi
callq 0x6200
movq -0x38(%rbp), %r12
movq %rax, %rbx
addq %r15, %r14
movq (%r14,%r13,8), %rdi
leaq 0x21257(%rip), %rsi     # 0x33a30
leaq 0x21588(%rip), %rdx     # 0x33d68
xorl %ecx, %ecx
callq 0x6260
movq -0x88(%rbp), %rcx
movq %rcx, (%rbx)
movb 0x8(%rax), %al
movb %al, 0x8(%rbx)
movq %rbx, -0x30(%rbp)
movq %r12, %rdi
leaq -0x30(%rbp), %rsi
callq 0xa334
movq (%r12), %r14
leaq (%r14,%r15), %rax
movq (%rax,%r13,8), %rbx
testq %rbx, %rbx
je 0x12dc3
movq (%rbx), %rax
movq -0x8(%rax), %rax
leaq 0x2139e(%rip), %rcx     # 0x33bc8
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
je 0x12845
cmpb $0x2a, (%rdi)
je 0x128a7
callq 0x6310
testl %eax, %eax
jne 0x128a7
movl $0x10, %edi
callq 0x6200
movq -0x38(%rbp), %r12
movq %rax, %rbx
addq %r15, %r14
movq (%r14,%r13,8), %rdi
leaq 0x211cc(%rip), %rsi     # 0x33a30
leaq 0x2135d(%rip), %rdx     # 0x33bc8
xorl %ecx, %ecx
callq 0x6260
movq -0x80(%rbp), %rcx
movq %rcx, (%rbx)
movsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rbx)
movq %rbx, -0x30(%rbp)
movq %r12, %rdi
leaq -0x30(%rbp), %rsi
callq 0xa334
movq (%r12), %rax
addq %r15, %rax
movq (%rax,%r13,8), %rbx
testq %rbx, %rbx
je 0x12dc3
movq (%rbx), %rax
movq -0x8(%rax), %rax
leaq 0x2117b(%rip), %rcx     # 0x33a30
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
movq -0x38(%rbp), %r14
je 0x128d4
cmpb $0x2a, (%rdi)
je 0x128f5
callq 0x6310
testl %eax, %eax
jne 0x128f5
movl $0x8, %edi
callq 0x6200
movq -0x78(%rbp), %rcx
movq %rcx, (%rax)
movq %rax, -0x30(%rbp)
movq %r14, %rdi
leaq -0x30(%rbp), %rsi
callq 0xa334
incq %r13
movq -0x48(%rbp), %rax
movslq 0x8(%rax), %rax
cmpq %rax, %r13
jl 0x125e4
jmp 0x12d04
leaq -0x70(%rbp), %rdi
xorl %esi, %esi
callq 0x1a9d4
leaq -0xe8(%rbp), %rdi
xorl %esi, %esi
callq 0x1ae40
leaq -0xd8(%rbp), %rdi
xorl %esi, %esi
callq 0x1a104
leaq -0xc8(%rbp), %rdi
movl $0x61, %esi
callq 0x1b03c
leaq -0xb8(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x1abfc
leaq -0x50(%rbp), %rdi
callq 0x1a2f0
movq -0x48(%rbp), %rax
cmpl $0x0, 0x8(%rax)
jle 0x12d04
movslq %r13d, %r14
notl %r13d
shlq $0x3, %r14
negq %r14
xorl %r15d, %r15d
leaq 0x210bd(%rip), %rax     # 0x33a40
addq $0x10, %rax
movq %rax, -0x98(%rbp)
leaq 0x2124b(%rip), %rax     # 0x33be0
addq $0x10, %rax
movq %rax, -0x90(%rbp)
leaq 0x20f01(%rip), %rax     # 0x338a8
addq $0x10, %rax
movq %rax, -0x88(%rbp)
leaq 0x212f7(%rip), %rax     # 0x33cb0
addq $0x10, %rax
movq %rax, -0x80(%rbp)
leaq 0x21148(%rip), %rax     # 0x33b10
addq $0x10, %rax
movq %rax, -0x78(%rbp)
leaq 0x20fa1(%rip), %rax     # 0x33978
addq $0x10, %rax
movq %rax, -0xf0(%rbp)
movl %r13d, -0xa0(%rbp)
movslq %r13d, %r13
movq -0x40(%rbp), %rax
movq 0x30(%rax), %r12
movq (%r12,%r13,8), %rbx
testq %rbx, %rbx
je 0x12dc8
movq (%rbx), %rax
movq -0x8(%rax), %rax
leaq 0x210e9(%rip), %rcx     # 0x33af8
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
je 0x12a2a
cmpb $0x2a, (%rdi)
je 0x12a86
callq 0x6310
testl %eax, %eax
jne 0x12a86
movl $0x10, %edi
callq 0x6200
movq %rax, %rbx
movq (%r12,%r14), %rdi
leaq 0x20fee(%rip), %rsi     # 0x33a30
leaq 0x210af(%rip), %rdx     # 0x33af8
xorl %ecx, %ecx
callq 0x6260
movq -0x98(%rbp), %rcx
movq %rcx, (%rbx)
movl 0x8(%rax), %eax
movl %eax, 0x8(%rbx)
movq %rbx, -0x30(%rbp)
movq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa334
movq -0x40(%rbp), %rax
movq 0x30(%rax), %r12
movq (%r12,%r13,8), %rbx
testq %rbx, %rbx
je 0x12dc8
movq (%rbx), %rax
movq -0x8(%rax), %rax
leaq 0x21204(%rip), %rcx     # 0x33c98
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
je 0x12aaf
cmpb $0x2a, (%rdi)
je 0x12b0b
callq 0x6310
testl %eax, %eax
jne 0x12b0b
movl $0x10, %edi
callq 0x6200
movq %rax, %rbx
movq (%r12,%r14), %rdi
leaq 0x20f69(%rip), %rsi     # 0x33a30
leaq 0x211ca(%rip), %rdx     # 0x33c98
xorl %ecx, %ecx
callq 0x6260
movq -0x90(%rbp), %rcx
movq %rcx, (%rbx)
movl 0x8(%rax), %eax
movl %eax, 0x8(%rbx)
movq %rbx, -0x30(%rbp)
movq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa334
movq -0x40(%rbp), %rax
movq 0x30(%rax), %r12
movq (%r12,%r13,8), %rbx
testq %rbx, %rbx
je 0x12dc8
movq (%rbx), %rax
movq -0x8(%rax), %rax
movq 0x8(%rax), %rsi
movq -0xa8(%rbp), %rdi
cmpq %rsi, %rdi
je 0x12b30
cmpb $0x2a, (%rdi)
je 0x12b8c
callq 0x6310
testl %eax, %eax
jne 0x12b8c
movl $0x10, %edi
callq 0x6200
movq %rax, %rbx
movq (%r12,%r14), %rdi
leaq 0x20ee8(%rip), %rsi     # 0x33a30
leaq 0x20e11(%rip), %rdx     # 0x33960
xorl %ecx, %ecx
callq 0x6260
movq -0x88(%rbp), %rcx
movq %rcx, (%rbx)
movl 0x8(%rax), %eax
movl %eax, 0x8(%rbx)
movq %rbx, -0x30(%rbp)
movq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa334
movq -0x40(%rbp), %rax
movq 0x30(%rax), %r12
movq (%r12,%r13,8), %rbx
testq %rbx, %rbx
je 0x12dc8
movq (%rbx), %rax
movq -0x8(%rax), %rax
leaq 0x211ce(%rip), %rcx     # 0x33d68
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
je 0x12bb5
cmpb $0x2a, (%rdi)
je 0x12c0e
callq 0x6310
testl %eax, %eax
jne 0x12c0e
movl $0x10, %edi
callq 0x6200
movq %rax, %rbx
movq (%r12,%r14), %rdi
leaq 0x20e63(%rip), %rsi     # 0x33a30
leaq 0x21194(%rip), %rdx     # 0x33d68
xorl %ecx, %ecx
callq 0x6260
movq -0x80(%rbp), %rcx
movq %rcx, (%rbx)
movb 0x8(%rax), %al
movb %al, 0x8(%rbx)
movq %rbx, -0x30(%rbp)
movq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa334
movq -0x40(%rbp), %rax
movq 0x30(%rax), %r12
movq (%r12,%r13,8), %rbx
testq %rbx, %rbx
je 0x12dc8
movq (%rbx), %rax
movq -0x8(%rax), %rax
leaq 0x20fac(%rip), %rcx     # 0x33bc8
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
je 0x12c37
cmpb $0x2a, (%rdi)
je 0x12c94
callq 0x6310
testl %eax, %eax
jne 0x12c94
movl $0x10, %edi
callq 0x6200
movq %rax, %rbx
movq (%r12,%r14), %rdi
leaq 0x20de1(%rip), %rsi     # 0x33a30
leaq 0x20f72(%rip), %rdx     # 0x33bc8
xorl %ecx, %ecx
callq 0x6260
movq -0x78(%rbp), %rcx
movq %rcx, (%rbx)
movsd 0x8(%rax), %xmm0
movsd %xmm0, 0x8(%rbx)
movq %rbx, -0x30(%rbp)
movq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa334
movq -0x40(%rbp), %rax
movq 0x30(%rax), %rax
movq (%rax,%r13,8), %rbx
testq %rbx, %rbx
je 0x12dc8
movq (%rbx), %rax
movq -0x8(%rax), %rax
leaq 0x20d8e(%rip), %rcx     # 0x33a30
movq 0x8(%rcx), %rdi
movq 0x8(%rax), %rsi
cmpq %rsi, %rdi
movl -0xa0(%rbp), %r13d
je 0x12cc4
cmpb $0x2a, (%rdi)
je 0x12ce9
callq 0x6310
testl %eax, %eax
jne 0x12ce9
movl $0x8, %edi
callq 0x6200
movq -0xf0(%rbp), %rcx
movq %rcx, (%rax)
movq %rax, -0x30(%rbp)
movq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa334
incq %r15
movq -0x48(%rbp), %rax
movslq 0x8(%rax), %rax
decl %r13d
addq $0x8, %r14
cmpq %rax, %r15
jl 0x129e2
leaq -0x50(%rbp), %rdi
callq 0x1a300
leaq -0xb8(%rbp), %rdi
callq 0x1ac2a
leaq -0xc8(%rbp), %rdi
callq 0x1b060
leaq -0xd8(%rbp), %rdi
callq 0x1a128
leaq -0xe8(%rbp), %rdi
callq 0x1ae64
leaq -0x70(%rbp), %rdi
callq 0x1a9f8
movq -0x40(%rbp), %rbx
movl 0xb4(%rbx), %eax
movq -0x48(%rbp), %rcx
movl 0x8(%rcx), %ecx
leal -0x1(%rax,%rcx), %eax
movl %eax, 0xb4(%rbx)
leaq -0x60(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x12301(%rip), %rsi     # 0x25071
leaq 0x122fe(%rip), %rdx     # 0x25075
leaq -0x70(%rbp), %rdi
callq 0x746c
addq $0x78, %rbx
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0x1cbc8
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x12da5
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x6210
leaq -0x100(%rbp), %rdi
callq 0x1a128
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x6250
callq 0x6250
movl $0x20, %edi
callq 0x6100
movq %rax, %r14
leaq -0x60(%rbp), %r15
movq %r15, -0x10(%r15)
leaq 0x12240(%rip), %rsi     # 0x25029
leaq 0x12280(%rip), %rdx     # 0x25070
leaq -0x70(%rbp), %rdi
callq 0x746c
movb $0x1, %r12b
leaq -0x70(%rbp), %rsi
movq %r14, %rdi
callq 0x1b14c
xorl %r12d, %r12d
leaq 0x1fc76(%rip), %rsi     # 0x32a88
leaq 0x8351(%rip), %rdx      # 0x1b16a
movq %r14, %rdi
callq 0x63e0
callq 0x6250
jmp 0x12e32
jmp 0x12e3a
jmp 0x12e42
jmp 0x12e4a
jmp 0x12e52
jmp 0x12e81
movq %rax, %rbx
jmp 0x12edb
movq %rax, %rbx
jmp 0x12ee7
movq %rax, %rbx
jmp 0x12ef3
movq %rax, %rbx
jmp 0x12eff
movq %rax, %rbx
jmp 0x12f0b
jmp 0x12e81
movq %rax, %rbx
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x12f14
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x6210
jmp 0x12f14
jmp 0x12e81
jmp 0x12e81
movq %rax, %rbx
jmp 0x12f14
movq %rax, %rbx
movq -0x70(%rbp), %rdi
cmpq %r15, %rdi
je 0x12ea1
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x6210
testb %r12b, %r12b
jne 0x12eab
jmp 0x12f14
movq %rax, %rbx
movq %r14, %rdi
callq 0x6170
jmp 0x12f14
jmp 0x12ecf
jmp 0x12ecf
jmp 0x12ecf
jmp 0x12ecf
jmp 0x12ecf
jmp 0x12ecf
jmp 0x12ecf
jmp 0x12ecf
jmp 0x12ecf
jmp 0x12ecf
jmp 0x12ecf
jmp 0x12ecf
jmp 0x12ecf
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x1a300
leaq -0xb8(%rbp), %rdi
callq 0x1ac2a
leaq -0xc8(%rbp), %rdi
callq 0x1b060
leaq -0xd8(%rbp), %rdi
callq 0x1a128
leaq -0xe8(%rbp), %rdi
callq 0x1ae64
leaq -0x70(%rbp), %rdi
callq 0x1a9f8
leaq -0x100(%rbp), %rdi
callq 0x1a128
movq %rbx, %rdi
callq 0x6410