// File: /workspace/github_cpp_makefile_star2_O1/xelia-it[P]mustache/src/mustache-light.cpp
// Function: mustache::Mustache::produceSection()
void Mustache::produceSection() {
        bool useSection = (tokens_.at(currentToken_ - 1) == TOKEN_START_BEGIN_SECTION);
        bool useUnless = (tokens_.at(currentToken_ - 1) == TOKEN_START_UNLESS);
        bool useExistsTest = (tokens_.at(currentToken_ - 1) == TOKEN_START_EXISTS_TEST);

        LOG_START("");
        LOG_END("SECTION := ");
#ifdef DEBUG
        if (useSection) {
                LOG_START(TOKEN_START_BEGIN_SECTION);
        } else if (useUnless) {
                LOG_START(TOKEN_START_UNLESS);
        } else if (useExistsTest) {
                LOG_START(TOKEN_START_EXISTS_TEST);
        } else {
                LOG_START(TOKEN_START_IF);
        }
#endif

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

        // Save var name
        string variableName = tokens_.at(currentToken_);
        ensureValidIdentifier(variableName);
        LOG(" ");
        LOG(variableName);

        json variable;
        bool variable_exists;
        try {
            variable = searchVariableInContext(variableName);
            variable_exists = true;
        } catch(const std::out_of_range& ex) {
            variable = nullptr;
            variable_exists = false;
        } catch(const std::invalid_argument& ex) {
            variable = nullptr;
            variable_exists = false;
        }

        // Is variable malformed
        bool isCorrectType = variable.is_null() || variable.is_boolean() ||
                             variable.is_string() || variable.is_array() ||
                             variable.is_object() || variable.is_number();
        if (!isCorrectType) {
                error("Variable '" + variableName + "' is malformed");
                return;
        }

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

        CONSUME_TOKEN();
        // The logic of section block {{# }}
        // - [ a, b, c, .. ] ==> cycle
        // - [], {}, "", false, null ==> hide
        // - { something }, "something", true ==> view
        // Section always changes context. EG:
        //
        // context = {
        //   "var1": { "one": 1, "two": 2 },
        //   "var2": "value2"
        // }
        //
        // template =  {{# var1 }}{{ one }}{{/ var1 }}
        //
        // output = 1
        //
        if (useSection && variable.is_array() && variable.size() > 0) {
                const TokenIndex savedPosition = currentToken_;
                for (json::iterator it = variable.begin(); it != variable.end(); ++it) {
                        LOG_END(variable);
                        currentToken_ = savedPosition;
                        currentListCounter_ = std::distance(variable.begin(), it);
                        stack_.push(*it);
                        produceMessage();
                        stack_.pop();
                }
                // Reset to 0 after the main cycle
                currentListCounter_ = 0;
        } else {
                // The hide variable is used for {{= }} and {{# }} logic
                bool hide =
                        (variable.is_array() && variable.size() == 0) ||
                        (variable.is_object() && variable.size() == 0) ||
                        (variable.is_string() && variable.get<string>().size() == 0) ||
                        (variable.is_boolean() && !variable.get<bool>()) ||
                        (variable.is_number() && variable.get<int>() == 0) ||
                        (variable.is_null());

                if (useExistsTest) {
                        // The exist test {{0 }} uses a different logic:
                        // If the key do not exists the section is not shown.
                        hide = !variable_exists;
                } else if (useUnless) {
                        // The inverted section {{^ }} uses inverted logic
                        hide = !hide;
                }
                bool oldVisible = visible_;

                // Should the next message be visible?
                visible_ = visible_ && !hide;

                // The only difference from {{# }} and {{= }} {{^ }} {{? }}
                // is the fact that tag {{# }} changes context.
                if (useSection) {
                        stack_.push(variable);
                }
                produceMessage();
                if (useSection) {
                        stack_.pop();
                }

                // Retrieve the old visibility state
                visible_ = oldVisible;
        }

        CHECK_TOKEN_IS(TOKEN_START_END_SECTION);
        LOG(" ");
        LOG(TOKEN_START_END_SECTION);

        CONSUME_TOKEN();
        CHECK_TOKEN_NOT_EMPTY();
        const string& variableNameEnd = tokens_.at(currentToken_);
        LOG(" ");
        LOG(variableNameEnd);
        ensureValidIdentifier(variableName);
        if (variableNameEnd != variableName) {
                error("Expected '" + variableName + "' in closing block (found '" +
                      variableNameEnd + "')");
                return;
        }

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

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x148, %rsp            # imm = 0x148
movq 0xe8(%rdi), %r14
leaq -0x1(%r14), %rsi
movq 0xd0(%rdi), %r13
movq 0xd8(%rdi), %r15
subq %r13, %r15
sarq $0x5, %r15
cmpq %rsi, %r15
jbe 0x1ade2
movq %rdi, %rbx
shlq $0x5, %rsi
leaq (%rsi,%r13), %rcx
movq 0x8(%r13,%rsi), %r12
movq 0x23858(%rip), %rax     # 0x3df60
cmpq 0x8(%rax), %r12
movq %rcx, -0x70(%rbp)
jne 0x1a730
testq %r12, %r12
je 0x1a739
movq (%rax), %rsi
movq (%rcx), %rdi
movq %r12, %rdx
callq 0x17be0
movq -0x70(%rbp), %rcx
testl %eax, %eax
sete %al
jmp 0x1a73b
movl $0x0, -0x2c(%rbp)
jmp 0x1a73e
movb $0x1, %al
movl %eax, -0x2c(%rbp)
movq 0x2375b(%rip), %rax     # 0x3dea0
cmpq 0x8(%rax), %r12
jne 0x1a765
testq %r12, %r12
je 0x1a76e
movq (%rax), %rsi
movq (%rcx), %rdi
movq %r12, %rdx
callq 0x17be0
testl %eax, %eax
sete %al
jmp 0x1a770
movl $0x0, -0x44(%rbp)
jmp 0x1a773
movb $0x1, %al
movl %eax, -0x44(%rbp)
movq 0x237a6(%rip), %rax     # 0x3df20
cmpq 0x8(%rax), %r12
jne 0x1a79f
testq %r12, %r12
je 0x1a7a4
movq (%rax), %rsi
movq -0x70(%rbp), %rax
movq (%rax), %rdi
movq %r12, %rdx
callq 0x17be0
testl %eax, %eax
sete %r12b
jmp 0x1a7a7
xorl %r12d, %r12d
jmp 0x1a7a7
movb $0x1, %r12b
cmpq %r15, %r14
je 0x1adeb
jae 0x1ae19
shlq $0x5, %r14
leaq -0xb0(%rbp), %rax
movq %rax, -0x10(%rax)
movq (%r13,%r14), %rsi
movq 0x8(%r13,%r14), %rdx
addq %rsi, %rdx
leaq -0xc0(%rbp), %r14
movq %r14, %rdi
callq 0x173d0
movq 0x23700(%rip), %rdx     # 0x3dee8
movq %r14, %rsi
callq 0x182a0
leaq -0x40(%rbp), %r14
movb $0x0, (%r14)
movq $0x0, 0x8(%r14)
movq %r14, %rdi
movl $0x1, %esi
callq 0x17530
movq %r14, %rdi
movl $0x1, %esi
callq 0x17530
leaq -0x110(%rbp), %rdi
leaq -0xc0(%rbp), %rdx
movq %rbx, %rsi
movq %rbx, -0x98(%rbp)
callq 0x17c30
leaq -0x40(%rbp), %rdi
leaq -0x110(%rbp), %r14
movq %r14, %rsi
callq 0x17550
movq %r14, %rdi
callq 0x17d70
xorl %r13d, %r13d
movl %r12d, -0xa0(%rbp)
movzbl -0x40(%rbp), %r15d
cmpl $0x8, %r15d
jae 0x1ae2d
movq 0xe8(%rbx), %rax
movq %rax, -0x70(%rbp)
leaq 0x1(%rax), %r14
movq %r14, 0xe8(%rbx)
movq 0xd0(%rbx), %rax
movq 0xd8(%rbx), %r12
subq %rax, %r12
sarq $0x5, %r12
cmpq %r12, %r14
je 0x1ae7a
movl %r13d, -0x9c(%rbp)
jae 0x1ad1e
shlq $0x5, %r14
movq 0x8(%rax,%r14), %rdx
movq 0x235bc(%rip), %r13     # 0x3de78
cmpq 0x8(%r13), %rdx
jne 0x1ad46
testq %rdx, %rdx
je 0x1a8e2
addq %r14, %rax
movq (%r13), %rsi
movq (%rax), %rdi
callq 0x17be0
testl %eax, %eax
jne 0x1ad46
movq -0x70(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x70(%rbp)
movq %rax, 0xe8(%rbx)
cmpl $0x2, %r15d
setne %al
movl -0x2c(%rbp), %ecx
xorb $0x1, %cl
orb %al, %cl
jne 0x1aa59
movq %r15, %rax
testl %r15d, %r15d
je 0x1a93e
cmpl $0x1, %r15d
je 0x1a92f
cmpl $0x2, %r15d
jne 0x1a939
movq -0x38(%rbp), %rcx
movq 0x8(%rcx), %rax
subq (%rcx), %rax
sarq $0x4, %rax
jmp 0x1a93e
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
jmp 0x1a93e
movl $0x1, %eax
testq %rax, %rax
je 0x1aa59
leaq -0x100(%rbp), %r14
leaq -0x40(%rbp), %rsi
movq %r14, %rdi
callq 0x17830
leaq 0xf8(%rbx), %r12
leaq -0x90(%rbp), %r13
leaq -0x68(%rbp), %r15
movq %r13, %rdi
leaq -0x40(%rbp), %rsi
callq 0x17510
movq %r14, %rdi
movq %r13, %rsi
callq 0x17440
testb %al, %al
jne 0x1ab01
movq -0x70(%rbp), %rax
movq %rax, 0xe8(%rbx)
leaq -0x150(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x17830
movq -0x100(%rbp), %rax
movq 0x18(%r14), %rcx
leaq -0x60(%rbp), %rdx
movq %rcx, 0x10(%rdx)
movups 0x8(%r14), %xmm0
movups %xmm0, (%rdx)
movq -0x150(%rbp), %rcx
movq %rcx, -0x90(%rbp)
leaq -0x148(%rbp), %rsi
movq 0x10(%rsi), %rcx
leaq -0x88(%rbp), %rdx
movq %rcx, 0x10(%rdx)
movups (%rsi), %xmm0
movups %xmm0, (%rdx)
movq %rax, -0x68(%rbp)
movq %r13, %rdi
movq %r15, %rsi
callq 0x17440
xorl %ebx, %ebx
testb %al, %al
jne 0x1aa18
movq %r13, %rdi
callq 0x18470
movq %r13, %rdi
movq %r15, %rsi
callq 0x17440
incq %rbx
jmp 0x1a9fc
movq -0x98(%rbp), %rax
movq %rbx, 0xf0(%rax)
movq %rax, %rbx
movq %r14, %rdi
callq 0x17a10
movq %r12, %rdi
movq %rax, %rsi
callq 0x17fb0
movq %rbx, %rdi
callq 0x17570
movq %r12, %rdi
callq 0x17f40
movq %r14, %rdi
callq 0x18470
jmp 0x1a96c
cmpq $0x1, %r15
je 0x1aa7c
cmpl $0x2, %r15d
jne 0x1aa8b
movq -0x38(%rbp), %rax
movq 0x8(%rax), %rcx
cmpq (%rax), %rcx
je 0x1ab18
cmpl $0x1, %r15d
jne 0x1aa8b
movq -0x38(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x1ab18
cmpq $0x3, %r15
sete %r12b
jne 0x1aaaf
leaq -0x90(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x18430
cmpq $0x0, -0x88(%rbp)
je 0x1ab20
cmpb $0x4, -0x40(%rbp)
jne 0x1aad5
leaq -0x68(%rbp), %rdx
movb $0x0, (%rdx)
movq 0x23435(%rip), %rdi     # 0x3def8
leaq -0x40(%rbp), %rsi
callq 0x17a40
movb $0x1, %r14b
cmpb $0x1, -0x68(%rbp)
jne 0x1ab26
movb -0x40(%rbp), %al
addb $-0x5, %al
cmpb $0x2, %al
ja 0x1aaf7
leaq -0x68(%rbp), %rsi
movl $0x0, (%rsi)
leaq -0x40(%rbp), %rdi
callq 0x18000
cmpl $0x0, -0x68(%rbp)
je 0x1ab23
cmpb $0x0, -0x40(%rbp)
sete %r14b
jmp 0x1ab26
movq $0x0, 0xf0(%rbx)
movq 0x23365(%rip), %r13     # 0x3de78
jmp 0x1aba4
movb $0x1, %r14b
xorl %r12d, %r12d
jmp 0x1ab26
movb $0x1, %r12b
movb $0x1, %r14b
testb %r12b, %r12b
movl -0xa0(%rbp), %r15d
je 0x1ab44
leaq -0x80(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1ab44
callq 0x17b00
movl -0x44(%rbp), %eax
xorb %r14b, %al
movzbl %al, %eax
movzbl -0x9c(%rbp), %ecx
testb %r15b, %r15b
cmovel %eax, %ecx
movb 0x148(%rbx), %r14b
xorb $0x1, %cl
andb %r14b, %cl
movb %cl, 0x148(%rbx)
cmpb $0x0, -0x2c(%rbp)
je 0x1ab83
leaq 0xf8(%rbx), %rdi
leaq -0x40(%rbp), %rsi
callq 0x17fb0
movq %rbx, %rdi
callq 0x17570
cmpb $0x0, -0x2c(%rbp)
je 0x1ab9d
leaq 0xf8(%rbx), %rdi
callq 0x17f40
movb %r14b, 0x148(%rbx)
movq 0xe8(%rbx), %r14
movq 0xd0(%rbx), %r15
movq 0xd8(%rbx), %r12
subq %r15, %r12
sarq $0x5, %r12
cmpq %r12, %r14
je 0x1acfe
jae 0x1ad1e
movq %r14, %rax
shlq $0x5, %rax
movq 0x8(%r15,%rax), %rdx
movq 0x233ce(%rip), %rcx     # 0x3dfb0
cmpq 0x8(%rcx), %rdx
jne 0x1acfe
testq %rdx, %rdx
je 0x1ac07
addq %r15, %rax
movq (%rcx), %rsi
movq (%rax), %rdi
callq 0x17be0
testl %eax, %eax
jne 0x1acfe
incq %r14
movq %r14, 0xe8(%rbx)
cmpq %r12, %r14
je 0x1aea8
jae 0x1ad32
movq 0x232c1(%rip), %rdx     # 0x3dee8
leaq -0xc0(%rbp), %rsi
callq 0x182a0
shlq $0x5, %r14
addq %r14, %r15
movq 0x8(%r15), %rdx
cmpq -0xb8(%rbp), %rdx
jne 0x1ad6c
testq %rdx, %rdx
je 0x1ac67
movq -0xc0(%rbp), %rsi
movq (%r15), %rdi
callq 0x17be0
testl %eax, %eax
jne 0x1ad6c
movq 0xe8(%rbx), %r14
incq %r14
movq %r14, 0xe8(%rbx)
movq 0xd0(%rbx), %rax
movq 0xd8(%rbx), %r12
subq %rax, %r12
sarq $0x5, %r12
cmpq %r12, %r14
je 0x1aed0
jae 0x1ad32
shlq $0x5, %r14
movq 0x8(%rax,%r14), %rdx
cmpq 0x8(%r13), %rdx
jne 0x1adc2
testq %rdx, %rdx
je 0x1accb
addq %r14, %rax
movq (%r13), %rsi
movq (%rax), %rdi
callq 0x17be0
testl %eax, %eax
jne 0x1adc2
leaq -0x40(%rbp), %rdi
callq 0x17d70
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x1acec
callq 0x17b00
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x15fd4(%rip), %rsi     # 0x30cd9
movq 0x232a4(%rip), %rdx     # 0x3dfb0
leaq -0x68(%rbp), %rdi
callq 0x17a70
leaq -0x68(%rbp), %rsi
callq 0x17e70
leaq 0x199bb(%rip), %rdi     # 0x346e0
movq %r14, %rsi
movq %r12, %rdx
xorl %eax, %eax
callq 0x18110
leaq 0x199a7(%rip), %rdi     # 0x346e0
movq %r14, %rsi
movq %r12, %rdx
xorl %eax, %eax
callq 0x18110
leaq 0x15f8c(%rip), %rsi     # 0x30cd9
movq 0x23124(%rip), %rdx     # 0x3de78
leaq -0x90(%rbp), %rdi
callq 0x17a70
leaq -0x90(%rbp), %rsi
callq 0x17e70
leaq 0x15f8e(%rip), %rsi     # 0x30d01
leaq -0x130(%rbp), %rdi
leaq -0xc0(%rbp), %rdx
callq 0x17a70
leaq 0x15f7f(%rip), %rsi     # 0x30d0c
leaq -0x130(%rbp), %rdi
callq 0x18680
leaq -0xd0(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x1aef8
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
jmp 0x1af09
leaq 0x15f10(%rip), %rsi     # 0x30cd9
movq 0x230a8(%rip), %rdx     # 0x3de78
leaq -0x68(%rbp), %rdi
callq 0x17a70
leaq -0x68(%rbp), %rsi
callq 0x17e70
leaq 0x198f7(%rip), %rdi     # 0x346e0
jmp 0x1ae23
leaq -0x80(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x15ec7(%rip), %rsi     # 0x30cc1
leaq 0x15ed7(%rip), %rdx     # 0x30cd8
leaq -0x90(%rbp), %rdi
callq 0x173a0
leaq -0x90(%rbp), %rsi
callq 0x17e70
leaq 0x198c0(%rip), %rdi     # 0x346e0
movq %r14, %rsi
movq %r15, %rdx
xorl %eax, %eax
callq 0x18110
leaq 0x15eb3(%rip), %rsi     # 0x30ce7
leaq -0x68(%rbp), %rdi
leaq -0xc0(%rbp), %rdx
callq 0x17a70
leaq 0x15ea7(%rip), %rsi     # 0x30cf2
leaq -0x68(%rbp), %rdi
callq 0x18680
leaq -0x80(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x1af69
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
jmp 0x1af77
leaq -0x80(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x15e38(%rip), %rsi     # 0x30cc1
leaq 0x15e48(%rip), %rdx     # 0x30cd8
leaq -0x90(%rbp), %rdi
callq 0x173a0
leaq -0x90(%rbp), %rsi
callq 0x17e70
leaq -0x58(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x15e0a(%rip), %rsi     # 0x30cc1
leaq 0x15e1a(%rip), %rdx     # 0x30cd8
leaq -0x68(%rbp), %rdi
callq 0x173a0
leaq -0x68(%rbp), %rsi
callq 0x17e70
leaq -0x58(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x15de2(%rip), %rsi     # 0x30cc1
leaq 0x15df2(%rip), %rdx     # 0x30cd8
leaq -0x68(%rbp), %rdi
callq 0x173a0
leaq -0x68(%rbp), %rsi
callq 0x17e70
movq %rdx, -0xe0(%rbp)
movq (%rcx), %rdx
movq %rdx, -0xd0(%rbp)
movq 0x8(%rax), %rdx
leaq -0xe0(%rbp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq -0x100(%rbp), %rdi
movq %r15, %rdx
callq 0x180e0
leaq 0x15deb(%rip), %rsi     # 0x30d28
leaq -0x100(%rbp), %rdi
callq 0x18680
leaq -0x58(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
jne 0x1af9a
movups (%rcx), %xmm0
movups %xmm0, (%r15)
jmp 0x1afa5
movq %rdx, -0x90(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x80(%rbp)
movq 0x8(%rax), %rdx
leaq -0x90(%rbp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x17e70
movq %rdx, -0x68(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x58(%rbp)
movq 0x8(%rax), %rdx
leaq -0x68(%rbp), %rsi
movq %rdx, 0x8(%rsi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
callq 0x17e70
movq %rax, %r14
movq -0x68(%rbp), %rdi
cmpq %r15, %rdi
je 0x1afdb
callq 0x17b00
jmp 0x1afdb
movq %rax, %r14
leaq -0xf0(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1aff5
callq 0x17b00
jmp 0x1aff5
movq %rax, %r14
movq -0xe0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1b05b
callq 0x17b00
jmp 0x1b05b
movq %rax, %r14
movb $0x1, %r12b
jmp 0x1b050
movq %rax, %r14
movq -0x90(%rbp), %rdi
cmpq %rbx, %rdi
je 0x1b17b
callq 0x17b00
jmp 0x1b17b
jmp 0x1b178
movq %rax, %r14
cmpl $0x3, %r15d
jne 0x1b050
leaq -0x80(%rbp), %rax
movq -0x10(%rax), %rdi
movb $0x1, %r12b
cmpq %rax, %rdi
je 0x1b050
callq 0x17b00
testb %r12b, %r12b
jmp 0x1b19c
movq %rax, %r14
leaq -0x120(%rbp), %rax
jmp 0x1b17f
jmp 0x1b06e
jmp 0x1b199
movq %rax, %r14
movq -0x68(%rbp), %rdi
jmp 0x1b086
jmp 0x1b199
movq %rax, %r14
movq -0x90(%rbp), %rdi
cmpq %rbx, %rdi
jne 0x1b188
jmp 0x1b19c
jmp 0x1b199
jmp 0x1b199
movq %rax, %r14
movq -0x90(%rbp), %rdi
cmpq %rbx, %rdi
jne 0x1b1b8
jmp 0x1b1bd
movq %rax, %r14
jmp 0x1b1bd
jmp 0x1b178
jmp 0x1b199
jmp 0x1b199
movq %rax, %r14
leaq -0x80(%rbp), %rax
jmp 0x1b17f
jmp 0x1b199
movq %rax, %r14
cmpl $0x2, %edx
jne 0x1b127
movq %r14, %rdi
callq 0x173f0
leaq -0x160(%rbp), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x17e20
leaq -0x40(%rbp), %rdi
movq %r14, %rsi
callq 0x17550
movq %r14, %rdi
callq 0x17d70
movb $0x1, %r13b
callq 0x18320
movq -0x98(%rbp), %rbx
jmp 0x1a855
cmpl $0x1, %edx
jne 0x1b19c
movq %r14, %rdi
callq 0x173f0
leaq -0x170(%rbp), %r14
movq %r14, %rdi
xorl %esi, %esi
callq 0x17e20
leaq -0x40(%rbp), %rdi
movq %r14, %rsi
callq 0x17550
movq %r14, %rdi
callq 0x17d70
movb $0x1, %r13b
callq 0x18320
movq -0x98(%rbp), %rbx
jmp 0x1a855
jmp 0x1b199
jmp 0x1b199
movq %rax, %r14
jmp 0x1b1a5
jmp 0x1b199
movq %rax, %r14
leaq -0x58(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x1b19c
callq 0x17b00
jmp 0x1b19c
jmp 0x1b199
jmp 0x1b199
jmp 0x1b199
jmp 0x1b199
jmp 0x1b199
movq %rax, %r14
leaq -0x40(%rbp), %rdi
callq 0x17d70
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x1b1bd
callq 0x17b00
movq %r14, %rdi
callq 0x184b0
nop