// File: xelia-it[P]mustache/src/mustache-light.cpp
// Function: mustache::Mustache::producePartial()
void Mustache::producePartial() {
        bool useTemplate = (tokens_.at(currentToken_ - 1) == TOKEN_START_TEMPLATE);
        LOG("PARTIAL := ");
        LOG_END("");
        LOG_START("  ");

        // Token must be (txt)
        CHECK_TOKEN_IS_TEXT();

        // Variable completePartialToken should be something like:
        //   paragraph.mustache|title=SampleTitle|text=SampleText
        // The first part is the partial file name.
        const string& partialToken = tokens_.at(currentToken_);
        LOG(" ");
        LOG(partialToken);
        LOG(" ");
        ensureValidIdentifier(partialToken, VALID_CHARS_FOR_PARTIALS);

        CONSUME_TOKEN();
        CHECK_TOKEN_NOT_EMPTY();
        CHECK_TOKEN_IS(TOKEN_END);
        LOG(" ");
        LOG_END(TOKEN_END);

        // Split token using partial variable separator.
        Tokens splitted = split(partialToken, '|');
        for (size_t i = 0; i < splitted.size(); i++) {
                splitted.at(i) = trim(splitted.at(i));
        }

        // Tokenize
        string fileToRead;
        if (useTemplate) {
                LOG_END("  Use template");
                fileToRead = getTemplateNameFromContext(splitted.at(0));
        } else {
                LOG_END("  Use normal partial");
                fileToRead = splitted.at(0);
        }
        LOG("  File to read: ");
        LOG_END(fileToRead);
        string viewFromPartial = fileRead(fileToRead);
        Tokens newTokens = tokenize(viewFromPartial);

        // TODO: can we do better?
        if (splitted.size() > 1) {
                partialSubstitute(splitted, newTokens);
        }

        // Redundant but useful
        CHECK_TOKEN_IS_NOT(TOKEN_START_PARTIAL);

        // TODO: Can we avoid iterators?
        currentToken_ = (currentToken_ - 2);
        Tokens::iterator current = std::next( tokens_.begin(), currentToken_);
        tokens_.erase(current, current + 3);
        tokens_.insert(current, newTokens.begin(), newTokens.end());
    #ifdef DEBUG
        LOG_END("TOKEN AFTER SUBSTITUTION");
        dumpTokens();
    #endif
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x450, %rsp            # imm = 0x450
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x308(%rbp)
movq %rax, %rdi
addq $0xd0, %rdi
movq 0xe8(%rax), %rsi
subq $0x1, %rsi
callq 0x67da0
movq %rax, %rdi
movq 0x52752(%rip), %rsi     # 0xc5eb0
callq 0x68f40
movq -0x308(%rbp), %rdi
andb $0x1, %al
movb %al, -0x9(%rbp)
movq 0xe8(%rdi), %rax
movq %rax, -0x300(%rbp)
addq $0xd0, %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x300(%rbp), %rax
cmpq %rcx, %rax
jne 0x73804
leaq -0x31(%rbp), %rdi
movq %rdi, -0x310(%rbp)
callq 0x6d7d0
movq -0x310(%rbp), %rdx
leaq 0x35efc(%rip), %rsi     # 0xa96b2
leaq -0x30(%rbp), %rdi
callq 0x6bd90
jmp 0x737c1
movq -0x308(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x6ba10
jmp 0x737d3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x737f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x6e458
leaq -0x31(%rbp), %rdi
callq 0x6ae90
jmp 0x745df
movq -0x308(%rbp), %rdi
movq 0xe8(%rdi), %rax
movq %rax, -0x318(%rbp)
addq $0xd0, %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x318(%rbp), %rax
cmpq %rcx, %rax
jne 0x738b3
movq -0x308(%rbp), %rax
movq %rax, %rdi
addq $0xd0, %rdi
movq 0xe8(%rax), %rsi
callq 0x67da0
movq %rax, %rdi
movq 0x52645(%rip), %rsi     # 0xc5ea0
callq 0x68f40
testb $0x1, %al
jne 0x73866
jmp 0x738b3
leaq 0x35e5d(%rip), %rsi     # 0xa96ca
movq 0x5262c(%rip), %rdx     # 0xc5ea0
leaq -0x68(%rbp), %rdi
movq %rdi, -0x320(%rbp)
callq 0x6a3b0
movq -0x308(%rbp), %rdi
movq -0x320(%rbp), %rsi
callq 0x6ba10
jmp 0x73899
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x6e458
jmp 0x745df
movq -0x308(%rbp), %rdi
movq 0xe8(%rdi), %rax
movq %rax, -0x328(%rbp)
addq $0xd0, %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x328(%rbp), %rax
cmpq %rcx, %rax
jne 0x7396c
movq -0x308(%rbp), %rax
movq %rax, %rdi
addq $0xd0, %rdi
movq 0xe8(%rax), %rsi
callq 0x67da0
movq %rax, %rdi
movq 0x5264a(%rip), %rsi     # 0xc5f58
callq 0x68f40
testb $0x1, %al
jne 0x73919
jmp 0x7396c
leaq 0x35daa(%rip), %rsi     # 0xa96ca
movq 0x52631(%rip), %rdx     # 0xc5f58
leaq -0x88(%rbp), %rdi
movq %rdi, -0x330(%rbp)
callq 0x6a3b0
movq -0x308(%rbp), %rdi
movq -0x330(%rbp), %rsi
callq 0x6ba10
jmp 0x7394f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x6e458
jmp 0x745df
movq -0x308(%rbp), %rdi
movq 0xe8(%rdi), %rax
movq %rax, -0x338(%rbp)
addq $0xd0, %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x338(%rbp), %rax
cmpq %rcx, %rax
jne 0x73a25
movq -0x308(%rbp), %rax
movq %rax, %rdi
addq $0xd0, %rdi
movq 0xe8(%rax), %rsi
callq 0x67da0
movq %rax, %rdi
movq 0x52571(%rip), %rsi     # 0xc5f38
callq 0x68f40
testb $0x1, %al
jne 0x739d2
jmp 0x73a25
leaq 0x35cf1(%rip), %rsi     # 0xa96ca
movq 0x52558(%rip), %rdx     # 0xc5f38
leaq -0xa8(%rbp), %rdi
movq %rdi, -0x340(%rbp)
callq 0x6a3b0
movq -0x308(%rbp), %rdi
movq -0x340(%rbp), %rsi
callq 0x6ba10
jmp 0x73a08
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x6e458
jmp 0x745df
movq -0x308(%rbp), %rdi
movq 0xe8(%rdi), %rax
movq %rax, -0x348(%rbp)
addq $0xd0, %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x348(%rbp), %rax
cmpq %rcx, %rax
jne 0x73ade
movq -0x308(%rbp), %rax
movq %rax, %rdi
addq $0xd0, %rdi
movq 0xe8(%rax), %rsi
callq 0x67da0
movq %rax, %rdi
movq 0x52530(%rip), %rsi     # 0xc5fb0
callq 0x68f40
testb $0x1, %al
jne 0x73a8b
jmp 0x73ade
leaq 0x35c38(%rip), %rsi     # 0xa96ca
movq 0x52517(%rip), %rdx     # 0xc5fb0
leaq -0xc8(%rbp), %rdi
movq %rdi, -0x350(%rbp)
callq 0x6a3b0
movq -0x308(%rbp), %rdi
movq -0x350(%rbp), %rsi
callq 0x6ba10
jmp 0x73ac1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x6e458
jmp 0x745df
movq -0x308(%rbp), %rdi
movq 0xe8(%rdi), %rax
movq %rax, -0x358(%rbp)
addq $0xd0, %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x358(%rbp), %rax
cmpq %rcx, %rax
jne 0x73b97
movq -0x308(%rbp), %rax
movq %rax, %rdi
addq $0xd0, %rdi
movq 0xe8(%rax), %rsi
callq 0x67da0
movq %rax, %rdi
movq 0x5246f(%rip), %rsi     # 0xc5fa8
callq 0x68f40
testb $0x1, %al
jne 0x73b44
jmp 0x73b97
leaq 0x35b7f(%rip), %rsi     # 0xa96ca
movq 0x52456(%rip), %rdx     # 0xc5fa8
leaq -0xe8(%rbp), %rdi
movq %rdi, -0x360(%rbp)
callq 0x6a3b0
movq -0x308(%rbp), %rdi
movq -0x360(%rbp), %rsi
callq 0x6ba10
jmp 0x73b7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0x6e458
jmp 0x745df
movq -0x308(%rbp), %rdi
movq 0xe8(%rdi), %rax
movq %rax, -0x368(%rbp)
addq $0xd0, %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x368(%rbp), %rax
cmpq %rcx, %rax
jne 0x73c50
movq -0x308(%rbp), %rax
movq %rax, %rdi
addq $0xd0, %rdi
movq 0xe8(%rax), %rsi
callq 0x67da0
movq %rax, %rdi
movq 0x52266(%rip), %rsi     # 0xc5e58
callq 0x68f40
testb $0x1, %al
jne 0x73bfd
jmp 0x73c50
leaq 0x35ac6(%rip), %rsi     # 0xa96ca
movq 0x5224d(%rip), %rdx     # 0xc5e58
leaq -0x108(%rbp), %rdi
movq %rdi, -0x370(%rbp)
callq 0x6a3b0
movq -0x308(%rbp), %rdi
movq -0x370(%rbp), %rsi
callq 0x6ba10
jmp 0x73c33
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x6e458
jmp 0x745df
movq -0x308(%rbp), %rdi
movq 0xe8(%rdi), %rax
movq %rax, -0x378(%rbp)
addq $0xd0, %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x378(%rbp), %rax
cmpq %rcx, %rax
jne 0x73d09
movq -0x308(%rbp), %rax
movq %rax, %rdi
addq $0xd0, %rdi
movq 0xe8(%rax), %rsi
callq 0x67da0
movq %rax, %rdi
movq 0x5224d(%rip), %rsi     # 0xc5ef8
callq 0x68f40
testb $0x1, %al
jne 0x73cb6
jmp 0x73d09
leaq 0x35a0d(%rip), %rsi     # 0xa96ca
movq 0x52234(%rip), %rdx     # 0xc5ef8
leaq -0x128(%rbp), %rdi
movq %rdi, -0x380(%rbp)
callq 0x6a3b0
movq -0x308(%rbp), %rdi
movq -0x380(%rbp), %rsi
callq 0x6ba10
jmp 0x73cec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x6e458
jmp 0x745df
movq -0x308(%rbp), %rdi
movq 0xe8(%rdi), %rax
movq %rax, -0x388(%rbp)
addq $0xd0, %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x388(%rbp), %rax
cmpq %rcx, %rax
jne 0x73dc2
movq -0x308(%rbp), %rax
movq %rax, %rdi
addq $0xd0, %rdi
movq 0xe8(%rax), %rsi
callq 0x67da0
movq %rax, %rdi
movq 0x52204(%rip), %rsi     # 0xc5f68
callq 0x68f40
testb $0x1, %al
jne 0x73d6f
jmp 0x73dc2
leaq 0x35954(%rip), %rsi     # 0xa96ca
movq 0x521eb(%rip), %rdx     # 0xc5f68
leaq -0x148(%rbp), %rdi
movq %rdi, -0x390(%rbp)
callq 0x6a3b0
movq -0x308(%rbp), %rdi
movq -0x390(%rbp), %rsi
callq 0x6ba10
jmp 0x73da5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x6e458
jmp 0x745df
movq -0x308(%rbp), %rdi
movq 0xe8(%rdi), %rax
movq %rax, -0x398(%rbp)
addq $0xd0, %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x398(%rbp), %rax
cmpq %rcx, %rax
jne 0x73e7b
movq -0x308(%rbp), %rax
movq %rax, %rdi
addq $0xd0, %rdi
movq 0xe8(%rax), %rsi
callq 0x67da0
movq %rax, %rdi
movq 0x52093(%rip), %rsi     # 0xc5eb0
callq 0x68f40
testb $0x1, %al
jne 0x73e28
jmp 0x73e7b
leaq 0x3589b(%rip), %rsi     # 0xa96ca
movq 0x5207a(%rip), %rdx     # 0xc5eb0
leaq -0x168(%rbp), %rdi
movq %rdi, -0x3a0(%rbp)
callq 0x6a3b0
movq -0x308(%rbp), %rdi
movq -0x3a0(%rbp), %rsi
callq 0x6ba10
jmp 0x73e5e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x6e458
jmp 0x745df
movq -0x308(%rbp), %rdi
movq 0xe8(%rdi), %rax
movq %rax, -0x3a8(%rbp)
addq $0xd0, %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x3a8(%rbp), %rax
cmpq %rcx, %rax
jne 0x73f34
movq -0x308(%rbp), %rax
movq %rax, %rdi
addq $0xd0, %rdi
movq 0xe8(%rax), %rsi
callq 0x67da0
movq %rax, %rdi
movq 0x51f52(%rip), %rsi     # 0xc5e28
callq 0x68f40
testb $0x1, %al
jne 0x73ee1
jmp 0x73f34
leaq 0x357e2(%rip), %rsi     # 0xa96ca
movq 0x51f39(%rip), %rdx     # 0xc5e28
leaq -0x188(%rbp), %rdi
movq %rdi, -0x3b0(%rbp)
callq 0x6a3b0
movq -0x308(%rbp), %rdi
movq -0x3b0(%rbp), %rsi
callq 0x6ba10
jmp 0x73f17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x6e458
jmp 0x745df
movq -0x308(%rbp), %rax
movq %rax, %rdi
addq $0xd0, %rdi
movq 0xe8(%rax), %rsi
callq 0x67da0
movq -0x308(%rbp), %rdi
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rsi
movq 0x5206b(%rip), %rdx     # 0xc5fd8
callq 0x6cc40
movq -0x308(%rbp), %rdi
movq 0xe8(%rdi), %rax
addq $0x1, %rax
movq %rax, 0xe8(%rdi)
movq 0xe8(%rdi), %rax
movq %rax, -0x3b8(%rbp)
addq $0xd0, %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x3b8(%rbp), %rax
cmpq %rcx, %rax
jne 0x7402f
leaq -0x1b1(%rbp), %rdi
movq %rdi, -0x3c0(%rbp)
callq 0x6d7d0
movq -0x3c0(%rbp), %rdx
leaq 0x356dd(%rip), %rsi     # 0xa96b2
leaq -0x1b0(%rbp), %rdi
callq 0x6bd90
jmp 0x73fe3
movq -0x308(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0x6ba10
jmp 0x73ff8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x7401e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1b0(%rbp), %rdi
callq 0x6e458
leaq -0x1b1(%rbp), %rdi
callq 0x6ae90
jmp 0x745df
movq -0x308(%rbp), %rdi
movq 0xe8(%rdi), %rax
movq %rax, -0x3c8(%rbp)
addq $0xd0, %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x3c8(%rbp), %rax
cmpq %rcx, %rax
je 0x74091
movq -0x308(%rbp), %rax
movq %rax, %rdi
addq $0xd0, %rdi
movq 0xe8(%rax), %rsi
callq 0x67da0
movq %rax, %rdi
movq 0x51da2(%rip), %rsi     # 0xc5e28
callq 0x6da60
testb $0x1, %al
jne 0x74091
jmp 0x740e4
leaq 0x3563e(%rip), %rsi     # 0xa96d6
movq 0x51d89(%rip), %rdx     # 0xc5e28
leaq -0x1d8(%rbp), %rdi
movq %rdi, -0x3d0(%rbp)
callq 0x6a3b0
movq -0x308(%rbp), %rdi
movq -0x3d0(%rbp), %rsi
callq 0x6ba10
jmp 0x740c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x6e458
jmp 0x745df
movq -0x308(%rbp), %rsi
movq -0x190(%rbp), %rdx
leaq -0x1f0(%rbp), %rdi
movl $0x7c, %ecx
callq 0x6b520
movq $0x0, -0x1f8(%rbp)
movq -0x1f8(%rbp), %rax
movq %rax, -0x3d8(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x3d8(%rbp), %rax
cmpq %rcx, %rax
jae 0x741ce
movq -0x1f8(%rbp), %rsi
leaq -0x1f0(%rbp), %rdi
callq 0x67da0
movq %rax, -0x3e0(%rbp)
jmp 0x74157
movq -0x3e0(%rbp), %rsi
movq -0x308(%rbp), %rdi
callq 0x6a7e0
movq %rax, -0x3e8(%rbp)
jmp 0x74173
movq -0x1f8(%rbp), %rsi
leaq -0x1f0(%rbp), %rdi
callq 0x67da0
movq %rax, -0x3f0(%rbp)
jmp 0x7418f
movq -0x3e8(%rbp), %rsi
movq -0x3f0(%rbp), %rdi
callq 0x67190
jmp 0x741a4
jmp 0x741a6
movq -0x1f8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x1f8(%rbp)
jmp 0x7410e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x745d3
leaq -0x218(%rbp), %rdi
callq 0x6bf40
testb $0x1, -0x9(%rbp)
je 0x74247
xorl %eax, %eax
movl %eax, %esi
leaq -0x1f0(%rbp), %rdi
callq 0x67da0
movq %rax, -0x3f8(%rbp)
jmp 0x741f9
movq -0x3f8(%rbp), %rdx
movq -0x308(%rbp), %rsi
leaq -0x238(%rbp), %rdi
callq 0x6c0c0
jmp 0x74215
leaq -0x218(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x6b6a0
leaq -0x238(%rbp), %rdi
callq 0x6e458
jmp 0x74277
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x745c7
xorl %eax, %eax
movl %eax, %esi
leaq -0x1f0(%rbp), %rdi
callq 0x67da0
movq %rax, -0x400(%rbp)
jmp 0x74260
movq -0x400(%rbp), %rsi
leaq -0x218(%rbp), %rdi
callq 0x67190
jmp 0x74275
jmp 0x74277
movq -0x308(%rbp), %rsi
leaq -0x258(%rbp), %rdi
leaq -0x218(%rbp), %rdx
callq 0x6cb10
jmp 0x74293
movq -0x308(%rbp), %rsi
leaq -0x270(%rbp), %rdi
leaq -0x258(%rbp), %rdx
callq 0x67670
jmp 0x742af
leaq -0x1f0(%rbp), %rdi
callq 0x6dab0
cmpq $0x1, %rax
jbe 0x7433f
leaq -0x288(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0x6c100
jmp 0x742d6
movq -0x308(%rbp), %rdi
leaq -0x288(%rbp), %rsi
leaq -0x270(%rbp), %rdx
callq 0x69370
jmp 0x742f2
leaq -0x288(%rbp), %rdi
callq 0x69870
jmp 0x7433f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x745bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x745af
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x288(%rbp), %rdi
callq 0x69870
jmp 0x745af
movq -0x308(%rbp), %rdi
movq 0xe8(%rdi), %rax
movq %rax, -0x408(%rbp)
addq $0xd0, %rdi
callq 0x6dab0
movq %rax, %rcx
movq -0x408(%rbp), %rax
cmpq %rcx, %rax
jne 0x74400
movq -0x308(%rbp), %rax
movq %rax, %rdi
addq $0xd0, %rdi
movq 0xe8(%rax), %rsi
callq 0x67da0
movq %rax, -0x410(%rbp)
jmp 0x74399
movq -0x410(%rbp), %rdi
movq 0x51bc1(%rip), %rsi     # 0xc5f68
callq 0x68f40
testb $0x1, %al
jne 0x743b2
jmp 0x74400
leaq 0x35311(%rip), %rsi     # 0xa96ca
movq 0x51ba8(%rip), %rdx     # 0xc5f68
leaq -0x2a8(%rbp), %rdi
callq 0x6a3b0
jmp 0x743ce
movq -0x308(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
callq 0x6ba10
jmp 0x743e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x2a8(%rbp), %rdi
callq 0x6e458
jmp 0x745af
movq -0x308(%rbp), %rdi
movq 0xe8(%rdi), %rax
addq $-0x2, %rax
movq %rax, 0xe8(%rdi)
addq $0xd0, %rdi
callq 0x6d0e0
movq %rax, %rcx
movq -0x308(%rbp), %rax
movq %rcx, -0x2b8(%rbp)
movq 0xe8(%rax), %rsi
movq -0x2b8(%rbp), %rdi
callq 0x67d20
movq %rax, -0x418(%rbp)
jmp 0x74452
movq -0x308(%rbp), %rax
movq -0x418(%rbp), %rcx
movq %rcx, -0x2b0(%rbp)
addq $0xd0, %rax
movq %rax, -0x428(%rbp)
leaq -0x2c0(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
movq %rsi, -0x430(%rbp)
callq 0x6adf0
movq -0x430(%rbp), %rdi
movl $0x3, %esi
callq 0x68e60
movq %rax, -0x2d0(%rbp)
leaq -0x2c8(%rbp), %rdi
leaq -0x2d0(%rbp), %rsi
callq 0x6adf0
movq -0x428(%rbp), %rdi
movq -0x2c0(%rbp), %rsi
movq -0x2c8(%rbp), %rdx
callq 0x6c130
movq %rax, -0x420(%rbp)
jmp 0x744dc
movq -0x308(%rbp), %rax
movq -0x420(%rbp), %rcx
movq %rcx, -0x2d8(%rbp)
addq $0xd0, %rax
movq %rax, -0x440(%rbp)
leaq -0x2e0(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x6adf0
leaq -0x270(%rbp), %rdi
movq %rdi, -0x448(%rbp)
callq 0x6d0e0
movq -0x448(%rbp), %rdi
movq %rax, -0x2e8(%rbp)
callq 0x6d2a0
movq -0x440(%rbp), %rdi
movq %rax, -0x2f0(%rbp)
movq -0x2e0(%rbp), %rsi
movq -0x2e8(%rbp), %rdx
movq -0x2f0(%rbp), %rcx
callq 0x6ad60
movq %rax, -0x438(%rbp)
jmp 0x74568
movq -0x438(%rbp), %rax
movq %rax, -0x2f8(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x69870
leaq -0x258(%rbp), %rdi
callq 0x6e458
leaq -0x218(%rbp), %rdi
callq 0x6e458
leaq -0x1f0(%rbp), %rdi
callq 0x69870
addq $0x450, %rsp            # imm = 0x450
popq %rbp
retq
leaq -0x270(%rbp), %rdi
callq 0x69870
leaq -0x258(%rbp), %rdi
callq 0x6e458
leaq -0x218(%rbp), %rdi
callq 0x6e458
leaq -0x1f0(%rbp), %rdi
callq 0x69870
movq -0x40(%rbp), %rdi
callq 0x6d7b0
nopl (%rax,%rax)