// File: /workspace/github_c_makefile_star2_O0/lucvoo[P]sparse-dev/ast-inspect.c
// Function: inspect_statement
void inspect_statement(AstNode *node)
{
	struct statement *stmt = node->ptr;
	node->text = g_strdup_printf("%s %s:", node->text, statement_type_name(stmt->type));
	switch (stmt->type) {
		case STMT_COMPOUND:
			ast_append_child(node, "stmts:", stmt->stmts, inspect_statement_list);
			break;
		case STMT_EXPRESSION:
			ast_append_child(node, "expression:", stmt->expression, inspect_expression);
			break;
		case STMT_IF:
			ast_append_child(node, "conditional:", stmt->if_conditional, inspect_expression);
			ast_append_child(node, "if_true:", stmt->if_true, inspect_statement);
			ast_append_child(node, "if_false:", stmt->if_false, inspect_statement);
			break;
		case STMT_ITERATOR:
			ast_append_child(node, "break:", stmt->iterator_break, inspect_symbol);
			ast_append_child(node, "continue:", stmt->iterator_continue, inspect_symbol);
			ast_append_child(node, "pre_statement:", stmt->iterator_pre_statement,
					 inspect_statement);
			ast_append_child(node, "statement:", stmt->iterator_statement,
					 inspect_statement);
			ast_append_child(node, "post_statement:", stmt->iterator_post_statement,
					 inspect_statement);
			break;

		case STMT_SWITCH:
			ast_append_child(node, "switch_expression:", stmt->switch_expression, inspect_expression);
			ast_append_child(node, "switch_statement:", stmt->switch_statement, inspect_statement);
			ast_append_child(node, "switch_break:", stmt->switch_break, inspect_symbol);
			ast_append_child(node, "switch_case:", stmt->switch_case, inspect_symbol);
			break;
		case STMT_CASE:
			ast_append_child(node, "case_expression:", stmt->case_expression, inspect_expression);
			ast_append_child(node, "case_to:", stmt->case_to, inspect_expression);
			ast_append_child(node, "case_statement:", stmt->case_statement, inspect_statement);
			ast_append_child(node, "case_label:", stmt->case_label, inspect_symbol);
			break;
		case STMT_RETURN:
			ast_append_child(node, "ret_value:", stmt->ret_value, inspect_expression);
			ast_append_child(node, "ret_target:", stmt->ret_target, inspect_symbol);
			break;

		default:
			break;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %edi
callq 0x63090
movq -0x20(%rbp), %rsi
movq %rax, %rdx
leaq 0xc9c3(%rip), %rdi      # 0x6f780
xorl %eax, %eax
callq 0x121f0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movl (%rax), %eax
addl $-0x2, %eax
movl %eax, %ecx
movq %rcx, -0x18(%rbp)
subl $0x6, %eax
ja 0x63084
movq -0x18(%rbp), %rax
leaq 0xc92a(%rip), %rcx      # 0x6f71c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0xc979(%rip), %rsi      # 0x6f787
leaq 0x33b(%rip), %rcx       # 0x63150
callq 0x630d0
jmp 0x63086
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0xc9dd(%rip), %rsi      # 0x6f80f
leaq 0x347(%rip), %rcx       # 0x63180
callq 0x630d0
jmp 0x63086
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0x8bca(%rip), %rsi      # 0x6ba20
leaq 0x323(%rip), %rcx       # 0x63180
callq 0x630d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdx
leaq 0xc919(%rip), %rsi      # 0x6f78e
leaq -0xfc(%rip), %rcx       # 0x62d80
callq 0x630d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdx
leaq 0xc903(%rip), %rsi      # 0x6f797
leaq -0x11b(%rip), %rcx      # 0x62d80
callq 0x630d0
jmp 0x63086
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0xc93e(%rip), %rsi      # 0x6f7f6
leaq 0x411(%rip), %rcx       # 0x632d0
callq 0x630d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdx
leaq 0xc8ca(%rip), %rsi      # 0x6f7a1
leaq 0x3f2(%rip), %rcx       # 0x632d0
callq 0x630d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdx
leaq 0xc8b5(%rip), %rsi      # 0x6f7ab
leaq -0x17d(%rip), %rcx      # 0x62d80
callq 0x630d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rdx
leaq 0xc89a(%rip), %rsi      # 0x6f7af
leaq -0x19c(%rip), %rcx      # 0x62d80
callq 0x630d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x40(%rax), %rdx
leaq 0xc886(%rip), %rsi      # 0x6f7ba
leaq -0x1bb(%rip), %rcx      # 0x62d80
callq 0x630d0
jmp 0x63086
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0xc872(%rip), %rsi      # 0x6f7ca
leaq 0x221(%rip), %rcx       # 0x63180
callq 0x630d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdx
leaq 0xc866(%rip), %rsi      # 0x6f7dd
leaq -0x1fe(%rip), %rcx      # 0x62d80
callq 0x630d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdx
leaq 0xc859(%rip), %rsi      # 0x6f7ef
leaq 0x333(%rip), %rcx       # 0x632d0
callq 0x630d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdx
leaq 0xc848(%rip), %rsi      # 0x6f7fd
leaq 0x314(%rip), %rcx       # 0x632d0
callq 0x630d0
jmp 0x63086
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0xc831(%rip), %rsi      # 0x6f80a
leaq 0x1a0(%rip), %rcx       # 0x63180
callq 0x630d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdx
leaq 0xc823(%rip), %rsi      # 0x6f81b
leaq 0x181(%rip), %rcx       # 0x63180
callq 0x630d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdx
leaq 0xc80d(%rip), %rsi      # 0x6f824
leaq -0x29e(%rip), %rcx      # 0x62d80
callq 0x630d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rdx
leaq 0xc7fe(%rip), %rsi      # 0x6f834
leaq 0x293(%rip), %rcx       # 0x632d0
callq 0x630d0
jmp 0x63086
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdx
leaq 0xc7e9(%rip), %rsi      # 0x6f840
leaq 0x122(%rip), %rcx       # 0x63180
callq 0x630d0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdx
leaq 0xc7d5(%rip), %rsi      # 0x6f84b
leaq 0x253(%rip), %rcx       # 0x632d0
callq 0x630d0
jmp 0x63086
jmp 0x63086
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)