// File: /workspace/github_cpp_makefile_star2_O3/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 0x3820
leaq 0x690(%rsp), %rdi
callq 0x3820
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 0x2b10(%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 0x31e2
movq 0x760(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
xorl %esi, %esi
callq 0x2240
incq %rbp
cmpq $0xc, %rbp
jne 0x2500
movq 0x8(%rsp), %rax
incl %eax
movq %rax, 0x8(%rsp)
cmpl $0x4, %eax
jne 0x24fe
leaq 0xa0(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x2a95(%rip), %rsi      # 0x5009
leaq 0x2af0(%rip), %rdx      # 0x506b
leaq 0x90(%rsp), %rbx
movq %rbx, %rdi
callq 0x35f8
leaq 0xb0(%rsp), %r14
leaq 0xc0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ac6(%rip), %rsi      # 0x506c
leaq 0x2ae0(%rip), %rdx      # 0x508d
movq %r14, %rdi
callq 0x35f8
leaq 0xd0(%rsp), %r14
leaq 0xe0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2abe(%rip), %rsi      # 0x508e
leaq 0x2b1b(%rip), %rdx      # 0x50f2
movq %r14, %rdi
callq 0x35f8
leaq 0xf0(%rsp), %r14
leaq 0x100(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2af9(%rip), %rsi      # 0x50f3
leaq 0x2b45(%rip), %rdx      # 0x5146
movq %r14, %rdi
callq 0x35f8
leaq 0x110(%rsp), %r14
leaq 0x120(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b23(%rip), %rsi      # 0x5147
leaq 0x2b4c(%rip), %rdx      # 0x5177
movq %r14, %rdi
callq 0x35f8
leaq 0x130(%rsp), %r14
leaq 0x140(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b2a(%rip), %rsi      # 0x5178
leaq 0x2b82(%rip), %rdx      # 0x51d7
movq %r14, %rdi
callq 0x35f8
leaq 0x150(%rsp), %r14
leaq 0x160(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b60(%rip), %rsi      # 0x51d8
leaq 0x2b91(%rip), %rdx      # 0x5210
movq %r14, %rdi
callq 0x35f8
leaq 0x170(%rsp), %r14
leaq 0x180(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b6f(%rip), %rsi      # 0x5211
leaq 0x2ba3(%rip), %rdx      # 0x524c
movq %r14, %rdi
callq 0x35f8
leaq 0x190(%rsp), %r14
leaq 0x1a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2b81(%rip), %rsi      # 0x524d
leaq 0x2bc9(%rip), %rdx      # 0x529c
movq %r14, %rdi
callq 0x35f8
leaq 0x1b0(%rsp), %r14
leaq 0x1c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ba7(%rip), %rsi      # 0x529d
leaq 0x2bd3(%rip), %rdx      # 0x52d0
movq %r14, %rdi
callq 0x35f8
leaq 0x1d0(%rsp), %r14
leaq 0x1e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2bb1(%rip), %rsi      # 0x52d1
leaq 0x2c0e(%rip), %rdx      # 0x5335
movq %r14, %rdi
callq 0x35f8
leaq 0x1f0(%rsp), %r14
leaq 0x200(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2bec(%rip), %rsi      # 0x5336
leaq 0x2c26(%rip), %rdx      # 0x5377
movq %r14, %rdi
callq 0x35f8
leaq 0x210(%rsp), %r14
leaq 0x220(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2c04(%rip), %rsi      # 0x5378
leaq 0x2c5c(%rip), %rdx      # 0x53d7
movq %r14, %rdi
callq 0x35f8
leaq 0x230(%rsp), %r14
leaq 0x240(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2c3a(%rip), %rsi      # 0x53d8
leaq 0x2c7f(%rip), %rdx      # 0x5424
movq %r14, %rdi
callq 0x35f8
leaq 0x250(%rsp), %r14
leaq 0x260(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2c5d(%rip), %rsi      # 0x5425
leaq 0x2c99(%rip), %rdx      # 0x5468
movq %r14, %rdi
callq 0x35f8
leaq 0x270(%rsp), %r14
leaq 0x280(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2c77(%rip), %rsi      # 0x5469
leaq 0x2cc2(%rip), %rdx      # 0x54bb
movq %r14, %rdi
callq 0x35f8
leaq 0x290(%rsp), %r14
leaq 0x2a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ca0(%rip), %rsi      # 0x54bc
leaq 0x2cdf(%rip), %rdx      # 0x5502
movq %r14, %rdi
callq 0x35f8
leaq 0x2b0(%rsp), %r14
leaq 0x2c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2cbd(%rip), %rsi      # 0x5503
leaq 0x2cfc(%rip), %rdx      # 0x5549
movq %r14, %rdi
callq 0x35f8
leaq 0x2d0(%rsp), %r14
leaq 0x2e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2cda(%rip), %rsi      # 0x554a
leaq 0x2d06(%rip), %rdx      # 0x557d
movq %r14, %rdi
callq 0x35f8
leaq 0x2f0(%rsp), %r14
leaq 0x300(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ce4(%rip), %rsi      # 0x557e
leaq 0x2d28(%rip), %rdx      # 0x55c9
movq %r14, %rdi
callq 0x35f8
leaq 0x310(%rsp), %r14
leaq 0x320(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d06(%rip), %rsi      # 0x55ca
leaq 0x2d28(%rip), %rdx      # 0x55f3
movq %r14, %rdi
callq 0x35f8
leaq 0x330(%rsp), %r14
leaq 0x340(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d06(%rip), %rsi      # 0x55f4
leaq 0x2d1e(%rip), %rdx      # 0x5613
movq %r14, %rdi
callq 0x35f8
leaq 0x350(%rsp), %r14
leaq 0x360(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2cfc(%rip), %rsi      # 0x5614
leaq 0x2d3f(%rip), %rdx      # 0x565e
movq %r14, %rdi
callq 0x35f8
leaq 0x370(%rsp), %r14
leaq 0x380(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d1d(%rip), %rsi      # 0x565f
leaq 0x2d4a(%rip), %rdx      # 0x5693
movq %r14, %rdi
callq 0x35f8
leaq 0x390(%rsp), %r14
leaq 0x3a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d28(%rip), %rsi      # 0x5694
leaq 0x2d84(%rip), %rdx      # 0x56f7
movq %r14, %rdi
callq 0x35f8
leaq 0x3b0(%rsp), %r14
leaq 0x3c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d62(%rip), %rsi      # 0x56f8
leaq 0x2dae(%rip), %rdx      # 0x574b
movq %r14, %rdi
callq 0x35f8
leaq 0x3d0(%rsp), %r14
leaq 0x3e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2d8c(%rip), %rsi      # 0x574c
leaq 0x2dd4(%rip), %rdx      # 0x579b
movq %r14, %rdi
callq 0x35f8
leaq 0x3f0(%rsp), %r14
leaq 0x400(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2db2(%rip), %rsi      # 0x579c
leaq 0x2de0(%rip), %rdx      # 0x57d1
movq %r14, %rdi
callq 0x35f8
leaq 0x410(%rsp), %r14
leaq 0x420(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2dbe(%rip), %rsi      # 0x57d2
leaq 0x2dd7(%rip), %rdx      # 0x57f2
movq %r14, %rdi
callq 0x35f8
leaq 0x430(%rsp), %r14
leaq 0x440(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2db5(%rip), %rsi      # 0x57f3
leaq 0x2dd9(%rip), %rdx      # 0x581e
movq %r14, %rdi
callq 0x35f8
leaq 0x450(%rsp), %r14
leaq 0x460(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2db7(%rip), %rsi      # 0x581f
leaq 0x2e0a(%rip), %rdx      # 0x5879
movq %r14, %rdi
callq 0x35f8
leaq 0x470(%rsp), %r14
leaq 0x480(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2de8(%rip), %rsi      # 0x587a
leaq 0x2e0c(%rip), %rdx      # 0x58a5
movq %r14, %rdi
callq 0x35f8
leaq 0x490(%rsp), %r14
leaq 0x4a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2dea(%rip), %rsi      # 0x58a6
leaq 0x2e12(%rip), %rdx      # 0x58d5
movq %r14, %rdi
callq 0x35f8
leaq 0x4b0(%rsp), %r14
leaq 0x4c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2df0(%rip), %rsi      # 0x58d6
leaq 0x2e13(%rip), %rdx      # 0x5900
movq %r14, %rdi
callq 0x35f8
leaq 0x4d0(%rsp), %r14
leaq 0x4e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2df1(%rip), %rsi      # 0x5901
leaq 0x2e32(%rip), %rdx      # 0x5949
movq %r14, %rdi
callq 0x35f8
leaq 0x4f0(%rsp), %r14
leaq 0x500(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e10(%rip), %rsi      # 0x594a
leaq 0x2e43(%rip), %rdx      # 0x5984
movq %r14, %rdi
callq 0x35f8
leaq 0x510(%rsp), %r14
leaq 0x520(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e21(%rip), %rsi      # 0x5985
leaq 0x2e6e(%rip), %rdx      # 0x59d9
movq %r14, %rdi
callq 0x35f8
leaq 0x530(%rsp), %r14
leaq 0x540(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e4c(%rip), %rsi      # 0x59da
leaq 0x2e90(%rip), %rdx      # 0x5a25
movq %r14, %rdi
callq 0x35f8
leaq 0x550(%rsp), %r14
leaq 0x560(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e6e(%rip), %rsi      # 0x5a26
leaq 0x2e96(%rip), %rdx      # 0x5a55
movq %r14, %rdi
callq 0x35f8
leaq 0x570(%rsp), %r14
leaq 0x580(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e74(%rip), %rsi      # 0x5a56
leaq 0x2e96(%rip), %rdx      # 0x5a7f
movq %r14, %rdi
callq 0x35f8
leaq 0x590(%rsp), %r14
leaq 0x5a0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e74(%rip), %rsi      # 0x5a80
leaq 0x2ebb(%rip), %rdx      # 0x5ace
movq %r14, %rdi
callq 0x35f8
leaq 0x5b0(%rsp), %r14
leaq 0x5c0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e99(%rip), %rsi      # 0x5acf
leaq 0x2ec1(%rip), %rdx      # 0x5afe
movq %r14, %rdi
callq 0x35f8
leaq 0x5d0(%rsp), %r14
leaq 0x5e0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2e9f(%rip), %rsi      # 0x5aff
leaq 0x2efb(%rip), %rdx      # 0x5b62
movq %r14, %rdi
callq 0x35f8
leaq 0x5f0(%rsp), %r14
leaq 0x600(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ed9(%rip), %rsi      # 0x5b63
leaq 0x2f13(%rip), %rdx      # 0x5ba4
movq %r14, %rdi
callq 0x35f8
leaq 0x610(%rsp), %r14
leaq 0x620(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2ef1(%rip), %rsi      # 0x5ba5
leaq 0x2f4d(%rip), %rdx      # 0x5c08
movq %r14, %rdi
callq 0x35f8
leaq 0x630(%rsp), %r14
leaq 0x640(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2f2b(%rip), %rsi      # 0x5c09
leaq 0x2f4b(%rip), %rdx      # 0x5c30
movq %r14, %rdi
callq 0x35f8
leaq 0x650(%rsp), %r14
leaq 0x660(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x2f29(%rip), %rsi      # 0x5c31
leaq 0x2f4a(%rip), %rdx      # 0x5c59
movq %r14, %rdi
callq 0x35f8
leaq 0x670(%rsp), %r14
leaq 0x680(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x2f28(%rip), %rsi      # 0x5c5a
leaq 0x2f63(%rip), %rdx      # 0x5c9c
movq %r14, %rdi
callq 0x35f8
leaq 0x78(%rsp), %rdi
leaq 0x90(%rsp), %rsi
leaq 0x28(%rsp), %rcx
movl $0x30, %edx
callq 0x3220
movq $-0x600, %rbx           # imm = 0xFA00
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x2d78
movq (%r15), %rsi
incq %rsi
callq 0x2180
addq $-0x20, %r15
addq $0x20, %rbx
jne 0x2d64
leaq 0x2fb3(%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 0x3268
leaq 0x3040(%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 0x3268
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 0x42cc
movq %rbx, %rdi
movq %r12, %rsi
callq 0x39ac
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 0x42cc
movq %r14, %rdi
movq %r12, %rsi
callq 0x39ac
incq %rbp
addq $0x20, %r15
cmpq $0x30, %rbp
jne 0x2dfd
movl $0x3, %ebp
leaq 0x690(%rsp), %rbx
movq %rbx, %rdi
callq 0x3a1c
movq %rax, %r14
testq %rax, %rax
je 0x2eb5
movq %r14, %rdi
callq 0x435c
movl $0x48, %esi
movq %r14, %rdi
callq 0x2180
decl %ebp
jne 0x2e9d
leaq 0x690(%rsp), %rdi
callq 0x38e4
leaq 0x90(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x2db8(%rip), %rsi      # 0x5c9d
leaq 0x2dba(%rip), %rdx      # 0x5ca6
callq 0x35f8
movq 0x60e0(%rip), %rdi      # 0x8fd8
leaq 0x2da8(%rip), %rsi      # 0x5ca7
movl $0x18, %edx
callq 0x21c0
movq 0x90(%rsp), %rsi
movq 0x98(%rsp), %rdx
movq 0x60b8(%rip), %rdi      # 0x8fd8
callq 0x21c0
movq %rax, %rbx
leaq 0x2d91(%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 0x2f80
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x2180
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x2f97
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x2fae
movq 0x38(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
leaq 0x78(%rsp), %rdi
callq 0x32ae
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x2fd4
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x2180
movq 0x5fe5(%rip), %rsi      # 0x8fc0
leaq 0x760(%rsp), %rdi
callq 0x2100
leaq 0x7e0(%rsp), %rdi
callq 0x2060
leaq 0x40(%rsp), %rdi
callq 0x32ae
leaq 0x690(%rsp), %rdi
callq 0x38b4
leaq 0x6f8(%rsp), %rdi
callq 0x38b4
xorl %eax, %eax
addq $0x8e8, %rsp            # imm = 0x8E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x3138
jmp 0x3138
movq %rax, %r15
jmp 0x3152
movq %rax, %r15
jmp 0x3169
movq %rax, %r15
leaq 0x690(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0x2290
jmp 0x3178
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
jmp 0x30c0
movq %rax, %r15
addq $-0x10, %r14
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x30db
movq (%r14), %rsi
incq %rsi
callq 0x2180
leaq -0x20(%r14), %rax
addq $-0x10, %r14
cmpq %rbx, %r14
movq %rax, %r14
jne 0x30c7
jmp 0x3178
jmp 0x3175
movq %rax, %r15
jmp 0x31b5
movq %rax, %r15
jmp 0x31cc
movq %rax, %r15
movq 0x90(%rsp), %rdi
cmpq %r13, %rdi
je 0x313b
movq 0xa0(%rsp), %rsi
incq %rsi
jmp 0x3131
jmp 0x3138
jmp 0x3126
movq %rax, %r15
movl $0x48, %esi
movq %r12, %rdi
callq 0x2180
jmp 0x313b
movq %rax, %r15
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x3152
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
movq 0x28(%rsp), %rdi
testq %rdi, %rdi
je 0x3169
movq 0x38(%rsp), %rsi
subq %rdi, %rsi
callq 0x2180
leaq 0x78(%rsp), %rdi
callq 0x32ae
jmp 0x3178
movq %rax, %r15
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x3194
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x2180
movq 0x5e25(%rip), %rsi      # 0x8fc0
leaq 0x760(%rsp), %rdi
callq 0x2100
leaq 0x7e0(%rsp), %rdi
callq 0x2060
leaq 0x40(%rsp), %rdi
callq 0x32ae
leaq 0x690(%rsp), %rdi
callq 0x38b4
leaq 0x6f8(%rsp), %rdi
callq 0x38b4
movq %r15, %rdi
callq 0x2250
nop