// File: /workspace/github_cpp_makefile_star2_O2/xelia-it[P]mustache/src/mustache-light.cpp
// Function: mustache::Mustache::produceMessage()
void Mustache::produceMessage() {
        LOG_START("");
        LOG_END("MESSAGE := ");
        LOG_START("");

        if (IS_TOKEN_EMPTY()) {
                LOG_END("  (empty)");

                return;
        }
        if (IS_TOKEN(TOKEN_START_VARIABLE)) {
                LOG_END("  VARIABLE");
                CONSUME_TOKEN();
                produceVariable();
                CONSUME_TOKEN();
                produceMessage();

                return;
        }
        if (IS_TOKEN(TOKEN_START_VARIABLE_UNESCAPED)) {
                LOG_END("  VARIABLE UNESCAPED");
                CONSUME_TOKEN();
                produceVariableUnescaped();
                CONSUME_TOKEN();
                produceMessage();

                return;
        }
        if (IS_TOKEN(TOKEN_START_COMMENT)) {
                LOG_END("  COMMENT");
                CONSUME_TOKEN();
                produceComment();
                CONSUME_TOKEN();
                produceMessage();

                return;
        }
        if (IS_TOKEN(TOKEN_START_BEGIN_SECTION) || IS_TOKEN(TOKEN_START_IF) ||
            IS_TOKEN(TOKEN_START_UNLESS) || IS_TOKEN(TOKEN_START_EXISTS_TEST)) {
                LOG_END("  SECTION");
                CONSUME_TOKEN();
                produceSection();
                CONSUME_TOKEN();
                produceMessage();
                return;
        }
        if (IS_TOKEN(TOKEN_START_END_SECTION)) {
                //        if (stack_.size() == 1) {
                //            error("Unexpected end of block '" + TOKEN_START_END_SECTION + "'");
                //        }
                // If we are in a block do not throw error.. simply return
                return;
        }
        if (IS_TOKEN(TOKEN_START_PARTIAL) || IS_TOKEN(TOKEN_START_TEMPLATE)) {
                LOG_END("  PARTIAL");
                CONSUME_TOKEN();
                producePartial();
                produceMessage();
                return;
        }
        if (IS_TOKEN(TOKEN_END)) {
                error("Unexpected end of variable '" + TOKEN_END + "'");
                return;
        }

        LOG_END("  (text)");
        if (visible_) {
                rendered_.append(tokens_.at(currentToken_));
        }
        CONSUME_TOKEN();
        produceMessage();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
leaq 0xd0(%rdi), %r14
leaq 0x90(%rdi), %rax
movq %rax, -0x30(%rbp)
movq 0x237db(%rip), %r12     # 0x4bee8
movq 0x2381c(%rip), %r13     # 0x4bf30
movq 0x23855(%rip), %r15     # 0x4bf70
movq 0xd8(%rbx), %rax
movq 0xe8(%rbx), %rsi
subq 0xd0(%rbx), %rax
sarq $0x5, %rax
cmpq %rax, %rsi
je 0x28945
movq %r14, %rdi
callq 0x25490
movq %rax, %rdi
movq %r12, %rsi
callq 0x25aa0
movq 0xe8(%rbx), %rsi
testb %al, %al
je 0x28772
incq %rsi
movq %rsi, 0xe8(%rbx)
movq %rbx, %rdi
callq 0x27420
jmp 0x2886c
movq %r14, %rdi
callq 0x25490
movq %rax, %rdi
movq %r13, %rsi
callq 0x25aa0
movq 0xe8(%rbx), %rsi
testb %al, %al
je 0x287a7
incq %rsi
movq %rsi, 0xe8(%rbx)
movq %rbx, %rdi
callq 0x25290
jmp 0x2886c
movq %r14, %rdi
callq 0x25490
movq %rax, %rdi
movq %r15, %rsi
callq 0x25aa0
movq 0xe8(%rbx), %rsi
testb %al, %al
je 0x287dc
incq %rsi
movq %rsi, 0xe8(%rbx)
movq %rbx, %rdi
callq 0x26000
jmp 0x2886c
movq %r14, %rdi
callq 0x25490
movq %rax, %rdi
movq 0x2376a(%rip), %rsi     # 0x4bf58
callq 0x25aa0
testb %al, %al
jne 0x2885d
movq 0xe8(%rbx), %rsi
movq %r14, %rdi
callq 0x25490
movq %rax, %rdi
movq 0x23798(%rip), %rsi     # 0x4bfa8
callq 0x25aa0
testb %al, %al
jne 0x2885d
movq 0xe8(%rbx), %rsi
movq %r14, %rdi
callq 0x25490
movq %rax, %rdi
movq 0x23676(%rip), %rsi     # 0x4bea8
callq 0x25aa0
testb %al, %al
jne 0x2885d
movq 0xe8(%rbx), %rsi
movq %r14, %rdi
callq 0x25490
movq %rax, %rdi
movq 0x236cc(%rip), %rsi     # 0x4bf20
callq 0x25aa0
testb %al, %al
je 0x28878
incq 0xe8(%rbx)
movq %rbx, %rdi
callq 0x267c0
incq 0xe8(%rbx)
jmp 0x2871b
movq 0xe8(%rbx), %rsi
movq %r14, %rdi
callq 0x25490
movq %rax, %rdi
movq 0x2371f(%rip), %rsi     # 0x4bfb0
callq 0x25aa0
testb %al, %al
jne 0x28945
movq 0xe8(%rbx), %rsi
movq %r14, %rdi
callq 0x25490
movq %rax, %rdi
movq 0x236c9(%rip), %rsi     # 0x4bf80
callq 0x25aa0
testb %al, %al
jne 0x288e2
movq 0xe8(%rbx), %rsi
movq %r14, %rdi
callq 0x25490
movq %rax, %rdi
movq 0x2361f(%rip), %rsi     # 0x4bef8
callq 0x25aa0
testb %al, %al
je 0x288f6
incq 0xe8(%rbx)
movq %rbx, %rdi
callq 0x25db0
jmp 0x2871b
movq 0xe8(%rbx), %rsi
movq %r14, %rdi
callq 0x25490
movq %rax, %rdi
movq 0x23571(%rip), %rsi     # 0x4be80
callq 0x25aa0
testb %al, %al
jne 0x28954
cmpb $0x1, 0x148(%rbx)
jne 0x2886c
movq 0xe8(%rbx), %rsi
movq %r14, %rdi
callq 0x25490
movq -0x30(%rbp), %rdi
movq %rax, %rsi
callq 0x276c0
jmp 0x2886c
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x14322(%rip), %rsi     # 0x3cc7d
movq 0x2351e(%rip), %rdx     # 0x4be80
leaq -0x70(%rbp), %rbx
movq %rbx, %rdi
callq 0x261d0
leaq 0x16509(%rip), %rdx     # 0x3ee7e
leaq -0x50(%rbp), %rdi
movq %rbx, %rsi
callq 0x25300
leaq -0x50(%rbp), %rsi
callq 0x26890
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x27788
jmp 0x2899b
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x27788
movq %rbx, %rdi
callq 0x27310