// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/frontend/irgen.c
// Function: ir_expr_mul_div_mod
static bool _ir_expr_mul_div_mod(
	IRGeneratorContext *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 0x16f51
jmp 0x16f70
leaq 0x655fe(%rip), %rdi     # 0x7c556
leaq 0x5d435(%rip), %rsi     # 0x74394
movl $0x820, %edx            # imm = 0x820
leaq 0x5e421(%rip), %rcx     # 0x7538c
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x16f79
jmp 0x16f98
leaq 0x5bb8e(%rip), %rdi     # 0x72b0e
leaq 0x5d40d(%rip), %rsi     # 0x74394
movl $0x821, %edx            # imm = 0x821
leaq 0x5e3f9(%rip), %rcx     # 0x7538c
callq 0x30a0
cmpq $0x0, -0x20(%rbp)
je 0x16fa1
jmp 0x16fc0
leaq 0x5dc6b(%rip), %rdi     # 0x74c13
leaq 0x5d3e5(%rip), %rsi     # 0x74394
movl $0x822, %edx            # imm = 0x822
leaq 0x5e3d1(%rip), %rcx     # 0x7538c
callq 0x30a0
cmpq $0x0, -0x28(%rbp)
je 0x16fc9
jmp 0x16fe8
leaq 0x5f003(%rip), %rdi     # 0x75fd3
leaq 0x5d3bd(%rip), %rsi     # 0x74394
movl $0x823, %edx            # imm = 0x823
leaq 0x5e3a9(%rip), %rcx     # 0x7538c
callq 0x30a0
movq -0x28(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x2c(%rbp)
subl $0xeb0, %eax            # imm = 0xEB0
je 0x17019
jmp 0x16ffa
movl -0x2c(%rbp), %eax
subl $0xeb1, %eax            # imm = 0xEB1
je 0x17066
jmp 0x17006
movl -0x2c(%rbp), %eax
subl $0xeb2, %eax            # imm = 0xEB2
je 0x170b0
jmp 0x170fa
movq -0x28(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x17025
jmp 0x17044
leaq 0x67648(%rip), %rdi     # 0x7e674
leaq 0x5d361(%rip), %rsi     # 0x74394
movl $0x827, %edx            # imm = 0x827
leaq 0x5e34d(%rip), %rcx     # 0x7538c
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 0x1ad70
movb $0x1, -0x1(%rbp)
jmp 0x170fe
movq -0x28(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x17072
jmp 0x17091
leaq 0x675fb(%rip), %rdi     # 0x7e674
leaq 0x5d314(%rip), %rsi     # 0x74394
movl $0x82e, %edx            # imm = 0x82E
leaq 0x5e300(%rip), %rcx     # 0x7538c
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 0x1b1a0
movb $0x1, -0x1(%rbp)
jmp 0x170fe
movq -0x28(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x170bc
jmp 0x170db
leaq 0x675b1(%rip), %rdi     # 0x7e674
leaq 0x5d2ca(%rip), %rsi     # 0x74394
movl $0x835, %edx            # imm = 0x835
leaq 0x5e2b6(%rip), %rcx     # 0x7538c
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 0x1b5d0
movb $0x1, -0x1(%rbp)
jmp 0x170fe
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)