// File: /workspace/github_cpp_makefile_star2_O2/RuiDGPires[P]CrimLang/src/generator.cpp
// Function: gc_Tracker::parse_node(crl::Node*, std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char>>&)
void _gc_Tracker::parse_node(crl::Node * node, std::stringstream &stream){
	switch (node->type){
		case crl::Node::Type::CAS:
			this->declaration_cas(node);
			break;
		case crl::Node::Type::VAR_DECLARATION:
			this->declaration_var(node);
			break;
		case crl::Node::Type::FUNC_DECLARATION:
			this->declaration_func(node);
			break;
		case crl::Node::Type::INIT:
			this->init(node);
			break;
		case crl::Node::Type::PROGRAM:
			this->program(node);
			break;
		case crl::Node::Type::CALL:
			this->func_call(node, stream);
			break;
		case crl::Node::Type::EXPRESSION:
			this->expression(node, stream);
			break;
		case crl::Node::Type::TERM:
			this->term(node, stream);
			break;
		case crl::Node::Type::FACTOR:
			this->factor(node, stream);
			break;
		case crl::Node::Type::RETURN:
			this->return_(node);
			break;
		case crl::Node::Type::BREAK:
			this->break_(node);
			break;
		case crl::Node::Type::ASSIGN:
			this->assign(node);
			break;
		case crl::Node::Type::IF:
			this->if_(node);
			break;
		case crl::Node::Type::WHILE:
			this->while_(node);
			break;
		case crl::Node::Type::BLOCK:
			this->block(node);
			break;
		case crl::Node::Type::INC:
		case crl::Node::Type::DEC:
			this->unary(node);
			break;
		default:
			std::cout << node->type << std::endl;
			ASSERT(false, "Not implemented");
			break;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x28, %rsp
movl 0x8(%rsi), %eax
leal -0x1(%rax), %ecx
cmpl $0x16, %ecx
ja 0x8d64
leaq 0xc579(%rip), %r8       # 0x151e4
movslq (%r8,%rcx,4), %rcx
addq %r8, %rcx
jmpq *%rcx
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0xa300
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x4f8c
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x73e0
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x7a3c
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x6486
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x5a58
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8bda
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8b4e
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8ad4
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x747c
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0xa796
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x9402
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x82b2
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0xa580
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0x8dec
addq $0x28, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
jmp 0xa322
movq 0x1526d(%rip), %rdi     # 0x1dfd8
movl %eax, %esi
callq 0x3400
movq %rax, %rdi
callq 0x3130
pushq $0x50
popq %rdi
callq 0x3140
movq %rax, %rbx
leaq 0xc4e5(%rip), %rsi      # 0x15271
leaq -0x40(%rbp), %rdi
leaq -0x19(%rbp), %rdx
callq 0x3be4
movb $0x1, %r15b
pushq $-0x1
popq %rdx
leaq -0x40(%rbp), %rcx
movq %rbx, %rdi
movl %edx, %esi
callq 0x4e88
xorl %r15d, %r15d
leaq 0x14fd9(%rip), %rsi     # 0x1dd90
leaq -0x3e86(%rip), %rdx     # 0x4f38
movq %rbx, %rdi
callq 0x33f0
movq %rax, %r14
leaq -0x40(%rbp), %rdi
callq 0x3110
testb %r15b, %r15b
jne 0x8ddc
jmp 0x8de4
movq %rax, %r14
movq %rbx, %rdi
callq 0x31b0
movq %r14, %rdi
callq 0x3410