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

	#define	_IR_EXPR_MUL(opt_str)	\
	{	\
		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, (opt_str));	\
		_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_MUL: {
			_IR_EXPR_MUL(" * ")
			return true;
		}
		case FE_NODE_EXPR_DIV: {
			_IR_EXPR_MUL(" / ")
			return true;
		}
		case FE_NODE_EXPR_MOD: {
			_IR_EXPR_MUL(" % ")
			return true;
		}
		default: {
			return false;
		}
	}

	#undef	_IR_EXPR_MUL
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x238b0
jmp 0x238cf
leaq 0x58c9f(%rip), %rdi     # 0x7c556
leaq 0x5352a(%rip), %rsi     # 0x76de8
movl $0x2b5, %edx            # imm = 0x2B5
leaq 0x53b61(%rip), %rcx     # 0x7742b
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x238d8
jmp 0x238f7
leaq 0x4f22f(%rip), %rdi     # 0x72b0e
leaq 0x53502(%rip), %rsi     # 0x76de8
movl $0x2b6, %edx            # imm = 0x2B6
leaq 0x53b39(%rip), %rcx     # 0x7742b
callq 0x30a0
cmpq $0x0, -0x20(%rbp)
je 0x23900
jmp 0x2391f
leaq 0x537ee(%rip), %rdi     # 0x770f5
leaq 0x534da(%rip), %rsi     # 0x76de8
movl $0x2b7, %edx            # imm = 0x2B7
leaq 0x53b11(%rip), %rcx     # 0x7742b
callq 0x30a0
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x54(%rbp)
subl $0xeb0, %eax            # imm = 0xEB0
je 0x23954
jmp 0x23931
movl -0x54(%rbp), %eax
subl $0xeb1, %eax            # imm = 0xEB1
je 0x23a58
jmp 0x23941
movl -0x54(%rbp), %eax
subl $0xeb2, %eax            # imm = 0xEB2
je 0x23b5c
jmp 0x23c66
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x23960
jmp 0x2397f
leaq 0x539b1(%rip), %rdi     # 0x77318
leaq 0x5347a(%rip), %rsi     # 0x76de8
movl $0x2c7, %edx            # imm = 0x2C7
leaq 0x53ab1(%rip), %rcx     # 0x7742b
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, -0x60(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x239b9
leaq 0x53f02(%rip), %rax     # 0x778b5
movq %rax, -0x68(%rbp)
jmp 0x239c1
movq -0x28(%rbp), %rax
movq %rax, -0x68(%rbp)
movq -0x60(%rbp), %rdi
movq -0x68(%rbp), %rdx
leaq 0x5379b(%rip), %rsi     # 0x7716b
movb $0x0, %al
callq 0x94d0
movq -0x18(%rbp), %rdi
leaq 0x5407b(%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 0x53a6f(%rip), %rsi     # 0x77479
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 0x5356b(%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 0x23c6a
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x23a64
jmp 0x23a83
leaq 0x538ad(%rip), %rdi     # 0x77318
leaq 0x53376(%rip), %rsi     # 0x76de8
movl $0x2cb, %edx            # imm = 0x2CB
leaq 0x539ad(%rip), %rcx     # 0x7742b
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, -0x70(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0x23abd
leaq 0x53dfe(%rip), %rax     # 0x778b5
movq %rax, -0x78(%rbp)
jmp 0x23ac5
movq -0x38(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x70(%rbp), %rdi
movq -0x78(%rbp), %rdx
leaq 0x53697(%rip), %rsi     # 0x7716b
movb $0x0, %al
callq 0x94d0
movq -0x18(%rbp), %rdi
leaq 0x53f77(%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 0x5396f(%rip), %rsi     # 0x7747d
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 0x53467(%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 0x23c6a
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x23b68
jmp 0x23b87
leaq 0x537a9(%rip), %rdi     # 0x77318
leaq 0x53272(%rip), %rsi     # 0x76de8
movl $0x2cf, %edx            # imm = 0x2CF
leaq 0x538a9(%rip), %rcx     # 0x7742b
callq 0x30a0
leaq -0x50(%rbp), %rdi
callq 0x8c90
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rax
movq 0x68(%rax), %rdx
leaq -0x50(%rbp), %rsi
callq 0x216c0
movq -0x18(%rbp), %rax
movq %rax, -0x80(%rbp)
cmpq $0x0, -0x48(%rbp)
jne 0x23bc4
leaq 0x53cfa(%rip), %rax     # 0x778b5
movq %rax, -0x88(%rbp)
jmp 0x23bcf
movq -0x48(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x80(%rbp), %rdi
movq -0x88(%rbp), %rdx
leaq 0x5358a(%rip), %rsi     # 0x7716b
movb $0x0, %al
callq 0x94d0
movq -0x18(%rbp), %rdi
leaq 0x53e6a(%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 0x53866(%rip), %rsi     # 0x77481
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 0x5335a(%rip), %rsi     # 0x76f9e
callq 0x8d70
leaq -0x50(%rbp), %rdi
callq 0x9310
movq -0x18(%rbp), %rdi
movl $0x29, %esi
callq 0x8ea0
movb $0x1, -0x1(%rbp)
jmp 0x23c6a
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x90, %rsp
popq %rbp
retq
nopl (%rax,%rax)