// File: simonrharris[P]SKA/src/ska.cpp
// Function: annotateSubcommand(int, char**)
int annotateSubcommand(int argc, char *argv[]){

	std::string outfile="annotation.vcf";
	std::string reference="";
	std::vector < std::string > args;
	bool snponly=false;
	bool includerepeats=false;
	bool includeproduct=false;

	for (int i=2; i<argc; ++i){

		std::string arg=(argv[i]);

		if (arg=="-h" || arg=="--help"){
			annotateHelp();
			return 0;
		}
		else if (arg == "-f"){
			i++;
			if (i<argc){
				fileToVector(argv[i], args);
			}
			else {
				std::cerr << std::endl << "Expecting file name after -f flag" << std::endl << std::endl;
				return 1;
			}
		}
		else if (arg == "-i"){
			includerepeats = true;
		}
		else if (arg == "-p"){
			includeproduct = true;
		}
		else if (arg == "-o"){
			i++;
			if (i<argc){
				outfile = std::string(argv[i])+".vcf";
			}
			else {
				std::cerr << std::endl << "Expecting file name after -o flag" << std::endl << std::endl;
				return 1;
			}
		}
		else if (arg == "-r"){
			i++;
			if (i<argc){
				reference = argv[i];
			}
			else {
				std::cerr << std::endl << "Expecting file name after -r flag" << std::endl << std::endl;
				return 1;
			}
		}
		else if (arg == "-v"){
			snponly = true;
		}
		else if (arg[0]=='-'){
			std::cerr << std::endl << "Unrecognised flag " << arg << std::endl << std::endl;
				return 1;
		}
		else {
			args.push_back(arg);
		}
	}

	if (args.size()<1){
		std::cerr << std::endl << "Too few arguments" << std::endl;
		annotateHelp();
		return 1;
	}
	if (reference==""){
		std::cerr << std::endl << "Reference sequence is required" << std::endl;
		annotateHelp();
		return 1;
	}

	skaVersion();

	std::cout << "Annotating split kmer matches in " << reference << " from ";
	if (args.size()>maxNamesToPrint){
		std::cout << args.size() << " files";
	}
	else {	
		for (std::vector <std::string>::iterator it = args.begin(); it != args.end(); ++it){
			std::cout << *it << " ";
		}
	}
	std::cout << std::endl;

	if (snponly){
		std::cout << "Only variant sites will be included" << std::endl;
	}
	if (includerepeats){
		std::cout << "Matches in repeats will be included" << std::endl;
	}
	else {
		std::cout << "Matches in repeats will not be included" << std::endl;
	}
	if (includeproduct){
		std::cout << "Product information for CDSs will be printed" << std::endl;
	}
	else{
		std::cout << "Product information for CDSs will not be printed" << std::endl;
	}

	std::cout << "Output will be written to " << outfile << std::endl << std::endl;


	if (findKmersInFasta(args, reference, snponly, includerepeats, includeproduct, outfile)){return 1;}

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2a0, %rsp            # imm = 0x2A0
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x140(%rbp)
callq 0x6910
movq -0x140(%rbp), %rdx
leaq 0xd55a(%rip), %rsi      # 0x5b52a
leaq -0x30(%rbp), %rdi
callq 0xab20
jmp 0x4dfdb
leaq -0x31(%rbp), %rdi
callq 0x65a0
leaq -0x69(%rbp), %rdi
movq %rdi, -0x148(%rbp)
callq 0x6910
movq -0x148(%rbp), %rdx
leaq 0xc2b0(%rip), %rsi      # 0x5a2b2
leaq -0x68(%rbp), %rdi
callq 0xab20
jmp 0x4e00d
leaq -0x69(%rbp), %rdi
callq 0x65a0
leaq -0x88(%rbp), %rdi
callq 0x1ab40
movb $0x0, -0x89(%rbp)
movb $0x0, -0x8a(%rbp)
movb $0x0, -0x8b(%rbp)
movl $0x2, -0x90(%rbp)
movl -0x90(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x4e738
movq -0x10(%rbp), %rax
movslq -0x90(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x158(%rbp)
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x150(%rbp)
callq 0x6910
movq -0x158(%rbp), %rsi
movq -0x150(%rbp), %rdx
leaq -0xb0(%rbp), %rdi
callq 0xab20
jmp 0x4e095
leaq -0xb1(%rbp), %rdi
callq 0x65a0
leaq 0xcf3f(%rip), %rsi      # 0x5afe7
leaq -0xb0(%rbp), %rdi
callq 0x2dce0
movb %al, -0x159(%rbp)
jmp 0x4e0bc
movb -0x159(%rbp), %al
testb $0x1, %al
jne 0x4e0ef
jmp 0x4e0c8
leaq 0xcf1b(%rip), %rsi      # 0x5afea
leaq -0xb0(%rbp), %rdi
callq 0x2dce0
movb %al, -0x15a(%rbp)
jmp 0x4e0e3
movb -0x15a(%rbp), %al
testb $0x1, %al
jne 0x4e0ef
jmp 0x4e16e
callq 0x4de10
jmp 0x4e0f6
movl $0x0, -0x4(%rbp)
movl $0x1, -0xb8(%rbp)
jmp 0x4e6f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x65a0
jmp 0x4ebcc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x69(%rbp), %rdi
callq 0x65a0
jmp 0x4ebc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xb1(%rbp), %rdi
callq 0x65a0
jmp 0x4ebae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x4e727
leaq 0xcef2(%rip), %rsi      # 0x5b067
leaq -0xb0(%rbp), %rdi
callq 0x2dce0
movb %al, -0x15b(%rbp)
jmp 0x4e189
movb -0x15b(%rbp), %al
testb $0x1, %al
jne 0x4e198
jmp 0x4e2e8
movl -0x90(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90(%rbp)
movl -0x90(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x4e264
movq -0x10(%rbp), %rax
movslq -0x90(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x170(%rbp)
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x168(%rbp)
callq 0x6910
movq -0x170(%rbp), %rsi
movq -0x168(%rbp), %rdx
leaq -0xd8(%rbp), %rdi
callq 0xab20
jmp 0x4e1fb
leaq -0xd8(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0xa6a0
jmp 0x4e210
leaq -0xd8(%rbp), %rdi
callq 0x6a08
leaq -0xd9(%rbp), %rdi
callq 0x65a0
jmp 0x4e2e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x4e253
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x6a08
leaq -0xd9(%rbp), %rdi
callq 0x65a0
jmp 0x4e727
movq 0x2ad85(%rip), %rdi     # 0x78ff0
movq 0x2ad1e(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x178(%rbp)
jmp 0x4e280
movq -0x178(%rbp), %rdi
leaq 0xcddc(%rip), %rsi      # 0x5b06a
callq 0x6520
movq %rax, -0x180(%rbp)
jmp 0x4e29c
movq -0x180(%rbp), %rdi
movq 0x2ace6(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x188(%rbp)
jmp 0x4e2b8
movq -0x188(%rbp), %rdi
movq 0x2acca(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4e2cd
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb8(%rbp)
jmp 0x4e6f5
jmp 0x4e6e9
leaq 0xd24a(%rip), %rsi      # 0x5b539
leaq -0xb0(%rbp), %rdi
callq 0x2dce0
movb %al, -0x189(%rbp)
jmp 0x4e303
movb -0x189(%rbp), %al
testb $0x1, %al
jne 0x4e30f
jmp 0x4e31b
movb $0x1, -0x8a(%rbp)
jmp 0x4e6e7
leaq 0xcff1(%rip), %rsi      # 0x5b313
leaq -0xb0(%rbp), %rdi
callq 0x2dce0
movb %al, -0x18a(%rbp)
jmp 0x4e336
movb -0x18a(%rbp), %al
testb $0x1, %al
jne 0x4e342
jmp 0x4e34e
movb $0x1, -0x8b(%rbp)
jmp 0x4e6e5
leaq 0xcf9c(%rip), %rsi      # 0x5b2f1
leaq -0xb0(%rbp), %rdi
callq 0x2dce0
movb %al, -0x18b(%rbp)
jmp 0x4e369
movb -0x18b(%rbp), %al
testb $0x1, %al
jne 0x4e378
jmp 0x4e4eb
movl -0x90(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90(%rbp)
movl -0x90(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x4e467
movq -0x10(%rbp), %rax
movslq -0x90(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x1a0(%rbp)
leaq -0x121(%rbp), %rdi
movq %rdi, -0x198(%rbp)
callq 0x6910
movq -0x1a0(%rbp), %rsi
movq -0x198(%rbp), %rdx
leaq -0x120(%rbp), %rdi
callq 0xab20
jmp 0x4e3db
leaq 0xd152(%rip), %rdx      # 0x5b534
leaq -0x100(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x24a10
jmp 0x4e3f7
leaq -0x30(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0x6640
leaq -0x100(%rbp), %rdi
callq 0x6a08
leaq -0x120(%rbp), %rdi
callq 0x6a08
leaq -0x121(%rbp), %rdi
callq 0x65a0
jmp 0x4e4e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x4e456
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x6a08
leaq -0x121(%rbp), %rdi
callq 0x65a0
jmp 0x4e727
movq 0x2ab82(%rip), %rdi     # 0x78ff0
movq 0x2ab1b(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x1a8(%rbp)
jmp 0x4e483
movq -0x1a8(%rbp), %rdi
leaq 0xd0ab(%rip), %rsi      # 0x5b53c
callq 0x6520
movq %rax, -0x1b0(%rbp)
jmp 0x4e49f
movq -0x1b0(%rbp), %rdi
movq 0x2aae3(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x1b8(%rbp)
jmp 0x4e4bb
movq -0x1b8(%rbp), %rdi
movq 0x2aac7(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4e4d0
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb8(%rbp)
jmp 0x4e6f5
jmp 0x4e6e3
leaq 0xd06c(%rip), %rsi      # 0x5b55e
leaq -0xb0(%rbp), %rdi
callq 0x2dce0
movb %al, -0x1b9(%rbp)
jmp 0x4e506
movb -0x1b9(%rbp), %al
testb $0x1, %al
jne 0x4e515
jmp 0x4e5cf
movl -0x90(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90(%rbp)
movl -0x90(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x4e54b
movq -0x10(%rbp), %rax
movslq -0x90(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
leaq -0x68(%rbp), %rdi
callq 0x6710
jmp 0x4e549
jmp 0x4e5ca
movq 0x2aa9e(%rip), %rdi     # 0x78ff0
movq 0x2aa37(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x1c8(%rbp)
jmp 0x4e567
movq -0x1c8(%rbp), %rdi
leaq 0xcfec(%rip), %rsi      # 0x5b561
callq 0x6520
movq %rax, -0x1d0(%rbp)
jmp 0x4e583
movq -0x1d0(%rbp), %rdi
movq 0x2a9ff(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x1d8(%rbp)
jmp 0x4e59f
movq -0x1d8(%rbp), %rdi
movq 0x2a9e3(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4e5b4
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb8(%rbp)
jmp 0x4e6f5
jmp 0x4e6e1
leaq 0xcdbe(%rip), %rsi      # 0x5b394
leaq -0xb0(%rbp), %rdi
callq 0x2dce0
movb %al, -0x1d9(%rbp)
jmp 0x4e5ea
movb -0x1d9(%rbp), %al
testb $0x1, %al
jne 0x4e5f6
jmp 0x4e602
movb $0x1, -0x89(%rbp)
jmp 0x4e6df
xorl %eax, %eax
movl %eax, %esi
leaq -0xb0(%rbp), %rdi
callq 0x69e0
movq %rax, -0x1e8(%rbp)
jmp 0x4e61b
movq -0x1e8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x4e6c6
movq 0x2a9bb(%rip), %rdi     # 0x78ff0
movq 0x2a954(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x1f0(%rbp)
jmp 0x4e64a
movq -0x1f0(%rbp), %rdi
leaq 0xca34(%rip), %rsi      # 0x5b08c
callq 0x6520
movq %rax, -0x1f8(%rbp)
jmp 0x4e666
movq -0x1f8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x64d0
movq %rax, -0x200(%rbp)
jmp 0x4e682
movq -0x200(%rbp), %rdi
movq 0x2a900(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x208(%rbp)
jmp 0x4e69e
movq -0x208(%rbp), %rdi
movq 0x2a8e4(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4e6b3
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb8(%rbp)
jmp 0x4e6f5
leaq -0x88(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0xabd0
jmp 0x4e6db
jmp 0x4e6dd
jmp 0x4e6df
jmp 0x4e6e1
jmp 0x4e6e3
jmp 0x4e6e5
jmp 0x4e6e7
jmp 0x4e6e9
jmp 0x4e6eb
movl $0x0, -0xb8(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x6a08
movl -0xb8(%rbp), %eax
testl %eax, %eax
jne 0x4eb84
jmp 0x4e711
jmp 0x4e713
movl -0x90(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x90(%rbp)
jmp 0x4e041
leaq -0xb0(%rbp), %rdi
callq 0x6a08
jmp 0x4ebae
leaq -0x88(%rbp), %rdi
callq 0xb670
cmpq $0x1, %rax
jae 0x4e7c5
movq 0x2a89f(%rip), %rdi     # 0x78ff0
movq 0x2a838(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x210(%rbp)
jmp 0x4e766
movq -0x210(%rbp), %rdi
leaq 0xc92b(%rip), %rsi      # 0x5b09f
callq 0x6520
movq %rax, -0x218(%rbp)
jmp 0x4e782
movq -0x218(%rbp), %rdi
movq 0x2a800(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4e797
callq 0x4de10
jmp 0x4e79e
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb8(%rbp)
jmp 0x4eb84
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x4ebae
leaq 0xbae6(%rip), %rsi      # 0x5a2b2
leaq -0x68(%rbp), %rdi
callq 0x2dce0
movb %al, -0x219(%rbp)
jmp 0x4e7dd
movb -0x219(%rbp), %al
testb $0x1, %al
jne 0x4e7e9
jmp 0x4e853
movq 0x2a800(%rip), %rdi     # 0x78ff0
movq 0x2a799(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x228(%rbp)
jmp 0x4e805
movq -0x228(%rbp), %rdi
leaq 0xcd70(%rip), %rsi      # 0x5b583
callq 0x6520
movq %rax, -0x230(%rbp)
jmp 0x4e821
movq -0x230(%rbp), %rdi
movq 0x2a761(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4e836
callq 0x4de10
jmp 0x4e83d
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb8(%rbp)
jmp 0x4eb84
callq 0x4c460
jmp 0x4e85a
movq 0x2a747(%rip), %rdi     # 0x78fa8
leaq 0xcd3a(%rip), %rsi      # 0x5b5a2
callq 0x6520
movq %rax, -0x238(%rbp)
jmp 0x4e876
movq -0x238(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x64d0
movq %rax, -0x240(%rbp)
jmp 0x4e88f
movq -0x240(%rbp), %rdi
leaq 0xb0d5(%rip), %rsi      # 0x59972
callq 0x6520
jmp 0x4e8a4
leaq -0x88(%rbp), %rdi
callq 0xb670
movslq 0x2ad89(%rip), %rcx     # 0x79640
cmpq %rcx, %rax
jbe 0x4e8fa
leaq -0x88(%rbp), %rdi
callq 0xb670
movq %rax, %rsi
movq 0x2a6d6(%rip), %rdi     # 0x78fa8
callq 0x6120
movq %rax, -0x248(%rbp)
jmp 0x4e8e0
movq -0x248(%rbp), %rdi
leaq 0xc1cb(%rip), %rsi      # 0x5aab9
callq 0x6520
jmp 0x4e8f5
jmp 0x4e984
leaq -0x88(%rbp), %rdi
callq 0xb4c0
movq %rax, -0x130(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xb340
movq %rax, -0x138(%rbp)
leaq -0x130(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x4a690
testb $0x1, %al
jne 0x4e939
jmp 0x4e982
leaq -0x130(%rbp), %rdi
callq 0x30840
movq %rax, %rsi
movq 0x2a659(%rip), %rdi     # 0x78fa8
callq 0x64d0
movq %rax, -0x250(%rbp)
jmp 0x4e95d
movq -0x250(%rbp), %rdi
leaq 0xb9e2(%rip), %rsi      # 0x5a34d
callq 0x6520
jmp 0x4e972
jmp 0x4e974
leaq -0x130(%rbp), %rdi
callq 0x4a6d0
jmp 0x4e90d
jmp 0x4e984
movq 0x2a61d(%rip), %rdi     # 0x78fa8
movq 0x2a5fe(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4e999
testb $0x1, -0x89(%rbp)
je 0x4e9d5
movq 0x2a5ff(%rip), %rdi     # 0x78fa8
leaq 0xcc14(%rip), %rsi      # 0x5b5c4
callq 0x6520
movq %rax, -0x258(%rbp)
jmp 0x4e9be
movq -0x258(%rbp), %rdi
movq 0x2a5c4(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4e9d3
jmp 0x4e9d5
testb $0x1, -0x8a(%rbp)
je 0x4ea11
movq 0x2a5c3(%rip), %rdi     # 0x78fa8
leaq 0xcbfc(%rip), %rsi      # 0x5b5e8
callq 0x6520
movq %rax, -0x260(%rbp)
jmp 0x4e9fa
movq -0x260(%rbp), %rdi
movq 0x2a588(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4ea0f
jmp 0x4ea44
movq 0x2a590(%rip), %rdi     # 0x78fa8
leaq 0xcbed(%rip), %rsi      # 0x5b60c
callq 0x6520
movq %rax, -0x268(%rbp)
jmp 0x4ea2d
movq -0x268(%rbp), %rdi
movq 0x2a555(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4ea42
jmp 0x4ea44
testb $0x1, -0x8b(%rbp)
je 0x4ea80
movq 0x2a554(%rip), %rdi     # 0x78fa8
leaq 0xcbd9(%rip), %rsi      # 0x5b634
callq 0x6520
movq %rax, -0x270(%rbp)
jmp 0x4ea69
movq -0x270(%rbp), %rdi
movq 0x2a519(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4ea7e
jmp 0x4eab3
movq 0x2a521(%rip), %rdi     # 0x78fa8
leaq 0xcbd3(%rip), %rsi      # 0x5b661
callq 0x6520
movq %rax, -0x278(%rbp)
jmp 0x4ea9c
movq -0x278(%rbp), %rdi
movq 0x2a4e6(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4eab1
jmp 0x4eab3
movq 0x2a4ee(%rip), %rdi     # 0x78fa8
leaq 0xc94b(%rip), %rsi      # 0x5b40c
callq 0x6520
movq %rax, -0x280(%rbp)
jmp 0x4eacf
movq -0x280(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x64d0
movq %rax, -0x288(%rbp)
jmp 0x4eae8
movq -0x288(%rbp), %rdi
movq 0x2a49a(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x290(%rbp)
jmp 0x4eb04
movq -0x290(%rbp), %rdi
movq 0x2a47e(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x4eb19
movzbl -0x8b(%rbp), %r8d
movzbl -0x8a(%rbp), %ecx
movzbl -0x89(%rbp), %edx
andl $0x1, %edx
andl $0x1, %ecx
andl $0x1, %r8d
leaq -0x88(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0x30(%rbp), %r9
callq 0x29630
movl %eax, -0x294(%rbp)
jmp 0x4eb55
movl -0x294(%rbp), %eax
cmpl $0x0, %eax
je 0x4eb73
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb8(%rbp)
jmp 0x4eb84
movl $0x0, -0x4(%rbp)
movl $0x1, -0xb8(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xfe90
leaq -0x68(%rbp), %rdi
callq 0x6a08
leaq -0x30(%rbp), %rdi
callq 0x6a08
movl -0x4(%rbp), %eax
addq $0x2a0, %rsp            # imm = 0x2A0
popq %rbp
retq
leaq -0x88(%rbp), %rdi
callq 0xfe90
leaq -0x68(%rbp), %rdi
callq 0x6a08
leaq -0x30(%rbp), %rdi
callq 0x6a08
movq -0x40(%rbp), %rdi
callq 0x6900
nopw %cs:(%rax,%rax)