// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/frontend/irgen.c
// Function: ir_expr
static void _ir_expr(
	IRGeneratorContext *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)

	printf("TYPE: %x, %s\n", node->type, node->type_name);
	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 0x13d31
jmp 0x13d50
leaq 0x6881e(%rip), %rdi     # 0x7c556
leaq 0x60655(%rip), %rsi     # 0x74394
movl $0xe29, %edx            # imm = 0xE29
leaq 0x60f74(%rip), %rcx     # 0x74cbf
callq 0x30a0
cmpq $0x0, -0x10(%rbp)
je 0x13d59
jmp 0x13d78
leaq 0x5edae(%rip), %rdi     # 0x72b0e
leaq 0x6062d(%rip), %rsi     # 0x74394
movl $0xe2a, %edx            # imm = 0xE2A
leaq 0x60f4c(%rip), %rcx     # 0x74cbf
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x13d81
jmp 0x13da0
leaq 0x60e8b(%rip), %rdi     # 0x74c13
leaq 0x60605(%rip), %rsi     # 0x74394
movl $0xe2b, %edx            # imm = 0xE2B
leaq 0x60f24(%rip), %rcx     # 0x74cbf
callq 0x30a0
cmpq $0x0, -0x20(%rbp)
je 0x13da9
jmp 0x13dc8
leaq 0x62223(%rip), %rdi     # 0x75fd3
leaq 0x605dd(%rip), %rsi     # 0x74394
movl $0xe2c, %edx            # imm = 0xE2C
leaq 0x60efc(%rip), %rcx     # 0x74cbf
callq 0x30a0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x13f80
testb $0x1, %al
jne 0x13de3
jmp 0x13de8
jmp 0x13f7a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x140b0
testb $0x1, %al
jne 0x13e03
jmp 0x13e08
jmp 0x13f7a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x14490
testb $0x1, %al
jne 0x13e23
jmp 0x13e28
jmp 0x13f7a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x15980
testb $0x1, %al
jne 0x13e43
jmp 0x13e48
jmp 0x13f7a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x16f30
testb $0x1, %al
jne 0x13e63
jmp 0x13e68
jmp 0x13f7a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x17110
testb $0x1, %al
jne 0x13e83
jmp 0x13e88
jmp 0x13f7a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x17290
testb $0x1, %al
jne 0x13ea3
jmp 0x13ea8
jmp 0x13f7a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x17410
testb $0x1, %al
jne 0x13ec3
jmp 0x13ec8
jmp 0x13f7a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x17d60
testb $0x1, %al
jne 0x13ee3
jmp 0x13ee8
jmp 0x13f7a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x17ea0
testb $0x1, %al
jne 0x13f03
jmp 0x13f05
jmp 0x13f7a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x18dc0
testb $0x1, %al
jne 0x13f20
jmp 0x13f22
jmp 0x13f7a
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rdx
movq -0x20(%rbp), %rcx
callq 0x194d0
testb $0x1, %al
jne 0x13f3d
jmp 0x13f3f
jmp 0x13f7a
movq -0x20(%rbp), %rax
movl (%rax), %esi
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0x60dc2(%rip), %rdi     # 0x74d16
movb $0x0, %al
callq 0x3080
leaq 0x5e4f9(%rip), %rdi     # 0x7245b
leaq 0x6042b(%rip), %rsi     # 0x74394
movl $0xe41, %edx            # imm = 0xE41
leaq 0x60d4a(%rip), %rcx     # 0x74cbf
callq 0x30a0
addq $0x20, %rsp
popq %rbp
retq