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

	#define	_IR_EXPR_ADD(str_opt)	\
	{	\
		assert(node_expr->nchilds == 2);	\
		_IR_EXPR_AUTO_CAST_BEGIN	\
		rstr_append_with_cstr(rstr, "(");	\
		_ir_expr(ctx, rstr, node_expr->childs[0]);	\
		rstr_append_with_cstr(rstr, (str_opt));	\
		_ir_expr(ctx, rstr, node_expr->childs[1]);	\
		rstr_append_with_cstr(rstr, ")");	\
		_IR_EXPR_AUTO_CAST_END	\
	}

	switch (node_expr->type) {
		case FE_NODE_EXPR_ADD: {
			_IR_EXPR_ADD(" + ")
			return true;
		}
		case FE_NODE_EXPR_SUB: {
			_IR_EXPR_ADD(" - ")
			return true;
		}
		default: {
			return false;
		}
	}

	#undef	_IR_EXPR_ADD
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x23c9d
jmp 0x23cbc
leaq 0x588b2(%rip), %rdi     # 0x7c556
leaq 0x5313d(%rip), %rsi     # 0x76de8
movl $0x2df, %edx            # imm = 0x2DF
leaq 0x537ce(%rip), %rcx     # 0x77485
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x23cc5
jmp 0x23ce4
leaq 0x4ee42(%rip), %rdi     # 0x72b0e
leaq 0x53115(%rip), %rsi     # 0x76de8
movl $0x2e0, %edx            # imm = 0x2E0
leaq 0x537a6(%rip), %rcx     # 0x77485
callq 0x30a0
cmpq $0x0, -0x20(%rbp)
je 0x23ced
jmp 0x23d0c
leaq 0x53401(%rip), %rdi     # 0x770f5
leaq 0x530ed(%rip), %rsi     # 0x76de8
movl $0x2e1, %edx            # imm = 0x2E1
leaq 0x5377e(%rip), %rcx     # 0x77485
callq 0x30a0
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x44(%rbp)
subl $0xea0, %eax            # imm = 0xEA0
je 0x23d31
jmp 0x23d1e
movl -0x44(%rbp), %eax
subl $0xea1, %eax            # imm = 0xEA1
je 0x23e35
jmp 0x23f36
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x23d3d
jmp 0x23d5c
leaq 0x535d4(%rip), %rdi     # 0x77318
leaq 0x5309d(%rip), %rsi     # 0x76de8
movl $0x2f1, %edx            # imm = 0x2F1
leaq 0x5372e(%rip), %rcx     # 0x77485
callq 0x30a0
leaq -0x30(%rbp), %rdi
callq 0x8c90
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x68(%rax), %rdx
leaq -0x30(%rbp), %rsi
callq 0x216c0
movq -0x18(%rbp), %rax
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x23d96
leaq 0x53b25(%rip), %rax     # 0x778b5
movq %rax, -0x58(%rbp)
jmp 0x23d9e
movq -0x28(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x50(%rbp), %rdi
movq -0x58(%rbp), %rdx
leaq 0x533be(%rip), %rsi     # 0x7716b
movb $0x0, %al
callq 0x94d0
movq -0x18(%rbp), %rdi
leaq 0x53c9e(%rip), %rsi     # 0x77a5d
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x533a4(%rip), %rsi     # 0x7718b
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x5318e(%rip), %rsi     # 0x76f9e
callq 0x8d70
leaq -0x30(%rbp), %rdi
callq 0x9310
movq -0x18(%rbp), %rdi
movl $0x29, %esi
callq 0x8ea0
movb $0x1, -0x1(%rbp)
jmp 0x23f3a
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x23e41
jmp 0x23e60
leaq 0x534d0(%rip), %rdi     # 0x77318
leaq 0x52f99(%rip), %rsi     # 0x76de8
movl $0x2f5, %edx            # imm = 0x2F5
leaq 0x5362a(%rip), %rcx     # 0x77485
callq 0x30a0
leaq -0x40(%rbp), %rdi
callq 0x8c90
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x68(%rax), %rdx
leaq -0x40(%rbp), %rsi
callq 0x216c0
movq -0x18(%rbp), %rax
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0x23e9a
leaq 0x53a21(%rip), %rax     # 0x778b5
movq %rax, -0x68(%rbp)
jmp 0x23ea2
movq -0x38(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rdi
movq -0x68(%rbp), %rdx
leaq 0x532ba(%rip), %rsi     # 0x7716b
movb $0x0, %al
callq 0x94d0
movq -0x18(%rbp), %rdi
leaq 0x53b9a(%rip), %rsi     # 0x77a5d
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x535e8(%rip), %rsi     # 0x774d3
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x5308a(%rip), %rsi     # 0x76f9e
callq 0x8d70
leaq -0x40(%rbp), %rdi
callq 0x9310
movq -0x18(%rbp), %rdi
movl $0x29, %esi
callq 0x8ea0
movb $0x1, -0x1(%rbp)
jmp 0x23f3a
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x70, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)