// File: /workspace/github_cpp_makefile_star2_O2/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 0x23ec2
callq 0x1dd6f
xorl %ebx, %ebx
jmp 0x24142
movq %rsi, %rbx
movl %edi, %ebp
movq 0x8(%rsi), %rsi
leaq 0x10(%rsp), %r14
leaq 0xf(%rsp), %rdx
movq %r14, %rdi
callq 0x77c0
leaq 0x5120(%rip), %rsi      # 0x29004
movq %r14, %rdi
callq 0x132f3
testb %al, %al
je 0x23eff
movl %ebp, %edi
movq %rbx, %rsi
callq 0x1e141
jmp 0x240e9
leaq 0x2506(%rip), %rsi      # 0x2640c
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x23f23
movl %ebp, %edi
movq %rbx, %rsi
callq 0x1e670
jmp 0x240e9
leaq 0x50e2(%rip), %rsi      # 0x2900c
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x23f47
movl %ebp, %edi
movq %rbx, %rsi
callq 0x1f3e0
jmp 0x240e9
leaq 0x1b3c(%rip), %rsi      # 0x25a8a
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x23f6b
movl %ebp, %edi
movq %rbx, %rsi
callq 0x1f7d6
jmp 0x240e9
leaq 0x50a2(%rip), %rsi      # 0x29014
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x23f8f
movl %ebp, %edi
movq %rbx, %rsi
callq 0x1fff8
jmp 0x240e9
leaq 0x405d(%rip), %rsi      # 0x27ff3
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x23fb3
movl %ebp, %edi
movq %rbx, %rsi
callq 0x206d0
jmp 0x240e9
leaq 0x5060(%rip), %rsi      # 0x2901a
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x23fd7
movl %ebp, %edi
movq %rbx, %rsi
callq 0x1ed52
jmp 0x240e9
leaq 0x5045(%rip), %rsi      # 0x29023
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x23ffb
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2125a
jmp 0x240e9
leaq 0x502a(%rip), %rsi      # 0x2902c
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x2401f
movl %ebp, %edi
movq %rbx, %rsi
callq 0x2160c
jmp 0x240e9
leaq 0x17a7(%rip), %rsi      # 0x257cd
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x24043
movl %ebp, %edi
movq %rbx, %rsi
callq 0x219ae
jmp 0x240e9
leaq 0x4834(%rip), %rsi      # 0x2887e
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x24067
movl %ebp, %edi
movq %rbx, %rsi
callq 0x22328
jmp 0x240e9
leaq 0x4fc3(%rip), %rsi      # 0x29031
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x24088
movl %ebp, %edi
movq %rbx, %rsi
callq 0x22871
jmp 0x240e9
leaq 0x4faa(%rip), %rsi      # 0x29039
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x240a9
movl %ebp, %edi
movq %rbx, %rsi
callq 0x22b44
jmp 0x240e9
leaq 0x4f8e(%rip), %rsi      # 0x2903e
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x240ca
movl %ebp, %edi
movq %rbx, %rsi
callq 0x22fb1
jmp 0x240e9
leaq 0x4f74(%rip), %rsi      # 0x29045
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x240f2
movl %ebp, %edi
movq %rbx, %rsi
callq 0x23626
testl %eax, %eax
je 0x24136
pushq $0x1
popq %rbx
jmp 0x24138
leaq 0x32a7(%rip), %rsi      # 0x273a0
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
jne 0x24131
leaq 0x4f3c(%rip), %rsi      # 0x2904a
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
jne 0x24131
leaq 0x4f29(%rip), %rsi      # 0x2904c
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x2414d
callq 0x1df8a
xorl %ebx, %ebx
leaq 0x10(%rsp), %rdi
callq 0x5778
movl %ebx, %eax
addq $0x30, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x2e9f(%rip), %rsi      # 0x26ff3
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
jne 0x24177
leaq 0x2e8d(%rip), %rsi      # 0x26ff6
leaq 0x10(%rsp), %rdi
callq 0x132f3
testb %al, %al
je 0x2417e
callq 0x1dd6f
jmp 0x24136
movq 0x10(%rsp), %rax
cmpb $0x2d, (%rax)
jne 0x241c5
movq 0x11e61(%rip), %rdi     # 0x35ff0
callq 0x51c0
leaq 0x4eb9(%rip), %rsi      # 0x29054
movq %rax, %rdi
callq 0x53f0
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x53a0
movq %rax, %rdi
callq 0x51c0
movq %rax, %rdi
callq 0x51c0
jmp 0x240ed
movq 0x11e24(%rip), %rdi     # 0x35ff0
callq 0x51c0
leaq 0x4e90(%rip), %rsi      # 0x29068
movq %rax, %rdi
callq 0x53f0
leaq 0x10(%rsp), %rsi
movq %rax, %rdi
callq 0x53a0
movq %rax, %rdi
callq 0x51c0
callq 0x1dd6f
jmp 0x240ed
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x5778
movq %rbx, %rdi
callq 0x56c0