// File: /workspace/github_cpp_makefile_star2_O1/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 0x3d6a(%rip), %r14      # 0x5030
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 0x3cee(%rip), %rsi      # 0x5039
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 0x3ca5(%rip), %rsi      # 0x5049
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 0x3bb6(%rip), %rsi      # 0x5057
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 0x3ace(%rip), %rsi      # 0x505f
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 0x39e5(%rip), %rsi      # 0x5069
movl $0xc, %edx
movq %rbx, %rdi
callq 0x10f0
movl $0x30d40, %esi          # imm = 0x30D40
movq %rbx, %rdi
callq 0x1090
movq %rax, %r15
leaq 0x39ce(%rip), %rbp      # 0x5076
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 0x39c3(%rip), %rsi      # 0x50d3
movl $0x6, %edx
movq %rbx, %rdi
callq 0x10f0
leaq 0x3970(%rip), %rsi      # 0x5094
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 0x3937(%rip), %rsi      # 0x50da
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 0x390d(%rip), %rsi      # 0x50e1
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 0x38d7(%rip), %r14      # 0x50e6
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 0x3888(%rip), %rsi      # 0x50f5
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 0x3848(%rip), %rsi      # 0x50fe
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 0x37a2(%rip), %r12      # 0x50d3
movq %r12, %rsi
callq 0x10f0
leaq 0x3742(%rip), %rsi      # 0x5082
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 0x2c78
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 0x3713(%rip), %rsi      # 0x50da
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 0x36e9(%rip), %rsi      # 0x50e1
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 0x3623(%rip), %r14      # 0x5076
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 0x3664(%rip), %rsi      # 0x50f5
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 0x3625(%rip), %rsi      # 0x50fe
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 0x3528(%rip), %rsi      # 0x507c
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 0x31e9
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 0x34ff(%rip), %rsi      # 0x50da
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 0x34d5(%rip), %rsi      # 0x50e1
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 0x349f(%rip), %rsi      # 0x50e6
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 0x3453(%rip), %rsi      # 0x50f5
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 0x3414(%rip), %rsi      # 0x50fe
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 0x3354(%rip), %rsi      # 0x50b9
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 0x3671
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 0x32ee(%rip), %rsi      # 0x50da
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 0x32c4(%rip), %rsi      # 0x50e1
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 0x328e(%rip), %rsi      # 0x50e6
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 0x3242(%rip), %rsi      # 0x50f5
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 0x3203(%rip), %rsi      # 0x50fe
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 0x3114(%rip), %rsi      # 0x508a
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 0x39c1
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 0x30dd(%rip), %rsi      # 0x50da
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 0x30b0(%rip), %rsi      # 0x50e1
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 0x307a(%rip), %rsi      # 0x50e6
callq 0x10f0
movl $0x4e6f8, %esi          # imm = 0x4E6F8
movq %rbx, %rdi
callq 0x1090
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2fe6(%rip), %rsi      # 0x5076
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 0x3027(%rip), %rsi      # 0x50f5
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 0x2fe8(%rip), %rsi      # 0x50fe
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 0x2f4a(%rip), %rsi      # 0x50d3
callq 0x10f0
leaq 0x2f08(%rip), %rsi      # 0x509d
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 0x3de1
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 0x2e98(%rip), %rsi      # 0x50e1
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 0x2e5f(%rip), %rsi      # 0x50e6
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 0x2e13(%rip), %rsi      # 0x50f5
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 0x2dd4(%rip), %rsi      # 0x50fe
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 0x2d33(%rip), %rsi      # 0x50d3
callq 0x10f0
leaq 0x2d04(%rip), %rsi      # 0x50b0
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 0x4128
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 0x2ca7(%rip), %rsi      # 0x50da
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 0x2c4b(%rip), %rsi      # 0x50e6
callq 0x10f0
movl $0x61a90, %esi          # imm = 0x61A90
movq %rbx, %rdi
callq 0x1090
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
leaq 0x2bb7(%rip), %rsi      # 0x5076
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 0x2bfb(%rip), %rsi      # 0x50f5
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 0x2b22(%rip), %rsi      # 0x50d3
callq 0x10f0
leaq 0x2b09(%rip), %rsi      # 0x50c6
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 0x43e0
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 0x2a96(%rip), %rsi      # 0x50da
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 0x2a3a(%rip), %rsi      # 0x50e6
callq 0x10f0
movl $0x30d48, %esi          # imm = 0x30D48
movq %rbx, %rdi
callq 0x1090
movq %rax, %r15
movl $0x5, %edx
movq %rax, %rdi
leaq 0x29a6(%rip), %rsi      # 0x5076
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 0x29ea(%rip), %rsi      # 0x50f5
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