// File: /workspace/github_cpp_makefile_star2_O2/pritpal20[P]vector/tester.cpp
// Function: main
int main() {
	int i;
	time_t st;

	st = clock();
	lni::vector<int> v1;
	for (i = 0; i < 10000000; ++i)
		v1.push_back(i);
	printf("lni::vector %.3fs\n", (double)(clock() - st) / CLOCKS_PER_SEC);
	
#ifdef DEBUG
	
	puts("\n=== Debugging Messages ===\n");

	printf("max_size() = %u", v1.max_size());
	puts("\n");
	
	puts("Testing emplace and emplace_back ... ");
	lni::vector<test> vt;
	vt.push_back( test(1, 2, 3) );
	vt.emplace_back(2, 4, 6);
	vt.emplace(vt.begin() + 1, 1, 3, 5);
	for (auto &vti: vt)
		vti.print();
	puts("\n");

	puts("Testing resize ... ");
	v1.resize(5);
	for (auto &n: v1)
	 	printf(" %d", n);
	puts("");
	v1.resize(10, 10);
	for (auto &n: v1)
		printf(" %d", n);
	puts("\n");
	
	puts("Testing assign ... ");
	lni::vector<int> v1_a;
	v1_a.assign(v1.begin() + 1, v1.begin() + 3);
	for (auto &n: v1_a)
		printf(" %d", n);
	puts("\n");

	puts("Testing front and back ... ");
	printf(" %d %d", v1.front(), v1.back());
	puts("\n");

	puts("Testing pop_back ... ");
	v1.pop_back();
	for (auto &n: v1)
		printf(" %d", n);
	puts("\n");

	puts("Testing [] operator overloading ... ");
	v1[0] = 1;
	int sz = v1.size();
	for (i = 0; i < sz; i++)
		printf(" %d", v1[i]);
	puts("\n");

	puts("Testing initializer list ... ");
	lni::vector<int> v2 = {10, 11, 12, 13, 14};
	for (auto &n: v2)
		printf(" %d", n);
	puts("\n");

	puts("Testing swap ... ");
	v1.swap(v2);
	for (auto &n: v1)
		printf(" %d", n);
	puts("");
	for (auto &n: v2)
		printf(" %d", n);
	puts("\n");

	puts("Testing clear ... ");
	v1.clear();
	for (auto &n: v1)
		printf(" %d", n);
	puts("\n");


	puts("Testing constructors ... ");
	lni::vector<double> v3(5, 2.0);
	v3[0] = 1.0; v3[4] = 3.0;
	for (auto &f: v3)
		printf(" %.3f ", f);
	puts("");
	lni::vector<double> v4(v3);
	for (auto &f: v4)
		printf(" %.3f ", f);
	puts("\n");

	puts("Testing assignment operators ... ");
	lni::vector<double> v5 = v3;
	for (auto &f: v5)
		printf(" %.3f", f);
	puts("");
	lni::vector<double> v6 = {3.0, 2.0, 2.0, 2.0, 1.0};
	for (auto &f: v6)
		printf(" %.3f", f);
	puts("\n");

	puts("Testing insert ... ");
	auto it = v6.insert(v6.begin() + 1, 2.5);
	printf(" Just inserted: %.3f\n", *it);
	it = v6.insert(v6.begin(), 4.0);
	printf(" Just inserted: %.3f\n", *it);
	lni::vector<double> vins{-2.0, -3.0};
	it = v6.insert(v6.begin() + 1, vins.begin(), vins.end());
	printf(" Just inserted: %.3f %.3f\n", *it, *(it + 1));
	for (auto &f: v6)
		printf(" %.3f", f);
	puts("\n");

	it = v6.insert(v6.end(), 2, 0.0);
	it = v6.insert(v6.end() - 2, 3, 0.5);
	it = v6.insert(v6.begin(), {1.0, 2.0, 3.0, 4.0, 5.0});
	printf(" v6:");
	for (auto &f: v6)
		printf(" %.3f", f);
	puts("");


	lni::vector<double> v7(2, 5.0);
	v7.insert(v7.end(), v6.begin(), v6.end());
	for (auto &f: v7)
		printf(" %.3f", f);
	puts("");

	v7.insert(v7.begin(), {8.0, 7.0, 6.0});
	v7.insert(v7.end(), {-1.0, -2.0, -2.5});
	for (auto &f: v7)
		printf(" %.3f", f);
	puts("\n");

	puts("Testing erase ... ");
	v7.erase(v7.begin());
	v7.erase(v7.begin() + 2, v7.begin() + 4);
	printf(" v7:");
	for (auto &f: v7)
		printf(" %.3f", f);
	puts("\n");

	puts("Testing shrink_to_fit ... ");
	printf("Before: %u, %u\n", v7.size(), v7.capacity());
	v7.shrink_to_fit();
	printf("After: %u, %u\n", v7.size(), v7.capacity());
	puts("");

	puts("Testing operators ... ");
	lni::vector<double> v8(v7);
	printf(" v6 == v8: %d\n", v6 == v8);
	printf(" v6 != v8: %d\n", v6 != v8);
	printf(" v7 == v8: %d\n", v7 == v8);
	printf(" v7 != v8: %d\n", v7 != v8);
	
	printf("\n v6 < v8: %d\n", v6 < v8);
	printf(" v6 <= v8: %d\n", v6 <= v8);
	printf(" v8 < v6: %d\n", v8 < v6);
	printf(" v7 <= v8: %d\n", v7 <= v8);
	printf(" v8 < v7: %d\n", v8 < v7);
	
	printf("\n v6 >= v8: %d\n", v6 >= v8);
	printf(" v6 > v8: %d\n", v6 > v8);
	printf(" v8 >= v6: %d\n", v8 >= v6);
	printf(" v7 > v8: %d\n", v7 > v8);
	printf(" v8 >= v7: %d\n", v8 >= v7);	
	puts("\n");

	puts("Testing reverse_iterator ... ");
	for (auto it = v8.rbegin(); it != v8.rend(); ++it)
		printf(" %.3f", *it);
	puts("\n");

#endif
	
	st = clock();
	std::vector<int> std_v1;
	for (i = 0; i < 10000000; ++i)
		std_v1.push_back(i);
	printf("std::vector %.3fs\n", (double)(clock() - st) / CLOCKS_PER_SEC);

	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xe8, %rsp
callq 0x1090
movq %rax, %rbx
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x3284
xorl %eax, %eax
leaq 0xc(%rsp), %r15
movl %eax, 0xc(%rsp)
cmpl $0x98967f, %eax         # imm = 0x98967F
jg 0x20dc
movq %r14, %rdi
movq %r15, %rsi
callq 0x32a6
movl 0xc(%rsp), %eax
incl %eax
jmp 0x20be
callq 0x1090
subq %rbx, %rax
cvtsi2sd %rax, %xmm0
divsd 0x1f17(%rip), %xmm0     # 0x4008
leaq 0x1f28(%rip), %rdi      # 0x4020
movb $0x1, %al
callq 0x1040
leaq 0x1f2d(%rip), %rdi      # 0x4033
callq 0x1120
leaq 0x1f3e(%rip), %rdi      # 0x4050
movl $0x3b9aca00, %esi       # imm = 0x3B9ACA00
xorl %eax, %eax
callq 0x1040
leaq 0x1f29(%rip), %rdi      # 0x404e
callq 0x1120
leaq 0x1f2f(%rip), %rdi      # 0x4060
callq 0x1120
leaq 0x98(%rsp), %rbx
movq %rbx, %rdi
callq 0x32de
movabsq $0x200000001, %rax      # imm = 0x200000001
leaq 0x50(%rsp), %rsi
movq %rax, (%rsi)
movl $0x3, 0x8(%rsi)
movq %rbx, %rdi
callq 0x3300
leaq 0x50(%rsp), %rsi
movl $0x2, (%rsi)
leaq 0x88(%rsp), %rdx
movl $0x4, (%rdx)
leaq 0x40(%rsp), %rcx
movl $0x6, (%rcx)
leaq 0x98(%rsp), %rdi
callq 0x3346
leaq 0x98(%rsp), %rdi
movq 0x8(%rdi), %rsi
addq $0xc, %rsi
leaq 0x50(%rsp), %rdx
movl $0x1, (%rdx)
leaq 0x88(%rsp), %rcx
movl $0x3, (%rcx)
leaq 0x40(%rsp), %r8
movl $0x5, (%r8)
callq 0x33a0
movq 0xa0(%rsp), %rbx
movl 0x9c(%rsp), %eax
imulq $0xc, %rax, %r14
testq %r14, %r14
je 0x21fc
movq %rbx, %rdi
callq 0x341c
addq $0xc, %rbx
addq $-0xc, %r14
jmp 0x21e5
leaq 0x1e4b(%rip), %rdi      # 0x404e
callq 0x1120
leaq 0x1e77(%rip), %rdi      # 0x4086
callq 0x1120
leaq 0x10(%rsp), %rdi
pushq $0x5
popq %rsi
callq 0x1354
movq 0x18(%rsp), %r14
movl 0x14(%rsp), %r15d
shlq $0x2, %r15
leaq 0x1e97(%rip), %rbx      # 0x40cd
xorl %r12d, %r12d
cmpq %r12, %r15
je 0x2252
movl (%r14,%r12), %esi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1040
addq $0x4, %r12
jmp 0x2239
pushq $0xa
popq %rbx
movl %ebx, %edi
callq 0x1100
leaq 0x50(%rsp), %rdx
movl $0xa, (%rdx)
leaq 0x10(%rsp), %rdi
movl %ebx, %esi
callq 0x165a
movq 0x18(%rsp), %r14
movl 0x14(%rsp), %r15d
shlq $0x2, %r15
leaq 0x1e45(%rip), %rbx      # 0x40cd
xorl %r12d, %r12d
cmpq %r12, %r15
je 0x22a4
movl (%r14,%r12), %esi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1040
addq $0x4, %r12
jmp 0x228b
leaq 0x1da3(%rip), %rdi      # 0x404e
callq 0x1120
leaq 0x1de3(%rip), %rdi      # 0x409a
callq 0x1120
leaq 0x88(%rsp), %rbx
movq %rbx, %rdi
callq 0x3284
movq 0x18(%rsp), %rdx
leaq 0x4(%rdx), %rsi
addq $0xc, %rdx
movq %rbx, %rdi
callq 0x3432
movq 0x90(%rsp), %r14
movl 0x8c(%rsp), %r15d
shlq $0x2, %r15
leaq 0x1dd1(%rip), %rbx      # 0x40cd
xorl %r12d, %r12d
cmpq %r12, %r15
je 0x2318
movl (%r14,%r12), %esi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1040
addq $0x4, %r12
jmp 0x22ff
leaq 0x1d2f(%rip), %rbx      # 0x404e
movq %rbx, %rdi
callq 0x1120
leaq 0x1d80(%rip), %rdi      # 0x40ae
callq 0x1120
movq 0x18(%rsp), %rax
movl (%rax), %esi
movl 0x14(%rsp), %ecx
decl %ecx
movl (%rax,%rcx,4), %edx
leaq 0x1d80(%rip), %rdi      # 0x40ca
xorl %eax, %eax
callq 0x1040
movq %rbx, %rdi
callq 0x1120
leaq 0x1d71(%rip), %rdi      # 0x40d1
callq 0x1120
movl 0x14(%rsp), %r14d
decl %r14d
movl %r14d, 0x14(%rsp)
movq 0x18(%rsp), %r15
shlq $0x2, %r14
leaq 0x1d4b(%rip), %rbx      # 0x40cd
xorl %r12d, %r12d
cmpq %r12, %r14
je 0x239e
movl (%r15,%r12), %esi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1040
addq $0x4, %r12
jmp 0x2385
leaq 0x1ca9(%rip), %rdi      # 0x404e
callq 0x1120
leaq 0x1d36(%rip), %rdi      # 0x40e7
callq 0x1120
movq 0x18(%rsp), %rax
movl $0x1, (%rax)
movl 0x14(%rsp), %ebp
leaq 0x1d01(%rip), %rbx      # 0x40cd
xorl %eax, %eax
movl %eax, 0xc(%rsp)
cmpl %ebp, %eax
jge 0x23f2
movq 0x18(%rsp), %rcx
movl %eax, %eax
movl (%rcx,%rax,4), %esi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1040
movl 0xc(%rsp), %eax
incl %eax
jmp 0x23ce
leaq 0x1c55(%rip), %rdi      # 0x404e
callq 0x1120
leaq 0x1d07(%rip), %rdi      # 0x410c
callq 0x1120
movupd 0x1f5e(%rip), %xmm0     # 0x4370
leaq 0x50(%rsp), %rsi
movapd %xmm0, (%rsi)
movl $0xe, 0x10(%rsi)
leaq 0x40(%rsp), %rdi
pushq $0x5
popq %rdx
callq 0x3480
movq 0x48(%rsp), %r14
movl 0x44(%rsp), %r15d
shlq $0x2, %r15
leaq 0x1c89(%rip), %rbx      # 0x40cd
xorl %r12d, %r12d
cmpq %r12, %r15
je 0x2460
movl (%r14,%r12), %esi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1040
addq $0x4, %r12
jmp 0x2447
leaq 0x1be7(%rip), %rdi      # 0x404e
callq 0x1120
leaq 0x1cb7(%rip), %rdi      # 0x412a
callq 0x1120
movq 0x10(%rsp), %rax
movq 0x18(%rsp), %rcx
movl 0x40(%rsp), %edx
movl 0x44(%rsp), %r14d
movq 0x48(%rsp), %r15
movq %r15, 0x18(%rsp)
movl %r14d, 0x14(%rsp)
movl %edx, 0x10(%rsp)
movq %rax, 0x40(%rsp)
movq %rcx, 0x48(%rsp)
shlq $0x2, %r14
leaq 0x1c1a(%rip), %rbx      # 0x40cd
xorl %r12d, %r12d
cmpq %r12, %r14
je 0x24cf
movl (%r15,%r12), %esi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1040
addq $0x4, %r12
jmp 0x24b6
pushq $0xa
popq %rdi
callq 0x1100
movq 0x48(%rsp), %r14
movl 0x44(%rsp), %r15d
shlq $0x2, %r15
leaq 0x1be1(%rip), %rbx      # 0x40cd
xorl %r12d, %r12d
cmpq %r12, %r15
je 0x2508
movl (%r14,%r12), %esi
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1040
addq $0x4, %r12
jmp 0x24ef
leaq 0x1b3f(%rip), %rbx      # 0x404e
movq %rbx, %rdi
callq 0x1120
leaq 0x1c1e(%rip), %rdi      # 0x413c
callq 0x1120
andl $0x0, 0x14(%rsp)
movq %rbx, %rdi
callq 0x1120
leaq 0x1c18(%rip), %rdi      # 0x414f
callq 0x1120
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
leaq 0x50(%rsp), %rdx
movq %rax, (%rdx)
leaq 0x78(%rsp), %rdi
pushq $0x5
popq %rsi
callq 0x34d0
movq 0x80(%rsp), %r15
movabsq $0x3ff0000000000000, %r14 # imm = 0x3FF0000000000000
movq %r14, (%r15)
movabsq $0x4008000000000000, %rax # imm = 0x4008000000000000
movq %rax, 0x20(%r15)
movl 0x7c(%rsp), %r12d
shlq $0x3, %r12
xorl %r13d, %r13d
leaq 0x1bd8(%rip), %rbx      # 0x4169
cmpq %r13, %r12
je 0x25ac
movsd (%r15,%r13), %xmm0
movq %rbx, %rdi
movb $0x1, %al
callq 0x1040
addq $0x8, %r13
jmp 0x2591
pushq $0xa
popq %rdi
callq 0x1100
leaq 0xd8(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x351c
movq 0xe0(%rsp), %r15
movl 0xdc(%rsp), %r12d
shlq $0x3, %r12
xorl %r13d, %r13d
leaq 0x1b85(%rip), %rbx      # 0x4169
cmpq %r13, %r12
je 0x25ff
movsd (%r15,%r13), %xmm0
movq %rbx, %rdi
movb $0x1, %al
callq 0x1040
addq $0x8, %r13
jmp 0x25e4
leaq 0x1a48(%rip), %rdi      # 0x404e
callq 0x1120
leaq 0x1b5e(%rip), %rdi      # 0x4170
callq 0x1120
leaq 0xc8(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x351c
movq 0xd0(%rsp), %r15
movl 0xcc(%rsp), %r12d
shlq $0x3, %r12
xorl %r13d, %r13d
leaq 0x1b4b(%rip), %rbx      # 0x4192
cmpq %r13, %r12
je 0x2662
movsd (%r15,%r13), %xmm0
movq %rbx, %rdi
movb $0x1, %al
callq 0x1040
addq $0x8, %r13
jmp 0x2647
pushq $0xa
popq %rdi
callq 0x1100
movups 0x1d27(%rip), %xmm0     # 0x4398
leaq 0x50(%rsp), %rsi
movaps %xmm0, 0x10(%rsi)
movupd 0x1d06(%rip), %xmm0     # 0x4388
movapd %xmm0, (%rsi)
movq %r14, 0x20(%rsi)
leaq 0x20(%rsp), %rdi
pushq $0x5
popq %rdx
callq 0x3568
movq 0x28(%rsp), %r14
movl 0x24(%rsp), %r15d
shlq $0x3, %r15
xorl %r12d, %r12d
leaq 0x1ae3(%rip), %rbx      # 0x4192
cmpq %r12, %r15
je 0x26ca
movsd (%r14,%r12), %xmm0
movq %rbx, %rdi
movb $0x1, %al
callq 0x1040
addq $0x8, %r12
jmp 0x26af
leaq 0x197d(%rip), %rdi      # 0x404e
callq 0x1120
leaq 0x1abb(%rip), %rdi      # 0x4198
callq 0x1120
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rsi
addq $0x8, %rsi
movabsq $0x4004000000000000, %rax # imm = 0x4004000000000000
leaq 0x50(%rsp), %rdx
movq %rax, (%rdx)
callq 0x35bc
movsd (%rax), %xmm0
leaq 0x1a9b(%rip), %rdi      # 0x41ac
movb $0x1, %al
callq 0x1040
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rsi
movabsq $0x4010000000000000, %rax # imm = 0x4010000000000000
leaq 0x50(%rsp), %rdx
movq %rax, (%rdx)
callq 0x35bc
movsd (%rax), %xmm0
leaq 0x1a69(%rip), %rdi      # 0x41ac
movb $0x1, %al
callq 0x1040
movapd 0x18be(%rip), %xmm0     # 0x4010
leaq 0x50(%rsp), %rsi
movapd %xmm0, (%rsi)
leaq 0xb8(%rsp), %rdi
pushq $0x2
popq %rdx
callq 0x3568
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rsi
addq $0x8, %rsi
movq 0xc0(%rsp), %rdx
movl 0xbc(%rsp), %eax
leaq (%rdx,%rax,8), %rcx
callq 0x361c
movsd (%rax), %xmm0
movsd 0x8(%rax), %xmm1
leaq 0x1a22(%rip), %rdi      # 0x41c2
movb $0x2, %al
callq 0x1040
movq 0x28(%rsp), %r14
movl 0x24(%rsp), %r15d
shlq $0x3, %r15
xorl %r12d, %r12d
leaq 0x19d3(%rip), %rbx      # 0x4192
cmpq %r12, %r15
je 0x27da
movsd (%r14,%r12), %xmm0
movq %rbx, %rdi
movb $0x1, %al
callq 0x1040
addq $0x8, %r12
jmp 0x27bf
leaq 0x186d(%rip), %rdi      # 0x404e
callq 0x1120
leaq 0x20(%rsp), %rdi
movl 0x4(%rdi), %esi
shlq $0x3, %rsi
addq 0x8(%rdi), %rsi
leaq 0x50(%rsp), %rcx
andq $0x0, (%rcx)
pushq $0x2
popq %rdx
callq 0x36b0
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rax
movl 0x4(%rdi), %ecx
leaq (%rax,%rcx,8), %rsi
addq $-0x10, %rsi
movabsq $0x3fe0000000000000, %rax # imm = 0x3FE0000000000000
leaq 0x50(%rsp), %rcx
movq %rax, (%rcx)
pushq $0x3
popq %rdx
callq 0x36b0
leaq 0x20(%rsp), %rdi
movq 0x8(%rdi), %rsi
movups 0x1b7b(%rip), %xmm0     # 0x43c0
leaq 0x50(%rsp), %rdx
movaps %xmm0, 0x10(%rdx)
movupd 0x1b5a(%rip), %xmm0     # 0x43b0
movapd %xmm0, (%rdx)
movabsq $0x4014000000000000, %r14 # imm = 0x4014000000000000
movq %r14, 0x20(%rdx)
pushq $0x5
popq %rcx
callq 0x3734
leaq 0x1966(%rip), %rdi      # 0x41dd
xorl %r15d, %r15d
xorl %eax, %eax
callq 0x1040
movq 0x28(%rsp), %r12
movl 0x24(%rsp), %r13d
shlq $0x3, %r13
leaq 0x18fc(%rip), %rbx      # 0x4192
cmpq %r15, %r13
je 0x28b1
movsd (%r12,%r15), %xmm0
movq %rbx, %rdi
movb $0x1, %al
callq 0x1040
addq $0x8, %r15
jmp 0x2896
pushq $0xa
popq %rdi
callq 0x1100
leaq 0x50(%rsp), %rdx
movq %r14, (%rdx)
leaq 0x30(%rsp), %rdi
pushq $0x2
popq %rsi
callq 0x34d0
leaq 0x30(%rsp), %rdi
movl 0x4(%rdi), %esi
shlq $0x3, %rsi
addq 0x8(%rdi), %rsi
movq 0x28(%rsp), %rdx
movl 0x24(%rsp), %eax
leaq (%rdx,%rax,8), %rcx
callq 0x361c
movq 0x38(%rsp), %r14
movl 0x34(%rsp), %r15d
shlq $0x3, %r15
xorl %r12d, %r12d
leaq 0x188a(%rip), %rbx      # 0x4192
cmpq %r12, %r15
je 0x2923
movsd (%r14,%r12), %xmm0
movq %rbx, %rdi
movb $0x1, %al
callq 0x1040
addq $0x8, %r12
jmp 0x2908
pushq $0xa
popq %rdi
callq 0x1100
leaq 0x30(%rsp), %rdi
movq 0x8(%rdi), %rsi
movupd 0x1a9c(%rip), %xmm0     # 0x43d8
leaq 0x50(%rsp), %rdx
movapd %xmm0, (%rdx)
movabsq $0x4018000000000000, %rax # imm = 0x4018000000000000
movq %rax, 0x10(%rdx)
pushq $0x3
popq %rcx
callq 0x3734
leaq 0x30(%rsp), %rdi
movl 0x4(%rdi), %esi
shlq $0x3, %rsi
addq 0x8(%rdi), %rsi
movupd 0x1a7d(%rip), %xmm0     # 0x43f0
leaq 0x50(%rsp), %rdx
movapd %xmm0, (%rdx)
movabsq $-0x3ffc000000000000, %rax # imm = 0xC004000000000000
movq %rax, 0x10(%rdx)
pushq $0x3
popq %rcx
callq 0x3734
movq 0x38(%rsp), %r14
movl 0x34(%rsp), %r15d
shlq $0x3, %r15
xorl %r12d, %r12d
leaq 0x17e8(%rip), %rbx      # 0x4192
cmpq %r12, %r15
je 0x29c5
movsd (%r14,%r12), %xmm0
movq %rbx, %rdi
movb $0x1, %al
callq 0x1040
addq $0x8, %r12
jmp 0x29aa
leaq 0x1682(%rip), %rdi      # 0x404e
callq 0x1120
leaq 0x180a(%rip), %rdi      # 0x41e2
callq 0x1120
leaq 0x30(%rsp), %rbx
movq 0x8(%rbx), %rdi
leaq 0x8(%rdi), %rsi
movl 0x4(%rbx), %eax
leaq -0x8(,%rax,8), %rdx
callq 0x1130
decl 0x4(%rbx)
movq 0x8(%rbx), %rdx
leaq 0x10(%rdx), %rsi
addq $0x20, %rdx
movq %rbx, %rdi
callq 0x1fa8
leaq 0x17dd(%rip), %rdi      # 0x41f5
xorl %r14d, %r14d
xorl %eax, %eax
callq 0x1040
movq 0x8(%rbx), %r15
movl 0x4(%rbx), %r12d
shlq $0x3, %r12
leaq 0x175d(%rip), %rbx      # 0x4192
cmpq %r14, %r12
je 0x2a50
movsd (%r15,%r14), %xmm0
movq %rbx, %rdi
movb $0x1, %al
callq 0x1040
addq $0x8, %r14
jmp 0x2a35
leaq 0x15f7(%rip), %rdi      # 0x404e
callq 0x1120
leaq 0x1797(%rip), %rdi      # 0x41fa
callq 0x1120
leaq 0x30(%rsp), %rbx
movl (%rbx), %edx
movl 0x4(%rbx), %esi
leaq 0x179c(%rip), %rdi      # 0x4215
xorl %eax, %eax
callq 0x1040
movq %rbx, %rdi
callq 0x37c2
leaq 0x30(%rsp), %rbx
movl (%rbx), %edx
movl 0x4(%rbx), %esi
leaq 0x178c(%rip), %rdi      # 0x4225
xorl %eax, %eax
callq 0x1040
pushq $0xa
popq %rdi
callq 0x1100
leaq 0x1785(%rip), %rdi      # 0x4234
callq 0x1120
leaq 0xa8(%rsp), %rdi
movq %rbx, %rsi
callq 0x351c
leaq 0x20(%rsp), %r14
leaq 0xa8(%rsp), %rbx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x37cc
movzbl %al, %esi
leaq 0x1765(%rip), %rdi      # 0x424b
xorl %eax, %eax
callq 0x1040
movq %r14, %rdi
movq %rbx, %rsi
callq 0x37fc
movzbl %al, %esi
leaq 0x1758(%rip), %rdi      # 0x425a
xorl %eax, %eax
callq 0x1040
leaq 0x30(%rsp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x37cc
movzbl %al, %esi
leaq 0x1746(%rip), %rdi      # 0x4269
xorl %eax, %eax
callq 0x1040
movq %r15, %rdi
movq %rbx, %rsi
callq 0x37fc
movzbl %al, %esi
leaq 0x1739(%rip), %rdi      # 0x4278
xorl %eax, %eax
callq 0x1040
movq %r14, %rdi
movq %rbx, %rsi
callq 0x382c
movzbl %al, %esi
leaq 0x172c(%rip), %rdi      # 0x4287
xorl %eax, %eax
callq 0x1040
movq %r14, %rdi
movq %rbx, %rsi
callq 0x3866
movzbl %al, %esi
leaq 0x171f(%rip), %rdi      # 0x4296
xorl %eax, %eax
callq 0x1040
movq %rbx, %rdi
movq %r14, %rsi
callq 0x382c
movzbl %al, %esi
leaq 0x1712(%rip), %rdi      # 0x42a5
xorl %eax, %eax
callq 0x1040
movq %r15, %rdi
movq %rbx, %rsi
callq 0x3866
movzbl %al, %esi
leaq 0x1704(%rip), %rdi      # 0x42b3
xorl %eax, %eax
callq 0x1040
movq %rbx, %rdi
movq %r15, %rsi
callq 0x382c
movzbl %al, %esi
leaq 0x16f7(%rip), %rdi      # 0x42c2
xorl %eax, %eax
callq 0x1040
movq %r14, %rdi
movq %rbx, %rsi
callq 0x38a8
movzbl %al, %esi
leaq 0x16e9(%rip), %rdi      # 0x42d0
xorl %eax, %eax
callq 0x1040
movq %r14, %rdi
movq %rbx, %rsi
callq 0x38e4
movzbl %al, %esi
leaq 0x16dd(%rip), %rdi      # 0x42e0
xorl %eax, %eax
callq 0x1040
movq %rbx, %rdi
movq %r14, %rsi
callq 0x38a8
movzbl %al, %esi
leaq 0x16cf(%rip), %rdi      # 0x42ee
xorl %eax, %eax
callq 0x1040
movq %r15, %rdi
movq %rbx, %rsi
callq 0x38e4
movzbl %al, %esi
leaq 0x16c2(%rip), %rdi      # 0x42fd
xorl %eax, %eax
callq 0x1040
movq %rbx, %rdi
movq %r15, %rsi
callq 0x38a8
movzbl %al, %esi
leaq 0x16b4(%rip), %rdi      # 0x430b
xorl %eax, %eax
callq 0x1040
leaq 0x13e9(%rip), %rdi      # 0x404e
callq 0x1120
leaq 0x16a9(%rip), %rdi      # 0x431a
callq 0x1120
movq 0x8(%rbx), %rax
movl 0x4(%rbx), %ecx
leaq (%rax,%rcx,8), %r14
leaq 0x150a(%rip), %rbx      # 0x4192
cmpq %rax, %r14
je 0x2cab
movsd -0x8(%r14), %xmm0
addq $-0x8, %r14
movq %rbx, %rdi
movb $0x1, %al
callq 0x1040
movq 0xb0(%rsp), %rax
jmp 0x2c88
leaq 0x139c(%rip), %rdi      # 0x404e
callq 0x1120
callq 0x1090
movq %rax, %rbx
leaq 0x50(%rsp), %r14
andq $0x0, 0x10(%r14)
xorpd %xmm0, %xmm0
movapd %xmm0, (%r14)
xorl %eax, %eax
leaq 0xc(%rsp), %r15
movl %eax, 0xc(%rsp)
cmpl $0x98967f, %eax         # imm = 0x98967F
jg 0x2cf7
movq %r14, %rdi
movq %r15, %rsi
callq 0x391e
movl 0xc(%rsp), %eax
incl %eax
jmp 0x2cd9
callq 0x1090
subq %rbx, %rax
cvtsi2sd %rax, %xmm0
divsd 0x12fc(%rip), %xmm0     # 0x4008
leaq 0x1625(%rip), %rdi      # 0x4338
movb $0x1, %al
callq 0x1040
leaq 0x50(%rsp), %rdi
callq 0x39b6
leaq 0xa8(%rsp), %rdi
callq 0x393c
leaq 0x30(%rsp), %rdi
callq 0x393c
leaq 0xb8(%rsp), %rdi
callq 0x393c
leaq 0x20(%rsp), %rdi
callq 0x393c
leaq 0xc8(%rsp), %rdi
callq 0x393c
leaq 0xd8(%rsp), %rdi
callq 0x393c
leaq 0x78(%rsp), %rdi
callq 0x393c
leaq 0x40(%rsp), %rdi
callq 0x394a
leaq 0x88(%rsp), %rdi
callq 0x394a
leaq 0x98(%rsp), %rdi
callq 0x3958
leaq 0x10(%rsp), %rdi
callq 0x394a
xorl %eax, %eax
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2e08
jmp 0x2e08
jmp 0x2e08
jmp 0x2dc6
jmp 0x2dc6
jmp 0x2dc6
jmp 0x2dc6
movq %rax, %rbx
jmp 0x2e31
jmp 0x2dcf
jmp 0x2dcf
movq %rax, %rbx
jmp 0x2e3e
movq %rax, %rbx
jmp 0x2e48
movq %rax, %rbx
jmp 0x2e55
movq %rax, %rbx
jmp 0x2e62
movq %rax, %rbx
jmp 0x2e6c
jmp 0x2ded
movq %rax, %rbx
jmp 0x2e76
jmp 0x2e85
jmp 0x2e85
jmp 0x2e85
jmp 0x2e85
jmp 0x2e85
movq %rax, %rbx
jmp 0x2e27
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x39b6
leaq 0xa8(%rsp), %rdi
callq 0x393c
leaq 0x30(%rsp), %rdi
callq 0x393c
leaq 0xb8(%rsp), %rdi
callq 0x393c
leaq 0x20(%rsp), %rdi
callq 0x393c
leaq 0xc8(%rsp), %rdi
callq 0x393c
leaq 0xd8(%rsp), %rdi
callq 0x393c
leaq 0x78(%rsp), %rdi
callq 0x393c
leaq 0x40(%rsp), %rdi
callq 0x394a
leaq 0x88(%rsp), %rdi
callq 0x394a
jmp 0x2e88
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
callq 0x3958
jmp 0x2e9a
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x394a
movq %rbx, %rdi
callq 0x1140