// File: zerolfx[P]P-Machine/conv.cpp
// Function: Conv::execute(StackMachine*)
void Conv::execute(StackMachine *stack) 
{
	// check if the stack contains at least one entries
	if(stack->fSP < 0)
		throw ExecutionError("instruction conv: requires 1 stackelement to be present.");
	
	int integervalue;
	
	switch(fType1)
	{
		case integer:
		{
			StackInteger p1;

			// check if the uppermost stackentry is of type integer
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP])))
				throw ExecutionError("instruction conv: SP does not point to element of type integer.");
			
			integervalue = stack->fStore[stack->fSP]->getValue();
			
			break;
		}	
		case real:
		{
			StackReal p1;
			// check if the uppermost stackentry is of type real
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP])))
				throw ExecutionError("instruction conv: SP does not point to element of type real.");
			
			double realvalue = stack->fStore[stack->fSP]->getReal();
			delete stack->fStore[stack->fSP];	
			
			switch(fType2)
			{
				case integer:
					stack->fStore[stack->fSP] = new StackInteger(realvalue);
					break;
				case boolean:
					stack->fStore[stack->fSP] = new StackBoolean(realvalue);
					break;
				case character:
					stack->fStore[stack->fSP] = new StackCharacter(realvalue);
					break;
				case address:
					stack->fStore[stack->fSP] = new StackAddress(realvalue);
					break;
				case real:
					stack->fStore[stack->fSP] = new StackReal(realvalue);
					break;
			}

			return;
		}
		case character:
		{
			StackCharacter p1;
			// check if the uppermost stackentry is of type character
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP])))
				throw ExecutionError("instruction conv: SP does not point to element of type character.");
			
			integervalue = stack->fStore[stack->fSP]->getValue();
			
			break;  
		}
		case boolean:
		{
			StackBoolean p1;
			// check if the uppermost stackentry is of type boolean
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP])))
				throw ExecutionError("instruction conv: SP does not point to element of type boolean.");

			integervalue = stack->fStore[stack->fSP]->getBoolean();
			
			break;
		}
		case address:
		{
			StackAddress p1;
			// check if the uppermost stackentry is of type address
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP])))
				throw ExecutionError("instruction conv: SP does not point to element of type address.");
			
			integervalue = stack->fStore[stack->fSP]->getValue();

			break;
		}
	}
	
	delete stack->fStore[stack->fSP];	
	
	switch(fType2)
	{
		case integer:
			stack->fStore[stack->fSP] = new StackInteger(integervalue);
			break;
		case boolean:
			stack->fStore[stack->fSP] = new StackBoolean(static_cast<bool>(integervalue));
			break;
		case character:
			stack->fStore[stack->fSP] = new StackCharacter(static_cast<char>(integervalue));
			break;
		case address:
			stack->fStore[stack->fSP] = new StackAddress(integervalue);
			break;
		case real:
			stack->fStore[stack->fSP] = new StackReal(integervalue);
			break;
	}
	
	// adding cost of this instruction
	stack->fTime.count("conv");

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2e0, %rsp            # imm = 0x2E0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, 0xb4(%rax)
jge 0x258f7
movb $0x1, -0x45(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x1b0(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x74f0
movq -0x1a8(%rbp), %rdx
leaq 0x14a80(%rip), %rsi     # 0x3a2f2
leaq -0x30(%rbp), %rdi
callq 0x8940
jmp 0x2587d
movq -0x1b0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x283d0
jmp 0x2588f
movq -0x1b0(%rbp), %rdi
movb $0x0, -0x45(%rbp)
leaq 0x241df(%rip), %rsi     # 0x49a80
leaq 0x2b58(%rip), %rdx      # 0x28400
callq 0x74a0
jmp 0x2670a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x258d5
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 0x258e6
jmp 0x258f2
movq -0x1b0(%rbp), %rdi
callq 0x71c0
jmp 0x26701
movq -0x1a0(%rbp), %rax
movl 0x8(%rax), %eax
movq %rax, -0x1b8(%rbp)
subq $0x4, %rax
ja 0x263ca
movq -0x1b8(%rbp), %rax
leaq 0x14990(%rip), %rcx     # 0x3a2b0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0x60(%rbp), %rdi
xorl %esi, %esi
callq 0x27340
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x1c0(%rbp)
cmpq $0x0, %rax
jne 0x25963
callq 0x7300
jmp 0x25963
movq -0x1c0(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x25178(%rip), %rdi     # 0x4aaf0
callq 0x9370
testb $0x1, %al
jne 0x25986
jmp 0x25a5b
movb $0x1, -0x82(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x1d0(%rbp)
leaq -0x81(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
callq 0x74f0
movq -0x1c8(%rbp), %rdx
leaq 0x1496c(%rip), %rsi     # 0x3a32b
leaq -0x80(%rbp), %rdi
callq 0x8940
jmp 0x259ca
movq -0x1d0(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x283d0
jmp 0x259dc
movq -0x1d0(%rbp), %rdi
movb $0x0, -0x82(%rbp)
leaq 0x2408f(%rip), %rsi     # 0x49a80
leaq 0x2a08(%rip), %rdx      # 0x28400
callq 0x74a0
jmp 0x2670a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x25a9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x25a36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x7170
leaq -0x81(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x82(%rbp)
jne 0x25a4d
jmp 0x25a59
movq -0x1d0(%rbp), %rdi
callq 0x71c0
jmp 0x25a9d
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x18, %rdi
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x68(%rax), %rax
callq *%rax
movl %eax, -0x1d4(%rbp)
jmp 0x25a86
movl -0x1d4(%rbp), %eax
movl %eax, -0x4c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x27380
jmp 0x263ca
leaq -0x60(%rbp), %rdi
callq 0x27380
jmp 0x26701
leaq -0x98(%rbp), %rdi
xorps %xmm0, %xmm0
callq 0x27840
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x1e0(%rbp)
cmpq $0x0, %rax
jne 0x25ae9
callq 0x7300
jmp 0x25ae9
movq -0x1e0(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x250c2(%rip), %rdi     # 0x4abc0
callq 0x9370
testb $0x1, %al
jne 0x25b0c
jmp 0x25bed
movb $0x1, -0xba(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x1f0(%rbp)
leaq -0xb9(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
callq 0x74f0
movq -0x1e8(%rbp), %rdx
leaq 0x14826(%rip), %rsi     # 0x3a36b
leaq -0xb8(%rbp), %rdi
callq 0x8940
jmp 0x25b53
movq -0x1f0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x283d0
jmp 0x25b68
movq -0x1f0(%rbp), %rdi
movb $0x0, -0xba(%rbp)
leaq 0x23f03(%rip), %rsi     # 0x49a80
leaq 0x287c(%rip), %rdx      # 0x28400
callq 0x74a0
jmp 0x2670a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x25ef8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x25bc5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x7170
leaq -0xb9(%rbp), %rdi
callq 0x72e0
testb $0x1, -0xba(%rbp)
jne 0x25bdc
jmp 0x25be8
movq -0x1f0(%rbp), %rdi
callq 0x71c0
jmp 0x25ef8
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x18, %rdi
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x78(%rax), %rax
callq *%rax
movsd %xmm0, -0x1f8(%rbp)
jmp 0x25c1a
movsd -0x1f8(%rbp), %xmm0
movsd %xmm0, -0xc8(%rbp)
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x200(%rbp)
cmpq $0x0, %rax
je 0x25c6f
movq -0x200(%rbp), %rdi
callq 0x26ca0
movq -0x200(%rbp), %rdi
movl $0x8, %esi
callq 0x7280
movq -0x1a0(%rbp), %rax
movl 0xc(%rax), %eax
movq %rax, -0x208(%rbp)
subq $0x4, %rax
ja 0x25ee7
movq -0x208(%rbp), %rax
leaq 0x1462c(%rip), %rcx     # 0x3a2c4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x10, %edi
callq 0x7270
movq %rax, -0x210(%rbp)
jmp 0x25cb4
movq -0x210(%rbp), %rdi
cvttsd2si -0xc8(%rbp), %esi
callq 0x27340
jmp 0x25cca
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq -0x210(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x25ee7
movq -0x210(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x10, %esi
callq 0x7280
jmp 0x25ef8
movl $0x10, %edi
callq 0x7270
movq %rax, -0x218(%rbp)
jmp 0x25d26
movq -0x218(%rbp), %rdi
movsd -0xc8(%rbp), %xmm1
xorps %xmm0, %xmm0
cmpneqsd %xmm1, %xmm0
movq %xmm0, %rax
movl %eax, %esi
andl $0x1, %esi
callq 0x27d20
jmp 0x25d4e
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq -0x218(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x25ee7
movq -0x218(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x10, %esi
callq 0x7280
jmp 0x25ef8
movl $0x10, %edi
callq 0x7270
movq %rax, -0x220(%rbp)
jmp 0x25daa
movq -0x220(%rbp), %rdi
cvttsd2si -0xc8(%rbp), %eax
movsbl %al, %esi
callq 0x28170
jmp 0x25dc3
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq -0x220(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x25ee7
movq -0x220(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x10, %esi
callq 0x7280
jmp 0x25ef8
movl $0x10, %edi
callq 0x7270
movq %rax, -0x228(%rbp)
jmp 0x25e1f
movq -0x228(%rbp), %rdi
cvttsd2si -0xc8(%rbp), %esi
callq 0x26800
jmp 0x25e35
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq -0x228(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x25ee7
movq -0x228(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x10, %esi
callq 0x7280
jmp 0x25ef8
movl $0x10, %edi
callq 0x7270
movq %rax, -0x230(%rbp)
jmp 0x25e8e
movq -0x230(%rbp), %rdi
movsd -0xc8(%rbp), %xmm0
callq 0x27840
jmp 0x25ea4
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq -0x230(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x25ee7
movq -0x230(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x10, %esi
callq 0x7280
jmp 0x25ef8
leaq -0x98(%rbp), %rdi
callq 0x27880
jmp 0x266c6
leaq -0x98(%rbp), %rdi
callq 0x27880
jmp 0x26701
leaq -0xd8(%rbp), %rdi
movl $0x61, %esi
callq 0x28170
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x238(%rbp)
cmpq $0x0, %rax
jne 0x25f49
callq 0x7300
jmp 0x25f49
movq -0x238(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x24e02(%rip), %rdi     # 0x4ad60
callq 0x9370
testb $0x1, %al
jne 0x25f6c
jmp 0x2604a
movb $0x1, -0xfa(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x248(%rbp)
leaq -0xf9(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0x74f0
movq -0x240(%rbp), %rdx
leaq 0x14403(%rip), %rsi     # 0x3a3a8
leaq -0xf8(%rbp), %rdi
callq 0x8940
jmp 0x25fb3
movq -0x248(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x283d0
jmp 0x25fc8
movq -0x248(%rbp), %rdi
movb $0x0, -0xfa(%rbp)
leaq 0x23aa3(%rip), %rsi     # 0x49a80
leaq 0x241c(%rip), %rdx      # 0x28400
callq 0x74a0
jmp 0x2670a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2608f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x26025
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x7170
leaq -0xf9(%rbp), %rdi
callq 0x72e0
testb $0x1, -0xfa(%rbp)
jne 0x2603c
jmp 0x26048
movq -0x248(%rbp), %rdi
callq 0x71c0
jmp 0x2608f
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x18, %rdi
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x68(%rax), %rax
callq *%rax
movl %eax, -0x24c(%rbp)
jmp 0x26075
movl -0x24c(%rbp), %eax
movl %eax, -0x4c(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x281b0
jmp 0x263ca
leaq -0xd8(%rbp), %rdi
callq 0x281b0
jmp 0x26701
leaq -0x110(%rbp), %rdi
xorl %esi, %esi
callq 0x27d20
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x258(%rbp)
cmpq $0x0, %rax
jne 0x260dd
callq 0x7300
jmp 0x260dd
movq -0x258(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x24b9e(%rip), %rdi     # 0x4ac90
callq 0x9370
testb $0x1, %al
jne 0x26100
jmp 0x261de
movb $0x1, -0x132(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x268(%rbp)
leaq -0x131(%rbp), %rdi
movq %rdi, -0x260(%rbp)
callq 0x74f0
movq -0x260(%rbp), %rdx
leaq 0x142b1(%rip), %rsi     # 0x3a3ea
leaq -0x130(%rbp), %rdi
callq 0x8940
jmp 0x26147
movq -0x268(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x283d0
jmp 0x2615c
movq -0x268(%rbp), %rdi
movb $0x0, -0x132(%rbp)
leaq 0x2390f(%rip), %rsi     # 0x49a80
leaq 0x2288(%rip), %rdx      # 0x28400
callq 0x74a0
jmp 0x2670a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x26228
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x261b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x7170
leaq -0x131(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x132(%rbp)
jne 0x261d0
jmp 0x261dc
movq -0x268(%rbp), %rdi
callq 0x71c0
jmp 0x26228
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x18, %rdi
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x70(%rax), %rax
callq *%rax
movb %al, -0x269(%rbp)
jmp 0x26209
movb -0x269(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4c(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x27d70
jmp 0x263ca
leaq -0x110(%rbp), %rdi
callq 0x27d70
jmp 0x26701
leaq -0x148(%rbp), %rdi
xorl %esi, %esi
callq 0x26800
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x278(%rbp)
cmpq $0x0, %rax
jne 0x26276
callq 0x7300
jmp 0x26276
movq -0x278(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x246cd(%rip), %rdi     # 0x4a958
callq 0x9370
testb $0x1, %al
jne 0x26299
jmp 0x26377
movb $0x1, -0x16a(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x288(%rbp)
leaq -0x169(%rbp), %rdi
movq %rdi, -0x280(%rbp)
callq 0x74f0
movq -0x280(%rbp), %rdx
leaq 0x14158(%rip), %rsi     # 0x3a42a
leaq -0x168(%rbp), %rdi
callq 0x8940
jmp 0x262e0
movq -0x288(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x283d0
jmp 0x262f5
movq -0x288(%rbp), %rdi
movb $0x0, -0x16a(%rbp)
leaq 0x23776(%rip), %rsi     # 0x49a80
leaq 0x20ef(%rip), %rdx      # 0x28400
callq 0x74a0
jmp 0x2670a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x263b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x26352
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x7170
leaq -0x169(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x16a(%rbp)
jne 0x26369
jmp 0x26375
movq -0x288(%rbp), %rdi
callq 0x71c0
jmp 0x263b9
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x18, %rdi
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq (%rax), %rdi
movq (%rdi), %rax
movq 0x68(%rax), %rax
callq *%rax
movl %eax, -0x28c(%rbp)
jmp 0x263a2
movl -0x28c(%rbp), %eax
movl %eax, -0x4c(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x26840
jmp 0x263ca
leaq -0x148(%rbp), %rdi
callq 0x26840
jmp 0x26701
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x298(%rbp)
cmpq $0x0, %rax
je 0x2640f
movq -0x298(%rbp), %rdi
callq 0x26ca0
movq -0x298(%rbp), %rdi
movl $0x8, %esi
callq 0x7280
movq -0x1a0(%rbp), %rax
movl 0xc(%rax), %eax
movq %rax, -0x2a0(%rbp)
subq $0x4, %rax
ja 0x2665b
movq -0x2a0(%rbp), %rax
leaq 0x13ea0(%rip), %rcx     # 0x3a2d8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x10, %edi
callq 0x7270
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x2a8(%rbp)
movl -0x4c(%rbp), %esi
callq 0x27340
jmp 0x26462
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq -0x2a8(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x2665b
movq -0x2a8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x10, %esi
callq 0x7280
jmp 0x26701
movl $0x10, %edi
callq 0x7270
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x2b0(%rbp)
movl -0x4c(%rbp), %eax
testl %eax, %eax
setne %al
movzbl %al, %esi
callq 0x27d20
jmp 0x264d4
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq -0x2b0(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x2665b
movq -0x2b0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x10, %esi
callq 0x7280
jmp 0x26701
movl $0x10, %edi
callq 0x7270
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x2b8(%rbp)
movsbl -0x4c(%rbp), %esi
callq 0x28170
jmp 0x2653f
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq -0x2b8(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x2665b
movq -0x2b8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x10, %esi
callq 0x7280
jmp 0x26701
movl $0x10, %edi
callq 0x7270
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x2c0(%rbp)
movl -0x4c(%rbp), %esi
callq 0x26800
jmp 0x265a9
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq -0x2c0(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x2665b
movq -0x2c0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x10, %esi
callq 0x7280
jmp 0x26701
movl $0x10, %edi
callq 0x7270
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x2c8(%rbp)
cvtsi2sdl -0x4c(%rbp), %xmm0
callq 0x27840
jmp 0x26615
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq -0x2c8(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x2665b
movq -0x2c8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x10, %esi
callq 0x7280
jmp 0x26701
movq -0x10(%rbp), %rax
addq $0x78, %rax
movq %rax, -0x2d8(%rbp)
leaq -0x191(%rbp), %rdi
movq %rdi, -0x2d0(%rbp)
callq 0x74f0
movq -0x2d0(%rbp), %rdx
leaq 0x13ddf(%rip), %rsi     # 0x3a46a
leaq -0x190(%rbp), %rdi
callq 0x8940
jmp 0x26699
movq -0x2d8(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0x2c4d0
jmp 0x266ae
leaq -0x190(%rbp), %rdi
callq 0x7170
leaq -0x191(%rbp), %rdi
callq 0x72e0
addq $0x2e0, %rsp            # imm = 0x2E0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x266f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x190(%rbp), %rdi
callq 0x7170
leaq -0x191(%rbp), %rdi
callq 0x72e0
movq -0x40(%rbp), %rdi
callq 0x74e0
nopw (%rax,%rax)