// File: /workspace/github_cpp_makefile_star2_O2/SNUCSE-CTA[P]GI/src/program.cpp
// Function: main
int main(int argc, char* argv[])
{
	if( argc != 3 && argc != 4) {
		bool handled = false;
		if( argc == 2 ) {
			if( strcmp(argv[1], "--help") == 0 ) {
				//print help
				cout << "Usage: " << argv[0] << " graph1 graph2 (isomorphism_output)" << endl;
				cout << "Other options:" << endl;
				cout << "  --help        Display help" << endl;
				cout << "  --example     Display example file format" << endl;
				handled = true;
			}
			else if( strcmp(argv[1], "--example") == 0 ) {
				//print example file format
				printExample();
				handled = true;
			}
		}

		if(handled == false) {
			//print usages
			cout << "Usage: " << argv[0] << " graph1 graph2 (isomorphism_output)" << endl;
			cout << "Try '" << argv[0] << " --help' for more information" << endl;
		}
		return -1;
	}

	double totalTime;
	bool isomorphic;
	char* outfname = (argc == 4 ? argv[3] : nullptr);
	int ret = compare(argv[1], argv[2], &isomorphic, &totalTime, outfname);
	if (ret == 0) {
		//cout << "There is no file" << endl;
		return -1;
	}

	cout << "Elasped Time: " << totalTime << endl;
	if (isomorphic) {
		cout << "True: " << argv[1] << " and " << argv[2] << " are isomorphic" << endl;
	} else {
		cout << "False: " << argv[1] << " and " << argv[2] << " are not isomorphic" << endl;
	}

	return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x10, %rsp
movq %rsi, %rbx
leal -0x5(%rdi), %eax
cmpl $-0x3, %eax
ja 0x266c
cmpl $0x2, %edi
jne 0x260b
movq 0x8(%rbx), %r14
leaq 0x8a20(%rip), %rsi      # 0xb004
movq %r14, %rdi
callq 0x2210
testl %eax, %eax
je 0x2737
leaq 0x8a94(%rip), %rsi      # 0xb08f
movq %r14, %rdi
callq 0x2210
testl %eax, %eax
je 0x27c1
movq 0xd9be(%rip), %r14      # 0xffd0
leaq 0x89f2(%rip), %rsi      # 0xb00b
movq %r14, %rdi
callq 0x2170
movq (%rbx), %rsi
movq %rax, %rdi
callq 0x2170
leaq 0x89e0(%rip), %rsi      # 0xb013
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20e0
leaq 0x8a4f(%rip), %rsi      # 0xb099
movq %r14, %rdi
callq 0x2170
movq (%rbx), %rsi
movq %rax, %rdi
callq 0x2170
leaq 0x8a3b(%rip), %rsi      # 0xb09f
movq %rax, %rdi
jmp 0x27a7
cmpl $0x4, %edi
jne 0x2677
movq 0x18(%rbx), %r8
jmp 0x267a
xorl %r8d, %r8d
movq 0x8(%rbx), %rdi
movq 0x10(%rbx), %rsi
leaq 0x7(%rsp), %rdx
leaq 0x8(%rsp), %rcx
callq 0x28c0
testl %eax, %eax
je 0x27b4
movq 0xd930(%rip), %r15      # 0xffd0
leaq 0x8a16(%rip), %rsi      # 0xb0bd
movq %r15, %rdi
callq 0x2170
movsd 0x8(%rsp), %xmm0
movq %rax, %rdi
callq 0x2260
movq %rax, %rdi
callq 0x20e0
leaq 0x8a00(%rip), %rax      # 0xb0cc
leaq 0x8a16(%rip), %rsi      # 0xb0e9
cmpb $0x0, 0x7(%rsp)
cmovneq %rax, %rsi
leaq 0x89f6(%rip), %rax      # 0xb0d9
leaq 0x8a07(%rip), %r14      # 0xb0f1
cmovneq %rax, %r14
movq %r15, %rdi
callq 0x2170
movq 0x8(%rbx), %rsi
movq %rax, %rdi
callq 0x2170
leaq 0x89ca(%rip), %rsi      # 0xb0d3
movq %rax, %rdi
callq 0x2170
movq 0x10(%rbx), %rsi
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20e0
xorl %eax, %eax
jmp 0x27b7
movq 0xd892(%rip), %r14      # 0xffd0
leaq 0x88c6(%rip), %rsi      # 0xb00b
movq %r14, %rdi
callq 0x2170
movq (%rbx), %rsi
movq %rax, %rdi
callq 0x2170
leaq 0x88b4(%rip), %rsi      # 0xb013
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20e0
leaq 0x88c1(%rip), %rsi      # 0xb037
movq %r14, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20e0
leaq 0x88b9(%rip), %rsi      # 0xb046
movq %r14, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20e0
leaq 0x88bf(%rip), %rsi      # 0xb063
movq %r14, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20e0
pushq $-0x1
popq %rax
addq $0x10, %rsp
popq %rbx
popq %r14
popq %r15
retq
callq 0x27c8
jmp 0x27b4