// File: Falldog[P]dcinja/src/include/inja/inja.hpp
// Function: inja::Renderer::eval_expression_list[abi:cxx11](inja::ExpressionListNode const&)
const std::shared_ptr<json> eval_expression_list(const ExpressionListNode& expression_list) {
    for (auto& expression : expression_list.rpn_output) {
      expression->accept(*this);
    }

    if (json_eval_stack.empty()) {
      throw_renderer_error("empty expression", expression_list);
    } else if (json_eval_stack.size() != 1) {
      throw_renderer_error("malformed expression", expression_list);
    }

    auto result = json_eval_stack.top();
    json_eval_stack.pop();

    if (!result) {
      if (not_found_stack.empty()) {
        throw_renderer_error("expression could not be evaluated", expression_list);
      }

      auto node = not_found_stack.top();
      not_found_stack.pop();

      throw_renderer_error("variable '" + static_cast<std::string>(node->name) + "' not found", *node);
    }
    return std::make_shared<json>(*result);
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x170, %rsp            # imm = 0x170
movq %rdi, -0x148(%rbp)
movq %rdi, %rax
movq %rax, -0x140(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x138(%rbp)
movq -0x18(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x7fcc0
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rdi
callq 0x7fcf0
movq %rax, -0x30(%rbp)
leaq -0x28(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x7fd20
testb $0x1, %al
jne 0x7f6cc
jmp 0x7f6fc
leaq -0x28(%rbp), %rdi
callq 0x7fd60
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rdi
callq 0x7fd80
movq -0x138(%rbp), %rsi
movq %rax, %rdi
movq (%rdi), %rax
callq *(%rax)
leaq -0x28(%rbp), %rdi
callq 0x7fda0
jmp 0x7f6b9
movq -0x138(%rbp), %rdi
addq $0x68, %rdi
callq 0x7fdc0
testb $0x1, %al
jne 0x7f715
jmp 0x7f79c
leaq -0x59(%rbp), %rdi
movq %rdi, -0x150(%rbp)
callq 0xba70
movq -0x150(%rbp), %rdx
leaq 0x47d7a(%rip), %rsi     # 0xc74ad
leaq -0x58(%rbp), %rdi
callq 0x10b90
jmp 0x7f73e
movq -0x138(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq -0x58(%rbp), %rsi
callq 0x726f0
jmp 0x7f754
leaq -0x58(%rbp), %rdi
callq 0xbb98
leaq -0x59(%rbp), %rdi
callq 0xb600
jmp 0x7f851
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x7f78e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xbb98
leaq -0x59(%rbp), %rdi
callq 0xb600
jmp 0x7fa77
movq -0x138(%rbp), %rdi
addq $0x68, %rdi
callq 0x73e70
cmpq $0x1, %rax
je 0x7f84f
leaq -0x91(%rbp), %rdi
movq %rdi, -0x158(%rbp)
callq 0xba70
movq -0x158(%rbp), %rdx
leaq 0x47ce7(%rip), %rsi     # 0xc74be
leaq -0x90(%rbp), %rdi
callq 0x10b90
jmp 0x7f7e5
movq -0x138(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq -0x90(%rbp), %rsi
callq 0x726f0
jmp 0x7f7fe
leaq -0x90(%rbp), %rdi
callq 0xbb98
leaq -0x91(%rbp), %rdi
callq 0xb600
jmp 0x7f84f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x7f83e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0x90(%rbp), %rdi
callq 0xbb98
leaq -0x91(%rbp), %rdi
callq 0xb600
jmp 0x7fa77
jmp 0x7f851
movq -0x138(%rbp), %rdi
addq $0x68, %rdi
callq 0x73e90
movq -0x138(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0xa0(%rbp)
addq $0x68, %rdi
callq 0x72800
cmpq $0x0, -0xa0(%rbp)
jne 0x7fa54
movq -0x138(%rbp), %rdi
addq $0xb8, %rdi
callq 0x72aa0
testb $0x1, %al
jne 0x7f8a5
jmp 0x7f93e
leaq -0xc1(%rbp), %rdi
movq %rdi, -0x160(%rbp)
callq 0xba70
movq -0x160(%rbp), %rdx
leaq 0x47c0d(%rip), %rsi     # 0xc74d3
leaq -0xc0(%rbp), %rdi
callq 0x10b90
jmp 0x7f8d4
movq -0x138(%rbp), %rdi
movq -0x18(%rbp), %rdx
leaq -0xc0(%rbp), %rsi
callq 0x726f0
jmp 0x7f8ed
leaq -0xc0(%rbp), %rdi
callq 0xbb98
leaq -0xc1(%rbp), %rdi
callq 0xb600
jmp 0x7f93e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x7f92d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xc0(%rbp), %rdi
callq 0xbb98
leaq -0xc1(%rbp), %rdi
callq 0xb600
jmp 0x7fa77
movq -0x138(%rbp), %rdi
addq $0xb8, %rdi
movq %rdi, -0x170(%rbp)
callq 0x72ac0
movq -0x170(%rbp), %rdi
movq (%rax), %rax
movq %rax, -0xd0(%rbp)
callq 0x72ae0
movq -0xd0(%rbp), %rsi
addq $0x10, %rsi
leaq -0x130(%rbp), %rdi
movq %rdi, -0x168(%rbp)
callq 0xb230
movq -0x168(%rbp), %rdx
leaq 0x46ce1(%rip), %rsi     # 0xc667b
leaq -0x110(%rbp), %rdi
callq 0x34d50
jmp 0x7f9a8
leaq 0x46cd7(%rip), %rdx     # 0xc6686
leaq -0xf0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0x1fa80
jmp 0x7f9c4
movq -0x138(%rbp), %rdi
movq -0xd0(%rbp), %rdx
leaq -0xf0(%rbp), %rsi
callq 0x726f0
jmp 0x7f9e0
leaq -0xf0(%rbp), %rdi
callq 0xbb98
leaq -0x110(%rbp), %rdi
callq 0xbb98
leaq -0x130(%rbp), %rdi
callq 0xbb98
jmp 0x7fa54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x7fa46
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
jmp 0x7fa3a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x68(%rbp)
movl %eax, -0x6c(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0xbb98
leaq -0x110(%rbp), %rdi
callq 0xbb98
leaq -0x130(%rbp), %rdi
callq 0xbb98
jmp 0x7fa77
movq -0x148(%rbp), %rdi
movq -0xa0(%rbp), %rsi
callq 0x7fde0
movq -0x140(%rbp), %rax
addq $0x170, %rsp            # imm = 0x170
popq %rbp
retq
movq -0x68(%rbp), %rdi
callq 0xba60