// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/frontend/irgen.c
// Function: ir_stat
static void _ir_stat(
	IRGeneratorContext *ctx,
	ParserASTNode *node_stat
) {
	assert(ctx);
	assert(node_stat);

	switch (node_stat->type) {
		case FE_NODE_VAR: {
			_ir_stat_var(ctx, node_stat);
			break;
		}
		case FE_NODE_STAT_IF: {
			_ir_stat_if(ctx, node_stat);
			break;
		}
		case FE_NODE_STAT_WHILE: {
			_ir_stat_while(ctx, node_stat);
			break;
		}
		case FE_NODE_STAT_DO: {
			_ir_stat_do(ctx, node_stat);
			break;
		}
		case FE_NODE_STAT_FOR: {
			_ir_stat_for(ctx, node_stat);
			break;
		}
		case FE_NODE_STAT_BREAK: {
			_ir_stat_break(ctx, node_stat);
			break;
		}
		case FE_NODE_STAT_CONTINUE: {
			_ir_stat_continue(ctx, node_stat);
			break;
		}
		case FE_NODE_STAT_RETURN: {
			_ir_stat_return(ctx, node_stat);
			break;
		}
		case FE_NODE_STAT_GOTO: {
			_ir_stat_goto(ctx, node_stat);
			break;
		}
		case FE_NODE_STAT_LABEL: {
			_ir_stat_label(ctx, node_stat);
			break;
		}
		case FE_NODE_STAT_ASM: {
			_ir_stat_asm(ctx, node_stat);
			break;
		}
		case FE_NODE_EXPR: {
			_ir_stat_expr(ctx, node_stat);
			break;
		}
		case FE_NODE_STAT_DUMMY: {
			// 什么也不做。
			break;
		}

		case FE_NODE_STAT_VA_START: {
			_ir_stat_va_start(ctx, node_stat);
			break;
		}
		case FE_NODE_STAT_VA_END: {
			_ir_stat_va_end(ctx, node_stat);
			break;
		}
		case FE_NODE_STAT_VA_COPY: {
			_ir_stat_va_copy(ctx, node_stat);
			break;
		}
		

		case FE_NODE_STATS_BLOCK: {
			_ir_stats_block(ctx, node_stat);
			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 0x1da49
jmp 0x1da68
leaq 0x5eb06(%rip), %rdi     # 0x7c556
leaq 0x5693d(%rip), %rsi     # 0x74394
movl $0x125d, %edx           # imm = 0x125D
leaq 0x58838(%rip), %rcx     # 0x7629b
callq 0x30a0
cmpq $0x0, -0x10(%rbp)
je 0x1da71
jmp 0x1da90
leaq 0x58858(%rip), %rdi     # 0x762d0
leaq 0x56915(%rip), %rsi     # 0x74394
movl $0x125e, %edx           # imm = 0x125E
leaq 0x58810(%rip), %rcx     # 0x7629b
callq 0x30a0
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x14(%rbp)
subl $0xb00, %eax            # imm = 0xB00
je 0x1dca3
jmp 0x1daa6
movl -0x14(%rbp), %eax
subl $0xb10, %eax            # imm = 0xB10
je 0x1dbb7
jmp 0x1dab6
movl -0x14(%rbp), %eax
subl $0xb20, %eax            # imm = 0xB20
je 0x1dbc9
jmp 0x1dac6
movl -0x14(%rbp), %eax
subl $0xb30, %eax            # imm = 0xB30
je 0x1dbdb
jmp 0x1dad6
movl -0x14(%rbp), %eax
subl $0xb40, %eax            # imm = 0xB40
je 0x1dbed
jmp 0x1dae6
movl -0x14(%rbp), %eax
subl $0xb50, %eax            # imm = 0xB50
je 0x1dc11
jmp 0x1daf6
movl -0x14(%rbp), %eax
subl $0xb60, %eax            # imm = 0xB60
je 0x1dbff
jmp 0x1db06
movl -0x14(%rbp), %eax
subl $0xb70, %eax            # imm = 0xB70
je 0x1dc23
jmp 0x1db16
movl -0x14(%rbp), %eax
subl $0xb80, %eax            # imm = 0xB80
je 0x1dc35
jmp 0x1db26
movl -0x14(%rbp), %eax
subl $0xb90, %eax            # imm = 0xB90
je 0x1dc47
jmp 0x1db36
movl -0x14(%rbp), %eax
subl $0xba0, %eax            # imm = 0xBA0
je 0x1dc56
jmp 0x1db46
movl -0x14(%rbp), %eax
subl $0xbc0, %eax            # imm = 0xBC0
je 0x1dc74
jmp 0x1db56
movl -0x14(%rbp), %eax
subl $0xbd0, %eax            # imm = 0xBD0
je 0x1dc76
jmp 0x1db66
movl -0x14(%rbp), %eax
subl $0xbd1, %eax            # imm = 0xBD1
je 0x1dc85
jmp 0x1db76
movl -0x14(%rbp), %eax
subl $0xbd2, %eax            # imm = 0xBD2
je 0x1dc94
jmp 0x1db86
movl -0x14(%rbp), %eax
subl $0xc00, %eax            # imm = 0xC00
je 0x1dba5
jmp 0x1db92
movl -0x14(%rbp), %eax
subl $0xe00, %eax            # imm = 0xE00
je 0x1dc65
jmp 0x1dcb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1dce0
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1dd80
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1e480
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1e840
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1ebb0
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1f2f0
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1f450
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1f5b0
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1f830
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1f970
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1fab0
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1ffe0
jmp 0x1dcd1
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x200c0
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x201d0
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x202e0
jmp 0x1dcd1
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1d950
jmp 0x1dcd1
leaq 0x547a2(%rip), %rdi     # 0x7245b
leaq 0x566d4(%rip), %rsi     # 0x74394
movl $0x12a9, %edx           # imm = 0x12A9
leaq 0x585cf(%rip), %rcx     # 0x7629b
callq 0x30a0
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)