// File: /workspace/github_cpp_makefile_star2_O1/ridgelab[P]Kmer-SSR/test/src/taskQueue.cpp
// Function: main
int main()
{
	TaskQueue tasks1 = TaskQueue();
	TaskQueue tasks2 = TaskQueue();
	//TaskQueue tasks();

	//cout << tasks.toString() << endl;

	vector<string> ids;

	stringstream strm;
	string str;
	for (uint32_t j = 0; j < 4; ++j)
	{
		for (uint32_t i = 0; i < 12; ++i)
		{
			strm << "seq_" << i;
			strm >> str;
			ids.push_back(str);
			strm.clear();
		}
	}

	vector<string> seqs( {
		"CATAACGTTGACGGATCATTGTACGCCAGTTGAAGTAAGAGATTTGCAGGCATCACTCTGTCGAAGACGAAACATATGTATACAAATATCAACGCATG",
		"GCCAGGCCACGTTAAGTGCGTAACACTGCTTAA",
		"TAGTGATTATGTCAGTGGGCCACCTATACTTTGGGTAATGTCCATGTAACACTATAAATCCAAGGCATATCTTCTCACACGGTACGCACGAACGGCTCGA",
		"AGGACTCCTGCAGATCCTGGACGCTGACTCTCAAACAAACCGCTGCTTTGCGTCGAGGGCAGACCCGTATAAGTCGCCCTACA",
		"GAAACGAGCGGGTATTGACTCTAGCCTGAAAAAAACATCGCTGTAAGC",
		"AGATACTGTTAAGGACTACTGCCCAGCTCAAATGCAATGGATACTGGCGTCCAAGCGACCTGTTTGACAGACCGCTTGTGCAACTCAAATGCTGT",
		"CCGGACCCCGAGCTTATCTAGGTAACTTTGAACTCTACAACCAATCCAAATCCAAC",
		"GACAGAAGCCGGTATACTAATTGCCGAACATATCGAAGCGATAAGGCTATTACTAAGCG",
		"AACTCAAGGTATTTCCACGCAGCGTATCCATGGAGATAATCGGTTGTGCACTGCATCGAAGCTTATACTTGGCGTACAA",
		"CGCGTGCGGGCCCGATCTTTGGACGGTCACGTGGACGTAGGACTGATTACT",
		
		"TCCAAAGTCGCAAAGATCTGCCTTGGAAAGCAGAGCGCTATTATTGTACAGGATGGCGATCTATTTGCCCGAGTTGACCGACGCAAACGTTCGAGGCTGC",
		"GTAGGTTCTAGAGGATATATCACTTTCCATAAAGTTCTGGTAGCAGTAATCAACTGGAATGGCTC",
		"TACAACACCGCTGTGCGCCGTAAAGATAGTCGCGGCTTCAGGCACGTATGGACATGTTTGAGCCATGTTGAGTTGAGGCCTCAGTTACCTACCGG",
		"ACCAGTAGTTCCCGTTCCGCGAAATTCCCCCGGATTCGTCTCGCATTCGATATTGGGTGTGGAAGAGGTAGGAGGA",
		"TCGCCACAGGCCTCTGAATGCTAGTCCTCGGACGCATCCGACTCAACCGGCGAGGTCCACAACCTTT",
		"TATCGCTATCCCCACGCACTTCTCTGGGCCGATAGCGTAACAGCATTTGTACTCGACAGGGGGATATTGGATAGCCTACCGT",
		"CCACAAAAGTCGTCTGCAAAATCACGTAGGATATTTGTCGACACCGCACCGCCAAGAAGCCATAGCATTT",
		"ATTGCATTATACACAATCTTTTTTATGATGTCTGGACCGTGCCGAGCGAAGTTCTGACATCTGAGGTGTC",
		"AGCGAGTATGCAGGGATCGTGATCATCTACTCGCACGAGCTCTACGTGGCG",
		"AAGCTGGTTTACATATTCCTCGGTTGGTTACGAACGCAAGGGCAGTCTATTCAGGAAGACTGACGCTAGGAGCAC",
		
		"CTCGGGCACGAGATGATTAGCACCGGGAACGCAGTTCCTTC",
		"CTTGCAACTTTTGGTGATGTTCTGTATCTTT",
		"TAATCGGATGGAGCGAGTATAAGCACCACGCGCGAGGTTCAGCACTGTTCCGTATTATCATACCTGTTTTAGCC",
		"GAACCGGGAGAATTAGTACTTGTGAATCGTACGAAACAGGCTCACTGGTAAC",
		"TGACTGCGAGCTGAAGGAGTACCGCTCTTCAAGCCAGCCAGGAGATTACATCATTAATCTCCTCGTGATCAGCTGCGGTTCAACTTCGACTTACCCGTT",
		"AACTCTAACGGGTCTCCTTTTGAATATACCTTGGTTAGAATCTTCCATAACGCGGGATCAACTTGTCCTTAAGTGCACGGTTT",
		"ACAGGGTTGTTCAATGGATGCGTGCGGTAGCCATACGTGGACCTATCTGAGAGGGTATTAATAAACCTACTCGAGTGGC",
		"TGAGTCGCCCGCTCGCGCCCAATTTCCGGTAGAGAATCGCAACGTCGTGCGCA",
		"ATACGACGGGCTGTCCTAACTCGTGCGGTCTT",
		"CTCGTCAGATCCGTACGCTGGGACGCGGTGGTTACTACTAAGG",
		
		"ACCTGTCGATCTCTCTTTCATATATATATGTGCCATTAGGCATGCTAAATGTGCTCGTCTGCATGCTTTCTCACCATTTCGATTCACAAA",
		"TACACGACCCGGGGACGCTGATATTGTGGGGACAAAGTGTCCA",
		"ATGCTTGTAACGACCCCAGTAGGGTTACGCTTTTGTCAGAAACCGTG",
		"ATTAAGGCCGTTCAAGCCCACGTGTGATTAAGCGGTCTGCAG",
		"TGCTATGCCCGTAATCCTAGTCATGGCCCTAAATGACGGGGAAATAGAACTTGGAGGCCAGGGTGACGCCTC",
		"TCTCGGTGCTGGATCGCCGTAAGAAAGAGCTTCCATTTCCACTTCGCGCAATCTTTGT",
		"TATGGCAGGGCTATTTTCAGTTCAAACATTTTAATATATCAACTTGGCCTGTGATCGACCAAAACAAGCGTAGGTCAGGATAAG",
		"GCTCTTTTCGGCCTTATGTATAGTGACACCACATCTTAACGTCGACACAATACGCAACTCCTATCAGTGGAACTA",
		"GGAACGTATCCATTGGAAATCGAGACGATGGGCTTCCACTTGTCTGG",
		"GATTCGAGAGGCCACGGCAGCGCCCAGCCTGTAAGTAAGTA",
		
		"TCTTCGATGTCTGGAGGAGCCACCTTACTTTTGAAAACAGTATGCGATGTGTCTCCAGGTATTTGATAACCTGACTTG",
		"TTCATAACTCATACTTAAAAATTCATAACAAGAAGTTTCCGGAAATT",
		"CCCAGCAAATTACTGAGGGCACTAGGTGGGTCGATCTGTGACTAAATGCCCTAGCTCGATCGCCCTCGGAGGACCAACCTCCCTCGGCTCTGAAAACAT",
		"TATAAGCGCAGAGCACACGAATTGGTGCCTATCTGACAAGGAGCGACATAGACACACCAGTGCAG",
		"GATAGGCTGAGGATTGAGAAGTGCGACACATTGAGTCAAACCCAGTGTACTGTTTTACCTGGCCTCAGTTGATAAGACCCACATAATCCCGTTACACTA",
		"AGTTATTGGTCGACCGCTATCTTAGGCATGGCTTGTAGC",
		"GGTTCCTGCGCCAAACAAAACGATCCGATGCTTCTAGTCG",
		"GTCTAATGGTGTCCTGGGCGTCATTCGGAGGTTGAGATCAGACTTTGTGATGGGGTTCCTTGTGAG"
	} );

	vector<uint32_t> global_sequence_lengths( {
		801, 680, 288, 849, 496, 911, 497, 200, 507, 267,
		779, 189, 521, 928, 333, 870, 178, 382, 895, 506,
		455, 917, 188, 319, 966, 896, 932, 691, 960, 560,
		695, 703, 888, 332, 900, 517, 869, 289, 991, 213,
		877, 405, 710, 435, 840, 677, 360, 345
	} );

	vector<uint32_t> global_positions( {
		757, 918, 849, 478, 623, 860, 373, 375, 553, 936,
		119, 988, 445, 240, 167, 872, 902, 507, 967, 581,
		499, 962, 807, 838, 403, 428, 327, 360, 701, 570,
		579, 700, 772, 438, 458, 482, 936, 880, 739, 158,
		606, 449, 762, 603, 766, 411, 568, 175
	} );

	/*
	 * 	NOTE: A global position cannot technically be larger than the global
	 * 	sequence length. However, for testing purposes, we just generated 48
	 * 	random numbers and stuck them in these two vectors.
	 */
		
	for (uint32_t i = 0; i < 48; ++i)
	{
		Task* temp_task_ptr = new Task(ids[i], seqs[i], global_positions[i], global_sequence_lengths[i]);
		tasks1.add(temp_task_ptr);
		
		temp_task_ptr = new Task(ids[i], seqs[i], global_positions[i], global_sequence_lengths[i]);
		tasks2.add(temp_task_ptr);
	}

	//cout << tasks2.toString() << endl;
	//cout << tasks2.toJson() << endl;

	for (uint32_t i = 0; i < 3; ++i)
	{
		Task* temp_ptr = tasks2.get();
		delete temp_ptr;
	}

	tasks2.clear();

	bool pass = true;
	string pass_or_fail_msg = pass ? "\033[0;32mOK" : "\033[0;31mFAIL";
	cout << "\n\033[0;34mTaskQueue Test: " << pass_or_fail_msg << "\033[0m" << endl;
	
	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x8e8, %rsp            # imm = 0x8E8
leaq 0x6f8(%rsp), %rdi
callq 0x3894
leaq 0x690(%rsp), %rdi
callq 0x3894
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
leaq 0x760(%rsp), %rbx
movq %rbx, %rdi
callq 0x20e0
leaq 0x68(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq $0x0, 0x8(%rsp)
leaq 0x770(%rsp), %r14
leaq 0x2af0(%rip), %r15      # 0x5004
leaq 0x58(%rsp), %r12
leaq 0x40(%rsp), %r13
xorl %ebp, %ebp
movl $0x4, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x21c0
movq %r14, %rdi
movq %rbp, %rsi
callq 0x20c0
movq %rbx, %rdi
movq %r12, %rsi
callq 0x21d0
movq %r13, %rdi
movq %r12, %rsi
callq 0x321e
movq 0x760(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
xorl %esi, %esi
callq 0x2240
incq %rbp
cmpq $0xc, %rbp
jne 0x2520
movq 0x8(%rsp), %rax
incl %eax
movq %rax, 0x8(%rsp)
cmpl $0x4, %eax
jne 0x251e
leaq 0xa0(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x2a75(%rip), %rsi      # 0x5009
leaq 0x2ad0(%rip), %rdx      # 0x506b
leaq 0x90(%rsp), %rbx
movq %rbx, %rdi
callq 0x3664
leaq 0xb0(%rsp), %r14
leaq 0xc0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2aa6(%rip), %rsi      # 0x506c
leaq 0x2ac0(%rip), %rdx      # 0x508d
movq %r14, %rdi
callq 0x3664
leaq 0xd0(%rsp), %r14
leaq 0xe0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2a9e(%rip), %rsi      # 0x508e
leaq 0x2afb(%rip), %rdx      # 0x50f2
movq %r14, %rdi
callq 0x3664
leaq 0xf0(%rsp), %r14
leaq 0x100(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ad9(%rip), %rsi      # 0x50f3
leaq 0x2b25(%rip), %rdx      # 0x5146
movq %r14, %rdi
callq 0x3664
leaq 0x110(%rsp), %r14
leaq 0x120(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b03(%rip), %rsi      # 0x5147
leaq 0x2b2c(%rip), %rdx      # 0x5177
movq %r14, %rdi
callq 0x3664
leaq 0x130(%rsp), %r14
leaq 0x140(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b0a(%rip), %rsi      # 0x5178
leaq 0x2b62(%rip), %rdx      # 0x51d7
movq %r14, %rdi
callq 0x3664
leaq 0x150(%rsp), %r14
leaq 0x160(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b40(%rip), %rsi      # 0x51d8
leaq 0x2b71(%rip), %rdx      # 0x5210
movq %r14, %rdi
callq 0x3664
leaq 0x170(%rsp), %r14
leaq 0x180(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b4f(%rip), %rsi      # 0x5211
leaq 0x2b83(%rip), %rdx      # 0x524c
movq %r14, %rdi
callq 0x3664
leaq 0x190(%rsp), %r14
leaq 0x1a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b61(%rip), %rsi      # 0x524d
leaq 0x2ba9(%rip), %rdx      # 0x529c
movq %r14, %rdi
callq 0x3664
leaq 0x1b0(%rsp), %r14
leaq 0x1c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b87(%rip), %rsi      # 0x529d
leaq 0x2bb3(%rip), %rdx      # 0x52d0
movq %r14, %rdi
callq 0x3664
leaq 0x1d0(%rsp), %r14
leaq 0x1e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b91(%rip), %rsi      # 0x52d1
leaq 0x2bee(%rip), %rdx      # 0x5335
movq %r14, %rdi
callq 0x3664
leaq 0x1f0(%rsp), %r14
leaq 0x200(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2bcc(%rip), %rsi      # 0x5336
leaq 0x2c06(%rip), %rdx      # 0x5377
movq %r14, %rdi
callq 0x3664
leaq 0x210(%rsp), %r14
leaq 0x220(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2be4(%rip), %rsi      # 0x5378
leaq 0x2c3c(%rip), %rdx      # 0x53d7
movq %r14, %rdi
callq 0x3664
leaq 0x230(%rsp), %r14
leaq 0x240(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2c1a(%rip), %rsi      # 0x53d8
leaq 0x2c5f(%rip), %rdx      # 0x5424
movq %r14, %rdi
callq 0x3664
leaq 0x250(%rsp), %r14
leaq 0x260(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2c3d(%rip), %rsi      # 0x5425
leaq 0x2c79(%rip), %rdx      # 0x5468
movq %r14, %rdi
callq 0x3664
leaq 0x270(%rsp), %r14
leaq 0x280(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2c57(%rip), %rsi      # 0x5469
leaq 0x2ca2(%rip), %rdx      # 0x54bb
movq %r14, %rdi
callq 0x3664
leaq 0x290(%rsp), %r14
leaq 0x2a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2c80(%rip), %rsi      # 0x54bc
leaq 0x2cbf(%rip), %rdx      # 0x5502
movq %r14, %rdi
callq 0x3664
leaq 0x2b0(%rsp), %r14
leaq 0x2c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2c9d(%rip), %rsi      # 0x5503
leaq 0x2cdc(%rip), %rdx      # 0x5549
movq %r14, %rdi
callq 0x3664
leaq 0x2d0(%rsp), %r14
leaq 0x2e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2cba(%rip), %rsi      # 0x554a
leaq 0x2ce6(%rip), %rdx      # 0x557d
movq %r14, %rdi
callq 0x3664
leaq 0x2f0(%rsp), %r14
leaq 0x300(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2cc4(%rip), %rsi      # 0x557e
leaq 0x2d08(%rip), %rdx      # 0x55c9
movq %r14, %rdi
callq 0x3664
leaq 0x310(%rsp), %r14
leaq 0x320(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ce6(%rip), %rsi      # 0x55ca
leaq 0x2d08(%rip), %rdx      # 0x55f3
movq %r14, %rdi
callq 0x3664
leaq 0x330(%rsp), %r14
leaq 0x340(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ce6(%rip), %rsi      # 0x55f4
leaq 0x2cfe(%rip), %rdx      # 0x5613
movq %r14, %rdi
callq 0x3664
leaq 0x350(%rsp), %r14
leaq 0x360(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2cdc(%rip), %rsi      # 0x5614
leaq 0x2d1f(%rip), %rdx      # 0x565e
movq %r14, %rdi
callq 0x3664
leaq 0x370(%rsp), %r14
leaq 0x380(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2cfd(%rip), %rsi      # 0x565f
leaq 0x2d2a(%rip), %rdx      # 0x5693
movq %r14, %rdi
callq 0x3664
leaq 0x390(%rsp), %r14
leaq 0x3a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d08(%rip), %rsi      # 0x5694
leaq 0x2d64(%rip), %rdx      # 0x56f7
movq %r14, %rdi
callq 0x3664
leaq 0x3b0(%rsp), %r14
leaq 0x3c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d42(%rip), %rsi      # 0x56f8
leaq 0x2d8e(%rip), %rdx      # 0x574b
movq %r14, %rdi
callq 0x3664
leaq 0x3d0(%rsp), %r14
leaq 0x3e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d6c(%rip), %rsi      # 0x574c
leaq 0x2db4(%rip), %rdx      # 0x579b
movq %r14, %rdi
callq 0x3664
leaq 0x3f0(%rsp), %r14
leaq 0x400(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d92(%rip), %rsi      # 0x579c
leaq 0x2dc0(%rip), %rdx      # 0x57d1
movq %r14, %rdi
callq 0x3664
leaq 0x410(%rsp), %r14
leaq 0x420(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d9e(%rip), %rsi      # 0x57d2
leaq 0x2db7(%rip), %rdx      # 0x57f2
movq %r14, %rdi
callq 0x3664
leaq 0x430(%rsp), %r14
leaq 0x440(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d95(%rip), %rsi      # 0x57f3
leaq 0x2db9(%rip), %rdx      # 0x581e
movq %r14, %rdi
callq 0x3664
leaq 0x450(%rsp), %r14
leaq 0x460(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d97(%rip), %rsi      # 0x581f
leaq 0x2dea(%rip), %rdx      # 0x5879
movq %r14, %rdi
callq 0x3664
leaq 0x470(%rsp), %r14
leaq 0x480(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2dc8(%rip), %rsi      # 0x587a
leaq 0x2dec(%rip), %rdx      # 0x58a5
movq %r14, %rdi
callq 0x3664
leaq 0x490(%rsp), %r14
leaq 0x4a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2dca(%rip), %rsi      # 0x58a6
leaq 0x2df2(%rip), %rdx      # 0x58d5
movq %r14, %rdi
callq 0x3664
leaq 0x4b0(%rsp), %r14
leaq 0x4c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2dd0(%rip), %rsi      # 0x58d6
leaq 0x2df3(%rip), %rdx      # 0x5900
movq %r14, %rdi
callq 0x3664
leaq 0x4d0(%rsp), %r14
leaq 0x4e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2dd1(%rip), %rsi      # 0x5901
leaq 0x2e12(%rip), %rdx      # 0x5949
movq %r14, %rdi
callq 0x3664
leaq 0x4f0(%rsp), %r14
leaq 0x500(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2df0(%rip), %rsi      # 0x594a
leaq 0x2e23(%rip), %rdx      # 0x5984
movq %r14, %rdi
callq 0x3664
leaq 0x510(%rsp), %r14
leaq 0x520(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e01(%rip), %rsi      # 0x5985
leaq 0x2e4e(%rip), %rdx      # 0x59d9
movq %r14, %rdi
callq 0x3664
leaq 0x530(%rsp), %r14
leaq 0x540(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e2c(%rip), %rsi      # 0x59da
leaq 0x2e70(%rip), %rdx      # 0x5a25
movq %r14, %rdi
callq 0x3664
leaq 0x550(%rsp), %r14
leaq 0x560(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e4e(%rip), %rsi      # 0x5a26
leaq 0x2e76(%rip), %rdx      # 0x5a55
movq %r14, %rdi
callq 0x3664
leaq 0x570(%rsp), %r14
leaq 0x580(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e54(%rip), %rsi      # 0x5a56
leaq 0x2e76(%rip), %rdx      # 0x5a7f
movq %r14, %rdi
callq 0x3664
leaq 0x590(%rsp), %r14
leaq 0x5a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e54(%rip), %rsi      # 0x5a80
leaq 0x2e9b(%rip), %rdx      # 0x5ace
movq %r14, %rdi
callq 0x3664
leaq 0x5b0(%rsp), %r14
leaq 0x5c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e79(%rip), %rsi      # 0x5acf
leaq 0x2ea1(%rip), %rdx      # 0x5afe
movq %r14, %rdi
callq 0x3664
leaq 0x5d0(%rsp), %r14
leaq 0x5e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e7f(%rip), %rsi      # 0x5aff
leaq 0x2edb(%rip), %rdx      # 0x5b62
movq %r14, %rdi
callq 0x3664
leaq 0x5f0(%rsp), %r14
leaq 0x600(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2eb9(%rip), %rsi      # 0x5b63
leaq 0x2ef3(%rip), %rdx      # 0x5ba4
movq %r14, %rdi
callq 0x3664
leaq 0x610(%rsp), %r14
leaq 0x620(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ed1(%rip), %rsi      # 0x5ba5
leaq 0x2f2d(%rip), %rdx      # 0x5c08
movq %r14, %rdi
callq 0x3664
leaq 0x630(%rsp), %r14
leaq 0x640(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2f0b(%rip), %rsi      # 0x5c09
leaq 0x2f2b(%rip), %rdx      # 0x5c30
movq %r14, %rdi
callq 0x3664
leaq 0x650(%rsp), %r14
leaq 0x660(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2f09(%rip), %rsi      # 0x5c31
leaq 0x2f2a(%rip), %rdx      # 0x5c59
movq %r14, %rdi
callq 0x3664
leaq 0x670(%rsp), %r14
leaq 0x680(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x2f08(%rip), %rsi      # 0x5c5a
leaq 0x2f43(%rip), %rdx      # 0x5c9c
movq %r14, %rdi
callq 0x3664
leaq 0x78(%rsp), %rdi
leaq 0x90(%rsp), %rsi
leaq 0x28(%rsp), %rcx
movl $0x30, %edx
callq 0x325c
movq $-0x600, %rbx           # imm = 0xFA00
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x2d98
movq (%r15), %rsi
incq %rsi
callq 0x2180
addq $-0x20, %r15
addq $0x20, %rbx
jne 0x2d84
leaq 0x2f93(%rip), %rsi      # 0x5d3c
leaq 0x90(%rsp), %rbx
movl $0xc0, %edx
movq %rbx, %rdi
callq 0x2120
leaq 0x28(%rsp), %rdi
leaq 0x10(%rsp), %rcx
movl $0x30, %edx
movq %rbx, %rsi
callq 0x32a4
leaq 0x3020(%rip), %rsi      # 0x5dfc
leaq 0x90(%rsp), %rbx
movl $0xc0, %edx
movq %rbx, %rdi
callq 0x2120
leaq 0x10(%rsp), %rdi
leaq 0x7(%rsp), %rcx
movl $0x30, %edx
movq %rbx, %rsi
callq 0x32a4
xorl %r15d, %r15d
leaq 0x6f8(%rsp), %rbx
leaq 0x690(%rsp), %r14
xorl %ebp, %ebp
movl $0x48, %edi
callq 0x2170
movq %rax, %r12
movq 0x40(%rsp), %rsi
addq %r15, %rsi
movq 0x78(%rsp), %rdx
addq %r15, %rdx
movq 0x10(%rsp), %rax
movl (%rax,%rbp,4), %ecx
movq 0x28(%rsp), %rax
movl (%rax,%rbp,4), %r8d
movq %r12, %rdi
callq 0x4330
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3a22
movl $0x48, %edi
callq 0x2170
movq %rax, %r12
movq 0x40(%rsp), %rsi
addq %r15, %rsi
movq 0x78(%rsp), %rdx
addq %r15, %rdx
movq 0x10(%rsp), %rax
movl (%rax,%rbp,4), %ecx
movq 0x28(%rsp), %rax
movl (%rax,%rbp,4), %r8d
movq %r12, %rdi
callq 0x4330
movq %r14, %rdi
movq %r12, %rsi
callq 0x3a22
incq %rbp
addq $0x20, %r15
cmpq $0x30, %rbp
jne 0x2e1d
movl $0x3, %ebp
leaq 0x690(%rsp), %rbx
movq %rbx, %rdi
callq 0x3a88
movq %rax, %r14
testq %rax, %rax
je 0x2ee2
movq %r14, %rdi
callq 0x43c0
movl $0x48, %esi
movq %r14, %rdi
callq 0x2180
decl %ebp
jne 0x2ebd
leaq 0x690(%rsp), %rdi
callq 0x395a
leaq 0x90(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2d98(%rip), %rsi      # 0x5c9d
leaq 0x2d9a(%rip), %rdx      # 0x5ca6
callq 0x3664
movq 0x60c0(%rip), %rdi      # 0x8fd8
leaq 0x2d88(%rip), %rsi      # 0x5ca7
movl $0x18, %edx
callq 0x21c0
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
movq 0x6098(%rip), %rdi      # 0x8fd8
callq 0x21c0
movq %rax, %rbx
leaq 0x2d71(%rip), %rsi      # 0x5cc0
movl $0x4, %edx
movq %rax, %rdi
callq 0x21c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2160
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x20d0
movq 0x90(%rsp), %rdi
cmpq %r13, %rdi
je 0x2fa0
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x2180
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x2fb7
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x2fce
movq 0x38(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
leaq 0x78(%rsp), %rdi
callq 0x32ea
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x2ff4
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x2180
movq 0x5fc5(%rip), %rsi      # 0x8fc0
leaq 0x760(%rsp), %rdi
callq 0x2100
leaq 0x7e0(%rsp), %rdi
callq 0x2060
leaq 0x40(%rsp), %rdi
callq 0x32ea
leaq 0x690(%rsp), %rdi
callq 0x3928
leaq 0x6f8(%rsp), %rdi
callq 0x3928
xorl %eax, %eax
addq $0x8e8, %rsp            # imm = 0x8E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3174
jmp 0x3174
movq %rax, %r15
jmp 0x318e
movq %rax, %r15
jmp 0x31a5
movq %rax, %r15
leaq 0x690(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x2290
movb $0x1, %al
jmp 0x30e4
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
jmp 0x30df
movq %rax, %r15
xorl %eax, %eax
cmpq %r14, %rbx
sete %cl
orb %al, %cl
jne 0x31b4
addq $-0x10, %r14
leaq 0x90(%rsp), %rbx
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x3112
movq (%r14), %rsi
incq %rsi
callq 0x2180
leaq -0x20(%r14), %rax
addq $-0x10, %r14
cmpq %rbx, %r14
movq %rax, %r14
jne 0x30fe
jmp 0x31b4
movq %rax, %r15
xorl %eax, %eax
movq %rbx, %r14
jmp 0x30e4
movq %rax, %r15
jmp 0x31f1
movq %rax, %r15
jmp 0x3208
movq %rax, %r15
movq 0x90(%rsp), %rdi
cmpq %r13, %rdi
je 0x3177
movq 0xa0(%rsp), %rsi
incq %rsi
jmp 0x316d
jmp 0x3174
jmp 0x3162
movq %rax, %r15
movl $0x48, %esi
movq %r12, %rdi
callq 0x2180
jmp 0x3177
movq %rax, %r15
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x318e
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x31a5
movq 0x38(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
leaq 0x78(%rsp), %rdi
callq 0x32ea
jmp 0x31b4
movq %rax, %r15
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x31d0
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x2180
movq 0x5de9(%rip), %rsi      # 0x8fc0
leaq 0x760(%rsp), %rdi
callq 0x2100
leaq 0x7e0(%rsp), %rdi
callq 0x2060
leaq 0x40(%rsp), %rdi
callq 0x32ea
leaq 0x690(%rsp), %rdi
callq 0x3928
leaq 0x6f8(%rsp), %rdi
callq 0x3928
movq %r15, %rdi
callq 0x2250
nop