// File: /workspace/github_cpp_makefile_star2_O3/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 0x816e
leaq -0x58(%rbp), %rax
movq %rax, 0x8(%rax)
movq %rax, (%rax)
movq $0x0, 0x10(%rax)
movq %r15, %rdi
callq 0x5424
xorpd %xmm0, %xmm0
movq %r15, %rdi
movq -0x40(%rbp), %rsi
callq 0x4c56
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 0x2c2e
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 0x2c2e
leaq -0x98(%rbp), %rdi
leaq -0x338(%rbp), %rdx
movq %r15, %rsi
callq 0x81e2
movq -0x2d8(%rbp), %rdi
cmpq %rbx, %rdi
je 0xb98e
callq 0x21f0
movq -0x338(%rbp), %rdi
cmpq %r14, %rdi
je 0xb99f
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 0xbd19
movq %rbx, %rdi
leaq -0x98(%rbp), %rsi
movq %r15, %rdx
callq 0x820c
movq %r15, %rdi
movq %rbx, %rsi
callq 0x4da6
testb %al, %al
je 0xb9f8
xorl %ebx, %ebx
jmp 0xbcda
movq %r15, %rdi
movq -0x38(%rbp), %rsi
callq 0x4da6
movb $0x1, %bl
testb %al, %al
jne 0xbcda
movq %r15, %rdi
leaq -0x120(%rbp), %rbx
movq %rbx, %rsi
callq 0x4bdc
movq %r15, %rdi
movq %rbx, %rsi
callq 0x4f5c
leaq -0x1a0(%rbp), %rdi
movq %rax, %rsi
callq 0x6756
movq %r15, %rdi
movq %rbx, %rsi
callq 0x4fa8
movq %r12, %rdi
movq %rax, %rsi
callq 0x6602
movq -0x188(%rbp), %rbx
leaq -0x198(%rbp), %rax
cmpq %rax, %rbx
je 0xbcaf
movq %r14, -0x2b8(%rbp)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
addq %rsi, %rdx
leaq -0x2b8(%rbp), %rdi
callq 0x2c2e
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 0x2c2e
movq %r13, %rdi
movq %r12, %rsi
callq 0x6602
leaq -0x2b8(%rbp), %rdi
movq %r13, %rsi
callq 0xadb0
movsd %xmm0, -0x60(%rbp)
movq -0x1b8(%rbp), %rdi
cmpq %r13, %rdi
je 0xbb13
movq (%rdi), %r15
callq 0x21f0
movq %r15, %rdi
cmpq %r13, %r15
jne 0xbb03
movq -0x258(%rbp), %rdi
leaq -0x248(%rbp), %rax
cmpq %rax, %rdi
je 0xbb2b
callq 0x21f0
movq -0x2b8(%rbp), %rdi
cmpq %r14, %rdi
je 0xbb3c
callq 0x21f0
leaq 0x20(%rbx), %r15
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x4dcc
movsd %xmm0, -0xa0(%rbp)
movq -0x30(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x4dcc
addsd -0x60(%rbp), %xmm0
movsd -0xa0(%rbp), %xmm1
ucomisd %xmm0, %xmm1
ja 0xbb97
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x4dcc
ucomisd 0x3505(%rip), %xmm0     # 0xf090
jne 0xbc9f
jp 0xbc9f
movq -0x30(%rbp), %rdi
leaq -0x120(%rbp), %rsi
callq 0x4dcc
movsd -0x60(%rbp), %xmm1
addsd %xmm0, %xmm1
movq -0x30(%rbp), %rdi
movq %r15, %rsi
movapd %xmm1, %xmm0
callq 0x4c56
leaq -0x120(%rbp), %rdi
callq 0x7c44
movq -0x30(%rbp), %rdi
movq %r15, %rsi
movl %eax, %edx
callq 0x4cb0
leaq -0x228(%rbp), %rax
movq %rax, -0x238(%rbp)
movq 0x20(%rbx), %rsi
movq 0x28(%rbx), %rdx
addq %rsi, %rdx
leaq -0x238(%rbp), %rdi
callq 0x2c2e
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 0x2c2e
leaq -0x98(%rbp), %rdi
movq -0x30(%rbp), %rsi
leaq -0x238(%rbp), %rdx
callq 0x81e2
movq -0x1d8(%rbp), %rdi
leaq -0x1c8(%rbp), %rax
cmpq %rax, %rdi
je 0xbc87
callq 0x21f0
movq -0x238(%rbp), %rdi
leaq -0x228(%rbp), %rax
cmpq %rax, %rdi
je 0xbc9f
callq 0x21f0
movq %rbx, %rdi
callq 0x2280
movq %rax, %rbx
jmp 0xba57
movq -0x80(%rbp), %rdi
cmpq %r12, %rdi
je 0xbcc8
movq (%rdi), %rbx
callq 0x21f0
movq %rbx, %rdi
cmpq %r12, %rbx
jne 0xbcb8
leaq -0x1a0(%rbp), %rdi
callq 0x2dba
xorl %ebx, %ebx
movq -0x30(%rbp), %r15
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0xbcf2
callq 0x21f0
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0xbd0a
callq 0x21f0
testb %bl, %bl
leaq -0x120(%rbp), %rbx
je 0xb9bc
movq %r15, %rdi
movq -0x38(%rbp), %rsi
callq 0x4da6
testb %al, %al
je 0xbf94
movq 0x929c(%rip), %rdi      # 0x14fd0
leaq 0x385b(%rip), %rsi      # 0xf596
movl $0x1f, %edx
callq 0x2270
movq -0x40(%rbp), %rdi
callq 0x7c44
movq 0x927b(%rip), %rdi      # 0x14fd0
movl %eax, %esi
callq 0x2370
movq %rax, %rbx
leaq 0x3850(%rip), %rsi      # 0xf5b6
movl $0x6, %edx
movq %rax, %rdi
callq 0x2270
movq -0x40(%rbp), %rdi
callq 0x7c4e
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 0x9214(%rip), %rdi      # 0x14fd0
leaq 0x37fa(%rip), %rsi      # 0xf5bd
movl $0x13, %edx
callq 0x2270
movq -0x38(%rbp), %rdi
callq 0x7c44
movq 0x91f3(%rip), %rdi      # 0x14fd0
movl %eax, %esi
callq 0x2370
movq %rax, %rbx
leaq 0x37c8(%rip), %rsi      # 0xf5b6
movl $0x6, %edx
movq %rax, %rdi
callq 0x2270
movq -0x38(%rbp), %rdi
callq 0x7c4e
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 0x7c44
movslq %eax, %rsi
movq -0x30(%rbp), %rdi
callq 0x3faa
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 0x2c2e
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 0x2c2e
leaq -0x100(%rbp), %r14
leaq -0x120(%rbp), %r15
movq %r15, %rdi
callq 0x7c30
cmpl $-0x1, %eax
je 0xbfdf
movq -0x30(%rbp), %rdi
movq %r15, %rsi
callq 0x4f22
movl %eax, %r12d
movq %r15, %rdi
callq 0x7c44
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 0xbfdf
movq %r15, %rdi
callq 0x7c44
cmpl %eax, %r12d
je 0xbfdf
movslq %r12d, %rsi
movq -0x30(%rbp), %rdi
callq 0x3faa
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 0xbecc
movq 0x9035(%rip), %rbx      # 0x14fd0
leaq 0x35bf(%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 0x9003(%rip), %rdi      # 0x14fd0
callq 0x2030
movq %rax, %rdi
callq 0x2180
jmp 0xc2f0
movq 0x8fea(%rip), %rbx      # 0x14fd0
leaq 0x35e4(%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 0x8fb8(%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 0xc265
leaq -0x190(%rbp), %r14
leaq -0x1a0(%rbp), %r12
movslq 0x10(%r15), %rsi
movq -0x30(%rbp), %rdi
callq 0x3faa
movq %rax, %r13
movq %r14, -0x1a0(%rbp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x2c2e
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 0x2c2e
movq %r12, %rdi
callq 0x7c4e
movq %rax, %r13
movq -0x38(%rbp), %rdi
callq 0x7c4e
movq 0x8(%r13), %rdx
cmpq 0x8(%rax), %rdx
jne 0xc12f
testq %rdx, %rdx
je 0xc0f4
movq (%rax), %rsi
movq (%r13), %rdi
callq 0x2220
testl %eax, %eax
jne 0xc12f
movl $0xd, %edx
movq %rbx, %rdi
leaq 0x34d7(%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 0x2c2e
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 0xc19d
callq 0x21f0
movq %r12, %rdi
callq 0x7c4e
movq (%rax), %rsi
movq 0x8(%rax), %rdx
movq %rbx, %rdi
callq 0x2270
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x3409(%rip), %rsi      # 0xf5cf
callq 0x2270
movq %r12, %rdi
callq 0x7c8c
movq %r13, %rdi
callq 0x2310
movq %rax, %r13
movl $0x1, %edx
movq %rax, %rdi
leaq 0x33e2(%rip), %rsi      # 0xf5cf
callq 0x2270
movq %r12, %rdi
callq 0x7c98
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 0xc244
callq 0x21f0
movq -0x1a0(%rbp), %rdi
cmpq %r14, %rdi
je 0xc255
callq 0x21f0
movq (%r15), %r15
leaq -0x58(%rbp), %rax
cmpq %rax, %r15
jne 0xc047
movq 0x8d64(%rip), %rdi      # 0x14fd0
leaq 0x3375(%rip), %rsi      # 0xf5e8
movl $0x10, %edx
callq 0x2270
movq -0x30(%rbp), %rdi
movq -0x38(%rbp), %rsi
callq 0x4dcc
movq 0x8d3f(%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 0xc2d8
callq 0x21f0
movq -0x120(%rbp), %rdi
leaq -0x110(%rbp), %rax
cmpq %rax, %rdi
je 0xc2f0
callq 0x21f0
movq -0x58(%rbp), %rdi
leaq -0x58(%rbp), %r14
cmpq %r14, %rdi
je 0xc30d
movq (%rdi), %rbx
callq 0x21f0
movq %rbx, %rdi
cmpq %r14, %rbx
jne 0xc2fd
leaq -0x98(%rbp), %rdi
callq 0x2d86
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 0xc368
jmp 0xc482
movq %rax, %rbx
leaq -0x338(%rbp), %rdi
jmp 0xc47d
movq %rax, %rbx
movq -0x338(%rbp), %rdi
cmpq %r14, %rdi
je 0xc482
callq 0x21f0
jmp 0xc482
jmp 0xc3a6
jmp 0xc3b2
jmp 0xc3b2
movq %rax, %rbx
jmp 0xc46a
movq %rax, %rbx
movq -0x1a0(%rbp), %rdi
cmpq %r14, %rdi
je 0xc476
callq 0x21f0
jmp 0xc476
jmp 0xc43d
jmp 0xc3b2
jmp 0xc3a6
movq %rax, %rbx
jmp 0xc482
jmp 0xc3b2
jmp 0xc3b2
movq %rax, %rbx
jmp 0xc476
movq %rax, %rbx
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0xc440
callq 0x21f0
jmp 0xc440
movq %rax, %rbx
leaq -0x238(%rbp), %rdi
jmp 0xc420
movq %rax, %rbx
movq -0x238(%rbp), %rdi
leaq -0x228(%rbp), %rax
cmpq %rax, %rdi
jne 0xc436
jmp 0xc451
movq %rax, %rbx
movq -0x1b8(%rbp), %rdi
cmpq %r13, %rdi
je 0xc419
movq (%rdi), %r14
callq 0x21f0
movq %r14, %rdi
cmpq %r13, %r14
jne 0xc404
jmp 0xc419
movq %rax, %rbx
leaq -0x2b8(%rbp), %rdi
callq 0x2bc0
jmp 0xc451
movq %rax, %rbx
movq -0x2b8(%rbp), %rdi
cmpq %r14, %rdi
je 0xc451
callq 0x21f0
jmp 0xc451
movq %rax, %rbx
leaq -0x1a0(%rbp), %rdi
callq 0x2bc0
jmp 0xc476
movq %rax, %rbx
movq -0x80(%rbp), %rdi
cmpq %r12, %rdi
je 0xc46a
movq (%rdi), %r14
callq 0x21f0
movq %r14, %rdi
cmpq %r12, %r14
jne 0xc45a
leaq -0x1a0(%rbp), %rdi
callq 0x2dba
leaq -0x120(%rbp), %rdi
callq 0x2bc0
movq -0x58(%rbp), %rdi
leaq -0x58(%rbp), %r15
cmpq %r15, %rdi
je 0xc49f
movq (%rdi), %r14
callq 0x21f0
movq %r14, %rdi
cmpq %r15, %r14
jne 0xc48f
leaq -0x98(%rbp), %rdi
callq 0x2d86
movq %rbx, %rdi
callq 0x2380
nop