// File: /workspace/github_cpp_makefile_star2_O3/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 %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x1e0, %rsp            # imm = 0x1E0
leaq -0x190(%rbp), %rdi
callq 0x2f38
leaq -0x80(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x625f(%rip), %rsi      # 0xf3c8
leaq 0x6265(%rip), %rdx      # 0xf3d5
leaq -0x90(%rbp), %rdi
callq 0x2e98
leaq -0x190(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x37bc
movq -0x90(%rbp), %rdi
cmpq %r14, %rdi
je 0x91a0
callq 0x21f0
leaq -0x90(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x6225(%rip), %rsi      # 0xf3d6
leaq 0x622c(%rip), %rdx      # 0xf3e4
callq 0x2e98
leaq -0x190(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0x5764
movq -0x90(%rbp), %rdi
cmpq %r14, %rdi
je 0x91e1
callq 0x21f0
leaq -0x90(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xd139
movq 0xbdf5(%rip), %rdi      # 0x14ff0
leaq -0x190(%rbp), %rsi
callq 0x5cb4
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 0xbd8e(%rip), %rbx      # 0x14ff0
leaq 0x617c(%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 0xbd5c(%rip), %rdi      # 0x14ff0
callq 0x2030
movq %rax, %rdi
callq 0x2180
leaq -0x90(%rbp), %rdi
callq 0x500c
leaq -0x108(%rbp), %rdi
movq %rax, %rsi
callq 0xa446
leaq -0x190(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0x96db
movq -0x108(%rbp), %rdi
testq %rdi, %rdi
je 0x92e0
callq 0x21f0
leaq -0x200(%rbp), %rdi
movsd 0x5d91(%rip), %xmm0     # 0xf080
movl $0x3, %esi
movl $0x4, %edx
callq 0x7ca4
leaq -0x1f0(%rbp), %rdi
movsd 0x60a3(%rip), %xmm0     # 0xf3b0
movl $0x2, %esi
movl $0x3, %edx
callq 0x7ca4
leaq -0x1e0(%rbp), %rdi
movsd 0x608d(%rip), %xmm0     # 0xf3b8
movl $0x1, %esi
movl $0x2, %edx
callq 0x7ca4
leaq -0x1d0(%rbp), %rdi
movsd 0x6077(%rip), %xmm0     # 0xf3c0
xorl %esi, %esi
movl $0x1, %edx
callq 0x7ca4
leaq -0xa8(%rbp), %rdi
leaq -0x200(%rbp), %rsi
leaq -0x120(%rbp), %rcx
movl $0x4, %edx
callq 0xa4c8
leaq -0xf0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0xa446
leaq -0x90(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x511a
movl %eax, %ebx
movq -0xf0(%rbp), %rdi
testq %rdi, %rdi
je 0x93ad
callq 0x21f0
testb %bl, %bl
je 0x94d1
leaq -0x200(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xd7e5
movups -0x90(%rbp), %xmm0
movq -0x80(%rbp), %rax
leaq -0x1e8(%rbp), %rbx
movaps -0x18(%rbx), %xmm1
movups %xmm1, -0x90(%rbp)
movq -0x8(%rbx), %rcx
movq %rcx, -0x80(%rbp)
leaq -0x120(%rbp), %r14
movups %xmm0, (%r14)
movq %rax, 0x10(%r14)
xorps %xmm0, %xmm0
movaps %xmm0, -0x18(%rbx)
xorl %r12d, %r12d
movq %r12, -0x8(%rbx)
movq %r14, %rdi
callq 0x2d86
movups -0x78(%rbp), %xmm0
movq -0x68(%rbp), %rax
movups (%rbx), %xmm1
movups %xmm1, -0x78(%rbp)
movq 0x10(%rbx), %rcx
movq %rcx, -0x68(%rbp)
movups %xmm0, (%r14)
movq %rax, 0x10(%r14)
xorps %xmm0, %xmm0
movups %xmm0, (%rbx)
movq %r12, 0x10(%rbx)
leaq -0x120(%rbp), %r15
movq %r15, %rdi
callq 0x2d36
leaq -0x1d0(%rbp), %r14
movups -0x60(%rbp), %xmm0
movq -0x50(%rbp), %rax
movaps (%r14), %xmm1
movups %xmm1, -0x60(%rbp)
movq 0x10(%r14), %rcx
movq %rcx, -0x50(%rbp)
movups %xmm0, (%r15)
movq %rax, 0x10(%r15)
xorps %xmm0, %xmm0
movaps %xmm0, (%r14)
movq %r12, 0x10(%r14)
leaq -0x120(%rbp), %rdi
callq 0x2cda
movq -0x48(%rbp), %rdi
movq 0x18(%r14), %rax
movq %rax, -0x48(%rbp)
movaps 0x20(%r14), %xmm0
movups %xmm0, -0x40(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%r14)
movq %r12, 0x28(%r14)
testq %rdi, %rdi
je 0x94d8
callq 0x21f0
movq -0x1b8(%rbp), %rdi
movaps -0x1a0(%rbp), %xmm0
movups %xmm0, -0x30(%rbp)
testq %rdi, %rdi
je 0x94e3
callq 0x21f0
jmp 0x94e3
xorl %ebx, %ebx
jmp 0x95bd
movaps -0x1a0(%rbp), %xmm0
movups %xmm0, -0x30(%rbp)
movq %r14, %rdi
callq 0x2cda
movq %rbx, %rdi
callq 0x2d36
leaq -0x200(%rbp), %rdi
callq 0x2d86
movq 0xbaea(%rip), %rbx      # 0x14ff0
leaq 0x5ee0(%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 0xbab8(%rip), %rdi      # 0x14ff0
callq 0x2030
movq %rax, %rdi
callq 0x2180
leaq -0x90(%rbp), %rdi
callq 0x500c
leaq -0xd8(%rbp), %rdi
movq %rax, %rsi
callq 0xa446
leaq -0x190(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x96db
movq -0xd8(%rbp), %rdi
testq %rdi, %rdi
je 0x9584
callq 0x21f0
leaq -0xc0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0xa446
leaq -0x90(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x511a
movl %eax, %ebx
movq -0xc0(%rbp), %rdi
testq %rdi, %rdi
je 0x95bd
callq 0x21f0
movq -0xa8(%rbp), %rdi
testq %rdi, %rdi
je 0x95ce
callq 0x21f0
movq -0x48(%rbp), %rdi
testq %rdi, %rdi
je 0x95dc
callq 0x21f0
leaq -0x60(%rbp), %rdi
callq 0x2cda
leaq -0x78(%rbp), %rdi
callq 0x2d36
leaq -0x90(%rbp), %rdi
callq 0x2d86
movq -0x148(%rbp), %rdi
testq %rdi, %rdi
je 0x960b
callq 0x21f0
leaq -0x160(%rbp), %rdi
callq 0x2cda
leaq -0x178(%rbp), %rdi
callq 0x2d36
leaq -0x190(%rbp), %rdi
callq 0x2d86
movl %ebx, %eax
addq $0x1e0, %rsp            # imm = 0x1E0
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0xc0(%rbp), %rdi
jmp 0x9665
movq %rax, %rbx
movq -0xd8(%rbp), %rdi
jmp 0x9665
jmp 0x96a2
movq %rax, %rbx
movq -0xf0(%rbp), %rdi
testq %rdi, %rdi
je 0x96a5
callq 0x21f0
jmp 0x96a5
jmp 0x96b8
movq %rax, %rbx
movq -0x108(%rbp), %rdi
jmp 0x96ac
jmp 0x969b
jmp 0x9685
jmp 0x969b
movq %rax, %rbx
movq -0x90(%rbp), %rdi
cmpq %r14, %rdi
je 0x96c7
callq 0x21f0
jmp 0x96c7
movq %rax, %rbx
jmp 0x96c7
jmp 0x96b8
movq %rax, %rbx
movq -0xa8(%rbp), %rdi
testq %rdi, %rdi
je 0x96bb
callq 0x21f0
jmp 0x96bb
movq %rax, %rbx
leaq -0x90(%rbp), %rdi
callq 0x2bf6
leaq -0x190(%rbp), %rdi
callq 0x2bf6
movq %rbx, %rdi
callq 0x2380