// File: exrd[P]neteruhsp/neteruhsp/neteruhsp.cc
// Function: neteruhsp::dump_ast(neteruhsp::list_t*, bool)::_::dump(int, neteruhsp::ast_node_t*, bool)
static void dump( int indent, ast_node_t* node, bool is_detail )
		{
			for( int i=0; i<indent; ++i )
			{ printf( "  " ); }
			static const char* nodenames[] =
			{
				"EMPTY",
				"LABEL",
				"BLOCK_STATEMENTS",
				"COMMAND",
				"ARGUMENTS",
				"ASSIGN",
				"ADD_ASSIGN",
				"SUB_ASSIGN",
				"MUL_ASSIGN",
				"DIV_ASSIGN",
				"MOD_ASSIGN",
				"BOR_ASSIGN",
				"BAND_ASSIGN",
				"BXOR_ASSIGN",
				"VARIABLE",
				"EXPRESSION",
				"BOR",
				"BAND",
				"BXOR",
				"EQ",
				"NEQ",
				"GT",
				"GTOE",
				"LT",
				"LTOE",
				"ADD",
				"SUB",
				"MUL",
				"DIV",
				"MOD",
				"UNARY_MINUS",
				"PRIMITIVE_VALUE",
				"IDENTIFIER_EXPR",
				"END",
				"RETURN",
				"GOTO",
				"GOSUB",
				"REPEAT",
				"LOOP",
				"CONTINUE",
				"BREAK",
				"IF",
				"IF_DISPATCHER",
			};
			static_assert( sizeof(nodenames) /sizeof(*nodenames) == MAX_NODE, "nodenames size is not match with MAX_NODE" );
			assert( node->tag_>=0 && node->tag_<MAX_NODE );
			printf( "%s", nodenames[node->tag_] );
			if ( is_detail )
			{ printf( " :%p", node ); }
			if ( node->token_ )
			{ printf( "[%s]", node->token_->content_ ); }
			printf( "\n" );
			if ( node->left_ )
			{ dump( indent +1, node->left_, is_detail ); }
			if ( node->right_ )
			{ dump( indent +1, node->right_, is_detail ); }
		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movb %dl, %al
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %al
movb %al, -0x11(%rbp)
movl $0x0, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0x4(%rbp), %eax
jge 0x10a5e
leaq 0x6916(%rip), %rdi      # 0x17362
movb $0x0, %al
callq 0x3050
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x10a3d
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpl $0x0, (%rcx)
movb %al, -0x19(%rbp)
jl 0x10a79
movq -0x10(%rbp), %rax
cmpl $0x2b, (%rax)
setl %al
movb %al, -0x19(%rbp)
movb -0x19(%rbp), %al
testb $0x1, %al
jne 0x10a82
jmp 0x10a84
jmp 0x10aa3
leaq 0x69fa(%rip), %rdi      # 0x17485
leaq 0x1fbf(%rip), %rsi      # 0x12a51
movl $0x1889, %edx           # imm = 0x1889
leaq 0x6a0c(%rip), %rcx      # 0x174aa
callq 0x30f0
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, %ecx
leaq 0xb6ae(%rip), %rax      # 0x1c160
movq (%rax,%rcx,8), %rsi
leaq 0x5661(%rip), %rdi      # 0x1611e
movb $0x0, %al
callq 0x3050
testb $0x1, -0x11(%rbp)
je 0x10adc
movq -0x10(%rbp), %rsi
leaq 0x6a27(%rip), %rdi      # 0x174fc
movb $0x0, %al
callq 0x3050
movq -0x10(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x10b01
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movq 0x8(%rax), %rsi
leaq 0x6b0d(%rip), %rdi      # 0x17607
movb $0x0, %al
callq 0x3050
leaq 0x5423(%rip), %rdi      # 0x15f2b
movb $0x0, %al
callq 0x3050
movq -0x10(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x10b35
movl -0x4(%rbp), %edi
addl $0x1, %edi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
movb -0x11(%rbp), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x10a20
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x10b5b
movl -0x4(%rbp), %edi
addl $0x1, %edi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rsi
movb -0x11(%rbp), %al
andb $0x1, %al
movzbl %al, %edx
callq 0x10a20
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)