// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %rbx
movq 0x88c1(%rip), %r14      # 0xcfd8
leaq 0x3dd1(%rip), %rsi      # 0x84ef
movq %r14, %rdi
callq 0x21c0
movq 0xa0(%rbx), %rsi
subq 0x98(%rbx), %rsi
sarq $0x5, %rsi
movq %rax, %rdi
callq 0x2150
leaq 0x38f6(%rip), %rsi      # 0x803d
movq %rax, %rdi
callq 0x21c0
movq %rax, %rdi
callq 0x2100
leaq 0x3db4(%rip), %rsi      # 0x8512
movq %r14, %rdi
callq 0x21c0
movq 0x80(%rbx), %rcx
movq 0xa0(%rbx), %rdx
subq 0x98(%rbx), %rdx
sarq $0x5, %rdx
imulq $0x18, %rdx, %rdx
movq 0x8(%rcx,%rdx), %rsi
subq (%rcx,%rdx), %rsi
sarq $0x3, %rsi
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
movq %rax, %rdi
callq 0x2100
movq 0xa0(%rbx), %rax
movq 0x80(%rbx), %rcx
movq %rbx, -0x30(%rbp)
movq 0x98(%rbx), %rdx
movq %rax, %rsi
subq %rdx, %rsi
sarq $0x5, %rsi
imulq $0x18, %rsi, %rsi
movq (%rcx,%rsi), %rbx
leaq -0x50(%rbp), %r12
leaq 0x3dc3(%rip), %r13      # 0x85a1
subq %rdx, %rax
sarq $0x5, %rax
imulq $0x18, %rax, %rax
cmpq 0x8(%rcx,%rax), %rbx
je 0x4961
movq 0x87dd(%rip), %rdi      # 0xcfd8
leaq 0x3d28(%rip), %rsi      # 0x852a
callq 0x21c0
movq %rax, %r15
movq (%rbx), %rdi
callq 0x7828
movq %r12, %rdi
movq %rax, %rsi
callq 0x76d8
movq -0x48(%rbp), %rsi
subq -0x50(%rbp), %rsi
sarq $0x5, %rsi
movq %r15, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x2100
movq %r12, %rdi
callq 0x4ba2
movq 0x8790(%rip), %rdi      # 0xcfd8
leaq 0x3cff(%rip), %rsi      # 0x854e
callq 0x21c0
movq %rax, %r15
movq (%rbx), %rsi
movq %r12, %rdi
callq 0x780c
movq %r15, %rdi
movq %r12, %rsi
callq 0x2190
movq %rax, %rdi
leaq 0x3ce3(%rip), %rsi      # 0x855a
callq 0x21c0
movq %r12, %rdi
callq 0x20f0
xorl %r15d, %r15d
movl %r15d, %r15d
movq (%rbx), %rdi
callq 0x7828
movq %r12, %rdi
movq %rax, %rsi
callq 0x76d8
movq -0x48(%rbp), %r14
subq -0x50(%rbp), %r14
sarq $0x5, %r14
movq %r12, %rdi
callq 0x4ba2
cmpq %r15, %r14
jbe 0x48fb
movq (%rbx), %rdi
callq 0x7828
movq %r12, %rdi
movq %rax, %rsi
callq 0x76d8
movq %r12, %rdi
movq %r15, %rsi
callq 0x4c0a
movq 0x86fd(%rip), %rdi      # 0xcfd8
movq %rax, %rsi
callq 0x2190
movq %rax, %rdi
movq %r13, %rsi
callq 0x21c0
movq %r12, %rdi
callq 0x4ba2
incl %r15d
jmp 0x4887
movq 0x86d6(%rip), %r14      # 0xcfd8
movq %r14, %rdi
callq 0x2100
movq %r14, %rdi
leaq 0x3c4b(%rip), %r14      # 0x855f
movq %r14, %rsi
callq 0x21c0
movq %rax, %rdi
callq 0x2100
movq %rax, %rdi
movq %r14, %rsi
callq 0x21c0
movq %rax, %rdi
callq 0x2100
movq %rax, %rdi
callq 0x2100
addq $0x8, %rbx
movq -0x30(%rbp), %rdx
movq 0xa0(%rdx), %rax
movq 0x80(%rdx), %rcx
movq 0x98(%rdx), %rdx
jmp 0x47de
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x20f0
jmp 0x498c
jmp 0x4980
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x4ba2
movq %rbx, %rdi
callq 0x22c0