// File: /workspace/github_cpp_makefile_star2_O1/simonrharris[P]SKA/src/ska.cpp
// Function: main
int main(int argc, char *argv[])
{
	
	if (argc<2){
		skaHelp();
		return 0;
	}

	std::string subcommand=(argv[1]);

	if (subcommand == "alleles"){
			if(allelesSubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "align"){
			if(alignSubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "compare"){
			if(compareSubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "distance"){
			if(distanceSubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "fasta"){
			if(fastaSubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "fastq"){
			if(fastqSubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "annotate"){
			if(annotateSubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "humanise"){
			if(humaniseSubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "info"){
			if(infoSubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "map"){
			if(mapSubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "merge"){
			if(mergeSubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "summary"){
			if(summarySubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "type"){
			if(typeSubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "unique"){
			if(uniqueSubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "weed"){
			if(weedSubcommand(argc, argv)){return 1;}
		}
	else if (subcommand == "-v" || subcommand == "--version" || subcommand == "version"){
			if(skaVersion()){return 1;}
		}
	else if (subcommand == "-h" || subcommand == "--help"){
			if(skaHelp()){return 1;}
		}
	else if (subcommand[0]=='-'){
			std::cerr << std::endl << "Unrecognised flag: " << subcommand << std::endl << std::endl;
			return 1;
		}
	else {
		std::cerr << std::endl << "Unrecognised subcommand: " << subcommand << std::endl;
		skaHelp();
		return 1;
	}
	
	return 0;

}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x30, %rsp
cmpl $0x1, %edi
jg 0x323a6
callq 0x261bd
xorl %ebx, %ebx
jmp 0x326fb
movq %rsi, %rbx
movl %edi, %ebp
movq 0x8(%rsi), %rsi
leaq 0x10(%rsp), %r14
leaq 0xf(%rsp), %rdx
movq %r14, %rdi
callq 0x184a2
leaq 0x4c78(%rip), %rsi      # 0x37040
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
je 0x32610
leaq 0x2068(%rip), %rsi      # 0x34447
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x3261f
leaq 0x4c50(%rip), %rsi      # 0x37048
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x3262e
leaq 0x1669(%rip), %rsi      # 0x33a7a
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x3263d
leaq 0x4c26(%rip), %rsi      # 0x37050
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x3264c
leaq 0x3bec(%rip), %rsi      # 0x3602f
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32658
leaq 0x4bfa(%rip), %rsi      # 0x37056
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32664
leaq 0x4bea(%rip), %rsi      # 0x3705f
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32670
leaq 0x4bda(%rip), %rsi      # 0x37068
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x3267c
leaq 0x131a(%rip), %rsi      # 0x337c1
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32688
leaq 0x43fa(%rip), %rsi      # 0x368ba
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32694
leaq 0x4b94(%rip), %rsi      # 0x3706d
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x326a0
leaq 0x4b83(%rip), %rsi      # 0x37075
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x326ac
leaq 0x4b6f(%rip), %rsi      # 0x3707a
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x326b8
leaq 0x4b5d(%rip), %rsi      # 0x37081
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x326cb
leaq 0x2e9f(%rip), %rsi      # 0x353dc
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x326c4
leaq 0x4b30(%rip), %rsi      # 0x37086
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x326c4
leaq 0x4b19(%rip), %rsi      # 0x37088
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x326c4
leaq 0x2aa7(%rip), %rsi      # 0x3502f
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32706
leaq 0x2a91(%rip), %rsi      # 0x35032
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32706
movq 0x10(%rsp), %rax
cmpb $0x2d, (%rax)
jne 0x3270d
movq 0xea28(%rip), %rdi      # 0x40ff0
callq 0x5190
movq %rax, %rbx
leaq 0x4ab9(%rip), %rsi      # 0x37090
movl $0x13, %edx
movq %rax, %rdi
callq 0x5420
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbx, %rdi
callq 0x5420
movq %rax, %rdi
callq 0x5190
movl $0x1, %ebx
movq %rax, %rdi
callq 0x5190
jmp 0x326e0
movl %ebp, %edi
movq %rbx, %rsi
callq 0x26bfb
jmp 0x326d5
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2766b
jmp 0x326d5
movl %ebp, %edi
movq %rbx, %rsi
callq 0x29117
jmp 0x326d5
movl %ebp, %edi
movq %rbx, %rsi
callq 0x299fb
jmp 0x326d5
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2a981
jmp 0x326d5
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2b747
jmp 0x326d5
movl %ebp, %edi
movq %rbx, %rsi
callq 0x283c5
jmp 0x326d5
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2cb94
jmp 0x326d5
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2d426
jmp 0x326d5
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2dbf8
jmp 0x326d5
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2ec49
jmp 0x326d5
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2f6f2
jmp 0x326d5
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2fceb
jmp 0x326d5
movl %ebp, %edi
movq %rbx, %rsi
callq 0x306cc
jmp 0x326d5
callq 0x26746
jmp 0x326de
movl %ebp, %edi
movq %rbx, %rsi
callq 0x313ed
movl $0x1, %ebx
testl %eax, %eax
jne 0x326e0
xorl %ebx, %ebx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x326fb
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x53c0
movl %ebx, %eax
addq $0x30, %rsp
popq %rbx
popq %r14
popq %rbp
retq
callq 0x261bd
jmp 0x326de
movq 0xe8dc(%rip), %rdi      # 0x40ff0
callq 0x5190
movq %rax, %rbx
leaq 0x4981(%rip), %rsi      # 0x370a4
movl $0x19, %edx
movq %rax, %rdi
callq 0x5420
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbx, %rdi
callq 0x5420
movq %rax, %rdi
callq 0x5190
movl $0x1, %ebx
callq 0x261bd
jmp 0x326e0
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x32774
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x53c0
movq %rbx, %rdi
callq 0x56a0