// File: /workspace/github_cpp_makefile_star2_O1/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 0xdda8(%rip), %r15      # 0x12ff0
leaq 0x811f(%rip), %rsi      # 0xd36e
movl $0xb, %edx
movq %r15, %rdi
callq 0x3260
movq %r15, %rdi
movq %r14, %rsi
callq 0x3180
movq %rax, %r13
leaq 0x8162(%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 0x5336
cmpl $0x4, %eax
je 0x5326
cmpl $0x3, %eax
jne 0x5358
leaq 0x80a3(%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 0x541c
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3efe
jmp 0x66a8
movq 0x18(%r12), %rsi
testq %rsi, %rsi
je 0x5376
movq 0x20(%rsi), %r15
jmp 0x5379
movq %r12, %rdi
callq 0x4ba0
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x7eac(%rip), %rsi      # 0xd1f8
leaq 0x7ea9(%rip), %rdx      # 0xd1fc
movq %rbx, %rdi
jmp 0x536c
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x8050(%rip), %rdx      # 0xd3b6
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x7948
jmp 0x66a8
xorl %r15d, %r15d
movl 0x30(%r12), %ebp
leaq 0x28(%rsp), %rdi
callq 0x5226
testl %ebp, %ebp
je 0x54d1
cmpl $0x1, %ebp
je 0x548d
cmpl $0xd, %ebp
jne 0x5536
movq %rbx, %rdi
movl $0x8, %esi
callq 0x3ad5
leaq 0xdeba(%rip), %rdi      # 0x13270
leaq 0x7f5f(%rip), %rsi      # 0xd31c
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xde98(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7fec(%rip), %rsi      # 0xd3d3
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x8116(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
jmp 0x668d
movl (%r14), %eax
cmpl $0x5, %eax
je 0x559a
cmpl $0x2, %eax
jne 0x5316
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x7f42(%rip), %rsi      # 0xd383
leaq 0x7f3c(%rip), %rdx      # 0xd384
leaq 0x28(%rsp), %rdi
callq 0x7948
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 0x5b74
movq %rsi, (%rbx)
movq (%rcx), %rdx
movq %rdx, 0x10(%rbx)
jmp 0x5b7a
leaq 0xdddc(%rip), %rdi      # 0x13270
leaq 0x7eea(%rip), %rsi      # 0xd385
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xddba(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x805e(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
jmp 0x5513
leaq 0xdd98(%rip), %rdi      # 0x13270
leaq 0x7ead(%rip), %rsi      # 0xd38c
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xdd76(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x801a(%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 0x5573
movq %rdx, (%rbx)
movq 0x38(%rsp), %rcx
movq %rcx, 0x10(%rbx)
jmp 0x5579
leaq 0x18(%rsp), %r13
movq %r13, -0x10(%r13)
movq $0x0, -0x8(%r13)
movb $0x0, (%r13)
leaq 0x28(%rsp), %rdi
callq 0x3b85
cmpl $-0x1, %eax
je 0x566c
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x3130
jmp 0x5713
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)
jmp 0x668d
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x7dd9(%rip), %rsi      # 0xd383
leaq 0x7dd3(%rip), %rdx      # 0xd384
leaq 0x28(%rsp), %rdi
callq 0x7948
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 0x784a
movq 0x28(%rsp), %rcx
movq 0x30(%rsp), %r8
movq 0x10(%rsp), %rdx
leaq (%rdx,%r8), %rax
movl $0xf, %esi
cmpq %r15, %rcx
je 0x5639
movq 0x38(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x5658
movl $0xf, %esi
cmpq %r12, 0x8(%rsp)
je 0x564f
movq 0x18(%rsp), %rsi
cmpq %rsi, %rax
jbe 0x5bbf
movq 0x8(%rsp), %rsi
leaq 0x28(%rsp), %rdi
callq 0x30c0
jmp 0x5bcd
leaq 0x68(%rsp), %rdi
movl $0x4, %esi
callq 0x3ad5
leaq 0x8(%rsp), %rdi
leaq 0x68(%rsp), %r12
movq %r12, %rsi
callq 0x32b0
movq (%r12), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0x56a8
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xdbc1(%rip), %rdi      # 0x13270
leaq 0x7c5f(%rip), %rsi      # 0xd315
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xdb9f(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r12
leaq 0x7cf3(%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 0x7e1a(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
cmpl $0x2, %ebp
jne 0x58b8
leaq 0xdb4d(%rip), %rdi      # 0x13270
leaq 0x7c69(%rip), %rsi      # 0xd393
movl $0x7, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xdb2b(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7c7f(%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 0x7da6(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xdae2(%rip), %rdi      # 0x13270
leaq 0x7c06(%rip), %rsi      # 0xd39b
movl $0x6, %edx
callq 0x3260
leaq 0x8(%rsp), %rdi
callq 0x3b85
leaq 0x68(%rsp), %rdi
movl %eax, %esi
callq 0x373c
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
leaq 0xdaaa(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x7d4e(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0x78(%rsp), %r15
movq -0x10(%r15), %rdi
cmpq %r15, %rdi
je 0x57fa
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xda6f(%rip), %rdi      # 0x13270
leaq 0x7b9a(%rip), %rsi      # 0xd3a2
movl $0x8, %edx
callq 0x3260
leaq 0x8(%rsp), %rdi
callq 0x3b85
leaq 0x68(%rsp), %rdi
movl %eax, %esi
callq 0x373c
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
leaq 0xda37(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7b8b(%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 0x7cb2(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq 0x68(%rsp), %rdi
cmpq %r15, %rdi
je 0x5892
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
movq 0x8(%rsp), %rcx
cmpq %r13, %rcx
je 0x5b96
movq %rcx, (%rbx)
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rbx)
jmp 0x5b9e
leaq 0x8(%rsp), %rdi
callq 0x3b85
testl %eax, %eax
js 0x58d3
movl %eax, %eax
leaq 0xdba1(%rip), %rcx      # 0x13470
movb $0x1, (%rax,%rcx)
leaq 0x68(%rsp), %rdi
movq %r15, %rsi
callq 0x5226
leaq 0x28(%rsp), %rdi
leaq 0x68(%rsp), %r15
movq %r15, %rsi
callq 0x32b0
movq (%r15), %rdi
leaq 0x78(%rsp), %r15
cmpq %r15, %rdi
je 0x590c
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x8(%rsp), %rdi
callq 0x3b85
testl %eax, %eax
js 0x5927
movl %eax, %eax
leaq 0xdb4d(%rip), %rcx      # 0x13470
movb $0x0, (%rax,%rcx)
movq %r15, 0x68(%rsp)
movq $0x0, 0x70(%rsp)
movb $0x0, 0x78(%rsp)
leal -0x9(%rbp), %eax
cmpl $0x12, %eax
ja 0x5c6f
leaq 0x77ab(%rip), %rcx      # 0xd0f8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x48(%rsp), %rdi
movl $0x2, %esi
callq 0x3ad5
leaq 0x68(%rsp), %rdi
leaq 0x48(%rsp), %r14
movq %r14, %rsi
callq 0x32b0
movq (%r14), %rdi
leaq 0x58(%rsp), %r12
cmpq %r12, %rdi
je 0x5991
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3200
movq %r12, 0x48(%rsp)
movq $0x0, 0x50(%rsp)
movb $0x0, 0x58(%rsp)
addl $-0x11, %ebp
cmpl $0x4, %ebp
jae 0x59c6
movl %ebp, %eax
leaq 0x77df(%rip), %rcx      # 0xd194
movslq (%rcx,%rax,4), %rsi
addq %rcx, %rsi
leaq 0x48(%rsp), %rdi
callq 0x32d0
leaq 0xd8a3(%rip), %rdi      # 0x13270
leaq 0x7a21(%rip), %rsi      # 0xd3f5
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xd881(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x79d5(%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 0x7afc(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd838(%rip), %rdi      # 0x13270
leaq 0x79bd(%rip), %rsi      # 0xd3fc
movl $0x4, %edx
callq 0x3260
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
leaq 0xd816(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x794c(%rip), %rsi      # 0xd3b5
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq %r14, %rdi
callq 0x3260
leaq 0x7a91(%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 0x5ae3
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0xd786(%rip), %rdi      # 0x13270
leaq 0x78b1(%rip), %rsi      # 0xd3a2
movl $0x8, %edx
callq 0x3260
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
leaq 0xd764(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x78b8(%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 0x79df(%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 0x5c38
movq %rcx, (%rbx)
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rbx)
jmp 0x5c40
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 0x5c25
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 0x6676
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 0x5bec
movq %rsi, (%rbx)
movq (%rcx), %rdx
movq %rdx, 0x10(%rbx)
jmp 0x5bf2
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 0x5c25
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
jne 0x669b
jmp 0x66a8
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 0x48(%rsp), %rdi
cmpq %r12, %rdi
jne 0x6652
jmp 0x665f
cmpl $0x23, %ebp
jne 0x5ce4
leaq 0xd5f5(%rip), %rdi      # 0x13270
leaq 0x7693(%rip), %rsi      # 0xd315
movl $0x6, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xd5d3(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7727(%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 0x784e(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
jmp 0x624f
movq 0xd305(%rip), %rdi      # 0x12ff0
leaq 0x770f(%rip), %rsi      # 0xd401
movl $0x19, %edx
callq 0x3260
movq 0xd2ed(%rip), %rdi      # 0x12ff0
callq 0x3100
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3efe
jmp 0x665f
leaq 0x48(%rsp), %rdi
callq 0x4045
leaq 0x88(%rsp), %rdi
callq 0x4045
leaq 0xa8(%rsp), %rdi
callq 0x4045
leaq 0xd52d(%rip), %rdi      # 0x13270
leaq 0x7661(%rip), %rsi      # 0xd3ab
movl $0x6, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xd50b(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x765f(%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 0x7786(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd4c2(%rip), %rdi      # 0x13270
leaq 0x7621(%rip), %rsi      # 0xd3d6
movl $0x5, %edx
callq 0x3260
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
leaq 0xd4a0(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x7744(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd480(%rip), %rdi      # 0x13270
leaq 0x751e(%rip), %rsi      # 0xd315
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xd45e(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x75b2(%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 0x76d9(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd415(%rip), %rdi      # 0x13270
leaq 0x7549(%rip), %rsi      # 0xd3ab
movl $0x6, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xd3f3(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7547(%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 0x766e(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd3aa(%rip), %rdi      # 0x13270
leaq 0x74e5(%rip), %rsi      # 0xd3b2
movl $0x4, %edx
callq 0x3260
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
leaq 0xd382(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x7626(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
leaq 0xd358(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x74a4(%rip), %rsi      # 0xd3c8
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd338(%rip), %rdi      # 0x13270
leaq 0x7478(%rip), %rsi      # 0xd3b7
movl $0xa, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xd316(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x75ba(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd2f6(%rip), %rdi      # 0x13270
leaq 0x7441(%rip), %rsi      # 0xd3c2
movl $0x5, %edx
callq 0x3260
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
leaq 0xd2ce(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x7572(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
leaq 0xd29e(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x73ea(%rip), %rsi      # 0xd3c8
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd27e(%rip), %rdi      # 0x13270
leaq 0x73d2(%rip), %rsi      # 0xd3cb
movl $0xa, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xd25c(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x7500(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
leaq 0xd22c(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x7378(%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 0x65de
movq %rcx, (%rbx)
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rbx)
jmp 0x65e6
leaq 0xd1e6(%rip), %rdi      # 0x13270
leaq 0x7359(%rip), %rsi      # 0xd3ea
movl $0x7, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xd1c4(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7318(%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 0x743f(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xd17b(%rip), %rdi      # 0x13270
leaq 0x7219(%rip), %rsi      # 0xd315
movl $0x6, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xd159(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x72ad(%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 0x73d4(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x724f(%rip), %rdx      # 0xd3b6
movq %rbx, %rdi
movq %rdx, %rsi
callq 0x7948
jmp 0x665f
leaq 0xd0f2(%rip), %rdi      # 0x13270
leaq 0x7257(%rip), %rsi      # 0xd3dc
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xd0d0(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7224(%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 0x734b(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
jmp 0x624f
leaq 0xd085(%rip), %rdi      # 0x13270
leaq 0x71f1(%rip), %rsi      # 0xd3e3
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xd063(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x71b7(%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 0x72de(%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 0x626e
movq %rcx, (%rbx)
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rbx)
jmp 0x6276
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 0x665f
leaq 0x48(%rsp), %rdi
callq 0x4045
leaq 0x88(%rsp), %rdi
callq 0x4045
leaq 0xcfbb(%rip), %rdi      # 0x13270
leaq 0x70ef(%rip), %rsi      # 0xd3ab
movl $0x6, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xcf99(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x70ed(%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 0x7214(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xcf50(%rip), %rdi      # 0x13270
leaq 0x708b(%rip), %rsi      # 0xd3b2
movl $0x4, %edx
callq 0x3260
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
leaq 0xcf2e(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x71d2(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xcf0e(%rip), %rdi      # 0x13270
leaq 0x6fac(%rip), %rsi      # 0xd315
movl $0x6, %edx
callq 0x3260
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
leaq 0xceec(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x7040(%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 0x7167(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xcea3(%rip), %rdi      # 0x13270
leaq 0x6fd7(%rip), %rsi      # 0xd3ab
movl $0x6, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xce81(%rip), %rdi      # 0x13270
callq 0x3260
movq %rax, %r14
leaq 0x6fd5(%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 0x70fc(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xce38(%rip), %rdi      # 0x13270
leaq 0x6f73(%rip), %rsi      # 0xd3b2
movl $0x4, %edx
callq 0x3260
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
leaq 0xce16(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x70ba(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xcdf6(%rip), %rdi      # 0x13270
leaq 0x6f36(%rip), %rsi      # 0xd3b7
movl $0xa, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xcdd4(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x7078(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xcdb4(%rip), %rdi      # 0x13270
leaq 0x6eff(%rip), %rsi      # 0xd3c2
movl $0x5, %edx
callq 0x3260
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
leaq 0xcd8c(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x7030(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
leaq 0xcd62(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x6eae(%rip), %rsi      # 0xd3c8
movl $0x2, %edx
movq %rax, %rdi
callq 0x3260
leaq 0xcd42(%rip), %rdi      # 0x13270
leaq 0x6e96(%rip), %rsi      # 0xd3cb
movl $0xa, %edx
callq 0x3260
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
leaq 0xcd20(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x6fc4(%rip), %rsi      # 0xd520
movl $0x1, %edx
movq %rax, %rdi
callq 0x3260
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
leaq 0xccf0(%rip), %rdi      # 0x13270
callq 0x3260
leaq 0x6e3c(%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 0x65b8
movq %rcx, (%rbx)
movq 0x18(%rsp), %rax
movq %rax, 0x10(%rbx)
jmp 0x65c0
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 0x6623
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 0x6623
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6644
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x665f
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x68(%rsp), %rdi
cmpq %r15, %rdi
je 0x6676
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x668d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x66a8
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
jmp 0x67ad
jmp 0x6753
jmp 0x66c9
movq %rax, %r14
jmp 0x679d
jmp 0x67ad
jmp 0x67ad
jmp 0x67b2
jmp 0x67ad
jmp 0x67fe
jmp 0x67fe
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x6710
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x6710
jmp 0x670d
movq %rax, %r14
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
jne 0x6826
jmp 0x6833
jmp 0x6725
movq %rax, %r14
jmp 0x6833
jmp 0x67fe
movq %rax, %r14
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x67d6
jmp 0x6801
jmp 0x67fe
jmp 0x67ad
movq %rax, %r14
jmp 0x677c
movq %rax, %r14
leaq 0xb8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x677c
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x98(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x679d
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x58(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
jne 0x67bf
jmp 0x67cc
movq %rax, %r14
jmp 0x67cc
movq %rax, %r14
movq 0x48(%rsp), %rdi
cmpq %r12, %rdi
je 0x67cc
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3200
movq 0x68(%rsp), %rdi
cmpq %r15, %rdi
je 0x6801
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3200
jmp 0x6801
movq %rax, %r14
movq (%rbx), %rdi
addq $0x10, %rbx
cmpq %rbx, %rdi
je 0x6818
movq (%rbx), %rsi
jmp 0x6810
movq %rax, %r14
jmp 0x6818
movq %rax, %r14
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x6818
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x3200
leaq 0x38(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6833
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3200
movq %r14, %rdi
callq 0x33d0