// File: /workspace/github_cpp_makefile_star2_O3/SunriseFox[P]very-simple-c-compiler/./src/asm.cpp
// Function: handleExprNode[abi:cxx11](TreeNode*)
string handleExprNode(TreeNode* node) {
    Symbol* ownSymbol = static_cast<ExprNode*>(node)->symbol;
    cerr << "symbol is: " << ownSymbol << ", " << ownSymbol->value << endl;

    if (node->nodeType == TreeNode::NODE_EXPRESSION) {
        cerr << "exprnode" << endl;
        if (ownSymbol->symbolType == Symbol::SYMBOL_CONSTANT) {
            if (ownSymbol->type == Symbol::VALUE_INT) {
                return string("$") + ownSymbol->value;
            }
            if (ownSymbol->type == Symbol::VALUE_CHAR) {
                return string("$") + to_string(ownSymbol->value[0]);
            }
        }
        return getSymbolMemory(ownSymbol);
    }

    if (node->nodeType == TreeNode::NODE_OPERATOR) {
        TreeNode* child[3];
        child[0] = node->child;
        child[1] = child[0] ? child[0]->sibling : nullptr;
        child[2] = child[1] ? child[1]->sibling : nullptr;

        auto opType = static_cast<OperatorNode*>(node)->type;

        string op = handleExprNode(child[0]);

        if (opType == OperatorNode::OP_TADDR) {
            string reg = getTmpReg(8);
            of << "\tleaq\t" << op << ", " << reg << "\n";
            return reg;
        } else if (opType == OperatorNode::OP_DEC) {
            of << "\tdecl\t" << op << "\n";
            return op;
        } else if (opType == OperatorNode::OP_INC) {
            of << "\tincl\t" << op << "\n";
            return op;
        }

        string reg;

        if (getRegNum(op) == -1) { // 不是寄存器
            reg = getTmpReg(4);
            of << "\tmovl\t" << op << ", " << reg << "\n";
        } else {
            reg = op;
        }

        if (opType == OperatorNode::OP_NOT) {
            of << "\ttestl\t" << reg << ", " << reg << "\n";
            of << "\tsete\t" << get2RegName(getRegNum(reg)) << "\n";
            of << "\tmovzbl\t"<< get2RegName(getRegNum(reg)) << ", " << reg << "\n";
            return reg;
        }

        protectRegByName(reg);

        op = handleExprNode(child[1]);
        releaseRegByName(reg);

        string target;

        if(opType == OperatorNode::OP_LAND) {
            string Lfail = getNextLabel();
            string Lend = getNextLabel();
            of << "\ttest\t" << reg << ", " << reg << "\n";
            of << "\tje\t" << Lfail << "\n";
            of << "\tmovl\t" << op << ", " << reg << "\n";
            of << "\ttest\t" << reg << ", " << reg << "\n";
            of << "\tje\t" << Lfail << "\n";
            of << "\tmovl\t$1, " << reg << "\n";
            of << "\tjmp\t" << Lend << "\n";
            of << Lfail << ":\n";
            of << "\tmovl\t$0, " << reg << "\n";
            of << Lend << ":\n";
            return reg;
        } else if (opType == OperatorNode::OP_LOR) {
            string L2 = getNextLabel();
            string L3 = getNextLabel();
            string Lend = getNextLabel();
            of << "\ttest\t" << reg << ", " << reg << "\n";
            of << "\tjne\t" << L2 << "\n";
            of << "\tmovl\t" << op << ", " << reg << "\n";
            of << "\ttest\t" << reg << ", " << reg << "\n";
            of << "\tje\t" << L3 << "\n";
            of << L2 << ":\n";
            of << "\tmovl\t$1, " << reg << "\n";
            of << "\tjmp\t" << Lend << "\n";
            of << L3 << ":\n";
            of << "\tmovl\t$0, " << reg << "\n";
            of << Lend << ":\n";
            return reg;
        }
        switch (opType) {
        case OperatorNode::OP_ADD:
            of << "\taddl\t" << op << ", " << reg << "\n";
            return reg;
        case OperatorNode::OP_SUB:
            of << "\tsubl\t" << op << ", " << reg << "\n";
            return reg;
        case OperatorNode::OP_ASSIGN:
            of << "\tmovl\t" << reg << ", " << op << "\n";
            return reg;
        case OperatorNode::OP_MULAS:
            of << "\timull\t" << op << ", " << reg << "\n";
            of << "\tmovl\t" << reg << ", " << op << "\n";
            return "";
        case OperatorNode::OP_MORE:
        case OperatorNode::OP_MOREEQ:
        case OperatorNode::OP_LESS:
        case OperatorNode::OP_LESSEQ:
            target = getTmpReg(2);
            string what;
            switch (opType) {
            case OperatorNode::OP_MORE:
                what = "le"; break;
            case OperatorNode::OP_MOREEQ:
                what = "l"; break;
            case OperatorNode::OP_LESS:
                what = "ge"; break;
            case OperatorNode::OP_LESSEQ:
                what = "g"; break;
            default: break;
            }
            of << "\tcmpl\t" << op << ", " << reg << "\n";
            of << "\tset" << what << "\t" << target << "\n";
            reg = getTmpReg(4);
            of << "\tmovzbl\t" << target << ", " << reg << "\n";
            return reg;
        }
        cerr << "++++ operator not handled" << endl;
        return getSymbolMemory(ownSymbol);
    }

    if (node->nodeType == TreeNode::NODE_FUNCCALL) {
        handleFuncCall(node);
        return "%eax";
    }

    return "";
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %rsi, %r12
movq %rdi, %rbx
movq 0x28(%rsi), %r14
movq 0xdd99(%rip), %r15      # 0x12ff0
leaq 0x8110(%rip), %rsi      # 0xd36e
movl $0xb, %edx
movq %r15, %rdi
callq 0x3260
movq %r15, %rdi
movq %r14, %rsi
callq 0x3180
movq %rax, %r13
leaq 0x8153(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%r14), %rsi
movq 0x10(%r14), %rdx
movq %r13, %rdi
callq 0x3260
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x31d0
movsbl %al, %esi
movq %r13, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3150
movl 0x10(%r12), %eax
cmpl $0x5, %eax
je 0x5345
cmpl $0x4, %eax
je 0x5335
cmpl $0x3, %eax
jne 0x5367
leaq 0x8094(%rip), %rsi      # 0xd37a
movl $0x8, %edx
movq %r15, %rdi
callq 0x3260
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x31d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x3150
cmpl $0x0, 0x28(%r14)
je 0x542c
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3ecd
jmp 0x55c0
movq 0x18(%r12), %rsi
testq %rsi, %rsi
je 0x5385
movq 0x20(%rsi), %r15
jmp 0x5388
movq %r12, %rdi
callq 0x4b60
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x7e9d(%rip), %rsi      # 0xd1f8
leaq 0x7e9a(%rip), %rdx      # 0xd1fc
movq %rbx, %rdi
jmp 0x537b
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x8041(%rip), %rdx      # 0xd3b6
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x7944
jmp 0x55c0
xorl %r15d, %r15d
movslq 0x30(%r12), %rbp
leaq 0x28(%rsp), %rdi
callq 0x5235
testq %rbp, %rbp
je 0x54e1
cmpl $0x1, %ebp
je 0x549d
cmpl $0xd, %ebp
jne 0x5546
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3ad5
leaq 0xdeaa(%rip), %rdi      # 0x13270
leaq 0x7f4f(%rip), %rsi      # 0xd31c
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xde88(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7fdc(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x8106(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
jmp 0x55a5
movl (%r14), %eax
cmpl $0x5, %eax
je 0x55d5
cmpl $0x2, %eax
jne 0x5325
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x7f32(%rip), %rsi      # 0xd383
leaq 0x7f2c(%rip), %rdx      # 0xd384
leaq 0x28(%rsp), %rdi
callq 0x7944
movq 0x8(%r14), %rsi
movq 0x10(%r14), %rdx
leaq 0x28(%rsp), %rdi
callq 0x30c0
leaq 0x10(%rbx), %rdx
movq %rdx, (%rbx)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0x5ba0
movq %rsi, (%rbx)
movq (%rcx), %rdx
movq %rdx, 0x10(%rbx)
jmp 0x5ba6
leaq 0xddcc(%rip), %rdi      # 0x13270
leaq 0x7eda(%rip), %rsi      # 0xd385
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xddaa(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x804e(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
jmp 0x5523
leaq 0xdd88(%rip), %rdi      # 0x13270
leaq 0x7e9d(%rip), %rsi      # 0xd38c
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xdd66(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x800a(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0x10(%rbx), %rcx
movq %rcx, (%rbx)
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdx
cmpq %rax, %rdx
je 0x5583
movq %rdx, (%rbx)
movq 0x38(%rsp), %rcx
movq %rcx, 0x10(%rbx)
jmp 0x5589
leaq 0x18(%rsp), %r13
movq %r13, -0x10(%r13)
movq $0x0, -0x8(%r13)
movb $0x0, (%r13)
leaq 0x28(%rsp), %rdi
callq 0x3b54
cmpl $-0x1, %eax
je 0x56a5
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x3130
jmp 0x574c
movups (%rax), %xmm0
movups %xmm0, (%rcx)
movq 0x30(%rsp), %rcx
movq %rcx, 0x8(%rbx)
movq %rax, 0x28(%rsp)
movq $0x0, 0x30(%rsp)
movb $0x0, 0x38(%rsp)
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x55c0
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3200
movq %rbx, %rax
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x7d9e(%rip), %rsi      # 0xd383
leaq 0x7d98(%rip), %rdx      # 0xd384
leaq 0x28(%rsp), %rdi
callq 0x7944
movq 0x8(%r14), %rax
movsbl (%rax), %r13d
movl %r13d, %ebp
negl %ebp
cmovsl %r13d, %ebp
cmpl $0x64, %ebp
movl $0x3, %eax
sbbl $0x0, %eax
cmpl $0xa, %ebp
movl $0x1, %r14d
cmovael %eax, %r14d
shrl $0x1f, %r13d
leal (%r14,%r13), %esi
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0x8(%rsp), %rdi
movl $0x2d, %edx
callq 0x3270
movl %r13d, %edi
addq 0x8(%rsp), %rdi
movl %r14d, %esi
movl %ebp, %edx
callq 0x7840
movq 0x28(%rsp), %rcx
movq 0x30(%rsp), %r8
movq 0x10(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %edi
cmpq %r15, %rcx
je 0x5674
movq 0x38(%rsp), %rdi
movq 0x8(%rsp), %rsi
cmpq %rdi, %rax
jbe 0x5696
movl $0xf, %edi
cmpq %r12, %rsi
je 0x568d
movq 0x18(%rsp), %rdi
cmpq %rdi, %rax
jbe 0x5bd5
leaq 0x28(%rsp), %rdi
callq 0x30c0
jmp 0x5be3
leaq 0x48(%rsp), %rdi
movl $0x4, %esi
callq 0x3ad5
leaq 0x8(%rsp), %rdi
leaq 0x48(%rsp), %r12
movq %r12, %rsi
callq 0x32b0
movq (%r12), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x56e1
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xdb88(%rip), %rdi      # 0x13270
leaq 0x7c26(%rip), %rsi      # 0xd315
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xdb66(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r12
leaq 0x7cba(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r12, %rdi
callq 0x3260
leaq 0x7de1(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
cmpl $0x2, %ebp
jne 0x58f1
leaq 0xdb14(%rip), %rdi      # 0x13270
leaq 0x7c30(%rip), %rsi      # 0xd393
movl $0x7, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xdaf2(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7c46(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x7d6d(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xdaa9(%rip), %rdi      # 0x13270
leaq 0x7bcd(%rip), %rsi      # 0xd39b
movl $0x6, %edx
callq 0x3260
leaq 0x8(%rsp), %rdi
callq 0x3b54
leaq 0x48(%rsp), %rdi
movl %eax, %esi
callq 0x373c
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
leaq 0xda71(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x7d15(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0x58(%rsp), %r15
movq -0x10(%r15), %rdi
cmpq %r15, %rdi
je 0x5833
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xda36(%rip), %rdi      # 0x13270
leaq 0x7b61(%rip), %rsi      # 0xd3a2
movl $0x8, %edx
callq 0x3260
leaq 0x8(%rsp), %rdi
callq 0x3b54
leaq 0x48(%rsp), %rdi
movl %eax, %esi
callq 0x373c
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
leaq 0xd9fe(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7b52(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x7c79(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x58cb
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
movq 0x8(%rsp), %rcx
cmpq %r13, %rcx
je 0x5bbf
movq %rcx, (%rbx)
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rbx)
jmp 0x5bc7
leaq 0x8(%rsp), %rdi
callq 0x3b54
testl %eax, %eax
js 0x590c
movl %eax, %eax
leaq 0xdb68(%rip), %rcx      # 0x13470
movb $0x1, (%rax,%rcx)
leaq 0x48(%rsp), %rdi
movq %r15, %rsi
callq 0x5235
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %r15
movq %r15, %rsi
callq 0x32b0
movq (%r15), %rdi
leaq 0x58(%rsp), %r15
cmpq %r15, %rdi
je 0x5945
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x8(%rsp), %rdi
callq 0x3b54
testl %eax, %eax
js 0x5960
movl %eax, %eax
leaq 0xdb14(%rip), %rcx      # 0x13470
movb $0x0, (%rax,%rcx)
movq %r15, 0x48(%rsp)
movq $0x0, 0x50(%rsp)
movb $0x0, 0x58(%rsp)
leal -0x9(%rbp), %eax
cmpl $0x12, %eax
ja 0x5c85
leaq 0x7772(%rip), %rcx      # 0xd0f8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x68(%rsp), %rdi
movl $0x2, %esi
callq 0x3ad5
leaq 0x48(%rsp), %rdi
leaq 0x68(%rsp), %r14
movq %r14, %rsi
callq 0x32b0
movq (%r14), %rdi
leaq 0x78(%rsp), %r12
cmpq %r12, %rdi
je 0x59ca
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x68(%rsp), %rdi
movq %r12, (%rdi)
movq $0x0, 0x8(%rdi)
movb $0x0, 0x10(%rdi)
leaq 0x77af(%rip), %rax      # 0xd194
movslq -0x44(%rax,%rbp,4), %rsi
addq %rax, %rsi
callq 0x32d0
leaq 0xd877(%rip), %rdi      # 0x13270
leaq 0x79f5(%rip), %rsi      # 0xd3f5
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xd855(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x79a9(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x7ad0(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd80c(%rip), %rdi      # 0x13270
leaq 0x7991(%rip), %rsi      # 0xd3fc
movl $0x4, %edx
callq 0x3260
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
leaq 0xd7ea(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7920(%rip), %rsi      # 0xd3b5
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x7a65(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0x88(%rsp), %rdi
movl $0x4, %esi
callq 0x3ad5
leaq 0x8(%rsp), %rdi
leaq 0x88(%rsp), %r14
movq %r14, %rsi
callq 0x32b0
movq (%r14), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0x5b0f
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xd75a(%rip), %rdi      # 0x13270
leaq 0x7885(%rip), %rsi      # 0xd3a2
movl $0x8, %edx
callq 0x3260
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
leaq 0xd738(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x788c(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x79b3(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
movq 0x8(%rsp), %rcx
cmpq %r13, %rcx
je 0x5c4e
movq %rcx, (%rbx)
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rbx)
jmp 0x5c56
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
jmp 0x5c3b
movups (%r13), %xmm0
movups %xmm0, (%rax)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rbx)
jmp 0x55a5
leaq 0x8(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3250
leaq 0x10(%rbx), %rdx
movq %rdx, (%rbx)
movq (%rax), %rsi
leaq 0x10(%rax), %rcx
cmpq %rcx, %rsi
je 0x5c02
movq %rsi, (%rbx)
movq (%rcx), %rdx
movq %rdx, 0x10(%rbx)
jmp 0x5c08
movups (%rcx), %xmm0
movups %xmm0, (%rdx)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x8(%rbx)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x5c3b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
jne 0x55b3
jmp 0x55c0
movups (%r13), %xmm0
movups %xmm0, (%rax)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rbx)
movq %r13, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movq 0x68(%rsp), %rdi
cmpq %r12, %rdi
jne 0x6668
jmp 0x6675
cmpl $0x23, %ebp
jne 0x5cfa
leaq 0xd5df(%rip), %rdi      # 0x13270
leaq 0x767d(%rip), %rsi      # 0xd315
movl $0x6, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xd5bd(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7711(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x7838(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
jmp 0x6265
movq 0xd2ef(%rip), %rdi      # 0x12ff0
leaq 0x76f9(%rip), %rsi      # 0xd401
movl $0x19, %edx
callq 0x3260
movq 0xd2d7(%rip), %rdi      # 0x12ff0
callq 0x3100
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3ecd
jmp 0x6675
leaq 0x68(%rsp), %rdi
callq 0x4014
leaq 0x88(%rsp), %rdi
callq 0x4014
leaq 0xa8(%rsp), %rdi
callq 0x4014
leaq 0xd517(%rip), %rdi      # 0x13270
leaq 0x764b(%rip), %rsi      # 0xd3ab
movl $0x6, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xd4f5(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7649(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x7770(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd4ac(%rip), %rdi      # 0x13270
leaq 0x760b(%rip), %rsi      # 0xd3d6
movl $0x5, %edx
callq 0x3260
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
leaq 0xd48a(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x772e(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd46a(%rip), %rdi      # 0x13270
leaq 0x7508(%rip), %rsi      # 0xd315
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xd448(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x759c(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x76c3(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd3ff(%rip), %rdi      # 0x13270
leaq 0x7533(%rip), %rsi      # 0xd3ab
movl $0x6, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xd3dd(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7531(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x7658(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd394(%rip), %rdi      # 0x13270
leaq 0x74cf(%rip), %rsi      # 0xd3b2
movl $0x4, %edx
callq 0x3260
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
leaq 0xd36c(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x7610(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
leaq 0xd342(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x748e(%rip), %rsi      # 0xd3c8
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd322(%rip), %rdi      # 0x13270
leaq 0x7462(%rip), %rsi      # 0xd3b7
movl $0xa, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xd300(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x75a4(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd2e0(%rip), %rdi      # 0x13270
leaq 0x742b(%rip), %rsi      # 0xd3c2
movl $0x5, %edx
callq 0x3260
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
leaq 0xd2b8(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x755c(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
leaq 0xd288(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x73d4(%rip), %rsi      # 0xd3c8
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd268(%rip), %rdi      # 0x13270
leaq 0x73bc(%rip), %rsi      # 0xd3cb
movl $0xa, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xd246(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x74ea(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
leaq 0xd216(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x7362(%rip), %rsi      # 0xd3c8
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
movq 0x8(%rsp), %rcx
cmpq %r13, %rcx
je 0x65f4
movq %rcx, (%rbx)
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rbx)
jmp 0x65fc
leaq 0xd1d0(%rip), %rdi      # 0x13270
leaq 0x7343(%rip), %rsi      # 0xd3ea
movl $0x7, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xd1ae(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7302(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x7429(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd165(%rip), %rdi      # 0x13270
leaq 0x7203(%rip), %rsi      # 0xd315
movl $0x6, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xd143(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7297(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x73be(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x7239(%rip), %rdx      # 0xd3b6
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x7944
jmp 0x6675
leaq 0xd0dc(%rip), %rdi      # 0x13270
leaq 0x7241(%rip), %rsi      # 0xd3dc
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xd0ba(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x720e(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x7335(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
jmp 0x6265
leaq 0xd06f(%rip), %rdi      # 0x13270
leaq 0x71db(%rip), %rsi      # 0xd3e3
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xd04d(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x71a1(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x72c8(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
movq 0x8(%rsp), %rcx
cmpq %r13, %rcx
je 0x6284
movq %rcx, (%rbx)
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rbx)
jmp 0x628c
movups (%r13), %xmm0
movups %xmm0, (%rax)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rbx)
movq %r13, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
jmp 0x6675
leaq 0x68(%rsp), %rdi
callq 0x4014
leaq 0x88(%rsp), %rdi
callq 0x4014
leaq 0xcfa5(%rip), %rdi      # 0x13270
leaq 0x70d9(%rip), %rsi      # 0xd3ab
movl $0x6, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xcf83(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x70d7(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x71fe(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xcf3a(%rip), %rdi      # 0x13270
leaq 0x7075(%rip), %rsi      # 0xd3b2
movl $0x4, %edx
callq 0x3260
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
leaq 0xcf18(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x71bc(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xcef8(%rip), %rdi      # 0x13270
leaq 0x6f96(%rip), %rsi      # 0xd315
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xced6(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x702a(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x7151(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xce8d(%rip), %rdi      # 0x13270
leaq 0x6fc1(%rip), %rsi      # 0xd3ab
movl $0x6, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xce6b(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x6fbf(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x70e6(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xce22(%rip), %rdi      # 0x13270
leaq 0x6f5d(%rip), %rsi      # 0xd3b2
movl $0x4, %edx
callq 0x3260
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
leaq 0xce00(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x70a4(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xcde0(%rip), %rdi      # 0x13270
leaq 0x6f20(%rip), %rsi      # 0xd3b7
movl $0xa, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xcdbe(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x7062(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xcd9e(%rip), %rdi      # 0x13270
leaq 0x6ee9(%rip), %rsi      # 0xd3c2
movl $0x5, %edx
callq 0x3260
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
leaq 0xcd76(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x701a(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
leaq 0xcd4c(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x6e98(%rip), %rsi      # 0xd3c8
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xcd2c(%rip), %rdi      # 0x13270
leaq 0x6e80(%rip), %rsi      # 0xd3cb
movl $0xa, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xcd0a(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x6fae(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
leaq 0xccda(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x6e26(%rip), %rsi      # 0xd3c8
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
movq 0x8(%rsp), %rcx
cmpq %r13, %rcx
je 0x65ce
movq %rcx, (%rbx)
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rbx)
jmp 0x65d6
movups (%r13), %xmm0
movups %xmm0, (%rax)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rbx)
movq %r13, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
jmp 0x6639
movups (%r13), %xmm0
movups %xmm0, (%rax)
movq 0x10(%rsp), %rax
movq %rax, 0x8(%rbx)
movq %r13, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6639
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x665a
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6675
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x668c
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x55a5
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x55a5
jmp 0x679c
jmp 0x6742
jmp 0x66b8
movq %rax, %r14
jmp 0x678c
jmp 0x679c
jmp 0x679c
jmp 0x67a1
jmp 0x679c
jmp 0x67ed
jmp 0x67ed
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x66ff
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x66ff
jmp 0x66fc
movq %rax, %r14
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
jne 0x6815
jmp 0x6822
jmp 0x6714
movq %rax, %r14
jmp 0x6822
jmp 0x67ed
movq %rax, %r14
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x67c5
jmp 0x67f0
jmp 0x67ed
jmp 0x679c
movq %rax, %r14
jmp 0x676b
movq %rax, %r14
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x676b
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x678c
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x67ae
jmp 0x67bb
movq %rax, %r14
jmp 0x67bb
movq %rax, %r14
movq 0x68(%rsp), %rdi
cmpq %r12, %rdi
je 0x67bb
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x48(%rsp), %rdi
cmpq %r15, %rdi
je 0x67f0
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x67f0
movq %rax, %r14
movq (%rbx), %rdi
addq $0x10, %rbx
cmpq %rbx, %rdi
je 0x6807
movq (%rbx), %rsi
jmp 0x67ff
movq %rax, %r14
jmp 0x6807
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x6807
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6822
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3200
movq %r14, %rdi
callq 0x33d0