// File: /workspace/github_cpp_makefile_star2_O1/jkeys-ecg-nmsu[P]graph-with-search-algorithms/Debug.cpp
// Function: testall()
bool testall() {	
	Graph g;
	g.scan_undirected("in_test_1.txt");
	g.save("out_test_1.txt");
	
	Graph g_new = Kruskal_MST_cclabels ( g);

	std::cerr << g << endl << endl;	
		
	std::cerr << "g1 cc: " << endl;
	printMST(g, g_new.get_MST());
	
	vector<Edge> pc1 = { Edge(3, 4, 1), Edge(2, 3, 2), Edge(1, 2, 3), Edge(0, 1, 4) };
	if(!g_new.sameEdges(pc1)) 
		return false;

	g_new = Kruskal_MST_djsets ( g);
	std::cerr << "g1 djset: " << endl;	
	
	printMST(g, g_new.get_MST());
	
	if(!g_new.sameEdges(pc1)) 
		return false;	
	
	/*******************************************************/
	
	// g.scan_undirected("in_test_2.txt");
	// g.save("out_test_2.txt");

	// g_new = Kruskal_MST_cclabels ( g);

	 // std::cerr << g << endl << endl;	
		
	// std::cerr << "g2 cc: " << endl;
	// printMST(g, g_new.get_MST());
	
	// vector<Edge> pc2 = { Edge(2, 5, -5), Edge(1, 4, -3), Edge(0,1,-1), Edge(1,3,1), Edge(0,2,2), Edge(8,7, 3), Edge(5,8,4), Edge(2,5,5), Edge(7,8,6) };
	// if(!g_new.sameEdges(pc2)) 
		// return false;

	// g_new = Kruskal_MST_djsets ( g);
	// std::cerr << "g2 djset: " << endl;	
	
	// printMST(g, g_new.get_MST());
	
	// if(!g_new.sameEdges(pc2)) 
		// return false;		
	
	/*******************************************************/

 	/* g.scan("in_test_3.txt");	
	g.save("out_test_3.txt");
	
	std::cerr << g << endl << endl;	
	std::cerr << "g3 list: " << endl;	
	Node n3 = g.getNode(0);
	Dijkstra_list(g, n3);

	printDist(g);	
	
	vector<int> pc3 = { 0, 3, 6, 9, 12, 15 };
	if(!g.sameDistances(pc3)) 
		return false;

	std::cerr << g << endl << endl;	
	std::cerr << "g3 heap: " << endl;	
	n3 = g.getNode(0);
	Dijkstra_heap(g, n3);

	printDist(g);	
	
	if(!g.sameDistances(pc3)) 
		return false; */
	
	/*******************************************************/
	
/* 	g.scan("in_test_4.txt");	
	g.save("out_test_4.txt");
	
	std::cerr << g << endl << endl;	
	std::cerr << "g4 list: " << endl;	
	Node n4 = g.getNode(0);
	Dijkstra_list(g, n4);

	printDist(g);	
	
	vector<int> pc4 = { 0, 4, 8, 12, 8, 12, 12, 16, 16 };
	if(!g.sameDistances(pc4)) 
		return false;
	
	std::cerr << g << endl << endl;	
	std::cerr << "g4 heap: " << endl;	
	n4 = g.getNode(0);
	Dijkstra_heap(g, n4);

	printDist(g);	
	
	if(!g.sameDistances(pc4)) 
		return false; */
	
	/*******************************************************/
	
	// g.scan("in_test_5.txt");	
	// g.save("out_test_5.txt");
	
	// std::cerr << g << endl << endl;	
	// std::cerr << "g5 list: " << endl;	
	// Node n5 = g.getNode(0);
	// Dijkstra_list(g, n5);

	// printDist(g);	
	
	// vector<int> pc5 = { 0, 5, 10, 10, 10, 15, 15, 20, 25, 30, 20, 25 };
	// if(!g.sameDistances(pc5)) 
		// return false;  
	
	// std::cerr << g << endl << endl;	
	// std::cerr << "g5 heap: " << endl;	
	// n5 = g.getNode(0);
	// Dijkstra_heap(g, n5);

	// printDist(g);		
	
	// if(!g.sameDistances(pc5)) 
		// return false;  
	
	/*******************************************************/
	
	return true;	
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x1e0, %rsp            # imm = 0x1E0
leaq -0x1f0(%rbp), %rdi
callq 0x2ef0
leaq -0x70(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x62af(%rip), %rsi      # 0xf3c8
leaq 0x62b5(%rip), %rdx      # 0xf3d5
leaq -0x80(%rbp), %rdi
callq 0x2e54
leaq -0x1f0(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x377e
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x9147
callq 0x21f0
leaq -0x80(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x6281(%rip), %rsi      # 0xf3d6
leaq 0x6288(%rip), %rdx      # 0xf3e4
callq 0x2e54
leaq -0x1f0(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x5720
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x917f
callq 0x21f0
leaq -0x80(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0xd0a7
movq 0xbe5a(%rip), %rdi      # 0x14ff0
leaq -0x1f0(%rbp), %rsi
callq 0x5c68
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2180
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2180
movq 0xbdf3(%rip), %rbx      # 0x14ff0
leaq 0x61e1(%rip), %rsi      # 0xf3e5
movl $0x7, %edx
movq %rbx, %rdi
callq 0x2270
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq 0xbdc1(%rip), %rdi      # 0x14ff0
callq 0x2030
movq %rax, %rdi
callq 0x2180
leaq -0x80(%rbp), %rdi
callq 0x4fce
leaq -0x180(%rbp), %rdi
movq %rax, %rsi
callq 0xa3e4
leaq -0x1f0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x967a
movq -0x180(%rbp), %rdi
testq %rdi, %rdi
je 0x9278
callq 0x21f0
leaq -0xf0(%rbp), %rdi
movsd 0x5df9(%rip), %xmm0     # 0xf080
movl $0x3, %esi
movl $0x4, %edx
callq 0x7c24
leaq -0xe0(%rbp), %rdi
movsd 0x610b(%rip), %xmm0     # 0xf3b0
movl $0x2, %esi
movl $0x3, %edx
callq 0x7c24
leaq -0xd0(%rbp), %rdi
movsd 0x60f5(%rip), %xmm0     # 0xf3b8
movl $0x1, %esi
movl $0x2, %edx
callq 0x7c24
leaq -0xc0(%rbp), %rdi
movsd 0x60df(%rip), %xmm0     # 0xf3c0
xorl %esi, %esi
movl $0x1, %edx
callq 0x7c24
leaq -0x108(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
leaq -0x120(%rbp), %rcx
movl $0x4, %edx
callq 0xa466
leaq -0x168(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0xa3e4
leaq -0x80(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0x50d0
movl %eax, %ebx
movq -0x168(%rbp), %rdi
testq %rdi, %rdi
je 0x9342
callq 0x21f0
testb %bl, %bl
je 0x9567
leaq -0xf0(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0xd760
xorps %xmm0, %xmm0
leaq -0x120(%rbp), %rbx
movaps %xmm0, (%rbx)
movups -0x80(%rbp), %xmm0
movq -0x70(%rbp), %rax
movups -0xf0(%rbp), %xmm1
movups %xmm1, -0x80(%rbp)
movq -0xe0(%rbp), %rcx
movq %rcx, -0x70(%rbp)
movaps (%rbx), %xmm1
movaps %xmm0, (%rbx)
movq %rax, 0x10(%rbx)
movups %xmm1, -0xf0(%rbp)
xorl %r14d, %r14d
movq %r14, -0xe0(%rbp)
movq %rbx, %rdi
callq 0x2d42
xorps %xmm0, %xmm0
movaps %xmm0, (%rbx)
movups -0x68(%rbp), %xmm0
movq -0x58(%rbp), %rax
movups -0xd8(%rbp), %xmm1
movups %xmm1, -0x68(%rbp)
movq -0xc8(%rbp), %rcx
movq %rcx, -0x58(%rbp)
movaps (%rbx), %xmm1
movaps %xmm0, (%rbx)
movq %rax, 0x10(%rbx)
movups %xmm1, -0xd8(%rbp)
movq %r14, -0xc8(%rbp)
movq %rbx, %rdi
callq 0x2cfc
xorps %xmm0, %xmm0
movaps %xmm0, (%rbx)
movups -0x50(%rbp), %xmm0
movq -0x40(%rbp), %rax
movups -0xc0(%rbp), %xmm1
movups %xmm1, -0x50(%rbp)
movq -0xb0(%rbp), %rcx
movq %rcx, -0x40(%rbp)
movaps (%rbx), %xmm1
movaps %xmm0, (%rbx)
movq %rax, 0x10(%rbx)
movups %xmm1, -0xc0(%rbp)
movq %r14, -0xb0(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x2ca6
movq -0x38(%rbp), %rdi
movq -0xa8(%rbp), %rax
movq %rax, -0x38(%rbp)
movups -0xa0(%rbp), %xmm0
movups %xmm0, -0x30(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, -0xa8(%rbp)
movq %r14, -0x98(%rbp)
testq %rdi, %rdi
je 0x946c
callq 0x21f0
leaq -0xd8(%rbp), %rbx
leaq -0xc0(%rbp), %r14
movups 0x30(%r14), %xmm0
movups %xmm0, -0x20(%rbp)
movq 0x18(%r14), %rdi
testq %rdi, %rdi
je 0x9491
callq 0x21f0
movq %r14, %rdi
callq 0x2ca6
movq %rbx, %rdi
callq 0x2cfc
leaq -0xf0(%rbp), %rdi
callq 0x2d42
movq 0xbb3c(%rip), %rbx      # 0x14ff0
leaq 0x5f32(%rip), %rsi      # 0xf3ed
movl $0xa, %edx
movq %rbx, %rdi
callq 0x2270
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq 0xbb0a(%rip), %rdi      # 0x14ff0
callq 0x2030
movq %rax, %rdi
callq 0x2180
leaq -0x80(%rbp), %rdi
callq 0x4fce
leaq -0x150(%rbp), %rdi
movq %rax, %rsi
callq 0xa3e4
leaq -0x1f0(%rbp), %rdi
leaq -0x150(%rbp), %rsi
callq 0x967a
movq -0x150(%rbp), %rdi
testq %rdi, %rdi
je 0x952f
callq 0x21f0
leaq -0x138(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0xa3e4
leaq -0x80(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x50d0
movl %eax, %ebx
movq -0x138(%rbp), %rdi
testq %rdi, %rdi
je 0x9569
callq 0x21f0
jmp 0x9569
xorl %ebx, %ebx
movq -0x108(%rbp), %rdi
testq %rdi, %rdi
je 0x957a
callq 0x21f0
movq -0x38(%rbp), %rdi
testq %rdi, %rdi
je 0x9588
callq 0x21f0
leaq -0x50(%rbp), %rdi
callq 0x2ca6
leaq -0x68(%rbp), %rdi
callq 0x2cfc
leaq -0x80(%rbp), %rdi
callq 0x2d42
movq -0x1a8(%rbp), %rdi
testq %rdi, %rdi
je 0x95b4
callq 0x21f0
leaq -0x1c0(%rbp), %rdi
callq 0x2ca6
leaq -0x1d8(%rbp), %rdi
callq 0x2cfc
leaq -0x1f0(%rbp), %rdi
callq 0x2d42
movl %ebx, %eax
addq $0x1e0, %rsp            # imm = 0x1E0
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
movq -0x138(%rbp), %rdi
jmp 0x960a
movq %rax, %rbx
movq -0x150(%rbp), %rdi
jmp 0x960a
jmp 0x9644
movq %rax, %rbx
movq -0x168(%rbp), %rdi
testq %rdi, %rdi
je 0x9647
callq 0x21f0
jmp 0x9647
jmp 0x965a
movq %rax, %rbx
movq -0x180(%rbp), %rdi
jmp 0x964e
jmp 0x963d
jmp 0x962a
jmp 0x963d
movq %rax, %rbx
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x9666
callq 0x21f0
jmp 0x9666
movq %rax, %rbx
jmp 0x9666
jmp 0x965a
movq %rax, %rbx
movq -0x108(%rbp), %rdi
testq %rdi, %rdi
je 0x965d
callq 0x21f0
jmp 0x965d
movq %rax, %rbx
leaq -0x80(%rbp), %rdi
callq 0x2bc6
leaq -0x1f0(%rbp), %rdi
callq 0x2bc6
movq %rbx, %rdi
callq 0x2380