// File: marxn[P]pupp/src/parser/operation.cpp
// Function: Operation::AddOperation(ConstValue*, ConstValue*)
ConstValue * Operation::AddOperation(ConstValue * left, ConstValue * right)
{
        ConstValue * result = NULL;
        if(left->GetType()==Integer && right->GetType()==Integer)
        {
                result = new IntegerValue(static_cast<IntegerValue*>(left)->GetValue() + static_cast<IntegerValue*>(right)->GetValue());
        }
        else if(left->GetType()==Integer && right->GetType()==Decimal)
        {
                DecimalValue leftvalue(static_cast<IntegerValue*>(left));
                result = new DecimalValue(leftvalue + *static_cast<DecimalValue*>(right));
        }
        else if(left->GetType()==Decimal && right->GetType()==Integer)
        {
                DecimalValue rightvalue(static_cast<IntegerValue*>(right));
                result = new DecimalValue(*static_cast<DecimalValue*>(left) + rightvalue);
        }
        else if(left->GetType()==Decimal && right->GetType()==Decimal)
        {
                DecimalValue * value1 = static_cast<DecimalValue*>(left);
                DecimalValue * value2 = static_cast<DecimalValue*>(right);

                result = new DecimalValue(*value1 + *value2);        
        }
        else if(left->GetType()==Integer && right->GetType()==String)
        {
                StringValue * rightvalue = static_cast<StringValue*>(right);

                if(rightvalue->LooksLikeInteger())
                {
                        IntegerValue * value1 = static_cast<IntegerValue*>(left);
                        IntegerValue value2(rightvalue->toString());
                        result = new IntegerValue(value1->GetValue() + value2.GetValue());
                }
                else if(rightvalue->LooksLikeDecimal())
                {
                        DecimalValue value1(static_cast<IntegerValue*>(left));
                        DecimalValue value2(rightvalue->toString());

                        result = new DecimalValue(value1 + value2);
                }
                else
                {
                        result = left->DupValue();
                }
        }
        else if(left->GetType()==String && right->GetType()==Integer)
        {
                StringValue * leftvalue = static_cast<StringValue*>(left);
                if(leftvalue->LooksLikeInteger())
                {
                        IntegerValue value1(leftvalue->toString());
                        IntegerValue * value2 = static_cast<IntegerValue*>(right);
                        result = new IntegerValue(value1.GetValue() + value2->GetValue());
                }
                else if(leftvalue->LooksLikeDecimal())
                {
                        DecimalValue value1(leftvalue->toString());
                        DecimalValue value2(static_cast<IntegerValue*>(right));

                        result = new DecimalValue(value1 + value2);
                }
                else
                {
                        result = right->DupValue();
                }
        }
        else if(left->GetType()==Decimal && right->GetType()==String)
        {
                StringValue * rightvalue = static_cast<StringValue*>(right);

                if(rightvalue->LooksLikeInteger())
                {
                        DecimalValue * value1 = static_cast<DecimalValue*>(left);
                        DecimalValue value2(right->toString());

                        result = new DecimalValue(*value1 + value2);
                }
                else if(rightvalue->LooksLikeDecimal())
                {
                        DecimalValue * value1 = static_cast<DecimalValue*>(left);

                        DecimalValue value2(right->toString());
                        result = new DecimalValue(*value1 + value2);
                }
                else
                {
                        result = left->DupValue();
                }
        }
        else if(left->GetType()==String && right->GetType()==Decimal)
        {
                StringValue * leftvalue = static_cast<StringValue*>(left);

                if(leftvalue->LooksLikeInteger())
                {
                        DecimalValue value1(left->toString());

                        DecimalValue * value2 = static_cast<DecimalValue*>(right);
                        result = new DecimalValue(value1 + *value2);
                }
                else if(leftvalue->LooksLikeDecimal())
                {
                        DecimalValue value1(leftvalue->toString());

                        DecimalValue * value2 = static_cast<DecimalValue*>(right);

                        result = new DecimalValue(value1 + *value2);
                }
                else
                {
                        result = right->DupValue();
                }
        }
        else if(left->GetType()==String && right->GetType()==String)
        {
                result = new StringValue(left->toString() + right->toString());
        }
        else
        {
                result = new NullValue;
        }
        return result;
}

