// File: /workspace/github_cpp_makefile_star2_O2/Davidc2525[P]Leaf/parser/Parser.cpp
// Function: Parser::Factor(LEAF::AST::NODEU*&)
void Parser::Factor(ASTU&f_node) {
		Obj* obj = new Obj(); string * ns=new string(""); string * buff = new string(""); 
		switch (la->kind) {
		case _t_pointer: case _name: {
			Designator(f_node);
			break;
		}
		case 47 /* "true" */: {
			Get();
			*obj=*new Obj(0,new string(""),symbol_table::boolType);  f_node = const_int_node(1); set_obj(f_node,obj);
			break;
		}
		case 48 /* "false" */: {
			Get();
			*obj=*new Obj(0,new string(""),symbol_table::boolType);  f_node = const_int_node(0); set_obj(f_node,obj);
			break;
		}
		case _t_r_pointer: {
			Get();
			Factor(f_node);
			cout<<"; referenciar "<<*get_obj(f_node)->name<<endl;  
			make_ref(get_obj(f_node));  /*dump(obj->type,2);*/ 
			f_node = (f_node);
			
			break;
		}
		case _floatLit: {
			Get();
			LexString(buff);
			*obj=*symbol_table::insert(1,new string(""),symbol_table::floatType);
			//*obj=*new Obj(0,new string(""),symbol_table::floatType); 
			//obj->val = stof(buff->c_str());
			f_node = const_float_node(stof(buff->c_str()));
			//cout<<"float "<<stof(buff->c_str())<<endl;
			set_obj(f_node,obj);
			
			//string * resr = new string("dq fc_ ");
			//resr->append(buff->c_str());
			//data_section->add(new DInstruccion(resr->c_str()));
			//visitor_generator->assembly->get_program()->section(Sections::data);
			
			break;
		}
		case _stringConst: {
			Get();
			LexString(buff);
			//*obj=*symbol_table::insert(0,new string(""),symbol_table::stringType);
			*obj=*new Obj(0,new string(""),symbol_table::stringType); 
			//make_ref(obj);
			//string * key = sl->add(buff);
			
			//obj->val = stof(buff->c_str());
			//f_node = const_string_node(key);
			//cout<<"float "<<stof(buff->c_str())<<endl;
			//set_obj(f_node,obj);
			
			break;
		}
		case _number: {
			Get();
			LexString(buff);  
			*obj=*new Obj(0,new string(""),symbol_table::intType); 
			
			obj->val = atoi(buff->c_str());
			f_node = const_int_node(obj->val);
			set_obj(f_node,obj);
			
			break;
		}
		case 15 /* "(" */: {
			Get();
			Expr(f_node);
			Expect(16 /* ")" */);
			break;
		}
		case 28 /* "extern" */: case 29 /* "fun" */: {
			FuncDecl(f_node);
			break;
		}
		default: SynErr(64); break;
		}
		while (la->kind == 15 /* "(" */) {
			ActParams(f_node,true);
			cout << " ;call "<<*get_obj(f_node)->name<<endl; 
		}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %rbx
movq %rdi, %r14
pushq $0x48
popq %rdi
callq 0x5260
movq %rax, %r15
movb $0x1, 0x4(%rax)
xorl %eax, %eax
movb %al, 0x10(%r15)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%r15)
movb %al, 0x28(%r15)
orl $-0x1, 0x30(%r15)
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r12
leaq 0xc063(%rip), %rsi      # 0x17da3
leaq 0x8(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r12
leaq 0xc044(%rip), %rsi      # 0x17da3
leaq 0x8(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movq 0x30(%r14), %rax
movl (%rax), %eax
leal -0x1(%rax), %ecx
cmpl $0xe, %ecx
ja 0xbd9a
leaq 0xabe7(%rip), %rax      # 0x16968
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq %r14, %rdi
movq %rbx, %rsi
callq 0xb484
jmp 0xc079
leal -0x1c(%rax), %ecx
cmpl $0x2, %ecx
jb 0xbe0c
cmpl $0x2f, %eax
je 0xc00e
cmpl $0x30, %eax
jne 0xbe1c
movq %r14, %rdi
callq 0xaa2e
pushq $0x48
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0xbfce(%rip), %rsi      # 0x17da3
leaq 0x8(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
leaq 0x19f8f(%rip), %rax     # 0x25d78
movq (%rax), %rcx
movq %r12, %rdi
xorl %esi, %esi
movq %r13, %rdx
callq 0xf244
pushq $0x9
popq %rcx
movq %r15, %rdi
movq %r12, %rsi
rep  movsq (%rsi), %es:(%rdi)
xorl %edi, %edi
jmp 0xc066
movq %r14, %rdi
movq %rbx, %rsi
callq 0xb7c6
jmp 0xc079
pushq $0x40
popq %rsi
movq %r14, %rdi
callq 0xa6a4
jmp 0xc079
movq %r14, %rdi
callq 0xaa2e
movq %r14, %rdi
movq %r12, %rsi
callq 0xd178
pushq $0x48
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0xbf47(%rip), %rsi      # 0x17da3
leaq 0x8(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
leaq 0x19f38(%rip), %rax     # 0x25da8
movq (%rax), %rcx
movq %r12, %rdi
xorl %esi, %esi
movq %r13, %rdx
callq 0xf244
pushq $0x9
popq %rcx
movq %r15, %rdi
movq %r12, %rsi
rep  movsq (%rsi), %es:(%rdi)
jmp 0xc079
movq %r14, %rdi
callq 0xaa2e
movq %r14, %rdi
movq %rbx, %rsi
callq 0xbcf4
movq 0x19125(%rip), %rdi     # 0x24fd0
leaq 0xae83(%rip), %rsi      # 0x16d35
callq 0x5240
movq %rax, %r15
movq (%rbx), %rdi
callq 0x80da
movq 0x8(%rax), %rsi
movq %r15, %rdi
callq 0x5200
movq %rax, %rdi
callq 0x5120
movq (%rbx), %rdi
callq 0x80da
movq %r14, %rdi
movq %rax, %rsi
callq 0xd3e2
jmp 0xc079
movq %r14, %rdi
callq 0xaa2e
movq %r14, %rdi
movq %r12, %rsi
callq 0xd178
pushq $0x48
popq %rdi
callq 0x5260
movq %rax, %r13
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %rbp
leaq 0xbe85(%rip), %rsi      # 0x17da3
leaq 0x8(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
leaq 0x19e56(%rip), %rax     # 0x25d88
movq (%rax), %rcx
movq %r13, %rdi
xorl %esi, %esi
movq %rbp, %rdx
callq 0xf244
pushq $0x9
popq %rcx
movq %r15, %rdi
movq %r13, %rsi
rep  movsq (%rsi), %es:(%rdi)
movq (%r12), %rdi
callq 0x53d0
movl %eax, 0x2c(%r15)
movl %eax, %edi
jmp 0xc066
movq %r14, %rdi
callq 0xaa2e
movq %r14, %rdi
movq %rbx, %rsi
callq 0xc8fa
pushq $0x10
popq %rsi
movq %r14, %rdi
callq 0xaa9a
jmp 0xc079
movq %r14, %rdi
callq 0xaa2e
movq %r14, %rdi
movq %r12, %rsi
callq 0xd178
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0xbdf9(%rip), %rsi      # 0x17da3
leaq 0x8(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
leaq 0x19dda(%rip), %rax     # 0x25d98
movq (%rax), %rdx
pushq $0x1
popq %rdi
movq %r13, %rsi
callq 0xf292
pushq $0x9
popq %rcx
movq %r15, %rdi
movq %rax, %rsi
rep  movsq (%rsi), %es:(%rdi)
movq (%r12), %rsi
leaq 0x8(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x70ae
leaq 0x8(%rsp), %rdi
xorl %esi, %esi
callq 0xd419
callq 0x81ec
movq %rax, (%rbx)
leaq 0x8(%rsp), %rdi
callq 0x5488
movq (%rbx), %rdi
jmp 0xc071
movq %r14, %rdi
callq 0xaa2e
pushq $0x48
popq %rdi
callq 0x5260
movq %rax, %r12
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r13
leaq 0xbd70(%rip), %rsi      # 0x17da3
leaq 0x8(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
leaq 0x19d31(%rip), %rax     # 0x25d78
movq (%rax), %rcx
movq %r12, %rdi
xorl %esi, %esi
movq %r13, %rdx
callq 0xf244
pushq $0x9
popq %rcx
movq %r15, %rdi
movq %r12, %rsi
rep  movsq (%rsi), %es:(%rdi)
pushq $0x1
popq %rdi
callq 0x81b3
movq %rax, (%rbx)
movq %rax, %rdi
movq %r15, %rsi
callq 0x80df
pushq $0x1
popq %rbp
movq 0x18f4d(%rip), %r15     # 0x24fd0
leaq 0xacba(%rip), %r12      # 0x16d44
movq 0x30(%r14), %rax
cmpl $0xf, (%rax)
jne 0xc0cc
movq %r14, %rdi
movq %rbx, %rsi
movl %ebp, %edx
callq 0xb6b2
movq %r15, %rdi
movq %r12, %rsi
callq 0x5240
movq %rax, %r13
movq (%rbx), %rdi
callq 0x80da
movq 0x8(%rax), %rsi
movq %r13, %rdi
callq 0x5200
movq %rax, %rdi
callq 0x5120
jmp 0xc08a
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xc122
jmp 0xc122
jmp 0xc100
jmp 0xc100
jmp 0xc122
jmp 0xc122
jmp 0xc117
jmp 0xc122
movq %rax, %rbx
jmp 0xc148
movq %rax, %rbx
pushq $0x20
popq %rsi
movq %rbp, %rdi
callq 0x5270
jmp 0xc11a
movq %rax, %rbx
pushq $0x20
popq %rsi
movq %r13, %rdi
callq 0x5270
jmp 0xc125
movq %rax, %rbx
pushq $0x20
jmp 0xc11c
movq %rax, %rbx
pushq $0x48
popq %rsi
movq %r13, %rdi
jmp 0xc143
movq %rax, %rbx
pushq $0x48
jmp 0xc13f
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x5488
jmp 0xc148
jmp 0xc13a
movq %rax, %rbx
pushq $0x20
popq %rsi
movq %r12, %rdi
callq 0x5270
movq %rbx, %rdi
callq 0x5420