// File: /workspace/github_cpp_makefile_star2_O1/jkeys-ecg-nmsu[P]graph-with-search-algorithms/Dijkstra.cpp
// Function: Dijkstra_tmg(Graph&, Node&, Node&)
void Dijkstra_tmg(Graph & g, Node & s, Node & e) {
	HeapPriorityQueue q(g);
	list<int> path;
	
	g.resetAllDist();	
	g.setDist(s, 0); //s is the root 
	
	q.insert(g, s);
	
	while ( !q.empty() ) {
		Node u = q.remove_min(g);
		
		if (g.visited(u)) continue; //skip previously visited nodes		
		if (g.visited(e)) break;	//don't bother continuing once we've hit destination
		
		g.setVisited(u);
		
		set<Node> uAdjNodes = g.getAdjNodes(u);
		list<Edge> uEdges = g.getEdges(u);
		
		// for every adjacent node v: (u)--->(v)
		for(set<Node>::iterator v = uAdjNodes.begin(); v != uAdjNodes.end(); v++) {
			double edgeWeight = findEdgeWeight(*v, uEdges);

			if(g.dist(*v) > g.dist(u) + edgeWeight || g.dist(*v) == M_INFINITY) {
				g.setDist(*v, g.dist(u) + edgeWeight);								
				g.setParent(*v, u.id());
				q.insert(g, *v);						
			}
		} //end adjNodes loop
	} //end while		
		
	/**** dijkstra has been run on source waypoint, check if destination visited ****/
	
	if(!g.visited(e)) {
		cout << "No path from start waypoint to destination waypoint." << endl; 
		return; //print error and return 
	}
	
	/**** path has been found ****/
		
	cout << "Path found!\nStart waypoint id: " << s.id() << " name:" << s.name() << endl;
	cout << "End waypoint id:   " << e.id() << " name:" << e.name() << endl;
	
	int rover_prev;
	Node rover = g.getNode(e.id());
	
	
	while( rover.parent() != -1) {
		rover_prev = g.parent(rover);	
		
		path.push_front(rover.id());	
		
		if(rover_prev == -1 || rover_prev == rover.id()) 
			break;
		
		rover = g.getNode(rover_prev);	
	}
		 
	// cin.ignore();		
	cout << "Origin: " << endl;		
	for(list<int>::iterator i = path.begin(); i != path.end(); i++) {
		Node n = g.getNode(*i);
		if(n.name() == e.name()) cout << "Destination: " << endl;	
		
		cout << n.edgeRoads() << endl;
		cout << n.name() << " " << n.latitude() << " " << n.longitude() << endl;
	}
	
	cout << "Total distance: " << g.dist(e) << endl;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x318, %rsp            # imm = 0x318
movq %rdx, -0x38(%rbp)
movq %rsi, -0x40(%rbp)
movq %rdi, %r15
leaq -0x98(%rbp), %rdi
movq %r15, %rsi
callq 0x80ee
leaq -0x58(%rbp), %rax
movq %rax, 0x8(%rax)
movq %rax, (%rax)
movq $0x0, 0x10(%rax)
movq %r15, %rdi
callq 0x53e0
xorpd %xmm0, %xmm0
movq %r15, %rdi
movq -0x40(%rbp), %rsi
callq 0x4c18
leaq -0x328(%rbp), %r14
movq %r14, -0x10(%r14)
movq -0x40(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq -0x338(%rbp), %rdi
callq 0x2bfe
movq -0x40(%rbp), %rax
movupd 0x20(%rax), %xmm0
movupd 0x30(%rax), %xmm1
movups 0x40(%rax), %xmm2
movups 0x50(%rax), %xmm3
leaq -0x2d8(%rbp), %rdi
movups %xmm3, -0x10(%rdi)
movups %xmm2, -0x20(%rdi)
movupd %xmm1, -0x30(%rdi)
movupd %xmm0, -0x40(%rdi)
leaq -0x2c8(%rbp), %rbx
movq %rbx, -0x10(%rbx)
movq 0x60(%rax), %rsi
movq 0x68(%rax), %rdx
addq %rsi, %rdx
callq 0x2bfe
leaq -0x98(%rbp), %rdi
leaq -0x338(%rbp), %rdx
movq %r15, %rsi
callq 0x8162
movq -0x2d8(%rbp), %rdi
cmpq %rbx, %rdi
je 0xb922
callq 0x21f0
movq -0x338(%rbp), %rdi
cmpq %r14, %rdi
je 0xb933
callq 0x21f0
leaq -0x2a8(%rbp), %r14
leaq -0x120(%rbp), %rbx
leaq -0x80(%rbp), %r12
leaq -0x1b8(%rbp), %r13
movq %r15, -0x30(%rbp)
movq -0x98(%rbp), %rax
cmpq -0x90(%rbp), %rax
je 0xbcad
movq %rbx, %rdi
leaq -0x98(%rbp), %rsi
movq %r15, %rdx
callq 0x818c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x4d68
testb %al, %al
je 0xb98c
xorl %ebx, %ebx
jmp 0xbc6e
movq %r15, %rdi
movq -0x38(%rbp), %rsi
callq 0x4d68
movb $0x1, %bl
testb %al, %al
jne 0xbc6e
movq %r15, %rdi
leaq -0x120(%rbp), %rbx
movq %rbx, %rsi
callq 0x4b9e
movq %r15, %rdi
movq %rbx, %rsi
callq 0x4f1e
leaq -0x1a0(%rbp), %rdi
movq %rax, %rsi
callq 0x66b0
movq %r15, %rdi
movq %rbx, %rsi
callq 0x4f6a
movq %r12, %rdi
movq %rax, %rsi
callq 0x655c
movq -0x188(%rbp), %rbx
leaq -0x198(%rbp), %rax
cmpq %rax, %rbx
je 0xbc43
movq %r14, -0x2b8(%rbp)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
addq %rsi, %rdx
leaq -0x2b8(%rbp), %rdi
callq 0x2bfe
movupd 0x40(%rbx), %xmm0
movupd 0x50(%rbx), %xmm1
movups 0x60(%rbx), %xmm2
movups 0x70(%rbx), %xmm3
movups %xmm3, 0x40(%r14)
movups %xmm2, 0x30(%r14)
movupd %xmm1, 0x20(%r14)
movupd %xmm0, 0x10(%r14)
leaq -0x248(%rbp), %rax
movq %rax, -0x258(%rbp)
movq 0x80(%rbx), %rsi
movq 0x88(%rbx), %rdx
addq %rsi, %rdx
leaq -0x258(%rbp), %rdi
callq 0x2bfe
movq %r13, %rdi
movq %r12, %rsi
callq 0x655c
leaq -0x2b8(%rbp), %rdi
movq %r13, %rsi
callq 0xad34
movsd %xmm0, -0x60(%rbp)
movq -0x1b8(%rbp), %rdi
cmpq %r13, %rdi
je 0xbaa7
movq (%rdi), %r15
callq 0x21f0
movq %r15, %rdi
cmpq %r13, %r15
jne 0xba97
movq -0x258(%rbp), %rdi
leaq -0x248(%rbp), %rax
cmpq %rax, %rdi
je 0xbabf
callq 0x21f0
movq -0x2b8(%rbp), %rdi
cmpq %r14, %rdi
je 0xbad0
callq 0x21f0
leaq 0x20(%rbx), %r15
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x4d8e
movsd %xmm0, -0xa0(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x4d8e
addsd -0x60(%rbp), %xmm0
movsd -0xa0(%rbp), %xmm1
ucomisd %xmm0, %xmm1
ja 0xbb2b
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x4d8e
ucomisd 0x3571(%rip), %xmm0     # 0xf090
jne 0xbc33
jp 0xbc33
movq -0x30(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x4d8e
movsd -0x60(%rbp), %xmm1
addsd %xmm0, %xmm1
movq -0x30(%rbp), %rdi
movq %r15, %rsi
movapd %xmm1, %xmm0
callq 0x4c18
leaq -0x120(%rbp), %rdi
callq 0x7bc4
movq -0x30(%rbp), %rdi
movq %r15, %rsi
movl %eax, %edx
callq 0x4c72
leaq -0x228(%rbp), %rax
movq %rax, -0x238(%rbp)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
addq %rsi, %rdx
leaq -0x238(%rbp), %rdi
callq 0x2bfe
leaq 0x40(%rbx), %rax
movupd (%rax), %xmm0
movupd 0x10(%rax), %xmm1
movups 0x20(%rax), %xmm2
movups 0x30(%rax), %xmm3
leaq -0x228(%rbp), %rax
movups %xmm3, 0x40(%rax)
movups %xmm2, 0x30(%rax)
movupd %xmm1, 0x20(%rax)
movupd %xmm0, 0x10(%rax)
leaq -0x1c8(%rbp), %rax
movq %rax, -0x1d8(%rbp)
movq 0x80(%rbx), %rsi
movq 0x88(%rbx), %rdx
addq %rsi, %rdx
leaq -0x1d8(%rbp), %rdi
callq 0x2bfe
leaq -0x98(%rbp), %rdi
movq -0x30(%rbp), %rsi
leaq -0x238(%rbp), %rdx
callq 0x8162
movq -0x1d8(%rbp), %rdi
leaq -0x1c8(%rbp), %rax
cmpq %rax, %rdi
je 0xbc1b
callq 0x21f0
movq -0x238(%rbp), %rdi
leaq -0x228(%rbp), %rax
cmpq %rax, %rdi
je 0xbc33
callq 0x21f0
movq %rbx, %rdi
callq 0x2280
movq %rax, %rbx
jmp 0xb9eb
movq -0x80(%rbp), %rdi
cmpq %r12, %rdi
je 0xbc5c
movq (%rdi), %rbx
callq 0x21f0
movq %rbx, %rdi
cmpq %r12, %rbx
jne 0xbc4c
leaq -0x1a0(%rbp), %rdi
callq 0x2d76
xorl %ebx, %ebx
movq -0x30(%rbp), %r15
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0xbc86
callq 0x21f0
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0xbc9e
callq 0x21f0
testb %bl, %bl
leaq -0x120(%rbp), %rbx
je 0xb950
movq %r15, %rdi
movq -0x38(%rbp), %rsi
callq 0x4d68
testb %al, %al
je 0xbf28
movq 0x9308(%rip), %rdi      # 0x14fd0
leaq 0x38c7(%rip), %rsi      # 0xf596
movl $0x1f, %edx
callq 0x2270
movq -0x40(%rbp), %rdi
callq 0x7bc4
movq 0x92e7(%rip), %rdi      # 0x14fd0
movl %eax, %esi
callq 0x2370
movq %rax, %rbx
leaq 0x38bc(%rip), %rsi      # 0xf5b6
movl $0x6, %edx
movq %rax, %rdi
callq 0x2270
movq -0x40(%rbp), %rdi
callq 0x7bce
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x2270
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 0x9280(%rip), %rdi      # 0x14fd0
leaq 0x3866(%rip), %rsi      # 0xf5bd
movl $0x13, %edx
callq 0x2270
movq -0x38(%rbp), %rdi
callq 0x7bc4
movq 0x925f(%rip), %rdi      # 0x14fd0
movl %eax, %esi
callq 0x2370
movq %rax, %rbx
leaq 0x3834(%rip), %rsi      # 0xf5b6
movl $0x6, %edx
movq %rax, %rdi
callq 0x2270
movq -0x38(%rbp), %rdi
callq 0x7bce
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x2270
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 -0x38(%rbp), %rdi
callq 0x7bc4
movslq %eax, %rsi
movq -0x30(%rbp), %rdi
callq 0x3f6c
movq %rax, %r15
leaq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
movq %rax, (%rdi)
movq (%r15), %rsi
movq 0x8(%r15), %rdx
addq %rsi, %rdx
callq 0x2bfe
movupd 0x20(%r15), %xmm0
movupd 0x30(%r15), %xmm1
movups 0x40(%r15), %xmm2
movups 0x50(%r15), %xmm3
leaq -0xc0(%rbp), %rdi
movups %xmm3, -0x10(%rdi)
movups %xmm2, -0x20(%rdi)
movupd %xmm1, -0x30(%rdi)
movupd %xmm0, -0x40(%rdi)
leaq -0xb0(%rbp), %rax
movq %rax, (%rdi)
movq 0x60(%r15), %rsi
movq 0x68(%r15), %rdx
addq %rsi, %rdx
callq 0x2bfe
leaq -0x100(%rbp), %r14
leaq -0x120(%rbp), %r15
movq %r15, %rdi
callq 0x7bb0
cmpl $-0x1, %eax
je 0xbf73
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x4ee4
movl %eax, %r12d
movq %r15, %rdi
callq 0x7bc4
movl %eax, %r13d
movq -0x58(%rbp), %rbx
movl $0x18, %edi
callq 0x2210
movl %r13d, 0x10(%rax)
movq %rax, %rdi
movq %rbx, %rsi
callq 0x2050
incq -0x48(%rbp)
cmpl $-0x1, %r12d
je 0xbf73
movq %r15, %rdi
callq 0x7bc4
cmpl %eax, %r12d
je 0xbf73
movslq %r12d, %rsi
movq -0x30(%rbp), %rdi
callq 0x3f6c
movq %rax, %r12
movq %r15, %rdi
movq %rax, %rsi
callq 0x2120
movupd 0x20(%r12), %xmm0
movupd 0x30(%r12), %xmm1
movups 0x40(%r12), %xmm2
movups 0x50(%r12), %xmm3
movups %xmm3, 0x30(%r14)
movups %xmm2, 0x20(%r14)
movupd %xmm1, 0x10(%r14)
movupd %xmm0, (%r14)
addq $0x60, %r12
leaq -0xc0(%rbp), %rdi
movq %r12, %rsi
callq 0x2120
jmp 0xbe60
movq 0x90a1(%rip), %rbx      # 0x14fd0
leaq 0x362b(%rip), %rsi      # 0xf561
movl $0x34, %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 0x906f(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2180
jmp 0xc284
movq 0x9056(%rip), %rbx      # 0x14fd0
leaq 0x3650(%rip), %rsi      # 0xf5d1
movl $0x8, %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 0x9024(%rip), %rbx      # 0x14fd0
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2180
movq -0x58(%rbp), %r15
leaq -0x58(%rbp), %rax
cmpq %rax, %r15
je 0xc1f9
leaq -0x190(%rbp), %r14
leaq -0x1a0(%rbp), %r12
movslq 0x10(%r15), %rsi
movq -0x30(%rbp), %rdi
callq 0x3f6c
movq %rax, %r13
movq %r14, -0x1a0(%rbp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x2bfe
movupd 0x20(%r13), %xmm0
movupd 0x30(%r13), %xmm1
movups 0x40(%r13), %xmm2
movups 0x50(%r13), %xmm3
movups %xmm3, 0x40(%r14)
movups %xmm2, 0x30(%r14)
movupd %xmm1, 0x20(%r14)
movupd %xmm0, 0x10(%r14)
leaq -0x130(%rbp), %rax
movq %rax, -0x140(%rbp)
movq 0x60(%r13), %rsi
movq 0x68(%r13), %rdx
addq %rsi, %rdx
leaq -0x140(%rbp), %rdi
callq 0x2bfe
movq %r12, %rdi
callq 0x7bce
movq %rax, %r13
movq -0x38(%rbp), %rdi
callq 0x7bce
movq 0x8(%r13), %rdx
cmpq 0x8(%rax), %rdx
jne 0xc0c3
testq %rdx, %rdx
je 0xc088
movq (%rax), %rsi
movq (%r13), %rdi
callq 0x2220
testl %eax, %eax
jne 0xc0c3
movl $0xd, %edx
movq %rbx, %rdi
leaq 0x3543(%rip), %rsi      # 0xf5da
callq 0x2270
movq (%rbx), %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
leaq -0x70(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x140(%rbp), %rsi
movq -0x138(%rbp), %rdx
addq %rsi, %rdx
leaq -0x80(%rbp), %rdi
callq 0x2bfe
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
movq %rbx, %rdi
callq 0x2270
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2180
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0xc131
callq 0x21f0
movq %r12, %rdi
callq 0x7bce
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x2270
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x3475(%rip), %rsi      # 0xf5cf
callq 0x2270
movq %r12, %rdi
callq 0x7c0c
movq %r13, %rdi
callq 0x2310
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x344e(%rip), %rsi      # 0xf5cf
callq 0x2270
movq %r12, %rdi
callq 0x7c18
movq %r13, %rdi
callq 0x2310
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x2200
movsbl %al, %esi
movq %r13, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2180
movq -0x140(%rbp), %rdi
leaq -0x130(%rbp), %rax
cmpq %rax, %rdi
je 0xc1d8
callq 0x21f0
movq -0x1a0(%rbp), %rdi
cmpq %r14, %rdi
je 0xc1e9
callq 0x21f0
movq (%r15), %r15
leaq -0x58(%rbp), %rax
cmpq %rax, %r15
jne 0xbfdb
movq 0x8dd0(%rip), %rdi      # 0x14fd0
leaq 0x33e1(%rip), %rsi      # 0xf5e8
movl $0x10, %edx
callq 0x2270
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x4d8e
movq 0x8dab(%rip), %rdi      # 0x14fd0
callq 0x2310
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 -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0xc26c
callq 0x21f0
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0xc284
callq 0x21f0
movq -0x58(%rbp), %rdi
leaq -0x58(%rbp), %r14
cmpq %r14, %rdi
je 0xc2a1
movq (%rdi), %rbx
callq 0x21f0
movq %rbx, %rdi
cmpq %r14, %rbx
jne 0xc291
leaq -0x98(%rbp), %rdi
callq 0x2d42
addq $0x318, %rsp            # imm = 0x318
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
jne 0xc2fc
jmp 0xc416
movq %rax, %rbx
leaq -0x338(%rbp), %rdi
jmp 0xc411
movq %rax, %rbx
movq -0x338(%rbp), %rdi
cmpq %r14, %rdi
je 0xc416
callq 0x21f0
jmp 0xc416
jmp 0xc33a
jmp 0xc346
jmp 0xc346
movq %rax, %rbx
jmp 0xc3fe
movq %rax, %rbx
movq -0x1a0(%rbp), %rdi
cmpq %r14, %rdi
je 0xc40a
callq 0x21f0
jmp 0xc40a
jmp 0xc3d1
jmp 0xc346
jmp 0xc33a
movq %rax, %rbx
jmp 0xc416
jmp 0xc346
jmp 0xc346
movq %rax, %rbx
jmp 0xc40a
movq %rax, %rbx
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0xc3d4
callq 0x21f0
jmp 0xc3d4
movq %rax, %rbx
leaq -0x238(%rbp), %rdi
jmp 0xc3b4
movq %rax, %rbx
movq -0x238(%rbp), %rdi
leaq -0x228(%rbp), %rax
cmpq %rax, %rdi
jne 0xc3ca
jmp 0xc3e5
movq %rax, %rbx
movq -0x1b8(%rbp), %rdi
cmpq %r13, %rdi
je 0xc3ad
movq (%rdi), %r14
callq 0x21f0
movq %r14, %rdi
cmpq %r13, %r14
jne 0xc398
jmp 0xc3ad
movq %rax, %rbx
leaq -0x2b8(%rbp), %rdi
callq 0x2b90
jmp 0xc3e5
movq %rax, %rbx
movq -0x2b8(%rbp), %rdi
cmpq %r14, %rdi
je 0xc3e5
callq 0x21f0
jmp 0xc3e5
movq %rax, %rbx
leaq -0x1a0(%rbp), %rdi
callq 0x2b90
jmp 0xc40a
movq %rax, %rbx
movq -0x80(%rbp), %rdi
cmpq %r12, %rdi
je 0xc3fe
movq (%rdi), %r14
callq 0x21f0
movq %r14, %rdi
cmpq %r12, %r14
jne 0xc3ee
leaq -0x1a0(%rbp), %rdi
callq 0x2d76
leaq -0x120(%rbp), %rdi
callq 0x2b90
movq -0x58(%rbp), %rdi
leaq -0x58(%rbp), %r15
cmpq %r15, %rdi
je 0xc433
movq (%rdi), %r14
callq 0x21f0
movq %r14, %rdi
cmpq %r15, %r14
jne 0xc423
leaq -0x98(%rbp), %rdi
callq 0x2d42
movq %rbx, %rdi
callq 0x2380
nop