// File: /workspace/github_cpp_makefile_star2_O1/yogesh1q2w[P]Dynamic-Graph-Algorithms/main.cpp
// Function: test(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void test(int func,string file) {
	if(func == 1) {
		ifstream ifs(file, ifstream::in);
		ofstream ofs("timefile.txt", ofstream::out | ios::app);
		int V,E;
		ifs >> V >> E;
		connectivity g = connectivity();
		long update = 0,query = 0;
		double querytime = 0, updatetime = 0;
		for(int i = 0; i < V; i++)
			g.add_vertex(i);

		//cout << V <<", " << E << endl;
		for(int i = 0; i < E; i++) {
			int u, v;
			ifs >> u >> v;
			//cout << u << "==="<<v << endl;
			g.add_edge(u, v);

		}
		
		for(int i = 0; i < ITER; i++) {
			int qtype = rand() % 3;
			//cout << qtype << endl;
			if(qtype == 0) {
				int u = rand() % V;
				int v = rand() % V;
				auto t1 = chrono::high_resolution_clock::now();
				g.add_edge(u, v);
				auto t2 = chrono::high_resolution_clock::now();
				updatetime +=chrono::duration_cast<chrono::nanoseconds>(t2-t1).count();
				update++;
			}
			else if(qtype == 1) {
				int u = rand() % V;
				int v = rand() % V;
				auto t1 = chrono::high_resolution_clock::now();
				g.delete_edge(u, v);
				auto t2 = chrono::high_resolution_clock::now();
				updatetime +=chrono::duration_cast<chrono::nanoseconds>(t2-t1).count();
				update++;
			}
			else if(qtype == 2) {
				int u = rand() % V;
				int v = rand() % V;
				auto t1 = chrono::high_resolution_clock::now();
				bool res = g.is_connected(u, v);
				auto t2 = chrono::high_resolution_clock::now();
				querytime +=chrono::duration_cast<chrono::nanoseconds>(t2-t1).count();
				query++;
			}
		}
		ofs << updatetime/(update * 1.0) << " " << querytime/(query * 1.0) << endl;
	}
	else if(func == 2) {
		ifstream ifs(file, ifstream::in);
		ofstream ofs("timefile.txt", ofstream::out | ios::app);
		int V,E;
		ifs >> V >> E;
		MST g = MST();
		long update = 0,query = 0;
		double querytime = 0, updatetime = 0;
		for(int i = 0; i < V; i++)
			g.add_vertex(i);

		//cout << V <<", " << E << endl;
		for(int i = 0; i < E; i++) {
			int u, v, wt;
			ifs >> u >> v >> wt;
			//cout << u << "==="<<v << endl;
			g.add_edge(u, v, wt);

		}
		g.build_static_MST();
		
		for(int i = 0; i < ITER; i++) {
			int qtype = rand() % 2;
			//cout << qtype << endl;
			if(qtype == 0) {
				int u = rand() % V;
				int v = rand() % V;
				auto t1 = chrono::high_resolution_clock::now();
				g.delete_edge(u, v);
				auto t2 = chrono::high_resolution_clock::now();
				updatetime +=chrono::duration_cast<chrono::nanoseconds>(t2-t1).count();
				update++;
			}
			else if(qtype == 1) {
				auto t1 = chrono::high_resolution_clock::now();
				set <pair<pair<int,int>,int>> res = g.find_MST();
				auto t2 = chrono::high_resolution_clock::now();
				querytime +=chrono::duration_cast<chrono::nanoseconds>(t2-t1).count();
				query++;
			}
		}
		ofs << updatetime/(update * 1.0) << " " << querytime/(query * 1.0) << endl;
	}
	else if(func == 3) {
		ifstream ifs(file, ifstream::in);
		ofstream ofs("timefile.txt", ofstream::out | ios::app);
		int V,E;
		ifs >> V >> E;
		SPT g = SPT();
		long update = 0,query = 0;
		double querytime = 0, updatetime = 0;
		for(int i = 0; i < V; i++)
			g.add_vertex(i);

		// cout << V <<", " << E << endl;
		for(int i = 0; i < E; i++) {
			int u, v, wt;	int c = 0;
			ifs >> u >> v >> wt;
			//cout << u << "===" << v << endl;
			g.add_edge(u, v, wt);

		}

		g.source = rand() % V;
		g.build_static_SPT();
		
		for(int i = 0; i < ITER; i++) {
			int qtype = rand() % 2;
			//cout << qtype << endl;
			if(qtype == 0) {
				int u = rand() % V;
				int v = rand() % V;
				int wt = rand() % CHNGWT;
				auto t1 = chrono::high_resolution_clock::now();
				g.change_weight(u, v, wt);
				auto t2 = chrono::high_resolution_clock::now();
				updatetime +=chrono::duration_cast<chrono::nanoseconds>(t2-t1).count();
				update++;
			}
			else if(qtype == 1) {
				auto t1 = chrono::high_resolution_clock::now();
				vector<pair<int,int>> res =  g.find_SPT();
				auto t2 = chrono::high_resolution_clock::now();
				querytime +=chrono::duration_cast<chrono::nanoseconds>(t2-t1).count();
				query++;
			}
		}
		// cout << querytime << " " << query << endl;
		ofs << updatetime/(update * 1.0) << " " << querytime/(query * 1.0) << endl;
	}
	else {
		cout << "Wrong choice.. Enter 1,2 or 3" << endl;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x588, %rsp            # imm = 0x588
cmpl $0x3, %edi
je 0xb49d
cmpl $0x2, %edi
je 0xb174
cmpl $0x1, %edi
jne 0xb84a
leaq -0x5b0(%rbp), %rdi
movl $0x8, %edx
callq 0x2250
leaq 0x120b(%rip), %rsi      # 0xc07a
leaq -0x3a8(%rbp), %rdi
movl $0x11, %edx
callq 0x21c0
leaq -0x5b0(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x2100
leaq -0x2c(%rbp), %rsi
movq %rax, %rdi
callq 0x2100
leaq -0x1a0(%rbp), %r15
leaq -0x1a8(%rbp), %r14
xorl %ebx, %ebx
movl $0xb0, %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0x20d0
movq %r15, 0x18(%r14)
movq %r15, 0x20(%r14)
leaq -0x100(%rbp), %rax
xorpd %xmm0, %xmm0
movupd %xmm0, -0x80(%rax)
movupd %xmm0, -0x70(%rax)
movupd %xmm0, -0x60(%rax)
movupd %xmm0, -0x50(%rax)
movupd %xmm0, -0x40(%rax)
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
movupd %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movupd %xmm0, -0x8(%rax)
cmpl $0x0, -0x88(%rbp)
jle 0xaf24
movq %r14, %rdi
movl %ebx, %esi
callq 0x418c
incl %ebx
cmpl -0x88(%rbp), %ebx
jl 0xaf10
cmpl $0x0, -0x2c(%rbp)
jle 0xaf70
xorl %r13d, %r13d
leaq -0x5b0(%rbp), %rbx
leaq -0x30(%rbp), %r14
leaq -0x44(%rbp), %r15
leaq -0x1a8(%rbp), %r12
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2100
movq %rax, %rdi
movq %r15, %rsi
callq 0x2100
movl -0x30(%rbp), %esi
movl -0x44(%rbp), %edx
movq %r12, %rdi
callq 0x4888
incl %r13d
cmpl -0x2c(%rbp), %r13d
jl 0xaf43
xorpd %xmm0, %xmm0
movsd %xmm0, -0x40(%rbp)
movl $0x5, %ebx
xorl %r14d, %r14d
movq $0x0, -0x50(%rbp)
movsd %xmm0, -0x38(%rbp)
callq 0x2070
cltq
imulq $0x55555556, %rax, %rcx # imm = 0x55555556
movq %rcx, %rdx
shrq $0x3f, %rdx
shrq $0x20, %rcx
addl %edx, %ecx
leal (%rcx,%rcx,2), %ecx
subl %ecx, %eax
cmpl $0x2, %eax
je 0xb059
cmpl $0x1, %eax
je 0xaffe
testl %eax, %eax
jne 0xb0b3
callq 0x2070
cltd
idivl -0x88(%rbp)
movl %edx, %r12d
callq 0x2070
cltd
idivl -0x88(%rbp)
movl %edx, %r13d
callq 0x2040
movq %rax, %r15
leaq -0x1a8(%rbp), %rdi
movl %r12d, %esi
movl %r13d, %edx
callq 0x4888
jmp 0xb036
callq 0x2070
cltd
idivl -0x88(%rbp)
movl %edx, %r12d
callq 0x2070
cltd
idivl -0x88(%rbp)
movl %edx, %r13d
callq 0x2040
movq %rax, %r15
leaq -0x1a8(%rbp), %rdi
movl %r12d, %esi
movl %r13d, %edx
callq 0x4964
callq 0x2040
subq %r15, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
movsd -0x38(%rbp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, -0x38(%rbp)
incq %r14
jmp 0xb0b3
callq 0x2070
cltd
idivl -0x88(%rbp)
movl %edx, %r12d
callq 0x2070
cltd
idivl -0x88(%rbp)
movl %edx, %r13d
callq 0x2040
movq %rax, %r15
leaq -0x1a8(%rbp), %rdi
movl %r12d, %esi
movl %r13d, %edx
callq 0x4ce6
callq 0x2040
subq %r15, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
movsd -0x40(%rbp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, -0x40(%rbp)
incq -0x50(%rbp)
decl %ebx
jne 0xaf8e
xorps %xmm1, %xmm1
cvtsi2sd %r14, %xmm1
movsd -0x38(%rbp), %xmm0
divsd %xmm1, %xmm0
leaq -0x3a8(%rbp), %rdi
callq 0x2240
movq %rax, %r14
leaq 0xfa5(%rip), %rsi       # 0xc087
movl $0x1, %edx
movq %rax, %rdi
callq 0x21d0
xorps %xmm1, %xmm1
cvtsi2sdq -0x50(%rbp), %xmm1
movsd -0x40(%rbp), %xmm0
divsd %xmm1, %xmm0
movq %r14, %rdi
callq 0x2240
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2190
movsbl %al, %esi
movq %r14, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2110
leaq -0x130(%rbp), %rdi
callq 0xbbbc
leaq -0x148(%rbp), %rdi
callq 0xbb42
leaq -0x160(%rbp), %rdi
callq 0xbb42
leaq -0x178(%rbp), %rdi
callq 0xbb88
leaq -0x1a8(%rbp), %rdi
callq 0x5c1c
jmp 0xb7f6
leaq -0x5b0(%rbp), %rdi
movl $0x8, %edx
callq 0x2250
leaq 0xeee(%rip), %rsi       # 0xc07a
leaq -0x3a8(%rbp), %rdi
movl $0x11, %edx
callq 0x21c0
leaq -0x5b0(%rbp), %rdi
leaq -0x2c(%rbp), %rsi
callq 0x2100
leaq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x2100
leaq -0x1a8(%rbp), %rdi
xorl %ebx, %ebx
movl $0x120, %edx            # imm = 0x120
xorl %esi, %esi
callq 0x20d0
leaq -0x178(%rbp), %rax
movq %rax, -0x30(%rax)
movl $0x1, %ecx
movq %rcx, -0x28(%rax)
xorpd %xmm0, %xmm0
movupd %xmm0, -0x20(%rax)
movl $0x3f800000, %edx       # imm = 0x3F800000
movl %edx, -0x10(%rax)
movupd %xmm0, -0x8(%rax)
leaq -0x168(%rbp), %rax
movl $0x0, (%rax)
movq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
leaq -0xf8(%rbp), %rax
movupd %xmm0, -0x50(%rax)
movupd %xmm0, -0x40(%rax)
movq %rax, -0x30(%rax)
movq %rcx, -0x28(%rax)
movupd %xmm0, -0x20(%rax)
movl %edx, -0x10(%rax)
leaq -0x90(%rbp), %rax
movupd %xmm0, -0x70(%rax)
movupd %xmm0, -0x60(%rax)
movupd %xmm0, -0x50(%rax)
movupd %xmm0, -0x40(%rax)
movq %rax, -0x30(%rax)
movq %rcx, -0x28(%rax)
movupd %xmm0, -0x20(%rax)
movl %edx, -0x10(%rax)
movupd %xmm0, -0x8(%rax)
cmpl $0x0, -0x2c(%rbp)
jle 0xb284
leaq -0x1a8(%rbp), %r14
movq %r14, %rdi
movl %ebx, %esi
callq 0x6584
incl %ebx
cmpl -0x2c(%rbp), %ebx
jl 0xb273
cmpl $0x0, -0x30(%rbp)
jle 0xb2e2
xorl %ebx, %ebx
leaq -0x88(%rbp), %r14
leaq -0x44(%rbp), %r15
leaq -0x48(%rbp), %r12
leaq -0x1a8(%rbp), %r13
leaq -0x5b0(%rbp), %rdi
movq %r14, %rsi
callq 0x2100
movq %rax, %rdi
movq %r15, %rsi
callq 0x2100
movq %rax, %rdi
movq %r12, %rsi
callq 0x2100
movl -0x88(%rbp), %esi
movl -0x44(%rbp), %edx
movl -0x48(%rbp), %ecx
movq %r13, %rdi
callq 0x6d78
incl %ebx
cmpl -0x30(%rbp), %ebx
jl 0xb2a2
leaq -0x1a8(%rbp), %rdi
callq 0x7342
xorpd %xmm0, %xmm0
movsd %xmm0, -0x38(%rbp)
movl $0x5, %r12d
xorl %r15d, %r15d
leaq -0x88(%rbp), %rbx
movsd %xmm0, -0x40(%rbp)
movq $0x0, -0x58(%rbp)
callq 0x2070
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
andl $-0x2, %ecx
subl %ecx, %eax
cmpl $0x1, %eax
je 0xb388
testl %eax, %eax
jne 0xb3c8
callq 0x2070
cltd
idivl -0x2c(%rbp)
movl %edx, -0x50(%rbp)
callq 0x2070
cltd
idivl -0x2c(%rbp)
movl %edx, %r14d
callq 0x2040
movq %rax, %r13
leaq -0x1a8(%rbp), %rdi
movl -0x50(%rbp), %esi
movl %r14d, %edx
callq 0x6ee0
callq 0x2040
subq %r13, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
movsd -0x38(%rbp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, -0x38(%rbp)
incq -0x58(%rbp)
jmp 0xb3c8
callq 0x2040
movq %rax, %r13
movq %rbx, %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x726e
callq 0x2040
subq %r13, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
movsd -0x40(%rbp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, -0x40(%rbp)
incq %r15
movq %rbx, %rdi
callq 0x7950
decl %r12d
jne 0xb314
xorps %xmm1, %xmm1
cvtsi2sdq -0x58(%rbp), %xmm1
movsd -0x38(%rbp), %xmm0
divsd %xmm1, %xmm0
leaq -0x3a8(%rbp), %rdi
callq 0x2240
movq %rax, %rbx
leaq 0xc8e(%rip), %rsi       # 0xc087
movl $0x1, %edx
movq %rax, %rdi
callq 0x21d0
xorps %xmm1, %xmm1
cvtsi2sd %r15, %xmm1
movsd -0x40(%rbp), %xmm0
divsd %xmm1, %xmm0
movq %rbx, %rdi
callq 0x2240
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x2190
movsbl %al, %esi
movq %r15, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2110
leaq -0xc0(%rbp), %rdi
callq 0xbbbc
leaq -0xd8(%rbp), %rdi
callq 0xbcb2
leaq -0xf0(%rbp), %rdi
callq 0xbcb2
leaq -0x128(%rbp), %rdi
callq 0xbcf8
leaq -0x140(%rbp), %rdi
callq 0xbb88
leaq -0x170(%rbp), %rdi
callq 0x5c1c
leaq -0x1a8(%rbp), %rdi
jmp 0xb7f1
leaq -0x5b0(%rbp), %rdi
movl $0x8, %edx
callq 0x2250
leaq 0xbc5(%rip), %rsi       # 0xc07a
leaq -0x3a8(%rbp), %rdi
movl $0x11, %edx
callq 0x21c0
leaq -0x5b0(%rbp), %rdi
leaq -0x2c(%rbp), %rsi
callq 0x2100
leaq -0x30(%rbp), %rsi
movq %rax, %rdi
callq 0x2100
leaq -0x1a8(%rbp), %rdi
xorl %ebx, %ebx
movl $0x110, %edx            # imm = 0x110
xorl %esi, %esi
callq 0x20d0
leaq -0x170(%rbp), %rax
movq %rax, -0x30(%rax)
movl $0x1, %ecx
movq %rcx, -0x28(%rax)
xorpd %xmm0, %xmm0
movupd %xmm0, -0x20(%rax)
movl $0x3f800000, %edx       # imm = 0x3F800000
movl %edx, -0x10(%rax)
movupd %xmm0, -0x8(%rax)
leaq -0x160(%rbp), %rax
movl $0x0, (%rax)
movq %rbx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rbx, 0x20(%rax)
leaq -0x108(%rbp), %rax
movq %rax, -0x30(%rax)
movq %rcx, -0x28(%rax)
movupd %xmm0, -0x20(%rax)
movl %edx, -0x10(%rax)
movupd %xmm0, -0x8(%rax)
leaq -0xd0(%rbp), %rax
movq %rax, -0x30(%rax)
movq %rcx, -0x28(%rax)
movupd %xmm0, -0x20(%rax)
movl %edx, -0x10(%rax)
movupd %xmm0, 0x28(%rax)
movupd %xmm0, 0x18(%rax)
movupd %xmm0, 0x8(%rax)
movupd %xmm0, -0x8(%rax)
cmpl $0x0, -0x2c(%rbp)
jle 0xb5a3
leaq -0x1a8(%rbp), %r14
movq %r14, %rdi
movl %ebx, %esi
callq 0x8c3c
incl %ebx
cmpl -0x2c(%rbp), %ebx
jl 0xb592
cmpl $0x0, -0x30(%rbp)
jle 0xb601
xorl %ebx, %ebx
leaq -0x88(%rbp), %r14
leaq -0x44(%rbp), %r15
leaq -0x48(%rbp), %r12
leaq -0x1a8(%rbp), %r13
leaq -0x5b0(%rbp), %rdi
movq %r14, %rsi
callq 0x2100
movq %rax, %rdi
movq %r15, %rsi
callq 0x2100
movq %rax, %rdi
movq %r12, %rsi
callq 0x2100
movl -0x88(%rbp), %esi
movl -0x44(%rbp), %edx
movl -0x48(%rbp), %ecx
movq %r13, %rdi
callq 0x8cbc
incl %ebx
cmpl -0x30(%rbp), %ebx
jl 0xb5c1
callq 0x2070
cltd
idivl -0x2c(%rbp)
leaq -0x1a8(%rbp), %rdi
movl %edx, (%rdi)
callq 0x8dea
xorpd %xmm0, %xmm0
movsd %xmm0, -0x38(%rbp)
movl $0x5, %r13d
xorl %r15d, %r15d
movsd %xmm0, -0x40(%rbp)
xorl %r12d, %r12d
callq 0x2070
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
andl $-0x2, %ecx
subl %ecx, %eax
cmpl $0x1, %eax
je 0xb6d4
testl %eax, %eax
jne 0xb724
movq %r12, %rbx
callq 0x2070
cltd
idivl -0x2c(%rbp)
movl %edx, -0x50(%rbp)
callq 0x2070
cltd
idivl -0x2c(%rbp)
movl %edx, -0x58(%rbp)
callq 0x2070
movslq %eax, %r12
imulq $0x51eb851f, %r12, %rax # imm = 0x51EB851F
movq %rax, %rcx
shrq $0x3f, %rcx
sarq $0x25, %rax
addl %ecx, %eax
imull $0x64, %eax, %eax
subl %eax, %r12d
callq 0x2040
movq %rax, %r14
leaq -0x1a8(%rbp), %rdi
movl -0x50(%rbp), %esi
movl -0x58(%rbp), %edx
movl %r12d, %ecx
callq 0x8fc2
callq 0x2040
subq %r14, %rax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
movsd -0x38(%rbp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, -0x38(%rbp)
movq %rbx, %r12
incq %r12
jmp 0xb724
callq 0x2040
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0xa036
callq 0x2040
movq %rax, %r14
movq -0x88(%rbp), %rdi
testq %rdi, %rdi
je 0xb708
callq 0x2170
subq %rbx, %r14
xorps %xmm0, %xmm0
cvtsi2sd %r14, %xmm0
movsd -0x40(%rbp), %xmm1
addsd %xmm0, %xmm1
movsd %xmm1, -0x40(%rbp)
incq %r15
decl %r13d
jne 0xb632
xorps %xmm1, %xmm1
cvtsi2sd %r12, %xmm1
movsd -0x38(%rbp), %xmm0
divsd %xmm1, %xmm0
leaq -0x3a8(%rbp), %rdi
callq 0x2240
movq %rax, %rbx
leaq 0x933(%rip), %rsi       # 0xc087
movl $0x1, %edx
movq %rax, %rdi
callq 0x21d0
xorps %xmm1, %xmm1
cvtsi2sd %r15, %xmm1
movsd -0x40(%rbp), %xmm0
divsd %xmm1, %xmm0
movq %rbx, %rdi
callq 0x2240
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2190
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
callq 0x2110
movq -0xb0(%rbp), %rdi
testq %rdi, %rdi
je 0xb7b5
callq 0x2170
movq -0xc8(%rbp), %rdi
testq %rdi, %rdi
je 0xb7c6
callq 0x2170
leaq -0x100(%rbp), %rdi
callq 0xbe0a
leaq -0x138(%rbp), %rdi
callq 0xbe0a
leaq -0x168(%rbp), %rdi
callq 0x5c1c
leaq -0x1a0(%rbp), %rdi
callq 0xbd94
movq 0x57cb(%rip), %rax      # 0x10fc8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq -0x3a0(%rbp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, -0x3a8(%rbp,%rcx)
callq 0x2150
leaq -0x2b0(%rbp), %rdi
callq 0x2090
leaq -0x5b0(%rbp), %rdi
callq 0x2060
addq $0x588, %rsp            # imm = 0x588
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x577f(%rip), %rbx      # 0x10fd0
leaq 0x831(%rip), %rsi       # 0xc089
movl $0x1d, %edx
movq %rbx, %rdi
callq 0x21d0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2190
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2030
movq %rax, %rdi
addq $0x588, %rsp            # imm = 0x588
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x2110
jmp 0xb8a1
jmp 0xb8a1
movq %rax, %rbx
jmp 0xb906
jmp 0xb8aa
jmp 0xb8aa
movq %rax, %rbx
jmp 0xb8fa
jmp 0xb8c9
jmp 0xb8da
jmp 0xb8eb
jmp 0xb8c9
jmp 0xb8c9
jmp 0xb8c9
jmp 0xb8da
jmp 0xb8eb
jmp 0xb8da
jmp 0xb8eb
jmp 0xb8c9
jmp 0xb8da
jmp 0xb8eb
movq %rax, %rbx
leaq -0x1a8(%rbp), %rdi
callq 0xba50
jmp 0xb8fa
movq %rax, %rbx
leaq -0x1a8(%rbp), %rdi
callq 0xbae6
jmp 0xb8fa
movq %rax, %rbx
leaq -0x1a8(%rbp), %rdi
callq 0xba8c
leaq -0x3a8(%rbp), %rdi
callq 0x2220
leaq -0x5b0(%rbp), %rdi
callq 0x2060
movq %rbx, %rdi
callq 0x2280