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

	std::string outfile="unique.skf";
	std::vector < std::string > ingroup;
	float minproportion=0.9;
	std::vector < std::string > args;
	bool allowNs = false;

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

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

		if (arg=="-h" || arg=="--help"){
			uniqueHelp();
			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 == "-o"){
			i++;
			if (i<argc){
				outfile = std::string(argv[i])+".skf";
			}
			else {
				std::cerr << std::endl << "Expecting file name after -o flag" << std::endl << std::endl;
				return 1;
			}
		}
		else if (arg == "-i"){
			i++;
			if (i<argc){
				fileToVector(argv[i], ingroup);
			}
			else {
				std::cerr << std::endl << "Expecting file name after -i flag" << std::endl << std::endl;
				return 1;
			}
		}
		else if (arg == "-n"){
			allowNs = true;
		}
		else if (arg == "-p"){
			i++;
			if (i<argc){
				try {
					minproportion = getfloat(argv[i]);
				}
				catch (const std::invalid_argument& e) {
					std::cerr << std::endl << "Expecting float between 0 and 1 after -p flag" << std::endl << std::endl;
					return 1;
				}
			}
			else {
				std::cerr << std::endl << "Expecting float between 0 and 1 after -p flag" << std::endl << std::endl;
				return 1;
			}
			if (minproportion < 0 || minproportion > 1){
				std::cerr << std::endl << "Minimum proportion must be between 0 and 1" << std::endl << std::endl;
				return 1;
			}
		}
		else {
			args.push_back(arg);
		}
	}

	if (ingroup.size()<1){
		std::cerr << std::endl << "At least one ingroup kmer file must be specified" << std::endl;
		uniqueHelp();
		return 1;
	}

	if (args.size()<1){
		std::cerr << std::endl << "At least one kmer file must be specified" << std::endl;
		uniqueHelp();
		return 1;
	}

	skaVersion();

	std::cout << "Finding unique kmers in at least " << minproportion*100 << "% of ";
	for (std::vector < std::string >::iterator it = ingroup.begin(); it != ingroup.end(); ++it){
		std::cout << *it << " ";
	}

	std::cout << std::endl;

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

	std::cout << std::endl;

	if (uniqueKmers(ingroup, args, minproportion, outfile, allowNs)){return 1;}

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2b0, %rsp            # imm = 0x2B0
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x31(%rbp), %rdi
movq %rdi, -0x168(%rbp)
callq 0x6910
movq -0x168(%rbp), %rdx
leaq 0x6560(%rip), %rsi      # 0x5cb70
leaq -0x30(%rbp), %rdi
callq 0xab20
jmp 0x5661b
leaq -0x31(%rbp), %rdi
callq 0x65a0
leaq -0x60(%rbp), %rdi
callq 0x1ab40
movss 0x42b7(%rip), %xmm0     # 0x5a8ec
movss %xmm0, -0x64(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x1ab40
movb $0x0, -0x81(%rbp)
movl $0x2, -0x88(%rbp)
movl -0x88(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x56eec
movq -0x10(%rbp), %rax
movslq -0x88(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x178(%rbp)
leaq -0xa9(%rbp), %rdi
movq %rdi, -0x170(%rbp)
callq 0x6910
movq -0x178(%rbp), %rsi
movq -0x170(%rbp), %rdx
leaq -0xa8(%rbp), %rdi
callq 0xab20
jmp 0x566a8
leaq -0xa9(%rbp), %rdi
callq 0x65a0
leaq 0x492c(%rip), %rsi      # 0x5afe7
leaq -0xa8(%rbp), %rdi
callq 0x2dce0
movb %al, -0x179(%rbp)
jmp 0x566cf
movb -0x179(%rbp), %al
testb $0x1, %al
jne 0x56702
jmp 0x566db
leaq 0x4908(%rip), %rsi      # 0x5afea
leaq -0xa8(%rbp), %rdi
callq 0x2dce0
movb %al, -0x17a(%rbp)
jmp 0x566f6
movb -0x17a(%rbp), %al
testb $0x1, %al
jne 0x56702
jmp 0x56767
callq 0x56470
jmp 0x56709
movl $0x0, -0x4(%rbp)
movl $0x1, -0xb0(%rbp)
jmp 0x56ea9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x65a0
jmp 0x571dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xa9(%rbp), %rdi
callq 0x65a0
jmp 0x571c2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x56edb
leaq 0x48f9(%rip), %rsi      # 0x5b067
leaq -0xa8(%rbp), %rdi
callq 0x2dce0
movb %al, -0x17b(%rbp)
jmp 0x56782
movb -0x17b(%rbp), %al
testb $0x1, %al
jne 0x56791
jmp 0x568de
movl -0x88(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x88(%rbp)
movl -0x88(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x5685a
movq -0x10(%rbp), %rax
movslq -0x88(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x190(%rbp)
leaq -0xd1(%rbp), %rdi
movq %rdi, -0x188(%rbp)
callq 0x6910
movq -0x190(%rbp), %rsi
movq -0x188(%rbp), %rdx
leaq -0xd0(%rbp), %rdi
callq 0xab20
jmp 0x567f4
leaq -0xd0(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0xa6a0
jmp 0x56806
leaq -0xd0(%rbp), %rdi
callq 0x6a08
leaq -0xd1(%rbp), %rdi
callq 0x65a0
jmp 0x568d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x56849
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xd0(%rbp), %rdi
callq 0x6a08
leaq -0xd1(%rbp), %rdi
callq 0x65a0
jmp 0x56edb
movq 0x2278f(%rip), %rdi     # 0x78ff0
movq 0x22728(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x198(%rbp)
jmp 0x56876
movq -0x198(%rbp), %rdi
leaq 0x47e6(%rip), %rsi      # 0x5b06a
callq 0x6520
movq %rax, -0x1a0(%rbp)
jmp 0x56892
movq -0x1a0(%rbp), %rdi
movq 0x226f0(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x1a8(%rbp)
jmp 0x568ae
movq -0x1a8(%rbp), %rdi
movq 0x226d4(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x568c3
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb0(%rbp)
jmp 0x56ea9
jmp 0x56e9d
leaq 0x4a0c(%rip), %rsi      # 0x5b2f1
leaq -0xa8(%rbp), %rdi
callq 0x2dce0
movb %al, -0x1a9(%rbp)
jmp 0x568f9
movb -0x1a9(%rbp), %al
testb $0x1, %al
jne 0x56908
jmp 0x56a7b
movl -0x88(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x88(%rbp)
movl -0x88(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x569f7
movq -0x10(%rbp), %rax
movslq -0x88(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x1c0(%rbp)
leaq -0x119(%rbp), %rdi
movq %rdi, -0x1b8(%rbp)
callq 0x6910
movq -0x1c0(%rbp), %rsi
movq -0x1b8(%rbp), %rdx
leaq -0x118(%rbp), %rdi
callq 0xab20
jmp 0x5696b
leaq 0x53a4(%rip), %rdx      # 0x5bd16
leaq -0xf8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x24a10
jmp 0x56987
leaq -0x30(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x6640
leaq -0xf8(%rbp), %rdi
callq 0x6a08
leaq -0x118(%rbp), %rdi
callq 0x6a08
leaq -0x119(%rbp), %rdi
callq 0x65a0
jmp 0x56a76
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x569e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x6a08
leaq -0x119(%rbp), %rdi
callq 0x65a0
jmp 0x56edb
movq 0x225f2(%rip), %rdi     # 0x78ff0
movq 0x2258b(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x1c8(%rbp)
jmp 0x56a13
movq -0x1c8(%rbp), %rdi
leaq 0x4b1b(%rip), %rsi      # 0x5b53c
callq 0x6520
movq %rax, -0x1d0(%rbp)
jmp 0x56a2f
movq -0x1d0(%rbp), %rdi
movq 0x22553(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x1d8(%rbp)
jmp 0x56a4b
movq -0x1d8(%rbp), %rdi
movq 0x22537(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x56a60
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb0(%rbp)
jmp 0x56ea9
jmp 0x56e9b
leaq 0x4ab7(%rip), %rsi      # 0x5b539
leaq -0xa8(%rbp), %rdi
callq 0x2dce0
movb %al, -0x1d9(%rbp)
jmp 0x56a96
movb -0x1d9(%rbp), %al
testb $0x1, %al
jne 0x56aa5
jmp 0x56bf2
movl -0x88(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x88(%rbp)
movl -0x88(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x56b6e
movq -0x10(%rbp), %rax
movslq -0x88(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x1f0(%rbp)
leaq -0x141(%rbp), %rdi
movq %rdi, -0x1e8(%rbp)
callq 0x6910
movq -0x1f0(%rbp), %rsi
movq -0x1e8(%rbp), %rdx
leaq -0x140(%rbp), %rdi
callq 0xab20
jmp 0x56b08
leaq -0x140(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xa6a0
jmp 0x56b1a
leaq -0x140(%rbp), %rdi
callq 0x6a08
leaq -0x141(%rbp), %rdi
callq 0x65a0
jmp 0x56bed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x56b5d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x140(%rbp), %rdi
callq 0x6a08
leaq -0x141(%rbp), %rdi
callq 0x65a0
jmp 0x56edb
movq 0x2247b(%rip), %rdi     # 0x78ff0
movq 0x22414(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x1f8(%rbp)
jmp 0x56b8a
movq -0x1f8(%rbp), %rdi
leaq 0x5742(%rip), %rsi      # 0x5c2da
callq 0x6520
movq %rax, -0x200(%rbp)
jmp 0x56ba6
movq -0x200(%rbp), %rdi
movq 0x223dc(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x208(%rbp)
jmp 0x56bc2
movq -0x208(%rbp), %rdi
movq 0x223c0(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x56bd7
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb0(%rbp)
jmp 0x56ea9
jmp 0x56e99
leaq 0x5f82(%rip), %rsi      # 0x5cb7b
leaq -0xa8(%rbp), %rdi
callq 0x2dce0
movb %al, -0x209(%rbp)
jmp 0x56c0d
movb -0x209(%rbp), %al
testb $0x1, %al
jne 0x56c19
jmp 0x56c25
movb $0x1, -0x81(%rbp)
jmp 0x56e97
leaq 0x46e7(%rip), %rsi      # 0x5b313
leaq -0xa8(%rbp), %rdi
callq 0x2dce0
movb %al, -0x20a(%rbp)
jmp 0x56c40
movb -0x20a(%rbp), %al
testb $0x1, %al
jne 0x56c4f
jmp 0x56e81
movl -0x88(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x88(%rbp)
movl -0x88(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x56d69
movq -0x10(%rbp), %rax
movslq -0x88(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x4c0c0
movss %xmm0, -0x210(%rbp)
jmp 0x56c8b
movss -0x210(%rbp), %xmm0
movss %xmm0, -0x64(%rbp)
jmp 0x56d67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x56edb
movq -0x40(%rbp), %rdi
callq 0x6200
movq %rax, -0x150(%rbp)
movq 0x22320(%rip), %rdi     # 0x78ff0
movq 0x222b9(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x218(%rbp)
jmp 0x56ce5
movq -0x218(%rbp), %rdi
leaq 0x4623(%rip), %rsi      # 0x5b316
callq 0x6520
movq %rax, -0x220(%rbp)
jmp 0x56d01
movq -0x220(%rbp), %rdi
movq 0x22281(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x228(%rbp)
jmp 0x56d1d
movq -0x228(%rbp), %rdi
movq 0x22265(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x56d32
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb0(%rbp)
callq 0x6860
jmp 0x56d5d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
callq 0x6860
jmp 0x56d62
jmp 0x56ea9
jmp 0x56edb
jmp 0x56de8
movq 0x22280(%rip), %rdi     # 0x78ff0
movq 0x22219(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x230(%rbp)
jmp 0x56d85
movq -0x230(%rbp), %rdi
leaq 0x4583(%rip), %rsi      # 0x5b316
callq 0x6520
movq %rax, -0x238(%rbp)
jmp 0x56da1
movq -0x238(%rbp), %rdi
movq 0x221e1(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x240(%rbp)
jmp 0x56dbd
movq -0x240(%rbp), %rdi
movq 0x221c5(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x56dd2
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb0(%rbp)
jmp 0x56ea9
xorps %xmm0, %xmm0
ucomiss -0x64(%rbp), %xmm0
ja 0x56e03
movss -0x64(%rbp), %xmm0
movss 0x2206(%rip), %xmm1     # 0x59004
ucomiss %xmm1, %xmm0
jbe 0x56e7f
movq 0x221e6(%rip), %rdi     # 0x78ff0
movq 0x2217f(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x248(%rbp)
jmp 0x56e1f
movq -0x248(%rbp), %rdi
leaq 0x4517(%rip), %rsi      # 0x5b344
callq 0x6520
movq %rax, -0x250(%rbp)
jmp 0x56e3b
movq -0x250(%rbp), %rdi
movq 0x22147(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x258(%rbp)
jmp 0x56e57
movq -0x258(%rbp), %rdi
movq 0x2212b(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x56e6c
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb0(%rbp)
jmp 0x56ea9
jmp 0x56e95
leaq -0x80(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0xabd0
jmp 0x56e93
jmp 0x56e95
jmp 0x56e97
jmp 0x56e99
jmp 0x56e9b
jmp 0x56e9d
jmp 0x56e9f
movl $0x0, -0xb0(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x6a08
movl -0xb0(%rbp), %eax
testl %eax, %eax
jne 0x5719b
jmp 0x56ec5
jmp 0x56ec7
movl -0x88(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x88(%rbp)
jmp 0x56654
leaq -0xa8(%rbp), %rdi
callq 0x6a08
jmp 0x571c2
leaq -0x60(%rbp), %rdi
callq 0xb670
cmpq $0x1, %rax
jae 0x56f76
movq 0x220ee(%rip), %rdi     # 0x78ff0
movq 0x22087(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x260(%rbp)
jmp 0x56f17
movq -0x260(%rbp), %rdi
leaq 0x5c59(%rip), %rsi      # 0x5cb7e
callq 0x6520
movq %rax, -0x268(%rbp)
jmp 0x56f33
movq -0x268(%rbp), %rdi
movq 0x2204f(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x56f48
callq 0x56470
jmp 0x56f4f
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb0(%rbp)
jmp 0x5719b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x571c2
leaq -0x80(%rbp), %rdi
callq 0xb670
cmpq $0x1, %rax
jae 0x56fef
movq 0x22064(%rip), %rdi     # 0x78ff0
movq 0x21ffd(%rip), %rsi     # 0x78f90
callq 0x6570
movq %rax, -0x270(%rbp)
jmp 0x56fa1
movq -0x270(%rbp), %rdi
leaq 0x5c00(%rip), %rsi      # 0x5cbaf
callq 0x6520
movq %rax, -0x278(%rbp)
jmp 0x56fbd
movq -0x278(%rbp), %rdi
movq 0x21fc5(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x56fd2
callq 0x56470
jmp 0x56fd9
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb0(%rbp)
jmp 0x5719b
callq 0x4c460
jmp 0x56ff6
movq 0x21fab(%rip), %rdi     # 0x78fa8
leaq 0x5bd4(%rip), %rsi      # 0x5cbd8
callq 0x6520
movq %rax, -0x280(%rbp)
jmp 0x57012
movq -0x280(%rbp), %rdi
movss -0x64(%rbp), %xmm0
movss 0x2652(%rip), %xmm1     # 0x59678
mulss %xmm1, %xmm0
callq 0x63f0
movq %rax, -0x288(%rbp)
jmp 0x57038
movq -0x288(%rbp), %rdi
leaq 0x5bb4(%rip), %rsi      # 0x5cbfa
callq 0x6520
jmp 0x5704d
leaq -0x60(%rbp), %rdi
callq 0xb4c0
movq %rax, -0x158(%rbp)
leaq -0x60(%rbp), %rdi
callq 0xb340
movq %rax, -0x160(%rbp)
leaq -0x158(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x4a690
testb $0x1, %al
jne 0x57086
jmp 0x570cf
leaq -0x158(%rbp), %rdi
callq 0x30840
movq %rax, %rsi
movq 0x21f0c(%rip), %rdi     # 0x78fa8
callq 0x64d0
movq %rax, -0x290(%rbp)
jmp 0x570aa
movq -0x290(%rbp), %rdi
leaq 0x3295(%rip), %rsi      # 0x5a34d
callq 0x6520
jmp 0x570bf
jmp 0x570c1
leaq -0x158(%rbp), %rdi
callq 0x4a6d0
jmp 0x5705d
movq 0x21ed2(%rip), %rdi     # 0x78fa8
movq 0x21eb3(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x570e4
movq 0x21ebd(%rip), %rdi     # 0x78fa8
leaq 0x431a(%rip), %rsi      # 0x5b40c
callq 0x6520
movq %rax, -0x298(%rbp)
jmp 0x57100
movq -0x298(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x64d0
movq %rax, -0x2a0(%rbp)
jmp 0x57119
movq -0x2a0(%rbp), %rdi
movq 0x21e69(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x5712e
movq 0x21e73(%rip), %rdi     # 0x78fa8
movq 0x21e54(%rip), %rsi     # 0x78f90
callq 0x6570
jmp 0x57143
movzbl -0x81(%rbp), %r8d
andl $0x1, %r8d
leaq -0x60(%rbp), %rdi
leaq -0x80(%rbp), %rsi
leaq -0x64(%rbp), %rdx
leaq -0x30(%rbp), %rcx
callq 0x469d0
movl %eax, -0x2a4(%rbp)
jmp 0x5716c
movl -0x2a4(%rbp), %eax
cmpl $0x0, %eax
je 0x5718a
movl $0x1, -0x4(%rbp)
movl $0x1, -0xb0(%rbp)
jmp 0x5719b
movl $0x0, -0x4(%rbp)
movl $0x1, -0xb0(%rbp)
leaq -0x80(%rbp), %rdi
callq 0xfe90
leaq -0x60(%rbp), %rdi
callq 0xfe90
leaq -0x30(%rbp), %rdi
callq 0x6a08
movl -0x4(%rbp), %eax
addq $0x2b0, %rsp            # imm = 0x2B0
popq %rbp
retq
leaq -0x80(%rbp), %rdi
callq 0xfe90
leaq -0x60(%rbp), %rdi
callq 0xfe90
leaq -0x30(%rbp), %rdi
callq 0x6a08
movq -0x40(%rbp), %rdi
callq 0x6900
movq %rax, %rdi
callq 0x9b50
nop