// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/frontend/irgen_c.c
// Function: ir_expr
static void _ir_expr(
	IRGeneratorCContext *ctx,
	ResizableString *rstr,
	ParserASTNode *node_expr
) {
	assert(ctx);
	assert(rstr);
	assert(node_expr);

	if (_ir_expr_constexpr(ctx, rstr, node_expr)) {
		return;
	}

	#define	_A(fn)	\
		if (fn(ctx, rstr, node_expr)) {	\
			return;	\
		}

	_A(_ir_expr_atom)
	_A(_ir_expr_member_arridx_fncall)
	_A(_ir_expr_unary)
	_A(_ir_expr_mul)
	_A(_ir_expr_add)
	_A(_ir_expr_shift)
	_A(_ir_expr_lt)
	_A(_ir_expr_eq)
	_A(_ir_expr_band)
	_A(_ir_expr_bxor)
	_A(_ir_expr_bor)
	_A(_ir_expr_and)
	_A(_ir_expr_or)
	_A(_ir_expr_cond)
	_A(_ir_expr_assign)

	assert(0);

	#undef	_A
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x227cd
jmp 0x227ec
leaq 0x59d82(%rip), %rdi     # 0x7c556
leaq 0x5460d(%rip), %rsi     # 0x76de8
movl $0x484, %edx            # imm = 0x484
leaq 0x549a8(%rip), %rcx     # 0x7718f
callq 0x30a0
cmpq $0x0, -0x10(%rbp)
je 0x227f5
jmp 0x22814
leaq 0x50312(%rip), %rdi     # 0x72b0e
leaq 0x545e5(%rip), %rsi     # 0x76de8
movl $0x485, %edx            # imm = 0x485
leaq 0x54980(%rip), %rcx     # 0x7718f
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x2281d
jmp 0x2283c
leaq 0x548d1(%rip), %rdi     # 0x770f5
leaq 0x545bd(%rip), %rsi     # 0x76de8
movl $0x486, %edx            # imm = 0x486
leaq 0x54958(%rip), %rcx     # 0x7718f
callq 0x30a0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x22200
testb $0x1, %al
jne 0x22853
jmp 0x22858
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x22a20
testb $0x1, %al
jne 0x2286f
jmp 0x22874
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x22d40
testb $0x1, %al
jne 0x2288b
jmp 0x22890
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x23080
testb $0x1, %al
jne 0x228a7
jmp 0x228ac
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x23890
testb $0x1, %al
jne 0x228c3
jmp 0x228c8
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x23c80
testb $0x1, %al
jne 0x228df
jmp 0x228e4
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x23f50
testb $0x1, %al
jne 0x228fb
jmp 0x22900
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x24140
testb $0x1, %al
jne 0x22917
jmp 0x2291c
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x24650
testb $0x1, %al
jne 0x22933
jmp 0x22938
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x24920
testb $0x1, %al
jne 0x2294f
jmp 0x22954
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x24ad0
testb $0x1, %al
jne 0x2296b
jmp 0x22970
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x24c80
testb $0x1, %al
jne 0x22987
jmp 0x2298c
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x24e30
testb $0x1, %al
jne 0x229a3
jmp 0x229a5
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x24f70
testb $0x1, %al
jne 0x229bc
jmp 0x229be
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x250b0
testb $0x1, %al
jne 0x229d5
jmp 0x229d7
jmp 0x22a0f
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
callq 0x25220
testb $0x1, %al
jne 0x229ee
jmp 0x229f0
jmp 0x22a0f
leaq 0x4fa64(%rip), %rdi     # 0x7245b
leaq 0x543ea(%rip), %rsi     # 0x76de8
movl $0x4a1, %edx            # imm = 0x4A1
leaq 0x54785(%rip), %rcx     # 0x7718f
callq 0x30a0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)