// File: /workspace/github_cpp_makefile_star2_O3/lluchs[P]sparsearray/main.cpp
// Function: main
int main(int argc, char **argv)
{
	const size_t list_size = 10000;

	int opt;
	while ((opt = getopt(argc, argv, "l:i:s:a:")) != -1)
	{
		switch (opt)
		{
		// No error handling. Don't pass invalid values.
		case 'i': iterations = std::atoi(optarg); break;
		case 's': seed = std::strtoull(optarg, nullptr, 10); break;
		case 'a': addmod = std::atoi(optarg); break;
		default: std::cerr << "Invalid option " << (char) opt << std::endl;
		}
	}
	std::cout << "iterations = " << std::to_string(iterations) << std::endl;
	std::cout << "seed = " << std::to_string(seed) << std::endl;
	std::cout << "addmod = " << std::to_string(addmod) << std::endl;
	std::cout << "data size = " << sizeof(C4PXS[list_size]) << " byte" << std::endl << std::endl;

	run_benchmark<BitmapSA<C4PXS, list_size>>("BitmapSA");
	run_benchmark<ChunkSA<C4PXS, list_size>>("ChunkSA");
	run_benchmark<StaticChunkSA<C4PXS, list_size>>("StaticChunkSA");
	run_benchmark<LinkedListSA<C4PXS, list_size>>("LinkedListSA");
	run_benchmark<LinkedListBitmapSA<C4PXS, list_size>>("LinkedListBitmapSA");
	run_benchmark<DoubleLinkedListSA<C4PXS, list_size>>("DoubleLinkedListSA");
	run_benchmark<UnorderedLinkedListSA<C4PXS, list_size>>("UnorderedLinkedListSA");
	run_benchmark<ReorderingSA<C4PXS, list_size>>("ReorderingSA");

	return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rsi, %rbx
movl %edi, %ebp
leaq 0x3d9a(%rip), %r14      # 0x5060
movq 0x6cf3(%rip), %r13      # 0x7fc0
movq 0x6d1c(%rip), %r15      # 0x7ff0
movl %ebp, %edi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x1060
movl %eax, %r12d
cmpl $0x68, %eax
jle 0x1306
cmpl $0x73, %r12d
je 0x131d
cmpl $0x69, %r12d
jne 0x133c
movq (%r13), %rdi
callq 0x1150
movl %eax, 0x6dcc(%rip)      # 0x80d0
jmp 0x12d4
cmpl $0x61, %r12d
jne 0x1336
movq (%r13), %rdi
callq 0x1150
movl %eax, 0x6dc5(%rip)      # 0x80e0
jmp 0x12d4
movq (%r13), %rdi
xorl %esi, %esi
movl $0xa, %edx
callq 0x1120
movq %rax, 0x6da4(%rip)      # 0x80d8
jmp 0x12d4
cmpl $-0x1, %r12d
je 0x1396
movl $0xf, %edx
movq %r15, %rdi
leaq 0x3d1e(%rip), %rsi      # 0x5069
callq 0x10f0
movb %r12b, 0x8(%rsp)
movl $0x1, %edx
movq %r15, %rdi
leaq 0x8(%rsp), %rsi
callq 0x10f0
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r12, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
jmp 0x12d4
movq 0x6c33(%rip), %rdi      # 0x7fd0
leaq 0x3cd5(%rip), %rsi      # 0x5079
movl $0xd, %edx
callq 0x10f0
movl 0x6d1b(%rip), %r12d     # 0x80d0
movl %r12d, %ebx
negl %ebx
cmovsl %r12d, %ebx
movl $0x1, %ebp
cmpl $0xa, %ebx
jb 0x140c
movl $0x4, %ebp
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebx, %ecx
cmpl $0x63, %ecx
jbe 0x1405
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x140a
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x140c
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %ebp
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x13d4
addl $-0x3, %ebp
jmp 0x140c
addl $-0x2, %ebp
jmp 0x140c
decl %ebp
shrl $0x1f, %r12d
movl %r12d, %esi
addl %ebp, %esi
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0x8(%rsp), %r14
movq %r14, %rdi
movl $0x2d, %edx
callq 0x1100
movq (%r14), %rdi
addq %r12, %rdi
movl %ebp, %esi
movl %ebx, %edx
callq 0x27ea
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq 0x6b83(%rip), %rdi      # 0x7fd0
callq 0x10f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x1493
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x10e0
movq 0x6b36(%rip), %rdi      # 0x7fd0
leaq 0x3be6(%rip), %rsi      # 0x5087
movl $0x7, %edx
callq 0x10f0
movq 0x6c26(%rip), %rbx      # 0x80d8
movl $0x1, %esi
cmpq $0xa, %rbx
jb 0x150c
movl $0x4, %esi
movabsq $0x346dc5d63886594b, %rdi # imm = 0x346DC5D63886594B
movq %rbx, %rcx
cmpq $0x63, %rcx
jbe 0x1505
cmpq $0x3e7, %rcx            # imm = 0x3E7
jbe 0x150a
cmpq $0x2710, %rcx           # imm = 0x2710
jb 0x150c
movq %rcx, %rax
mulq %rdi
shrq $0xb, %rdx
addl $0x4, %esi
cmpq $0x1869f, %rcx          # imm = 0x1869F
movq %rdx, %rcx
ja 0x14cf
addl $-0x3, %esi
jmp 0x150c
addl $-0x2, %esi
jmp 0x150c
decl %esi
movl %esi, %esi
leaq 0x8(%rsp), %r14
movq %r15, (%r14)
movq %r14, %rdi
xorl %edx, %edx
callq 0x1100
movq (%r14), %rdi
movl 0x8(%r14), %esi
movq %rbx, %rdx
callq 0x2857
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq 0x6a93(%rip), %rdi      # 0x7fd0
callq 0x10f0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x1583
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x10e0
movq 0x6a46(%rip), %rdi      # 0x7fd0
leaq 0x3afe(%rip), %rsi      # 0x508f
movl $0x9, %edx
callq 0x10f0
movl 0x6b3e(%rip), %r12d     # 0x80e0
movl %r12d, %ebx
negl %ebx
cmovsl %r12d, %ebx
movl $0x1, %ebp
cmpl $0xa, %ebx
jb 0x15f9
movl $0x4, %ebp
movl $0xd1b71759, %eax       # imm = 0xD1B71759
movl %ebx, %ecx
cmpl $0x63, %ecx
jbe 0x15f2
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x15f7
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x15f9
movl %ecx, %edx
imulq %rax, %rdx
shrq $0x2d, %rdx
addl $0x4, %ebp
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x15c1
addl $-0x3, %ebp
jmp 0x15f9
addl $-0x2, %ebp
jmp 0x15f9
decl %ebp
shrl $0x1f, %r12d
movl %r12d, %esi
addl %ebp, %esi
leaq 0x8(%rsp), %r14
movq %r15, (%r14)
movq %r14, %rdi
movl $0x2d, %edx
callq 0x1100
movq (%r14), %rdi
addq %r12, %rdi
movl %ebp, %esi
movl %ebx, %edx
callq 0x27ea
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq 0x699c(%rip), %rbx      # 0x7fd0
movq %rbx, %rdi
callq 0x10f0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x167d
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x10e0
leaq 0x3a15(%rip), %rsi      # 0x5099
movl $0xc, %edx
movq %rbx, %rdi
callq 0x10f0
movl $0x30d40, %esi          # imm = 0x30D40
movq %rbx, %rdi
callq 0x1090
movq %rax, %r15
leaq 0x39fe(%rip), %rbp      # 0x50a6
movl $0x5, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
leaq 0x39f3(%rip), %rsi      # 0x5103
movl $0x6, %edx
movq %rbx, %rdi
callq 0x10f0
leaq 0x39a0(%rip), %rsi      # 0x50c4
movl $0x8, %edx
movq %rbx, %rdi
callq 0x10f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
callq 0x1050
movq %rax, %r15
movl 0x696a(%rip), %edi      # 0x80d0
movq 0x696b(%rip), %rsi      # 0x80d8
movl 0x696d(%rip), %edx      # 0x80e0
callq 0x28d2
movq %rax, %r12
movq %rax, %r13
shrq $0x20, %r13
callq 0x1050
subq %r15, %rax
cvtsi2sd %rax, %xmm0
divsd 0x3871(%rip), %xmm0     # 0x5008
movsd %xmm0, (%rsp)
leaq 0x3967(%rip), %rsi      # 0x510a
movl $0x6, %edx
movq %rbx, %rdi
callq 0x10f0
movsd (%rsp), %xmm0
mulsd 0x3853(%rip), %xmm0     # 0x5010
cvttsd2si %xmm0, %rsi
movq %rbx, %rdi
callq 0x10c0
movq %rax, %r15
leaq 0x393d(%rip), %rsi      # 0x5111
movl $0x4, %edx
movq %rax, %rdi
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
leaq 0x3907(%rip), %r14      # 0x5116
movl $0xe, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x10f0
movl $0x31228, %esi          # imm = 0x31228
movq %rbx, %rdi
callq 0x1090
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
leaq 0x38b8(%rip), %rsi      # 0x5125
movl $0x8, %edx
movq %rbx, %rdi
callq 0x10f0
movq %rbx, %rdi
movl %r12d, %esi
callq 0x1160
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r12, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
leaq 0x3878(%rip), %rsi      # 0x512e
movl $0x6, %edx
movq %rbx, %rdi
callq 0x10f0
movq %rbx, %rdi
movl %r13d, %esi
callq 0x1160
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r13, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r13, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x37d2(%rip), %r12      # 0x5103
movq %r12, %rsi
callq 0x10f0
leaq 0x3772(%rip), %rsi      # 0x50b2
movl $0x7, %edx
movq %rbx, %rdi
callq 0x10f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
callq 0x1050
movq %rax, %r15
movl 0x674e(%rip), %edi      # 0x80d0
movq 0x674f(%rip), %rsi      # 0x80d8
movl 0x6751(%rip), %edx      # 0x80e0
callq 0x2c8c
movq %rax, %rbp
movq %rax, %r13
shrq $0x20, %r13
callq 0x1050
subq %r15, %rax
cvtsi2sd %rax, %xmm0
divsd 0x3655(%rip), %xmm0     # 0x5008
movsd %xmm0, (%rsp)
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x3743(%rip), %rsi      # 0x510a
callq 0x10f0
movsd (%rsp), %xmm0
mulsd 0x3637(%rip), %xmm0     # 0x5010
cvttsd2si %xmm0, %rsi
movq %rbx, %rdi
callq 0x10c0
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
leaq 0x3719(%rip), %rsi      # 0x5111
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0xe, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x10f0
movl $0x628, %esi            # imm = 0x628
movq %rbx, %rdi
callq 0x1090
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
leaq 0x3653(%rip), %r14      # 0x50a6
movq %r14, %rsi
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x8, %edx
movq %rbx, %rdi
leaq 0x3694(%rip), %rsi      # 0x5125
callq 0x10f0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x1160
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x3655(%rip), %rsi      # 0x512e
callq 0x10f0
movq %rbx, %rdi
movl %r13d, %esi
callq 0x1160
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x6, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10f0
leaq 0x3558(%rip), %rsi      # 0x50ac
movl $0xd, %edx
movq %rbx, %rdi
callq 0x10f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
callq 0x1050
movq %rax, %r15
movl 0x653a(%rip), %edi      # 0x80d0
movq 0x653b(%rip), %rsi      # 0x80d8
movl 0x653d(%rip), %edx      # 0x80e0
callq 0x3189
movq %rax, %rbp
movq %rax, %r13
shrq $0x20, %r13
callq 0x1050
subq %r15, %rax
cvtsi2sd %rax, %xmm0
divsd 0x3441(%rip), %xmm0     # 0x5008
movsd %xmm0, (%rsp)
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x352f(%rip), %rsi      # 0x510a
callq 0x10f0
movsd (%rsp), %xmm0
mulsd 0x3423(%rip), %xmm0     # 0x5010
cvttsd2si %xmm0, %rsi
movq %rbx, %rdi
callq 0x10c0
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
leaq 0x3505(%rip), %rsi      # 0x5111
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0xe, %edx
movq %rbx, %rdi
leaq 0x34cf(%rip), %rsi      # 0x5116
callq 0x10f0
movl $0x312c8, %esi          # imm = 0x312C8
movq %rbx, %rdi
callq 0x1090
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x8, %edx
movq %rbx, %rdi
leaq 0x3483(%rip), %rsi      # 0x5125
callq 0x10f0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x1160
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x3444(%rip), %rsi      # 0x512e
callq 0x10f0
movq %rbx, %rdi
movl %r13d, %esi
callq 0x1160
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x6, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10f0
leaq 0x3384(%rip), %rsi      # 0x50e9
movl $0xc, %edx
movq %rbx, %rdi
callq 0x10f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
callq 0x1050
movq %rax, %r15
movl 0x6329(%rip), %edi      # 0x80d0
movq 0x632a(%rip), %rsi      # 0x80d8
movl 0x632c(%rip), %edx      # 0x80e0
callq 0x3591
movq %rax, %rbp
movq %rax, %r13
shrq $0x20, %r13
callq 0x1050
subq %r15, %rax
cvtsi2sd %rax, %xmm0
divsd 0x3230(%rip), %xmm0     # 0x5008
movsd %xmm0, (%rsp)
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x331e(%rip), %rsi      # 0x510a
callq 0x10f0
movsd (%rsp), %xmm0
mulsd 0x3212(%rip), %xmm0     # 0x5010
cvttsd2si %xmm0, %rsi
movq %rbx, %rdi
callq 0x10c0
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
leaq 0x32f4(%rip), %rsi      # 0x5111
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0xe, %edx
movq %rbx, %rdi
leaq 0x32be(%rip), %rsi      # 0x5116
callq 0x10f0
movl $0x61a90, %esi          # imm = 0x61A90
movq %rbx, %rdi
callq 0x1090
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x8, %edx
movq %rbx, %rdi
leaq 0x3272(%rip), %rsi      # 0x5125
callq 0x10f0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x1160
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x3233(%rip), %rsi      # 0x512e
callq 0x10f0
movq %rbx, %rdi
movl %r13d, %esi
callq 0x1160
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x6, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10f0
leaq 0x3144(%rip), %rsi      # 0x50ba
movl $0x12, %edx
movq %rbx, %rdi
callq 0x10f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
callq 0x1050
movq %rax, %r15
movl 0x6118(%rip), %edi      # 0x80d0
movq 0x6119(%rip), %rsi      # 0x80d8
movl 0x611b(%rip), %edx      # 0x80e0
callq 0x390a
movq %rax, %rbp
movq %rax, %r13
shrq $0x20, %r13
callq 0x1050
subq %r15, %rax
cvtsi2sd %rax, %xmm0
divsd 0x301f(%rip), %xmm0     # 0x5008
movsd %xmm0, (%rsp)
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x310d(%rip), %rsi      # 0x510a
movq %rsi, %r14
callq 0x10f0
movsd (%rsp), %xmm0
mulsd 0x2ffe(%rip), %xmm0     # 0x5010
cvttsd2si %xmm0, %rsi
movq %rbx, %rdi
callq 0x10c0
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
leaq 0x30e0(%rip), %rsi      # 0x5111
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0xe, %edx
movq %rbx, %rdi
leaq 0x30aa(%rip), %rsi      # 0x5116
callq 0x10f0
movl $0x4e6f8, %esi          # imm = 0x4E6F8
movq %rbx, %rdi
callq 0x1090
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
leaq 0x3016(%rip), %rsi      # 0x50a6
movq %rsi, %r12
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x8, %edx
movq %rbx, %rdi
leaq 0x3057(%rip), %rsi      # 0x5125
callq 0x10f0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x1160
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x3018(%rip), %rsi      # 0x512e
callq 0x10f0
movq %rbx, %rdi
movl %r13d, %esi
callq 0x1160
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x2f7a(%rip), %rsi      # 0x5103
callq 0x10f0
leaq 0x2f38(%rip), %rsi      # 0x50cd
movl $0x12, %edx
movq %rbx, %rdi
callq 0x10f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
callq 0x1050
movq %rax, %r15
movl 0x5ef9(%rip), %edi      # 0x80d0
movq 0x5efa(%rip), %rsi      # 0x80d8
movl 0x5efc(%rip), %edx      # 0x80e0
callq 0x3d60
movq %rax, %rbp
movq %rax, %r13
shrq $0x20, %r13
callq 0x1050
subq %r15, %rax
cvtsi2sd %rax, %xmm0
divsd 0x2e00(%rip), %xmm0     # 0x5008
movsd %xmm0, (%rsp)
movl $0x6, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x10f0
movsd (%rsp), %xmm0
mulsd 0x2de6(%rip), %xmm0     # 0x5010
cvttsd2si %xmm0, %rsi
movq %rbx, %rdi
callq 0x10c0
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
leaq 0x2ec8(%rip), %rsi      # 0x5111
movq %rsi, %r14
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0xe, %edx
movq %rbx, %rdi
leaq 0x2e8f(%rip), %rsi      # 0x5116
callq 0x10f0
movl $0x75310, %esi          # imm = 0x75310
movq %rbx, %rdi
callq 0x1090
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x8, %edx
movq %rbx, %rdi
leaq 0x2e43(%rip), %rsi      # 0x5125
callq 0x10f0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x1160
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x2e04(%rip), %rsi      # 0x512e
movq %rsi, %r12
callq 0x10f0
movq %rbx, %rdi
movl %r13d, %esi
callq 0x1160
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x2d63(%rip), %rsi      # 0x5103
callq 0x10f0
leaq 0x2d34(%rip), %rsi      # 0x50e0
movl $0x15, %edx
movq %rbx, %rdi
callq 0x10f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
callq 0x1050
movq %rax, %r15
movl 0x5ce2(%rip), %edi      # 0x80d0
movq 0x5ce3(%rip), %rsi      # 0x80d8
movl 0x5ce5(%rip), %edx      # 0x80e0
callq 0x40cb
movq %rax, %rbp
movq %rax, %r13
shrq $0x20, %r13
callq 0x1050
subq %r15, %rax
cvtsi2sd %rax, %xmm0
divsd 0x2be9(%rip), %xmm0     # 0x5008
movsd %xmm0, (%rsp)
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x2cd7(%rip), %rsi      # 0x510a
callq 0x10f0
movsd (%rsp), %xmm0
mulsd 0x2bcb(%rip), %xmm0     # 0x5010
cvttsd2si %xmm0, %rsi
movq %rbx, %rdi
callq 0x10c0
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0xe, %edx
movq %rbx, %rdi
leaq 0x2c7b(%rip), %rsi      # 0x5116
callq 0x10f0
movl $0x61a90, %esi          # imm = 0x61A90
movq %rbx, %rdi
callq 0x1090
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2be7(%rip), %rsi      # 0x50a6
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x8, %edx
movq %rbx, %rdi
leaq 0x2c2b(%rip), %rsi      # 0x5125
callq 0x10f0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x1160
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x6, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10f0
movq %rbx, %rdi
movl %r13d, %esi
callq 0x1160
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x2b52(%rip), %rsi      # 0x5103
callq 0x10f0
leaq 0x2b39(%rip), %rsi      # 0x50f6
movl $0xc, %edx
movq %rbx, %rdi
callq 0x10f0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
callq 0x1050
movq %rax, %r15
movl 0x5ad1(%rip), %edi      # 0x80d0
movq 0x5ad2(%rip), %rsi      # 0x80d8
movl 0x5ad4(%rip), %edx      # 0x80e0
callq 0x43bc
movq %rax, %rbp
movq %rax, %r13
shrq $0x20, %r13
callq 0x1050
subq %r15, %rax
cvtsi2sd %rax, %xmm0
divsd 0x29d8(%rip), %xmm0     # 0x5008
movsd %xmm0, (%rsp)
movl $0x6, %edx
movq %rbx, %rdi
leaq 0x2ac6(%rip), %rsi      # 0x510a
callq 0x10f0
movsd (%rsp), %xmm0
mulsd 0x29ba(%rip), %xmm0     # 0x5010
cvttsd2si %xmm0, %rsi
movq %rbx, %rdi
callq 0x10c0
movq %rax, %r15
movl $0x4, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0xe, %edx
movq %rbx, %rdi
leaq 0x2a6a(%rip), %rsi      # 0x5116
callq 0x10f0
movl $0x30d48, %esi          # imm = 0x30D48
movq %rbx, %rdi
callq 0x1090
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
leaq 0x29d6(%rip), %rsi      # 0x50a6
callq 0x10f0
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r15, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x8, %edx
movq %rbx, %rdi
leaq 0x2a1a(%rip), %rsi      # 0x5125
callq 0x10f0
movq %rbx, %rdi
movl %ebp, %esi
callq 0x1160
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movl $0x6, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x10f0
movq %rbx, %rdi
movl %r13d, %esi
callq 0x1160
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1040
movq %rax, %rdi
callq 0x10a0
xorl %eax, %eax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x27c8
jmp 0x27c8
movq %rax, %rbx
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x27e2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x10e0
movq %rbx, %rdi
callq 0x1170