// File: /workspace/github_cpp_makefile_star2_O3/Falldog[P]dcinja/src/include/inja/inja.hpp
// Function: inja::Renderer::visit(inja::JsonNode const&)
void visit(const JsonNode& node) {
    if (json_additional_data.contains(node.ptr)) {
      json_eval_stack.push(&(json_additional_data[node.ptr]));
    
    } else if (json_input->contains(node.ptr)) {
      json_eval_stack.push(&(*json_input)[node.ptr]);
    
    } else {
      // Try to evaluate as a no-argument callback
      auto function_data = function_storage.find_function(node.name, 0);
      if (function_data.operation == FunctionStorage::Operation::Callback) {
        Arguments empty_args {};
        auto value = std::make_shared<json>(function_data.callback(empty_args));
        json_tmp_stack.push_back(value);
        json_eval_stack.push(value.get());

      } else {
        json_eval_stack.push(nullptr);
        not_found_stack.emplace(&node);
      }
    }
  }

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x38(%rdi), %r12
leaq 0x30(%rsi), %r15
movq %r15, %rdi
movq %r12, %rsi
callq 0x98d8
testb %al, %al
je 0x2f3bf
addq $0x68, %rbx
movq %r15, %rdi
movq %r12, %rsi
callq 0x343bc
leaq 0x50(%rsp), %rsi
movq %rax, (%rsi)
movq %rbx, %rdi
callq 0x33976
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq 0x28(%rbx), %rsi
movq %r15, %rdi
callq 0x98d8
testb %al, %al
je 0x2f3e1
movq 0x28(%rbx), %rsi
addq $0x68, %rbx
movq %r15, %rdi
callq 0x34d58
jmp 0x2f3a3
movq 0x20(%rbx), %rsi
movq 0x10(%r14), %rcx
movq 0x18(%r14), %rdx
leaq 0x50(%rsp), %r15
movq %r15, %rdi
xorl %r8d, %r8d
callq 0x2cf5e
cmpl $0x2b, (%r15)
jne 0x2f4be
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
cmpq $0x0, 0x68(%rsp)
je 0x2f50c
leaq 0x58(%rsp), %rsi
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq *0x18(%rsi)
leaq 0x48(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x40(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x30(%rsp), %rcx
callq 0x35016
leaq 0x30(%rsp), %rdi
callq 0x24080
leaq 0x38(%rsp), %rdi
movzbl -0x8(%rdi), %esi
callq 0x3bf6e
leaq 0x50(%rbx), %rdi
leaq 0x40(%rsp), %rsi
callq 0x33bd8
addq $0x68, %rbx
movq 0x40(%rsp), %rax
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
movq %rbx, %rdi
callq 0x33976
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x2f4a5
callq 0xfad0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x2f4ea
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x93c0
jmp 0x2f4ea
leaq 0x68(%rbx), %rdi
leaq 0x10(%rsp), %rsi
movq $0x0, (%rsi)
callq 0x33976
addq $0xb8, %rbx
leaq 0x10(%rsp), %rsi
movq %r14, (%rsi)
movq %rbx, %rdi
callq 0x35288
movq 0x68(%rsp), %rax
testq %rax, %rax
je 0x2f3b3
leaq 0x58(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x2f3b3
callq 0x9150
jmp 0x2f513
movq %rax, %rbx
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x2f542
callq 0xfad0
jmp 0x2f542
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xeebe
jmp 0x2f542
jmp 0x2f538
movq %rax, %rbx
jmp 0x2f559
jmp 0x2f57a
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x2f559
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x93c0
movq 0x68(%rsp), %rax
testq %rax, %rax
je 0x2f572
leaq 0x58(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq %rbx, %rdi
callq 0x9790
movq %rax, %rdi
callq 0xea59