// File: Bartor[P]kompilator/middle/abstract_assembler/AbstractAssembler.cpp
// Function: AbstractAssembler::assembleCommands(CommandList&)
SimpleResolution *AbstractAssembler::assembleCommands(CommandList &commandList) {
    InstructionList &instructions = *new InstructionList();

    for (const auto &command : commandList.commands) {
        long long tempVars = 0;

        if (auto commandList = dynamic_cast<CommandList *>(command)) { // NESTED COMMANDLIST
            SimpleResolution *assmebledCommands = assembleCommands(*commandList);
            instructions.append(assmebledCommands->instructions);
            tempVars += assmebledCommands->temporaryVars;
        } else if (auto readNode = dynamic_cast<Read *>(command)) { // READ
            Resolution *idRes = resolve(readNode->identifier, false);

            if (!idRes->writable) throw "Trying to read to non-writable variable " + readNode->identifier.name;

            Get *get = new Get();
            if (idRes->indirect) {
                TemporaryVariable *tempAddressVar = new TemporaryVariable(TEMPORARY_NAMES, *new ResolvableAddress());
                scopedVariables->pushVariableScope(tempAddressVar);

                instructions.append(idRes->instructions).append(new Store(tempAddressVar->getAddress())).append(get).append(new Storei(tempAddressVar->getAddress()));
                tempVars += 1;
            } else {
                instructions.append(get).append(new Store(idRes->address));
            }

            tempVars += idRes->temporaryVars;
        } else if (auto writeNode = dynamic_cast<Write *>(command)) { // WRITE
            Resolution *valRes = resolve(writeNode->value);
            Put *put = new Put();

            if (valRes->indirect) {
                instructions.append(valRes->instructions).append(new Loadi(primaryAccumulator)).append(put);
            } else {
                instructions.append(new Load(valRes->address)).append(put);
            }

            tempVars += valRes->temporaryVars;
        } else if (auto assignNode = dynamic_cast<Assignment *>(command)) { // ASSIGN
            Resolution *idRes = resolve(assignNode->identifier, false);

            if (!idRes->writable) throw "Trying to assign to non-writable variable " + assignNode->identifier.name;

            SimpleResolution *expRes = assembleExpression(assignNode->expression);

            if (idRes->indirect) {
                TemporaryVariable *tempAddressVar = new TemporaryVariable(TEMPORARY_NAMES, *new ResolvableAddress());
                scopedVariables->pushVariableScope(tempAddressVar);

                instructions.append(idRes->instructions).append(new Store(tempAddressVar->getAddress())).append(expRes->instructions).append(new Storei(tempAddressVar->getAddress()));
                tempVars += 1;
            } else {
                instructions.append(expRes->instructions).append(new Store(idRes->address));
            }

            tempVars += idRes->temporaryVars + expRes->temporaryVars;
        } else if (auto ifNode = dynamic_cast<If *>(command)) { // IF
            SimpleResolution *codeResolution = assembleCommands(ifNode->commands); // assemble inner instructions
            SimpleResolution *conditionResolution = assembleCondition(ifNode->condition, codeResolution->instructions); // assemble condition

            instructions.append(conditionResolution->instructions) // add condition code
                    .append(codeResolution->instructions); // add inner block code

            tempVars += conditionResolution->temporaryVars;
        } else if (auto ifElseNode = dynamic_cast<IfElse *>(command)) { // IF ELSE
            SimpleResolution *ifCodeResolution = assembleCommands(ifElseNode->commands);
            SimpleResolution *conditionResolution = assembleCondition(ifElseNode->condition, ifCodeResolution->instructions);
            SimpleResolution *elseCodeResolution = assembleCommands(ifElseNode->elseCommands);

            Jump *jump = new Jump(elseCodeResolution->instructions.end());
            ifCodeResolution->instructions.append(jump);

            instructions.append(conditionResolution->instructions)
                    .append(ifCodeResolution->instructions)
                    .append(elseCodeResolution->instructions);

            tempVars += conditionResolution->temporaryVars;
        } else if (auto whileNode = dynamic_cast<While *>(command)) { // WHILE
            SimpleResolution *codeResolution = assembleCommands(whileNode->commands);

            if (whileNode->doWhile) {
                InstructionList *jumpBlock = new InstructionList();
                Jump *jump = new Jump(codeResolution->instructions.start());
                jumpBlock->append(jump);

                SimpleResolution *conditionResolution = assembleCondition(whileNode->condition, *jumpBlock);
                instructions.append(codeResolution->instructions)
                        .append(conditionResolution->instructions)
                        .append(*jumpBlock);

                tempVars += conditionResolution->temporaryVars;
            } else {
                SimpleResolution *conditionResolution = assembleCondition(whileNode->condition, codeResolution->instructions);
                Jump *jump = new Jump(conditionResolution->instructions.start());
                codeResolution->instructions.append(jump);

                instructions.append(conditionResolution->instructions)
                        .append(codeResolution->instructions);

                tempVars += conditionResolution->temporaryVars;
            }
        } else if (auto forNode = dynamic_cast<For *>(command)) {
            NumberVariable *iterator = new NumberVariable(
                    forNode->variableName,
                    *new ResolvableAddress(),
                    true
            );
            iterator->initialized = true;
            scopedVariables->pushVariableScope(iterator); // create iterator BEFORE commands would use it
            tempVars += 1;

            Resolution *startRes = resolve(forNode->startValue); // resolve start and end
            Resolution *endRes = resolve(forNode->endValue);
            tempVars += startRes->temporaryVars + endRes->temporaryVars;

            ResolvableAddress *iterationEndAddress; // we will need it in comparing

            if (endRes->type == CONSTANT) {
                iterationEndAddress = &endRes->address;
            } else {
                TemporaryVariable *iterationEnd = new TemporaryVariable(TEMPORARY_NAMES, *new ResolvableAddress());
                scopedVariables->pushVariableScope(iterationEnd);
                tempVars += 1;

                iterationEndAddress = &iterationEnd->getAddress();

                instructions.append(endRes->instructions)
                        .append(endRes->indirect ? static_cast<Instruction *>(new Loadi(primaryAccumulator)) : static_cast<Instruction *>(new Load(endRes->address)))
                        .append(new Store(*iterationEndAddress));
            }

            SimpleResolution *codeResolution = assembleCommands(forNode->commands); // assemble iterated commands

            InstructionList &forLoopInstructions = *new InstructionList();
            forLoopInstructions.append(new Sub(*iterationEndAddress))
                    .append(forNode->reversed ? static_cast<Instruction *>(new Jneg(codeResolution->instructions.end())) : static_cast<Instruction *>(new Jpos(codeResolution->instructions.end())));

            codeResolution->instructions.append(new Load(iterator->getAddress()))
                    .append(forNode->reversed ? static_cast<Instruction *>(new Dec()) : static_cast<Instruction *>(new Inc()))
                    .append(new Store(iterator->getAddress()))
                    .append(new Jump(forLoopInstructions.start()));

            instructions.append(startRes->instructions) // load start instructions
                    .append(startRes->indirect ? static_cast<Instruction *>(new Loadi(primaryAccumulator)) : static_cast<Instruction *>(new Load(startRes->address)))
                    .append(new Store(iterator->getAddress())); // store it in the iterator

            instructions.append(forLoopInstructions)
                    .append(codeResolution->instructions);
        }

        scopedVariables->popVariableScope(tempVars);
    }

    return new SimpleResolution(
            instructions,
            0
    );
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4e0, %rsp            # imm = 0x4E0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x200(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x1f8(%rbp)
callq 0x2b0c0
jmp 0x1245c
movq -0x1f8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rdi
callq 0x9200
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rdi
callq 0x9050
movq %rax, -0x40(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x116e0
testb $0x1, %al
jne 0x124a3
jmp 0x13e4b
leaq -0x38(%rbp), %rdi
callq 0x9720
movq %rax, -0x48(%rbp)
movq $0x0, -0x50(%rbp)
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x208(%rbp)
cmpq $0x0, %rax
je 0x12515
movq -0x208(%rbp), %rdi
leaq 0x2da86(%rip), %rsi     # 0x3ff60
leaq 0x2de67(%rip), %rdx     # 0x40348
xorl %eax, %eax
movl %eax, %ecx
callq 0x62f0
movq %rax, -0x210(%rbp)
jmp 0x12520
movq -0x1f8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
xorl %eax, %eax
movq %rax, -0x210(%rbp)
jmp 0x12520
movq -0x210(%rbp), %rax
movq %rax, -0x58(%rbp)
cmpq $0x0, -0x58(%rbp)
je 0x1256b
movq -0x200(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x12420
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rdi
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2b200
movq -0x60(%rbp), %rax
movq (%rax), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x13e29
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x218(%rbp)
cmpq $0x0, %rax
je 0x125a6
movq -0x218(%rbp), %rdi
leaq 0x2d9d3(%rip), %rsi     # 0x3ff60
leaq 0x2df64(%rip), %rdx     # 0x404f8
xorl %eax, %eax
movl %eax, %ecx
callq 0x62f0
movq %rax, -0x220(%rbp)
jmp 0x125b1
xorl %eax, %eax
movq %rax, -0x220(%rbp)
jmp 0x125b1
movq -0x220(%rbp), %rax
movq %rax, -0x68(%rbp)
cmpq $0x0, -0x68(%rbp)
je 0x128e5
movq -0x200(%rbp), %rdi
movq -0x68(%rbp), %rax
movq 0x8(%rax), %rsi
xorl %edx, %edx
callq 0x13eb0
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
testb $0x1, (%rax)
jne 0x12652
movl $0x20, %edi
callq 0x6130
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x228(%rbp)
movq -0x68(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdx
leaq 0x1feba(%rip), %rsi     # 0x324ce
callq 0x1fef0
jmp 0x1261b
movq -0x228(%rbp), %rdi
leaq 0x2e01f(%rip), %rsi     # 0x40648
movq 0x2e978(%rip), %rdx     # 0x40fa8
callq 0x6490
movq -0x228(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x61c0
jmp 0x13e9e
movl $0x18, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, -0x230(%rbp)
xorl %esi, %esi
movl $0x18, %edx
callq 0x6160
movq -0x230(%rbp), %rdi
callq 0x20000
movq -0x230(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rax
testb $0x1, 0x1(%rax)
je 0x1285f
movl $0x30, %edi
callq 0x6260
movq %rax, -0x240(%rbp)
movl $0x10, %edi
callq 0x6260
movq %rax, -0x238(%rbp)
jmp 0x126bb
movq -0x238(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fa40
jmp 0x126cd
movq -0x238(%rbp), %rdx
movq -0x240(%rbp), %rdi
leaq 0x2ecde(%rip), %rsi     # 0x413c0
callq 0x20040
jmp 0x126e9
movq -0x200(%rbp), %rax
movq -0x240(%rbp), %rcx
movq %rcx, -0x80(%rbp)
movq 0x28(%rax), %rdi
movq -0x80(%rbp), %rsi
callq 0x244b0
movq -0x18(%rbp), %rdi
movq -0x70(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x2b200
movq %rax, -0x258(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, -0x250(%rbp)
movq -0x80(%rbp), %rdi
callq 0x25230
movq %rax, -0x248(%rbp)
jmp 0x12743
movq -0x248(%rbp), %rsi
movq -0x250(%rbp), %rdi
callq 0x200a0
jmp 0x12758
movq -0x250(%rbp), %rsi
movq -0x258(%rbp), %rdi
callq 0x2b3a0
movq %rax, %rdi
movq -0x78(%rbp), %rsi
callq 0x2b3a0
movq %rax, -0x270(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, -0x268(%rbp)
movq -0x80(%rbp), %rdi
callq 0x25230
movq %rax, -0x260(%rbp)
jmp 0x127a1
movq -0x260(%rbp), %rsi
movq -0x268(%rbp), %rdi
callq 0x200e0
jmp 0x127b6
movq -0x268(%rbp), %rsi
movq -0x270(%rbp), %rdi
callq 0x2b3a0
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x128d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x12805
movq -0x238(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x10, %esi
callq 0x6270
movq -0x240(%rbp), %rdi
movl $0x30, %esi
callq 0x6270
jmp 0x13e9e
movq -0x250(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x268(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x18(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0x2b3a0
movq %rax, -0x280(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x278(%rbp)
movq -0x70(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x200a0
jmp 0x12899
movq -0x278(%rbp), %rsi
movq -0x280(%rbp), %rdi
callq 0x2b3a0
jmp 0x128d0
movq -0x278(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x70(%rbp), %rax
movq 0x8(%rax), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x13e27
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x288(%rbp)
cmpq $0x0, %rax
je 0x12920
movq -0x288(%rbp), %rdi
leaq 0x2d659(%rip), %rsi     # 0x3ff60
leaq 0x2dc32(%rip), %rdx     # 0x40540
xorl %eax, %eax
movl %eax, %ecx
callq 0x62f0
movq %rax, -0x290(%rbp)
jmp 0x1292b
xorl %eax, %eax
movq %rax, -0x290(%rbp)
jmp 0x1292b
movq -0x290(%rbp), %rax
movq %rax, -0x88(%rbp)
cmpq $0x0, -0x88(%rbp)
je 0x12acf
movq -0x200(%rbp), %rdi
movq -0x88(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x14aa0
movq %rax, -0x90(%rbp)
movl $0x18, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, -0x298(%rbp)
xorl %esi, %esi
movl $0x18, %edx
callq 0x6160
movq -0x298(%rbp), %rdi
callq 0x20120
movq -0x298(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x90(%rbp), %rax
testb $0x1, 0x1(%rax)
je 0x12a3d
movq -0x18(%rbp), %rdi
movq -0x90(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x2b200
movq %rax, -0x2a8(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, %rdi
movq -0x200(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x2a0(%rbp)
movq 0x8(%rax), %rsi
callq 0x20160
jmp 0x129f4
movq -0x2a0(%rbp), %rsi
movq -0x2a8(%rbp), %rdi
callq 0x2b3a0
movq %rax, %rdi
movq -0x98(%rbp), %rsi
callq 0x2b3a0
jmp 0x12ab7
movq -0x2a0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x18(%rbp), %rax
movq %rax, -0x2b8(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x2b0(%rbp)
movq -0x90(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x201a0
jmp 0x12a71
movq -0x2b0(%rbp), %rsi
movq -0x2b8(%rbp), %rdi
callq 0x2b3a0
movq %rax, %rdi
movq -0x98(%rbp), %rsi
callq 0x2b3a0
jmp 0x12ab7
movq -0x2b0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x90(%rbp), %rax
movq 0x8(%rax), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x13e25
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x2c0(%rbp)
cmpq $0x0, %rax
je 0x12b0a
movq -0x2c0(%rbp), %rdi
leaq 0x2d46f(%rip), %rsi     # 0x3ff60
leaq 0x2d898(%rip), %rdx     # 0x40390
xorl %eax, %eax
movl %eax, %ecx
callq 0x62f0
movq %rax, -0x2c8(%rbp)
jmp 0x12b15
xorl %eax, %eax
movq %rax, -0x2c8(%rbp)
jmp 0x12b15
movq -0x2c8(%rbp), %rax
movq %rax, -0xa0(%rbp)
cmpq $0x0, -0xa0(%rbp)
je 0x12e72
movq -0x200(%rbp), %rdi
movq -0xa0(%rbp), %rax
movq 0x8(%rax), %rsi
xorl %edx, %edx
callq 0x13eb0
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rax
testb $0x1, (%rax)
jne 0x12bc8
movl $0x20, %edi
callq 0x6130
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x2d0(%rbp)
movq -0xa0(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rdx
leaq 0x1f96d(%rip), %rsi     # 0x324f7
callq 0x1fef0
jmp 0x12b91
movq -0x2d0(%rbp), %rdi
leaq 0x2daa9(%rip), %rsi     # 0x40648
movq 0x2e402(%rip), %rdx     # 0x40fa8
callq 0x6490
movq -0x2d0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
callq 0x61c0
jmp 0x13e9e
movq -0x200(%rbp), %rdi
movq -0xa0(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x14d50
movq %rax, -0xb0(%rbp)
movq -0xa8(%rbp), %rax
testb $0x1, 0x1(%rax)
je 0x12dd5
movl $0x30, %edi
callq 0x6260
movq %rax, -0x2e0(%rbp)
movl $0x10, %edi
callq 0x6260
movq %rax, -0x2d8(%rbp)
jmp 0x12c1b
movq -0x2d8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fa40
jmp 0x12c2d
movq -0x2d8(%rbp), %rdx
movq -0x2e0(%rbp), %rdi
leaq 0x2e77e(%rip), %rsi     # 0x413c0
callq 0x20040
jmp 0x12c49
movq -0x200(%rbp), %rax
movq -0x2e0(%rbp), %rcx
movq %rcx, -0xb8(%rbp)
movq 0x28(%rax), %rdi
movq -0xb8(%rbp), %rsi
callq 0x244b0
movq -0x18(%rbp), %rdi
movq -0xa8(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x2b200
movq %rax, -0x2f8(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, -0x2f0(%rbp)
movq -0xb8(%rbp), %rdi
callq 0x25230
movq %rax, -0x2e8(%rbp)
jmp 0x12caf
movq -0x2e8(%rbp), %rsi
movq -0x2f0(%rbp), %rdi
callq 0x200a0
jmp 0x12cc4
movq -0x2f0(%rbp), %rsi
movq -0x2f8(%rbp), %rdi
callq 0x2b3a0
movq %rax, %rdi
movq -0xb0(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2b200
movq %rax, -0x310(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, -0x308(%rbp)
movq -0xb8(%rbp), %rdi
callq 0x25230
movq %rax, -0x300(%rbp)
jmp 0x12d17
movq -0x300(%rbp), %rsi
movq -0x308(%rbp), %rdi
callq 0x200e0
jmp 0x12d2c
movq -0x308(%rbp), %rsi
movq -0x310(%rbp), %rdi
callq 0x2b3a0
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
jmp 0x12e50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x12d7b
movq -0x2d8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x10, %esi
callq 0x6270
movq -0x2e0(%rbp), %rdi
movl $0x30, %esi
callq 0x6270
jmp 0x13e9e
movq -0x2f0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x308(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x18(%rbp), %rdi
movq -0xb0(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2b200
movq %rax, -0x320(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x318(%rbp)
movq -0xa8(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x200a0
jmp 0x12e19
movq -0x318(%rbp), %rsi
movq -0x320(%rbp), %rdi
callq 0x2b3a0
jmp 0x12e50
movq -0x318(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0xa8(%rbp), %rax
movq 0x8(%rax), %rax
movq -0xb0(%rbp), %rcx
addq (%rcx), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x13e23
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x328(%rbp)
cmpq $0x0, %rax
je 0x12ead
movq -0x328(%rbp), %rdi
leaq 0x2d0cc(%rip), %rsi     # 0x3ff60
leaq 0x2d53d(%rip), %rdx     # 0x403d8
xorl %eax, %eax
movl %eax, %ecx
callq 0x62f0
movq %rax, -0x330(%rbp)
jmp 0x12eb8
xorl %eax, %eax
movq %rax, -0x330(%rbp)
jmp 0x12eb8
movq -0x330(%rbp), %rax
movq %rax, -0xc0(%rbp)
cmpq $0x0, -0xc0(%rbp)
je 0x12f59
movq -0x200(%rbp), %rdi
movq -0xc0(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x12420
movq -0x200(%rbp), %rdi
movq %rax, -0xc8(%rbp)
movq -0xc0(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0xc8(%rbp), %rax
movq 0x8(%rax), %rdx
callq 0x1e780
movq %rax, -0xd0(%rbp)
movq -0x18(%rbp), %rdi
movq -0xd0(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2b200
movq %rax, %rdi
movq -0xc8(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2b200
movq -0xd0(%rbp), %rax
movq (%rax), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x13e21
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x338(%rbp)
cmpq $0x0, %rax
je 0x12f94
movq -0x338(%rbp), %rdi
leaq 0x2cfe5(%rip), %rsi     # 0x3ff60
leaq 0x2d49e(%rip), %rdx     # 0x40420
xorl %eax, %eax
movl %eax, %ecx
callq 0x62f0
movq %rax, -0x340(%rbp)
jmp 0x12f9f
xorl %eax, %eax
movq %rax, -0x340(%rbp)
jmp 0x12f9f
movq -0x340(%rbp), %rax
movq %rax, -0xd8(%rbp)
cmpq $0x0, -0xd8(%rbp)
je 0x130f7
movq -0x200(%rbp), %rdi
movq -0xd8(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x12420
movq -0x200(%rbp), %rdi
movq %rax, -0xe0(%rbp)
movq -0xd8(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0xe0(%rbp), %rax
movq 0x8(%rax), %rdx
callq 0x1e780
movq -0x200(%rbp), %rdi
movq %rax, -0xe8(%rbp)
movq -0xd8(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x12420
movq %rax, -0xf0(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, -0x350(%rbp)
movq -0xf0(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2b180
movq %rax, -0x348(%rbp)
jmp 0x1304a
movq -0x348(%rbp), %rsi
movq -0x350(%rbp), %rdi
callq 0x201e0
jmp 0x1305f
movq -0x350(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xe0(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0xf8(%rbp), %rsi
callq 0x2b3a0
movq -0x18(%rbp), %rdi
movq -0xe8(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2b200
movq %rax, %rdi
movq -0xe0(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2b200
movq %rax, %rdi
movq -0xf0(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2b200
movq -0xe8(%rbp), %rax
movq (%rax), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x13e1f
movq -0x350(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x358(%rbp)
cmpq $0x0, %rax
je 0x13132
movq -0x358(%rbp), %rdi
leaq 0x2ce47(%rip), %rsi     # 0x3ff60
leaq 0x2d348(%rip), %rdx     # 0x40468
xorl %eax, %eax
movl %eax, %ecx
callq 0x62f0
movq %rax, -0x360(%rbp)
jmp 0x1313d
xorl %eax, %eax
movq %rax, -0x360(%rbp)
jmp 0x1313d
movq -0x360(%rbp), %rax
movq %rax, -0x100(%rbp)
cmpq $0x0, -0x100(%rbp)
je 0x133b9
movq -0x200(%rbp), %rdi
movq -0x100(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x12420
movq %rax, -0x108(%rbp)
movq -0x100(%rbp), %rax
testb $0x1, 0x18(%rax)
je 0x132ca
movl $0x20, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x368(%rbp)
callq 0x2b0c0
jmp 0x131a6
movq -0x368(%rbp), %rax
movq %rax, -0x110(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, -0x378(%rbp)
movq -0x108(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2b1a0
movq %rax, -0x370(%rbp)
jmp 0x131de
movq -0x370(%rbp), %rsi
movq -0x378(%rbp), %rdi
callq 0x201e0
jmp 0x131f3
movq -0x378(%rbp), %rax
movq %rax, -0x118(%rbp)
movq -0x110(%rbp), %rdi
movq -0x118(%rbp), %rsi
callq 0x2b3a0
movq -0x200(%rbp), %rdi
movq -0x100(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x110(%rbp), %rdx
callq 0x1e780
movq %rax, -0x120(%rbp)
movq -0x18(%rbp), %rdi
movq -0x108(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2b200
movq %rax, %rdi
movq -0x120(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2b200
movq %rax, %rdi
movq -0x110(%rbp), %rsi
callq 0x2b200
movq -0x120(%rbp), %rax
movq (%rax), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x133b4
movq -0x368(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x378(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x200(%rbp), %rdi
movq -0x100(%rbp), %rax
movq 0x8(%rax), %rsi
movq -0x108(%rbp), %rax
movq 0x8(%rax), %rdx
callq 0x1e780
movq %rax, -0x128(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, -0x388(%rbp)
movq -0x128(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2b1a0
movq %rax, -0x380(%rbp)
jmp 0x1331d
movq -0x380(%rbp), %rsi
movq -0x388(%rbp), %rdi
callq 0x201e0
jmp 0x13332
movq -0x388(%rbp), %rax
movq %rax, -0x130(%rbp)
movq -0x108(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x130(%rbp), %rsi
callq 0x2b3a0
movq -0x18(%rbp), %rdi
movq -0x128(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2b200
movq %rax, %rdi
movq -0x108(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2b200
movq -0x128(%rbp), %rax
movq (%rax), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
jmp 0x133b4
movq -0x388(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
jmp 0x13e1d
movq -0x48(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x390(%rbp)
cmpq $0x0, %rax
je 0x133f4
movq -0x390(%rbp), %rdi
leaq 0x2cb85(%rip), %rsi     # 0x3ff60
leaq 0x2d0ce(%rip), %rdx     # 0x404b0
xorl %eax, %eax
movl %eax, %ecx
callq 0x62f0
movq %rax, -0x398(%rbp)
jmp 0x133ff
xorl %eax, %eax
movq %rax, -0x398(%rbp)
jmp 0x133ff
movq -0x398(%rbp), %rax
movq %rax, -0x138(%rbp)
cmpq $0x0, -0x138(%rbp)
je 0x13e1b
movl $0x30, %edi
callq 0x6260
movq %rax, -0x3b0(%rbp)
movq -0x138(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x3a8(%rbp)
movl $0x10, %edi
callq 0x6260
movq %rax, -0x3a0(%rbp)
jmp 0x13451
movq -0x3a0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fa40
jmp 0x13463
movq -0x3a0(%rbp), %rdx
movq -0x3a8(%rbp), %rsi
movq -0x3b0(%rbp), %rdi
movl $0x1, %ecx
callq 0x1fa70
jmp 0x13484
movq -0x200(%rbp), %rax
movq -0x3b0(%rbp), %rcx
movq %rcx, -0x140(%rbp)
movq -0x140(%rbp), %rcx
movb $0x1, 0x10(%rcx)
movq 0x28(%rax), %rdi
movq -0x140(%rbp), %rsi
callq 0x244b0
movq -0x200(%rbp), %rdi
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
movq -0x138(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x14aa0
movq -0x200(%rbp), %rdi
movq %rax, -0x148(%rbp)
movq -0x138(%rbp), %rax
movq 0x30(%rax), %rsi
callq 0x14aa0
movq %rax, -0x150(%rbp)
movq -0x148(%rbp), %rax
movq 0x8(%rax), %rax
movq -0x150(%rbp), %rcx
addq 0x8(%rcx), %rax
addq -0x50(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x150(%rbp), %rax
cmpl $0x0, 0x20(%rax)
jne 0x1357f
movq -0x150(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x158(%rbp)
jmp 0x137ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x13569
movq -0x3a0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x10, %esi
callq 0x6270
movq -0x3b0(%rbp), %rdi
movl $0x30, %esi
callq 0x6270
jmp 0x13e9e
movl $0x30, %edi
callq 0x6260
movq %rax, -0x3c0(%rbp)
movl $0x10, %edi
callq 0x6260
movq %rax, -0x3b8(%rbp)
jmp 0x135a3
movq -0x3b8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x1fa40
jmp 0x135b5
movq -0x3b8(%rbp), %rdx
movq -0x3c0(%rbp), %rdi
leaq 0x2ddf6(%rip), %rsi     # 0x413c0
callq 0x20040
jmp 0x135d1
movq -0x200(%rbp), %rax
movq -0x3c0(%rbp), %rcx
movq %rcx, -0x160(%rbp)
movq 0x28(%rax), %rdi
movq -0x160(%rbp), %rsi
callq 0x244b0
movq -0x50(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x50(%rbp)
movq -0x160(%rbp), %rdi
callq 0x25230
movq %rax, -0x158(%rbp)
movq -0x18(%rbp), %rdi
movq -0x150(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x2b200
movq %rax, -0x3c8(%rbp)
movq -0x150(%rbp), %rax
movb 0x1(%rax), %al
movb $0x0, -0x169(%rbp)
movb $0x0, -0x179(%rbp)
testb $0x1, %al
je 0x13693
movl $0x20, %edi
callq 0x6260
movq %rax, %rdi
movq -0x200(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x3d0(%rbp)
movq %rdi, -0x168(%rbp)
movb $0x1, -0x169(%rbp)
movq 0x8(%rax), %rsi
callq 0x20160
jmp 0x13683
movq -0x3d0(%rbp), %rax
movq %rax, -0x3d8(%rbp)
jmp 0x136da
movl $0x20, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x3e0(%rbp)
movq %rdi, -0x178(%rbp)
movb $0x1, -0x179(%rbp)
movq -0x150(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x201a0
jmp 0x136ca
movq -0x3e0(%rbp), %rax
movq %rax, -0x3d8(%rbp)
jmp 0x136da
movq -0x3c8(%rbp), %rdi
movq -0x3d8(%rbp), %rsi
callq 0x2b3a0
movq %rax, -0x3f0(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x3e8(%rbp)
movq -0x158(%rbp), %rsi
callq 0x200a0
jmp 0x13719
movq -0x3e8(%rbp), %rsi
movq -0x3f0(%rbp), %rdi
callq 0x2b3a0
jmp 0x137ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x1375c
movq -0x3b8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x10, %esi
callq 0x6270
movq -0x3c0(%rbp), %rdi
movl $0x30, %esi
callq 0x6270
jmp 0x13e9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
testb $0x1, -0x169(%rbp)
jne 0x13789
jmp 0x1379a
movq -0x168(%rbp), %rdi
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
testb $0x1, -0x179(%rbp)
jne 0x137b6
jmp 0x137c7
movq -0x178(%rbp), %rdi
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x3e8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x200(%rbp), %rdi
movq -0x138(%rbp), %rax
movq 0x38(%rax), %rsi
callq 0x12420
movq %rax, -0x188(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x3f8(%rbp)
callq 0x2b0c0
jmp 0x1382a
movq -0x3f8(%rbp), %rax
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rax
movq %rax, -0x408(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x400(%rbp)
movq -0x158(%rbp), %rsi
callq 0x20220
jmp 0x1386b
movq -0x400(%rbp), %rsi
movq -0x408(%rbp), %rdi
callq 0x2b3a0
movq %rax, -0x410(%rbp)
movq -0x138(%rbp), %rax
movb 0x40(%rax), %al
movb $0x0, -0x199(%rbp)
movb $0x0, -0x1a9(%rbp)
testb $0x1, %al
je 0x13901
movl $0x20, %edi
callq 0x6260
movq %rax, %rcx
movq %rcx, -0x420(%rbp)
movq %rax, -0x198(%rbp)
movb $0x1, -0x199(%rbp)
movq -0x188(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2b180
movq %rax, -0x418(%rbp)
jmp 0x138dc
movq -0x418(%rbp), %rsi
movq -0x420(%rbp), %rdi
callq 0x20260
jmp 0x138f1
movq -0x420(%rbp), %rax
movq %rax, -0x428(%rbp)
jmp 0x13961
movl $0x20, %edi
callq 0x6260
movq %rax, %rcx
movq %rcx, -0x438(%rbp)
movq %rax, -0x1a8(%rbp)
movb $0x1, -0x1a9(%rbp)
movq -0x188(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2b180
movq %rax, -0x430(%rbp)
jmp 0x1393c
movq -0x430(%rbp), %rsi
movq -0x438(%rbp), %rdi
callq 0x202a0
jmp 0x13951
movq -0x438(%rbp), %rax
movq %rax, -0x428(%rbp)
jmp 0x13961
movq -0x410(%rbp), %rdi
movq -0x428(%rbp), %rsi
callq 0x2b3a0
movq -0x188(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x450(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, -0x448(%rbp)
movq -0x140(%rbp), %rdi
callq 0x25230
movq %rax, -0x440(%rbp)
jmp 0x139ac
movq -0x440(%rbp), %rsi
movq -0x448(%rbp), %rdi
callq 0x201a0
jmp 0x139c1
movq -0x448(%rbp), %rsi
movq -0x450(%rbp), %rdi
callq 0x2b3a0
movq %rax, -0x458(%rbp)
movq -0x138(%rbp), %rax
movb 0x40(%rax), %al
movb $0x0, -0x1b9(%rbp)
movb $0x0, -0x1c9(%rbp)
testb $0x1, %al
je 0x13a41
movl $0x18, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, -0x468(%rbp)
movq %rdi, -0x1b8(%rbp)
movb $0x1, -0x1b9(%rbp)
xorl %esi, %esi
movl $0x18, %edx
callq 0x6160
movq -0x468(%rbp), %rdi
callq 0x202e0
movq -0x468(%rbp), %rax
movq %rax, -0x460(%rbp)
jmp 0x13a89
movl $0x18, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, -0x470(%rbp)
movq %rdi, -0x1c8(%rbp)
movb $0x1, -0x1c9(%rbp)
xorl %esi, %esi
movl $0x18, %edx
callq 0x6160
movq -0x470(%rbp), %rdi
callq 0x20320
movq -0x470(%rbp), %rax
movq %rax, -0x460(%rbp)
movq -0x458(%rbp), %rdi
movq -0x460(%rbp), %rsi
callq 0x2b3a0
movq %rax, -0x488(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, -0x480(%rbp)
movq -0x140(%rbp), %rdi
callq 0x25230
movq %rax, -0x478(%rbp)
jmp 0x13ac9
movq -0x478(%rbp), %rsi
movq -0x480(%rbp), %rdi
callq 0x200a0
jmp 0x13ade
movq -0x480(%rbp), %rsi
movq -0x488(%rbp), %rdi
callq 0x2b3a0
movq %rax, -0x4a0(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, -0x498(%rbp)
movq -0x190(%rbp), %rdi
callq 0x2b1a0
movq %rax, -0x490(%rbp)
jmp 0x13b1e
movq -0x490(%rbp), %rsi
movq -0x498(%rbp), %rdi
callq 0x201e0
jmp 0x13b33
movq -0x498(%rbp), %rsi
movq -0x4a0(%rbp), %rdi
callq 0x2b3a0
movq -0x18(%rbp), %rdi
movq -0x148(%rbp), %rax
movq 0x10(%rax), %rsi
callq 0x2b200
movq %rax, -0x4a8(%rbp)
movq -0x148(%rbp), %rax
movb 0x1(%rax), %al
movb $0x0, -0x1d9(%rbp)
movb $0x0, -0x1e9(%rbp)
testb $0x1, %al
je 0x13bc4
movl $0x20, %edi
callq 0x6260
movq %rax, %rdi
movq -0x200(%rbp), %rax
movq %rdi, %rcx
movq %rcx, -0x4b0(%rbp)
movq %rdi, -0x1d8(%rbp)
movb $0x1, -0x1d9(%rbp)
movq 0x8(%rax), %rsi
callq 0x20160
jmp 0x13bb4
movq -0x4b0(%rbp), %rax
movq %rax, -0x4b8(%rbp)
jmp 0x13c0b
movl $0x20, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x4c0(%rbp)
movq %rdi, -0x1e8(%rbp)
movb $0x1, -0x1e9(%rbp)
movq -0x148(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x201a0
jmp 0x13bfb
movq -0x4c0(%rbp), %rax
movq %rax, -0x4b8(%rbp)
jmp 0x13c0b
movq -0x4a8(%rbp), %rdi
movq -0x4b8(%rbp), %rsi
callq 0x2b3a0
movq %rax, -0x4d8(%rbp)
movl $0x20, %edi
callq 0x6260
movq %rax, -0x4d0(%rbp)
movq -0x140(%rbp), %rdi
callq 0x25230
movq %rax, -0x4c8(%rbp)
jmp 0x13c4b
movq -0x4c8(%rbp), %rsi
movq -0x4d0(%rbp), %rdi
callq 0x200a0
jmp 0x13c60
movq -0x4d0(%rbp), %rsi
movq -0x4d8(%rbp), %rdi
callq 0x2b3a0
movq -0x18(%rbp), %rdi
movq -0x190(%rbp), %rsi
callq 0x2b200
movq %rax, %rdi
movq -0x188(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x2b200
jmp 0x13e1b
movq -0x3f8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x400(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
testb $0x1, -0x199(%rbp)
jne 0x13cf6
jmp 0x13d07
movq -0x198(%rbp), %rdi
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
testb $0x1, -0x1a9(%rbp)
jne 0x13d23
jmp 0x13d34
movq -0x1a8(%rbp), %rdi
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x448(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x480(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x498(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
testb $0x1, -0x1d9(%rbp)
jne 0x13db6
jmp 0x13dc7
movq -0x1d8(%rbp), %rdi
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
testb $0x1, -0x1e9(%rbp)
jne 0x13de3
jmp 0x13df4
movq -0x1e8(%rbp), %rdi
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
movq -0x4d0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x20, %esi
callq 0x6270
jmp 0x13e9e
jmp 0x13e1d
jmp 0x13e1f
jmp 0x13e21
jmp 0x13e23
jmp 0x13e25
jmp 0x13e27
jmp 0x13e29
movq -0x200(%rbp), %rax
movq 0x28(%rax), %rdi
movq -0x50(%rbp), %rsi
callq 0x24630
leaq -0x38(%rbp), %rdi
callq 0x11720
jmp 0x1248d
movl $0x10, %edi
callq 0x6260
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x4e0(%rbp)
movq -0x18(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x20360
jmp 0x13e71
movq -0x4e0(%rbp), %rax
addq $0x4e0, %rsp            # imm = 0x4E0
popq %rbp
retq
movq -0x4e0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
movl $0x10, %esi
callq 0x6270
movq -0x20(%rbp), %rdi
callq 0x64d0
nopw (%rax,%rax)