// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/backend/asmgen_gas32.c
// Function: asm_stat
static void _asm_stat(
	ASMGeneratorGas32Context *ctx,
	ParserASTNode *node_stat
) {
	assert(ctx);
	assert(node_stat);

	switch (node_stat->type) {
		case BE_NODE_VAR: {
			_asm_stat_var(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_ASSIGN: {
			_asm_stat_assign(ctx, node_stat);
			break;
		}

		case BE_NODE_STAT_ASM: {
			_asm_stat_asm(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_ASM_SET_REG: {
			_asm_stat_asm_set_reg(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_ASM_GET_REG: {
			_asm_stat_asm_get_reg(ctx, node_stat);
			break;
		}

		case BE_NODE_STAT_LABEL: {
			_asm_stat_label(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_BR: {
			_asm_stat_br(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_CBR: {
			_asm_stat_cbr(ctx, node_stat);
			break;
		}

		case BE_NODE_STAT_RETURN: {
			_asm_stat_return(ctx, node_stat);
			break;
		}

		case BE_NODE_STAT_REF: {
			_asm_stat_ref(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_STORE: {
			_asm_stat_store(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_LOAD: {
			_asm_stat_load(ctx, node_stat);
			break;
		}

		case BE_NODE_STAT_TRUNC: {
			_asm_stat_trunc(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_SEXT: {
			_asm_stat_sext(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_SITOFP: {
			_asm_stat_sitofp(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_INTTOPTR: {
			_asm_stat_inttoptr(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_ZEXT: {
			_asm_stat_zext(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_UITOFP: {
			_asm_stat_uitofp(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_FPTOSI: {
			_asm_stat_fptosi(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_FPTOUI: {
			_asm_stat_fptoui(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_FPEXT: {
			_asm_stat_fpext(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_FPTRUNC: {
			_asm_stat_fptrunc(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_PTRTOINT: {
			_asm_stat_ptrtoint(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_BITCAST: {
			_asm_stat_bitcast(ctx, node_stat);
			break;
		}

		case BE_NODE_STAT_VCALL: {
			_asm_stat_vcall(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_CALL: {
			_asm_stat_call(ctx, node_stat);
			break;
		}

		case BE_NODE_STAT_ADD: {
			_asm_stat_add(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_SUB: {
			_asm_stat_sub(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_MUL: {
			_asm_stat_mul(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_DIV: {
			_asm_stat_div(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_REM: {
			_asm_stat_rem(ctx, node_stat);
			break;
		}

		case BE_NODE_STAT_MBR: {
			_asm_stat_mbr(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_IDX: {
			_asm_stat_idx(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_NOT: {
			_asm_stat_not(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_NEG: {
			_asm_stat_neg(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_BNOT: {
			_asm_stat_bnot(ctx, node_stat);
			break;
		}

		case BE_NODE_STAT_SHL: {
			_asm_stat_shl(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_SHR: {
			_asm_stat_shr(ctx, node_stat);
			break;
		}

		case BE_NODE_STAT_EQ: {
			_asm_stat_eq(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_NEQ: {
			_asm_stat_neq(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_LT: {
			_asm_stat_lt(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_LE: {
			_asm_stat_le(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_GT: {
			_asm_stat_gt(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_GE: {
			_asm_stat_ge(ctx, node_stat);
			break;
		}

		case BE_NODE_STAT_BAND: {
			_asm_stat_band(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_BOR: {
			_asm_stat_bor(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_BXOR: {
			_asm_stat_bxor(ctx, node_stat);
			break;
		}

		case BE_NODE_STAT_VA_START: {
			_asm_stat_va_start(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_VA_END: {
			_asm_stat_va_end(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_VA_COPY: {
			_asm_stat_va_copy(ctx, node_stat);
			break;
		}
		case BE_NODE_STAT_VA_ARG: {
			_asm_stat_va_arg(ctx, node_stat);
			break;
		}

		case BE_NODE_STAT_DUMMY: {
			
			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 0x11a49
jmp 0x11a68
leaq 0x6e711(%rip), %rdi     # 0x80161
leaq 0x63ea1(%rip), %rsi     # 0x758f8
movl $0x2ab5, %edx           # imm = 0x2AB5
leaq 0x6486f(%rip), %rcx     # 0x762d2
callq 0x30a0
cmpq $0x0, -0x10(%rbp)
je 0x11a71
jmp 0x11a90
leaq 0x64896(%rip), %rdi     # 0x7630e
leaq 0x63e79(%rip), %rsi     # 0x758f8
movl $0x2ab6, %edx           # imm = 0x2AB6
leaq 0x64847(%rip), %rcx     # 0x762d2
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 0x11e43
movq -0x18(%rbp), %rax
leaq 0x63a1d(%rip), %rcx     # 0x754d4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x11e70
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x11f10
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x12380
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x12490
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x12940
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x12b20
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x12c50
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x12dc0
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x13280
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x133f0
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x135b0
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x13900
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x13d40
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x13ef0
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x14250
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x146b0
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x14880
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x14b80
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x15630
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x158e0
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x15b90
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x15d30
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x15ed0
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x16110
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x16350
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x16460
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x166d0
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x16c70
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x17210
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x17760
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x17e10
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x18390
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x186a0
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x18940
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x18d40
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x19070
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x19350
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x19780
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x19dd0
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1a720
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1b070
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1bcd0
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1c930
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1d590
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1e1f0
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1e500
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1e810
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1eb20
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1ed60
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1ef60
jmp 0x11e62
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x1f2d0
jmp 0x11e62
jmp 0x11e62
leaq 0x61610(%rip), %rdi     # 0x7345a
leaq 0x63aa7(%rip), %rsi     # 0x758f8
movl $0x2b97, %edx           # imm = 0x2B97
leaq 0x64475(%rip), %rcx     # 0x762d2
callq 0x30a0
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)