// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/backend/parser.c
// Function: rule_expr_mul
_RULE(expr_mul)
	_RULE_RETURNED_NODE(_RULE_NAME(expr_unary)(_RULE_PARSER_CTX))

	for (;_RULE_CURRENT_NODE != NULL;) {
		_RULE_PUSH_LEXCTX
		_RULE_NEXT_TOKEN
		if (_RULE_TOKEN_TYPE == BE_TOKEN_PNCT_MUL) {
			_EXPR_BINARY_ITEM(BE_NODE_EXPR_MUL, expr_unary)
		} else if (_RULE_TOKEN_TYPE == BE_TOKEN_PNCT_DIV) {
			_EXPR_BINARY_ITEM(BE_NODE_EXPR_DIV, expr_unary)
		} else if (_RULE_TOKEN_TYPE == BE_TOKEN_PNCT_MOD) {
			_EXPR_BINARY_ITEM(BE_NODE_EXPR_MOD, expr_unary)
		} else {
			_RULE_POP_LEXCTX
			break;
		}
		_RULE_ABANDON_LEXCTX
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x411b5
jmp 0x411d4
leaq 0x3efa3(%rip), %rdi     # 0x8015f
leaq 0x3e8ed(%rip), %rsi     # 0x7fab0
movl $0x341, %edx            # imm = 0x341
leaq 0x3f3bd(%rip), %rcx     # 0x8058c
callq 0x30a0
movq -0x10(%rbp), %rax
cmpq $0x0, (%rax)
je 0x411e0
jmp 0x411ff
leaq 0x3efab(%rip), %rdi     # 0x80192
leaq 0x3e8c2(%rip), %rsi     # 0x7fab0
movl $0x341, %edx            # imm = 0x341
leaq 0x3f392(%rip), %rcx     # 0x8058c
callq 0x30a0
movq $0x0, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x4cc0
movq $0x0, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x414d0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x414a9
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x4cc0
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x4940
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x28(%rax)
cmpq $0x0, -0x20(%rbp)
jne 0x4126c
movl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x54(%rbp)
jmp 0x41275
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl $0x4016, %eax           # imm = 0x4016
jne 0x41316
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x414d0
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x41300
movq -0x10(%rbp), %rdi
movl $0xeb0, %esi            # imm = 0xEB0
leaq 0x3f30c(%rip), %rdx     # 0x805bb
xorl %eax, %eax
movl %eax, %ecx
callq 0x3d980
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rcx
movq -0x28(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x28(%rbp), %rdx
callq 0x7e20
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x30(%rbp), %rdx
callq 0x7e20
movq %rax, -0x18(%rbp)
jmp 0x41311
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x4d50
jmp 0x414a9
jmp 0x41498
cmpq $0x0, -0x20(%rbp)
jne 0x41327
movl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x58(%rbp)
jmp 0x41330
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl $0x4017, %eax           # imm = 0x4017
jne 0x413d1
movq -0x18(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
callq 0x414d0
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0x413bb
movq -0x10(%rbp), %rdi
movl $0xeb1, %esi            # imm = 0xEB1
leaq 0x3f262(%rip), %rdx     # 0x805cc
xorl %eax, %eax
movl %eax, %ecx
callq 0x3d980
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rcx
movq -0x38(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x38(%rbp), %rdx
callq 0x7e20
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rcx
movq -0x40(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x40(%rbp), %rdx
callq 0x7e20
movq %rax, -0x18(%rbp)
jmp 0x413cc
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x4d50
jmp 0x414a9
jmp 0x41496
cmpq $0x0, -0x20(%rbp)
jne 0x413e2
movl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x5c(%rbp)
jmp 0x413eb
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl $0x4018, %eax           # imm = 0x4018
jne 0x41486
movq -0x18(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
callq 0x414d0
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
je 0x41476
movq -0x10(%rbp), %rdi
movl $0xeb2, %esi            # imm = 0xEB2
leaq 0x3f1b8(%rip), %rdx     # 0x805dd
xorl %eax, %eax
movl %eax, %ecx
callq 0x3d980
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rcx
movq -0x48(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x48(%rbp), %rdx
callq 0x7e20
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x30(%rax)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x50(%rbp), %rdx
callq 0x7e20
movq %rax, -0x18(%rbp)
jmp 0x41484
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x4d50
jmp 0x414a9
jmp 0x41494
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x4d50
jmp 0x414a9
jmp 0x41496
jmp 0x41498
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x4de0
jmp 0x41228
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0x4de0
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nopw (%rax,%rax)