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

	switch (node->type) {
		case BE_NODE_VAR: {
			_stat_var(ctx, node);
			break;
		}
		case BE_NODE_STAT_ASSIGN: {
			_stat_assign(ctx, node);
			break;
		}

		case BE_NODE_STAT_ASM: {
			_stat_asm(ctx, node);
			break;
		}
		case BE_NODE_STAT_ASM_SET_REG: {
			_stat_asm_set_reg(ctx, node);
			break;
		}
		case BE_NODE_STAT_ASM_GET_REG: {
			_stat_asm_get_reg(ctx, node);
			break;
		}

		case BE_NODE_STAT_LABEL: {
			_stat_label(ctx, node);
			break;
		}
		case BE_NODE_STAT_BR: {
			_stat_br(ctx, node);
			break;
		}
		case BE_NODE_STAT_CBR: {
			_stat_cbr(ctx, node);
			break;
		}

		case BE_NODE_STAT_RETURN: {
			_stat_return(ctx, node);
			break;
		}

		case BE_NODE_STAT_REF: {
			_stat_ref(ctx, node);
			break;
		}
		case BE_NODE_STAT_STORE: {
			_stat_store(ctx, node);
			break;
		}
		case BE_NODE_STAT_LOAD: {
			_stat_load(ctx, node);
			break;
		}

		case BE_NODE_STAT_TRUNC: {
			_stat_trunc(ctx, node);
			break;
		}
		case BE_NODE_STAT_SEXT: {
			_stat_sext(ctx, node);
			break;
		}
		case BE_NODE_STAT_SITOFP: {
			_stat_sitofp(ctx, node);
			break;
		}
		case BE_NODE_STAT_INTTOPTR: {
			_stat_inttoptr(ctx, node);
			break;
		}
		case BE_NODE_STAT_ZEXT: {
			_stat_zext(ctx, node);
			break;
		}
		case BE_NODE_STAT_UITOFP: {
			_stat_uitofp(ctx, node);
			break;
		}
		case BE_NODE_STAT_FPTOSI: {
			_stat_fptosi(ctx, node);
			break;
		}
		case BE_NODE_STAT_FPTOUI: {
			_stat_fptoui(ctx, node);
			break;
		}
		case BE_NODE_STAT_FPEXT: {
			_stat_fpext(ctx, node);
			break;
		}
		case BE_NODE_STAT_FPTRUNC: {
			_stat_fptrunc(ctx, node);
			break;
		}
		case BE_NODE_STAT_PTRTOINT: {
			_stat_ptrtoint(ctx, node);
			break;
		}
		case BE_NODE_STAT_BITCAST: {
			_stat_bitcast(ctx, node);
			break;
		}

		case BE_NODE_STAT_VCALL: {
			_stat_vcall(ctx, node);
			break;
		}
		case BE_NODE_STAT_CALL: {
			_stat_call(ctx, node);
			break;
		}

		case BE_NODE_STAT_ADD: {
			_stat_add(ctx, node);
			break;
		}
		case BE_NODE_STAT_SUB: {
			_stat_sub(ctx, node);
			break;
		}
		case BE_NODE_STAT_MUL: {
			_stat_mul(ctx, node);
			break;
		}
		case BE_NODE_STAT_DIV: {
			_stat_div(ctx, node);
			break;
		}
		case BE_NODE_STAT_REM: {
			_stat_rem(ctx, node);
			break;
		}

		case BE_NODE_STAT_MBR: {
			_stat_mbr(ctx, node);
			break;
		} 
		case BE_NODE_STAT_IDX: {
			_stat_idx(ctx, node);
			break;
		} 
		case BE_NODE_STAT_NOT: {
			_stat_not(ctx, node);
			break;
		} 
		case BE_NODE_STAT_NEG: {
			_stat_neg(ctx, node);
			break;
		} 
		case BE_NODE_STAT_BNOT: {
			_stat_bnot(ctx, node);
			break;
		} 

		case BE_NODE_STAT_SHL: {
			_stat_shl(ctx, node);
			break;
		}
		case BE_NODE_STAT_SHR: {
			_stat_shr(ctx, node);
			break;
		}

		case BE_NODE_STAT_EQ: {
			_stat_eq(ctx, node);
			break;
		}
		case BE_NODE_STAT_NEQ: {
			_stat_neq(ctx, node);
			break;
		}
		case BE_NODE_STAT_LT: {
			_stat_lt(ctx, node);
			break;
		}
		case BE_NODE_STAT_LE: {
			_stat_le(ctx, node);
			break;
		}
		case BE_NODE_STAT_GT: {
			_stat_gt(ctx, node);
			break;
		}
		case BE_NODE_STAT_GE: {
			_stat_ge(ctx, node);
			break;
		}

		case BE_NODE_STAT_BAND: {
			_stat_band(ctx, node);
			break;
		}
		case BE_NODE_STAT_BOR: {
			_stat_bor(ctx, node);
			break;
		}
		case BE_NODE_STAT_BXOR: {
			_stat_bxor(ctx, node);
			break;
		}

		case BE_NODE_STAT_VA_START: {
			_stat_va_start(ctx, node);
			break;
		}
		case BE_NODE_STAT_VA_END: {
			_stat_va_end(ctx, node);
			break;
		}
		case BE_NODE_STAT_VA_COPY: {
			_stat_va_copy(ctx, node);
			break;
		}
		case BE_NODE_STAT_VA_ARG: {
			_stat_va_arg(ctx, node);
			break;
		}





		case BE_NODE_STAT_DUMMY: {
			_stat_dummy(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 0x5b789
jmp 0x5b7a8
leaq 0x249d1(%rip), %rdi     # 0x80161
leaq 0x270e9(%rip), %rsi     # 0x82880
movl $0x167f, %edx           # imm = 0x167F
leaq 0x29210(%rip), %rcx     # 0x849b3
callq 0x30a0
cmpq $0x0, -0x10(%rbp)
je 0x5b7b1
jmp 0x5b7d0
leaq 0x1ada4(%rip), %rdi     # 0x7655c
leaq 0x270c1(%rip), %rsi     # 0x82880
movl $0x1680, %edx           # imm = 0x1680
leaq 0x291e8(%rip), %rcx     # 0x849b3
callq 0x30a0
movq -0x10(%rbp), %rax
movl (%rax), %eax
addl $0xfffff4f0, %eax       # imm = 0xFFFFF4F0
movl %eax, %ecx
movq %rcx, -0x18(%rbp)
subl $0xf0, %eax
ja 0x5bb93
movq -0x18(%rbp), %rax
leaq 0x26c91(%rip), %rcx     # 0x82488
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5bbc0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5bc60
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5bdc0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5be60
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5bfd0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5c180
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5c280
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5c3c0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5c600
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5c800
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5c9c0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5cb20
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5ccc0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5cda0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5ce80
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5cf30
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5cfe0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d0c0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d170
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d220
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d2d0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d370
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d410
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d4c0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d5c0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d710
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d860
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d920
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5d9e0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5da70
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5db00
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5db90
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5dde0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5dea0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5df20
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5dfa0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e020
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e0b0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e140
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e1e0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e280
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e310
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e3a0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e430
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e4c0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e550
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e5e0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e670
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e7d0
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5e930
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5eb00
jmp 0x5bbb2
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x5ed20
jmp 0x5bbb2
leaq 0x178c0(%rip), %rdi     # 0x7345a
leaq 0x26cdf(%rip), %rsi     # 0x82880
movl $0x1765, %edx           # imm = 0x1765
leaq 0x28e06(%rip), %rcx     # 0x849b3
callq 0x30a0
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)