// File: ridgelab[P]Kmer-SSR/src/AtomicityChecker.cpp
// Function: AtomicityChecker::AtomicityChecker()
AtomicityChecker::AtomicityChecker()
{
	this->setUp();
	unordered_map<uint32_t, unordered_set<uint32_t>> default_factors( {
		{ 1, unordered_set<uint32_t>( {1} ) },
		{ 2, unordered_set<uint32_t>( {1,2} ) },
		{ 3, unordered_set<uint32_t>( {1,3} ) },
		{ 4, unordered_set<uint32_t>( {1,2,4} ) },
		{ 5, unordered_set<uint32_t>( {1,5} ) },
		{ 6, unordered_set<uint32_t>( {1,2,3,6} ) },
		{ 7, unordered_set<uint32_t>( {1,7} ) },
		{ 8, unordered_set<uint32_t>( {1,2,4,8} ) },
		{ 9, unordered_set<uint32_t>( {1,3,9} ) },
		{ 10, unordered_set<uint32_t>( {1,2,5,10} ) }
	} );
	this->initFactorsWithPreDefinedFactors(default_factors);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x7b0, %rsp            # imm = 0x7B0
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x6c8(%rbp)
callq 0xa920
movb $0x1, -0x67c(%rbp)
leaq -0x2d0(%rbp), %rax
movq %rax, -0x2d8(%rbp)
movl $0x1, -0x2dc(%rbp)
movl $0x1, -0x32c(%rbp)
leaq -0x32c(%rbp), %rax
movq %rax, -0x328(%rbp)
movq $0x1, -0x320(%rbp)
leaq -0x32f(%rbp), %rdi
movq %rdi, -0x6c0(%rbp)
callq 0xb3a0
movq -0x6c0(%rbp), %rcx
movq -0x328(%rbp), %rsi
movq -0x320(%rbp), %rdx
movq %rsp, %rax
movq %rcx, (%rax)
xorl %eax, %eax
movl %eax, %ecx
leaq -0x318(%rbp), %rdi
leaq -0x32d(%rbp), %r8
leaq -0x32e(%rbp), %r9
callq 0xb3c0
jmp 0x9c8f
leaq -0x2d0(%rbp), %rdi
leaq -0x2dc(%rbp), %rsi
leaq -0x318(%rbp), %rdx
callq 0xb420
jmp 0x9cab
leaq -0x290(%rbp), %rax
movq %rax, -0x6d8(%rbp)
movq %rax, -0x2d8(%rbp)
movl $0x2, -0x340(%rbp)
movl $0x1, -0x390(%rbp)
movl $0x2, -0x38c(%rbp)
leaq -0x390(%rbp), %rax
movq %rax, -0x388(%rbp)
movq $0x2, -0x380(%rbp)
leaq -0x393(%rbp), %rdi
movq %rdi, -0x6d0(%rbp)
callq 0xb3a0
movq -0x6d0(%rbp), %rcx
movq -0x388(%rbp), %rsi
movq -0x380(%rbp), %rdx
movq %rsp, %rax
movq %rcx, (%rax)
xorl %eax, %eax
movl %eax, %ecx
leaq -0x378(%rbp), %rdi
leaq -0x391(%rbp), %r8
leaq -0x392(%rbp), %r9
callq 0xb3c0
jmp 0x9d45
movq -0x6d8(%rbp), %rdi
leaq -0x340(%rbp), %rsi
leaq -0x378(%rbp), %rdx
callq 0xb420
jmp 0x9d61
leaq -0x250(%rbp), %rax
movq %rax, -0x6e8(%rbp)
movq %rax, -0x2d8(%rbp)
movl $0x3, -0x398(%rbp)
movl $0x1, -0x3e8(%rbp)
movl $0x3, -0x3e4(%rbp)
leaq -0x3e8(%rbp), %rax
movq %rax, -0x3e0(%rbp)
movq $0x2, -0x3d8(%rbp)
leaq -0x3eb(%rbp), %rdi
movq %rdi, -0x6e0(%rbp)
callq 0xb3a0
movq -0x6e0(%rbp), %rcx
movq -0x3e0(%rbp), %rsi
movq -0x3d8(%rbp), %rdx
movq %rsp, %rax
movq %rcx, (%rax)
xorl %eax, %eax
movl %eax, %ecx
leaq -0x3d0(%rbp), %rdi
leaq -0x3e9(%rbp), %r8
leaq -0x3ea(%rbp), %r9
callq 0xb3c0
jmp 0x9dfb
movq -0x6e8(%rbp), %rdi
leaq -0x398(%rbp), %rsi
leaq -0x3d0(%rbp), %rdx
callq 0xb420
jmp 0x9e17
leaq -0x210(%rbp), %rax
movq %rax, -0x6f8(%rbp)
movq %rax, -0x2d8(%rbp)
movl $0x4, -0x3f0(%rbp)
movl $0x1, -0x444(%rbp)
movl $0x2, -0x440(%rbp)
movl $0x4, -0x43c(%rbp)
leaq -0x444(%rbp), %rax
movq %rax, -0x438(%rbp)
movq $0x3, -0x430(%rbp)
leaq -0x447(%rbp), %rdi
movq %rdi, -0x6f0(%rbp)
callq 0xb3a0
movq -0x6f0(%rbp), %rcx
movq -0x438(%rbp), %rsi
movq -0x430(%rbp), %rdx
movq %rsp, %rax
movq %rcx, (%rax)
xorl %eax, %eax
movl %eax, %ecx
leaq -0x428(%rbp), %rdi
leaq -0x445(%rbp), %r8
leaq -0x446(%rbp), %r9
callq 0xb3c0
jmp 0x9ebb
movq -0x6f8(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
leaq -0x428(%rbp), %rdx
callq 0xb420
jmp 0x9ed7
leaq -0x1d0(%rbp), %rax
movq %rax, -0x708(%rbp)
movq %rax, -0x2d8(%rbp)
movl $0x5, -0x44c(%rbp)
movl $0x1, -0x4a0(%rbp)
movl $0x5, -0x49c(%rbp)
leaq -0x4a0(%rbp), %rax
movq %rax, -0x498(%rbp)
movq $0x2, -0x490(%rbp)
leaq -0x4a3(%rbp), %rdi
movq %rdi, -0x700(%rbp)
callq 0xb3a0
movq -0x700(%rbp), %rcx
movq -0x498(%rbp), %rsi
movq -0x490(%rbp), %rdx
movq %rsp, %rax
movq %rcx, (%rax)
xorl %eax, %eax
movl %eax, %ecx
leaq -0x488(%rbp), %rdi
leaq -0x4a1(%rbp), %r8
leaq -0x4a2(%rbp), %r9
callq 0xb3c0
jmp 0x9f71
movq -0x708(%rbp), %rdi
leaq -0x44c(%rbp), %rsi
leaq -0x488(%rbp), %rdx
callq 0xb420
jmp 0x9f8d
leaq -0x190(%rbp), %rax
movq %rax, -0x718(%rbp)
movq %rax, -0x2d8(%rbp)
movl $0x6, -0x4a8(%rbp)
movl $0x1, -0x500(%rbp)
movl $0x2, -0x4fc(%rbp)
movl $0x3, -0x4f8(%rbp)
movl $0x6, -0x4f4(%rbp)
leaq -0x500(%rbp), %rax
movq %rax, -0x4f0(%rbp)
movq $0x4, -0x4e8(%rbp)
leaq -0x503(%rbp), %rdi
movq %rdi, -0x710(%rbp)
callq 0xb3a0
movq -0x710(%rbp), %rcx
movq -0x4f0(%rbp), %rsi
movq -0x4e8(%rbp), %rdx
movq %rsp, %rax
movq %rcx, (%rax)
xorl %eax, %eax
movl %eax, %ecx
leaq -0x4e0(%rbp), %rdi
leaq -0x501(%rbp), %r8
leaq -0x502(%rbp), %r9
callq 0xb3c0
jmp 0xa03b
movq -0x718(%rbp), %rdi
leaq -0x4a8(%rbp), %rsi
leaq -0x4e0(%rbp), %rdx
callq 0xb420
jmp 0xa057
leaq -0x150(%rbp), %rax
movq %rax, -0x728(%rbp)
movq %rax, -0x2d8(%rbp)
movl $0x7, -0x508(%rbp)
movl $0x1, -0x558(%rbp)
movl $0x7, -0x554(%rbp)
leaq -0x558(%rbp), %rax
movq %rax, -0x550(%rbp)
movq $0x2, -0x548(%rbp)
leaq -0x55b(%rbp), %rdi
movq %rdi, -0x720(%rbp)
callq 0xb3a0
movq -0x720(%rbp), %rcx
movq -0x550(%rbp), %rsi
movq -0x548(%rbp), %rdx
movq %rsp, %rax
movq %rcx, (%rax)
xorl %eax, %eax
movl %eax, %ecx
leaq -0x540(%rbp), %rdi
leaq -0x559(%rbp), %r8
leaq -0x55a(%rbp), %r9
callq 0xb3c0
jmp 0xa0f1
movq -0x728(%rbp), %rdi
leaq -0x508(%rbp), %rsi
leaq -0x540(%rbp), %rdx
callq 0xb420
jmp 0xa10d
leaq -0x110(%rbp), %rax
movq %rax, -0x738(%rbp)
movq %rax, -0x2d8(%rbp)
movl $0x8, -0x560(%rbp)
movl $0x1, -0x5b8(%rbp)
movl $0x2, -0x5b4(%rbp)
movl $0x4, -0x5b0(%rbp)
movl $0x8, -0x5ac(%rbp)
leaq -0x5b8(%rbp), %rax
movq %rax, -0x5a8(%rbp)
movq $0x4, -0x5a0(%rbp)
leaq -0x5bb(%rbp), %rdi
movq %rdi, -0x730(%rbp)
callq 0xb3a0
movq -0x730(%rbp), %rcx
movq -0x5a8(%rbp), %rsi
movq -0x5a0(%rbp), %rdx
movq %rsp, %rax
movq %rcx, (%rax)
xorl %eax, %eax
movl %eax, %ecx
leaq -0x598(%rbp), %rdi
leaq -0x5b9(%rbp), %r8
leaq -0x5ba(%rbp), %r9
callq 0xb3c0
jmp 0xa1bb
movq -0x738(%rbp), %rdi
leaq -0x560(%rbp), %rsi
leaq -0x598(%rbp), %rdx
callq 0xb420
jmp 0xa1d7
leaq -0xd0(%rbp), %rax
movq %rax, -0x748(%rbp)
movq %rax, -0x2d8(%rbp)
movl $0x9, -0x5c0(%rbp)
movl $0x1, -0x614(%rbp)
movl $0x3, -0x610(%rbp)
movl $0x9, -0x60c(%rbp)
leaq -0x614(%rbp), %rax
movq %rax, -0x608(%rbp)
movq $0x3, -0x600(%rbp)
leaq -0x617(%rbp), %rdi
movq %rdi, -0x740(%rbp)
callq 0xb3a0
movq -0x740(%rbp), %rcx
movq -0x608(%rbp), %rsi
movq -0x600(%rbp), %rdx
movq %rsp, %rax
movq %rcx, (%rax)
xorl %eax, %eax
movl %eax, %ecx
leaq -0x5f8(%rbp), %rdi
leaq -0x615(%rbp), %r8
leaq -0x616(%rbp), %r9
callq 0xb3c0
jmp 0xa27b
movq -0x748(%rbp), %rdi
leaq -0x5c0(%rbp), %rsi
leaq -0x5f8(%rbp), %rdx
callq 0xb420
jmp 0xa297
leaq -0x90(%rbp), %rax
movq %rax, -0x758(%rbp)
movq %rax, -0x2d8(%rbp)
movl $0xa, -0x61c(%rbp)
movl $0x1, -0x678(%rbp)
movl $0x2, -0x674(%rbp)
movl $0x5, -0x670(%rbp)
movl $0xa, -0x66c(%rbp)
leaq -0x678(%rbp), %rax
movq %rax, -0x668(%rbp)
movq $0x4, -0x660(%rbp)
leaq -0x67b(%rbp), %rdi
movq %rdi, -0x750(%rbp)
callq 0xb3a0
movq -0x750(%rbp), %rcx
movq -0x668(%rbp), %rsi
movq -0x660(%rbp), %rdx
movq %rsp, %rax
movq %rcx, (%rax)
xorl %eax, %eax
movl %eax, %ecx
leaq -0x658(%rbp), %rdi
leaq -0x679(%rbp), %r8
leaq -0x67a(%rbp), %r9
callq 0xb3c0
jmp 0xa345
movq -0x758(%rbp), %rdi
leaq -0x61c(%rbp), %rsi
leaq -0x658(%rbp), %rdx
callq 0xb420
jmp 0xa361
movb $0x0, -0x67c(%rbp)
leaq -0x2d0(%rbp), %rax
movq %rax, -0x50(%rbp)
movq $0xa, -0x48(%rbp)
leaq -0x67f(%rbp), %rdi
movq %rdi, -0x760(%rbp)
callq 0xb460
movq -0x760(%rbp), %rcx
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq %rsp, %rax
movq %rcx, (%rax)
xorl %eax, %eax
movl %eax, %ecx
leaq -0x40(%rbp), %rdi
leaq -0x67d(%rbp), %r8
leaq -0x67e(%rbp), %r9
callq 0xb480
jmp 0xa3c0
leaq -0x67f(%rbp), %rdi
callq 0xb4e0
leaq -0x2d0(%rbp), %rax
movq %rax, -0x770(%rbp)
addq $0x280, %rax            # imm = 0x280
movq %rax, -0x768(%rbp)
movq -0x768(%rbp), %rdi
addq $-0x40, %rdi
movq %rdi, -0x778(%rbp)
callq 0xb500
movq -0x770(%rbp), %rcx
movq -0x778(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x768(%rbp)
jne 0xa3e7
leaq -0x658(%rbp), %rdi
callq 0xb520
leaq -0x67b(%rbp), %rdi
callq 0xb540
leaq -0x5f8(%rbp), %rdi
callq 0xb520
leaq -0x617(%rbp), %rdi
callq 0xb540
leaq -0x598(%rbp), %rdi
callq 0xb520
leaq -0x5bb(%rbp), %rdi
callq 0xb540
leaq -0x540(%rbp), %rdi
callq 0xb520
leaq -0x55b(%rbp), %rdi
callq 0xb540
leaq -0x4e0(%rbp), %rdi
callq 0xb520
leaq -0x503(%rbp), %rdi
callq 0xb540
leaq -0x488(%rbp), %rdi
callq 0xb520
leaq -0x4a3(%rbp), %rdi
callq 0xb540
leaq -0x428(%rbp), %rdi
callq 0xb520
leaq -0x447(%rbp), %rdi
callq 0xb540
leaq -0x3d0(%rbp), %rdi
callq 0xb520
leaq -0x3eb(%rbp), %rdi
callq 0xb540
leaq -0x378(%rbp), %rdi
callq 0xb520
leaq -0x393(%rbp), %rdi
callq 0xb540
leaq -0x318(%rbp), %rdi
callq 0xb520
leaq -0x32f(%rbp), %rdi
callq 0xb540
leaq -0x6b8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0xb560
jmp 0xa51a
movq -0x6c8(%rbp), %rdi
leaq -0x6b8(%rbp), %rsi
callq 0xa980
jmp 0xa52f
leaq -0x6b8(%rbp), %rdi
callq 0xb590
leaq -0x40(%rbp), %rdi
callq 0xb590
addq $0x7b0, %rsp            # imm = 0x7B0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa866
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa85a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa84e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa842
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa836
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa82a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa81e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa812
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa806
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa7fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa7ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa7e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa7d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa7ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa7be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa7b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa7a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa79a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa78e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa782
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
leaq -0x67f(%rbp), %rdi
callq 0xb4e0
leaq -0x2d0(%rbp), %rax
movq %rax, -0x788(%rbp)
addq $0x280, %rax            # imm = 0x280
movq %rax, -0x780(%rbp)
movq -0x780(%rbp), %rdi
addq $-0x40, %rdi
movq %rdi, -0x790(%rbp)
callq 0xb500
movq -0x788(%rbp), %rcx
movq -0x790(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x780(%rbp)
jne 0xa74f
jmp 0xa782
leaq -0x658(%rbp), %rdi
callq 0xb520
leaq -0x67b(%rbp), %rdi
callq 0xb540
leaq -0x5f8(%rbp), %rdi
callq 0xb520
leaq -0x617(%rbp), %rdi
callq 0xb540
leaq -0x598(%rbp), %rdi
callq 0xb520
leaq -0x5bb(%rbp), %rdi
callq 0xb540
leaq -0x540(%rbp), %rdi
callq 0xb520
leaq -0x55b(%rbp), %rdi
callq 0xb540
leaq -0x4e0(%rbp), %rdi
callq 0xb520
leaq -0x503(%rbp), %rdi
callq 0xb540
leaq -0x488(%rbp), %rdi
callq 0xb520
leaq -0x4a3(%rbp), %rdi
callq 0xb540
leaq -0x428(%rbp), %rdi
callq 0xb520
leaq -0x447(%rbp), %rdi
callq 0xb540
leaq -0x3d0(%rbp), %rdi
callq 0xb520
leaq -0x3eb(%rbp), %rdi
callq 0xb540
leaq -0x378(%rbp), %rdi
callq 0xb520
leaq -0x393(%rbp), %rdi
callq 0xb540
leaq -0x318(%rbp), %rdi
callq 0xb520
leaq -0x32f(%rbp), %rdi
callq 0xb540
testb $0x1, -0x67c(%rbp)
jne 0xa87d
jmp 0xa8ca
movq -0x2d8(%rbp), %rax
leaq -0x2d0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x798(%rbp)
je 0xa8c8
movq -0x798(%rbp), %rdi
addq $-0x40, %rdi
movq %rdi, -0x7a0(%rbp)
callq 0xb500
movq -0x7a0(%rbp), %rax
leaq -0x2d0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x798(%rbp)
jne 0xa897
jmp 0xa8ca
jmp 0xa907
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
jmp 0xa8fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x338(%rbp)
movl %eax, -0x33c(%rbp)
leaq -0x6b8(%rbp), %rdi
callq 0xb590
leaq -0x40(%rbp), %rdi
callq 0xb590
movq -0x338(%rbp), %rdi
callq 0x46e0
nopw %cs:(%rax,%rax)