// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/frontend/semantics.c
// Function: stat
static void _stat(
	ParserContext *ctx,
	ParserASTNode *node
) {
	assert(ctx);
	assert(node);

	switch (node->type) {
		case FE_NODE_VAR: {
			_stat_var(ctx, node);
			break;
		}
		case FE_NODE_STAT_IF: {
			_stat_if(ctx, node);
			break;
		}
		case FE_NODE_STAT_WHILE: {
			_stat_while(ctx, node);
			break;
		}
		case FE_NODE_STAT_DO: {
			_stat_do(ctx, node);
			break;
		}
		case FE_NODE_STAT_FOR: {
			_stat_for(ctx, node);
			break;
		}
		case FE_NODE_STAT_BREAK: {
			_stat_break(ctx, node);
			break;
		}
		case FE_NODE_STAT_CONTINUE: {
			_stat_continue(ctx, node);
			break;
		}
		case FE_NODE_STAT_RETURN: {
			_stat_return(ctx, node);
			break;
		}
		case FE_NODE_STAT_GOTO: {
			_stat_goto(ctx, node);			
			break;
		}
		case FE_NODE_STAT_LABEL: {
			_stat_label(ctx, node);
			break;
		}
		case FE_NODE_STAT_ASM: {
			_stat_asm(ctx, node);
			break;
		}
		case FE_NODE_EXPR: {
			_stat_expr(ctx, node);
			break;
		}
		case FE_NODE_STAT_DUMMY: {
			_stat_dummy(ctx, node);
			break;
		}
		case FE_NODE_STAT_VA_START: {
			_stat_va_start(ctx, node);
			break;
		}
		case FE_NODE_STAT_VA_END: {
			_stat_va_end(ctx, node);
			break;
		}
		case FE_NODE_STAT_VA_COPY: {
			_stat_va_copy(ctx, node);
			break;
		}
		case FE_NODE_STATS_BLOCK: {
			_stats_block(ctx, node);
			break;
		}
		default: {
			assert(0);
			break;
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x5d609
jmp 0x5d628
leaq 0x1ef46(%rip), %rdi     # 0x7c556
leaq 0x20c33(%rip), %rsi     # 0x7e24a
movl $0x13eb, %edx           # imm = 0x13EB
leaq 0x23054(%rip), %rcx     # 0x80677
callq 0x30a0
cmpq $0x0, -0x10(%rbp)
je 0x5d631
jmp 0x5d650
leaq 0x1899b(%rip), %rdi     # 0x75fd3
leaq 0x20c0b(%rip), %rsi     # 0x7e24a
movl $0x13ec, %edx           # imm = 0x13EC
leaq 0x2302c(%rip), %rcx     # 0x80677
callq 0x30a0
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x14(%rbp)
subl $0xb00, %eax            # imm = 0xB00
je 0x5d873
jmp 0x5d666
movl -0x14(%rbp), %eax
subl $0xb10, %eax            # imm = 0xB10
je 0x5d777
jmp 0x5d676
movl -0x14(%rbp), %eax
subl $0xb20, %eax            # imm = 0xB20
je 0x5d789
jmp 0x5d686
movl -0x14(%rbp), %eax
subl $0xb30, %eax            # imm = 0xB30
je 0x5d79b
jmp 0x5d696
movl -0x14(%rbp), %eax
subl $0xb40, %eax            # imm = 0xB40
je 0x5d7ad
jmp 0x5d6a6
movl -0x14(%rbp), %eax
subl $0xb50, %eax            # imm = 0xB50
je 0x5d7d1
jmp 0x5d6b6
movl -0x14(%rbp), %eax
subl $0xb60, %eax            # imm = 0xB60
je 0x5d7bf
jmp 0x5d6c6
movl -0x14(%rbp), %eax
subl $0xb70, %eax            # imm = 0xB70
je 0x5d7e3
jmp 0x5d6d6
movl -0x14(%rbp), %eax
subl $0xb80, %eax            # imm = 0xB80
je 0x5d7f5
jmp 0x5d6e6
movl -0x14(%rbp), %eax
subl $0xb90, %eax            # imm = 0xB90
je 0x5d807
jmp 0x5d6f6
movl -0x14(%rbp), %eax
subl $0xba0, %eax            # imm = 0xBA0
je 0x5d819
jmp 0x5d706
movl -0x14(%rbp), %eax
subl $0xbc0, %eax            # imm = 0xBC0
je 0x5d837
jmp 0x5d716
movl -0x14(%rbp), %eax
subl $0xbd0, %eax            # imm = 0xBD0
je 0x5d846
jmp 0x5d726
movl -0x14(%rbp), %eax
subl $0xbd1, %eax            # imm = 0xBD1
je 0x5d855
jmp 0x5d736
movl -0x14(%rbp), %eax
subl $0xbd2, %eax            # imm = 0xBD2
je 0x5d864
jmp 0x5d746
movl -0x14(%rbp), %eax
subl $0xc00, %eax            # imm = 0xC00
je 0x5d765
jmp 0x5d752
movl -0x14(%rbp), %eax
subl $0xe00, %eax            # imm = 0xE00
je 0x5d828
jmp 0x5d882
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d8b0
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d950
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5dc50
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5ddb0
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5df00
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e250
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e370
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e490
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e6d0
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e810
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e8d0
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5ecb0
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5ed50
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5edf0
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5ef20
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5f040
jmp 0x5d8a1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d3d0
jmp 0x5d8a1
leaq 0x14bd2(%rip), %rdi     # 0x7245b
leaq 0x209ba(%rip), %rsi     # 0x7e24a
movl $0x1434, %edx           # imm = 0x1434
leaq 0x22ddb(%rip), %rcx     # 0x80677
callq 0x30a0
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)