// File: zerolfx[P]P-Machine/geq.cpp
// Function: Geq::execute(StackMachine*)
void Geq::execute(StackMachine *stack) 
{
	// check if the stack contains at least two entries
	if(stack->fSP < 1)
		throw ExecutionError("instruction geq: requires 2 stackelements to be present.");

	switch(fType)
	{
		case integer:
		{
			StackInteger p1;

			// check if the two uppermost stackentries are of type integer
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP])))
				throw ExecutionError("instruction geq: SP does not point to element of type integer.");
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP - 1])))
				throw ExecutionError("instruction geq: SP - 1 does not point to element of type integer.");

			break;
		}	
		case real:
		{
			StackReal p1;
			// check if the two uppermost stackentries are of type real
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP])))
				throw ExecutionError("instruction geq: SP does not point to element of type real.");
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP - 1])))
				throw ExecutionError("instruction geq: SP - 1 does not point to element of type real.");
			break;
		}
		case boolean:
		{
			StackBoolean p1;
			// check if the two uppermost stackentries are of type real
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP])))
				throw ExecutionError("instruction geq: SP does not point to element of type boolean.");
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP - 1])))
				throw ExecutionError("instruction geq: SP - 1 does not point to element of type boolean.");
			break;
		}

		case character:
		{
			StackCharacter p1;
			// check if the two uppermost stackentries are of type real
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP])))
				throw ExecutionError("instruction geq: SP does not point to element of type character.");
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP - 1])))
				throw ExecutionError("instruction geq: SP - 1 does not point to element of type character.");
			break;
		}
		case address:
		{
			StackAddress p1;
			// check if the two uppermost stackentries are of type real
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP])))
				throw ExecutionError("instruction geq: SP does not point to element of type address.");
			if(typeid(p1) != typeid(*(stack->fStore[stack->fSP - 1])))
				throw ExecutionError("instruction geq: SP - 1 does not point to element of type address.");
			break;
		}

	}
		
	// compare
	StackBoolean *result;
	if(*(stack->fStore[stack->fSP - 1]) >= *(stack->fStore[stack->fSP]))
		result = new StackBoolean(true);
	else
		result = new StackBoolean(false);
		
	// remove operands
	delete stack->fStore[stack->fSP];
	stack->fStore[stack->fSP] = 0;
	delete stack->fStore[stack->fSP - 1];
	stack->fStore[stack->fSP - 1] = 0;
	stack->fStore.pop_back();
	stack->fStore.pop_back();
	--stack->fSP;

	// put result on top of stack
	stack->fStore.push_back(result);
	
	// adding cost of this instruction
	stack->fTime.count("geq");

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3b0, %rsp            # imm = 0x3B0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x268(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x1, 0xb4(%rax)
jge 0xf6f7
movb $0x1, -0x45(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x278(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x270(%rbp)
callq 0x74f0
movq -0x270(%rbp), %rdx
leaq 0x285ef(%rip), %rsi     # 0x37c61
leaq -0x30(%rbp), %rdi
callq 0x8940
jmp 0xf67d
movq -0x278(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x283d0
jmp 0xf68f
movq -0x278(%rbp), %rdi
movb $0x0, -0x45(%rbp)
leaq 0x3a3df(%rip), %rsi     # 0x49a80
leaq 0x18d58(%rip), %rdx     # 0x28400
callq 0x74a0
jmp 0x10674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xf6d5
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 0xf6e6
jmp 0xf6f2
movq -0x278(%rbp), %rdi
callq 0x71c0
jmp 0x1066b
movq -0x268(%rbp), %rax
movl 0x8(%rax), %eax
movq %rax, -0x280(%rbp)
subq $0x4, %rax
ja 0x103ac
movq -0x280(%rbp), %rax
leaq 0x28528(%rip), %rcx     # 0x37c48
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0x58(%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, -0x288(%rbp)
cmpq $0x0, %rax
jne 0xf763
callq 0x7300
jmp 0xf763
movq -0x288(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x3b378(%rip), %rdi     # 0x4aaf0
callq 0x9370
testb $0x1, %al
jne 0xf786
jmp 0xf84f
movb $0x1, -0x7a(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x298(%rbp)
leaq -0x79(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0x74f0
movq -0x290(%rbp), %rdx
leaq 0x284e1(%rip), %rsi     # 0x37c9a
leaq -0x78(%rbp), %rdi
callq 0x8940
jmp 0xf7c4
movq -0x298(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x283d0
jmp 0xf7d6
movq -0x298(%rbp), %rdi
movb $0x0, -0x7a(%rbp)
leaq 0x3a298(%rip), %rsi     # 0x49a80
leaq 0x18c11(%rip), %rdx     # 0x28400
callq 0x74a0
jmp 0x10674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xf981
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xf82d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x7170
leaq -0x79(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x7a(%rbp)
jne 0xf83e
jmp 0xf84a
movq -0x298(%rbp), %rdi
callq 0x71c0
jmp 0xf981
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movl 0xb4(%rax), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x2a0(%rbp)
cmpq $0x0, %rax
jne 0xf883
callq 0x7300
jmp 0xf883
movq -0x2a0(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x3b258(%rip), %rdi     # 0x4aaf0
callq 0x9370
testb $0x1, %al
jne 0xf8a6
jmp 0xf973
movb $0x1, -0xa2(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x2b0(%rbp)
leaq -0xa1(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x74f0
movq -0x2a8(%rbp), %rdx
leaq 0x283fa(%rip), %rsi     # 0x37cd9
leaq -0xa0(%rbp), %rdi
callq 0x8940
jmp 0xf8ed
movq -0x2b0(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x283d0
jmp 0xf902
movq -0x2b0(%rbp), %rdi
movb $0x0, -0xa2(%rbp)
leaq 0x3a169(%rip), %rsi     # 0x49a80
leaq 0x18ae2(%rip), %rdx     # 0x28400
callq 0x74a0
jmp 0x10674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xf94e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x7170
leaq -0xa1(%rbp), %rdi
callq 0x72e0
testb $0x1, -0xa2(%rbp)
jne 0xf965
jmp 0xf971
movq -0x2b0(%rbp), %rdi
callq 0x71c0
jmp 0xf981
leaq -0x58(%rbp), %rdi
callq 0x27380
jmp 0x103ac
leaq -0x58(%rbp), %rdi
callq 0x27380
jmp 0x1066b
leaq -0xb8(%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, -0x2b8(%rbp)
cmpq $0x0, %rax
jne 0xf9cd
callq 0x7300
jmp 0xf9cd
movq -0x2b8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x3b1de(%rip), %rdi     # 0x4abc0
callq 0x9370
testb $0x1, %al
jne 0xf9f0
jmp 0xfad1
movb $0x1, -0xda(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x2c8(%rbp)
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x74f0
movq -0x2c0(%rbp), %rdx
leaq 0x282f3(%rip), %rsi     # 0x37d1c
leaq -0xd8(%rbp), %rdi
callq 0x8940
jmp 0xfa37
movq -0x2c8(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x283d0
jmp 0xfa4c
movq -0x2c8(%rbp), %rdi
movb $0x0, -0xda(%rbp)
leaq 0x3a01f(%rip), %rsi     # 0x49a80
leaq 0x18998(%rip), %rdx     # 0x28400
callq 0x74a0
jmp 0x10674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xfc06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xfaa9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x7170
leaq -0xd9(%rbp), %rdi
callq 0x72e0
testb $0x1, -0xda(%rbp)
jne 0xfac0
jmp 0xfacc
movq -0x2c8(%rbp), %rdi
callq 0x71c0
jmp 0xfc06
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movl 0xb4(%rax), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x2d0(%rbp)
cmpq $0x0, %rax
jne 0xfb05
callq 0x7300
jmp 0xfb05
movq -0x2d0(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x3b0a6(%rip), %rdi     # 0x4abc0
callq 0x9370
testb $0x1, %al
jne 0xfb28
jmp 0xfbf5
movb $0x1, -0x102(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x2e0(%rbp)
leaq -0x101(%rbp), %rdi
movq %rdi, -0x2d8(%rbp)
callq 0x74f0
movq -0x2d8(%rbp), %rdx
leaq 0x281f7(%rip), %rsi     # 0x37d58
leaq -0x100(%rbp), %rdi
callq 0x8940
jmp 0xfb6f
movq -0x2e0(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x283d0
jmp 0xfb84
movq -0x2e0(%rbp), %rdi
movb $0x0, -0x102(%rbp)
leaq 0x39ee7(%rip), %rsi     # 0x49a80
leaq 0x18860(%rip), %rdx     # 0x28400
callq 0x74a0
jmp 0x10674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xfbd0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x7170
leaq -0x101(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x102(%rbp)
jne 0xfbe7
jmp 0xfbf3
movq -0x2e0(%rbp), %rdi
callq 0x71c0
jmp 0xfc06
leaq -0xb8(%rbp), %rdi
callq 0x27880
jmp 0x103ac
leaq -0xb8(%rbp), %rdi
callq 0x27880
jmp 0x1066b
leaq -0x118(%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, -0x2e8(%rbp)
cmpq $0x0, %rax
jne 0xfc54
callq 0x7300
jmp 0xfc54
movq -0x2e8(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x3b027(%rip), %rdi     # 0x4ac90
callq 0x9370
testb $0x1, %al
jne 0xfc77
jmp 0xfd58
movb $0x1, -0x13a(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x2f8(%rbp)
leaq -0x139(%rbp), %rdi
movq %rdi, -0x2f0(%rbp)
callq 0x74f0
movq -0x2f0(%rbp), %rdx
leaq 0x280e8(%rip), %rsi     # 0x37d98
leaq -0x138(%rbp), %rdi
callq 0x8940
jmp 0xfcbe
movq -0x2f8(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x283d0
jmp 0xfcd3
movq -0x2f8(%rbp), %rdi
movb $0x0, -0x13a(%rbp)
leaq 0x39d98(%rip), %rsi     # 0x49a80
leaq 0x18711(%rip), %rdx     # 0x28400
callq 0x74a0
jmp 0x10674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xfe8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xfd30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x7170
leaq -0x139(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x13a(%rbp)
jne 0xfd47
jmp 0xfd53
movq -0x2f8(%rbp), %rdi
callq 0x71c0
jmp 0xfe8d
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movl 0xb4(%rax), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x300(%rbp)
cmpq $0x0, %rax
jne 0xfd8c
callq 0x7300
jmp 0xfd8c
movq -0x300(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x3aeef(%rip), %rdi     # 0x4ac90
callq 0x9370
testb $0x1, %al
jne 0xfdaf
jmp 0xfe7c
movb $0x1, -0x162(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x310(%rbp)
leaq -0x161(%rbp), %rdi
movq %rdi, -0x308(%rbp)
callq 0x74f0
movq -0x308(%rbp), %rdx
leaq 0x27fef(%rip), %rsi     # 0x37dd7
leaq -0x160(%rbp), %rdi
callq 0x8940
jmp 0xfdf6
movq -0x310(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x283d0
jmp 0xfe0b
movq -0x310(%rbp), %rdi
movb $0x0, -0x162(%rbp)
leaq 0x39c60(%rip), %rsi     # 0x49a80
leaq 0x185d9(%rip), %rdx     # 0x28400
callq 0x74a0
jmp 0x10674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xfe57
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x7170
leaq -0x161(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x162(%rbp)
jne 0xfe6e
jmp 0xfe7a
movq -0x310(%rbp), %rdi
callq 0x71c0
jmp 0xfe8d
leaq -0x118(%rbp), %rdi
callq 0x27d70
jmp 0x103ac
leaq -0x118(%rbp), %rdi
callq 0x27d70
jmp 0x1066b
leaq -0x178(%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, -0x318(%rbp)
cmpq $0x0, %rax
jne 0xfede
callq 0x7300
jmp 0xfede
movq -0x318(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x3ae6d(%rip), %rdi     # 0x4ad60
callq 0x9370
testb $0x1, %al
jne 0xff01
jmp 0xffe2
movb $0x1, -0x19a(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x328(%rbp)
leaq -0x199(%rbp), %rdi
movq %rdi, -0x320(%rbp)
callq 0x74f0
movq -0x320(%rbp), %rdx
leaq 0x27ee0(%rip), %rsi     # 0x37e1a
leaq -0x198(%rbp), %rdi
callq 0x8940
jmp 0xff48
movq -0x328(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x283d0
jmp 0xff5d
movq -0x328(%rbp), %rdi
movb $0x0, -0x19a(%rbp)
leaq 0x39b0e(%rip), %rsi     # 0x49a80
leaq 0x18487(%rip), %rdx     # 0x28400
callq 0x74a0
jmp 0x10674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x10117
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0xffba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x7170
leaq -0x199(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x19a(%rbp)
jne 0xffd1
jmp 0xffdd
movq -0x328(%rbp), %rdi
callq 0x71c0
jmp 0x10117
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movl 0xb4(%rax), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x330(%rbp)
cmpq $0x0, %rax
jne 0x10016
callq 0x7300
jmp 0x10016
movq -0x330(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x3ad35(%rip), %rdi     # 0x4ad60
callq 0x9370
testb $0x1, %al
jne 0x10039
jmp 0x10106
movb $0x1, -0x1c2(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x340(%rbp)
leaq -0x1c1(%rbp), %rdi
movq %rdi, -0x338(%rbp)
callq 0x74f0
movq -0x338(%rbp), %rdx
leaq 0x27de9(%rip), %rsi     # 0x37e5b
leaq -0x1c0(%rbp), %rdi
callq 0x8940
jmp 0x10080
movq -0x340(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x283d0
jmp 0x10095
movq -0x340(%rbp), %rdi
movb $0x0, -0x1c2(%rbp)
leaq 0x399d6(%rip), %rsi     # 0x49a80
leaq 0x1834f(%rip), %rdx     # 0x28400
callq 0x74a0
jmp 0x10674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x100e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x7170
leaq -0x1c1(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x1c2(%rbp)
jne 0x100f8
jmp 0x10104
movq -0x340(%rbp), %rdi
callq 0x71c0
jmp 0x10117
leaq -0x178(%rbp), %rdi
callq 0x281b0
jmp 0x103ac
leaq -0x178(%rbp), %rdi
callq 0x281b0
jmp 0x1066b
leaq -0x1d8(%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, -0x348(%rbp)
cmpq $0x0, %rax
jne 0x10165
callq 0x7300
jmp 0x10165
movq -0x348(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x3a7de(%rip), %rdi     # 0x4a958
callq 0x9370
testb $0x1, %al
jne 0x10188
jmp 0x10269
movb $0x1, -0x1fa(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x358(%rbp)
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0x350(%rbp)
callq 0x74f0
movq -0x350(%rbp), %rdx
leaq 0x27cdf(%rip), %rsi     # 0x37ea0
leaq -0x1f8(%rbp), %rdi
callq 0x8940
jmp 0x101cf
movq -0x358(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x283d0
jmp 0x101e4
movq -0x358(%rbp), %rdi
movb $0x0, -0x1fa(%rbp)
leaq 0x39887(%rip), %rsi     # 0x49a80
leaq 0x18200(%rip), %rdx     # 0x28400
callq 0x74a0
jmp 0x10674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1039b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x10241
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 0x10258
jmp 0x10264
movq -0x358(%rbp), %rdi
callq 0x71c0
jmp 0x1039b
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movl 0xb4(%rax), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x360(%rbp)
cmpq $0x0, %rax
jne 0x1029d
callq 0x7300
jmp 0x1029d
movq -0x360(%rbp), %rax
movq (%rax), %rax
movq -0x8(%rax), %rsi
leaq 0x3a6a6(%rip), %rdi     # 0x4a958
callq 0x9370
testb $0x1, %al
jne 0x102c0
jmp 0x1038d
movb $0x1, -0x222(%rbp)
movl $0x20, %edi
callq 0x7110
movq %rax, -0x370(%rbp)
leaq -0x221(%rbp), %rdi
movq %rdi, -0x368(%rbp)
callq 0x74f0
movq -0x368(%rbp), %rdx
leaq 0x27be6(%rip), %rsi     # 0x37edf
leaq -0x220(%rbp), %rdi
callq 0x8940
jmp 0x10307
movq -0x370(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x283d0
jmp 0x1031c
movq -0x370(%rbp), %rdi
movb $0x0, -0x222(%rbp)
leaq 0x3974f(%rip), %rsi     # 0x49a80
leaq 0x180c8(%rip), %rdx     # 0x28400
callq 0x74a0
jmp 0x10674
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x10368
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x7170
leaq -0x221(%rbp), %rdi
callq 0x72e0
testb $0x1, -0x222(%rbp)
jne 0x1037f
jmp 0x1038b
movq -0x370(%rbp), %rdi
callq 0x71c0
jmp 0x1039b
leaq -0x1d8(%rbp), %rdi
callq 0x26840
jmp 0x103ac
leaq -0x1d8(%rbp), %rdi
callq 0x26840
jmp 0x1066b
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movl 0xb4(%rax), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x378(%rbp)
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq -0x378(%rbp), %rdi
movq (%rax), %rsi
callq 0x27200
testb $0x1, %al
jne 0x10400
jmp 0x10455
movl $0x10, %edi
callq 0x7270
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x380(%rbp)
movl $0x1, %esi
callq 0x27d20
jmp 0x10423
movq -0x380(%rbp), %rax
movq %rax, -0x230(%rbp)
jmp 0x104a7
movq -0x380(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x10, %esi
callq 0x7280
jmp 0x1066b
movl $0x10, %edi
callq 0x7270
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x388(%rbp)
xorl %esi, %esi
callq 0x27d20
jmp 0x10475
movq -0x388(%rbp), %rax
movq %rax, -0x230(%rbp)
jmp 0x104a7
movq -0x388(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl $0x10, %esi
callq 0x7280
jmp 0x1066b
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x390(%rbp)
cmpq $0x0, %rax
je 0x104ec
movq -0x390(%rbp), %rdi
callq 0x26ca0
movq -0x390(%rbp), %rdi
movl $0x8, %esi
callq 0x7280
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movslq 0xb4(%rax), %rsi
callq 0x8e70
movq $0x0, (%rax)
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x10(%rbp), %rax
movl 0xb4(%rax), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0x8e70
movq (%rax), %rax
movq %rax, -0x398(%rbp)
cmpq $0x0, %rax
je 0x10555
movq -0x398(%rbp), %rdi
callq 0x26ca0
movq -0x398(%rbp), %rdi
movl $0x8, %esi
callq 0x7280
movq -0x10(%rbp), %rax
movq %rax, %rdi
addq $0x18, %rdi
movl 0xb4(%rax), %eax
decl %eax
movslq %eax, %rsi
callq 0x8e70
movq $0x0, (%rax)
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
callq 0x8e90
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
callq 0x8e90
movq -0x10(%rbp), %rax
movl 0xb4(%rax), %ecx
decl %ecx
movl %ecx, 0xb4(%rax)
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
movq -0x230(%rbp), %rax
movq %rax, -0x238(%rbp)
leaq -0x238(%rbp), %rsi
callq 0xd2a0
movq -0x10(%rbp), %rax
addq $0x78, %rax
movq %rax, -0x3a8(%rbp)
leaq -0x259(%rbp), %rdi
movq %rdi, -0x3a0(%rbp)
callq 0x74f0
movq -0x3a0(%rbp), %rdx
leaq 0x2792d(%rip), %rsi     # 0x37f22
leaq -0x258(%rbp), %rdi
callq 0x8940
jmp 0x10603
movq -0x3a8(%rbp), %rdi
leaq -0x258(%rbp), %rsi
callq 0x2c4d0
jmp 0x10618
leaq -0x258(%rbp), %rdi
callq 0x7170
leaq -0x259(%rbp), %rdi
callq 0x72e0
addq $0x3b0, %rsp            # imm = 0x3B0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x1065f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x7170
leaq -0x259(%rbp), %rdi
callq 0x72e0
movq -0x40(%rbp), %rdi
callq 0x74e0
nopw %cs:(%rax,%rax)