// File: matteorr[P]EarleyParser/EarleyParser.cpp
// Function: EarleyParser::printProductions(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void EarleyParser::printProductions( string mainNonTerminal )
{
	cout << "[DEBUG]: All Productions in chart[" << this->inputVector.size() << "]" << endl;
	cout << "[DEBUG]: size of chart " << this->earleyParserChart[ this->inputVector.size() ].size() << endl << endl;

	for( vector<State*>::iterator it = this->earleyParserChart[ this->inputVector.size() ].begin();
			it != this->earleyParserChart[ this->inputVector.size() ].end(); it++ )
	{
		cout << "[DEBUG]: size of production vector " << (*it)->getProductionPointer()->getProductionContent().size() << endl;
		cout << "[DEBUG]: - " << (*it)->getNonTerminal() << " -> ";
		for( unsigned int i = 0; i < (*it)->getProductionPointer()->getProductionContent().size(); i++ )
		{
			cout << (*it)->getProductionPointer()->getProductionContent().at(i) << " ";
		}
		cout << endl;
		cout << "****************************************************************** " << endl << "****************************************************************** " << endl << endl;
	}

	/*for( vector<State*>::iterator it = this->earleyParserChart[ this->inputVector.size() ].begin(); it != this->earleyParserChart[ this->inputVector.size() ].end(); it++ )
	{
		if( (*it)->getNonTerminal() == mainNonTerminal && (*it)->getProductionProgress() == (*it)->getProductionPointer()->getProductionContent().size() )
			this->printStateBackTrace( (*it) );
	}*/
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq 0x15af3(%rip), %rdi     # 0x1bfd8
leaq 0xcfef(%rip), %rsi      # 0x134db
callq 0x21c0
movq -0xb8(%rbp), %rdi
movq %rax, -0xd0(%rbp)
addq $0x98, %rdi
callq 0x6c90
movq -0xd0(%rbp), %rdi
movq %rax, %rsi
callq 0x2080
movq %rax, %rdi
leaq 0xcb05(%rip), %rsi      # 0x13029
callq 0x21c0
movq %rax, %rdi
movq 0x15a95(%rip), %rsi     # 0x1bfc8
callq 0x21f0
movq 0x15a99(%rip), %rdi     # 0x1bfd8
leaq 0xcfb8(%rip), %rsi      # 0x134fe
callq 0x21c0
movq -0xb8(%rbp), %rdi
movq %rax, -0xc0(%rbp)
movq %rdi, %rax
addq $0x80, %rax
movq %rax, -0xc8(%rbp)
addq $0x98, %rdi
callq 0x6c90
movq -0xc8(%rbp), %rdi
movq %rax, %rsi
callq 0x7990
movq %rax, %rdi
callq 0x7a20
movq -0xc0(%rbp), %rdi
movq %rax, %rsi
callq 0x2080
movq %rax, %rdi
movq 0x15a23(%rip), %rsi     # 0x1bfc8
callq 0x21f0
movq %rax, %rdi
movq 0x15a14(%rip), %rsi     # 0x1bfc8
callq 0x21f0
movq -0xb8(%rbp), %rdi
movq %rdi, %rax
addq $0x80, %rax
movq %rax, -0xb0(%rbp)
addq $0x98, %rdi
callq 0x6c90
movq -0xb0(%rbp), %rdi
movq %rax, %rsi
callq 0x7990
movq %rax, %rdi
callq 0x6d00
movq %rax, -0x18(%rbp)
movq -0xb8(%rbp), %rdi
movq %rdi, %rax
addq $0x80, %rax
movq %rax, -0xd8(%rbp)
addq $0x98, %rdi
callq 0x6c90
movq -0xd8(%rbp), %rdi
movq %rax, %rsi
callq 0x7990
movq %rax, %rdi
callq 0x6d70
movq %rax, -0x20(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x6d30
testb $0x1, %al
jne 0x664b
jmp 0x68f8
movq 0x15986(%rip), %rdi     # 0x1bfd8
leaq 0xcebd(%rip), %rsi      # 0x13516
callq 0x21c0
movq %rax, -0xe8(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x6da0
movq (%rax), %rdi
callq 0x116d0
movq %rax, %rsi
leaq -0x38(%rbp), %rdi
movq %rdi, -0xf0(%rbp)
callq 0x114b0
movq -0xf0(%rbp), %rdi
callq 0x6c90
movq -0xe8(%rbp), %rdi
movq %rax, %rsi
callq 0x2080
movq %rax, -0xe0(%rbp)
jmp 0x66ad
movq -0xe0(%rbp), %rdi
movq 0x1590d(%rip), %rsi     # 0x1bfc8
callq 0x21f0
jmp 0x66c2
leaq -0x38(%rbp), %rdi
callq 0x6f60
movq 0x15906(%rip), %rdi     # 0x1bfd8
leaq 0xce61(%rip), %rsi      # 0x1353a
callq 0x21c0
movq %rax, -0x108(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x6da0
movq (%rax), %rsi
leaq -0x68(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0x116a0
movq -0x108(%rbp), %rdi
movq -0x100(%rbp), %rsi
callq 0x21a0
movq %rax, -0xf8(%rbp)
jmp 0x671d
movq -0xf8(%rbp), %rdi
leaq 0xce1b(%rip), %rsi      # 0x13546
callq 0x21c0
jmp 0x6732
leaq -0x68(%rbp), %rdi
callq 0x2140
movl $0x0, -0x6c(%rbp)
movl -0x6c(%rbp), %eax
movq %rax, -0x110(%rbp)
leaq -0x18(%rbp), %rdi
callq 0x6da0
movq (%rax), %rdi
callq 0x116d0
movq %rax, %rsi
leaq -0x88(%rbp), %rdi
callq 0x114b0
leaq -0x88(%rbp), %rdi
callq 0x6c90
movq %rax, -0x118(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x6f60
movq -0x118(%rbp), %rcx
movq -0x110(%rbp), %rax
cmpq %rcx, %rax
jae 0x687f
leaq -0x18(%rbp), %rdi
callq 0x6da0
movq (%rax), %rdi
callq 0x116d0
movq %rax, %rsi
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x128(%rbp)
callq 0x114b0
movq -0x128(%rbp), %rdi
movl -0x6c(%rbp), %eax
movl %eax, %esi
callq 0x7090
movq %rax, -0x120(%rbp)
jmp 0x67e3
movq -0x120(%rbp), %rsi
movq 0x157e7(%rip), %rdi     # 0x1bfd8
callq 0x21a0
movq %rax, -0x130(%rbp)
jmp 0x67ff
movq -0x130(%rbp), %rdi
leaq 0xcd80(%rip), %rsi      # 0x1358d
callq 0x21c0
jmp 0x6814
leaq -0xa0(%rbp), %rdi
callq 0x6f60
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
jmp 0x6742
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x6f60
jmp 0x6901
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x68(%rbp), %rdi
callq 0x2140
jmp 0x6901
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x6f60
jmp 0x6901
movq 0x15752(%rip), %rdi     # 0x1bfd8
movq 0x1573b(%rip), %rsi     # 0x1bfc8
callq 0x21f0
movq 0x1573f(%rip), %rdi     # 0x1bfd8
leaq 0xccab(%rip), %rsi      # 0x1354b
callq 0x21c0
movq %rax, %rdi
movq 0x15719(%rip), %rsi     # 0x1bfc8
callq 0x21f0
movq %rax, %rdi
leaq 0xcc8d(%rip), %rsi      # 0x1354b
callq 0x21c0
movq %rax, %rdi
movq 0x156fb(%rip), %rsi     # 0x1bfc8
callq 0x21f0
movq %rax, %rdi
movq 0x156ec(%rip), %rsi     # 0x1bfc8
callq 0x21f0
leaq -0x18(%rbp), %rdi
xorl %esi, %esi
callq 0x6dc0
movq %rax, -0xa8(%rbp)
jmp 0x65f7
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
movq -0x40(%rbp), %rdi
callq 0x2340
nopw (%rax,%rax)