// File: /workspace/github_cpp_makefile_star2_O3/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 0xb01b
cmpl $0x2, %edi
je 0xacf8
cmpl $0x1, %edi
jne 0xb3c2
leaq -0x5b0(%rbp), %rdi
movl $0x8, %edx
callq 0x2250
leaq 0x1687(%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 $0xa0, %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 0xaaa8
movq %r14, %rdi
movl %ebx, %esi
callq 0x4108
incl %ebx
cmpl -0x88(%rbp), %ebx
jl 0xaa94
cmpl $0x0, -0x2c(%rbp)
jle 0xaaf4
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 0x4608
incl %r13d
cmpl -0x2c(%rbp), %r13d
jl 0xaac7
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 0xabdd
cmpl $0x1, %eax
je 0xab82
testl %eax, %eax
jne 0xac37
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 0x4608
jmp 0xabba
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 0x46c2
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 0xac37
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 0x4a56
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 0xab12
xorps %xmm1, %xmm1
cvtsi2sd %r14, %xmm1
movsd -0x38(%rbp), %xmm0
divsd %xmm1, %xmm0
leaq -0x3a8(%rbp), %rdi
callq 0x2240
movq %rax, %r14
leaq 0x1421(%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 0xb738
leaq -0x148(%rbp), %rdi
callq 0xb6b4
leaq -0x160(%rbp), %rdi
callq 0xb6b4
leaq -0x178(%rbp), %rdi
callq 0xb704
leaq -0x1a8(%rbp), %rdi
callq 0x594a
jmp 0xb36e
leaq -0x5b0(%rbp), %rdi
movl $0x8, %edx
callq 0x2250
leaq 0x136a(%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 -0x188(%rbp), %rdi
xorl %ebx, %ebx
movl $0xf0, %edx
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
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 0xae02
leaq -0x1a8(%rbp), %r14
movq %r14, %rdi
movl %ebx, %esi
callq 0x6280
incl %ebx
cmpl -0x2c(%rbp), %ebx
jl 0xadf1
cmpl $0x0, -0x30(%rbp)
jle 0xae60
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 0x6976
incl %ebx
cmpl -0x30(%rbp), %ebx
jl 0xae20
leaq -0x1a8(%rbp), %rdi
callq 0x6f3c
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 0xaf06
testl %eax, %eax
jne 0xaf46
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 0x6ac2
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 0xaf46
callq 0x2040
movq %rax, %r13
movq %rbx, %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x6e68
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 0x7534
decl %r12d
jne 0xae92
xorps %xmm1, %xmm1
cvtsi2sdq -0x58(%rbp), %xmm1
movsd -0x38(%rbp), %xmm0
divsd %xmm1, %xmm0
leaq -0x3a8(%rbp), %rdi
callq 0x2240
movq %rax, %rbx
leaq 0x1110(%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 0xb738
leaq -0xd8(%rbp), %rdi
callq 0xb82e
leaq -0xf0(%rbp), %rdi
callq 0xb82e
leaq -0x128(%rbp), %rdi
callq 0xb87e
leaq -0x140(%rbp), %rdi
callq 0xb704
leaq -0x170(%rbp), %rdi
callq 0x594a
leaq -0x1a8(%rbp), %rdi
jmp 0xb369
leaq -0x5b0(%rbp), %rdi
movl $0x8, %edx
callq 0x2250
leaq 0x1047(%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 $0xd0, %edx
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
movq $0x0, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%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, -0x8(%rax)
movupd %xmm0, 0x8(%rax)
movupd %xmm0, 0x18(%rax)
movupd %xmm0, 0x28(%rax)
cmpl $0x0, -0x2c(%rbp)
jle 0xb11b
leaq -0x1a8(%rbp), %r14
movq %r14, %rdi
movl %ebx, %esi
callq 0x87fc
incl %ebx
cmpl -0x2c(%rbp), %ebx
jl 0xb10a
cmpl $0x0, -0x30(%rbp)
jle 0xb179
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 0x887c
incl %ebx
cmpl -0x30(%rbp), %ebx
jl 0xb139
callq 0x2070
cltd
idivl -0x2c(%rbp)
leaq -0x1a8(%rbp), %rdi
movl %edx, (%rdi)
callq 0x8992
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 0xb24c
testl %eax, %eax
jne 0xb29c
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 0x8b6a
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 0xb29c
callq 0x2040
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x9bfa
callq 0x2040
movq %rax, %r14
movq -0x88(%rbp), %rdi
testq %rdi, %rdi
je 0xb280
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 0xb1aa
xorps %xmm1, %xmm1
cvtsi2sd %r12, %xmm1
movsd -0x38(%rbp), %xmm0
divsd %xmm1, %xmm0
leaq -0x3a8(%rbp), %rdi
callq 0x2240
movq %rax, %rbx
leaq 0xdbb(%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 0xb32d
callq 0x2170
movq -0xc8(%rbp), %rdi
testq %rdi, %rdi
je 0xb33e
callq 0x2170
leaq -0x100(%rbp), %rdi
callq 0xb990
leaq -0x138(%rbp), %rdi
callq 0xb990
leaq -0x168(%rbp), %rdi
callq 0x594a
leaq -0x1a0(%rbp), %rdi
callq 0xb91a
movq 0x5c53(%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 0x5c07(%rip), %rbx      # 0x10fd0
leaq 0xcb9(%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 0xb419
jmp 0xb419
movq %rax, %rbx
jmp 0xb47e
jmp 0xb422
jmp 0xb422
movq %rax, %rbx
jmp 0xb472
jmp 0xb441
jmp 0xb452
jmp 0xb463
jmp 0xb441
jmp 0xb441
jmp 0xb441
jmp 0xb452
jmp 0xb463
jmp 0xb452
jmp 0xb463
jmp 0xb441
jmp 0xb452
jmp 0xb463
movq %rax, %rbx
leaq -0x1a8(%rbp), %rdi
callq 0xb5c2
jmp 0xb472
movq %rax, %rbx
leaq -0x1a8(%rbp), %rdi
callq 0xb658
jmp 0xb472
movq %rax, %rbx
leaq -0x1a8(%rbp), %rdi
callq 0xb5fe
leaq -0x3a8(%rbp), %rdi
callq 0x2220
leaq -0x5b0(%rbp), %rdi
callq 0x2060
movq %rbx, %rdi
callq 0x2280