// File: /workspace/github_c_makefile_star2_O1/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 %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x28(%rdi), %rsi
movq 0x38(%rdi), %r14
movl (%r14), %eax
leaq 0xcc1b(%rip), %rcx      # 0x4e9ac
movslq (%rcx,%rax,4), %rdx
addq %rcx, %rdx
leaq 0xcc89(%rip), %rdi      # 0x4ea28
xorl %eax, %eax
callq 0xf1f0
movq %rax, 0x28(%rbx)
movl (%r14), %eax
addl $-0x2, %eax
cmpl $0x6, %eax
ja 0x421ca
leaq 0xcb88(%rip), %rcx      # 0x4e948
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x10(%r14), %rcx
testq %rcx, %rcx
je 0x421ca
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xccd3(%rip), %rdx      # 0x4eab7
leaq 0x4d8(%rip), %r8        # 0x422c3
jmp 0x421ae
movq 0x10(%r14), %rcx
testq %rcx, %rcx
je 0x41e2a
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xccab(%rip), %rdx      # 0x4eab2
leaq 0x4b5(%rip), %r8        # 0x422c3
movq %rbx, %rdi
callq 0x418f3
movq %rsp, %rsi
movq %rax, (%rsi)
movq 0x40(%rbx), %rdi
movl $0x1, %edx
callq 0xf1c0
movq 0x18(%r14), %rcx
testq %rcx, %rcx
je 0x41e64
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xcc82(%rip), %rdx      # 0x4eac3
leaq 0x47b(%rip), %r8        # 0x422c3
movq %rbx, %rdi
callq 0x418f3
movq %rsp, %rsi
movq %rax, (%rsi)
movq 0x40(%rbx), %rdi
movl $0x1, %edx
callq 0xf1c0
movq 0x20(%r14), %rcx
testq %rcx, %rcx
je 0x41e9e
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xcc51(%rip), %rdx      # 0x4eacc
leaq -0x10a(%rip), %r8       # 0x41d78
movq %rbx, %rdi
callq 0x418f3
movq %rsp, %rsi
movq %rax, (%rsi)
movq 0x40(%rbx), %rdi
movl $0x1, %edx
callq 0xf1c0
movq 0x28(%r14), %rcx
testq %rcx, %rcx
je 0x421ca
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xcc23(%rip), %rdx      # 0x4eadc
jmp 0x4209c
movq 0x10(%r14), %rcx
testq %rcx, %rcx
je 0x41ef8
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0x9293(%rip), %rdx      # 0x4b168
leaq 0x3e7(%rip), %r8        # 0x422c3
movq %rbx, %rdi
callq 0x418f3
movq %rsp, %rsi
movq %rax, (%rsi)
movq 0x40(%rbx), %rdi
movl $0x1, %edx
callq 0xf1c0
movq 0x18(%r14), %rcx
testq %rcx, %rcx
je 0x41f32
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xcb27(%rip), %rdx      # 0x4ea36
leaq -0x19e(%rip), %r8       # 0x41d78
movq %rbx, %rdi
callq 0x418f3
movq %rsp, %rsi
movq %rax, (%rsi)
movq 0x40(%rbx), %rdi
movl $0x1, %edx
callq 0xf1c0
movq 0x20(%r14), %rcx
testq %rcx, %rcx
je 0x421ca
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xcaf2(%rip), %rdx      # 0x4ea3f
jmp 0x421a7
movq 0x10(%r14), %rcx
testq %rcx, %rcx
je 0x41f8c
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xcb7f(%rip), %rdx      # 0x4eae8
leaq 0x353(%rip), %r8        # 0x422c3
movq %rbx, %rdi
callq 0x418f3
movq %rsp, %rsi
movq %rax, (%rsi)
movq 0x40(%rbx), %rdi
movl $0x1, %edx
callq 0xf1c0
movq 0x18(%r14), %rcx
testq %rcx, %rcx
je 0x421ca
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xcb4c(%rip), %rdx      # 0x4eaf3
jmp 0x4209c
movq 0x10(%r14), %rcx
testq %rcx, %rcx
je 0x421ca
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xca68(%rip), %rdx      # 0x4ea2f
leaq 0x204(%rip), %r8        # 0x421d2
jmp 0x421ae
movq 0x10(%r14), %rcx
testq %rcx, %rcx
je 0x4200d
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xca88(%rip), %rdx      # 0x4ea72
leaq 0x2d2(%rip), %r8        # 0x422c3
movq %rbx, %rdi
callq 0x418f3
movq %rsp, %rsi
movq %rax, (%rsi)
movq 0x40(%rbx), %rdi
movl $0x1, %edx
callq 0xf1c0
movq 0x18(%r14), %rcx
testq %rcx, %rcx
je 0x42047
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xca61(%rip), %rdx      # 0x4ea85
leaq -0x2b3(%rip), %r8       # 0x41d78
movq %rbx, %rdi
callq 0x418f3
movq %rsp, %rsi
movq %rax, (%rsi)
movq 0x40(%rbx), %rdi
movl $0x1, %edx
callq 0xf1c0
movq 0x20(%r14), %rcx
testq %rcx, %rcx
je 0x42081
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xca39(%rip), %rdx      # 0x4ea97
leaq 0x3ca(%rip), %r8        # 0x4242f
movq %rbx, %rdi
callq 0x418f3
movq %rsp, %rsi
movq %rax, (%rsi)
movq 0x40(%rbx), %rdi
movl $0x1, %edx
callq 0xf1c0
movq 0x28(%r14), %rcx
testq %rcx, %rcx
je 0x421ca
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xca09(%rip), %rdx      # 0x4eaa5
leaq 0x38c(%rip), %r8        # 0x4242f
jmp 0x421ae
movq 0x10(%r14), %rcx
testq %rcx, %rcx
je 0x420e2
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xc9df(%rip), %rdx      # 0x4ea9e
leaq 0x369(%rip), %r8        # 0x4242f
movq %rbx, %rdi
callq 0x418f3
movq %rsp, %rsi
movq %rax, (%rsi)
movq 0x40(%rbx), %rdi
movl $0x1, %edx
callq 0xf1c0
movq 0x18(%r14), %rcx
testq %rcx, %rcx
je 0x4211c
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xc950(%rip), %rdx      # 0x4ea49
leaq 0x32f(%rip), %r8        # 0x4242f
movq %rbx, %rdi
callq 0x418f3
movq %rsp, %rsi
movq %rax, (%rsi)
movq 0x40(%rbx), %rdi
movl $0x1, %edx
callq 0xf1c0
movq 0x28(%r14), %rcx
testq %rcx, %rcx
je 0x42156
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xc920(%rip), %rdx      # 0x4ea53
leaq -0x3c2(%rip), %r8       # 0x41d78
movq %rbx, %rdi
callq 0x418f3
movq %rsp, %rsi
movq %rax, (%rsi)
movq 0x40(%rbx), %rdi
movl $0x1, %edx
callq 0xf1c0
movq 0x38(%r14), %rcx
testq %rcx, %rcx
je 0x42190
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xc8ea(%rip), %rdx      # 0x4ea57
leaq -0x3fc(%rip), %r8       # 0x41d78
movq %rbx, %rdi
callq 0x418f3
movq %rsp, %rsi
movq %rax, (%rsi)
movq 0x40(%rbx), %rdi
movl $0x1, %edx
callq 0xf1c0
movq 0x40(%r14), %rcx
testq %rcx, %rcx
je 0x421ca
movq 0x40(%rbx), %rax
movl 0x8(%rax), %esi
leaq 0xc8bb(%rip), %rdx      # 0x4ea62
leaq -0x436(%rip), %r8       # 0x41d78
movq %rbx, %rdi
callq 0x418f3
movq %rsp, %rsi
movq %rax, (%rsi)
movq 0x40(%rbx), %rdi
movl $0x1, %edx
callq 0xf1c0
addq $0x8, %rsp
popq %rbx
popq %r14
retq