// File: /workspace/github_cpp_makefile_star2_O1/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 %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %rbx
leal -0x5(%rdi), %eax
cmpl $-0x3, %eax
ja 0x26bf
cmpl $0x2, %edi
jne 0x2679
movq 0x8(%rbx), %r14
leaq 0x99b2(%rip), %rsi      # 0xc004
movq %r14, %rdi
callq 0x2210
testl %eax, %eax
je 0x2888
leaq 0x9a26(%rip), %rsi      # 0xc08f
movq %r14, %rdi
callq 0x2210
testl %eax, %eax
je 0x28ce
movq 0xd950(%rip), %r14      # 0xffd0
leaq 0x9984(%rip), %rsi      # 0xc00b
movl $0x7, %edx
movq %r14, %rdi
callq 0x21c0
movq (%rbx), %r15
testq %r15, %r15
je 0x27d4
movq %r15, %rdi
callq 0x20c0
movq 0xd921(%rip), %rdi      # 0xffd0
movq %r15, %rsi
movq %rax, %rdx
callq 0x21c0
jmp 0x27ec
cmpl $0x4, %edi
jne 0x26ca
movq 0x18(%rbx), %r8
jmp 0x26cd
xorl %r8d, %r8d
movq 0x8(%rbx), %rdi
movq 0x10(%rbx), %rsi
leaq 0xf(%rsp), %rdx
leaq 0x10(%rsp), %rcx
callq 0x2d88
testl %eax, %eax
je 0x2b17
movq 0xd8dd(%rip), %r14      # 0xffd0
leaq 0x99c3(%rip), %rsi      # 0xc0bd
movl $0xe, %edx
movq %r14, %rdi
callq 0x21c0
movsd 0x10(%rsp), %xmm0
movq %r14, %rdi
callq 0x2270
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2170
movsbl %al, %esi
movq %r15, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2100
cmpb $0x1, 0xf(%rsp)
jne 0x278d
movq 0xd883(%rip), %r15      # 0xffd0
leaq 0x9978(%rip), %rsi      # 0xc0cc
movl $0x6, %edx
movq %r15, %rdi
callq 0x21c0
movq 0x8(%rbx), %r12
testq %r12, %r12
je 0x28d8
movq %r12, %rdi
callq 0x20c0
movq 0xd853(%rip), %rdi      # 0xffd0
movq %r12, %rsi
movq %rax, %rdx
callq 0x21c0
jmp 0x28f0
movq 0xd83c(%rip), %r15      # 0xffd0
leaq 0x994e(%rip), %rsi      # 0xc0e9
movl $0x7, %edx
movq %r15, %rdi
callq 0x21c0
movq 0x8(%rbx), %r12
testq %r12, %r12
je 0x2930
movq %r12, %rdi
callq 0x20c0
movq 0xd80c(%rip), %rdi      # 0xffd0
movq %r12, %rsi
movq %rax, %rdx
callq 0x21c0
jmp 0x2948
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x22c0
leaq 0x9820(%rip), %rsi      # 0xc013
movl $0x23, %edx
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2170
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2100
leaq 0x986b(%rip), %rsi      # 0xc099
movl $0x5, %edx
movq %r14, %rdi
callq 0x21c0
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x285f
movq %rbx, %rdi
callq 0x20c0
movq 0xd77e(%rip), %rdi      # 0xffd0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x21c0
jmp 0x2877
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x22c0
leaq 0x9821(%rip), %rsi      # 0xc09f
movl $0x1d, %edx
jmp 0x2ae8
movq 0xd741(%rip), %r14      # 0xffd0
leaq 0x9775(%rip), %rsi      # 0xc00b
movl $0x7, %edx
movq %r14, %rdi
callq 0x21c0
movq (%rbx), %rbx
testq %rbx, %rbx
je 0x2a13
movq %rbx, %rdi
callq 0x20c0
movq 0xd712(%rip), %rdi      # 0xffd0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x21c0
jmp 0x2a2b
callq 0x2b28
jmp 0x2b17
movq (%r15), %rax
movq -0x18(%rax), %rax
leaq (%r15,%rax), %rdi
movl 0x20(%r15,%rax), %esi
orl $0x1, %esi
callq 0x22c0
movq 0xd6d9(%rip), %r15      # 0xffd0
leaq 0x97d5(%rip), %rsi      # 0xc0d3
movl $0x5, %edx
movq %r15, %rdi
callq 0x21c0
movq 0x10(%rbx), %rbx
testq %rbx, %rbx
je 0x2988
movq %rbx, %rdi
callq 0x20c0
movq 0xd6ad(%rip), %rdi      # 0xffd0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x21c0
jmp 0x29a0
movq (%r15), %rax
movq -0x18(%rax), %rax
leaq (%r15,%rax), %rdi
movl 0x20(%r15,%rax), %esi
orl $0x1, %esi
callq 0x22c0
movq 0xd681(%rip), %r15      # 0xffd0
leaq 0x977d(%rip), %rsi      # 0xc0d3
movl $0x5, %edx
movq %r15, %rdi
callq 0x21c0
movq 0x10(%rbx), %rbx
testq %rbx, %rbx
je 0x29b5
movq %rbx, %rdi
callq 0x20c0
movq 0xd655(%rip), %rdi      # 0xffd0
movq %rbx, %rsi
movq %rax, %rdx
callq 0x21c0
jmp 0x29cd
movq (%r15), %rax
movq -0x18(%rax), %rax
leaq (%r15,%rax), %rdi
movl 0x20(%r15,%rax), %esi
orl $0x1, %esi
callq 0x22c0
movq 0xd629(%rip), %rdi      # 0xffd0
leaq 0x972b(%rip), %rsi      # 0xc0d9
movl $0xf, %edx
jmp 0x29e0
movq (%r15), %rax
movq -0x18(%rax), %rax
leaq (%r15,%rax), %rdi
movl 0x20(%r15,%rax), %esi
orl $0x1, %esi
callq 0x22c0
movq 0xd5fc(%rip), %rdi      # 0xffd0
leaq 0x9716(%rip), %rsi      # 0xc0f1
movl $0x13, %edx
callq 0x21c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2170
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2100
xorl %eax, %eax
jmp 0x2b1c
movq (%r14), %rax
movq -0x18(%rax), %rax
leaq (%r14,%rax), %rdi
movl 0x20(%r14,%rax), %esi
orl $0x1, %esi
callq 0x22c0
leaq 0x95e1(%rip), %rsi      # 0xc013
movl $0x23, %edx
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2170
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2100
leaq 0x95ca(%rip), %rsi      # 0xc037
movl $0xe, %edx
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2170
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2100
leaq 0x959e(%rip), %rsi      # 0xc046
movl $0x1c, %edx
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2170
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2100
leaq 0x9580(%rip), %rsi      # 0xc063
movl $0x2b, %edx
movq %r14, %rdi
callq 0x21c0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2170
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2100
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq