// File: splatlab[P]debgr/debruijn_graph.cc
// Function: void dna::debruijn_graph::update_corrections<std::queue>(dna::debruijn_graph::nodes_container<std::queue>&, bool, bool)
void debruijn_graph::update_corrections(nodes_container<Q> &nc,
																					bool is_entire_graph,
																					bool profile) {
		unordered_set<node> work_queue;
		unresolved_edges_map mbi;
		struct timeval start1, end1;

		gettimeofday(&start1, NULL);

		// Find all the edges that are near an invariant discrepancy or
		// might be in a small cycle.  Mark them as "might be incorrect"
		for (const auto & n : nc)
			if (invariant_discrepancy(n) || period(n) <= 6)
				for (const auto & e : nearby_edges(n, 3)) {
					uint64_t hash = occurences.get_hash(e);
					mbi[hash].insert(e);
				}

		// The hash-collision-based error correction rules are only valid
		// when we are working on the entire graph
		if (is_entire_graph) {
			// Ensure that all edges that hash-collide with an edge that
			// "might be incorrect" are also marked as "might be incorrect".
			for (const auto & n : nc)
				for (const auto & e : edges(n)) {
					uint64_t h = occurences.get_hash(e);
					if (mbi.count(h) > 0)
						mbi[h].insert(e);
				}
		
			// Now remove all the hash sets that have a single item -- the
			// edges in such singleton sets must be correct.
			unordered_set<uint64_t> to_be_deleted;
			for (const auto & p : mbi)
				if (p.second.size() <= 1)
					to_be_deleted.insert(p.first);
			for (const auto h : to_be_deleted)
				mbi.erase(h);

			// Finally, initialize the unresolved count info for each
			// unresolved edge set.
			for (auto & p : mbi)
				p.second.unresolved_count = get_occurences(*p.second.begin());
		}
		
		
		uint64_t mbi_hashes = 0;
		uint64_t mbi_edges = 0;
		// Prime the work queue with all nodes that touch an
		// edge that "might be incorrect"
		for (const auto & p : mbi) {
			for (const auto & e : p.second) {
				work_queue.insert(left_node(e));
				work_queue.insert(right_node(e));
				mbi_edges++;
			}
			mbi_hashes++;
		}

		if (profile) {
			cout << "Initial work queue size: " << work_queue.size() << endl;
			cout << "Num mbi hashes: " << mbi_hashes << endl;
			cout << "Num mbi edges: " << mbi_edges << endl;
		}

		// Process the work queue, looking for opportunities to correct
		// errors and declare edges as not "might be incorrect"
		uint64_t niterations = 0;
		while (!work_queue.empty()) {
			node n = *(work_queue.begin());
			work_queue.erase(n);
			do_work(n, mbi, work_queue, is_entire_graph);
			niterations++;
		}

		gettimeofday(&end1, NULL);
		if (profile)
			print_time_elapsed("", &start1, &end1);

		if (profile) {
			cout << "Number of iterations: " << niterations << endl;
			cout << "Number of corrections: " << corrections.size() << endl;
			cout << "Number of remaining suspicious edges: " << mbi.size() << endl;
			uint64_t num_invariant_discrepancies = 0;
			for (const auto & n : nc)
				if (invariant_discrepancy(n)) {
					num_invariant_discrepancies++;
					ofstream idfile("/tmp/id-" + (string)n + ".dot");
					print_nearby_graph((string)n, idfile, n, 6);
				}
			cout << "Number of remaining invariant discrepancies: "
					 << num_invariant_discrepancies << endl;
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe80, %rsp            # imm = 0xE80
movb %cl, %al
movb %dl, %cl
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
andb $0x1, %cl
movb %cl, -0x11(%rbp)
andb $0x1, %al
movb %al, -0x12(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xd28(%rbp)
leaq -0x50(%rbp), %rdi
callq 0xfa60
leaq -0x88(%rbp), %rdi
callq 0x206a0
xorl %eax, %eax
movl %eax, %esi
leaq -0x98(%rbp), %rdi
callq 0x3440
movq -0x10(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rsi
leaq -0x140(%rbp), %rdi
callq 0xfd00
jmp 0x10852
movq -0xb0(%rbp), %rsi
leaq -0x1e0(%rbp), %rdi
callq 0xfd90
jmp 0x10867
jmp 0x10869
leaq -0x140(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0xfe40
movb %al, -0xd29(%rbp)
jmp 0x10884
movb -0xd29(%rbp), %al
testb $0x1, %al
jne 0x108fc
jmp 0x10890
movl $0x2, -0x1e4(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x10220
leaq -0x140(%rbp), %rdi
callq 0x10220
jmp 0x10be5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
jmp 0x11a53
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
jmp 0x10bd4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
jmp 0x10bc8
leaq -0x140(%rbp), %rdi
callq 0xfe90
movq %rdx, -0xd38(%rbp)
movl %eax, -0xd30(%rbp)
jmp 0x10917
movq -0xd28(%rbp), %rdi
movq -0xd38(%rbp), %rax
movl -0xd30(%rbp), %ecx
movl %ecx, -0x200(%rbp)
movq %rax, -0x1f8(%rbp)
leaq -0x200(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movq -0x1f0(%rbp), %rax
movups (%rax), %xmm0
movaps %xmm0, -0x210(%rbp)
movl -0x210(%rbp), %esi
movq -0x208(%rbp), %rdx
callq 0x8100
movq %rax, -0xd40(%rbp)
jmp 0x10972
movq -0xd40(%rbp), %rax
cmpq $0x0, %rax
jne 0x109b7
movq -0x1f0(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0x220(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x218(%rbp)
movl -0x220(%rbp), %edi
movq -0x218(%rbp), %rsi
callq 0x4120
cmpq $0x6, %rax
ja 0x10bb3
movq -0xd28(%rbp), %rsi
movq -0x1f0(%rbp), %rax
movups (%rax), %xmm0
movaps %xmm0, -0x280(%rbp)
movl -0x280(%rbp), %edx
movq -0x278(%rbp), %rcx
leaq -0x270(%rbp), %rdi
movl $0x3, %r8d
callq 0x5370
jmp 0x109f0
leaq -0x270(%rbp), %rax
movq %rax, -0x228(%rbp)
movq -0x228(%rbp), %rsi
leaq -0x3e0(%rbp), %rdi
callq 0x1ac60
jmp 0x10a13
movq -0x228(%rbp), %rsi
leaq -0x540(%rbp), %rdi
callq 0x1acf0
jmp 0x10a28
jmp 0x10a2a
leaq -0x3e0(%rbp), %rdi
leaq -0x540(%rbp), %rsi
callq 0x1ada0
testb $0x1, %al
jne 0x10aa2
movl $0x4, -0x1e4(%rbp)
leaq -0x540(%rbp), %rdi
callq 0x1b240
leaq -0x3e0(%rbp), %rdi
callq 0x1b240
leaq -0x270(%rbp), %rdi
callq 0xf880
jmp 0x10bb1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
jmp 0x10ba3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
jmp 0x10b97
leaq -0x3e0(%rbp), %rdi
callq 0x1ae30
movq -0xd28(%rbp), %rdi
movl %eax, -0x558(%rbp)
movq %rdx, -0x550(%rbp)
leaq -0x558(%rbp), %rax
movq %rax, -0x548(%rbp)
addq $0x8, %rdi
movq -0x548(%rbp), %rax
movups (%rax), %xmm0
movaps %xmm0, -0x570(%rbp)
movl -0x570(%rbp), %esi
movq -0x568(%rbp), %rdx
callq 0x10250
movq %rax, -0xd48(%rbp)
jmp 0x10b00
movq -0xd48(%rbp), %rax
movq %rax, -0x560(%rbp)
leaq -0x88(%rbp), %rdi
leaq -0x560(%rbp), %rsi
callq 0x102d0
movq %rax, -0xd50(%rbp)
jmp 0x10b2a
movq -0xd50(%rbp), %rdi
movq -0x548(%rbp), %rsi
callq 0x10680
movb %dl, -0xd59(%rbp)
movq %rax, -0xd58(%rbp)
jmp 0x10b4c
movb -0xd59(%rbp), %al
movq -0xd58(%rbp), %rcx
movq %rcx, -0x580(%rbp)
movb %al, -0x578(%rbp)
leaq -0x3e0(%rbp), %rdi
callq 0x1ae60
jmp 0x10b74
jmp 0x10a2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
leaq -0x540(%rbp), %rdi
callq 0x1b240
leaq -0x3e0(%rbp), %rdi
callq 0x1b240
leaq -0x270(%rbp), %rdi
callq 0xf880
jmp 0x10bc8
jmp 0x10bb3
jmp 0x10bb5
leaq -0x140(%rbp), %rdi
callq 0xfed0
jmp 0x10bc3
jmp 0x10869
leaq -0x1e0(%rbp), %rdi
callq 0x10220
leaq -0x140(%rbp), %rdi
callq 0x10220
jmp 0x11a53
testb $0x1, -0x11(%rbp)
je 0x11120
movq -0x10(%rbp), %rax
movq %rax, -0x588(%rbp)
movq -0x588(%rbp), %rsi
leaq -0x618(%rbp), %rdi
callq 0xfd00
jmp 0x10c0f
movq -0x588(%rbp), %rsi
leaq -0x6a8(%rbp), %rdi
callq 0xfd90
jmp 0x10c24
jmp 0x10c26
leaq -0x618(%rbp), %rdi
leaq -0x6a8(%rbp), %rsi
callq 0xfe40
movb %al, -0xd5a(%rbp)
jmp 0x10c41
movb -0xd5a(%rbp), %al
testb $0x1, %al
jne 0x10ca2
jmp 0x10c4d
movl $0x6, -0x1e4(%rbp)
leaq -0x6a8(%rbp), %rdi
callq 0x10220
leaq -0x618(%rbp), %rdi
callq 0x10220
jmp 0x10ebe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
jmp 0x10ead
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
jmp 0x10ea1
leaq -0x618(%rbp), %rdi
callq 0xfe90
movq %rdx, -0xd68(%rbp)
movl %eax, -0xd60(%rbp)
jmp 0x10cbd
movq -0xd28(%rbp), %rsi
movq -0xd68(%rbp), %rax
movl -0xd60(%rbp), %ecx
movl %ecx, -0x6c0(%rbp)
movq %rax, -0x6b8(%rbp)
leaq -0x6c0(%rbp), %rax
movq %rax, -0x6b0(%rbp)
movq -0x6b0(%rbp), %rax
movups (%rax), %xmm0
movaps %xmm0, -0x710(%rbp)
movl -0x710(%rbp), %edx
movq -0x708(%rbp), %rcx
leaq -0x6f8(%rbp), %rdi
callq 0x5df0
jmp 0x10d18
leaq -0x6f8(%rbp), %rax
movq %rax, -0x6c8(%rbp)
movq -0x6c8(%rbp), %rdi
callq 0xe180
movq %rax, -0x718(%rbp)
movq -0x6c8(%rbp), %rdi
callq 0xe1b0
movq %rax, -0x720(%rbp)
leaq -0x718(%rbp), %rdi
leaq -0x720(%rbp), %rsi
callq 0xe1e0
testb $0x1, %al
jne 0x10d7e
movl $0x8, -0x1e4(%rbp)
leaq -0x6f8(%rbp), %rdi
callq 0xe0f0
jmp 0x10e8c
leaq -0x718(%rbp), %rdi
callq 0xe210
movq -0xd28(%rbp), %rdi
movq %rax, -0x728(%rbp)
addq $0x8, %rdi
movq -0x728(%rbp), %rax
movups (%rax), %xmm0
movaps %xmm0, -0x740(%rbp)
movl -0x740(%rbp), %esi
movq -0x738(%rbp), %rdx
callq 0x10250
movq %rax, -0xd70(%rbp)
jmp 0x10dc8
movq -0xd70(%rbp), %rax
movq %rax, -0x730(%rbp)
leaq -0x88(%rbp), %rdi
leaq -0x730(%rbp), %rsi
callq 0x102a0
movq %rax, -0xd78(%rbp)
jmp 0x10df2
movq -0xd78(%rbp), %rax
cmpq $0x0, %rax
jbe 0x10e79
leaq -0x88(%rbp), %rdi
leaq -0x730(%rbp), %rsi
callq 0x102d0
movq %rax, -0xd80(%rbp)
jmp 0x10e1b
movq -0xd80(%rbp), %rdi
movq -0x728(%rbp), %rsi
callq 0x10680
movb %dl, -0xd89(%rbp)
movq %rax, -0xd88(%rbp)
jmp 0x10e3d
movb -0xd89(%rbp), %al
movq -0xd88(%rbp), %rcx
movq %rcx, -0x750(%rbp)
movb %al, -0x748(%rbp)
jmp 0x10e79
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
leaq -0x6f8(%rbp), %rdi
callq 0xe0f0
jmp 0x10ea1
jmp 0x10e7b
leaq -0x718(%rbp), %rdi
callq 0xe230
jmp 0x10d4c
jmp 0x10e8e
leaq -0x618(%rbp), %rdi
callq 0xfed0
jmp 0x10e9c
jmp 0x10c26
leaq -0x6a8(%rbp), %rdi
callq 0x10220
leaq -0x618(%rbp), %rdi
callq 0x10220
jmp 0x11a53
leaq -0x788(%rbp), %rdi
callq 0x206c0
leaq -0x88(%rbp), %rax
movq %rax, -0x790(%rbp)
movq -0x790(%rbp), %rdi
callq 0x206e0
movq %rax, -0x798(%rbp)
movq -0x790(%rbp), %rdi
callq 0x20710
movq %rax, -0x7a0(%rbp)
leaq -0x798(%rbp), %rdi
leaq -0x7a0(%rbp), %rsi
callq 0x20740
testb $0x1, %al
jne 0x10f1a
jmp 0x10fb7
leaq -0x798(%rbp), %rdi
callq 0x20770
movq %rax, -0x7a8(%rbp)
movq -0x7a8(%rbp), %rdi
addq $0x8, %rdi
callq 0x13600
cmpq $0x1, %rax
ja 0x10fa4
movq -0x7a8(%rbp), %rsi
leaq -0x788(%rbp), %rdi
callq 0x207a0
movb %dl, -0xd99(%rbp)
movq %rax, -0xd98(%rbp)
jmp 0x10f65
movb -0xd99(%rbp), %al
movq -0xd98(%rbp), %rcx
movq %rcx, -0x7b8(%rbp)
movb %al, -0x7b0(%rbp)
jmp 0x10fa4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
leaq -0x788(%rbp), %rdi
callq 0x20900
jmp 0x11a53
jmp 0x10fa6
leaq -0x798(%rbp), %rdi
callq 0x207e0
jmp 0x10efe
leaq -0x788(%rbp), %rax
movq %rax, -0x7c0(%rbp)
movq -0x7c0(%rbp), %rdi
callq 0x20810
movq %rax, -0x7c8(%rbp)
movq -0x7c0(%rbp), %rdi
callq 0x20840
movq %rax, -0x7d0(%rbp)
leaq -0x7c8(%rbp), %rdi
leaq -0x7d0(%rbp), %rsi
callq 0x20870
testb $0x1, %al
jne 0x11004
jmp 0x1103f
leaq -0x7c8(%rbp), %rdi
callq 0x208a0
movq (%rax), %rax
movq %rax, -0x7d8(%rbp)
leaq -0x88(%rbp), %rdi
leaq -0x7d8(%rbp), %rsi
callq 0x107b0
jmp 0x1102f
jmp 0x11031
leaq -0x7c8(%rbp), %rdi
callq 0x208d0
jmp 0x10feb
leaq -0x88(%rbp), %rax
movq %rax, -0x7e0(%rbp)
movq -0x7e0(%rbp), %rdi
callq 0x206e0
movq %rax, -0x7e8(%rbp)
movq -0x7e0(%rbp), %rdi
callq 0x20710
movq %rax, -0x7f0(%rbp)
leaq -0x7e8(%rbp), %rdi
leaq -0x7f0(%rbp), %rsi
callq 0x20740
testb $0x1, %al
jne 0x1108f
jmp 0x11114
leaq -0x7e8(%rbp), %rdi
callq 0x20770
movq %rax, -0x7f8(%rbp)
movq -0x7f8(%rbp), %rdi
addq $0x8, %rdi
callq 0x106c0
movq %rax, -0x818(%rbp)
leaq -0x818(%rbp), %rdi
callq 0x10750
movq -0xd28(%rbp), %rdi
movups (%rax), %xmm0
movaps %xmm0, -0x810(%rbp)
movl -0x810(%rbp), %esi
movq -0x808(%rbp), %rdx
callq 0x44e0
movq %rax, -0xda8(%rbp)
jmp 0x110f1
movq -0xda8(%rbp), %rcx
movq -0x7f8(%rbp), %rax
movq %rcx, 0x40(%rax)
leaq -0x7e8(%rbp), %rdi
callq 0x207e0
jmp 0x11073
leaq -0x788(%rbp), %rdi
callq 0x20900
movq $0x0, -0x820(%rbp)
movq $0x0, -0x828(%rbp)
leaq -0x88(%rbp), %rax
movq %rax, -0x830(%rbp)
movq -0x830(%rbp), %rdi
callq 0x206e0
movq %rax, -0x838(%rbp)
movq -0x830(%rbp), %rdi
callq 0x20710
movq %rax, -0x840(%rbp)
leaq -0x838(%rbp), %rdi
leaq -0x840(%rbp), %rsi
callq 0x20740
testb $0x1, %al
jne 0x11186
jmp 0x11350
leaq -0x838(%rbp), %rdi
callq 0x20770
movq %rax, -0x848(%rbp)
movq -0x848(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x850(%rbp)
movq -0x850(%rbp), %rdi
callq 0x1b8d0
movq %rax, -0x858(%rbp)
movq -0x850(%rbp), %rdi
callq 0x1b900
movq %rax, -0x860(%rbp)
leaq -0x858(%rbp), %rdi
leaq -0x860(%rbp), %rsi
callq 0x10720
testb $0x1, %al
jne 0x111ed
jmp 0x1132d
leaq -0x858(%rbp), %rdi
callq 0x1b930
movq %rax, -0x868(%rbp)
movq -0x868(%rbp), %rax
movups (%rax), %xmm0
movaps %xmm0, -0x890(%rbp)
movl -0x890(%rbp), %edi
movq -0x888(%rbp), %rsi
callq 0x7680
movq %rdx, -0xdb8(%rbp)
movl %eax, -0xdac(%rbp)
jmp 0x11232
movq -0xdb8(%rbp), %rax
movl -0xdac(%rbp), %ecx
movl %ecx, -0x878(%rbp)
movq %rax, -0x870(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x878(%rbp), %rsi
callq 0xfbf0
movb %dl, -0xdc1(%rbp)
movq %rax, -0xdc0(%rbp)
jmp 0x1126b
movb -0xdc1(%rbp), %al
movq -0xdc0(%rbp), %rcx
movq %rcx, -0x8a0(%rbp)
movb %al, -0x898(%rbp)
movq -0x868(%rbp), %rax
movups (%rax), %xmm0
movaps %xmm0, -0x8c0(%rbp)
movl -0x8c0(%rbp), %edi
movq -0x8b8(%rbp), %rsi
callq 0x76d0
movq %rdx, -0xdd0(%rbp)
movl %eax, -0xdc8(%rbp)
jmp 0x112b7
movq -0xdd0(%rbp), %rax
movl -0xdc8(%rbp), %ecx
movl %ecx, -0x8b0(%rbp)
movq %rax, -0x8a8(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x8b0(%rbp), %rsi
callq 0xfbf0
movb %dl, -0xdd9(%rbp)
movq %rax, -0xdd8(%rbp)
jmp 0x112f0
movb -0xdd9(%rbp), %al
movq -0xdd8(%rbp), %rcx
movq %rcx, -0x8d0(%rbp)
movb %al, -0x8c8(%rbp)
movq -0x828(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x828(%rbp)
leaq -0x858(%rbp), %rdi
callq 0x1b9c0
jmp 0x111d1
movq -0x820(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x820(%rbp)
leaq -0x838(%rbp), %rdi
callq 0x207e0
jmp 0x1116a
testb $0x1, -0x12(%rbp)
je 0x11448
movq 0x28c6f(%rip), %rdi     # 0x39fd0
leaq 0x19582(%rip), %rsi     # 0x2a8ea
callq 0x3290
movq %rax, -0xde8(%rbp)
jmp 0x11376
leaq -0x50(%rbp), %rdi
callq 0x13600
movq -0xde8(%rbp), %rdi
movq %rax, %rsi
callq 0x3060
movq %rax, -0xdf0(%rbp)
jmp 0x11397
movq -0xdf0(%rbp), %rdi
movq 0x28c13(%rip), %rsi     # 0x39fb8
callq 0x32e0
jmp 0x113ac
movq 0x28c1d(%rip), %rdi     # 0x39fd0
leaq 0x1954a(%rip), %rsi     # 0x2a904
callq 0x3290
movq %rax, -0xdf8(%rbp)
jmp 0x113c8
movq -0xdf8(%rbp), %rdi
movq -0x820(%rbp), %rsi
callq 0x3060
movq %rax, -0xe00(%rbp)
jmp 0x113e4
movq -0xe00(%rbp), %rdi
movq 0x28bc6(%rip), %rsi     # 0x39fb8
callq 0x32e0
jmp 0x113f9
movq 0x28bd0(%rip), %rdi     # 0x39fd0
leaq 0x1950e(%rip), %rsi     # 0x2a915
callq 0x3290
movq %rax, -0xe08(%rbp)
jmp 0x11415
movq -0xe08(%rbp), %rdi
movq -0x828(%rbp), %rsi
callq 0x3060
movq %rax, -0xe10(%rbp)
jmp 0x11431
movq -0xe10(%rbp), %rdi
movq 0x28b79(%rip), %rsi     # 0x39fb8
callq 0x32e0
jmp 0x11446
jmp 0x11448
movq $0x0, -0x8d8(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x20920
xorb $-0x1, %al
testb $0x1, %al
jne 0x11467
jmp 0x114fd
leaq -0x50(%rbp), %rdi
movq %rdi, -0xe18(%rbp)
callq 0x106c0
movq %rax, -0x8f8(%rbp)
leaq -0x8f8(%rbp), %rdi
callq 0x10750
movq -0xe18(%rbp), %rdi
movups (%rax), %xmm0
movaps %xmm0, -0x8f0(%rbp)
leaq -0x8f0(%rbp), %rsi
callq 0x10650
jmp 0x114a9
movq -0xd28(%rbp), %rdi
movaps -0x8f0(%rbp), %xmm0
movaps %xmm0, -0x910(%rbp)
movl -0x910(%rbp), %esi
movq -0x908(%rbp), %rdx
movzbl -0x11(%rbp), %r9d
andl $0x1, %r9d
leaq -0x88(%rbp), %rcx
leaq -0x50(%rbp), %r8
callq 0x92b0
jmp 0x114e6
movq -0x8d8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x8d8(%rbp)
jmp 0x11453
leaq -0xa8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x3440
testb $0x1, -0x12(%rbp)
je 0x115bf
leaq -0x931(%rbp), %rdi
movq %rdi, -0xe20(%rbp)
callq 0x3490
movq -0xe20(%rbp), %rdx
leaq 0x19573(%rip), %rsi     # 0x2aaab
leaq -0x930(%rbp), %rdi
callq 0x33b0
jmp 0x11546
leaq -0x930(%rbp), %rdi
leaq -0x98(%rbp), %rsi
leaq -0xa8(%rbp), %rdx
callq 0xd710
jmp 0x11562
leaq -0x930(%rbp), %rdi
callq 0x3150
leaq -0x931(%rbp), %rdi
callq 0x3310
jmp 0x115bf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
jmp 0x115ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
leaq -0x930(%rbp), %rdi
callq 0x3150
leaq -0x931(%rbp), %rdi
callq 0x3310
jmp 0x11a53
testb $0x1, -0x12(%rbp)
je 0x11a35
movq 0x28a00(%rip), %rdi     # 0x39fd0
leaq 0x1934e(%rip), %rsi     # 0x2a925
callq 0x3290
movq %rax, -0xe28(%rbp)
jmp 0x115e5
movq -0xe28(%rbp), %rdi
movq -0x8d8(%rbp), %rsi
callq 0x3060
movq %rax, -0xe30(%rbp)
jmp 0x11601
movq -0xe30(%rbp), %rdi
movq 0x289a9(%rip), %rsi     # 0x39fb8
callq 0x32e0
jmp 0x11616
movq 0x289b3(%rip), %rdi     # 0x39fd0
leaq 0x19318(%rip), %rsi     # 0x2a93c
callq 0x3290
movq %rax, -0xe38(%rbp)
jmp 0x11632
movq -0xd28(%rbp), %rdi
subq $-0x80, %rdi
callq 0x20940
movq -0xe38(%rbp), %rdi
movq %rax, %rsi
callq 0x3060
movq %rax, -0xe40(%rbp)
jmp 0x1165a
movq -0xe40(%rbp), %rdi
movq 0x28950(%rip), %rsi     # 0x39fb8
callq 0x32e0
jmp 0x1166f
movq 0x2895a(%rip), %rdi     # 0x39fd0
leaq 0x192d7(%rip), %rsi     # 0x2a954
callq 0x3290
movq %rax, -0xe48(%rbp)
jmp 0x1168b
leaq -0x88(%rbp), %rdi
callq 0x20960
movq -0xe48(%rbp), %rdi
movq %rax, %rsi
callq 0x3060
movq %rax, -0xe50(%rbp)
jmp 0x116af
movq -0xe50(%rbp), %rdi
movq 0x288fb(%rip), %rsi     # 0x39fb8
callq 0x32e0
jmp 0x116c4
movq $0x0, -0x940(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x948(%rbp)
movq -0x948(%rbp), %rsi
leaq -0x9d8(%rbp), %rdi
callq 0xfd00
jmp 0x116ef
movq -0x948(%rbp), %rsi
leaq -0xa68(%rbp), %rdi
callq 0xfd90
jmp 0x11704
jmp 0x11706
leaq -0x9d8(%rbp), %rdi
leaq -0xa68(%rbp), %rsi
callq 0xfe40
movb %al, -0xe51(%rbp)
jmp 0x11721
movb -0xe51(%rbp), %al
testb $0x1, %al
jne 0x11782
jmp 0x1172d
movl $0x16, -0x1e4(%rbp)
leaq -0xa68(%rbp), %rdi
callq 0x10220
leaq -0x9d8(%rbp), %rdi
callq 0x10220
jmp 0x119e6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
jmp 0x119d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
jmp 0x119cc
leaq -0x9d8(%rbp), %rdi
callq 0xfe90
movq %rdx, -0xe60(%rbp)
movl %eax, -0xe58(%rbp)
jmp 0x1179d
movq -0xd28(%rbp), %rdi
movq -0xe60(%rbp), %rax
movl -0xe58(%rbp), %ecx
movl %ecx, -0xa80(%rbp)
movq %rax, -0xa78(%rbp)
leaq -0xa80(%rbp), %rax
movq %rax, -0xa70(%rbp)
movq -0xa70(%rbp), %rax
movups (%rax), %xmm0
movaps %xmm0, -0xa90(%rbp)
movl -0xa90(%rbp), %esi
movq -0xa88(%rbp), %rdx
callq 0x8100
movq %rax, -0xe68(%rbp)
jmp 0x117f8
movq -0xe68(%rbp), %rax
cmpq $0x0, %rax
je 0x119b7
movq -0x940(%rbp), %rax
incq %rax
movq %rax, -0x940(%rbp)
movq -0xa70(%rbp), %rsi
leaq -0xcf0(%rbp), %rdi
callq 0x3a50
jmp 0x1182f
leaq 0x19145(%rip), %rsi     # 0x2a97b
leaq -0xcd0(%rbp), %rdi
leaq -0xcf0(%rbp), %rdx
callq 0x13bc0
jmp 0x1184b
leaq 0x18d9e(%rip), %rdx     # 0x2a5f0
leaq -0xcb0(%rbp), %rdi
leaq -0xcd0(%rbp), %rsi
callq 0x13b70
jmp 0x11867
leaq -0xc90(%rbp), %rdi
leaq -0xcb0(%rbp), %rsi
movl $0x10, %edx
callq 0x34d0
jmp 0x11881
leaq -0xcb0(%rbp), %rdi
callq 0x3150
leaq -0xcd0(%rbp), %rdi
callq 0x3150
leaq -0xcf0(%rbp), %rdi
callq 0x3150
movq -0xa70(%rbp), %rsi
leaq -0xd10(%rbp), %rdi
callq 0x3a50
jmp 0x118ba
movq -0xd28(%rbp), %rdi
movq -0xa70(%rbp), %rax
movups (%rax), %xmm0
movaps %xmm0, -0xd20(%rbp)
movl -0xd20(%rbp), %ecx
movq -0xd18(%rbp), %r8
leaq -0xd10(%rbp), %rsi
leaq -0xc90(%rbp), %rdx
movl $0x6, %r9d
callq 0x7820
jmp 0x118fa
leaq -0xd10(%rbp), %rdi
callq 0x3150
leaq -0xc90(%rbp), %rdi
callq 0x3400
jmp 0x119b7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
jmp 0x11969
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
jmp 0x1195d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
leaq -0xcb0(%rbp), %rdi
callq 0x3150
leaq -0xcd0(%rbp), %rdi
callq 0x3150
leaq -0xcf0(%rbp), %rdi
callq 0x3150
jmp 0x119cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
jmp 0x119a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
leaq -0xd10(%rbp), %rdi
callq 0x3150
leaq -0xc90(%rbp), %rdi
callq 0x3400
jmp 0x119cc
jmp 0x119b9
leaq -0x9d8(%rbp), %rdi
callq 0xfed0
jmp 0x119c7
jmp 0x11706
leaq -0xa68(%rbp), %rdi
callq 0x10220
leaq -0x9d8(%rbp), %rdi
callq 0x10220
jmp 0x11a53
movq 0x285e3(%rip), %rdi     # 0x39fd0
leaq 0x18f90(%rip), %rsi     # 0x2a984
callq 0x3290
movq %rax, -0xe70(%rbp)
jmp 0x11a02
movq -0xe70(%rbp), %rdi
movq -0x940(%rbp), %rsi
callq 0x3060
movq %rax, -0xe78(%rbp)
jmp 0x11a1e
movq -0xe78(%rbp), %rdi
movq 0x2858c(%rip), %rsi     # 0x39fb8
callq 0x32e0
jmp 0x11a33
jmp 0x11a35
leaq -0x88(%rbp), %rdi
callq 0x20980
leaq -0x50(%rbp), %rdi
callq 0xded0
addq $0xe80, %rsp            # imm = 0xE80
popq %rbp
retq
leaq -0x88(%rbp), %rdi
callq 0x20980
leaq -0x50(%rbp), %rdi
callq 0xded0
movq -0x148(%rbp), %rdi
callq 0x3480
nopw %cs:(%rax,%rax)
nop