// File: /workspace/github_cpp_makefile_star2_O2/Falldog[P]dcinja/src/include/inja/inja.hpp
// Function: inja::Parser::parse_into(inja::Template&, std::basic_string_view<char, std::char_traits<char>>)
void parse_into(Template &tmpl, nonstd::string_view path) {
    lexer.start(tmpl.content);
    current_block = &tmpl.root;

    for (;;) {
      get_next_token();
      switch (tok.kind) {
      case Token::Kind::Eof: {
        if (!if_statement_stack.empty()) {
          throw_parser_error("unmatched if");
        }
        if (!for_statement_stack.empty()) {
          throw_parser_error("unmatched for");
        }
      } return;
      case Token::Kind::Text: {
        current_block->nodes.emplace_back(std::make_shared<TextNode>(tok.text.data() - tmpl.content.c_str(), tok.text.size()));
      } break;
      case Token::Kind::StatementOpen: {
        get_next_token();
        if (!parse_statement(tmpl, Token::Kind::StatementClose, path)) {
          throw_parser_error("expected statement, got '" + tok.describe() + "'");
        }
        if (tok.kind != Token::Kind::StatementClose) {
          throw_parser_error("expected statement close, got '" + tok.describe() + "'");
        }
      } break;
      case Token::Kind::LineStatementOpen: {
        get_next_token();
        if (!parse_statement(tmpl, Token::Kind::LineStatementClose, path)) {
          throw_parser_error("expected statement, got '" + tok.describe() + "'");
        }
        if (tok.kind != Token::Kind::LineStatementClose && tok.kind != Token::Kind::Eof) {
          throw_parser_error("expected line statement close, got '" + tok.describe() + "'");
        }
      } break;
      case Token::Kind::ExpressionOpen: {
        get_next_token();

        auto expression_list_node = std::make_shared<ExpressionListNode>(tok.text.data() - tmpl.content.c_str());
        current_block->nodes.emplace_back(expression_list_node);
        current_expression_list = expression_list_node.get();

        if (!parse_expression(tmpl, Token::Kind::ExpressionClose)) {
          throw_parser_error("expected expression, got '" + tok.describe() + "'");
        }

        if (tok.kind != Token::Kind::ExpressionClose) {
          throw_parser_error("expected expression close, got '" + tok.describe() + "'");
        }
      } break;
      case Token::Kind::CommentOpen: {
        get_next_token();
        if (tok.kind != Token::Kind::CommentClose) {
          throw_parser_error("expected comment close, got '" + tok.describe() + "'");
        }
      } break;
      default: {
        throw_parser_error("unexpected token '" + tok.describe() + "'");
      } break;
      }
    }
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rcx, 0x48(%rsp)
movq %rdx, 0x40(%rsp)
movq %rsi, %r15
movq %rdi, %r14
addq $0x8, %rdi
movq 0x28(%rsi), %rdx
movq 0x30(%rsi), %rsi
callq 0x16fa6
movq %r15, 0xa8(%r14)
leaq 0x48(%r14), %rbx
leaq 0x50(%rsp), %r12
movq %rbx, 0x70(%rsp)
movq %r14, %rdi
callq 0x16ffc
movl 0x48(%r14), %eax
cmpq $0x7, %rax
ja 0x16d50
leaq 0x2e742(%rip), %rcx     # 0x45110
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %r12, %rdx
movq 0xa8(%r14), %r13
movq 0x58(%r14), %rax
subq 0x28(%r15), %rax
addq $0x10, %r13
movq %rax, 0x20(%rsp)
movq 0x50(%r14), %rax
movq %rax, 0x50(%rsp)
movq %rsp, %rbx
movq %rbx, %rdi
leaq 0x20(%rsp), %rsi
callq 0x170ea
movq %r13, %rdi
movq %rbx, %rsi
callq 0x170a6
leaq 0x8(%rsp), %rdi
callq 0xd76e
movq 0x70(%rsp), %rbx
jmp 0x169b1
movq %r14, %rdi
callq 0x16ffc
movq %r14, %rdi
movq %r15, %rsi
pushq $0x6
popq %rdx
movq 0x40(%rsp), %rcx
movq 0x48(%rsp), %r8
callq 0x1710c
testb %al, %al
jne 0x16aa7
movq %r12, %rdi
movq %rbx, %rsi
callq 0x17e14
leaq 0x20(%rsp), %r13
movq %r13, %rdi
leaq 0x2ffc4(%rip), %rsi     # 0x46a29
movq %r12, %rdx
callq 0x17df0
movq %rsp, %rbp
movq %rbp, %rdi
movq %r13, %rsi
leaq 0x323b1(%rip), %rdx     # 0x48e2e
callq 0x1093d
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1704a
movq %rbp, %rdi
callq 0x9898
leaq 0x20(%rsp), %rdi
callq 0x9898
movq %r12, %rdi
callq 0x9898
cmpl $0x6, (%rbx)
je 0x169b1
movq %r12, %rdi
movq %rbx, %rsi
callq 0x17e14
leaq 0x20(%rsp), %r13
movq %r13, %rdi
leaq 0x2ff79(%rip), %rsi     # 0x46a43
movq %r12, %rdx
callq 0x17df0
movq %rsp, %rbp
movq %rbp, %rdi
movq %r13, %rsi
leaq 0x3234c(%rip), %rdx     # 0x48e2e
callq 0x1093d
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1704a
jmp 0x16d97
movq %r14, %rdi
callq 0x16ffc
cmpl $0x8, 0x48(%r14)
je 0x169b1
movq %r12, %rdi
movq %rbx, %rsi
callq 0x17e14
leaq 0x20(%rsp), %r13
movq %r13, %rdi
leaq 0x2ffa0(%rip), %rsi     # 0x46ac4
movq %r12, %rdx
callq 0x17df0
movq %rsp, %rbp
movq %rbp, %rdi
movq %r13, %rsi
leaq 0x322f2(%rip), %rdx     # 0x48e2e
callq 0x1093d
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1704a
jmp 0x16d97
movq %r14, %rdi
callq 0x16ffc
movq %r14, %rdi
movq %r15, %rsi
pushq $0x4
popq %rdx
movq 0x40(%rsp), %rcx
movq 0x48(%rsp), %r8
callq 0x1710c
testb %al, %al
jne 0x16bd1
movq %r12, %rdi
movq %rbx, %rsi
callq 0x17e14
leaq 0x20(%rsp), %r13
movq %r13, %rdi
leaq 0x2fe9a(%rip), %rsi     # 0x46a29
movq %r12, %rdx
callq 0x17df0
movq %rsp, %rbp
movq %rbp, %rdi
movq %r13, %rsi
leaq 0x32287(%rip), %rdx     # 0x48e2e
callq 0x1093d
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1704a
movq %rbp, %rdi
callq 0x9898
leaq 0x20(%rsp), %rdi
callq 0x9898
movq %r12, %rdi
callq 0x9898
movl (%rbx), %eax
cmpl $0x4, %eax
je 0x169b1
cmpl $0x22, %eax
je 0x169b1
movq %r12, %rdi
movq %rbx, %rsi
callq 0x17e14
leaq 0x20(%rsp), %r13
movq %r13, %rdi
leaq 0x2fe64(%rip), %rsi     # 0x46a63
movq %r12, %rdx
callq 0x17df0
movq %rsp, %rbp
movq %rbp, %rdi
movq %r13, %rsi
leaq 0x32217(%rip), %rdx     # 0x48e2e
callq 0x1093d
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1704a
jmp 0x16d97
movq %r14, %rdi
callq 0x16ffc
movq 0x58(%r14), %rax
subq 0x28(%r15), %rax
movq %rax, (%rsp)
leaq 0x78(%rsp), %r13
movq %r13, %rdi
movq %rsp, %rsi
callq 0x17e78
movq 0xa8(%r14), %rdi
addq $0x10, %rdi
movq %r13, %rsi
callq 0x17e96
movq 0x78(%rsp), %rax
movq %rax, 0xb0(%r14)
movq %r14, %rdi
movq %r15, %rsi
pushq $0x2
popq %rdx
callq 0x17ed2
testb %al, %al
jne 0x16cdd
movq %r12, %rdi
movq %rbx, %rsi
callq 0x17e14
leaq 0x20(%rsp), %r13
movq %r13, %rdi
leaq 0x2fded(%rip), %rsi     # 0x46a88
movq %r12, %rdx
callq 0x17df0
movq %rsp, %rbp
movq %rbp, %rdi
movq %r13, %rsi
leaq 0x3217b(%rip), %rdx     # 0x48e2e
callq 0x1093d
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1704a
movq %rbp, %rdi
callq 0x9898
leaq 0x20(%rsp), %rdi
callq 0x9898
movq %r12, %rdi
callq 0x9898
cmpl $0x2, (%rbx)
je 0x16d3e
movq %r12, %rdi
movq %rbx, %rsi
callq 0x17e14
leaq 0x20(%rsp), %r13
movq %r13, %rdi
leaq 0x2fda7(%rip), %rsi     # 0x46aa3
movq %r12, %rdx
callq 0x17df0
movq %rsp, %rbp
movq %rbp, %rdi
movq %r13, %rsi
leaq 0x3211a(%rip), %rdx     # 0x48e2e
callq 0x1093d
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1704a
movq %rbp, %rdi
callq 0x9898
leaq 0x20(%rsp), %rdi
callq 0x9898
movq %r12, %rdi
callq 0x9898
leaq 0x80(%rsp), %rdi
callq 0xd76e
jmp 0x169b1
cmpl $0x22, %eax
je 0x16db6
movq %r12, %rdi
movq %rbx, %rsi
callq 0x17e14
leaq 0x20(%rsp), %r13
movq %r13, %rdi
leaq 0x2fd73(%rip), %rsi     # 0x46ae2
movq %r12, %rdx
callq 0x17df0
movq %rsp, %rbp
movq %rbp, %rdi
movq %r13, %rsi
leaq 0x320a7(%rip), %rdx     # 0x48e2e
callq 0x1093d
movq %r14, %rdi
movq %rbp, %rsi
callq 0x1704a
movq %rbp, %rdi
callq 0x9898
leaq 0x20(%rsp), %rdi
callq 0x9898
movq %r12, %rdi
callq 0x9898
jmp 0x169b1
movq 0x188(%r14), %rax
cmpq 0x168(%r14), %rax
je 0x16ded
leaq 0x2fc41(%rip), %rsi     # 0x46a0e
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0xc0a4
movq %rsp, %rsi
movq %r14, %rdi
callq 0x1704a
movq %rsp, %rdi
callq 0x9898
movq 0x1d8(%r14), %rax
cmpq 0x1b8(%r14), %rax
je 0x16e24
leaq 0x2fc17(%rip), %rsi     # 0x46a1b
movq %rsp, %rdi
leaq 0x20(%rsp), %rdx
callq 0xc0a4
movq %rsp, %rsi
movq %r14, %rdi
callq 0x1704a
movq %rsp, %rdi
callq 0x9898
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x16e3a
jmp 0x16e45
movq %rax, %rbx
movq %rsp, %rdi
jmp 0x16ece
movq %rax, %rbx
jmp 0x16ee5
jmp 0x16eaa
jmp 0x16ebc
jmp 0x16eaf
jmp 0x16ebc
jmp 0x16ed5
jmp 0x16ebc
jmp 0x16eaa
jmp 0x16e5f
jmp 0x16eaf
movq %rax, %rbx
jmp 0x16e8c
jmp 0x16eaf
jmp 0x16e6c
jmp 0x16ebc
jmp 0x16eaa
movq %rax, %rbx
jmp 0x16e82
jmp 0x16e77
jmp 0x16eaf
jmp 0x16ebc
movq %rax, %rbx
movq %rsp, %rdi
callq 0x9898
leaq 0x20(%rsp), %rdi
callq 0x9898
leaq 0x50(%rsp), %rdi
callq 0x9898
jmp 0x16ed8
jmp 0x16eaa
jmp 0x16eaa
jmp 0x16eaf
jmp 0x16ed5
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
jmp 0x16ee0
movq %rax, %rbx
jmp 0x16ec9
movq %rax, %rbx
movq %rsp, %rdi
callq 0x9898
jmp 0x16ebf
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x9898
leaq 0x50(%rsp), %rdi
callq 0x9898
jmp 0x16ee5
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0xd76e
movq %rbx, %rdi
callq 0x97a0
nop