// File: ridgelab[P]Kmer-SSR/test/src/threads.cpp
// Function: test1(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bool test1(string threads)
{
	bool ret_val = true;

	Arguments* args;

	string temp_output_file_name = "test/output/actual/1_" + threads + ".tsv";

	try
	{
		int argc = 14;
		char* argv[] = {
			(char*)("test1"),
			(char*)("-d"),
			(char*)("-i"),
			(char*)("test/input/1.fasta"),
			(char*)("-o"),
			const_cast<char*>(temp_output_file_name.c_str()),
			(char*)("-n"),
			(char*)("2"),
			(char*)("-l"),
			(char*)("2"),
			(char*)("-p"),
			(char*)("2-3"),
			(char*)("-t"),
			const_cast<char*>(threads.c_str())
		};
		
		args = new Arguments(argc, argv);
		
		if (!args->helpOrVersionDisplayed())
		{
			//cerr << "checkpoint 1" << endl;
			FindSSRs* find_ssrs = new FindSSRs(args);
			//cerr << "checkpoint 2" << endl;
			ret_val = find_ssrs->run() == 0 ? true : false;
			//cerr << "checkpoint 3" << endl;
			delete find_ssrs;
			//cerr << "checkpoint 4" << endl;

			if (ret_val)
			{
				//cerr << "checkpoint 5" << endl;
				ret_val = actualOutputMatchedExpected("test/output/actual/1_" + threads + ".tsv", "test/output/expected/1.tsv");
				//cerr << "checkpoint 6" << endl;
			}
			//cerr << "checkpoint 7" << endl;
		}
	}
	catch(string error)
	{
		cerr << error << endl;
		ret_val = false;
	}
	catch(const char* error)
	{
		cerr << error << endl;
		ret_val = false;
	}
	
	delete args;
	//delete blah2;

	return ret_val;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1f0, %rsp            # imm = 0x1F0
movq %rdi, %rdx
movq %rdx, -0x188(%rbp)
movq %rdx, -0x8(%rbp)
movb $0x1, -0x9(%rbp)
leaq 0x21b3c(%rip), %rsi     # 0x27050
leaq -0x58(%rbp), %rdi
movq %rdi, -0x180(%rbp)
callq 0x9be0
movq -0x180(%rbp), %rsi
leaq 0x21e30(%rip), %rdx     # 0x27362
leaq -0x38(%rbp), %rdi
callq 0x9b90
jmp 0x553d
leaq -0x58(%rbp), %rdi
callq 0x47a8
movl $0xe, -0x68(%rbp)
leaq 0x21b12(%rip), %rax     # 0x27066
movq %rax, -0xe0(%rbp)
leaq 0x21b0a(%rip), %rax     # 0x2706c
movq %rax, -0xd8(%rbp)
leaq 0x21aff(%rip), %rax     # 0x2706f
movq %rax, -0xd0(%rbp)
leaq 0x21af4(%rip), %rax     # 0x27072
movq %rax, -0xc8(%rbp)
leaq 0x21af9(%rip), %rax     # 0x27085
movq %rax, -0xc0(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x4180
movq -0x188(%rbp), %rdi
movq %rax, -0xb8(%rbp)
leaq 0x21ad7(%rip), %rax     # 0x27088
movq %rax, -0xb0(%rbp)
leaq 0x21e12(%rip), %rax     # 0x273d1
movq %rax, -0xa8(%rbp)
leaq 0x21abe(%rip), %rcx     # 0x2708b
movq %rcx, -0xa0(%rbp)
movq %rax, -0x98(%rbp)
leaq 0x21aac(%rip), %rax     # 0x2708e
movq %rax, -0x90(%rbp)
leaq 0x21aa1(%rip), %rax     # 0x27091
movq %rax, -0x88(%rbp)
leaq 0x21a97(%rip), %rax     # 0x27095
movq %rax, -0x80(%rbp)
callq 0x4180
movq %rax, -0x78(%rbp)
movl $0xf0, %edi
callq 0x43c0
movq %rax, -0x190(%rbp)
jmp 0x561e
movq -0x190(%rbp), %rdi
movl -0x68(%rbp), %esi
leaq -0xe0(%rbp), %rdx
callq 0x11aa0
jmp 0x5636
movq -0x190(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
callq 0x12f90
movb %al, -0x191(%rbp)
jmp 0x5652
movb -0x191(%rbp), %al
testb $0x1, %al
jne 0x59bb
jmp 0x5662
movl $0x40, %edi
callq 0x43c0
movq %rax, -0x1a0(%rbp)
jmp 0x5675
movq -0x1a0(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xbe20
jmp 0x5687
movq -0x1a0(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0xe8(%rbp), %rdi
callq 0xc0f0
movl %eax, -0x1a4(%rbp)
jmp 0x56a9
movl -0x1a4(%rbp), %ecx
xorl %eax, %eax
subl $0x1, %ecx
sbbl %eax, %eax
andb $0x1, %al
movb %al, -0x9(%rbp)
movq -0xe8(%rbp), %rax
movq %rax, -0x1b0(%rbp)
cmpq $0x0, %rax
je 0x56ec
movq -0x1b0(%rbp), %rdi
callq 0xc020
movq -0x1b0(%rbp), %rdi
movl $0x40, %esi
callq 0x43d0
testb $0x1, -0x9(%rbp)
je 0x59b9
movq -0x188(%rbp), %rdx
leaq 0x2194c(%rip), %rsi     # 0x27050
leaq -0x128(%rbp), %rdi
callq 0x9be0
jmp 0x5712
leaq 0x21c49(%rip), %rdx     # 0x27362
leaq -0x108(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x9b90
jmp 0x572e
leaq -0x149(%rbp), %rdi
movq %rdi, -0x1b8(%rbp)
callq 0x4720
movq -0x1b8(%rbp), %rdx
leaq 0x21949(%rip), %rsi     # 0x27098
leaq -0x148(%rbp), %rdi
callq 0x9720
jmp 0x575d
leaq -0x108(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x94a0
movb %al, -0x1b9(%rbp)
jmp 0x5778
movb -0x1b9(%rbp), %al
andb $0x1, %al
movb %al, -0x9(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x47a8
leaq -0x149(%rbp), %rdi
callq 0x4430
leaq -0x108(%rbp), %rdi
callq 0x47a8
leaq -0x128(%rbp), %rdi
callq 0x47a8
jmp 0x59b9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x47a8
jmp 0x5a0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x5879
movq -0x190(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
movl $0xf0, %esi
callq 0x43d0
jmp 0x5879
movq -0x1a0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
movl $0x40, %esi
callq 0x43d0
jmp 0x5879
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x586d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x5855
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x47a8
leaq -0x149(%rbp), %rdi
callq 0x4430
leaq -0x108(%rbp), %rdi
callq 0x47a8
leaq -0x128(%rbp), %rdi
callq 0x47a8
movl -0x64(%rbp), %eax
movl %eax, -0x1c0(%rbp)
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0x5957
movq -0x60(%rbp), %rdi
movq %rdi, -0x1c8(%rbp)
callq 0x44f0
movq %rax, %rsi
leaq -0x178(%rbp), %rdi
callq 0x4190
jmp 0x58b0
movq -0x1c8(%rbp), %rdi
callq 0x4170
movq 0x3572d(%rip), %rdi     # 0x3aff0
leaq -0x178(%rbp), %rsi
callq 0x4360
movq %rax, -0x1d0(%rbp)
jmp 0x58d8
movq -0x1d0(%rbp), %rdi
movq 0x356aa(%rip), %rsi     # 0x3af90
callq 0x4400
jmp 0x58ed
movb $0x0, -0x9(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x47a8
callq 0x4660
jmp 0x5904
jmp 0x5906
movq -0x18(%rbp), %rax
movq %rax, -0x1d8(%rbp)
cmpq $0x0, %rax
je 0x5934
movq -0x1d8(%rbp), %rdi
callq 0x12e80
movq -0x1d8(%rbp), %rdi
movl $0xf0, %esi
callq 0x43d0
movb -0x9(%rbp), %al
movb %al, -0x1d9(%rbp)
leaq -0x38(%rbp), %rdi
callq 0x47a8
movb -0x1d9(%rbp), %al
andb $0x1, %al
addq $0x1f0, %rsp            # imm = 0x1F0
popq %rbp
retq
movl -0x1c0(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0x5a02
movq -0x60(%rbp), %rdi
callq 0x4170
movq %rax, -0x158(%rbp)
movq -0x158(%rbp), %rsi
movq 0x35668(%rip), %rdi     # 0x3aff0
callq 0x43b0
movq %rax, -0x1e8(%rbp)
jmp 0x5996
movq -0x1e8(%rbp), %rdi
movq 0x355ec(%rip), %rsi     # 0x3af90
callq 0x4400
jmp 0x59ab
movb $0x0, -0x9(%rbp)
callq 0x4660
jmp 0x5906
jmp 0x59bb
jmp 0x5906
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
callq 0x4660
jmp 0x5a02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x47a8
callq 0x4660
jmp 0x5a00
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x5a02
jmp 0x5a02
leaq -0x38(%rbp), %rdi
callq 0x47a8
movq -0x60(%rbp), %rdi
callq 0x4700
movq %rax, %rdi
callq 0x9cf0
nopl (%rax)