// File: /workspace/github_cpp_makefile_star2_O1/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 0x33f42
testb %al, %al
je 0x2f995
addq $0x68, %rbx
movq %r15, %rdi
movq %r12, %rsi
callq 0x34832
jmp 0x2f9b5
movq 0x28(%rbx), %rsi
movq %r15, %rdi
callq 0x33f42
testb %al, %al
je 0x2f9d1
movq 0x28(%rbx), %rsi
addq $0x68, %rbx
movq %r15, %rdi
callq 0x35190
leaq 0x50(%rsp), %rsi
movq %rax, (%rsi)
movq %rbx, %rdi
callq 0x33ca6
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq 0x20(%rbx), %rsi
movq 0x10(%r14), %rcx
movq 0x18(%r14), %rdx
leaq 0x50(%rsp), %r15
movq %r15, %rdi
xorl %r8d, %r8d
callq 0x2d4da
cmpl $0x2b, (%r15)
jne 0x2fac6
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
cmpq $0x0, 0x68(%rsp)
je 0x2fb14
leaq 0x58(%rsp), %rsi
leaq 0x30(%rsp), %rdi
leaq 0x10(%rsp), %rdx
callq *0x18(%rsi)
movq $0x0, 0x40(%rsp)
movl $0x20, %edi
callq 0x93b0
movq %rax, %r14
leaq 0xf(%rsp), %rsi
leaq 0x30(%rsp), %r15
movq %rax, %rdi
movq %r15, %rdx
callq 0x35426
leaq 0x40(%rsp), %r12
movq %r14, 0x8(%r12)
addq $0x10, %r14
movq %r14, (%r12)
movq %r15, %rdi
callq 0x2450a
leaq 0x38(%rsp), %rdi
movzbl -0x8(%rdi), %esi
callq 0x3c32c
leaq 0x50(%rbx), %rdi
movq %r12, %rsi
callq 0x33f02
addq $0x68, %rbx
movq 0x40(%rsp), %rax
leaq 0x30(%rsp), %rsi
movq %rax, (%rsi)
movq %rbx, %rdi
callq 0x33ca6
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x2faad
callq 0xf9ae
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x2faf2
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x93c0
jmp 0x2faf2
leaq 0x68(%rbx), %rdi
leaq 0x10(%rsp), %rsi
movq $0x0, (%rsi)
callq 0x33ca6
addq $0xb8, %rbx
leaq 0x10(%rsp), %rsi
movq %r14, (%rsi)
movq %rbx, %rdi
callq 0x3567e
movq 0x68(%rsp), %rax
testq %rax, %rax
je 0x2f9c5
leaq 0x58(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0x2f9c5
callq 0x9150
jmp 0x2fb1b
movq %rax, %rbx
movq 0x48(%rsp), %rdi
testq %rdi, %rdi
je 0x2fb4a
callq 0xf9ae
jmp 0x2fb4a
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xecf4
jmp 0x2fb4a
jmp 0x2fb40
movq %rax, %rbx
jmp 0x2fb61
jmp 0x2fb82
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x2fb61
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x93c0
movq 0x68(%rsp), %rax
testq %rax, %rax
je 0x2fb7a
leaq 0x58(%rsp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
movq %rbx, %rdi
callq 0x9790
movq %rax, %rdi
callq 0xe8bb