// File: davinash[P]regex/src/regex.cpp
// Function: RegEx::PrintTable(std::vector<RegExState*, std::allocator<RegExState*>>&)
void RegEx::PrintTable(Table &table) {
	std::string TableString;
	for(int i = 0; i < (int)table.size(); ++i) {
		RegExState *pState = table[i];
		if(pState->m_bAcceptingState) {
			TableString += "\t" + pState->getStringID() + "\t\n";
		}
	}
	TableString += "\n";
	for( int i = 0; i < (int)table.size(); ++i) {
		RegExState *pState = table[i];
		std::vector<RegExState*> State;
		pState->GetTransition(EPSILON, State);
		for(int j = 0; j < (int)State.size(); ++j) {
			TableString += "\t" + pState->getStringID() + " -> " + State[j]->getStringID();
			TableString += "\t[label = \"epsilon \"]\n";
		}
		std::set<char>::iterator iter;
		for(iter = m_InputSet.begin(); iter != m_InputSet.end(); ++iter) {
			pState->GetTransition(*iter, State);
			for(int j = 0; j < (int)State.size(); ++j) {
				TableString += "\t" + pState->getStringID() + " -> " + State[j]->getStringID();
				std::stringstream out;
				out << *iter;
				TableString += "\t[label = \"" + out.str() + " \"]\n";
			}
		}
	}
	std::cout << TableString;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x460, %rsp            # imm = 0x460
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x428(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x3320
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movl %eax, -0x42c(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa5d0
movq %rax, %rcx
movl -0x42c(%rbp), %eax
cmpl %ecx, %eax
jge 0x9dc7
movq -0x10(%rbp), %rdi
movslq -0x34(%rbp), %rsi
callq 0xa5f0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
testb $0x1, 0x6c(%rax)
je 0x9db7
movq -0x40(%rbp), %rsi
leaq -0xa0(%rbp), %rdi
callq 0x141e0
jmp 0x9ce5
leaq 0xc8f3(%rip), %rsi      # 0x165df
leaq -0x80(%rbp), %rdi
leaq -0xa0(%rbp), %rdx
callq 0xb510
jmp 0x9cfe
leaq 0xc8dc(%rip), %rdx      # 0x165e1
leaq -0x60(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0xb4c0
jmp 0x9d14
leaq -0x30(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3310
jmp 0x9d23
leaq -0x60(%rbp), %rdi
callq 0x3140
leaq -0x80(%rbp), %rdi
callq 0x3140
leaq -0xa0(%rbp), %rdi
callq 0x3140
jmp 0x9db7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xa44e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x9da6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0x9d9d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x3140
leaq -0x80(%rbp), %rdi
callq 0x3140
leaq -0xa0(%rbp), %rdi
callq 0x3140
jmp 0xa44e
jmp 0x9db9
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x9c8e
leaq 0xc814(%rip), %rsi      # 0x165e2
leaq -0x30(%rbp), %rdi
callq 0x3230
jmp 0x9dd9
movl $0x0, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
movl %eax, -0x430(%rbp)
movq -0x10(%rbp), %rdi
callq 0xa5d0
movq %rax, %rcx
movl -0x430(%rbp), %eax
cmpl %ecx, %eax
jge 0xa42a
movq -0x10(%rbp), %rdi
movslq -0xb0(%rbp), %rsi
callq 0xa5f0
movq (%rax), %rax
movq %rax, -0xb8(%rbp)
leaq -0xd0(%rbp), %rdi
movq %rdi, -0x438(%rbp)
callq 0xa470
movq -0x438(%rbp), %rdx
movq -0xb8(%rbp), %rdi
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x13fd0
jmp 0x9e50
movl $0x0, -0xd4(%rbp)
movl -0xd4(%rbp), %eax
movl %eax, -0x43c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0xa5d0
movq %rax, %rcx
movl -0x43c(%rbp), %eax
cmpl %ecx, %eax
jge 0xa040
movq -0xb8(%rbp), %rsi
leaq -0x158(%rbp), %rdi
callq 0x141e0
jmp 0x9e98
leaq 0xc740(%rip), %rsi      # 0x165df
leaq -0x138(%rbp), %rdi
leaq -0x158(%rbp), %rdx
callq 0xb510
jmp 0x9eb4
leaq 0xc729(%rip), %rdx      # 0x165e4
leaq -0x118(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0xb4c0
jmp 0x9ed0
movslq -0xd4(%rbp), %rsi
leaq -0xd0(%rbp), %rdi
callq 0xa5f0
movq (%rax), %rsi
leaq -0x178(%rbp), %rdi
callq 0x141e0
jmp 0x9ef4
leaq -0xf8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
leaq -0x178(%rbp), %rdx
callq 0xb560
jmp 0x9f10
leaq -0x30(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x3310
jmp 0x9f22
leaq -0xf8(%rbp), %rdi
callq 0x3140
leaq -0x178(%rbp), %rdi
callq 0x3140
leaq -0x118(%rbp), %rdi
callq 0x3140
leaq -0x138(%rbp), %rdi
callq 0x3140
leaq -0x158(%rbp), %rdi
callq 0x3140
leaq 0xc684(%rip), %rsi      # 0x165e9
leaq -0x30(%rbp), %rdi
callq 0x3230
jmp 0x9f70
jmp 0x9f72
movl -0xd4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xd4(%rbp)
jmp 0x9e5a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xa41c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xa02f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xa023
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xa017
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xa00b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0xf8(%rbp), %rdi
callq 0x3140
leaq -0x178(%rbp), %rdi
callq 0x3140
leaq -0x118(%rbp), %rdi
callq 0x3140
leaq -0x138(%rbp), %rdi
callq 0x3140
leaq -0x158(%rbp), %rdi
callq 0x3140
jmp 0xa41c
leaq -0x180(%rbp), %rdi
callq 0xb300
movq -0x428(%rbp), %rdi
addq $0xd0, %rdi
callq 0xb320
movq %rax, -0x188(%rbp)
movq -0x188(%rbp), %rax
movq %rax, -0x180(%rbp)
movq -0x428(%rbp), %rdi
addq $0xd0, %rdi
callq 0xb380
movq %rax, -0x190(%rbp)
leaq -0x180(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xb350
testb $0x1, %al
jne 0xa0aa
jmp 0xa3fc
movq -0xb8(%rbp), %rax
movq %rax, -0x448(%rbp)
leaq -0x180(%rbp), %rdi
callq 0xb3b0
movq -0x448(%rbp), %rdi
movsbl (%rax), %esi
leaq -0xd0(%rbp), %rdx
callq 0x13fd0
jmp 0xa0dc
movl $0x0, -0x194(%rbp)
movl -0x194(%rbp), %eax
movl %eax, -0x44c(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0xa5d0
movq %rax, %rcx
movl -0x44c(%rbp), %eax
cmpl %ecx, %eax
jge 0xa3e9
movq -0xb8(%rbp), %rsi
leaq -0x218(%rbp), %rdi
callq 0x141e0
jmp 0xa124
leaq 0xc4b4(%rip), %rsi      # 0x165df
leaq -0x1f8(%rbp), %rdi
leaq -0x218(%rbp), %rdx
callq 0xb510
jmp 0xa140
leaq 0xc49d(%rip), %rdx      # 0x165e4
leaq -0x1d8(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0xb4c0
jmp 0xa15c
movslq -0x194(%rbp), %rsi
leaq -0xd0(%rbp), %rdi
callq 0xa5f0
movq (%rax), %rsi
leaq -0x238(%rbp), %rdi
callq 0x141e0
jmp 0xa180
leaq -0x1b8(%rbp), %rdi
leaq -0x1d8(%rbp), %rsi
leaq -0x238(%rbp), %rdx
callq 0xb560
jmp 0xa19c
leaq -0x30(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x3310
jmp 0xa1ae
leaq -0x1b8(%rbp), %rdi
callq 0x3140
leaq -0x238(%rbp), %rdi
callq 0x3140
leaq -0x1d8(%rbp), %rdi
callq 0x3140
leaq -0x1f8(%rbp), %rdi
callq 0x3140
leaq -0x218(%rbp), %rdi
callq 0x3140
leaq -0x3c0(%rbp), %rdi
callq 0x31a0
jmp 0xa1f8
leaq -0x3b0(%rbp), %rax
movq %rax, -0x458(%rbp)
leaq -0x180(%rbp), %rdi
callq 0xb3b0
movq -0x458(%rbp), %rdi
movsbl (%rax), %esi
callq 0x32e0
jmp 0xa223
leaq -0x420(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x3240
jmp 0xa238
leaq 0xc3c1(%rip), %rsi      # 0x16600
leaq -0x400(%rbp), %rdi
leaq -0x420(%rbp), %rdx
callq 0xb510
jmp 0xa254
leaq 0xc3a0(%rip), %rdx      # 0x165fb
leaq -0x3e0(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0xb4c0
jmp 0xa270
leaq -0x30(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x3310
jmp 0xa282
leaq -0x3e0(%rbp), %rdi
callq 0x3140
leaq -0x400(%rbp), %rdi
callq 0x3140
leaq -0x420(%rbp), %rdi
callq 0x3140
leaq -0x3c0(%rbp), %rdi
callq 0x31c0
movl -0x194(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x194(%rbp)
jmp 0xa0e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xa358
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xa34c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xa340
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xa334
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x3140
leaq -0x238(%rbp), %rdi
callq 0x3140
leaq -0x1d8(%rbp), %rdi
callq 0x3140
leaq -0x1f8(%rbp), %rdi
callq 0x3140
leaq -0x218(%rbp), %rdi
callq 0x3140
jmp 0xa41c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xa3db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xa3cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
jmp 0xa3c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xa8(%rbp)
movl %eax, -0xac(%rbp)
leaq -0x3e0(%rbp), %rdi
callq 0x3140
leaq -0x400(%rbp), %rdi
callq 0x3140
leaq -0x420(%rbp), %rdi
callq 0x3140
leaq -0x3c0(%rbp), %rdi
callq 0x31c0
jmp 0xa41c
jmp 0xa3eb
leaq -0x180(%rbp), %rdi
callq 0xb400
jmp 0xa074
leaq -0xd0(%rbp), %rdi
callq 0xa530
movl -0xb0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb0(%rbp)
jmp 0x9de3
leaq -0xd0(%rbp), %rdi
callq 0xa530
jmp 0xa44e
movq 0x15ba7(%rip), %rdi     # 0x1ffd8
leaq -0x30(%rbp), %rsi
callq 0x3220
jmp 0xa43c
leaq -0x30(%rbp), %rdi
callq 0x3140
addq $0x460, %rsp            # imm = 0x460
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x3140
movq -0xa8(%rbp), %rdi
callq 0x33a0
nopw %cs:(%rax,%rax)
nopl (%rax)