// File: Laakeri[P]maxpre/src/./SSR.cpp
// Function: maxPreprocessor::Preprocessor::trySSRHash(int)
int Preprocessor::trySSRHash(int var) {
	uint64_t bmP = ((uint64_t)1 << (uint64_t)(posLit(var)&63));
	uint64_t bmN = ((uint64_t)1 << (uint64_t)(negLit(var)&63));
	
	vector<int>& pc = pi.litClauses[posLit(var)];
	vector<int>& nc = pi.litClauses[negLit(var)];
	uint64_t k = 1;
	while ((1<<k) < max((int)pc.size(), (int)nc.size())) k++;
	
	vector<vector<pair<int, uint64_t> > > hp(1<<k);
	vector<vector<pair<int, uint64_t> > > hn(1<<k);
	
	for (int c : pc) {
		// do UP to avoid special case
		if (pi.clauses[c].lit.size() == 1){
			return setVariable(var, true);
		}
		uint64_t h = 0;
		for (int l : pi.clauses[c].lit) {
			if (litVariable(l) != var) h |= ((uint64_t)1 << (uint64_t)(l%k));
		}
		hp[h].push_back({c, pi.clauses[c].hash});
	}
	
	for (int c : nc) {
		// do UP to avoid special case
		if (pi.clauses[c].lit.size() == 1){
			return setVariable(var, false);
		}
		uint64_t h = 0;
		for (int l : pi.clauses[c].lit) {
			if (litVariable(l) != var) h |= ((uint64_t)1 << (uint64_t)(l%k));
		}
		hn[h].push_back({c, pi.clauses[c].hash});
	}
	
	int removed = 0;
	bool f  = true;
	while (f) {
		f = false;
		for (int c1 : pi.litClauses[posLit(var)]) {
			int64_t h = 0;
			for (int l : pi.clauses[c1].lit) {
				if (litVariable(l) != var) h |= ((int64_t)1 << (int64_t)(l%k));
			}
			for (int64_t sub = 0; (sub = (sub - h) & h);) {
				for (auto c2 : hn[sub]) {
					if ((((pi.clauses[c1].hash ^ bmP) | c2.S) != c2.S) && (((c2.S ^ bmN) | pi.clauses[c1].hash) != pi.clauses[c1].hash)) continue;
					if ((c2.S & bmN) == 0) continue;
					if (pi.isClauseRemoved(c2.F)) continue;
					if (!binary_search(pi.clauses[c2.F].lit.begin(), pi.clauses[c2.F].lit.end(), negLit(var))) continue;
					if (SSRC(c1, c2.F, var)) {
						f = true;
						removed++;
						break;
					}
				}
				if (f) break;
			}
			if (f) break;
		}
	}
	f = true;
	while (f) {
		f = false;
		for (int c2 : pi.litClauses[negLit(var)]) {
			int64_t h = 0;
			for (int l : pi.clauses[c2].lit) {
				if (litVariable(l) != var) h |= ((int64_t)1 << (int64_t)(l%k));
			}
			for (int64_t sub = 0; (sub = (sub - h) & h);) {
				for (auto c1 : hp[sub]) {
					if ((((c1.S ^ bmP) | pi.clauses[c2].hash) != pi.clauses[c2].hash) && (((pi.clauses[c2].hash ^ bmN) | c1.S) != c1.S)) continue;
					if ((c1.S & bmP) == 0) continue;
					if (pi.isClauseRemoved(c1.F)) continue;
					if (!binary_search(pi.clauses[c1.F].lit.begin(), pi.clauses[c1.F].lit.end(), posLit(var))) continue;
					if (SSRC(c1.F, c2, var)) {
						f = true;
						removed++;
						break;
					}
				}
				if (f) break;
			}
			if (f) break;
		}
	}
	return removed;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x340, %rsp            # imm = 0x340
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x280(%rbp)
movl -0x14(%rbp), %edi
callq 0x3c5d0
andl $0x3f, %eax
movslq %eax, %rcx
movl $0x1, %eax
shlq %cl, %rax
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %edi
callq 0x3c5e0
movl %eax, %ecx
movq -0x280(%rbp), %rax
andl $0x3f, %ecx
movslq %ecx, %rcx
movl $0x1, %edx
shlq %cl, %rdx
movq %rdx, %rcx
movq %rcx, -0x28(%rbp)
addq $0x18, %rax
movq %rax, -0x288(%rbp)
movl -0x14(%rbp), %edi
callq 0x3c5d0
movq -0x288(%rbp), %rdi
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rcx
movq -0x280(%rbp), %rax
movq %rcx, -0x30(%rbp)
addq $0x18, %rax
movq %rax, -0x278(%rbp)
movl -0x14(%rbp), %edi
callq 0x3c5e0
movq -0x278(%rbp), %rdi
movslq %eax, %rsi
callq 0xaab0
movq %rax, -0x38(%rbp)
movq $0x1, -0x40(%rbp)
movq -0x40(%rbp), %rax
movl %eax, %ecx
movl $0x1, %eax
shll %cl, %eax
movl %eax, -0x28c(%rbp)
movq -0x30(%rbp), %rdi
callq 0xf940
movl %eax, -0x44(%rbp)
movq -0x38(%rbp), %rdi
callq 0xf940
movl %eax, -0x48(%rbp)
leaq -0x44(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3e430
movq %rax, %rcx
movl -0x28c(%rbp), %eax
cmpl (%rcx), %eax
jge 0x1c74e
movq -0x40(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x40(%rbp)
jmp 0x1c6fb
movb -0x40(%rbp), %cl
movl $0x1, %eax
shll %cl, %eax
cltq
movq %rax, -0x2a0(%rbp)
leaq -0x61(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0x3cc90
movq -0x2a0(%rbp), %rsi
movq -0x298(%rbp), %rdx
leaq -0x60(%rbp), %rdi
callq 0x3ccb0
jmp 0x1c78a
leaq -0x61(%rbp), %rdi
callq 0x3cd20
movb -0x40(%rbp), %cl
movl $0x1, %eax
shll %cl, %eax
cltq
movq %rax, -0x2b0(%rbp)
leaq -0x91(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
callq 0x3cc90
movq -0x2b0(%rbp), %rsi
movq -0x2a8(%rbp), %rdx
leaq -0x90(%rbp), %rdi
callq 0x3ccb0
jmp 0x1c7d5
leaq -0x91(%rbp), %rdi
callq 0x3cd20
movq -0x30(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rdi
callq 0xa800
movq %rax, -0xa8(%rbp)
movq -0xa0(%rbp), %rdi
callq 0xa830
movq %rax, -0xb0(%rbp)
leaq -0xa8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x1c82e
jmp 0x1ca2e
leaq -0xa8(%rbp), %rdi
callq 0xa8a0
movq -0x280(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0xb4(%rbp)
movslq -0xb4(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xf940
cmpq $0x1, %rax
jne 0x1c8ef
movq -0x280(%rbp), %rdi
movl -0x14(%rbp), %esi
movl $0x1, %edx
callq 0x10a60
movl %eax, -0x2b4(%rbp)
jmp 0x1c883
movl -0x2b4(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0xb8(%rbp)
jmp 0x1d473
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x61(%rbp), %rdi
callq 0x3cd20
jmp 0x1d49d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x91(%rbp), %rdi
callq 0x3cd20
jmp 0x1d494
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x3cea0
jmp 0x1d494
movq -0x280(%rbp), %rdi
movq $0x0, -0xc0(%rbp)
movslq -0xb4(%rbp), %rsi
callq 0x3c600
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rdi
callq 0xa800
movq %rax, -0xd0(%rbp)
movq -0xc8(%rbp), %rdi
callq 0xa830
movq %rax, -0xd8(%rbp)
leaq -0xd0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x1c953
jmp 0x1c9c0
leaq -0xd0(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0xdc(%rbp)
movl -0xdc(%rbp), %edi
callq 0x3c880
movl %eax, -0x2b8(%rbp)
jmp 0x1c97a
movl -0x2b8(%rbp), %eax
cmpl -0x14(%rbp), %eax
je 0x1c9ad
movslq -0xdc(%rbp), %rax
xorl %ecx, %ecx
movl %ecx, %edx
divq -0x40(%rbp)
movq %rdx, %rcx
movl $0x1, %eax
shlq %cl, %rax
orq -0xc0(%rbp), %rax
movq %rax, -0xc0(%rbp)
jmp 0x1c9af
leaq -0xd0(%rbp), %rdi
callq 0xa930
jmp 0x1c93a
movq -0xc0(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0x3cd40
movq -0x280(%rbp), %rdi
movq %rax, -0x2c0(%rbp)
movslq -0xb4(%rbp), %rsi
callq 0x3c600
movq %rax, %rdx
addq $0x20, %rdx
leaq -0xf0(%rbp), %rdi
leaq -0xb4(%rbp), %rsi
callq 0x3cd90
jmp 0x1ca06
movq -0x2c0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x3cd60
jmp 0x1ca1b
jmp 0x1ca1d
leaq -0xa8(%rbp), %rdi
callq 0xa930
jmp 0x1c812
movq -0x38(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rdi
callq 0xa800
movq %rax, -0x100(%rbp)
movq -0xf8(%rbp), %rdi
callq 0xa830
movq %rax, -0x108(%rbp)
leaq -0x100(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x1ca7b
jmp 0x1cc23
leaq -0x100(%rbp), %rdi
callq 0xa8a0
movq -0x280(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x10c(%rbp)
movslq -0x10c(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xf940
cmpq $0x1, %rax
jne 0x1cae1
movq -0x280(%rbp), %rdi
movl -0x14(%rbp), %esi
xorl %edx, %edx
callq 0x10a60
movl %eax, -0x2c4(%rbp)
jmp 0x1cac9
movl -0x2c4(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0xb8(%rbp)
jmp 0x1d473
movq -0x280(%rbp), %rdi
movq $0x0, -0x118(%rbp)
movslq -0x10c(%rbp), %rsi
callq 0x3c600
movq %rax, -0x120(%rbp)
movq -0x120(%rbp), %rdi
callq 0xa800
movq %rax, -0x128(%rbp)
movq -0x120(%rbp), %rdi
callq 0xa830
movq %rax, -0x130(%rbp)
leaq -0x128(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x1cb45
jmp 0x1cbb2
leaq -0x128(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x134(%rbp)
movl -0x134(%rbp), %edi
callq 0x3c880
movl %eax, -0x2c8(%rbp)
jmp 0x1cb6c
movl -0x2c8(%rbp), %eax
cmpl -0x14(%rbp), %eax
je 0x1cb9f
movslq -0x134(%rbp), %rax
xorl %ecx, %ecx
movl %ecx, %edx
divq -0x40(%rbp)
movq %rdx, %rcx
movl $0x1, %eax
shlq %cl, %rax
orq -0x118(%rbp), %rax
movq %rax, -0x118(%rbp)
jmp 0x1cba1
leaq -0x128(%rbp), %rdi
callq 0xa930
jmp 0x1cb2c
movq -0x118(%rbp), %rsi
leaq -0x90(%rbp), %rdi
callq 0x3cd40
movq -0x280(%rbp), %rdi
movq %rax, -0x2d0(%rbp)
movslq -0x10c(%rbp), %rsi
callq 0x3c600
movq %rax, %rdx
addq $0x20, %rdx
leaq -0x148(%rbp), %rdi
leaq -0x10c(%rbp), %rsi
callq 0x3cd90
jmp 0x1cbfb
movq -0x2d0(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x3cd60
jmp 0x1cc10
jmp 0x1cc12
leaq -0x100(%rbp), %rdi
callq 0xa930
jmp 0x1ca5f
movl $0x0, -0x14c(%rbp)
movb $0x1, -0x14d(%rbp)
testb $0x1, -0x14d(%rbp)
je 0x1d048
movq -0x280(%rbp), %rax
movb $0x0, -0x14d(%rbp)
addq $0x18, %rax
movq %rax, -0x2e0(%rbp)
movl -0x14(%rbp), %edi
callq 0x3c5d0
movl %eax, -0x2d4(%rbp)
jmp 0x1cc6a
movq -0x2e0(%rbp), %rdi
movl -0x2d4(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, -0x158(%rbp)
movq -0x158(%rbp), %rdi
callq 0xa800
movq %rax, -0x160(%rbp)
movq -0x158(%rbp), %rdi
callq 0xa830
movq %rax, -0x168(%rbp)
leaq -0x160(%rbp), %rdi
leaq -0x168(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x1ccc8
jmp 0x1d043
leaq -0x160(%rbp), %rdi
callq 0xa8a0
movq -0x280(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x16c(%rbp)
movq $0x0, -0x178(%rbp)
movslq -0x16c(%rbp), %rsi
callq 0x3c600
movq %rax, -0x180(%rbp)
movq -0x180(%rbp), %rdi
callq 0xa800
movq %rax, -0x188(%rbp)
movq -0x180(%rbp), %rdi
callq 0xa830
movq %rax, -0x190(%rbp)
leaq -0x188(%rbp), %rdi
leaq -0x190(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x1cd40
jmp 0x1cdad
leaq -0x188(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x194(%rbp)
movl -0x194(%rbp), %edi
callq 0x3c880
movl %eax, -0x2e4(%rbp)
jmp 0x1cd67
movl -0x2e4(%rbp), %eax
cmpl -0x14(%rbp), %eax
je 0x1cd9a
movslq -0x194(%rbp), %rax
xorl %ecx, %ecx
movl %ecx, %edx
divq -0x40(%rbp)
movq %rdx, %rcx
movl $0x1, %eax
shlq %cl, %rax
orq -0x178(%rbp), %rax
movq %rax, -0x178(%rbp)
jmp 0x1cd9c
leaq -0x188(%rbp), %rdi
callq 0xa930
jmp 0x1cd27
movq $0x0, -0x1a0(%rbp)
movq -0x1a0(%rbp), %rax
subq -0x178(%rbp), %rax
andq -0x178(%rbp), %rax
movq %rax, -0x1a0(%rbp)
cmpq $0x0, %rax
je 0x1d025
movq -0x1a0(%rbp), %rsi
leaq -0x90(%rbp), %rdi
callq 0x3cd40
movq %rax, -0x1a8(%rbp)
movq -0x1a8(%rbp), %rdi
callq 0x3cdc0
movq %rax, -0x1b0(%rbp)
movq -0x1a8(%rbp), %rdi
callq 0x3cdf0
movq %rax, -0x1b8(%rbp)
leaq -0x1b0(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0x3ce20
testb $0x1, %al
jne 0x1ce3a
jmp 0x1d015
leaq -0x1b0(%rbp), %rdi
callq 0x3ce60
movq -0x280(%rbp), %rdi
movq (%rax), %rcx
movq %rcx, -0x1c8(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x1c0(%rbp)
movslq -0x16c(%rbp), %rsi
callq 0x3c600
movq 0x20(%rax), %rax
xorq -0x20(%rbp), %rax
orq -0x1c0(%rbp), %rax
cmpq -0x1c0(%rbp), %rax
je 0x1cee8
movq -0x280(%rbp), %rdi
movq -0x1c0(%rbp), %rax
xorq -0x28(%rbp), %rax
movq %rax, -0x2f8(%rbp)
movslq -0x16c(%rbp), %rsi
callq 0x3c600
movq -0x280(%rbp), %rdi
movq %rax, %rcx
movq -0x2f8(%rbp), %rax
orq 0x20(%rcx), %rax
movq %rax, -0x2f0(%rbp)
movslq -0x16c(%rbp), %rsi
callq 0x3c600
movq %rax, %rcx
movq -0x2f0(%rbp), %rax
cmpq 0x20(%rcx), %rax
je 0x1cee8
jmp 0x1d004
movq -0x1c0(%rbp), %rax
andq -0x28(%rbp), %rax
cmpq $0x0, %rax
jne 0x1cefe
jmp 0x1d004
movq -0x280(%rbp), %rdi
movl -0x1c8(%rbp), %esi
callq 0x5eb70
movb %al, -0x2f9(%rbp)
jmp 0x1cf18
movb -0x2f9(%rbp), %al
testb $0x1, %al
jne 0x1cf24
jmp 0x1cf29
jmp 0x1d004
movq -0x280(%rbp), %rdi
movslq -0x1c8(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xa800
movq -0x280(%rbp), %rdi
movq %rax, -0x1d0(%rbp)
movslq -0x1c8(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xa830
movq %rax, -0x1d8(%rbp)
movl -0x14(%rbp), %edi
callq 0x3c5e0
movl %eax, -0x300(%rbp)
jmp 0x1cf7d
movl -0x300(%rbp), %eax
movl %eax, -0x1dc(%rbp)
movq -0x1d0(%rbp), %rdi
movq -0x1d8(%rbp), %rsi
leaq -0x1dc(%rbp), %rdx
callq 0x3e170
movb %al, -0x301(%rbp)
jmp 0x1cfab
movb -0x301(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1cfb9
jmp 0x1cfbb
jmp 0x1d004
movq -0x280(%rbp), %rdi
movl -0x16c(%rbp), %esi
movl -0x1c8(%rbp), %edx
movl -0x14(%rbp), %ecx
callq 0x1bd40
movb %al, -0x302(%rbp)
jmp 0x1cfde
movb -0x302(%rbp), %al
testb $0x1, %al
jne 0x1cfea
jmp 0x1d002
movb $0x1, -0x14d(%rbp)
movl -0x14c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14c(%rbp)
jmp 0x1d015
jmp 0x1d004
leaq -0x1b0(%rbp), %rdi
callq 0x3ce80
jmp 0x1ce1e
testb $0x1, -0x14d(%rbp)
je 0x1d020
jmp 0x1d025
jmp 0x1cdb8
testb $0x1, -0x14d(%rbp)
je 0x1d030
jmp 0x1d043
jmp 0x1d032
leaq -0x160(%rbp), %rdi
callq 0xa930
jmp 0x1ccac
jmp 0x1cc34
movb $0x1, -0x14d(%rbp)
testb $0x1, -0x14d(%rbp)
je 0x1d460
movq -0x280(%rbp), %rax
movb $0x0, -0x14d(%rbp)
addq $0x18, %rax
movq %rax, -0x310(%rbp)
movl -0x14(%rbp), %edi
callq 0x3c5e0
movl %eax, -0x308(%rbp)
jmp 0x1d085
movq -0x310(%rbp), %rdi
movl -0x308(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, -0x1e8(%rbp)
movq -0x1e8(%rbp), %rdi
callq 0xa800
movq %rax, -0x1f0(%rbp)
movq -0x1e8(%rbp), %rdi
callq 0xa830
movq %rax, -0x1f8(%rbp)
leaq -0x1f0(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x1d0e3
jmp 0x1d45b
leaq -0x1f0(%rbp), %rdi
callq 0xa8a0
movq -0x280(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x1fc(%rbp)
movq $0x0, -0x208(%rbp)
movslq -0x1fc(%rbp), %rsi
callq 0x3c600
movq %rax, -0x210(%rbp)
movq -0x210(%rbp), %rdi
callq 0xa800
movq %rax, -0x218(%rbp)
movq -0x210(%rbp), %rdi
callq 0xa830
movq %rax, -0x220(%rbp)
leaq -0x218(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x1d15b
jmp 0x1d1c8
leaq -0x218(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x224(%rbp)
movl -0x224(%rbp), %edi
callq 0x3c880
movl %eax, -0x314(%rbp)
jmp 0x1d182
movl -0x314(%rbp), %eax
cmpl -0x14(%rbp), %eax
je 0x1d1b5
movslq -0x224(%rbp), %rax
xorl %ecx, %ecx
movl %ecx, %edx
divq -0x40(%rbp)
movq %rdx, %rcx
movl $0x1, %eax
shlq %cl, %rax
orq -0x208(%rbp), %rax
movq %rax, -0x208(%rbp)
jmp 0x1d1b7
leaq -0x218(%rbp), %rdi
callq 0xa930
jmp 0x1d142
movq $0x0, -0x230(%rbp)
movq -0x230(%rbp), %rax
subq -0x208(%rbp), %rax
andq -0x208(%rbp), %rax
movq %rax, -0x230(%rbp)
cmpq $0x0, %rax
je 0x1d43d
movq -0x230(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0x3cd40
movq %rax, -0x238(%rbp)
movq -0x238(%rbp), %rdi
callq 0x3cdc0
movq %rax, -0x240(%rbp)
movq -0x238(%rbp), %rdi
callq 0x3cdf0
movq %rax, -0x248(%rbp)
leaq -0x240(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x3ce20
testb $0x1, %al
jne 0x1d252
jmp 0x1d42d
leaq -0x240(%rbp), %rdi
callq 0x3ce60
movq -0x280(%rbp), %rdi
movq (%rax), %rcx
movq %rcx, -0x258(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x250(%rbp)
movq -0x250(%rbp), %rax
xorq -0x20(%rbp), %rax
movq %rax, -0x328(%rbp)
movslq -0x1fc(%rbp), %rsi
callq 0x3c600
movq -0x280(%rbp), %rdi
movq %rax, %rcx
movq -0x328(%rbp), %rax
orq 0x20(%rcx), %rax
movq %rax, -0x320(%rbp)
movslq -0x1fc(%rbp), %rsi
callq 0x3c600
movq %rax, %rcx
movq -0x320(%rbp), %rax
cmpq 0x20(%rcx), %rax
je 0x1d300
movq -0x280(%rbp), %rdi
movslq -0x1fc(%rbp), %rsi
callq 0x3c600
movq 0x20(%rax), %rax
xorq -0x28(%rbp), %rax
orq -0x250(%rbp), %rax
cmpq -0x250(%rbp), %rax
je 0x1d300
jmp 0x1d41c
movq -0x250(%rbp), %rax
andq -0x20(%rbp), %rax
cmpq $0x0, %rax
jne 0x1d316
jmp 0x1d41c
movq -0x280(%rbp), %rdi
movl -0x258(%rbp), %esi
callq 0x5eb70
movb %al, -0x329(%rbp)
jmp 0x1d330
movb -0x329(%rbp), %al
testb $0x1, %al
jne 0x1d33c
jmp 0x1d341
jmp 0x1d41c
movq -0x280(%rbp), %rdi
movslq -0x258(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xa800
movq -0x280(%rbp), %rdi
movq %rax, -0x260(%rbp)
movslq -0x258(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xa830
movq %rax, -0x268(%rbp)
movl -0x14(%rbp), %edi
callq 0x3c5d0
movl %eax, -0x330(%rbp)
jmp 0x1d395
movl -0x330(%rbp), %eax
movl %eax, -0x26c(%rbp)
movq -0x260(%rbp), %rdi
movq -0x268(%rbp), %rsi
leaq -0x26c(%rbp), %rdx
callq 0x3e170
movb %al, -0x331(%rbp)
jmp 0x1d3c3
movb -0x331(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x1d3d1
jmp 0x1d3d3
jmp 0x1d41c
movq -0x280(%rbp), %rdi
movl -0x258(%rbp), %esi
movl -0x1fc(%rbp), %edx
movl -0x14(%rbp), %ecx
callq 0x1bd40
movb %al, -0x332(%rbp)
jmp 0x1d3f6
movb -0x332(%rbp), %al
testb $0x1, %al
jne 0x1d402
jmp 0x1d41a
movb $0x1, -0x14d(%rbp)
movl -0x14c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14c(%rbp)
jmp 0x1d42d
jmp 0x1d41c
leaq -0x240(%rbp), %rdi
callq 0x3ce80
jmp 0x1d236
testb $0x1, -0x14d(%rbp)
je 0x1d438
jmp 0x1d43d
jmp 0x1d1d3
testb $0x1, -0x14d(%rbp)
je 0x1d448
jmp 0x1d45b
jmp 0x1d44a
leaq -0x1f0(%rbp), %rdi
callq 0xa930
jmp 0x1d0c7
jmp 0x1d04f
movl -0x14c(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0xb8(%rbp)
leaq -0x90(%rbp), %rdi
callq 0x3cea0
leaq -0x60(%rbp), %rdi
callq 0x3cea0
movl -0x4(%rbp), %eax
addq $0x340, %rsp            # imm = 0x340
popq %rbp
retq
leaq -0x60(%rbp), %rdi
callq 0x3cea0
movq -0x70(%rbp), %rdi
callq 0x4610
nopw %cs:(%rax,%rax)