LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: BIDNode::printTree(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool) const
void BIDNode::printTree(std::string indent, bool last) const
{
	std::cout << indent;
	if (last)
	{
		std::cout << "└─";
		indent += "  ";
	}
	else
	{
		std::cout << "├─";
		indent += "│ ";
	}
	printc(deHashVec(path) + " ", RED_TEXT);
	std::cout << "BID : " << key << "\n";
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x50, %rsp
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %rbx
movq (%rsi), %rsi
movq 0x8(%r14), %rdx
movq 0x5bc50(%rip), %r15     # 0xb6f98
movq %r15, %rdi
callq 0x10490
leaq 0x2b84e(%rip), %rax     # 0x86ba5
leaq 0x2b851(%rip), %rsi     # 0x86baf
testl %ebp, %ebp
cmovneq %rax, %rsi
leaq 0x2b841(%rip), %rax     # 0x86bac
leaq 0x2b844(%rip), %r12     # 0x86bb6
cmovneq %rax, %r12
movl $0x6, %edx
movq %r15, %rdi
callq 0x10490
movq %r14, %rdi
movq %r12, %rsi
callq 0x10770
leaq 0x8(%rbx), %rsi
leaq 0x30(%rsp), %r14
movq %r14, %rdi
callq 0x599a8
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x1e014
leaq 0x2b7ea(%rip), %rsi     # 0x86bad
leaq 0x8(%rsp), %rdi
callq 0x10770
leaq 0x2c(%rsp), %rsi
movl $0x1f, (%rsi)
leaq 0x8(%rsp), %rdi
callq 0x1d275
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x5b3f9
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5b414
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x5bb7d(%rip), %r14     # 0xb6f98
leaq 0x2b7c0(%rip), %rsi     # 0x86be2
movl $0x6, %edx
movq %r14, %rdi
callq 0x10490
movq 0xa8(%rbx), %rsi
movq 0xb0(%rbx), %rdx
movq %r14, %rdi
callq 0x10490
leaq 0x2a691(%rip), %rsi     # 0x85add
movl $0x1, %edx
movq %rax, %rdi
callq 0x10490
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x5b468
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x5b487
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x5b487
movq %rax, %rbx
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5b4a2
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x103d0
movq %rbx, %rdi
callq 0x106f0
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: DefineNode::fold(std::vector<std::pair<std::vector<unsigned long long, std::allocator<unsigned long long>>, symbol_t>, std::allocator<std::pair<std::vector<unsigned long long, std::allocator<unsigned long long>>, symbol_t>>> const&) const
const ptr_node_t DefineNode::fold(const std::vector<std::pair<std::vector<hash_ull>, symbol_t>> &consts) const
{
	if (isConst())
	{
		auto i = genParser();
		object_t newScope(static_cast<hash_ull>(0));
		trace_t stack_trace;
		auto r = i->evaluate(&newScope, stack_trace);
		return std::make_shared<ContainerNode>(path, r, token);
	}

	return std::make_shared<DefineNode>(path, key, ftype, params, body->fold(consts), captures, token);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
movq (%rsi), %rax
movq %rsi, %rdi
callq *0x8(%rax)
testb %al, %al
je 0x5baa1
movq (%r14), %rax
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
callq *(%rax)
leaq 0x20(%rsp), %rsi
movq $0x0, (%rsi)
leaq 0x50(%rsp), %rdi
callq 0x3cf06
xorps %xmm0, %xmm0
leaq 0x20(%rsp), %rcx
movaps %xmm0, (%rcx)
movq $0x0, 0x10(%rcx)
movq 0x10(%rsp), %rsi
movq (%rsi), %rax
leaq 0x68(%rsp), %rdi
leaq 0x50(%rsp), %rdx
callq *(%rax)
leaq 0x8(%r14), %rcx
addq $0x28, %r14
leaq 0x48(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x40(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x68(%rsp), %r8
movq %r14, %r9
callq 0x6849a
movq 0x40(%rsp), %rax
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x48(%rsp), %rcx
movq %rax, 0x48(%rsp)
movq %rcx, 0x8(%rbx)
leaq 0x68(%rsp), %rdi
callq 0x404da
leaq 0x20(%rsp), %rdi
callq 0x1d77a
leaq 0x50(%rsp), %rdi
callq 0x3d168
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5bb45
jmp 0x5bb40
leaq 0x8(%r14), %r12
leaq 0xa8(%r14), %r13
leaq 0xb0(%r14), %rbp
leaq 0xc8(%r14), %rax
movq %rax, 0x60(%rsp)
movq 0xe0(%r14), %rsi
movq (%rsi), %rax
leaq 0x10(%rsp), %rdi
movq %r15, %rdx
callq *0x18(%rax)
leaq 0xf0(%r14), %rax
addq $0x28, %r14
leaq 0x28(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x20(%rsp), %rsi
leaq 0x50(%rsp), %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
pushq %r14
pushq %rax
leaq 0x20(%rsp), %rax
pushq %rax
pushq 0x78(%rsp)
callq 0x68c2a
addq $0x20, %rsp
movq 0x20(%rsp), %rax
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x28(%rsp), %rcx
movq %rax, 0x28(%rsp)
movq %rcx, 0x8(%rbx)
movq %rax, 0x20(%rsp)
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5bb45
callq 0x1e6ee
movq %rbx, %rax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x404da
jmp 0x5bb69
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x1d77a
leaq 0x50(%rsp), %rdi
callq 0x3d168
jmp 0x5bb91
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5bba0
jmp 0x5bb9b
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5bba0
callq 0x1e6ee
movq %rbx, %rdi
callq 0x106f0
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: VargDefineNode::fold(std::vector<std::pair<std::vector<unsigned long long, std::allocator<unsigned long long>>, symbol_t>, std::allocator<std::pair<std::vector<unsigned long long, std::allocator<unsigned long long>>, symbol_t>>> const&) const
const ptr_node_t VargDefineNode::fold(const std::vector<std::pair<std::vector<hash_ull>, symbol_t>> &consts) const
{
	if (isConst())
	{
		auto i = genParser();
		object_t newScope(static_cast<hash_ull>(0));
		trace_t stack_trace;
		auto r = i->evaluate(&newScope, stack_trace);
		return std::make_shared<ContainerNode>(path, r, token);
	}

	return std::make_shared<VargDefineNode>(path, key, body->fold(consts), captures, token);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
movq (%rsi), %rax
movq %rsi, %rdi
callq *0x8(%rax)
testb %al, %al
je 0x5c061
movq (%r14), %rax
leaq 0x10(%rsp), %rdi
movq %r14, %rsi
callq *(%rax)
leaq 0x20(%rsp), %rsi
movq $0x0, (%rsi)
leaq 0x48(%rsp), %rdi
callq 0x3cf06
xorps %xmm0, %xmm0
leaq 0x20(%rsp), %rcx
movaps %xmm0, (%rcx)
movq $0x0, 0x10(%rcx)
movq 0x10(%rsp), %rsi
movq (%rsi), %rax
leaq 0x58(%rsp), %rdi
leaq 0x48(%rsp), %rdx
callq *(%rax)
leaq 0x8(%r14), %rcx
addq $0x28, %r14
leaq 0x40(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x38(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x58(%rsp), %r8
movq %r14, %r9
callq 0x6849a
movq 0x38(%rsp), %rax
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x40(%rsp), %rcx
movq %rax, 0x40(%rsp)
movq %rcx, 0x8(%rbx)
leaq 0x58(%rsp), %rdi
callq 0x404da
leaq 0x20(%rsp), %rdi
callq 0x1d77a
leaq 0x48(%rsp), %rdi
callq 0x3d168
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5c0eb
jmp 0x5c0e6
leaq 0x8(%r14), %r12
leaq 0xa8(%r14), %r13
movq 0xb0(%r14), %rsi
movq (%rsi), %rax
leaq 0x10(%rsp), %rbp
movq %rbp, %rdi
movq %r15, %rdx
callq *0x18(%rax)
leaq 0xc0(%r14), %rax
addq $0x28, %r14
leaq 0x28(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x20(%rsp), %rsi
leaq 0x48(%rsp), %rdx
movq %r12, %rcx
movq %r13, %r8
movq %rbp, %r9
pushq %r14
pushq %rax
callq 0x68dc4
addq $0x10, %rsp
movq 0x20(%rsp), %rax
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x28(%rsp), %rcx
movq %rax, 0x28(%rsp)
movq %rcx, 0x8(%rbx)
movq %rax, 0x20(%rsp)
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5c0eb
callq 0x1e6ee
movq %rbx, %rax
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x404da
jmp 0x5c10f
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x1d77a
leaq 0x48(%rsp), %rdi
callq 0x3d168
jmp 0x5c137
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5c146
jmp 0x5c141
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5c146
callq 0x1e6ee
movq %rbx, %rdi
callq 0x106f0
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: NewNode::printTree(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool) const
void NewNode::printTree(std::string indent, bool last) const
{
	std::cout << indent;
	if (last)
	{
		std::cout << "└─";
		indent += "  ";
	}
	else
	{
		std::cout << "├─";
		indent += "│ ";
	}
	printc(deHashVec(path) + " ", RED_TEXT);
	std::cout << "NEW\n";
	object->printTree(indent, false);
	params->printTree(indent, true);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
movq (%rsi), %rsi
movq 0x8(%rbx), %rdx
movq 0x5acaf(%rip), %r15     # 0xb6f98
movq %r15, %rdi
callq 0x10490
leaq 0x2a8ad(%rip), %rax     # 0x86ba5
leaq 0x2a8b0(%rip), %rsi     # 0x86baf
testl %ebp, %ebp
cmovneq %rax, %rsi
leaq 0x2a8a0(%rip), %rax     # 0x86bac
leaq 0x2a8a3(%rip), %r12     # 0x86bb6
cmovneq %rax, %r12
movl $0x6, %edx
movq %r15, %rdi
callq 0x10490
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10770
leaq 0x8(%r14), %rsi
leaq 0x68(%rsp), %r15
movq %r15, %rdi
callq 0x599a8
leaq 0x10(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x1e014
leaq 0x2a84a(%rip), %rsi     # 0x86bad
movq %rsp, %rdi
callq 0x10770
leaq 0x24(%rsp), %rsi
movl $0x1f, (%rsi)
movq %rsp, %rdi
callq 0x1d275
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x5c394
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5c3af
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x5abe2(%rip), %rdi     # 0xb6f98
leaq 0x2a836(%rip), %rsi     # 0x86bf3
movl $0x4, %edx
callq 0x10490
movq 0xa8(%r14), %r15
leaq 0x58(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x48(%rsp), %r12
movq %r12, %rdi
callq 0x1e014
movq (%r15), %rax
movq %r15, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq *0x10(%rax)
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x5c413
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0xb8(%r14), %r14
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x28(%rsp), %rbx
movq %rbx, %rdi
callq 0x1e014
movq (%r14), %rax
movq %r14, %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq *0x10(%rax)
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x5c462
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x103d0
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x5c4d7
movq 0x38(%rsp), %rsi
jmp 0x5c4cf
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x5c4d7
movq 0x58(%rsp), %rsi
jmp 0x5c4cf
jmp 0x5c49e
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x5c4bc
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x5c4bc
movq %rax, %rbx
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5c4d7
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x103d0
movq %rbx, %rdi
callq 0x106f0
nop
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: ClassNode::fold(std::vector<std::pair<std::vector<unsigned long long, std::allocator<unsigned long long>>, symbol_t>, std::allocator<std::pair<std::vector<unsigned long long, std::allocator<unsigned long long>>, symbol_t>>> const&) const
const ptr_node_t ClassNode::fold(const std::vector<std::pair<std::vector<hash_ull>, symbol_t>> &consts) const
{
	std::vector<ptr_node_t> nbody;
	for (auto &c : body)
		nbody.push_back(c->fold(consts));

	if (extends)
		return std::make_shared<ClassNode>(path, key, type, nbody, extends->fold(consts), token);
	else
		return std::make_shared<ClassNode>(path, key, type, nbody, nullptr, token);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
movq 0xb8(%rsi), %rbp
movq 0xc0(%rsi), %rbx
cmpq %rbx, %rbp
je 0x5cdf8
leaq 0x8(%rsp), %r12
leaq 0x20(%rsp), %r13
movq (%rbp), %rsi
movq (%rsi), %rax
movq %r12, %rdi
movq %r15, %rdx
callq *0x18(%rax)
movq %r13, %rdi
movq %r12, %rsi
callq 0x3725c
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x5cdef
callq 0x1e6ee
addq $0x10, %rbp
cmpq %rbx, %rbp
jne 0x5cdc5
movq 0xd0(%r14), %rsi
testq %rsi, %rsi
je 0x5ce94
movq (%rsi), %rax
leaq 0x38(%rsp), %r12
movq %r12, %rdi
movq %r15, %rdx
callq *0x18(%rax)
leaq 0xb0(%r14), %r9
leaq 0xa8(%r14), %r8
leaq 0x8(%r14), %rcx
addq $0x28, %r14
leaq 0x10(%rsp), %rdi
movq $0x0, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x28(%rsp), %rax
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
pushq %r14
pushq %r12
pushq %rax
callq 0x692ac
addq $0x20, %rsp
movq 0x8(%rsp), %rax
movq 0x18(%rsp), %rbx
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x10(%rsp), %rcx
movq %rax, 0x10(%rsp)
movq %rcx, 0x8(%rbx)
movq %rax, 0x8(%rsp)
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x5ceff
callq 0x1e6ee
jmp 0x5ceff
leaq 0x8(%r14), %rcx
leaq 0xa8(%r14), %r8
leaq 0xb0(%r14), %r9
xorl %eax, %eax
leaq 0x38(%rsp), %r10
movq %rax, (%r10)
addq $0x28, %r14
leaq 0x10(%rsp), %rdi
movq %rax, -0x8(%rdi)
subq $0x8, %rsp
leaq 0x28(%rsp), %rax
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
pushq %r14
pushq %r10
pushq %rax
callq 0x69352
addq $0x20, %rsp
movq 0x8(%rsp), %rax
movq 0x18(%rsp), %rbx
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x10(%rsp), %rcx
movq %rax, 0x10(%rsp)
movq %rcx, 0x8(%rbx)
leaq 0x20(%rsp), %rdi
callq 0x37214
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x5cf2e
movq %rax, %rbx
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x5cf45
jmp 0x5cf40
jmp 0x5cf2e
movq %rax, %rbx
jmp 0x5cf45
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x5cf45
callq 0x1e6ee
leaq 0x20(%rsp), %rdi
callq 0x37214
movq %rbx, %rdi
callq 0x106f0
nop
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: VarNode::printTree(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool) const
void VarNode::printTree(std::string indent, bool last) const
{
	std::cout << indent;
	if (last)
	{
		std::cout << "└─";
		indent += "  ";
	}
	else
	{
		std::cout << "├─";
		indent += "│ ";
	}
	printc(deHashVec(path) + " ", RED_TEXT);
	std::cout << "VAR : " << keys.size() << "\n";
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x50, %rsp
movl %edx, %ebp
movq %rsi, %r14
movq %rdi, %rbx
movq (%rsi), %rsi
movq 0x8(%r14), %rdx
movq 0x59f70(%rip), %r15     # 0xb6f98
movq %r15, %rdi
callq 0x10490
leaq 0x29b6e(%rip), %rax     # 0x86ba5
leaq 0x29b71(%rip), %rsi     # 0x86baf
testl %ebp, %ebp
cmovneq %rax, %rsi
leaq 0x29b61(%rip), %rax     # 0x86bac
leaq 0x29b64(%rip), %r12     # 0x86bb6
cmovneq %rax, %r12
movl $0x6, %edx
movq %r15, %rdi
callq 0x10490
movq %r14, %rdi
movq %r12, %rsi
callq 0x10770
leaq 0x8(%rbx), %rsi
leaq 0x30(%rsp), %r14
movq %r14, %rdi
callq 0x599a8
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x1e014
leaq 0x29b0a(%rip), %rsi     # 0x86bad
leaq 0x8(%rsp), %rdi
callq 0x10770
leaq 0x2c(%rsp), %rsi
movl $0x1f, (%rsi)
leaq 0x8(%rsp), %rdi
callq 0x1d275
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x5d0d9
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5d0f4
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x59e9d(%rip), %r14     # 0xb6f98
leaq 0x29b13(%rip), %rsi     # 0x86c15
movl $0x6, %edx
movq %r14, %rdi
callq 0x10490
movq 0xb0(%rbx), %rsi
subq 0xa8(%rbx), %rsi
sarq $0x3, %rsi
movq %r14, %rdi
callq 0x10290
leaq 0x289ad(%rip), %rsi     # 0x85add
movl $0x1, %edx
movq %rax, %rdi
callq 0x10490
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x5d14c
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x5d16b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x5d16b
movq %rax, %rbx
leaq 0x40(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5d186
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x103d0
movq %rbx, %rdi
callq 0x106f0
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: CallNode::genParser() const
ptr_instruction_t CallNode::genParser() const
{
	auto fcallee = callee->genParser();
	std::vector<ptr_instruction_t> fargs;
	for (auto &c : args)
		fargs.push_back(c->genParser());
	if (fcallee->getType() == INNER)
	{
		return std::make_shared<CallWithInnerI>(fcallee, std::make_shared<SequenceI>(fargs, token), token);
	}
	return std::make_shared<CallI>(fcallee, std::make_shared<SequenceI>(fargs, token), token);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq 0xa8(%rsi), %rsi
movq (%rsi), %rax
leaq 0x30(%rsp), %rdi
callq *(%rax)
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
movq 0xb8(%r14), %r13
movq 0xc0(%r14), %rbp
cmpq %rbp, %r13
je 0x5d30c
leaq 0x10(%rsp), %r15
leaq 0x40(%rsp), %r12
movq (%r13), %rsi
movq (%rsi), %rax
movq %r15, %rdi
callq *(%rax)
movq %r12, %rdi
movq %r15, %rsi
callq 0x68108
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5d303
callq 0x1e6ee
addq $0x10, %r13
cmpq %rbp, %r13
jne 0x5d2dd
movq 0x30(%rsp), %rdi
callq 0x6ebd2
addq $0x28, %r14
leaq 0x28(%rsp), %rdi
cmpl $0x5, %eax
jne 0x5d36e
movq $0x0, -0x8(%rdi)
leaq 0x20(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x40(%rsp), %rcx
movq %r14, %r8
callq 0x683b6
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x30(%rsp), %rcx
leaq 0x20(%rsp), %r8
movq %r14, %r9
callq 0x695ca
jmp 0x5d3b6
movq $0x0, -0x8(%rdi)
leaq 0x20(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x40(%rsp), %rcx
movq %r14, %r8
callq 0x683b6
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x30(%rsp), %rcx
leaq 0x20(%rsp), %r8
movq %r14, %r9
callq 0x69728
movq 0x10(%rsp), %rax
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x18(%rsp), %rcx
movq %rax, 0x18(%rsp)
movq %rcx, 0x8(%rbx)
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x5d3e6
callq 0x1e6ee
leaq 0x40(%rsp), %rdi
callq 0x677d6
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x5d3ff
callq 0x1e6ee
movq %rbx, %rax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x5d413
movq %rax, %rbx
movq 0x28(%rsp), %rdi
jmp 0x5d430
jmp 0x5d423
jmp 0x5d423
jmp 0x5d423
movq %rax, %rbx
jmp 0x5d43a
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5d43a
callq 0x1e6ee
leaq 0x40(%rsp), %rdi
callq 0x677d6
movq 0x38(%rsp), %rdi
testq %rdi, %rdi
je 0x5d453
callq 0x1e6ee
movq %rbx, %rdi
callq 0x106f0
nop
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: CallNode::fold(std::vector<std::pair<std::vector<unsigned long long, std::allocator<unsigned long long>>, symbol_t>, std::allocator<std::pair<std::vector<unsigned long long, std::allocator<unsigned long long>>, symbol_t>>> const&) const
const ptr_node_t CallNode::fold(const std::vector<std::pair<std::vector<hash_ull>, symbol_t>> &consts) const
{
	std::vector<ptr_node_t> nargs;
	for (auto &c : args)
		nargs.push_back(c->fold(consts));

	return std::make_shared<CallNode>(path, callee->fold(consts), nargs, token);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, 0x40(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
movq 0xb8(%rsi), %rbp
movq 0xc0(%rsi), %rbx
cmpq %rbx, %rbp
je 0x5d7c8
leaq 0x10(%rsp), %r12
leaq 0x20(%rsp), %r13
movq (%rbp), %rsi
movq (%rsi), %rax
movq %r12, %rdi
movq %r15, %rdx
callq *0x18(%rax)
movq %r13, %rdi
movq %r12, %rsi
callq 0x3725c
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5d7bf
callq 0x1e6ee
addq $0x10, %rbp
cmpq %rbx, %rbp
jne 0x5d795
movq 0xa8(%r14), %rsi
movq (%rsi), %rax
leaq 0x48(%rsp), %rdi
movq %r15, %rdx
callq *0x18(%rax)
leaq 0x8(%r14), %rcx
addq $0x28, %r14
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
movq %r14, (%rsp)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x48(%rsp), %r8
leaq 0x20(%rsp), %r9
callq 0x69886
movq 0x10(%rsp), %rax
movq 0x40(%rsp), %rbx
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x18(%rsp), %rcx
movq %rax, 0x18(%rsp)
movq %rcx, 0x8(%rbx)
movq %rax, 0x10(%rsp)
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x5d844
callq 0x1e6ee
leaq 0x20(%rsp), %rdi
callq 0x37214
movq %rbx, %rax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x50(%rsp), %rdi
jmp 0x5d879
jmp 0x5d86c
movq %rax, %rbx
jmp 0x5d883
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5d883
callq 0x1e6ee
leaq 0x20(%rsp), %rdi
callq 0x37214
movq %rbx, %rdi
callq 0x106f0
nop
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: ExternCallNode::genParser() const
ptr_instruction_t ExternCallNode::genParser() const
{
	std::vector<ptr_instruction_t> fargs;
	for (auto &c : args)
		fargs.push_back(c->genParser());
	return std::make_shared<ExternI>(libname, fname, std::make_shared<SequenceI>(fargs, token), token);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r14
movq %rdi, %rbx
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
movq 0xe8(%rsi), %r13
movq 0xf0(%rsi), %rbp
cmpq %rbp, %r13
je 0x5da03
leaq 0x10(%rsp), %r15
leaq 0x30(%rsp), %r12
movq (%r13), %rsi
movq (%rsi), %rax
movq %r15, %rdi
callq *(%rax)
movq %r12, %rdi
movq %r15, %rsi
callq 0x68108
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5d9fa
callq 0x1e6ee
addq $0x10, %r13
cmpq %rbp, %r13
jne 0x5d9d4
leaq 0x28(%r14), %r15
leaq 0x28(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x20(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x30(%rsp), %rcx
movq %r15, %r8
callq 0x683b6
leaq 0xc8(%r14), %r8
addq $0xa8, %r14
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
movq %r15, (%rsp)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x20(%rsp), %r9
movq %r14, %rcx
callq 0x69918
movq 0x10(%rsp), %rax
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x18(%rsp), %rcx
movq %rax, 0x18(%rsp)
movq %rcx, 0x8(%rbx)
movq %rax, 0x10(%rsp)
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x5da91
callq 0x1e6ee
leaq 0x30(%rsp), %rdi
callq 0x677d6
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x28(%rsp), %rdi
jmp 0x5dac6
jmp 0x5dab9
movq %rax, %rbx
jmp 0x5dad0
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5dad0
callq 0x1e6ee
leaq 0x30(%rsp), %rdi
callq 0x677d6
movq %rbx, %rdi
callq 0x106f0
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: ExternCallNode::fold(std::vector<std::pair<std::vector<unsigned long long, std::allocator<unsigned long long>>, symbol_t>, std::allocator<std::pair<std::vector<unsigned long long, std::allocator<unsigned long long>>, symbol_t>>> const&) const
const ptr_node_t ExternCallNode::fold(const std::vector<std::pair<std::vector<hash_ull>, symbol_t>> &consts) const
{
	std::vector<ptr_node_t> nargs;
	for (auto &c : args)
		nargs.push_back(c->fold(consts));

	return std::make_shared<ExternCallNode>(path, libname, fname, nargs, token);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r14
movq %rdi, 0x40(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
movq 0xe8(%rsi), %rbp
movq 0xf0(%rsi), %rbx
cmpq %rbx, %rbp
je 0x5ddd8
movq %rdx, %r15
leaq 0x10(%rsp), %r12
leaq 0x20(%rsp), %r13
movq (%rbp), %rsi
movq (%rsi), %rax
movq %r12, %rdi
movq %r15, %rdx
callq *0x18(%rax)
movq %r13, %rdi
movq %r12, %rsi
callq 0x3725c
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5ddcf
callq 0x1e6ee
addq $0x10, %rbp
cmpq %rbx, %rbp
jne 0x5dda5
leaq 0x8(%r14), %rcx
leaq 0xa8(%r14), %r8
leaq 0xc8(%r14), %r9
addq $0x28, %r14
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x20(%rsp), %rax
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
pushq %r14
pushq %rax
callq 0x69a7c
addq $0x10, %rsp
movq 0x10(%rsp), %rax
movq 0x40(%rsp), %rbx
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x18(%rsp), %rcx
movq %rax, 0x18(%rsp)
movq %rcx, 0x8(%rbx)
leaq 0x20(%rsp), %rdi
callq 0x37214
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x5de55
movq %rax, %rbx
jmp 0x5de6c
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x5de6c
callq 0x1e6ee
leaq 0x20(%rsp), %rdi
callq 0x37214
movq %rbx, %rdi
callq 0x106f0
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: ReturnNode::printTree(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool) const
void ReturnNode::printTree(std::string indent, bool last) const
{
	std::cout << indent;
	if (last)
	{
		std::cout << "└─";
		indent += "  ";
	}
	else
	{
		std::cout << "├─";
		indent += "│ ";
	}
	printc(deHashVec(path) + " ", RED_TEXT);
	std::cout << "RETURN\n";
	a->printTree(indent, true);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x70, %rsp
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
movq (%rsi), %rsi
movq 0x8(%rbx), %rdx
movq 0x580ee(%rip), %r15     # 0xb6f98
movq %r15, %rdi
callq 0x10490
leaq 0x27cec(%rip), %rax     # 0x86ba5
leaq 0x27cef(%rip), %rsi     # 0x86baf
testl %ebp, %ebp
cmovneq %rax, %rsi
leaq 0x27cdf(%rip), %rax     # 0x86bac
leaq 0x27ce2(%rip), %r12     # 0x86bb6
cmovneq %rax, %r12
movl $0x6, %edx
movq %r15, %rdi
callq 0x10490
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10770
leaq 0x8(%r14), %rsi
leaq 0x50(%rsp), %r15
movq %r15, %rdi
callq 0x599a8
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x1e014
leaq 0x27c87(%rip), %rsi     # 0x86bad
leaq 0x8(%rsp), %rdi
callq 0x10770
leaq 0x2c(%rsp), %rsi
movl $0x1f, (%rsi)
leaq 0x8(%rsp), %rdi
callq 0x1d275
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x5ef5c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5ef77
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x5801a(%rip), %rdi     # 0xb6f98
leaq 0x27d0c(%rip), %rsi     # 0x86c91
movl $0x7, %edx
callq 0x10490
movq 0xa8(%r14), %r14
leaq 0x40(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
callq 0x1e014
movq (%r14), %rax
movq %r14, %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq *0x10(%rax)
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5efde
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x103d0
addq $0x70, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5f03b
movq 0x40(%rsp), %rsi
jmp 0x5f033
jmp 0x5f001
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x5f020
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x5f020
movq %rax, %rbx
leaq 0x60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5f03b
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x103d0
movq %rbx, %rdi
callq 0x106f0
nop
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: ReferNode::printTree(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool) const
void ReferNode::printTree(std::string indent, bool last) const
{
	std::cout << indent;
	if (last)
	{
		std::cout << "└─";
		indent += "  ";
	}
	else
	{
		std::cout << "├─";
		indent += "│ ";
	}
	printc(deHashVec(path) + " ", RED_TEXT);
	std::cout << "REFER\n";
	a->printTree(indent, true);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x70, %rsp
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
movq (%rsi), %rsi
movq 0x8(%rbx), %rdx
movq 0x57d82(%rip), %r15     # 0xb6f98
movq %r15, %rdi
callq 0x10490
leaq 0x27980(%rip), %rax     # 0x86ba5
leaq 0x27983(%rip), %rsi     # 0x86baf
testl %ebp, %ebp
cmovneq %rax, %rsi
leaq 0x27973(%rip), %rax     # 0x86bac
leaq 0x27976(%rip), %r12     # 0x86bb6
cmovneq %rax, %r12
movl $0x6, %edx
movq %r15, %rdi
callq 0x10490
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10770
leaq 0x8(%r14), %rsi
leaq 0x50(%rsp), %r15
movq %r15, %rdi
callq 0x599a8
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x1e014
leaq 0x2791b(%rip), %rsi     # 0x86bad
leaq 0x8(%rsp), %rdi
callq 0x10770
leaq 0x2c(%rsp), %rsi
movl $0x1f, (%rsi)
leaq 0x8(%rsp), %rdi
callq 0x1d275
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x5f2c8
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5f2e3
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x57cae(%rip), %rdi     # 0xb6f98
leaq 0x279a8(%rip), %rsi     # 0x86c99
movl $0x6, %edx
callq 0x10490
movq 0xa8(%r14), %r14
leaq 0x40(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
callq 0x1e014
movq (%r14), %rax
movq %r14, %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq *0x10(%rax)
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5f34a
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x103d0
addq $0x70, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5f3a7
movq 0x40(%rsp), %rsi
jmp 0x5f39f
jmp 0x5f36d
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x5f38c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x5f38c
movq %rax, %rbx
leaq 0x60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x5f3a7
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x103d0
movq %rbx, %rdi
callq 0x106f0
nop
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: BinOpNode::isConst() const
bool BinOpNode::isConst() const
{
	if (a->isConst() && b->isConst())
	{
		try
		{
			object_t newScope(static_cast<hash_ull>(0));
			trace_t stack_trace;
			genParser()->evaluate(&newScope, stack_trace);
			return true;
		}
		catch (const rossa_error_t &e)
		{
			return false;
		}
	}
	return false;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rdi, %rbx
movq 0xc8(%rdi), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
testb %al, %al
je 0x607db
movq 0xd8(%rbx), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
testb %al, %al
je 0x607db
movq %rsp, %rsi
movq $0x0, (%rsi)
leaq 0x28(%rsp), %rdi
callq 0x3cf06
xorps %xmm0, %xmm0
movaps %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
movq (%rbx), %rax
leaq 0x18(%rsp), %rdi
movq %rbx, %rsi
callq *(%rax)
movq 0x18(%rsp), %rsi
movq (%rsi), %rax
leaq 0x38(%rsp), %rdi
leaq 0x28(%rsp), %rdx
movq %rsp, %rcx
callq *(%rax)
leaq 0x38(%rsp), %rdi
callq 0x404da
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x6077b
callq 0x1e6ee
movq %rsp, %rdi
callq 0x1d77a
leaq 0x28(%rsp), %rdi
callq 0x3d168
movb $0x1, %al
jmp 0x607dd
movq %rdx, %r14
movq %rax, %rbx
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0x607ae
callq 0x1e6ee
jmp 0x607ae
movq %rdx, %r14
movq %rax, %rbx
movq %rsp, %rdi
callq 0x1d77a
leaq 0x28(%rsp), %rdi
callq 0x3d168
jmp 0x607c8
movq %rdx, %r14
movq %rax, %rbx
movq %rbx, %rdi
cmpl $0x1, %r14d
jne 0x607e5
callq 0x101a0
callq 0x10690
xorl %eax, %eax
addq $0x48, %rsp
popq %rbx
popq %r14
retq
callq 0x106f0
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: UnOpNode::printTree(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool) const
void UnOpNode::printTree(std::string indent, bool last) const
{
	std::cout << indent;
	if (last)
	{
		std::cout << "└─";
		indent += "  ";
	}
	else
	{
		std::cout << "├─";
		indent += "│ ";
	}
	printc(deHashVec(path) + " ", RED_TEXT);
	std::cout << "UNOP : " << op << "\n";
	a->printTree(indent, true);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x70, %rsp
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
movq (%rsi), %rsi
movq 0x8(%rbx), %rdx
movq 0x54eb4(%rip), %r15     # 0xb6f98
movq %r15, %rdi
callq 0x10490
leaq 0x24ab2(%rip), %rax     # 0x86ba5
leaq 0x24ab5(%rip), %rsi     # 0x86baf
testl %ebp, %ebp
cmovneq %rax, %rsi
leaq 0x24aa5(%rip), %rax     # 0x86bac
leaq 0x24aa8(%rip), %r12     # 0x86bb6
cmovneq %rax, %r12
movl $0x6, %edx
movq %r15, %rdi
callq 0x10490
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10770
leaq 0x8(%r14), %rsi
leaq 0x50(%rsp), %r15
movq %r15, %rdi
callq 0x599a8
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x1e014
leaq 0x24a4d(%rip), %rsi     # 0x86bad
leaq 0x8(%rsp), %rdi
callq 0x10770
leaq 0x2c(%rsp), %rsi
movl $0x1f, (%rsi)
leaq 0x8(%rsp), %rdi
callq 0x1d275
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x62196
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x621b1
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x54de0(%rip), %r15     # 0xb6f98
leaq 0x24b75(%rip), %rsi     # 0x86d34
movl $0x7, %edx
movq %r15, %rdi
callq 0x10490
movq 0xa8(%r14), %rsi
movq 0xb0(%r14), %rdx
movq %r15, %rdi
callq 0x10490
leaq 0x238f4(%rip), %rsi     # 0x85add
movl $0x1, %edx
movq %rax, %rdi
callq 0x10490
movq 0xc8(%r14), %r14
leaq 0x40(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
callq 0x1e014
movq (%r14), %rax
movq %r14, %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq *0x10(%rax)
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x62245
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x103d0
addq $0x70, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x622a2
movq 0x40(%rsp), %rsi
jmp 0x6229a
jmp 0x62268
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x62287
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x62287
movq %rax, %rbx
leaq 0x60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x622a2
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x103d0
movq %rbx, %rdi
callq 0x106f0
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: UnOpNode::fold(std::vector<std::pair<std::vector<unsigned long long, std::allocator<unsigned long long>>, symbol_t>, std::allocator<std::pair<std::vector<unsigned long long, std::allocator<unsigned long long>>, symbol_t>>> const&) const
const ptr_node_t UnOpNode::fold(const std::vector<std::pair<std::vector<hash_ull>, symbol_t>> &consts) const
{
	auto na = a->fold(consts);
	auto ru = std::make_shared<UnOpNode>(path, op, na, token);
	if (na->isConst())
	{
		object_t newScope(static_cast<hash_ull>(0));
		trace_t stack_trace;
		auto r = ru->genParser()->evaluate(&newScope, stack_trace);
		return std::make_shared<ContainerNode>(path, r, token);
	}

	return ru;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movq 0xc8(%rsi), %rsi
movq (%rsi), %rax
leaq 0x68(%rsp), %r12
movq %r12, %rdi
callq *0x18(%rax)
leaq 0x8(%r14), %r15
leaq 0xa8(%r14), %r8
addq $0x28, %r14
leaq 0x28(%rsp), %rdi
movq $0x0, -0x8(%rdi)
movq %r14, (%rsp)
leaq 0x20(%rsp), %rsi
leaq 0x30(%rsp), %rdx
movq %r15, %rcx
movq %r12, %r9
callq 0x6c906
movq 0x68(%rsp), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
testb %al, %al
je 0x623d9
leaq 0x30(%rsp), %rsi
movq $0x0, (%rsi)
leaq 0x58(%rsp), %rdi
callq 0x3cf06
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
movq 0x20(%rsp), %rsi
movq (%rsi), %rax
leaq 0x10(%rsp), %rdi
callq *(%rax)
movq 0x10(%rsp), %rsi
movq (%rsi), %rax
leaq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rdx
leaq 0x30(%rsp), %rcx
callq *(%rax)
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x62376
callq 0x1e6ee
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x48(%rsp), %r8
movq %r15, %rcx
movq %r14, %r9
callq 0x6849a
movq 0x10(%rsp), %rax
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x18(%rsp), %rcx
movq %rax, 0x18(%rsp)
movq %rcx, 0x8(%rbx)
leaq 0x48(%rsp), %rdi
callq 0x404da
leaq 0x30(%rsp), %rdi
callq 0x1d77a
leaq 0x58(%rsp), %rdi
callq 0x3d168
jmp 0x623fa
movq 0x20(%rsp), %rax
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x28(%rsp), %rcx
movq %rax, 0x28(%rsp)
movq %rcx, 0x8(%rbx)
movq %rax, 0x20(%rsp)
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x62409
callq 0x1e6ee
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x62418
callq 0x1e6ee
movq %rbx, %rax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x404da
jmp 0x6244d
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x6244d
callq 0x1e6ee
jmp 0x6244d
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x1d77a
leaq 0x58(%rsp), %rdi
callq 0x3d168
jmp 0x62468
jmp 0x62465
movq %rax, %rbx
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x6247c
callq 0x1e6ee
jmp 0x6247c
movq %rax, %rbx
movq 0x70(%rsp), %rdi
testq %rdi, %rdi
je 0x6248b
callq 0x1e6ee
movq %rbx, %rdi
callq 0x106f0
nop
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: ParenNode::printTree(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool) const
void ParenNode::printTree(std::string indent, bool last) const
{
	std::cout << indent;
	if (last)
	{
		std::cout << "└─";
		indent += "  ";
	}
	else
	{
		std::cout << "├─";
		indent += "│ ";
	}
	printc(deHashVec(path) + " ", RED_TEXT);
	std::cout << "PAREN\n";
	a->printTree(indent, true);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x70, %rsp
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
movq (%rsi), %rsi
movq 0x8(%rbx), %rdx
movq 0x54a5e(%rip), %r15     # 0xb6f98
movq %r15, %rdi
callq 0x10490
leaq 0x2465c(%rip), %rax     # 0x86ba5
leaq 0x2465f(%rip), %rsi     # 0x86baf
testl %ebp, %ebp
cmovneq %rax, %rsi
leaq 0x2464f(%rip), %rax     # 0x86bac
leaq 0x24652(%rip), %r12     # 0x86bb6
cmovneq %rax, %r12
movl $0x6, %edx
movq %r15, %rdi
callq 0x10490
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10770
leaq 0x8(%r14), %rsi
leaq 0x50(%rsp), %r15
movq %r15, %rdi
callq 0x599a8
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x1e014
leaq 0x245f7(%rip), %rsi     # 0x86bad
leaq 0x8(%rsp), %rdi
callq 0x10770
leaq 0x2c(%rsp), %rsi
movl $0x1f, (%rsi)
leaq 0x8(%rsp), %rdi
callq 0x1d275
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x625ec
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x62607
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x5498a(%rip), %rdi     # 0xb6f98
leaq 0x24727(%rip), %rsi     # 0x86d3c
movl $0x6, %edx
callq 0x10490
movq 0xa8(%r14), %r14
leaq 0x40(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x30(%rsp), %rbx
movq %rbx, %rdi
callq 0x1e014
movq (%r14), %rax
movq %r14, %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq *0x10(%rax)
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x6266e
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x103d0
addq $0x70, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x626cb
movq 0x40(%rsp), %rsi
jmp 0x626c3
jmp 0x62691
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x626b0
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x626b0
movq %rax, %rbx
leaq 0x60(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x626cb
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x103d0
movq %rbx, %rdi
callq 0x106f0
nop
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: InsNode::printTree(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool) const
void InsNode::printTree(std::string indent, bool last) const
{
	std::cout << indent;
	if (last)
	{
		std::cout << "└─";
		indent += "  ";
	}
	else
	{
		std::cout << "├─";
		indent += "│ ";
	}
	printc(deHashVec(path) + " ", RED_TEXT);
	std::cout << "INS\n";
	callee->printTree(indent, false);
	arg->printTree(indent, true);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
movq (%rsi), %rsi
movq 0x8(%rbx), %rdx
movq 0x5468b(%rip), %r15     # 0xb6f98
movq %r15, %rdi
callq 0x10490
leaq 0x24289(%rip), %rax     # 0x86ba5
leaq 0x2428c(%rip), %rsi     # 0x86baf
testl %ebp, %ebp
cmovneq %rax, %rsi
leaq 0x2427c(%rip), %rax     # 0x86bac
leaq 0x2427f(%rip), %r12     # 0x86bb6
cmovneq %rax, %r12
movl $0x6, %edx
movq %r15, %rdi
callq 0x10490
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10770
leaq 0x8(%r14), %rsi
leaq 0x68(%rsp), %r15
movq %r15, %rdi
callq 0x599a8
leaq 0x10(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x1e014
leaq 0x24226(%rip), %rsi     # 0x86bad
movq %rsp, %rdi
callq 0x10770
leaq 0x24(%rsp), %rsi
movl $0x1f, (%rsi)
movq %rsp, %rdi
callq 0x1d275
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x629b8
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x103d0
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x629d3
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0x545be(%rip), %rdi     # 0xb6f98
leaq 0x24362(%rip), %rsi     # 0x86d43
movl $0x4, %edx
callq 0x10490
movq 0xa8(%r14), %r15
leaq 0x58(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x48(%rsp), %r12
movq %r12, %rdi
callq 0x1e014
movq (%r15), %rax
movq %r15, %rdi
movq %r12, %rsi
xorl %edx, %edx
callq *0x10(%rax)
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x62a37
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x103d0
movq 0xb8(%r14), %r14
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x28(%rsp), %rbx
movq %rbx, %rdi
callq 0x1e014
movq (%r14), %rax
movq %r14, %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq *0x10(%rax)
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x62a86
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x103d0
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x62afb
movq 0x38(%rsp), %rsi
jmp 0x62af3
movq %rax, %rbx
movq 0x48(%rsp), %rdi
cmpq %r13, %rdi
je 0x62afb
movq 0x58(%rsp), %rsi
jmp 0x62af3
jmp 0x62ac2
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r12, %rdi
je 0x62ae0
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x103d0
jmp 0x62ae0
movq %rax, %rbx
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x62afb
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x103d0
movq %rbx, %rdi
callq 0x106f0
nop
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: IfElseNode::isConst() const
bool IfElseNode::isConst() const
{
	if (!ifs->isConst())
	{
		return false;
	}
	if (!body->isConst())
	{
		return false;
	}
	if (elses != nullptr && !elses->isConst())
	{
		return false;
	}
	return true;
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq 0xa8(%rdi), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
testb %al, %al
je 0x635dc
movq 0xb8(%rbx), %rdi
movq (%rdi), %rax
callq *0x8(%rax)
testb %al, %al
je 0x635dc
movq 0xc8(%rbx), %rdi
testq %rdi, %rdi
je 0x635d8
movq (%rdi), %rax
callq *0x8(%rax)
testb %al, %al
je 0x635dc
movb $0x1, %al
jmp 0x635de
xorl %eax, %eax
popq %rbx
retq
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: WhileNode::genParser() const
ptr_instruction_t WhileNode::genParser() const
{
	std::vector<ptr_instruction_t> is;
	for (auto &e : this->body)
	{
		is.push_back(e->genParser());
	}

	return std::make_shared<WhileI>(whiles->genParser(), is, token);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r14
movq %rdi, %rbx
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
movq 0xb8(%rsi), %r13
movq 0xc0(%rsi), %rbp
cmpq %rbp, %r13
je 0x63c5b
leaq 0x10(%rsp), %r15
leaq 0x20(%rsp), %r12
movq (%r13), %rsi
movq (%rsi), %rax
movq %r15, %rdi
callq *(%rax)
movq %r12, %rdi
movq %r15, %rsi
callq 0x68108
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x63c52
callq 0x1e6ee
addq $0x10, %r13
cmpq %rbp, %r13
jne 0x63c2c
movq 0xa8(%r14), %rsi
movq (%rsi), %rax
leaq 0x38(%rsp), %rdi
callq *(%rax)
addq $0x28, %r14
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x38(%rsp), %rcx
leaq 0x20(%rsp), %r8
movq %r14, %r9
callq 0x6cd90
movq 0x10(%rsp), %rax
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x18(%rsp), %rcx
movq %rax, 0x18(%rsp)
movq %rcx, 0x8(%rbx)
movq %rax, 0x10(%rsp)
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0x63cc9
callq 0x1e6ee
leaq 0x20(%rsp), %rdi
callq 0x677d6
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x40(%rsp), %rdi
jmp 0x63cfe
jmp 0x63cf1
movq %rax, %rbx
jmp 0x63d08
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x63d08
callq 0x1e6ee
leaq 0x20(%rsp), %rdi
callq 0x677d6
movq %rbx, %rdi
callq 0x106f0
// File: /workspace/github_cpp_makefile_star2_O1/Nallantli[P]Rossa/main/rossa/node/node.cpp
// Function: WhileNode::fold(std::vector<std::pair<std::vector<unsigned long long, std::allocator<unsigned long long>>, symbol_t>, std::allocator<std::pair<std::vector<unsigned long long, std::allocator<unsigned long long>>, symbol_t>>> const&) const
const ptr_node_t WhileNode::fold(const std::vector<std::pair<std::vector<hash_ull>, symbol_t>> &consts) const
{
	std::vector<ptr_node_t> nbody;
	for (auto &c : body)
		nbody.push_back(c->fold(consts));
	return std::make_shared<WhileNode>(path, whiles->fold(consts), nbody, token);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, 0x40(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
movq 0xb8(%rsi), %rbp
movq 0xc0(%rsi), %rbx
cmpq %rbx, %rbp
je 0x6402c
leaq 0x10(%rsp), %r12
leaq 0x20(%rsp), %r13
movq (%rbp), %rsi
movq (%rsi), %rax
movq %r12, %rdi
movq %r15, %rdx
callq *0x18(%rax)
movq %r13, %rdi
movq %r12, %rsi
callq 0x3725c
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x64023
callq 0x1e6ee
addq $0x10, %rbp
cmpq %rbx, %rbp
jne 0x63ff9
movq 0xa8(%r14), %rsi
movq (%rsi), %rax
leaq 0x48(%rsp), %rdi
movq %r15, %rdx
callq *0x18(%rax)
leaq 0x8(%r14), %rcx
addq $0x28, %r14
leaq 0x18(%rsp), %rdi
movq $0x0, -0x8(%rdi)
movq %r14, (%rsp)
leaq 0x10(%rsp), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x48(%rsp), %r8
leaq 0x20(%rsp), %r9
callq 0x6ce80
movq 0x10(%rsp), %rax
movq 0x40(%rsp), %rbx
movq %rax, (%rbx)
xorl %eax, %eax
movq %rax, 0x8(%rbx)
movq 0x18(%rsp), %rcx
movq %rax, 0x18(%rsp)
movq %rcx, 0x8(%rbx)
movq %rax, 0x10(%rsp)
movq 0x50(%rsp), %rdi
testq %rdi, %rdi
je 0x640a8
callq 0x1e6ee
leaq 0x20(%rsp), %rdi
callq 0x37214
movq %rbx, %rax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x50(%rsp), %rdi
jmp 0x640dd
jmp 0x640d0
movq %rax, %rbx
jmp 0x640e7
movq %rax, %rbx
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x640e7
callq 0x1e6ee
leaq 0x20(%rsp), %rdi
callq 0x37214
movq %rbx, %rdi
callq 0x106f0
nop