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

	switch (node->type) {
		case FE_NODE_EXPR_MUL: {
			assert(node->nchilds == 2);

			_ir_expr_mul(ctx, rstr, NULL, expr_result, node);

			return true;
		}
		case FE_NODE_EXPR_DIV: {
			assert(node->nchilds == 2);

			_ir_expr_div(ctx, rstr, NULL, expr_result, node);

			return true;
		}
		case FE_NODE_EXPR_MOD: {
			assert(node->nchilds == 2);

			_ir_expr_mod(ctx, rstr, NULL, expr_result, node);

			return true;
		}
		default: {
			return false;
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x314b1
jmp 0x314d0
leaq 0x4b09e(%rip), %rdi     # 0x7c556
leaq 0x46c11(%rip), %rsi     # 0x780d0
movl $0xc78, %edx            # imm = 0xC78
leaq 0x47843(%rip), %rcx     # 0x78d0e
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x314d9
jmp 0x314f8
leaq 0x4162e(%rip), %rdi     # 0x72b0e
leaq 0x46be9(%rip), %rsi     # 0x780d0
movl $0xc79, %edx            # imm = 0xC79
leaq 0x4781b(%rip), %rcx     # 0x78d0e
callq 0x30a0
cmpq $0x0, -0x20(%rbp)
je 0x31501
jmp 0x31520
leaq 0x4370b(%rip), %rdi     # 0x74c13
leaq 0x46bc1(%rip), %rsi     # 0x780d0
movl $0xc7a, %edx            # imm = 0xC7A
leaq 0x477f3(%rip), %rcx     # 0x78d0e
callq 0x30a0
cmpq $0x0, -0x28(%rbp)
je 0x31529
jmp 0x31548
leaq 0x44aa3(%rip), %rdi     # 0x75fd3
leaq 0x46b99(%rip), %rsi     # 0x780d0
movl $0xc7b, %edx            # imm = 0xC7B
leaq 0x477cb(%rip), %rcx     # 0x78d0e
callq 0x30a0
movq -0x28(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x2c(%rbp)
subl $0xeb0, %eax            # imm = 0xEB0
je 0x31579
jmp 0x3155a
movl -0x2c(%rbp), %eax
subl $0xeb1, %eax            # imm = 0xEB1
je 0x315c6
jmp 0x31566
movl -0x2c(%rbp), %eax
subl $0xeb2, %eax            # imm = 0xEB2
je 0x31610
jmp 0x3165a
movq -0x28(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x31585
jmp 0x315a4
leaq 0x4d0e8(%rip), %rdi     # 0x7e674
leaq 0x46b3d(%rip), %rsi     # 0x780d0
movl $0xc7f, %edx            # imm = 0xC7F
leaq 0x4776f(%rip), %rcx     # 0x78d0e
callq 0x30a0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
xorl %eax, %eax
movl %eax, %edx
callq 0x35cf0
movb $0x1, -0x1(%rbp)
jmp 0x3165e
movq -0x28(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x315d2
jmp 0x315f1
leaq 0x4d09b(%rip), %rdi     # 0x7e674
leaq 0x46af0(%rip), %rsi     # 0x780d0
movl $0xc86, %edx            # imm = 0xC86
leaq 0x47722(%rip), %rcx     # 0x78d0e
callq 0x30a0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
xorl %eax, %eax
movl %eax, %edx
callq 0x36350
movb $0x1, -0x1(%rbp)
jmp 0x3165e
movq -0x28(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x3161c
jmp 0x3163b
leaq 0x4d051(%rip), %rdi     # 0x7e674
leaq 0x46aa6(%rip), %rsi     # 0x780d0
movl $0xc8d, %edx            # imm = 0xC8D
leaq 0x476d8(%rip), %rcx     # 0x78d0e
callq 0x30a0
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rcx
movq -0x28(%rbp), %r8
xorl %eax, %eax
movl %eax, %edx
callq 0x369b0
movb $0x1, -0x1(%rbp)
jmp 0x3165e
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)