// File: RuiDGPires[P]CrimLang/src/parser.cpp
// Function: ps_Tracker::factor()
void _ps_Tracker::factor(){
		this->enter(crl::Node::Type::FACTOR);
		if (accept(crl::Token::Type::IDENT)){
			if (this->current.type == crl::Token::Type::LPAREN){
				this->func_call();
			}else if (this->current.type == crl::Token::Type::LSBR){
				this->enter(crl::Node::Type::VECTOR);
				this->add(this->previous());
				this->next();
				EXP_AND_ADD(crl::Token::Type::INT);
				this->expect(crl::Token::Type::RSBR);
				this->leave();
			}else if (this->current.type == crl::Token::Type::INC){
				this->enter(crl::Node::Type::INC);
				this->add(this->previous());
				this->next();
				this->leave();
			}else if (this->current.type == crl::Token::Type::DECR){
				this->enter(crl::Node::Type::DEC);
				this->add(this->previous());
				this->next();
				this->leave();
			}else
				this->add(this->previous());
		
		} else if ACC_AND_ADD(crl::Token::Type::STRING);
		else if ACC_AND_ADD_VAR(TYPE_NUMERIC());
		else if (accept(crl::Token::Type::LPAREN)){
			this->expression();
			this->expect(crl::Token::Type::RPAREN);
		}else{
			throw crl::UnexpectedToken(this->current);
		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x200, %rsp            # imm = 0x200
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x1a0(%rbp)
movl $0xf, %esi
callq 0x190f0
movq -0x1a0(%rbp), %rdi
movl $0x1, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1969e
jmp 0x19973
movq -0x1a0(%rbp), %rax
cmpl $0x20, 0x58(%rax)
jne 0x196bc
movq -0x1a0(%rbp), %rdi
callq 0x19370
jmp 0x1996e
movq -0x1a0(%rbp), %rax
cmpl $0x22, 0x58(%rax)
jne 0x197cb
movq -0x1a0(%rbp), %rdi
movl $0x19, %esi
callq 0x190f0
movq -0x1a0(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x38(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x14170
movq -0x1a0(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
callq 0x19290
jmp 0x19712
leaq -0x38(%rbp), %rdi
callq 0x285a0
movq -0x1a0(%rbp), %rdi
callq 0x18c60
movq -0x1a0(%rbp), %rdi
movl $0x13, %esi
callq 0x18eb0
movq -0x1a0(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x78(%rbp), %rdi
movq %rdi, -0x1b0(%rbp)
callq 0x14170
movq -0x1a0(%rbp), %rdi
movq -0x1b0(%rbp), %rsi
callq 0x19290
jmp 0x1976c
leaq -0x78(%rbp), %rdi
callq 0x285a0
movq -0x1a0(%rbp), %rdi
movl $0x23, %esi
callq 0x18eb0
movq -0x1a0(%rbp), %rdi
callq 0x19240
jmp 0x1996c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x285a0
jmp 0x19c02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x285a0
jmp 0x19c02
movq -0x1a0(%rbp), %rax
cmpl $0x18, 0x58(%rax)
jne 0x1986a
movq -0x1a0(%rbp), %rdi
movl $0x13, %esi
callq 0x190f0
movq -0x1a0(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0xa8(%rbp), %rdi
movq %rdi, -0x1b8(%rbp)
callq 0x14170
movq -0x1a0(%rbp), %rdi
movq -0x1b8(%rbp), %rsi
callq 0x19290
jmp 0x19824
leaq -0xa8(%rbp), %rdi
callq 0x285a0
movq -0x1a0(%rbp), %rdi
callq 0x18c60
movq -0x1a0(%rbp), %rdi
callq 0x19240
jmp 0x1996a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x285a0
jmp 0x19c02
movq -0x1a0(%rbp), %rax
cmpl $0x19, 0x58(%rax)
jne 0x19906
movq -0x1a0(%rbp), %rdi
movl $0x14, %esi
callq 0x190f0
movq -0x1a0(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0xd8(%rbp), %rdi
movq %rdi, -0x1c0(%rbp)
callq 0x14170
movq -0x1a0(%rbp), %rdi
movq -0x1c0(%rbp), %rsi
callq 0x19290
jmp 0x198c3
leaq -0xd8(%rbp), %rdi
callq 0x285a0
movq -0x1a0(%rbp), %rdi
callq 0x18c60
movq -0x1a0(%rbp), %rdi
callq 0x19240
jmp 0x19968
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x285a0
jmp 0x19c02
movq -0x1a0(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x108(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
callq 0x14170
movq -0x1a0(%rbp), %rdi
movq -0x1c8(%rbp), %rsi
callq 0x19290
jmp 0x1993d
leaq -0x108(%rbp), %rdi
callq 0x285a0
jmp 0x19968
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x285a0
jmp 0x19c02
jmp 0x1996a
jmp 0x1996c
jmp 0x1996e
jmp 0x19b19
movq -0x1a0(%rbp), %rdi
movl $0x1c, %esi
callq 0x18d20
testb $0x1, %al
jne 0x1998a
jmp 0x199ef
movq -0x1a0(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x138(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0x14170
movq -0x1a0(%rbp), %rdi
movq -0x1d0(%rbp), %rsi
callq 0x19290
jmp 0x199c1
leaq -0x138(%rbp), %rdi
callq 0x285a0
jmp 0x19b17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x285a0
jmp 0x19c02
movq -0x1a0(%rbp), %rdi
movl $0x3, %esi
movl $0x13, %edx
movl $0x14, %ecx
movl $0x1b, %r8d
movb $0x0, %al
callq 0x18d60
testb $0x1, %al
jne 0x19a18
jmp 0x19a7d
movq -0x1a0(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x168(%rbp), %rdi
movq %rdi, -0x1d8(%rbp)
callq 0x14170
movq -0x1a0(%rbp), %rdi
movq -0x1d8(%rbp), %rsi
callq 0x19290
jmp 0x19a4f
leaq -0x168(%rbp), %rdi
callq 0x285a0
jmp 0x19b15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x285a0
jmp 0x19c02
movq -0x1a0(%rbp), %rdi
movl $0x20, %esi
callq 0x18d20
testb $0x1, %al
jne 0x19a94
jmp 0x19ab3
movq -0x1a0(%rbp), %rdi
callq 0x195a0
movq -0x1a0(%rbp), %rdi
movl $0x21, %esi
callq 0x18eb0
jmp 0x19b13
movl $0x50, %edi
callq 0x4190
movq -0x1a0(%rbp), %rsi
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x1e0(%rbp)
addq $0x38, %rsi
callq 0x9030
jmp 0x19adc
movq -0x1e0(%rbp), %rdi
leaq 0x20266(%rip), %rsi     # 0x39d50
leaq -0x10881(%rip), %rdx    # 0x9270
callq 0x4550
movq -0x1e0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
callq 0x4230
jmp 0x19c02
jmp 0x19b15
jmp 0x19b17
jmp 0x19b19
movq -0x1a0(%rbp), %rdi
movl $0x12, %esi
callq 0x18d20
testb $0x1, %al
jne 0x19b33
jmp 0x19bed
movq -0x1a0(%rbp), %rdi
movl $0x15, %esi
callq 0x19180
movq -0x1a0(%rbp), %rdi
movq %rsp, %rax
movl $0xb, 0x10(%rax)
movl $0xa, 0x8(%rax)
movl $0x8, (%rax)
xorl %eax, %eax
movl $0x5, %edx
movl $0x6, %ecx
movl $0x7, %r8d
movl $0x9, %r9d
movl %r8d, %esi
callq 0x18f40
movq -0x1a0(%rbp), %rdi
callq 0x18cf0
movq %rax, %rsi
leaq -0x198(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
callq 0x14170
movq -0x1a0(%rbp), %rdi
movq -0x1e8(%rbp), %rsi
callq 0x19290
jmp 0x19bb9
leaq -0x198(%rbp), %rdi
callq 0x285a0
movq -0x1a0(%rbp), %rdi
callq 0x19240
jmp 0x19bed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x285a0
jmp 0x19c02
movq -0x1a0(%rbp), %rdi
callq 0x19240
addq $0x200, %rsp            # imm = 0x200
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x4580
nopl (%rax,%rax)