// Assembly:
subq $0x488, %rsp            # imm = 0x488
movq %rdi, 0x480(%rsp)
movq %rsi, 0x478(%rsp)
movq $0x0, 0x470(%rsp)
movq 0x480(%rsp), %rdi
callq 0x7870
cmpl $0x1, %eax
jne 0x19f41
movq 0x478(%rsp), %rdi
callq 0x7870
cmpl $0x1, %eax
jne 0x19f41
movl $0x18, %edi
callq 0x62f0
movq %rax, 0xc8(%rsp)
movq 0x480(%rsp), %rdi
callq 0x7fe0
movq %rax, 0xd0(%rsp)
jmp 0x19ec8
movq 0x478(%rsp), %rdi
callq 0x7fe0
movq %rax, 0xc0(%rsp)
jmp 0x19edf
movq 0xc8(%rsp), %rdi
movq 0xc0(%rsp), %rax
movq 0xd0(%rsp), %rsi
addq %rax, %rsi
callq 0x7eb0
jmp 0x19f01
movq 0xc8(%rsp), %rax
movq %rax, 0x470(%rsp)
jmp 0x1aef9
movq 0xc8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
movl $0x18, %esi
callq 0x6300
jmp 0x1af09
movq 0x480(%rsp), %rdi
callq 0x7870
cmpl $0x1, %eax
jne 0x1a025
movq 0x478(%rsp), %rdi
callq 0x7870
cmpl $0x2, %eax
jne 0x1a025
movq 0x480(%rsp), %rsi
leaq 0x438(%rsp), %rdi
callq 0x8390
movl $0x28, %edi
callq 0x62f0
movq %rax, 0xb8(%rsp)
jmp 0x19f96
movq 0xb8(%rsp), %rdi
movq 0x478(%rsp), %rdx
leaq 0x438(%rsp), %rsi
callq 0x8620
jmp 0x19fb5
movq 0xb8(%rsp), %rax
movq %rax, 0x470(%rsp)
leaq 0x438(%rsp), %rdi
callq 0x8540
jmp 0x1aef7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1a013
movq 0xb8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
movl $0x28, %esi
callq 0x6300
leaq 0x438(%rsp), %rdi
callq 0x8540
jmp 0x1af09
movq 0x480(%rsp), %rdi
callq 0x7870
cmpl $0x2, %eax
jne 0x1a109
movq 0x478(%rsp), %rdi
callq 0x7870
cmpl $0x1, %eax
jne 0x1a109
movq 0x478(%rsp), %rsi
leaq 0x410(%rsp), %rdi
callq 0x8390
movl $0x28, %edi
callq 0x62f0
movq %rax, 0xb0(%rsp)
jmp 0x1a07a
movq 0xb0(%rsp), %rdi
movq 0x480(%rsp), %rsi
leaq 0x410(%rsp), %rdx
callq 0x8620
jmp 0x1a099
movq 0xb0(%rsp), %rax
movq %rax, 0x470(%rsp)
leaq 0x410(%rsp), %rdi
callq 0x8540
jmp 0x1aef5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1a0f7
movq 0xb0(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
movl $0x28, %esi
callq 0x6300
leaq 0x410(%rsp), %rdi
callq 0x8540
jmp 0x1af09
movq 0x480(%rsp), %rdi
callq 0x7870
cmpl $0x2, %eax
jne 0x1a1c4
movq 0x478(%rsp), %rdi
callq 0x7870
cmpl $0x2, %eax
jne 0x1a1c4
movq 0x480(%rsp), %rax
movq %rax, 0x408(%rsp)
movq 0x478(%rsp), %rax
movq %rax, 0x400(%rsp)
movl $0x28, %edi
callq 0x62f0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0xa8(%rsp)
movq 0x408(%rsp), %rsi
movq 0x400(%rsp), %rdx
callq 0x8620
jmp 0x1a184
movq 0xa8(%rsp), %rax
movq %rax, 0x470(%rsp)
jmp 0x1aef3
movq 0xa8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
movl $0x28, %esi
callq 0x6300
jmp 0x1af09
movq 0x480(%rsp), %rdi
callq 0x7870
cmpl $0x1, %eax
jne 0x1a4e2
movq 0x478(%rsp), %rdi
callq 0x7870
cmpl $0x4, %eax
jne 0x1a4e2
movq 0x478(%rsp), %rax
movq %rax, 0x3f8(%rsp)
movq 0x3f8(%rsp), %rdi
callq 0x7d40
testb $0x1, %al
jne 0x1a216
jmp 0x1a365
movq 0x480(%rsp), %rax
movq %rax, 0x3f0(%rsp)
movq 0x3f8(%rsp), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x3b8(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq *%rax
movq 0xa0(%rsp), %rsi
leaq 0x3d8(%rsp), %rdi
callq 0x7f00
jmp 0x1a25e
leaq 0x3b8(%rsp), %rdi
callq 0x61e0
movl $0x18, %edi
callq 0x62f0
movq %rax, 0x98(%rsp)
jmp 0x1a27f
movq 0x3f0(%rsp), %rdi
callq 0x7fe0
movq %rax, 0x90(%rsp)
jmp 0x1a296
leaq 0x3d8(%rsp), %rdi
callq 0x7fe0
movq %rax, 0x88(%rsp)
jmp 0x1a2ad
movq 0x98(%rsp), %rdi
movq 0x88(%rsp), %rax
movq 0x90(%rsp), %rsi
addq %rax, %rsi
callq 0x7eb0
jmp 0x1a2cf
movq 0x98(%rsp), %rax
movq %rax, 0x470(%rsp)
leaq 0x3d8(%rsp), %rdi
callq 0xb1a0
jmp 0x1a4dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
leaq 0x3b8(%rsp), %rdi
callq 0x61e0
jmp 0x1af09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1a353
movq 0x98(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
movl $0x18, %esi
callq 0x6300
leaq 0x3d8(%rsp), %rdi
callq 0xb1a0
jmp 0x1af09
movq 0x3f8(%rsp), %rdi
callq 0x7e00
testb $0x1, %al
jne 0x1a37b
jmp 0x1a4c5
movq 0x480(%rsp), %rsi
leaq 0x390(%rsp), %rdi
callq 0x8390
movq 0x3f8(%rsp), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x348(%rsp), %rdi
callq *%rax
jmp 0x1a3ab
leaq 0x368(%rsp), %rdi
leaq 0x348(%rsp), %rsi
callq 0x8220
jmp 0x1a3c2
leaq 0x348(%rsp), %rdi
callq 0x61e0
movl $0x28, %edi
callq 0x62f0
movq %rax, 0x80(%rsp)
jmp 0x1a3e3
movq 0x80(%rsp), %rdi
leaq 0x390(%rsp), %rsi
leaq 0x368(%rsp), %rdx
callq 0x8620
jmp 0x1a402
movq 0x80(%rsp), %rax
movq %rax, 0x470(%rsp)
leaq 0x368(%rsp), %rdi
callq 0x8540
leaq 0x390(%rsp), %rdi
callq 0x8540
jmp 0x1a4db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1a4b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
leaq 0x348(%rsp), %rdi
callq 0x61e0
jmp 0x1a4b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1a4a6
movq 0x80(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
movl $0x28, %esi
callq 0x6300
leaq 0x368(%rsp), %rdi
callq 0x8540
leaq 0x390(%rsp), %rdi
callq 0x8540
jmp 0x1af09
movq 0x480(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movq %rax, 0x470(%rsp)
jmp 0x1a4dd
jmp 0x1aef1
movq 0x480(%rsp), %rdi
callq 0x7870
cmpl $0x4, %eax
jne 0x1a7db
movq 0x478(%rsp), %rdi
callq 0x7870
cmpl $0x1, %eax
jne 0x1a7db
movq 0x480(%rsp), %rax
movq %rax, 0x340(%rsp)
movq 0x340(%rsp), %rdi
callq 0x7d40
testb $0x1, %al
jne 0x1a534
jmp 0x1a665
movq 0x340(%rsp), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x308(%rsp), %rdi
movq %rdi, 0x78(%rsp)
callq *%rax
movq 0x78(%rsp), %rsi
leaq 0x328(%rsp), %rdi
callq 0x7f00
jmp 0x1a566
leaq 0x308(%rsp), %rdi
callq 0x61e0
movq 0x478(%rsp), %rax
movq %rax, 0x300(%rsp)
movl $0x18, %edi
callq 0x62f0
movq %rax, 0x70(%rsp)
jmp 0x1a594
leaq 0x328(%rsp), %rdi
callq 0x7fe0
movq %rax, 0x68(%rsp)
jmp 0x1a5a8
movq 0x300(%rsp), %rdi
callq 0x7fe0
movq %rax, 0x60(%rsp)
jmp 0x1a5bc
movq 0x70(%rsp), %rdi
movq 0x60(%rsp), %rax
movq 0x68(%rsp), %rsi
addq %rax, %rsi
callq 0x7eb0
jmp 0x1a5d5
movq 0x70(%rsp), %rax
movq %rax, 0x470(%rsp)
leaq 0x328(%rsp), %rdi
callq 0xb1a0
jmp 0x1a7d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
leaq 0x308(%rsp), %rdi
callq 0x61e0
jmp 0x1af09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1a653
movq 0x70(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
movl $0x18, %esi
callq 0x6300
leaq 0x328(%rsp), %rdi
callq 0xb1a0
jmp 0x1af09
movq 0x340(%rsp), %rdi
callq 0x7e00
testb $0x1, %al
jne 0x1a67b
jmp 0x1a7be
movq 0x340(%rsp), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x2b8(%rsp), %rdi
movq %rdi, 0x58(%rsp)
callq *%rax
movq 0x58(%rsp), %rsi
leaq 0x2d8(%rsp), %rdi
callq 0x8220
jmp 0x1a6ad
leaq 0x2b8(%rsp), %rdi
callq 0x61e0
movq 0x478(%rsp), %rsi
leaq 0x290(%rsp), %rdi
callq 0x8390
jmp 0x1a6d1
movl $0x28, %edi
callq 0x62f0
movq %rax, 0x50(%rsp)
jmp 0x1a6e2
movq 0x50(%rsp), %rdi
leaq 0x2d8(%rsp), %rsi
leaq 0x290(%rsp), %rdx
callq 0x8620
jmp 0x1a6fe
movq 0x50(%rsp), %rax
movq %rax, 0x470(%rsp)
leaq 0x290(%rsp), %rdi
callq 0x8540
leaq 0x2d8(%rsp), %rdi
callq 0x8540
jmp 0x1a7d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
leaq 0x2b8(%rsp), %rdi
callq 0x61e0
jmp 0x1af09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1a7ac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1a79f
movq 0x50(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
movl $0x28, %esi
callq 0x6300
leaq 0x290(%rsp), %rdi
callq 0x8540
leaq 0x2d8(%rsp), %rdi
callq 0x8540
jmp 0x1af09
movq 0x478(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movq %rax, 0x470(%rsp)
jmp 0x1a7d6
jmp 0x1aeef
movq 0x480(%rsp), %rdi
callq 0x7870
cmpl $0x2, %eax
jne 0x1aa78
movq 0x478(%rsp), %rdi
callq 0x7870
cmpl $0x4, %eax
jne 0x1aa78
movq 0x478(%rsp), %rax
movq %rax, 0x288(%rsp)
movq 0x288(%rsp), %rdi
callq 0x7d40
testb $0x1, %al
jne 0x1a82d
jmp 0x1a939
movq 0x480(%rsp), %rax
movq %rax, 0x280(%rsp)
movq 0x478(%rsp), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x238(%rsp), %rdi
movq %rdi, 0x48(%rsp)
callq *%rax
movq 0x48(%rsp), %rsi
leaq 0x258(%rsp), %rdi
callq 0x8220
jmp 0x1a86f
leaq 0x238(%rsp), %rdi
callq 0x61e0
movl $0x28, %edi
callq 0x62f0
movq %rax, 0x40(%rsp)
jmp 0x1a88d
movq 0x40(%rsp), %rdi
movq 0x280(%rsp), %rsi
leaq 0x258(%rsp), %rdx
callq 0x8620
jmp 0x1a8a9
movq 0x40(%rsp), %rax
movq %rax, 0x470(%rsp)
leaq 0x258(%rsp), %rdi
callq 0x8540
jmp 0x1aa73
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
leaq 0x238(%rsp), %rdi
callq 0x61e0
jmp 0x1af09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1a927
movq 0x40(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
movl $0x28, %esi
callq 0x6300
leaq 0x258(%rsp), %rdi
callq 0x8540
jmp 0x1af09
movq 0x288(%rsp), %rdi
callq 0x7e00
testb $0x1, %al
jne 0x1a94f
jmp 0x1aa5b
movq 0x480(%rsp), %rax
movq %rax, 0x230(%rsp)
movq 0x478(%rsp), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x1e8(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq *%rax
movq 0x38(%rsp), %rsi
leaq 0x208(%rsp), %rdi
callq 0x8220
jmp 0x1a991
leaq 0x1e8(%rsp), %rdi
callq 0x61e0
movl $0x28, %edi
callq 0x62f0
movq %rax, 0x30(%rsp)
jmp 0x1a9af
movq 0x30(%rsp), %rdi
movq 0x230(%rsp), %rsi
leaq 0x208(%rsp), %rdx
callq 0x8620
jmp 0x1a9cb
movq 0x30(%rsp), %rax
movq %rax, 0x470(%rsp)
leaq 0x208(%rsp), %rdi
callq 0x8540
jmp 0x1aa71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
leaq 0x1e8(%rsp), %rdi
callq 0x61e0
jmp 0x1af09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1aa49
movq 0x30(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
movl $0x28, %esi
callq 0x6300
leaq 0x208(%rsp), %rdi
callq 0x8540
jmp 0x1af09
movq 0x480(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movq %rax, 0x470(%rsp)
jmp 0x1aa73
jmp 0x1aeed
movq 0x480(%rsp), %rdi
callq 0x7870
cmpl $0x4, %eax
jne 0x1ad15
movq 0x478(%rsp), %rdi
callq 0x7870
cmpl $0x2, %eax
jne 0x1ad15
movq 0x480(%rsp), %rax
movq %rax, 0x1e0(%rsp)
movq 0x1e0(%rsp), %rdi
callq 0x7d40
testb $0x1, %al
jne 0x1aaca
jmp 0x1abd6
movq 0x480(%rsp), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x198(%rsp), %rdi
movq %rdi, 0x28(%rsp)
callq *%rax
movq 0x28(%rsp), %rsi
leaq 0x1b8(%rsp), %rdi
callq 0x8220
jmp 0x1aafc
leaq 0x198(%rsp), %rdi
callq 0x61e0
movq 0x478(%rsp), %rax
movq %rax, 0x190(%rsp)
movl $0x28, %edi
callq 0x62f0
movq %rax, 0x20(%rsp)
jmp 0x1ab2a
movq 0x20(%rsp), %rdi
movq 0x190(%rsp), %rdx
leaq 0x1b8(%rsp), %rsi
callq 0x8620
jmp 0x1ab46
movq 0x20(%rsp), %rax
movq %rax, 0x470(%rsp)
leaq 0x1b8(%rsp), %rdi
callq 0x8540
jmp 0x1ad10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
leaq 0x198(%rsp), %rdi
callq 0x61e0
jmp 0x1af09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1abc4
movq 0x20(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
movl $0x28, %esi
callq 0x6300
leaq 0x1b8(%rsp), %rdi
callq 0x8540
jmp 0x1af09
movq 0x1e0(%rsp), %rdi
callq 0x7e00
testb $0x1, %al
jne 0x1abec
jmp 0x1acf8
movq 0x1e0(%rsp), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x148(%rsp), %rdi
movq %rdi, 0x18(%rsp)
callq *%rax
movq 0x18(%rsp), %rsi
leaq 0x168(%rsp), %rdi
callq 0x8220
jmp 0x1ac1e
leaq 0x148(%rsp), %rdi
callq 0x61e0
movq 0x478(%rsp), %rax
movq %rax, 0x140(%rsp)
movl $0x28, %edi
callq 0x62f0
movq %rax, 0x10(%rsp)
jmp 0x1ac4c
movq 0x10(%rsp), %rdi
movq 0x140(%rsp), %rdx
leaq 0x168(%rsp), %rsi
callq 0x8620
jmp 0x1ac68
movq 0x10(%rsp), %rax
movq %rax, 0x470(%rsp)
leaq 0x168(%rsp), %rdi
callq 0x8540
jmp 0x1ad0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
leaq 0x148(%rsp), %rdi
callq 0x61e0
jmp 0x1af09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1ace6
movq 0x10(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
movl $0x28, %esi
callq 0x6300
leaq 0x168(%rsp), %rdi
callq 0x8540
jmp 0x1af09
movq 0x478(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
movq %rax, 0x470(%rsp)
jmp 0x1ad10
jmp 0x1aeeb
movq 0x480(%rsp), %rdi
callq 0x7870
cmpl $0x4, %eax
jne 0x1ae9c
movq 0x478(%rsp), %rdi
callq 0x7870
cmpl $0x4, %eax
jne 0x1ae9c
movl $0x30, %edi
callq 0x62f0
movq %rax, 0x8(%rsp)
movb $0x1, 0xdf(%rsp)
movq 0x480(%rsp), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0x100(%rsp), %rdi
callq *%rax
jmp 0x1ad73
movq 0x478(%rsp), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq 0xe0(%rsp), %rdi
callq *%rax
jmp 0x1ad8e
leaq 0x120(%rsp), %rdi
leaq 0x100(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
callq 0x254f0
jmp 0x1adad
movq 0x8(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0x7c00
jmp 0x1adc1
movq 0x8(%rsp), %rax
movb $0x0, 0xdf(%rsp)
movq %rax, 0x470(%rsp)
leaq 0x120(%rsp), %rdi
callq 0x61e0
leaq 0xe0(%rsp), %rdi
callq 0x61e0
leaq 0x100(%rsp), %rdi
callq 0x61e0
jmp 0x1aee9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1ae7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1ae72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
jmp 0x1ae65
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
leaq 0x120(%rsp), %rdi
callq 0x61e0
leaq 0xe0(%rsp), %rdi
callq 0x61e0
leaq 0x100(%rsp), %rdi
callq 0x61e0
testb $0x1, 0xdf(%rsp)
jne 0x1ae8b
jmp 0x1ae9a
movq 0x8(%rsp), %rdi
movl $0x30, %esi
callq 0x6300
jmp 0x1af09
movl $0x10, %edi
callq 0x62f0
movq %rax, %rdi
movq %rdi, %rax
movq %rax, (%rsp)
callq 0x7aa0
jmp 0x1aeb7
movq (%rsp), %rax
movq %rax, 0x470(%rsp)
jmp 0x1aee9
movq (%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x468(%rsp)
movl %eax, 0x464(%rsp)
movl $0x10, %esi
callq 0x6300
jmp 0x1af09
jmp 0x1aeeb
jmp 0x1aeed
jmp 0x1aeef
jmp 0x1aef1
jmp 0x1aef3
jmp 0x1aef5
jmp 0x1aef7
jmp 0x1aef9
movq 0x470(%rsp), %rax
addq $0x488, %rsp            # imm = 0x488
retq
movq 0x468(%rsp), %rdi
callq 0x6550
nopw %cs:(%rax,%rax)