// File: flastest[P]HeterogeneousParallelDijkstra/workloads.cc
// Function: test1(bool)
bool test1 (bool TEST_DEBUG)
{
	const int num_nodes = 5;
	enum nodes { A, B, C, D, E };
	//char name[] = "ABCDE";
	Edge edge_array[] = { 
			Edge(A, B), Edge(A, C), Edge(A, D), 
			Edge(B, A), Edge(B, D), Edge(B, E), 
			Edge(C, A), Edge(C, D), 
			Edge(D, A), Edge(D, B), Edge(D, C), Edge(D, E), 
			Edge(E, B), Edge(E, D)
	};
	int weights[] = { 
		12, 2, 10, 
		12, 3, 1, 
		2, 4,
		10, 3, 4, 5,
		1, 5
	};
	int num_arcs = sizeof(edge_array) / sizeof(Edge);

	//the graph
	graph_t g(edge_array, edge_array + num_arcs, weights, num_nodes);

	// Keeps track of the predecessor of each vertex
	predecessor_map_t p;
	

	// Keeps track of the distance to each vertex
	std::vector<int> d(num_vertices(g));



	// test1a, with source A.
	vertex_descriptor s = vertex(A, g);

	auto distances = dijkstra_algorithm(g, s, p);


	std::vector<vertex_descriptor> p_BGL(num_nodes);

	vector<int> true_distances = testBGL ( g,  s, p_BGL);
	
	//this needs to iterate thru the vectors

	for (int i = 0; i < 5; i++)
	{
		if (distances[vertex(i, g)] != true_distances[i]){
			return false;
		}
	}
	if (TEST_DEBUG) cout << "test1a\n" << print_dijkstra_results(g,distances);

	//test1b with source B
	s = vertex(B, g);
	distances = dijkstra_algorithm(g, s, p);

	true_distances = testBGL ( g,  s, p_BGL);;
	for (int i = 0; i < 5; i++)
	{
		if (distances[vertex(i,g)] != true_distances[i]){
			return false;
		}
	}
	if (TEST_DEBUG) cout << "test1b\n" << print_dijkstra_results(g,distances);


	//test1c with source C
	s = vertex(C, g);
	distances = dijkstra_algorithm(g, s, p);

	true_distances = testBGL ( g,  s, p_BGL);;
	for (int i = 0; i < 5; i++)
	{
		if (distances[vertex(i,g)] != true_distances[i]){
			return false;
		}
	}
	if (TEST_DEBUG) cout << "test1c\n" << print_dijkstra_results(g,distances);



	//test1d with source D
	s = vertex(D, g);
	distances = dijkstra_algorithm(g, s, p);

	true_distances = testBGL ( g,  s, p_BGL);;
	for (int i = 0; i < 5; i++)
	{
		if (distances[vertex(i,g)] != true_distances[i]){
			return false;
		}
	}
	if (TEST_DEBUG) cout << "test1d\n" << print_dijkstra_results(g,distances);

	//test1e with source E
	s = vertex(E, g);
	distances = dijkstra_algorithm(g, s, p);

	true_distances = {10,1,8,4,0};
	for (int i = 0; i < 5; i++)
	{
		if (distances[vertex(i,g)] != true_distances[i]){
			return false;
		}
	}
	if (TEST_DEBUG) cout << "test1e\n" << print_dijkstra_results(g,distances);



	return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x870, %rsp            # imm = 0x870
movb %dil, %al
andb $0x1, %al
movb %al, -0x2(%rbp)
movl $0x5, -0x8(%rbp)
movl $0x0, -0x84(%rbp)
movl $0x1, -0x88(%rbp)
leaq -0x80(%rbp), %rdi
movq %rdi, -0x770(%rbp)
leaq -0x84(%rbp), %rsi
leaq -0x88(%rbp), %rdx
callq 0x60d0
leaq -0x78(%rbp), %rdi
movl $0x0, -0x8c(%rbp)
movl $0x2, -0x90(%rbp)
leaq -0x8c(%rbp), %rsi
leaq -0x90(%rbp), %rdx
callq 0x60d0
leaq -0x70(%rbp), %rdi
movl $0x0, -0x94(%rbp)
movl $0x3, -0x98(%rbp)
leaq -0x94(%rbp), %rsi
leaq -0x98(%rbp), %rdx
callq 0x60d0
leaq -0x68(%rbp), %rdi
movl $0x1, -0x9c(%rbp)
movl $0x0, -0xa0(%rbp)
leaq -0x9c(%rbp), %rsi
leaq -0xa0(%rbp), %rdx
callq 0x60d0
leaq -0x60(%rbp), %rdi
movl $0x1, -0xa4(%rbp)
movl $0x3, -0xa8(%rbp)
leaq -0xa4(%rbp), %rsi
leaq -0xa8(%rbp), %rdx
callq 0x60d0
leaq -0x58(%rbp), %rdi
movl $0x1, -0xac(%rbp)
movl $0x4, -0xb0(%rbp)
leaq -0xac(%rbp), %rsi
leaq -0xb0(%rbp), %rdx
callq 0x60d0
leaq -0x50(%rbp), %rdi
movl $0x2, -0xb4(%rbp)
movl $0x0, -0xb8(%rbp)
leaq -0xb4(%rbp), %rsi
leaq -0xb8(%rbp), %rdx
callq 0x60d0
leaq -0x48(%rbp), %rdi
movl $0x2, -0xbc(%rbp)
movl $0x3, -0xc0(%rbp)
leaq -0xbc(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
callq 0x60d0
leaq -0x40(%rbp), %rdi
movl $0x3, -0xc4(%rbp)
movl $0x0, -0xc8(%rbp)
leaq -0xc4(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
callq 0x60d0
leaq -0x38(%rbp), %rdi
movl $0x3, -0xcc(%rbp)
movl $0x1, -0xd0(%rbp)
leaq -0xcc(%rbp), %rsi
leaq -0xd0(%rbp), %rdx
callq 0x60d0
leaq -0x30(%rbp), %rdi
movl $0x3, -0xd4(%rbp)
movl $0x2, -0xd8(%rbp)
leaq -0xd4(%rbp), %rsi
leaq -0xd8(%rbp), %rdx
callq 0x60d0
leaq -0x28(%rbp), %rdi
movl $0x3, -0xdc(%rbp)
movl $0x4, -0xe0(%rbp)
leaq -0xdc(%rbp), %rsi
leaq -0xe0(%rbp), %rdx
callq 0x60d0
leaq -0x20(%rbp), %rdi
movl $0x4, -0xe4(%rbp)
movl $0x1, -0xe8(%rbp)
leaq -0xe4(%rbp), %rsi
leaq -0xe8(%rbp), %rdx
callq 0x60d0
leaq -0x18(%rbp), %rdi
movl $0x4, -0xec(%rbp)
movl $0x3, -0xf0(%rbp)
leaq -0xec(%rbp), %rsi
leaq -0xf0(%rbp), %rdx
callq 0x60d0
movq -0x770(%rbp), %rsi
movabsq $0x500000001, %rax      # imm = 0x500000001
movq %rax, -0x100(%rbp)
movaps 0x25346(%rip), %xmm0    # 0x2a450
movaps %xmm0, -0x110(%rbp)
movaps 0x25328(%rip), %xmm0    # 0x2a440
movaps %xmm0, -0x120(%rbp)
movaps 0x2530a(%rip), %xmm0    # 0x2a430
movaps %xmm0, -0x130(%rbp)
movl $0xe, -0x134(%rbp)
movslq -0x134(%rbp), %rax
leaq -0x80(%rbp,%rax,8), %rdx
movq %rsp, %rax
leaq -0x171(%rbp), %rcx
movq %rcx, (%rax)
xorl %eax, %eax
movl %eax, %r9d
leaq -0x170(%rbp), %rdi
movq %rdi, -0x768(%rbp)
leaq -0x130(%rbp), %rcx
movl $0x5, %r8d
callq 0xb180
leaq -0x1a8(%rbp), %rdi
callq 0xb210
movq -0x768(%rbp), %rdi
callq 0xae10
movq %rax, -0x760(%rbp)
jmp 0x5196
leaq -0x1cd(%rbp), %rdi
movq %rdi, -0x778(%rbp)
callq 0xae50
movq -0x760(%rbp), %rsi
movq -0x778(%rbp), %rdx
leaq -0x1c0(%rbp), %rdi
callq 0xae70
jmp 0x51c5
leaq -0x1cd(%rbp), %rdi
callq 0xaee0
xorl %eax, %eax
movl %eax, %edi
leaq -0x170(%rbp), %rsi
callq 0xb230
movq %rax, -0x780(%rbp)
jmp 0x51ea
movq -0x780(%rbp), %rax
movq %rax, -0x1d8(%rbp)
movq 0x390f1(%rip), %rax     # 0x3e2f0
leaq -0x208(%rbp), %rdi
leaq -0x170(%rbp), %rsi
leaq -0x1d8(%rbp), %rdx
leaq -0x1a8(%rbp), %rcx
callq *%rax
jmp 0x521f
leaq -0x221(%rbp), %rdi
movq %rdi, -0x788(%rbp)
callq 0xb250
movq -0x788(%rbp), %rdx
leaq -0x220(%rbp), %rdi
movl $0x5, %esi
callq 0xb270
jmp 0x524c
leaq -0x221(%rbp), %rdi
callq 0xb2e0
leaq -0x278(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xb300
jmp 0x526d
movq -0x1d8(%rbp), %rdx
leaq -0x240(%rbp), %rdi
leaq -0x278(%rbp), %rsi
leaq -0x220(%rbp), %rcx
callq 0x4cb0
jmp 0x5290
leaq -0x278(%rbp), %rdi
callq 0xb380
movl $0x0, -0x27c(%rbp)
cmpl $0x5, -0x27c(%rbp)
jge 0x5425
movslq -0x27c(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xb230
movq %rax, -0x790(%rbp)
jmp 0x52cf
movq -0x790(%rbp), %rax
movq %rax, -0x288(%rbp)
leaq -0x208(%rbp), %rdi
leaq -0x288(%rbp), %rsi
callq 0xad00
movq %rax, -0x798(%rbp)
jmp 0x52f9
movq -0x798(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x79c(%rbp)
movslq -0x27c(%rbp), %rsi
leaq -0x240(%rbp), %rdi
callq 0xb3b0
movss -0x79c(%rbp), %xmm0
cvtsi2ssl (%rax), %xmm1
ucomiss %xmm1, %xmm0
jne 0x5337
jp 0x5337
jmp 0x540f
movb $0x0, -0x1(%rbp)
movl $0x1, -0x28c(%rbp)
jmp 0x6019
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x609f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x1cd(%rbp), %rdi
callq 0xaee0
jmp 0x609f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x6093
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x221(%rbp), %rdi
callq 0xb2e0
jmp 0x6087
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x607b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x278(%rbp), %rdi
callq 0xb380
jmp 0x607b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x606f
jmp 0x5411
movl -0x27c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x27c(%rbp)
jmp 0x52a6
testb $0x1, -0x2(%rbp)
je 0x552f
movq 0x38b92(%rip), %rdi     # 0x3dfc8
leaq 0x23bd9(%rip), %rsi     # 0x29016
callq 0x4310
movq %rax, -0x7a8(%rbp)
jmp 0x544b
leaq -0x2e8(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xb300
jmp 0x5460
leaq -0x318(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0xb3d0
jmp 0x5475
leaq -0x2b0(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
leaq -0x318(%rbp), %rdx
callq 0x4970
jmp 0x5491
movq -0x7a8(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
callq 0x42f0
jmp 0x54a6
leaq -0x2b0(%rbp), %rdi
callq 0x41e0
leaq -0x318(%rbp), %rdi
callq 0xb400
leaq -0x2e8(%rbp), %rdi
callq 0xb380
jmp 0x552f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x551e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x5512
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0x41e0
leaq -0x318(%rbp), %rdi
callq 0xb400
leaq -0x2e8(%rbp), %rdi
callq 0xb380
jmp 0x606f
movl $0x1, %edi
leaq -0x170(%rbp), %rsi
callq 0xb230
movq %rax, -0x7b0(%rbp)
jmp 0x5549
movq -0x7b0(%rbp), %rax
movq %rax, -0x1d8(%rbp)
movq 0x38d92(%rip), %rax     # 0x3e2f0
leaq -0x348(%rbp), %rdi
leaq -0x170(%rbp), %rsi
leaq -0x1d8(%rbp), %rdx
leaq -0x1a8(%rbp), %rcx
callq *%rax
jmp 0x557e
leaq -0x208(%rbp), %rdi
leaq -0x348(%rbp), %rsi
movq %rsi, -0x7b8(%rbp)
callq 0xb420
movq -0x7b8(%rbp), %rdi
callq 0xb400
leaq -0x398(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xb300
jmp 0x55b9
movq -0x1d8(%rbp), %rdx
leaq -0x360(%rbp), %rdi
leaq -0x398(%rbp), %rsi
leaq -0x220(%rbp), %rcx
callq 0x4cb0
jmp 0x55dc
leaq -0x240(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0xb450
leaq -0x360(%rbp), %rdi
callq 0xb120
leaq -0x398(%rbp), %rdi
callq 0xb380
movl $0x0, -0x39c(%rbp)
cmpl $0x5, -0x39c(%rbp)
jge 0x56eb
movslq -0x39c(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xb230
movq %rax, -0x7c0(%rbp)
jmp 0x563a
movq -0x7c0(%rbp), %rax
movq %rax, -0x3a8(%rbp)
leaq -0x208(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0xad00
movq %rax, -0x7c8(%rbp)
jmp 0x5664
movq -0x7c8(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x7cc(%rbp)
movslq -0x39c(%rbp), %rsi
leaq -0x240(%rbp), %rdi
callq 0xb3b0
movss -0x7cc(%rbp), %xmm0
cvtsi2ssl (%rax), %xmm1
ucomiss %xmm1, %xmm0
jne 0x569f
jp 0x569f
jmp 0x56d5
movb $0x0, -0x1(%rbp)
movl $0x1, -0x28c(%rbp)
jmp 0x6019
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x398(%rbp), %rdi
callq 0xb380
jmp 0x606f
jmp 0x56d7
movl -0x39c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x39c(%rbp)
jmp 0x5611
testb $0x1, -0x2(%rbp)
je 0x57f5
movq 0x388cc(%rip), %rdi     # 0x3dfc8
leaq 0x2391b(%rip), %rsi     # 0x2901e
callq 0x4310
movq %rax, -0x7d8(%rbp)
jmp 0x5711
leaq -0x400(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xb300
jmp 0x5726
leaq -0x430(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0xb3d0
jmp 0x573b
leaq -0x3c8(%rbp), %rdi
leaq -0x400(%rbp), %rsi
leaq -0x430(%rbp), %rdx
callq 0x4970
jmp 0x5757
movq -0x7d8(%rbp), %rdi
leaq -0x3c8(%rbp), %rsi
callq 0x42f0
jmp 0x576c
leaq -0x3c8(%rbp), %rdi
callq 0x41e0
leaq -0x430(%rbp), %rdi
callq 0xb400
leaq -0x400(%rbp), %rdi
callq 0xb380
jmp 0x57f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x57e4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x57d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x3c8(%rbp), %rdi
callq 0x41e0
leaq -0x430(%rbp), %rdi
callq 0xb400
leaq -0x400(%rbp), %rdi
callq 0xb380
jmp 0x606f
movl $0x2, %edi
leaq -0x170(%rbp), %rsi
callq 0xb230
movq %rax, -0x7e0(%rbp)
jmp 0x580f
movq -0x7e0(%rbp), %rax
movq %rax, -0x1d8(%rbp)
movq 0x38acc(%rip), %rax     # 0x3e2f0
leaq -0x460(%rbp), %rdi
leaq -0x170(%rbp), %rsi
leaq -0x1d8(%rbp), %rdx
leaq -0x1a8(%rbp), %rcx
callq *%rax
jmp 0x5844
leaq -0x208(%rbp), %rdi
leaq -0x460(%rbp), %rsi
movq %rsi, -0x7e8(%rbp)
callq 0xb420
movq -0x7e8(%rbp), %rdi
callq 0xb400
leaq -0x4b0(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xb300
jmp 0x587f
movq -0x1d8(%rbp), %rdx
leaq -0x478(%rbp), %rdi
leaq -0x4b0(%rbp), %rsi
leaq -0x220(%rbp), %rcx
callq 0x4cb0
jmp 0x58a2
leaq -0x240(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0xb450
leaq -0x478(%rbp), %rdi
callq 0xb120
leaq -0x4b0(%rbp), %rdi
callq 0xb380
movl $0x0, -0x4b4(%rbp)
cmpl $0x5, -0x4b4(%rbp)
jge 0x59b1
movslq -0x4b4(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xb230
movq %rax, -0x7f0(%rbp)
jmp 0x5900
movq -0x7f0(%rbp), %rax
movq %rax, -0x4c0(%rbp)
leaq -0x208(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
callq 0xad00
movq %rax, -0x7f8(%rbp)
jmp 0x592a
movq -0x7f8(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x7fc(%rbp)
movslq -0x4b4(%rbp), %rsi
leaq -0x240(%rbp), %rdi
callq 0xb3b0
movss -0x7fc(%rbp), %xmm0
cvtsi2ssl (%rax), %xmm1
ucomiss %xmm1, %xmm0
jne 0x5965
jp 0x5965
jmp 0x599b
movb $0x0, -0x1(%rbp)
movl $0x1, -0x28c(%rbp)
jmp 0x6019
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x4b0(%rbp), %rdi
callq 0xb380
jmp 0x606f
jmp 0x599d
movl -0x4b4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4b4(%rbp)
jmp 0x58d7
testb $0x1, -0x2(%rbp)
je 0x5abb
movq 0x38606(%rip), %rdi     # 0x3dfc8
leaq 0x2365d(%rip), %rsi     # 0x29026
callq 0x4310
movq %rax, -0x808(%rbp)
jmp 0x59d7
leaq -0x518(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xb300
jmp 0x59ec
leaq -0x548(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0xb3d0
jmp 0x5a01
leaq -0x4e0(%rbp), %rdi
leaq -0x518(%rbp), %rsi
leaq -0x548(%rbp), %rdx
callq 0x4970
jmp 0x5a1d
movq -0x808(%rbp), %rdi
leaq -0x4e0(%rbp), %rsi
callq 0x42f0
jmp 0x5a32
leaq -0x4e0(%rbp), %rdi
callq 0x41e0
leaq -0x548(%rbp), %rdi
callq 0xb400
leaq -0x518(%rbp), %rdi
callq 0xb380
jmp 0x5abb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x5aaa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x5a9e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x4e0(%rbp), %rdi
callq 0x41e0
leaq -0x548(%rbp), %rdi
callq 0xb400
leaq -0x518(%rbp), %rdi
callq 0xb380
jmp 0x606f
movl $0x3, %edi
leaq -0x170(%rbp), %rsi
callq 0xb230
movq %rax, -0x810(%rbp)
jmp 0x5ad5
movq -0x810(%rbp), %rax
movq %rax, -0x1d8(%rbp)
movq 0x38806(%rip), %rax     # 0x3e2f0
leaq -0x578(%rbp), %rdi
leaq -0x170(%rbp), %rsi
leaq -0x1d8(%rbp), %rdx
leaq -0x1a8(%rbp), %rcx
callq *%rax
jmp 0x5b0a
leaq -0x208(%rbp), %rdi
leaq -0x578(%rbp), %rsi
movq %rsi, -0x818(%rbp)
callq 0xb420
movq -0x818(%rbp), %rdi
callq 0xb400
leaq -0x5c8(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xb300
jmp 0x5b45
movq -0x1d8(%rbp), %rdx
leaq -0x590(%rbp), %rdi
leaq -0x5c8(%rbp), %rsi
leaq -0x220(%rbp), %rcx
callq 0x4cb0
jmp 0x5b68
leaq -0x240(%rbp), %rdi
leaq -0x590(%rbp), %rsi
callq 0xb450
leaq -0x590(%rbp), %rdi
callq 0xb120
leaq -0x5c8(%rbp), %rdi
callq 0xb380
movl $0x0, -0x5cc(%rbp)
cmpl $0x5, -0x5cc(%rbp)
jge 0x5c77
movslq -0x5cc(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xb230
movq %rax, -0x820(%rbp)
jmp 0x5bc6
movq -0x820(%rbp), %rax
movq %rax, -0x5d8(%rbp)
leaq -0x208(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
callq 0xad00
movq %rax, -0x828(%rbp)
jmp 0x5bf0
movq -0x828(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x82c(%rbp)
movslq -0x5cc(%rbp), %rsi
leaq -0x240(%rbp), %rdi
callq 0xb3b0
movss -0x82c(%rbp), %xmm0
cvtsi2ssl (%rax), %xmm1
ucomiss %xmm1, %xmm0
jne 0x5c2b
jp 0x5c2b
jmp 0x5c61
movb $0x0, -0x1(%rbp)
movl $0x1, -0x28c(%rbp)
jmp 0x6019
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x5c8(%rbp), %rdi
callq 0xb380
jmp 0x606f
jmp 0x5c63
movl -0x5cc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5cc(%rbp)
jmp 0x5b9d
testb $0x1, -0x2(%rbp)
je 0x5d81
movq 0x38340(%rip), %rdi     # 0x3dfc8
leaq 0x2339f(%rip), %rsi     # 0x2902e
callq 0x4310
movq %rax, -0x838(%rbp)
jmp 0x5c9d
leaq -0x630(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xb300
jmp 0x5cb2
leaq -0x660(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0xb3d0
jmp 0x5cc7
leaq -0x5f8(%rbp), %rdi
leaq -0x630(%rbp), %rsi
leaq -0x660(%rbp), %rdx
callq 0x4970
jmp 0x5ce3
movq -0x838(%rbp), %rdi
leaq -0x5f8(%rbp), %rsi
callq 0x42f0
jmp 0x5cf8
leaq -0x5f8(%rbp), %rdi
callq 0x41e0
leaq -0x660(%rbp), %rdi
callq 0xb400
leaq -0x630(%rbp), %rdi
callq 0xb380
jmp 0x5d81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x5d70
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x5d64
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x5f8(%rbp), %rdi
callq 0x41e0
leaq -0x660(%rbp), %rdi
callq 0xb400
leaq -0x630(%rbp), %rdi
callq 0xb380
jmp 0x606f
movl $0x4, %edi
leaq -0x170(%rbp), %rsi
callq 0xb230
movq %rax, -0x840(%rbp)
jmp 0x5d9b
movq -0x840(%rbp), %rax
movq %rax, -0x1d8(%rbp)
movq 0x38540(%rip), %rax     # 0x3e2f0
leaq -0x690(%rbp), %rdi
leaq -0x170(%rbp), %rsi
leaq -0x1d8(%rbp), %rdx
leaq -0x1a8(%rbp), %rcx
callq *%rax
jmp 0x5dd0
leaq -0x208(%rbp), %rdi
leaq -0x690(%rbp), %rsi
movq %rsi, -0x848(%rbp)
callq 0xb420
movq -0x848(%rbp), %rdi
callq 0xb400
movups 0x2466b(%rip), %xmm0    # 0x2a468
movaps %xmm0, -0x6c0(%rbp)
movl $0x0, -0x6b0(%rbp)
leaq -0x6c0(%rbp), %rax
movq %rax, -0x6a0(%rbp)
movq $0x5, -0x698(%rbp)
movq -0x6a0(%rbp), %rsi
movq -0x698(%rbp), %rdx
leaq -0x240(%rbp), %rdi
callq 0xb480
jmp 0x5e43
movl $0x0, -0x6c4(%rbp)
cmpl $0x5, -0x6c4(%rbp)
jge 0x5f04
movslq -0x6c4(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xb230
movq %rax, -0x850(%rbp)
jmp 0x5e76
movq -0x850(%rbp), %rax
movq %rax, -0x6d0(%rbp)
leaq -0x208(%rbp), %rdi
leaq -0x6d0(%rbp), %rsi
callq 0xad00
movq %rax, -0x858(%rbp)
jmp 0x5ea0
movq -0x858(%rbp), %rax
movss (%rax), %xmm0
movss %xmm0, -0x85c(%rbp)
movslq -0x6c4(%rbp), %rsi
leaq -0x240(%rbp), %rdi
callq 0xb3b0
movss -0x85c(%rbp), %xmm0
cvtsi2ssl (%rax), %xmm1
ucomiss %xmm1, %xmm0
jne 0x5edb
jp 0x5edb
jmp 0x5eee
movb $0x0, -0x1(%rbp)
movl $0x1, -0x28c(%rbp)
jmp 0x6019
jmp 0x5ef0
movl -0x6c4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c4(%rbp)
jmp 0x5e4d
testb $0x1, -0x2(%rbp)
je 0x600b
movq 0x380b3(%rip), %rdi     # 0x3dfc8
leaq 0x2311a(%rip), %rsi     # 0x29036
callq 0x4310
movq %rax, -0x868(%rbp)
jmp 0x5f2a
leaq -0x728(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xb300
jmp 0x5f3f
leaq -0x758(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0xb3d0
jmp 0x5f54
leaq -0x6f0(%rbp), %rdi
leaq -0x728(%rbp), %rsi
leaq -0x758(%rbp), %rdx
callq 0x4970
jmp 0x5f70
movq -0x868(%rbp), %rdi
leaq -0x6f0(%rbp), %rsi
callq 0x42f0
jmp 0x5f85
leaq -0x6f0(%rbp), %rdi
callq 0x41e0
leaq -0x758(%rbp), %rdi
callq 0xb400
leaq -0x728(%rbp), %rdi
callq 0xb380
jmp 0x600b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x5ffd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x5ff1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x6f0(%rbp), %rdi
callq 0x41e0
leaq -0x758(%rbp), %rdi
callq 0xb400
leaq -0x728(%rbp), %rdi
callq 0xb380
jmp 0x606f
movb $0x1, -0x1(%rbp)
movl $0x1, -0x28c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0xb120
leaq -0x220(%rbp), %rdi
callq 0xb4d0
leaq -0x208(%rbp), %rdi
callq 0xb400
leaq -0x1c0(%rbp), %rdi
callq 0xb120
leaq -0x1a8(%rbp), %rdi
callq 0xb530
leaq -0x170(%rbp), %rdi
callq 0xb380
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x870, %rsp            # imm = 0x870
popq %rbp
retq
leaq -0x240(%rbp), %rdi
callq 0xb120
leaq -0x220(%rbp), %rdi
callq 0xb4d0
leaq -0x208(%rbp), %rdi
callq 0xb400
leaq -0x1c0(%rbp), %rdi
callq 0xb120
leaq -0x1a8(%rbp), %rdi
callq 0xb530
leaq -0x170(%rbp), %rdi
callq 0xb380
movq -0x1c8(%rbp), %rdi
callq 0x4520
nopw %cs:(%rax,%rax)