// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/assembler/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 == ASM_TOKEN_PNCT_MUL) {
			_EXPR_BINARY_ITEM(ASM_NODE_EXPR_MUL, expr_unary)
		} else if (_RULE_TOKEN_TYPE == ASM_TOKEN_PNCT_DIV) {
			_EXPR_BINARY_ITEM(ASM_NODE_EXPR_DIV, expr_unary)
		} else if (_RULE_TOKEN_TYPE == ASM_TOKEN_PNCT_MOD) {
			_EXPR_BINARY_ITEM(ASM_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 0x312c5
jmp 0x312e4
leaq 0x1c893(%rip), %rdi     # 0x4db5f
leaq 0x1c3e5(%rip), %rsi     # 0x4d6b8
movl $0x12e, %edx            # imm = 0x12E
leaq 0x1ccd2(%rip), %rcx     # 0x4dfb1
callq 0xa0b0
movq -0x10(%rbp), %rax
cmpq $0x0, (%rax)
je 0x312f0
jmp 0x3130f
leaq 0x1c89b(%rip), %rdi     # 0x4db92
leaq 0x1c3ba(%rip), %rsi     # 0x4d6b8
movl $0x12e, %edx            # imm = 0x12E
leaq 0x1cca7(%rip), %rcx     # 0x4dfb1
callq 0xa0b0
movq $0x0, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0xbcd0
movq $0x0, -0x20(%rbp)
movq -0x10(%rbp), %rdi
callq 0x315e0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x315b9
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0xbcd0
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0xb950
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x28(%rax)
cmpq $0x0, -0x20(%rbp)
jne 0x3137c
movl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x54(%rbp)
jmp 0x31385
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
cmpl $0x4013, %eax           # imm = 0x4013
jne 0x31426
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x315e0
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x31410
movq -0x10(%rbp), %rdi
movl $0xeb0, %esi            # imm = 0xEB0
leaq 0x1cc21(%rip), %rdx     # 0x4dfe0
xorl %eax, %eax
movl %eax, %ecx
callq 0x2ad60
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 0xee30
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 0xee30
movq %rax, -0x18(%rbp)
jmp 0x31421
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0xbd60
jmp 0x315b9
jmp 0x315a8
cmpq $0x0, -0x20(%rbp)
jne 0x31437
movl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x58(%rbp)
jmp 0x31440
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x58(%rbp)
movl -0x58(%rbp), %eax
cmpl $0x4014, %eax           # imm = 0x4014
jne 0x314e1
movq -0x18(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
callq 0x315e0
movq %rax, -0x40(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0x314cb
movq -0x10(%rbp), %rdi
movl $0xeb1, %esi            # imm = 0xEB1
leaq 0x1cb78(%rip), %rdx     # 0x4dff2
xorl %eax, %eax
movl %eax, %ecx
callq 0x2ad60
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 0xee30
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 0xee30
movq %rax, -0x18(%rbp)
jmp 0x314dc
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0xbd60
jmp 0x315b9
jmp 0x315a6
cmpq $0x0, -0x20(%rbp)
jne 0x314f2
movl $0xffff, %eax           # imm = 0xFFFF
movl %eax, -0x5c(%rbp)
jmp 0x314fb
movq -0x20(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl $0x4015, %eax           # imm = 0x4015
jne 0x31596
movq -0x18(%rbp), %rax
movq %rax, -0x48(%rbp)
movq -0x10(%rbp), %rdi
callq 0x315e0
movq %rax, -0x50(%rbp)
cmpq $0x0, -0x50(%rbp)
je 0x31586
movq -0x10(%rbp), %rdi
movl $0xeb2, %esi            # imm = 0xEB2
leaq 0x1cacf(%rip), %rdx     # 0x4e004
xorl %eax, %eax
movl %eax, %ecx
callq 0x2ad60
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 0xee30
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 0xee30
movq %rax, -0x18(%rbp)
jmp 0x31594
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0xbd60
jmp 0x315b9
jmp 0x315a4
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0xbd60
jmp 0x315b9
jmp 0x315a6
jmp 0x315a8
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0xbdf0
jmp 0x31338
movq -0x10(%rbp), %rax
movq (%rax), %rdi
callq 0xbdf0
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x60, %rsp
popq %rbp
retq
nopw (%rax,%rax)