// File: /workspace/github_cpp_makefile_star2_O3/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 0x31d8d
callq 0x25dc9
xorl %ebx, %ebx
jmp 0x320e2
movq %rsi, %rbx
movl %edi, %ebp
movq 0x8(%rsi), %rsi
leaq 0x10(%rsp), %r14
leaq 0xf(%rsp), %rdx
movq %r14, %rdi
callq 0x182e0
leaq 0x5281(%rip), %rsi      # 0x37030
movq %r14, %rdi
callq 0x50f0
testl %eax, %eax
je 0x31ff7
leaq 0x2671(%rip), %rsi      # 0x34437
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32006
leaq 0x5259(%rip), %rsi      # 0x37038
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32015
leaq 0x1cba(%rip), %rsi      # 0x33ab2
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32024
leaq 0x522f(%rip), %rsi      # 0x37040
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32033
leaq 0x41f5(%rip), %rsi      # 0x3601f
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x3203f
leaq 0x5203(%rip), %rsi      # 0x37046
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x3204b
leaq 0x51f3(%rip), %rsi      # 0x3704f
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32057
leaq 0x51e3(%rip), %rsi      # 0x37058
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32063
leaq 0x1933(%rip), %rsi      # 0x337c1
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x3206f
leaq 0x4a03(%rip), %rsi      # 0x368aa
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x3207b
leaq 0x519d(%rip), %rsi      # 0x3705d
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32087
leaq 0x518c(%rip), %rsi      # 0x37065
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x32093
leaq 0x5178(%rip), %rsi      # 0x3706a
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x3209f
leaq 0x5166(%rip), %rsi      # 0x37071
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x320b2
leaq 0x34a8(%rip), %rsi      # 0x353cc
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x320ab
leaq 0x5139(%rip), %rsi      # 0x37076
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x320ab
leaq 0x5122(%rip), %rsi      # 0x37078
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x320ab
leaq 0x30b0(%rip), %rsi      # 0x3501f
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x320ed
leaq 0x309a(%rip), %rsi      # 0x35022
leaq 0x10(%rsp), %rdi
callq 0x50f0
testl %eax, %eax
je 0x320ed
movq 0x10(%rsp), %rax
cmpb $0x2d, (%rax)
jne 0x320f4
movq 0xf041(%rip), %rdi      # 0x40ff0
callq 0x5190
movq %rax, %rbx
leaq 0x50c2(%rip), %rsi      # 0x37080
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 0x320c7
movl %ebp, %edi
movq %rbx, %rsi
callq 0x26807
jmp 0x320bc
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2725f
jmp 0x320bc
movl %ebp, %edi
movq %rbx, %rsi
callq 0x28cc0
jmp 0x320bc
movl %ebp, %edi
movq %rbx, %rsi
callq 0x29577
jmp 0x320bc
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2a4d1
jmp 0x320bc
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2b27f
jmp 0x320bc
movl %ebp, %edi
movq %rbx, %rsi
callq 0x27f97
jmp 0x320bc
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2c674
jmp 0x320bc
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2cef9
jmp 0x320bc
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2d6ac
jmp 0x320bc
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2e6e3
jmp 0x320bc
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2f17d
jmp 0x320bc
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2f75f
jmp 0x320bc
movl %ebp, %edi
movq %rbx, %rsi
callq 0x3010e
jmp 0x320bc
callq 0x26352
jmp 0x320c5
movl %ebp, %edi
movq %rbx, %rsi
callq 0x30e13
movl $0x1, %ebx
testl %eax, %eax
jne 0x320c7
xorl %ebx, %ebx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x320e2
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x53c0
movl %ebx, %eax
addq $0x30, %rsp
popq %rbx
popq %r14
popq %rbp
retq
callq 0x25dc9
jmp 0x320c5
movq 0xeef5(%rip), %rdi      # 0x40ff0
callq 0x5190
movq %rax, %rbx
leaq 0x4f8a(%rip), %rsi      # 0x37094
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 0x25dc9
jmp 0x320c7
movq %rax, %rbx
leaq 0x20(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x3215b
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x53c0
movq %rbx, %rdi
callq 0x56a0