// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/frontend/irgen_llvmir.c
// Function: ir_expr
static void _ir_expr(
	IRGeneratorLlvmirContext *ctx,
	ResizableString *rstr,
	_ExprResult *expr_result,
	ParserASTNode *node
) {
	assert(ctx);
	assert(rstr);
	assert(expr_result);
	assert(node);

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

	_A(_ir_expr_constexpr)
	_A(_ir_expr_identifier)
	_A(_ir_expr_member_arridx_fncall)
	_A(_ir_expr_unary)
	_A(_ir_expr_mul_div_mod)
	_A(_ir_expr_add_sub)
	_A(_ir_expr_shift)
	_A(_ir_expr_comparison)
	_A(_ir_expr_band_bxor_bor)
	_A(_ir_expr_logic)
	_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)
movq %rcx, -0x20(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x2d5b1
jmp 0x2d5d0
leaq 0x4ef9e(%rip), %rdi     # 0x7c556
leaq 0x4ab11(%rip), %rsi     # 0x780d0
movl $0x125f, %edx           # imm = 0x125F
leaq 0x4b1d4(%rip), %rcx     # 0x7879f
callq 0x30a0
cmpq $0x0, -0x10(%rbp)
je 0x2d5d9
jmp 0x2d5f8
leaq 0x4552e(%rip), %rdi     # 0x72b0e
leaq 0x4aae9(%rip), %rsi     # 0x780d0
movl $0x1260, %edx           # imm = 0x1260
leaq 0x4b1ac(%rip), %rcx     # 0x7879f
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x2d601
jmp 0x2d620
leaq 0x4760b(%rip), %rdi     # 0x74c13
leaq 0x4aac1(%rip), %rsi     # 0x780d0
movl $0x1261, %edx           # imm = 0x1261
leaq 0x4b184(%rip), %rcx     # 0x7879f
callq 0x30a0
cmpq $0x0, -0x20(%rbp)
je 0x2d629
jmp 0x2d648
leaq 0x489a3(%rip), %rdi     # 0x75fd3
leaq 0x4aa99(%rip), %rsi     # 0x780d0
movl $0x1262, %edx           # imm = 0x1262
leaq 0x4b15c(%rip), %rcx     # 0x7879f
callq 0x30a0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x2d7f0
testb $0x1, %al
jne 0x2d663
jmp 0x2d668
jmp 0x2d7db
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x2d960
testb $0x1, %al
jne 0x2d683
jmp 0x2d688
jmp 0x2d7db
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x2df10
testb $0x1, %al
jne 0x2d6a3
jmp 0x2d6a8
jmp 0x2d7db
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x2f900
testb $0x1, %al
jne 0x2d6c3
jmp 0x2d6c8
jmp 0x2d7db
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x31490
testb $0x1, %al
jne 0x2d6e3
jmp 0x2d6e8
jmp 0x2d7db
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x31670
testb $0x1, %al
jne 0x2d703
jmp 0x2d708
jmp 0x2d7db
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x317f0
testb $0x1, %al
jne 0x2d723
jmp 0x2d728
jmp 0x2d7db
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x31970
testb $0x1, %al
jne 0x2d743
jmp 0x2d748
jmp 0x2d7db
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x32e30
testb $0x1, %al
jne 0x2d763
jmp 0x2d765
jmp 0x2d7db
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x32f70
testb $0x1, %al
jne 0x2d780
jmp 0x2d782
jmp 0x2d7db
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x33a40
testb $0x1, %al
jne 0x2d79d
jmp 0x2d79f
jmp 0x2d7db
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x34410
testb $0x1, %al
jne 0x2d7ba
jmp 0x2d7bc
jmp 0x2d7db
leaq 0x44c98(%rip), %rdi     # 0x7245b
leaq 0x4a906(%rip), %rsi     # 0x780d0
movl $0x1276, %edx           # imm = 0x1276
leaq 0x4afc9(%rip), %rcx     # 0x7879f
callq 0x30a0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)