// File: /workspace/github_cpp_makefile_star2_O2/Davidc2525[P]Leaf/parser/Parser.cpp
// Function: Parser::Designator(LEAF::AST::NODEU*&)
void Parser::Designator(ASTU&d_ast) {
		Obj*obj = new Obj();  string * ns=new string(""); Obj * oex = new Obj(); 
		if (la->kind == _name) {
			Get();
			LexString(ns); 
			*obj=*symbol_table::find(ns); 
			ASTU nc = ident(ns); 
			set_obj(nc,obj); 
			d_ast=nc;
			//cout<<"; load "<<*get_obj(nc)->name<<", adr "<<get_obj(nc)->adr<<endl; 
			
		} else if (la->kind == _t_pointer) {
			Get();
			Factor(d_ast);
			d_ast = (d_ast); cout<<"; desreferenciar "<<*get_obj(d_ast)->name<<endl; un_pointer(get_obj(d_ast)); dump(get_obj(d_ast)->type,2); 
		} else SynErr(55);
		if (StartOf(3)) {
			while (la->kind == 49 /* "." */) {
				Get();
				Expect(_name);
				LexString(ns); *obj=*symbol_table::findField(ns,obj->type); cout<<"; load "<<*obj->name<<endl; 
			}
		} else if (la->kind == 26 /* "[" */) {
			Get();
			Expr(d_ast);
			Expect(27 /* "]" */);
			un_pointer(obj); 
			while (la->kind == 26 /* "[" */) {
				Get();
				Expr(d_ast);
				Expect(27 /* "]" */);
				un_pointer(obj); 
			}
		} else SynErr(56);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %r12
movq %rdi, %rbx
pushq $0x48
popq %rdi
callq 0x5260
movq %rax, %r14
movb $0x1, 0x4(%rax)
xorl %eax, %eax
movb %al, 0x10(%r14)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%r14)
movb %al, 0x28(%r14)
orl $-0x1, 0x30(%r14)
pushq $0x20
popq %rdi
callq 0x5260
movq %rax, %r15
leaq 0xc8d6(%rip), %rsi      # 0x17da3
leaq 0x7(%rsp), %rdx
movq %rax, %rdi
callq 0x70ae
movq 0x30(%rbx), %rax
movl (%rax), %eax
cmpl $0x1, %eax
je 0xb531
cmpl $0x4, %eax
jne 0xb5a5
movq %rbx, %rdi
callq 0xaa2e
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd178
movq %r15, %rdi
callq 0xf34e
pushq $0x9
popq %rcx
movq %r14, %rdi
movq %rax, %rsi
rep  movsq (%rsi), %es:(%rdi)
movq %r15, %rdi
callq 0x8175
movq %rax, %r13
movq %rax, %rdi
movq %r14, %rsi
callq 0x80df
movq %r13, (%r12)
jmp 0xb5b0
movq %rbx, %rdi
callq 0xaa2e
movq %rbx, %rdi
movq %r12, %rsi
callq 0xbcf4
movq 0x19a85(%rip), %rdi     # 0x24fd0
leaq 0xb731(%rip), %rsi      # 0x16c83
callq 0x5240
movq %rax, %r13
movq (%r12), %rdi
callq 0x80da
movq 0x8(%rax), %rsi
movq %r13, %rdi
callq 0x5200
movq %rax, %rdi
callq 0x5120
movq (%r12), %rdi
callq 0x80da
movq %rbx, %rdi
movq %rax, %rsi
callq 0xd1dc
movq (%r12), %rdi
callq 0x80da
movq 0x18(%rax), %rsi
pushq $0x2
popq %rdx
movq %rbx, %rdi
callq 0xd092
jmp 0xb5b0
pushq $0x37
popq %rsi
movq %rbx, %rdi
callq 0xa6a4
movq 0x30(%rbx), %rax
movslq (%rax), %rax
leaq 0xb402(%rip), %rcx      # 0x169c0
cmpb $0x1, 0x9c(%rax,%rcx)
jne 0xb640
pushq $0x9
popq %r12
movq 0x199fd(%rip), %r13     # 0x24fd0
leaq 0xb6bb(%rip), %rbp      # 0x16c95
cmpl $0x31, %eax
jne 0xb686
movq %rbx, %rdi
callq 0xaa2e
movq %rbx, %rdi
pushq $0x4
popq %rsi
callq 0xaa9a
movq %rbx, %rdi
movq %r15, %rsi
callq 0xd178
movq 0x18(%r14), %rsi
movq %r15, %rdi
callq 0xf3cc
movq %r12, %rcx
movq %r14, %rdi
movq %rax, %rsi
rep  movsq (%rsi), %es:(%rdi)
movq %r13, %rdi
movq %rbp, %rsi
callq 0x5240
movq 0x8(%r14), %rsi
movq %rax, %rdi
callq 0x5200
movq %rax, %rdi
callq 0x5120
movq 0x30(%rbx), %rax
movl (%rax), %eax
jmp 0xb5da
cmpl $0x1a, %eax
jne 0xb67b
pushq $0x1b
popq %rbp
movq %rbx, %rdi
callq 0xaa2e
movq %rbx, %rdi
movq %r12, %rsi
callq 0xc8fa
movq %rbx, %rdi
movl %ebp, %esi
callq 0xaa9a
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd1dc
movq 0x30(%rbx), %rax
cmpl $0x1a, (%rax)
je 0xb648
jmp 0xb686
pushq $0x38
popq %rsi
movq %rbx, %rdi
callq 0xa6a4
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
pushq $0x20
popq %rsi
movq %r15, %rdi
callq 0x5270
movq %rbx, %rdi
callq 0x5420
nop