// File: /workspace/github_cpp_makefile_star2_O3/ridgelab[P]Kmer-SSR/src/Arguments.cpp
// Function: Arguments::processArgs(int, char**)
void Arguments::processArgs(int argc, char* argv[])
{
	// parse arguments
	string alphabet_str = "A,C,G,T";         // -a:
	string min_seq_len_str = "100";            // -l:
	string max_seq_len_str = "500000000";    // -L: // 500,000,000 (500 million)
	string min_nucleotides_str = "16";        // -n:
	string max_nucleotides_str = "10000";    // -N:
	string period_s = "4-8";                 // -p:
	string max_task_queue_size_str = "1000"; // -Q:
	string min_repeats_str = "2";            // -r:
	string max_repeats_str = "1000";         // -R:
	string enumerated_ssrs_str = "";         // -s:
	string threads_str = "1";                // -t:
	
	int c;

	if (argc > 1)
	{
		// search for -v
		while ( (c = getopt(argc,argv,"+:v")) != -1 )
		{
			switch (c)
			{
				case 'v':
					this->version_displayed = true;
					cerr << "Version: " << this->version << endl;
					return;
				case ':': break;
				case '?': break;
				default: break;
			}
		}
		
		optind = 1; // reset optind to search for -h

		// search for -h
		while ( (c = getopt(argc,argv,"+:h")) != -1 )
		{
			switch (c)
			{
				case 'h':
					this->help_displayed = true;
					cerr << this->usage_message << endl << endl << this->help_message << endl << endl;
					return;
				case ':': break;
				case '?': break;
				default: break;
			}
		}

		optind = 1; // reset optind to search for everything else
	
		// search for everything else
		while ( (c = getopt(argc,argv,"a:AbBdegGhi:l:L:n:N:o:p:Q:r:R:s:t:v")) != -1 )
		{
			switch (c)
			{
				case 'a': alphabet_str = optarg; break;
				case 'A': this->allow_non_atomic = true; break;
				case 'b': this->bzipped2_input = true; break;
				case 'B': this->bzipped2_output = true; break;
				case 'd': this->display_progress_bar = false; break;
				case 'e': this->exhaustive = true; break;
				case 'g': this->gzipped_input = true; break;
				case 'G': this->gzipped_output = true; break;
				case 'h': break;
				case 'i': this->input_file_name = optarg; break;
				case 'l': min_seq_len_str = optarg; break;
				case 'L': max_seq_len_str = optarg; break;
				case 'n': min_nucleotides_str = optarg; break;
				case 'N': max_nucleotides_str = optarg; break;
				case 'o': this->output_file_name = optarg; break;
				case 'p': period_s = optarg; break;
				case 'Q': max_task_queue_size_str = optarg; break;
				case 'r': min_repeats_str = optarg; break;
				case 'R': max_repeats_str = optarg; break;
				case 's': enumerated_ssrs_str = optarg; break;
				case 't': threads_str = optarg; break;
				case 'v': break;
				case '?':
					if (optopt == 'c')
					{
						fprintf(stderr,"Option -%c requires an argument. Run with -h for help.\n",optopt);
						this->help_displayed = true;
					}
					else if (isprint(optopt))
					{
						fprintf(stderr,"Unknown option `-%c'. Run with -h for help.\n",optopt);
						this->help_displayed = true;
					}
					else
					{
						fprintf(stderr,"Unknown option character `\\x%x'. Run with -h for help.\n",optopt);
						this->help_displayed = true;
					}
					return;
				default:
					cout << "abort, c: " << (char) c << endl;
					abort();
			}
		}
	}
	else if (argc == 1)
	{
		cerr << "Note: you are receiving input from STDIN and sending output to STDOUT\n" << endl;
	}

	// check for positional parameters (which is an error)
	if (optind < argc)
	{
		string error = "ERROR: You may not supply any positional parameters. Offenders:";

		for (uint32_t i = optind; i < (uint32_t) argc; i++)
		{
			error += " " + string(argv[i]);
		}

		throw error;
	}

	// assign member variables now that we've parsed the arguments
	this->threads = parsePositiveIntegerArgument(threads_str);
	this->addToAlphabet(alphabet_str);
	this->min_sequence_length = parsePositiveIntegerArgument(min_seq_len_str);
	this->max_sequence_length = parsePositiveIntegerArgument(max_seq_len_str);
	this->min_nucleotides = parsePositiveIntegerArgument(min_nucleotides_str);
	this->max_nucleotides = parsePositiveIntegerArgument(max_nucleotides_str);
	this->min_repeats = parsePositiveIntegerArgument(min_repeats_str);
	this->max_repeats = parsePositiveIntegerArgument(max_repeats_str);
	this->max_task_queue_size = parsePositiveIntegerArgument(max_task_queue_size_str);
	this->addToEnumeratedSSRs(enumerated_ssrs_str);
	this->addToPeriods(period_s);

	// adjust arguments for speed reasons
	this->adjustMinSequenceLength();

	// sanity check
	this->sanityCheckArguments();

	this->autoDetectCompressedInput();
	this->autoDetectCompressedOutput();
	this->display_progress_bar = this->input_file_name != "/dev/stdin" ? this->display_progress_bar : false; // if stdin..we can't determine size of data
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x358, %rsp            # imm = 0x358
movq %rdx, 0x20(%rsp)
movl %esi, %ebx
movq %rdi, %r15
leaq 0x198(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4e47(%rip), %rsi      # 0xf26d
leaq 0x4e47(%rip), %rdx      # 0xf274
leaq 0x188(%rsp), %rdi
callq 0x54f4
leaq 0x178(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4e28(%rip), %rsi      # 0xf275
leaq 0x4e24(%rip), %rdx      # 0xf278
leaq 0x168(%rsp), %rdi
callq 0x54f4
leaq 0x158(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4e05(%rip), %rsi      # 0xf279
leaq 0x4e07(%rip), %rdx      # 0xf282
leaq 0x148(%rsp), %rdi
callq 0x54f4
leaq 0x138(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4de8(%rip), %rsi      # 0xf283
leaq 0x4de3(%rip), %rdx      # 0xf285
leaq 0x128(%rsp), %rdi
callq 0x54f4
leaq 0x118(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4dc4(%rip), %rsi      # 0xf286
leaq 0x4dc2(%rip), %rdx      # 0xf28b
leaq 0x108(%rsp), %rdi
callq 0x54f4
leaq 0xf8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4da3(%rip), %rsi      # 0xf28c
leaq 0x4d9f(%rip), %rdx      # 0xf28f
leaq 0xe8(%rsp), %rdi
callq 0x54f4
leaq 0xd8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4d80(%rip), %rsi      # 0xf290
leaq 0x4d7d(%rip), %rdx      # 0xf294
leaq 0xc8(%rsp), %rdi
callq 0x54f4
leaq 0xb8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4ecc(%rip), %rsi      # 0xf403
leaq 0x4ec6(%rip), %rdx      # 0xf404
leaq 0xa8(%rsp), %rdi
callq 0x54f4
leaq 0x98(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4d32(%rip), %rsi      # 0xf290
leaq 0x4d2f(%rip), %rdx      # 0xf294
leaq 0x88(%rsp), %rdi
callq 0x54f4
leaq 0x78(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x3b34(%rip), %rdx      # 0xe0b6
leaq 0x68(%rsp), %rdi
movq %rdx, %rsi
callq 0x54f4
leaq 0x58(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4cf6(%rip), %rsi      # 0xf295
leaq 0x4cf0(%rip), %rdx      # 0xf296
leaq 0x48(%rsp), %rdi
callq 0x54f4
cmpl $0x2, %ebx
movq %r15, 0x8(%rsp)
movq %rbx, 0x10(%rsp)
jl 0xa63e
leaq 0x4cd1(%rip), %r12      # 0xf297
movl %ebx, %edi
movq 0x20(%rsp), %rsi
movq %r12, %rdx
callq 0x30a0
cmpl $-0x1, %eax
je 0xa693
cmpl $0x76, %eax
jne 0xa5c6
movb $0x1, 0xcc(%r15)
movq 0xa9fe(%rip), %rdi      # 0x14ff0
leaq 0x4ca2(%rip), %rsi      # 0xf29b
movl $0x9, %edx
callq 0x3360
movq 0x8(%rsp), %rax
movq 0xd0(%rax), %rsi
movq 0xd8(%rax), %rdx
movq 0xa9d3(%rip), %rdi      # 0x14ff0
callq 0x3360
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x32d0
jmp 0xa78a
cmpl $0x1, %ebx
jne 0xa97f
movq 0xa9a2(%rip), %r12      # 0x14ff0
leaq 0x4d20(%rip), %rsi      # 0xf375
movl $0x46, %edx
movq %r12, %rdi
callq 0x3360
movq (%r12), %rax
addq -0x18(%rax), %r12
movq %r12, %rdi
movl $0xa, %esi
callq 0x32d0
movsbl %al, %esi
movq 0xa96f(%rip), %rdi      # 0x14ff0
callq 0x3030
movq %rax, %rdi
callq 0x31f0
jmp 0xa97f
movq 0xa936(%rip), %rbx      # 0x14fd0
movl $0x1, (%rbx)
leaq 0x4bfe(%rip), %r12      # 0xf2a5
movq 0x10(%rsp), %rdi
movq 0x20(%rsp), %rsi
movq %r12, %rdx
callq 0x30a0
cmpl $-0x1, %eax
je 0xa7a2
cmpl $0x68, %eax
jne 0xa6a7
movb $0x1, 0x50(%r15)
movq 0x10(%r15), %rsi
movq 0x18(%r15), %rdx
movq 0xa915(%rip), %rdi      # 0x14ff0
callq 0x3360
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x32d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31f0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x32d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31f0
movq 0x8(%rsp), %rcx
movq 0x30(%rcx), %rsi
movq 0x38(%rcx), %rdx
movq %rax, %rdi
callq 0x3360
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x32d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x32d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3030
movq %rax, %rdi
callq 0x31f0
jmp 0xadf9
movl $0x1, (%rbx)
leaq 0x88(%r15), %rax
movq %rax, 0x1d0(%rsp)
leaq 0x90(%r15), %rax
movq %rax, 0x1c8(%rsp)
leaq 0x58(%r15), %r14
addq $0x60, %r15
leaq 0x3b4b(%rip), %rbp      # 0xe320
movq 0x10(%rsp), %rbx
movl %ebx, %edi
movq 0x20(%rsp), %rsi
leaq 0x4ac1(%rip), %rdx      # 0xf2a9
callq 0x30a0
movl %eax, %r12d
leal -0x3f(%r12), %eax
cmpl $0x37, %eax
ja 0xa975
movslq (%rbp,%rax,4), %rcx
addq %rbp, %rcx
movq %r15, %rax
movq %r14, %r13
jmpq *%rcx
movq 0x8(%rsp), %rax
movb $0x1, 0x8(%rax)
jmp 0xa7da
leaq 0x70(%rsp), %rax
leaq 0x68(%rsp), %r13
jmp 0xa943
leaq 0x130(%rsp), %rax
leaq 0x128(%rsp), %r13
jmp 0xa943
movq 0x8(%rsp), %rax
movb $0x1, 0xd(%rax)
jmp 0xa7da
movq 0x8(%rsp), %rax
movb $0x0, 0xb(%rax)
jmp 0xa7da
leaq 0xd0(%rsp), %rax
leaq 0xc8(%rsp), %r13
jmp 0xa943
movq 0x8(%rsp), %rax
movb $0x1, 0x9(%rax)
jmp 0xa7da
leaq 0xb0(%rsp), %rax
leaq 0xa8(%rsp), %r13
jmp 0xa943
leaq 0x110(%rsp), %rax
leaq 0x108(%rsp), %r13
jmp 0xa943
leaq 0xf0(%rsp), %rax
leaq 0xe8(%rsp), %r13
jmp 0xa943
movq 0x8(%rsp), %rax
movb $0x1, 0xc(%rax)
jmp 0xa7da
leaq 0x170(%rsp), %rax
leaq 0x168(%rsp), %r13
jmp 0xa943
movq 0x8(%rsp), %rax
movb $0x1, 0xa(%rax)
jmp 0xa7da
movq 0x8(%rsp), %rax
movb $0x1, 0xe(%rax)
jmp 0xa7da
leaq 0x150(%rsp), %rax
leaq 0x148(%rsp), %r13
jmp 0xa943
movq 0x1c8(%rsp), %rax
movq 0x1d0(%rsp), %r13
jmp 0xa943
leaq 0x90(%rsp), %rax
leaq 0x88(%rsp), %r13
jmp 0xa943
leaq 0x50(%rsp), %rax
leaq 0x48(%rsp), %r13
jmp 0xa943
leaq 0x190(%rsp), %rax
leaq 0x188(%rsp), %r13
movq 0xa64e(%rip), %rcx      # 0x14f98
movq (%rcx), %r12
movq (%rax), %rbx
movq %r12, %rdi
callq 0x3140
movq %r13, %rdi
xorl %esi, %esi
movq %rbx, %rdx
movq 0x10(%rsp), %rbx
movq %r12, %rcx
movq %rax, %r8
callq 0x3470
jmp 0xa7da
cmpl $-0x1, %r12d
jne 0xafe9
movq %rbx, %rax
movq 0xa647(%rip), %rbx      # 0x14fd0
cmpl %eax, (%rbx)
jl 0xb027
leaq 0x328(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
addq %rsi, %rdx
leaq 0x318(%rsp), %rdi
callq 0x3aba
leaq 0x318(%rsp), %rsi
callq 0xb90a
movq 0x8(%rsp), %rcx
movl %eax, 0xc8(%rcx)
movq 0x318(%rsp), %rdi
cmpq %r14, %rdi
je 0xa9ec
movq 0x328(%rsp), %rsi
incq %rsi
callq 0x3300
leaq 0x308(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x188(%rsp), %rsi
movq 0x190(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2f8(%rsp), %rdi
callq 0x3aba
leaq 0x2f8(%rsp), %rsi
movq 0x8(%rsp), %rdi
callq 0xb95e
movq 0x2f8(%rsp), %rdi
cmpq %r14, %rdi
je 0xaa47
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x3300
leaq 0x2e8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x168(%rsp), %rsi
movq 0x170(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2d8(%rsp), %rdi
callq 0x3aba
leaq 0x2d8(%rsp), %rsi
callq 0xb90a
movq 0x8(%rsp), %rcx
movl %eax, 0x78(%rcx)
movq 0x2d8(%rsp), %rdi
cmpq %r14, %rdi
je 0xaaa5
movq 0x2e8(%rsp), %rsi
incq %rsi
callq 0x3300
leaq 0x2c8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x148(%rsp), %rsi
movq 0x150(%rsp), %rdx
addq %rsi, %rdx
leaq 0x2b8(%rsp), %rdi
callq 0x3aba
leaq 0x2b8(%rsp), %rsi
callq 0xb90a
movq 0x8(%rsp), %rcx
movl %eax, 0x7c(%rcx)
movq 0x2b8(%rsp), %rdi
cmpq %r14, %rdi
je 0xab03
movq 0x2c8(%rsp), %rsi
incq %rsi
callq 0x3300
leaq 0x2a8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x128(%rsp), %rsi
movq 0x130(%rsp), %rdx
addq %rsi, %rdx
leaq 0x298(%rsp), %rdi
callq 0x3aba
leaq 0x298(%rsp), %rsi
callq 0xb90a
movq 0x8(%rsp), %rcx
movl %eax, 0x80(%rcx)
movq 0x298(%rsp), %rdi
cmpq %r14, %rdi
je 0xab64
movq 0x2a8(%rsp), %rsi
incq %rsi
callq 0x3300
leaq 0x288(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x108(%rsp), %rsi
movq 0x110(%rsp), %rdx
addq %rsi, %rdx
leaq 0x278(%rsp), %rdi
callq 0x3aba
leaq 0x278(%rsp), %rsi
callq 0xb90a
movq 0x8(%rsp), %rcx
movl %eax, 0x84(%rcx)
movq 0x278(%rsp), %rdi
cmpq %r14, %rdi
je 0xabc5
movq 0x288(%rsp), %rsi
incq %rsi
callq 0x3300
leaq 0x268(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x258(%rsp), %rdi
callq 0x3aba
leaq 0x258(%rsp), %rsi
callq 0xb90a
movq 0x8(%rsp), %rcx
movl %eax, 0xb4(%rcx)
movq 0x258(%rsp), %rdi
cmpq %r14, %rdi
je 0xac26
movq 0x268(%rsp), %rsi
incq %rsi
callq 0x3300
leaq 0x248(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
addq %rsi, %rdx
leaq 0x238(%rsp), %rdi
callq 0x3aba
leaq 0x238(%rsp), %rsi
callq 0xb90a
movq 0x8(%rsp), %rcx
movl %eax, 0xb8(%rcx)
movq 0x238(%rsp), %rdi
cmpq %r14, %rdi
je 0xac87
movq 0x248(%rsp), %rsi
incq %rsi
callq 0x3300
leaq 0x228(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x218(%rsp), %rdi
callq 0x3aba
leaq 0x218(%rsp), %rsi
callq 0xb90a
movq 0x8(%rsp), %rcx
movl %eax, 0xb0(%rcx)
movq 0x218(%rsp), %rdi
cmpq %r14, %rdi
je 0xace8
movq 0x228(%rsp), %rsi
incq %rsi
callq 0x3300
leaq 0x208(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1f8(%rsp), %rdi
callq 0x3aba
leaq 0x1f8(%rsp), %rsi
movq 0x8(%rsp), %rdi
callq 0xbabc
movq 0x1f8(%rsp), %rdi
cmpq %r14, %rdi
je 0xad3d
movq 0x208(%rsp), %rsi
incq %rsi
callq 0x3300
leaq 0x1e8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1d8(%rsp), %rdi
callq 0x3aba
leaq 0x1d8(%rsp), %rsi
movq 0x8(%rsp), %r15
movq %r15, %rdi
callq 0xbcfa
movq 0x1d8(%rsp), %rdi
cmpq %r14, %rdi
je 0xad9b
movq 0x1e8(%rsp), %rsi
incq %rsi
callq 0x3300
movl 0x78(%r15), %ebx
movq 0xa8(%r15), %rdi
addq $0x8, %rdi
callq 0x31c0
movl 0x20(%rax), %eax
addl %eax, %eax
cmpl %eax, %ebx
jae 0xadbc
movl %eax, 0x78(%r15)
movq %r15, %rdi
callq 0xc09a
movq 0x8(%rsp), %rdi
callq 0xc10c
movq 0x8(%rsp), %rdi
callq 0xc204
movq 0x8(%rsp), %rbx
leaq 0x58(%rbx), %rdi
leaq 0x3444(%rip), %rsi      # 0xe22c
callq 0x30f0
testl %eax, %eax
movzbl 0xb(%rbx), %ecx
cmovel %eax, %ecx
movb %cl, 0xb(%rbx)
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xae15
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
leaq 0x198(%rsp), %rbx
leaq 0x178(%rsp), %r14
leaq 0x158(%rsp), %r15
je 0xae49
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0xae6e
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0xae93
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0xaeb8
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0xaedd
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0xaf02
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0xaf27
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x148(%rsp), %rdi
cmpq %r15, %rdi
je 0xaf44
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x168(%rsp), %rdi
cmpq %r14, %rdi
je 0xaf61
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x188(%rsp), %rdi
cmpq %rbx, %rdi
je 0xaf7e
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x3300
addq $0x358, %rsp            # imm = 0x358
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0xa021(%rip), %rax      # 0x14fb8
movl (%rax), %ebp
cmpl $0x63, %ebp
jne 0xafad
movq 0x8(%rsp), %rdi
callq 0x365b
jmp 0xadf9
movl %ebp, %edi
callq 0x3550
movq 0xa00d(%rip), %rcx      # 0x14fc8
movq (%rcx), %rdi
testl %eax, %eax
movq 0x8(%rsp), %rbx
jne 0xafd0
leaq 0x4364(%rip), %rsi      # 0xf332
jmp 0xafd7
leaq 0x432e(%rip), %rsi      # 0xf305
movl %ebp, %edx
xorl %eax, %eax
callq 0x3410
movb $0x1, 0x50(%rbx)
jmp 0xadf9
movq 0x9fd0(%rip), %rdi      # 0x14fc0
leaq 0x4373(%rip), %rsi      # 0xf36a
movl $0xa, %edx
callq 0x3360
leaq 0x28(%rsp), %rsi
movb %r12b, (%rsi)
movq 0x9fb0(%rip), %rdi      # 0x14fc0
movl $0x1, %edx
callq 0x3360
movq %rax, %rdi
callq 0x3150
callq 0x31a0
leaq 0x38(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x4385(%rip), %rsi      # 0xf3bc
leaq 0x43bd(%rip), %rdx      # 0xf3fb
leaq 0x28(%rsp), %rdi
callq 0x54f4
movl (%rbx), %eax
cmpl %eax, 0x10(%rsp)
jbe 0xb164
leaq 0x1b8(%rsp), %rbp
movq 0x20(%rsp), %rcx
leaq (%rcx,%rax,8), %r14
movq 0x10(%rsp), %rcx
subl %eax, %ecx
movq %rcx, 0x10(%rsp)
xorl %r15d, %r15d
leaq 0x338(%rsp), %rbx
leaq 0x3019(%rip), %r12      # 0xe09c
leaq 0x28(%rsp), %r13
movq (%r14,%r15,8), %rsi
movq %rbx, %rdi
leaq 0x1f(%rsp), %rdx
callq 0xc69c
movl $0x1, %r8d
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
movq %r12, %rcx
callq 0x3340
movq %rbp, 0x1a8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xb0da
movq %rdx, 0x1a8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1b8(%rsp)
jmp 0xb0e1
movups (%rcx), %xmm0
movups %xmm0, (%rbp)
movq 0x8(%rax), %rdx
movq %rdx, 0x1b0(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x1a8(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
movq %r13, %rdi
callq 0x3100
movq 0x1a8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xb131
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x338(%rsp), %rdi
leaq 0x348(%rsp), %rax
cmpq %rax, %rdi
je 0xb156
movq 0x348(%rsp), %rsi
incq %rsi
callq 0x3300
incq %r15
cmpl %r15d, 0x10(%rsp)
jne 0xb088
movl $0x20, %edi
callq 0x3160
leaq 0x10(%rax), %rcx
movq %rcx, (%rax)
movq 0x28(%rsp), %rdx
leaq 0x38(%rsp), %rsi
cmpq %rsi, %rdx
jne 0xb191
leaq 0x38(%rsp), %rdx
movups (%rdx), %xmm0
movups %xmm0, (%rcx)
jmp 0xb19d
movq %rdx, (%rax)
movq 0x38(%rsp), %rcx
movq %rcx, 0x10(%rax)
movq 0x30(%rsp), %rcx
movq %rcx, 0x8(%rax)
leaq 0x38(%rsp), %rcx
movq %rcx, 0x28(%rsp)
movq $0x0, 0x30(%rsp)
movb $0x0, 0x38(%rsp)
leaq 0x9b9b(%rip), %rsi      # 0x14d60
movq 0x9dc4(%rip), %rdx      # 0x14f90
movq %rax, %rdi
callq 0x3510
movq %rax, %rbx
movq 0x1a8(%rsp), %rdi
cmpq %rbp, %rdi
je 0xb1f9
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x3300
jmp 0xb1f9
movq %rax, %rbx
movq 0x338(%rsp), %rdi
leaq 0x348(%rsp), %rax
cmpq %rax, %rdi
je 0xb225
movq 0x348(%rsp), %rsi
incq %rsi
callq 0x3300
jmp 0xb225
jmp 0xb222
movq %rax, %rbx
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xb3f2
movq 0x38(%rsp), %rsi
jmp 0xb399
jmp 0xb3ef
movq %rax, %rbx
movq 0x1d8(%rsp), %rdi
cmpq %r14, %rdi
je 0xb3f2
movq 0x1e8(%rsp), %rsi
jmp 0xb399
movq %rax, %rbx
movq 0x1f8(%rsp), %rdi
cmpq %r14, %rdi
je 0xb3f2
movq 0x208(%rsp), %rsi
jmp 0xb399
movq %rax, %rbx
movq 0x218(%rsp), %rdi
cmpq %r14, %rdi
je 0xb3f2
movq 0x228(%rsp), %rsi
jmp 0xb399
movq %rax, %rbx
movq 0x238(%rsp), %rdi
cmpq %r14, %rdi
je 0xb3f2
movq 0x248(%rsp), %rsi
jmp 0xb399
movq %rax, %rbx
movq 0x258(%rsp), %rdi
cmpq %r14, %rdi
je 0xb3f2
movq 0x268(%rsp), %rsi
jmp 0xb399
movq %rax, %rbx
movq 0x278(%rsp), %rdi
cmpq %r14, %rdi
je 0xb3f2
movq 0x288(%rsp), %rsi
jmp 0xb399
movq %rax, %rbx
movq 0x298(%rsp), %rdi
cmpq %r14, %rdi
je 0xb3f2
movq 0x2a8(%rsp), %rsi
jmp 0xb399
movq %rax, %rbx
movq 0x2b8(%rsp), %rdi
cmpq %r14, %rdi
je 0xb3f2
movq 0x2c8(%rsp), %rsi
jmp 0xb399
movq %rax, %rbx
movq 0x2d8(%rsp), %rdi
cmpq %r14, %rdi
je 0xb3f2
movq 0x2e8(%rsp), %rsi
jmp 0xb399
movq %rax, %rbx
movq 0x2f8(%rsp), %rdi
cmpq %r14, %rdi
je 0xb3f2
movq 0x308(%rsp), %rsi
jmp 0xb399
movq %rax, %rbx
movq 0x318(%rsp), %rdi
cmpq %r14, %rdi
je 0xb3f2
movq 0x328(%rsp), %rsi
incq %rsi
callq 0x3300
jmp 0xb3f2
movq %rax, %rbx
jmp 0xb40e
movq %rax, %rbx
jmp 0xb42a
movq %rax, %rbx
jmp 0xb44f
movq %rax, %rbx
jmp 0xb474
movq %rax, %rbx
jmp 0xb499
movq %rax, %rbx
jmp 0xb4be
movq %rax, %rbx
jmp 0xb4e3
movq %rax, %rbx
jmp 0xb508
movq %rax, %rbx
jmp 0xb52d
movq %rax, %rbx
jmp 0xb552
jmp 0xb3ef
movq %rax, %rbx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xb40e
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x68(%rsp), %rdi
leaq 0x78(%rsp), %rax
cmpq %rax, %rdi
je 0xb42a
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x88(%rsp), %rdi
leaq 0x98(%rsp), %rax
cmpq %rax, %rdi
je 0xb44f
movq 0x98(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0xb474
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0xb499
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0xb4be
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0xb4e3
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0xb508
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x148(%rsp), %rdi
leaq 0x158(%rsp), %rax
cmpq %rax, %rdi
je 0xb52d
movq 0x158(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0xb552
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x3300
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0xb577
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x3300
movq %rbx, %rdi
callq 0x3540
nop