// File: Laakeri[P]maxpre/src/./BVA.cpp
// Function: maxPreprocessor::Preprocessor::tryBVA(int, std::unordered_map<unsigned long, int, std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<std::pair<unsigned long const, int>>>&)
int Preprocessor::tryBVA(int lit, unordered_map<uint64_t, int>& hashes) {
	const bool noLabels = false;
	if (noLabels && pi.isLabel[litVariable(lit)]) return 0;
	removeDuplicateClauses();
	vector<int> mLit = {lit};
	vector<int> mCls = pi.litClauses[lit];
	int redu = 0;
	int taut = 0;
	while (1) {
		vector<pair<int, int> > P;
		for (int c : mCls) {
			if (pi.clauses[c].lit.size() == 1) continue;
			int lMin = pi.clauses[c].lit[0];
			if (lMin == lit) lMin = pi.clauses[c].lit[1];
			if (hashes.size() > 0) {
				uint64_t hash = 0;
				for (int l : pi.clauses[c].lit) {
					if (l != lit) {
						hash *= polyHashMul;
						hash += (uint64_t)l;
					}
				}
				int asd = hashes[hash];
				assert(asd > 0);
				if (asd == 1) continue;
			}
			for (unsigned i = 1; i < pi.clauses[c].lit.size(); i++) {
				if (pi.litClauses[pi.clauses[c].lit[i]].size() < pi.litClauses[lMin].size() && pi.clauses[c].lit[i] != lit) {
					lMin = pi.clauses[c].lit[i];
				}
			}
			for (int d : pi.litClauses[lMin]) {
				int hd = canBVA(c, d, lit);
				if (hd != -1) {
					assert(hd != lit);
					if (!(pi.isLabel[litVariable(hd)] && noLabels)) P.push_back({hd, c});
				}
			}
		}
		if (P.size() == 0) break;
		sort(P.begin(), P.end());
		P.erase(unique(P.begin(), P.end()), P.end());
		for (auto p : P) {
			if (p.F == litNegation(lit)) {
				int rClause = -1;
				for (int d : pi.litClauses[p.F]) {
					int hd = canBVA(p.S, d, lit);
					if (hd == p.F) {
						rClause = d;
						break;
					}
				}
				assert(rClause != -1);
				pi.removeClause(rClause);
				pi.removeLiteralFromClause(lit, p.S);
				if (hashes.size() > 0) addBVAHash(pi.clauses[p.S].lit, hashes);
				return 1;
			}
		}
		sort(mLit.begin(), mLit.end());
		int fq = 0;
		int lMax = -1;
		int fMax = 0;
		unsigned i2 = 0;
		for (unsigned i = 0; i < P.size(); i++) {
			if (i > 0 && P[i].F != P[i - 1].F) {
				fq = 0;
			}
			fq++;
			while (i2 < mLit.size() && mLit[i2] < P[i].F) {
				i2++;
			}
			if (i2 == mLit.size() || mLit[i2] != P[i].F) {
				if (fq > fMax) {
					fMax = fq;
					lMax = P[i].F;
				}
			}
		}
		if (lMax == -1) break;
		int nRedu = ((int)mLit.size() + 1) * fMax - ((int)mLit.size() + 1) - fMax - taut;
		if (nRedu <= redu) {
			// Try allowing tautologies in resolvents to find more
			fq = 0;
			int tMax = 0;
			fMax = -1;
			lMax = -1;
			int ft = 0;
			i2 = 0;
			for (unsigned i = 0; i < P.size(); i++) {
				if (i == 0 || P[i].F != P[i - 1].F) {
					fq = 0;
					ft = 0;
					for (int c : mCls) {
						if (binary_search(pi.clauses[c].lit.begin(), pi.clauses[c].lit.end(), litNegation(P[i].F))) {
							fq++;
							ft++;
						}
					}
				}
				fq++;
				while (i2 < mLit.size() && mLit[i2] < P[i].F) {
					i2++;
				}
				if (i2 == mLit.size() || mLit[i2] != P[i].F) {
					int nR = ((int)mLit.size() + 1) * fq - ((int)mLit.size() + 1) - fq - taut - ft;
					if (nR > nRedu) {
						nRedu = nR;
						lMax = P[i].F;
						fMax = fq;
						tMax = ft;
					}
				}
			}
			if (nRedu > redu) {
				redu = nRedu;
				mLit.push_back(lMax);
				vector<int> tmCls;
				for (int c : mCls) {
					if (binary_search(pi.clauses[c].lit.begin(), pi.clauses[c].lit.end(), litNegation(lMax))) {
						tmCls.push_back(c);
					}
				}
				mCls = tmCls;
				taut += tMax;
				for (unsigned i = 0; i < P.size(); i++) {
					if (P[i].F == lMax) {
						mCls.push_back(P[i].S);
					}
				}
				assert((int)mCls.size() == fMax);
			}
			else {
				break;
			}
		}
		else {
			redu = nRedu;
			mLit.push_back(lMax);
			mCls.clear();
			for (unsigned i = 0; i < P.size(); i++) {
				if (P[i].F == lMax) {
					mCls.push_back(P[i].S);
				}
			}
			assert((int)mCls.size() == fMax);
		}
	}
	if (redu == 0) return 0;
	assert(redu == (int)mLit.size() * (int)mCls.size() - (int)mLit.size() - (int)mCls.size() - taut);
	sort(mLit.begin(), mLit.end());
	vector<int> rmClauses;
	for (int c : mCls) {
		rmClauses.push_back(c);
		assert(pi.clauses[c].lit.size() > 1);
		int lMin = pi.clauses[c].lit[0];
		if (lMin == lit) lMin = pi.clauses[c].lit[1];
		for (unsigned i = 1; i < pi.clauses[c].lit.size(); i++) {
			if (pi.litClauses[pi.clauses[c].lit[i]].size() < pi.litClauses[lMin].size() && pi.clauses[c].lit[i] != lit) {
				lMin = pi.clauses[c].lit[i];
			}
		}
		for (int d : pi.litClauses[lMin]) {
			int hd = canBVA(c, d, lit);
			if (hd != -1 && binary_search(mLit.begin(), mLit.end(), hd)) {
				rmClauses.push_back(d);
			}
		}
	}
	sort(rmClauses.begin(), rmClauses.end());
	rmClauses.erase(unique(rmClauses.begin(), rmClauses.end()), rmClauses.end());
	assert((int)rmClauses.size() >= (int)mLit.size() * (int)mCls.size() - taut);
	assert((int)rmClauses.size() <= (int)mLit.size() * (int)mCls.size());
	int nVar = pi.addVar();
	int realRedu = 0;
	for (int l : mLit) {
		vector<int> newClause = {l, posLit(nVar)};
		pi.addClause(newClause);
		realRedu--;
		if (hashes.size() > 0) addBVAHash(newClause, hashes);
	}
	for (int c : mCls) {
		vector<int> newClause;
		for (int l : pi.clauses[c].lit) {
			if (!binary_search(mLit.begin(), mLit.end(), l)) {
				newClause.push_back(l);
			}
		}
		newClause.push_back(negLit(nVar));
		pi.addClause(newClause);
		realRedu--;
		if (hashes.size() > 0) addBVAHash(newClause, hashes);
	}
	for (int c : rmClauses) {
		pi.removeClause(c);
		realRedu++;
	}
	assert(realRedu >= redu);
	assert(realRedu <= redu + taut);
	rLog.removeClause(realRedu);
	rLog.removeVariable(-1);
	return realRedu;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x5e0, %rsp            # imm = 0x5E0
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x440(%rbp)
movb $0x0, -0x21(%rbp)
callq 0x13190
movl -0x14(%rbp), %eax
movl %eax, -0x54(%rbp)
leaq -0x54(%rbp), %rax
movq %rax, -0x50(%rbp)
movq $0x1, -0x48(%rbp)
leaq -0x55(%rbp), %rdi
movq %rdi, -0x438(%rbp)
callq 0xa710
movq -0x438(%rbp), %rcx
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rdx
leaq -0x40(%rbp), %rdi
callq 0x3c9b0
jmp 0x278ca
leaq -0x55(%rbp), %rdi
callq 0xa7a0
movq -0x440(%rbp), %rdi
addq $0x18, %rdi
movslq -0x14(%rbp), %rsi
callq 0xaab0
movq %rax, %rsi
leaq -0x80(%rbp), %rdi
callq 0x3edb0
jmp 0x278f5
movl $0x0, -0x84(%rbp)
movl $0x0, -0x88(%rbp)
jmp 0x2790b
leaq -0xa0(%rbp), %rdi
callq 0x3e9a0
leaq -0x80(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rdi
callq 0xa800
movq %rax, -0xb0(%rbp)
movq -0xa8(%rbp), %rdi
callq 0xa830
movq %rax, -0xb8(%rbp)
leaq -0xb0(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x27964
jmp 0x27e0b
leaq -0xb0(%rbp), %rdi
callq 0xa8a0
movq -0x440(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0xbc(%rbp)
movslq -0xbc(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xf940
cmpq $0x1, %rax
jne 0x279c9
jmp 0x27dfa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x55(%rbp), %rdi
callq 0xa7a0
jmp 0x29749
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x29740
movq -0x440(%rbp), %rdi
movslq -0xbc(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa7c0
movl (%rax), %eax
movl %eax, -0xc0(%rbp)
movl -0xc0(%rbp), %eax
cmpl -0x14(%rbp), %eax
jne 0x27a23
movq -0x440(%rbp), %rdi
movslq -0xbc(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
movl $0x1, %esi
callq 0xa7c0
movl (%rax), %eax
movl %eax, -0xc0(%rbp)
movq -0x20(%rbp), %rdi
callq 0x3f290
cmpq $0x0, %rax
jbe 0x27b6e
movq -0x440(%rbp), %rdi
movq $0x0, -0xc8(%rbp)
movslq -0xbc(%rbp), %rsi
callq 0x3c600
movq %rax, -0xd0(%rbp)
movq -0xd0(%rbp), %rdi
callq 0xa800
movq %rax, -0xd8(%rbp)
movq -0xd0(%rbp), %rdi
callq 0xa830
movq %rax, -0xe0(%rbp)
leaq -0xd8(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x27a9a
jmp 0x27afb
leaq -0xd8(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0xe4(%rbp)
movl -0xe4(%rbp), %eax
cmpl -0x14(%rbp), %eax
je 0x27aeb
movq -0x440(%rbp), %rax
movq 0x328(%rax), %rax
imulq -0xc8(%rbp), %rax
movq %rax, -0xc8(%rbp)
movslq -0xe4(%rbp), %rax
addq -0xc8(%rbp), %rax
movq %rax, -0xc8(%rbp)
jmp 0x27aed
leaq -0xd8(%rbp), %rdi
callq 0xa930
jmp 0x27a81
movq -0x20(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x3f260
movq %rax, -0x448(%rbp)
jmp 0x27b14
movq -0x448(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xe8(%rbp)
cmpl $0x0, -0xe8(%rbp)
jle 0x27b2e
jmp 0x27b5e
leaq 0x5f12c(%rip), %rdi     # 0x86c61
leaq 0x5f12d(%rip), %rsi     # 0x86c69
movl $0x4f, %edx
leaq 0x5f12b(%rip), %rcx     # 0x86c73
callq 0x4260
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x28b51
cmpl $0x1, -0xe8(%rbp)
jne 0x27b6c
jmp 0x27dfa
jmp 0x27b6e
movl $0x1, -0xec(%rbp)
movq -0x440(%rbp), %rdi
movl -0xec(%rbp), %eax
movq %rax, -0x450(%rbp)
movslq -0xbc(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xf940
movq %rax, %rcx
movq -0x450(%rbp), %rax
cmpq %rcx, %rax
jae 0x27c9b
movq -0x440(%rbp), %rdi
movq %rdi, %rax
addq $0x18, %rax
movq %rax, -0x460(%rbp)
movslq -0xbc(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
movl -0xec(%rbp), %eax
movl %eax, %esi
callq 0xa7c0
movq -0x460(%rbp), %rdi
movslq (%rax), %rsi
callq 0xaab0
movq %rax, %rdi
callq 0xf940
movq -0x440(%rbp), %rdi
movq %rax, -0x458(%rbp)
addq $0x18, %rdi
movslq -0xc0(%rbp), %rsi
callq 0xaab0
movq %rax, %rdi
callq 0xf940
movq %rax, %rcx
movq -0x458(%rbp), %rax
cmpq %rcx, %rax
jae 0x27c85
movq -0x440(%rbp), %rdi
movslq -0xbc(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
movl -0xec(%rbp), %eax
movl %eax, %esi
callq 0xa7c0
movl (%rax), %eax
cmpl -0x14(%rbp), %eax
je 0x27c85
movq -0x440(%rbp), %rdi
movslq -0xbc(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
movl -0xec(%rbp), %eax
movl %eax, %esi
callq 0xa7c0
movl (%rax), %eax
movl %eax, -0xc0(%rbp)
jmp 0x27c87
movl -0xec(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xec(%rbp)
jmp 0x27b78
movq -0x440(%rbp), %rdi
addq $0x18, %rdi
movslq -0xc0(%rbp), %rsi
callq 0xaab0
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 0x27cfb
jmp 0x27df8
leaq -0x100(%rbp), %rdi
callq 0xa8a0
movq -0x440(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x10c(%rbp)
movl -0xbc(%rbp), %esi
movl -0x10c(%rbp), %edx
movl -0x14(%rbp), %ecx
callq 0x274e0
movl %eax, -0x110(%rbp)
cmpl $-0x1, -0x110(%rbp)
je 0x27de5
movl -0x110(%rbp), %eax
cmpl -0x14(%rbp), %eax
je 0x27d4a
jmp 0x27d69
leaq 0x5ef71(%rip), %rdi     # 0x86cc2
leaq 0x5ef11(%rip), %rsi     # 0x86c69
movl $0x5a, %edx
leaq 0x5ef0f(%rip), %rcx     # 0x86c73
callq 0x4260
movq -0x440(%rbp), %rax
addq $0x48, %rax
movq %rax, -0x470(%rbp)
movl -0x110(%rbp), %edi
callq 0x3c880
movl %eax, -0x464(%rbp)
jmp 0x27d8e
movq -0x470(%rbp), %rdi
movl -0x464(%rbp), %eax
movslq %eax, %rsi
callq 0xa7c0
cmpl $0x0, (%rax)
je 0x27db0
xorl %eax, %eax
testb $0x1, %al
jne 0x27de3
jmp 0x27db0
leaq -0x118(%rbp), %rdi
leaq -0x110(%rbp), %rsi
leaq -0xbc(%rbp), %rdx
callq 0x3d7c0
jmp 0x27dcc
leaq -0xa0(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x3eac0
jmp 0x27de1
jmp 0x27de3
jmp 0x27de5
jmp 0x27de7
leaq -0x100(%rbp), %rdi
callq 0xa930
jmp 0x27cdf
jmp 0x27dfa
leaq -0xb0(%rbp), %rdi
callq 0xa930
jmp 0x27948
leaq -0xa0(%rbp), %rdi
callq 0x3efb0
cmpq $0x0, %rax
jne 0x27e2c
movl $0x3, -0x11c(%rbp)
jmp 0x28b1e
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x478(%rbp)
callq 0x3ebc0
movq -0x478(%rbp), %rdi
movq %rax, -0x128(%rbp)
callq 0x3ec30
movq %rax, -0x130(%rbp)
movq -0x128(%rbp), %rdi
movq -0x130(%rbp), %rsi
callq 0x3ef70
jmp 0x27e6e
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x488(%rbp)
callq 0x3ebc0
movq -0x488(%rbp), %rdi
movq %rax, -0x148(%rbp)
callq 0x3ec30
movq %rax, -0x150(%rbp)
movq -0x148(%rbp), %rdi
movq -0x150(%rbp), %rsi
callq 0x3f130
movq %rax, -0x480(%rbp)
jmp 0x27eb7
movq -0x480(%rbp), %rax
movq %rax, -0x140(%rbp)
leaq -0x138(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x3f170
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x498(%rbp)
callq 0x3ec30
movq %rax, -0x160(%rbp)
leaq -0x158(%rbp), %rdi
leaq -0x160(%rbp), %rsi
callq 0x3f170
movq -0x498(%rbp), %rdi
movq -0x138(%rbp), %rsi
movq -0x158(%rbp), %rdx
callq 0x3f0a0
movq %rax, -0x490(%rbp)
jmp 0x27f28
movq -0x490(%rbp), %rax
movq %rax, -0x168(%rbp)
leaq -0xa0(%rbp), %rax
movq %rax, -0x170(%rbp)
movq -0x170(%rbp), %rdi
callq 0x3ebc0
movq %rax, -0x178(%rbp)
movq -0x170(%rbp), %rdi
callq 0x3ec30
movq %rax, -0x180(%rbp)
leaq -0x178(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0x3ec60
testb $0x1, %al
jne 0x27f86
jmp 0x28150
leaq -0x178(%rbp), %rdi
callq 0x3eca0
movq (%rax), %rax
movq %rax, -0x188(%rbp)
movl -0x188(%rbp), %eax
movl %eax, -0x4a0(%rbp)
movl -0x14(%rbp), %edi
callq 0x3c5a0
movl %eax, -0x49c(%rbp)
jmp 0x27fb8
movl -0x4a0(%rbp), %eax
movl -0x49c(%rbp), %ecx
cmpl %ecx, %eax
jne 0x2813d
movq -0x440(%rbp), %rdi
movl $0xffffffff, -0x18c(%rbp) # imm = 0xFFFFFFFF
addq $0x18, %rdi
movslq -0x188(%rbp), %rsi
callq 0xaab0
movq %rax, -0x198(%rbp)
movq -0x198(%rbp), %rdi
callq 0xa800
movq %rax, -0x1a0(%rbp)
movq -0x198(%rbp), %rdi
callq 0xa830
movq %rax, -0x1a8(%rbp)
leaq -0x1a0(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x28033
jmp 0x28094
leaq -0x1a0(%rbp), %rdi
callq 0xa8a0
movq -0x440(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x1ac(%rbp)
movl -0x184(%rbp), %esi
movl -0x1ac(%rbp), %edx
movl -0x14(%rbp), %ecx
callq 0x274e0
movl %eax, -0x1b0(%rbp)
movl -0x1b0(%rbp), %eax
cmpl -0x188(%rbp), %eax
jne 0x28084
movl -0x1ac(%rbp), %eax
movl %eax, -0x18c(%rbp)
jmp 0x28094
jmp 0x28086
leaq -0x1a0(%rbp), %rdi
callq 0xa930
jmp 0x2801a
cmpl $-0x1, -0x18c(%rbp)
je 0x2809f
jmp 0x280be
leaq 0x5ec26(%rip), %rdi     # 0x86ccc
leaq 0x5ebbc(%rip), %rsi     # 0x86c69
movl $0x6c, %edx
leaq 0x5ebba(%rip), %rcx     # 0x86c73
callq 0x4260
movq -0x440(%rbp), %rdi
movl -0x18c(%rbp), %esi
callq 0x5f7f0
jmp 0x280d2
movq -0x440(%rbp), %rdi
movl -0x14(%rbp), %esi
movl -0x184(%rbp), %edx
movl $0x1, %ecx
callq 0x5fb90
jmp 0x280ee
movq -0x20(%rbp), %rdi
callq 0x3f290
cmpq $0x0, %rax
jbe 0x28127
movq -0x440(%rbp), %rdi
movslq -0x184(%rbp), %rsi
callq 0x3c600
movq -0x440(%rbp), %rdi
movq %rax, %rsi
movq -0x20(%rbp), %rdx
callq 0x27190
jmp 0x28125
jmp 0x28127
movl $0x1, -0x4(%rbp)
movl $0x1, -0x11c(%rbp)
jmp 0x28b1e
jmp 0x2813f
leaq -0x178(%rbp), %rdi
callq 0x3ecc0
jmp 0x27f6a
leaq -0x40(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
callq 0xa800
movq -0x4a8(%rbp), %rdi
movq %rax, -0x1b8(%rbp)
callq 0xa830
movq %rax, -0x1c0(%rbp)
movq -0x1b8(%rbp), %rdi
movq -0x1c0(%rbp), %rsi
callq 0x3e130
jmp 0x2818f
movl $0x0, -0x1c4(%rbp)
movl $0xffffffff, -0x1c8(%rbp) # imm = 0xFFFFFFFF
movl $0x0, -0x1cc(%rbp)
movl $0x0, -0x1d0(%rbp)
movl $0x0, -0x1d4(%rbp)
movl -0x1d4(%rbp), %eax
movq %rax, -0x4b0(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x3efb0
movq %rax, %rcx
movq -0x4b0(%rbp), %rax
cmpq %rcx, %rax
jae 0x2838c
cmpl $0x0, -0x1d4(%rbp)
jbe 0x28242
movl -0x1d4(%rbp), %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movl (%rax), %eax
movl %eax, -0x4b4(%rbp)
movl -0x1d4(%rbp), %eax
subl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movq %rax, %rcx
movl -0x4b4(%rbp), %eax
cmpl (%rcx), %eax
je 0x28242
movl $0x0, -0x1c4(%rbp)
movl -0x1c4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c4(%rbp)
movl -0x1d0(%rbp), %eax
movq %rax, -0x4c0(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xf940
movq -0x4c0(%rbp), %rcx
movq %rax, %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, -0x4b5(%rbp)
jae 0x282bf
movl -0x1d0(%rbp), %eax
movl %eax, %esi
leaq -0x40(%rbp), %rdi
callq 0xa7c0
movl (%rax), %eax
movl %eax, -0x4c4(%rbp)
movl -0x1d4(%rbp), %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movq %rax, %rcx
movl -0x4c4(%rbp), %eax
cmpl (%rcx), %eax
setl %al
movb %al, -0x4b5(%rbp)
movb -0x4b5(%rbp), %al
testb $0x1, %al
jne 0x282cb
jmp 0x282df
movl -0x1d0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1d0(%rbp)
jmp 0x28251
movl -0x1d0(%rbp), %eax
movq %rax, -0x4d0(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xf940
movq %rax, %rcx
movq -0x4d0(%rbp), %rax
cmpq %rcx, %rax
je 0x2833e
movl -0x1d0(%rbp), %eax
movl %eax, %esi
leaq -0x40(%rbp), %rdi
callq 0xa7c0
movl (%rax), %eax
movl %eax, -0x4d4(%rbp)
movl -0x1d4(%rbp), %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movq %rax, %rcx
movl -0x4d4(%rbp), %eax
cmpl (%rcx), %eax
je 0x28376
movl -0x1c4(%rbp), %eax
cmpl -0x1cc(%rbp), %eax
jle 0x28374
movl -0x1c4(%rbp), %eax
movl %eax, -0x1cc(%rbp)
movl -0x1d4(%rbp), %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movl (%rax), %eax
movl %eax, -0x1c8(%rbp)
jmp 0x28376
jmp 0x28378
movl -0x1d4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1d4(%rbp)
jmp 0x281c1
cmpl $-0x1, -0x1c8(%rbp)
jne 0x283a4
movl $0x3, -0x11c(%rbp)
jmp 0x28b1e
leaq -0x40(%rbp), %rdi
callq 0xf940
addl $0x1, %eax
imull -0x1cc(%rbp), %eax
movl %eax, -0x4d8(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xf940
movq %rax, %rcx
movl -0x4d8(%rbp), %eax
addl $0x1, %ecx
subl %ecx, %eax
subl -0x1cc(%rbp), %eax
subl -0x88(%rbp), %eax
movl %eax, -0x1d8(%rbp)
movl -0x1d8(%rbp), %eax
cmpl -0x84(%rbp), %eax
jg 0x28a2b
movl $0x0, -0x1c4(%rbp)
movl $0x0, -0x1dc(%rbp)
movl $0xffffffff, -0x1cc(%rbp) # imm = 0xFFFFFFFF
movl $0xffffffff, -0x1c8(%rbp) # imm = 0xFFFFFFFF
movl $0x0, -0x1e0(%rbp)
movl $0x0, -0x1d0(%rbp)
movl $0x0, -0x1e4(%rbp)
movl -0x1e4(%rbp), %eax
movq %rax, -0x4e0(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x3efb0
movq %rax, %rcx
movq -0x4e0(%rbp), %rax
cmpq %rcx, %rax
jae 0x287b0
cmpl $0x0, -0x1e4(%rbp)
je 0x284b9
movl -0x1e4(%rbp), %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movl (%rax), %eax
movl %eax, -0x4e4(%rbp)
movl -0x1e4(%rbp), %eax
subl $0x1, %eax
movl %eax, %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movq %rax, %rcx
movl -0x4e4(%rbp), %eax
cmpl (%rcx), %eax
je 0x28602
movl $0x0, -0x1c4(%rbp)
movl $0x0, -0x1e0(%rbp)
leaq -0x80(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movq -0x1f0(%rbp), %rdi
callq 0xa800
movq %rax, -0x1f8(%rbp)
movq -0x1f0(%rbp), %rdi
callq 0xa830
movq %rax, -0x200(%rbp)
leaq -0x1f8(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x2851a
jmp 0x28600
leaq -0x1f8(%rbp), %rdi
callq 0xa8a0
movq -0x440(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x204(%rbp)
movslq -0x204(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xa800
movq -0x440(%rbp), %rdi
movq %rax, -0x210(%rbp)
movslq -0x204(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xa830
movq %rax, -0x218(%rbp)
movl -0x1e4(%rbp), %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movl (%rax), %edi
callq 0x3c5a0
movl %eax, -0x4e8(%rbp)
jmp 0x28595
movl -0x4e8(%rbp), %eax
movl %eax, -0x21c(%rbp)
movq -0x210(%rbp), %rdi
movq -0x218(%rbp), %rsi
leaq -0x21c(%rbp), %rdx
callq 0x3e170
movb %al, -0x4e9(%rbp)
jmp 0x285c3
movb -0x4e9(%rbp), %al
testb $0x1, %al
jne 0x285cf
jmp 0x285ed
movl -0x1c4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c4(%rbp)
movl -0x1e0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1e0(%rbp)
jmp 0x285ef
leaq -0x1f8(%rbp), %rdi
callq 0xa930
jmp 0x284fe
jmp 0x28602
movl -0x1c4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c4(%rbp)
movl -0x1d0(%rbp), %eax
movq %rax, -0x4f8(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xf940
movq -0x4f8(%rbp), %rcx
movq %rax, %rdx
xorl %eax, %eax
cmpq %rdx, %rcx
movb %al, -0x4ea(%rbp)
jae 0x2867f
movl -0x1d0(%rbp), %eax
movl %eax, %esi
leaq -0x40(%rbp), %rdi
callq 0xa7c0
movl (%rax), %eax
movl %eax, -0x4fc(%rbp)
movl -0x1e4(%rbp), %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movq %rax, %rcx
movl -0x4fc(%rbp), %eax
cmpl (%rcx), %eax
setl %al
movb %al, -0x4ea(%rbp)
movb -0x4ea(%rbp), %al
testb $0x1, %al
jne 0x2868b
jmp 0x2869f
movl -0x1d0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1d0(%rbp)
jmp 0x28611
movl -0x1d0(%rbp), %eax
movq %rax, -0x508(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xf940
movq %rax, %rcx
movq -0x508(%rbp), %rax
cmpq %rcx, %rax
je 0x28702
movl -0x1d0(%rbp), %eax
movl %eax, %esi
leaq -0x40(%rbp), %rdi
callq 0xa7c0
movl (%rax), %eax
movl %eax, -0x50c(%rbp)
movl -0x1e4(%rbp), %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movq %rax, %rcx
movl -0x50c(%rbp), %eax
cmpl (%rcx), %eax
je 0x2879a
leaq -0x40(%rbp), %rdi
callq 0xf940
addl $0x1, %eax
imull -0x1c4(%rbp), %eax
movl %eax, -0x510(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xf940
movq %rax, %rcx
movl -0x510(%rbp), %eax
addl $0x1, %ecx
subl %ecx, %eax
subl -0x1c4(%rbp), %eax
subl -0x88(%rbp), %eax
subl -0x1e0(%rbp), %eax
movl %eax, -0x220(%rbp)
movl -0x220(%rbp), %eax
cmpl -0x1d8(%rbp), %eax
jle 0x28798
movl -0x220(%rbp), %eax
movl %eax, -0x1d8(%rbp)
movl -0x1e4(%rbp), %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movl (%rax), %eax
movl %eax, -0x1c8(%rbp)
movl -0x1c4(%rbp), %eax
movl %eax, -0x1cc(%rbp)
movl -0x1e0(%rbp), %eax
movl %eax, -0x1dc(%rbp)
jmp 0x2879a
jmp 0x2879c
movl -0x1e4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1e4(%rbp)
jmp 0x2843e
movl -0x1d8(%rbp), %eax
cmpl -0x84(%rbp), %eax
jle 0x28a17
movl -0x1d8(%rbp), %eax
movl %eax, -0x84(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0xa8c0
jmp 0x287e0
leaq -0x238(%rbp), %rdi
callq 0xa7e0
leaq -0x80(%rbp), %rax
movq %rax, -0x240(%rbp)
movq -0x240(%rbp), %rdi
callq 0xa800
movq %rax, -0x248(%rbp)
movq -0x240(%rbp), %rdi
callq 0xa830
movq %rax, -0x250(%rbp)
leaq -0x248(%rbp), %rdi
leaq -0x250(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x28839
jmp 0x28925
leaq -0x248(%rbp), %rdi
callq 0xa8a0
movq -0x440(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x254(%rbp)
movslq -0x254(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xa800
movq -0x440(%rbp), %rdi
movq %rax, -0x260(%rbp)
movslq -0x254(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xa830
movq %rax, -0x268(%rbp)
movl -0x1c8(%rbp), %edi
callq 0x3c5a0
movl %eax, -0x514(%rbp)
jmp 0x288a4
movl -0x514(%rbp), %eax
movl %eax, -0x26c(%rbp)
movq -0x260(%rbp), %rdi
movq -0x268(%rbp), %rsi
leaq -0x26c(%rbp), %rdx
callq 0x3e170
movb %al, -0x515(%rbp)
jmp 0x288d2
movb -0x515(%rbp), %al
testb $0x1, %al
jne 0x288de
jmp 0x28912
leaq -0x238(%rbp), %rdi
leaq -0x254(%rbp), %rsi
callq 0xa8c0
jmp 0x288f3
jmp 0x28912
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x238(%rbp), %rdi
callq 0xab00
jmp 0x28b51
jmp 0x28914
leaq -0x248(%rbp), %rdi
callq 0xa930
jmp 0x2881d
leaq -0x80(%rbp), %rdi
leaq -0x238(%rbp), %rsi
callq 0x3de50
jmp 0x28937
movl -0x1dc(%rbp), %eax
addl -0x88(%rbp), %eax
movl %eax, -0x88(%rbp)
movl $0x0, -0x270(%rbp)
movl -0x270(%rbp), %eax
movq %rax, -0x520(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x3efb0
movq %rax, %rcx
movq -0x520(%rbp), %rax
cmpq %rcx, %rax
jae 0x289d7
movl -0x270(%rbp), %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movl (%rax), %eax
cmpl -0x1c8(%rbp), %eax
jne 0x289c1
movl -0x270(%rbp), %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movq %rax, %rsi
addq $0x4, %rsi
leaq -0x80(%rbp), %rdi
callq 0xa8c0
jmp 0x289bf
jmp 0x289c1
jmp 0x289c3
movl -0x270(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x270(%rbp)
jmp 0x28953
leaq -0x80(%rbp), %rdi
callq 0xf940
cmpl -0x1cc(%rbp), %eax
jne 0x289ea
jmp 0x28a09
leaq 0x5e2e9(%rip), %rdi     # 0x86cda
leaq 0x5e271(%rip), %rsi     # 0x86c69
movl $0xba, %edx
leaq 0x5e26f(%rip), %rcx     # 0x86c73
callq 0x4260
leaq -0x238(%rbp), %rdi
callq 0xab00
jmp 0x28a26
movl $0x3, -0x11c(%rbp)
jmp 0x28b1e
jmp 0x28b14
movl -0x1d8(%rbp), %eax
movl %eax, -0x84(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x1c8(%rbp), %rsi
callq 0xa8c0
jmp 0x28a49
leaq -0x80(%rbp), %rdi
callq 0x3d200
movl $0x0, -0x274(%rbp)
movl -0x274(%rbp), %eax
movq %rax, -0x528(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x3efb0
movq %rax, %rcx
movq -0x528(%rbp), %rax
cmpq %rcx, %rax
jae 0x28ae0
movl -0x274(%rbp), %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movl (%rax), %eax
cmpl -0x1c8(%rbp), %eax
jne 0x28aca
movl -0x274(%rbp), %eax
movl %eax, %esi
leaq -0xa0(%rbp), %rdi
callq 0x3ef50
movq %rax, %rsi
addq $0x4, %rsi
leaq -0x80(%rbp), %rdi
callq 0xa8c0
jmp 0x28ac8
jmp 0x28aca
jmp 0x28acc
movl -0x274(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x274(%rbp)
jmp 0x28a5c
leaq -0x80(%rbp), %rdi
callq 0xf940
cmpl -0x1cc(%rbp), %eax
jne 0x28af3
jmp 0x28b12
leaq 0x5e1e0(%rip), %rdi     # 0x86cda
leaq 0x5e168(%rip), %rsi     # 0x86c69
movl $0xc9, %edx
leaq 0x5e166(%rip), %rcx     # 0x86c73
callq 0x4260
jmp 0x28b14
movl $0x0, -0x11c(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x3ece0
movl -0x11c(%rbp), %eax
movl %eax, -0x52c(%rbp)
testl %eax, %eax
je 0x28b4c
jmp 0x28b3c
movl -0x52c(%rbp), %eax
subl $0x3, %eax
je 0x28b62
jmp 0x29719
jmp 0x27909
leaq -0xa0(%rbp), %rdi
callq 0x3ece0
jmp 0x29737
cmpl $0x0, -0x84(%rbp)
jne 0x28b81
movl $0x0, -0x4(%rbp)
movl $0x1, -0x11c(%rbp)
jmp 0x29719
movl -0x84(%rbp), %eax
movl %eax, -0x530(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xf940
movl %eax, -0x53c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0xf940
movq %rax, %rcx
movl -0x53c(%rbp), %eax
imull %ecx, %eax
movl %eax, -0x538(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xf940
movq %rax, %rcx
movl -0x538(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x534(%rbp)
leaq -0x80(%rbp), %rdi
callq 0xf940
movl -0x534(%rbp), %ecx
movq %rax, %rdx
movl -0x530(%rbp), %eax
subl %edx, %ecx
subl -0x88(%rbp), %ecx
cmpl %ecx, %eax
jne 0x28bf7
jmp 0x28c16
leaq 0x5e0f5(%rip), %rdi     # 0x86cf3
leaq 0x5e064(%rip), %rsi     # 0x86c69
movl $0xcd, %edx
leaq 0x5e062(%rip), %rcx     # 0x86c73
callq 0x4260
leaq -0x40(%rbp), %rdi
movq %rdi, -0x548(%rbp)
callq 0xa800
movq -0x548(%rbp), %rdi
movq %rax, -0x280(%rbp)
callq 0xa830
movq %rax, -0x288(%rbp)
movq -0x280(%rbp), %rdi
movq -0x288(%rbp), %rsi
callq 0x3e130
jmp 0x28c55
leaq -0x2a0(%rbp), %rdi
callq 0xa7e0
leaq -0x80(%rbp), %rax
movq %rax, -0x2a8(%rbp)
movq -0x2a8(%rbp), %rdi
callq 0xa800
movq %rax, -0x2b0(%rbp)
movq -0x2a8(%rbp), %rdi
callq 0xa830
movq %rax, -0x2b8(%rbp)
leaq -0x2b0(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x28cae
jmp 0x28ff5
leaq -0x2b0(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x2bc(%rbp)
leaq -0x2a0(%rbp), %rdi
leaq -0x2bc(%rbp), %rsi
callq 0xa8c0
jmp 0x28cd7
movq -0x440(%rbp), %rdi
movslq -0x2bc(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xf940
cmpq $0x1, %rax
jbe 0x28cfa
jmp 0x28d3b
leaq 0x5e04b(%rip), %rdi     # 0x86d4c
leaq 0x5df61(%rip), %rsi     # 0x86c69
movl $0xd2, %edx
leaq 0x5df5f(%rip), %rcx     # 0x86c73
callq 0x4260
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x29737
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
jmp 0x2970b
movq -0x440(%rbp), %rdi
movslq -0x2bc(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa7c0
movl (%rax), %eax
movl %eax, -0x2c0(%rbp)
movl -0x2c0(%rbp), %eax
cmpl -0x14(%rbp), %eax
jne 0x28d95
movq -0x440(%rbp), %rdi
movslq -0x2bc(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
movl $0x1, %esi
callq 0xa7c0
movl (%rax), %eax
movl %eax, -0x2c0(%rbp)
movl $0x1, -0x2c4(%rbp)
movq -0x440(%rbp), %rdi
movl -0x2c4(%rbp), %eax
movq %rax, -0x550(%rbp)
movslq -0x2bc(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xf940
movq %rax, %rcx
movq -0x550(%rbp), %rax
cmpq %rcx, %rax
jae 0x28ec2
movq -0x440(%rbp), %rdi
movq %rdi, %rax
addq $0x18, %rax
movq %rax, -0x560(%rbp)
movslq -0x2bc(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
movl -0x2c4(%rbp), %eax
movl %eax, %esi
callq 0xa7c0
movq -0x560(%rbp), %rdi
movslq (%rax), %rsi
callq 0xaab0
movq %rax, %rdi
callq 0xf940
movq -0x440(%rbp), %rdi
movq %rax, -0x558(%rbp)
addq $0x18, %rdi
movslq -0x2c0(%rbp), %rsi
callq 0xaab0
movq %rax, %rdi
callq 0xf940
movq %rax, %rcx
movq -0x558(%rbp), %rax
cmpq %rcx, %rax
jae 0x28eac
movq -0x440(%rbp), %rdi
movslq -0x2bc(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
movl -0x2c4(%rbp), %eax
movl %eax, %esi
callq 0xa7c0
movl (%rax), %eax
cmpl -0x14(%rbp), %eax
je 0x28eac
movq -0x440(%rbp), %rdi
movslq -0x2bc(%rbp), %rsi
callq 0x3c600
movq %rax, %rdi
movl -0x2c4(%rbp), %eax
movl %eax, %esi
callq 0xa7c0
movl (%rax), %eax
movl %eax, -0x2c0(%rbp)
jmp 0x28eae
movl -0x2c4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c4(%rbp)
jmp 0x28d9f
movq -0x440(%rbp), %rdi
addq $0x18, %rdi
movslq -0x2c0(%rbp), %rsi
callq 0xaab0
movq %rax, -0x2d0(%rbp)
movq -0x2d0(%rbp), %rdi
callq 0xa800
movq %rax, -0x2d8(%rbp)
movq -0x2d0(%rbp), %rdi
callq 0xa830
movq %rax, -0x2e0(%rbp)
leaq -0x2d8(%rbp), %rdi
leaq -0x2e0(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x28f22
jmp 0x28fe2
leaq -0x2d8(%rbp), %rdi
callq 0xa8a0
movq -0x440(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x2e4(%rbp)
movl -0x2bc(%rbp), %esi
movl -0x2e4(%rbp), %edx
movl -0x14(%rbp), %ecx
callq 0x274e0
movl %eax, -0x2e8(%rbp)
cmpl $-0x1, -0x2e8(%rbp)
je 0x28fcf
leaq -0x40(%rbp), %rdi
movq %rdi, -0x570(%rbp)
callq 0xa800
movq -0x570(%rbp), %rdi
movq %rax, -0x2f0(%rbp)
callq 0xa830
movq %rax, -0x2f8(%rbp)
movq -0x2f0(%rbp), %rdi
movq -0x2f8(%rbp), %rsi
leaq -0x2e8(%rbp), %rdx
callq 0x3e170
movb %al, -0x561(%rbp)
jmp 0x28fac
movb -0x561(%rbp), %al
testb $0x1, %al
jne 0x28fb8
jmp 0x28fcf
leaq -0x2a0(%rbp), %rdi
leaq -0x2e4(%rbp), %rsi
callq 0xa8c0
jmp 0x28fcd
jmp 0x28fcf
jmp 0x28fd1
leaq -0x2d8(%rbp), %rdi
callq 0xa930
jmp 0x28f06
jmp 0x28fe4
leaq -0x2b0(%rbp), %rdi
callq 0xa930
jmp 0x28c92
leaq -0x2a0(%rbp), %rdi
movq %rdi, -0x578(%rbp)
callq 0xa800
movq -0x578(%rbp), %rdi
movq %rax, -0x300(%rbp)
callq 0xa830
movq %rax, -0x308(%rbp)
movq -0x300(%rbp), %rdi
movq -0x308(%rbp), %rsi
callq 0x3e130
jmp 0x29037
leaq -0x2a0(%rbp), %rdi
movq %rdi, -0x588(%rbp)
callq 0xa800
movq -0x588(%rbp), %rdi
movq %rax, -0x320(%rbp)
callq 0xa830
movq %rax, -0x328(%rbp)
movq -0x320(%rbp), %rdi
movq -0x328(%rbp), %rsi
callq 0x3e5a0
movq %rax, -0x580(%rbp)
jmp 0x29080
movq -0x580(%rbp), %rax
movq %rax, -0x318(%rbp)
leaq -0x310(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0x3e5e0
leaq -0x2a0(%rbp), %rdi
movq %rdi, -0x598(%rbp)
callq 0xa830
movq %rax, -0x338(%rbp)
leaq -0x330(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x3e5e0
movq -0x598(%rbp), %rdi
movq -0x310(%rbp), %rsi
movq -0x330(%rbp), %rdx
callq 0x3e510
movq %rax, -0x590(%rbp)
jmp 0x290f1
movq -0x590(%rbp), %rax
movq %rax, -0x340(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0xf940
movl %eax, -0x59c(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xf940
movl %eax, -0x5a0(%rbp)
leaq -0x80(%rbp), %rdi
callq 0xf940
movl -0x5a0(%rbp), %ecx
movq %rax, %rdx
movl -0x59c(%rbp), %eax
imull %edx, %ecx
subl -0x88(%rbp), %ecx
cmpl %ecx, %eax
jl 0x29147
jmp 0x29166
leaq 0x5dc1b(%rip), %rdi     # 0x86d69
leaq 0x5db14(%rip), %rsi     # 0x86c69
movl $0xe3, %edx
leaq 0x5db12(%rip), %rcx     # 0x86c73
callq 0x4260
leaq -0x2a0(%rbp), %rdi
callq 0xf940
movl %eax, -0x5a4(%rbp)
leaq -0x40(%rbp), %rdi
callq 0xf940
movl %eax, -0x5a8(%rbp)
leaq -0x80(%rbp), %rdi
callq 0xf940
movl -0x5a8(%rbp), %ecx
movq %rax, %rdx
movl -0x5a4(%rbp), %eax
imull %edx, %ecx
cmpl %ecx, %eax
jg 0x291a8
jmp 0x291c7
leaq 0x5dbfe(%rip), %rdi     # 0x86dad
leaq 0x5dab3(%rip), %rsi     # 0x86c69
movl $0xe4, %edx
leaq 0x5dab1(%rip), %rcx     # 0x86c73
callq 0x4260
movq -0x440(%rbp), %rdi
callq 0x5f970
movl %eax, -0x5ac(%rbp)
jmp 0x291db
movl -0x5ac(%rbp), %eax
movl %eax, -0x344(%rbp)
movl $0x0, -0x348(%rbp)
leaq -0x40(%rbp), %rax
movq %rax, -0x350(%rbp)
movq -0x350(%rbp), %rdi
callq 0xa800
movq %rax, -0x358(%rbp)
movq -0x350(%rbp), %rdi
callq 0xa830
movq %rax, -0x360(%rbp)
leaq -0x358(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x2923e
jmp 0x29398
leaq -0x358(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x364(%rbp)
movl -0x364(%rbp), %eax
movl %eax, -0x398(%rbp)
leaq -0x394(%rbp), %rax
movq %rax, -0x5b8(%rbp)
movl -0x344(%rbp), %edi
callq 0x3c5d0
movl %eax, -0x5b0(%rbp)
jmp 0x2927f
movq -0x5b8(%rbp), %rax
movl -0x5b0(%rbp), %ecx
movl %ecx, (%rax)
leaq -0x398(%rbp), %rax
movq %rax, -0x390(%rbp)
movq $0x2, -0x388(%rbp)
leaq -0x399(%rbp), %rdi
movq %rdi, -0x5c0(%rbp)
callq 0xa710
movq -0x5c0(%rbp), %rcx
movq -0x390(%rbp), %rsi
movq -0x388(%rbp), %rdx
leaq -0x380(%rbp), %rdi
callq 0x3c9b0
jmp 0x292dd
leaq -0x399(%rbp), %rdi
callq 0xa7a0
movq -0x440(%rbp), %rdi
leaq -0x380(%rbp), %rsi
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
callq 0x5f880
jmp 0x29308
movl -0x348(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x348(%rbp)
movq -0x20(%rbp), %rdi
callq 0x3f290
cmpq $0x0, %rax
jbe 0x2937b
movq -0x440(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq -0x380(%rbp), %rsi
callq 0x27190
jmp 0x2933f
jmp 0x2937b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x399(%rbp), %rdi
callq 0xa7a0
jmp 0x2970b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x380(%rbp), %rdi
callq 0xab00
jmp 0x2970b
leaq -0x380(%rbp), %rdi
callq 0xab00
leaq -0x358(%rbp), %rdi
callq 0xa930
jmp 0x29222
leaq -0x80(%rbp), %rax
movq %rax, -0x3a8(%rbp)
movq -0x3a8(%rbp), %rdi
callq 0xa800
movq %rax, -0x3b0(%rbp)
movq -0x3a8(%rbp), %rdi
callq 0xa830
movq %rax, -0x3b8(%rbp)
leaq -0x3b0(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x293e5
jmp 0x295bd
leaq -0x3b0(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x3bc(%rbp)
leaq -0x3d8(%rbp), %rdi
callq 0xa7e0
movq -0x440(%rbp), %rdi
movslq -0x3bc(%rbp), %rsi
callq 0x3c600
movq %rax, -0x3e0(%rbp)
movq -0x3e0(%rbp), %rdi
callq 0xa800
movq %rax, -0x3e8(%rbp)
movq -0x3e0(%rbp), %rdi
callq 0xa830
movq %rax, -0x3f0(%rbp)
leaq -0x3e8(%rbp), %rdi
leaq -0x3f0(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x29461
jmp 0x29514
leaq -0x3e8(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x3f4(%rbp)
leaq -0x40(%rbp), %rdi
movq %rdi, -0x5d0(%rbp)
callq 0xa800
movq -0x5d0(%rbp), %rdi
movq %rax, -0x400(%rbp)
callq 0xa830
movq %rax, -0x408(%rbp)
movq -0x400(%rbp), %rdi
movq -0x408(%rbp), %rsi
leaq -0x3f4(%rbp), %rdx
callq 0x3e170
movb %al, -0x5c1(%rbp)
jmp 0x294c1
movb -0x5c1(%rbp), %al
testb $0x1, %al
jne 0x29501
jmp 0x294cd
leaq -0x3d8(%rbp), %rdi
leaq -0x3f4(%rbp), %rsi
callq 0xa8c0
jmp 0x294e2
jmp 0x29501
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x60(%rbp)
movl %eax, -0x64(%rbp)
leaq -0x3d8(%rbp), %rdi
callq 0xab00
jmp 0x2970b
jmp 0x29503
leaq -0x3e8(%rbp), %rdi
callq 0xa930
jmp 0x29445
movl -0x344(%rbp), %edi
callq 0x3c5e0
movl %eax, -0x5d4(%rbp)
jmp 0x29527
movl -0x5d4(%rbp), %eax
movl %eax, -0x40c(%rbp)
leaq -0x3d8(%rbp), %rdi
leaq -0x40c(%rbp), %rsi
callq 0x3c850
jmp 0x29548
movq -0x440(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
movabsq $-0x8000000000000000, %rdx # imm = 0x8000000000000000
callq 0x5f880
jmp 0x29567
movl -0x348(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x348(%rbp)
movq -0x20(%rbp), %rdi
callq 0x3f290
cmpq $0x0, %rax
jbe 0x295a0
movq -0x440(%rbp), %rdi
movq -0x20(%rbp), %rdx
leaq -0x3d8(%rbp), %rsi
callq 0x27190
jmp 0x2959e
jmp 0x295a0
leaq -0x3d8(%rbp), %rdi
callq 0xab00
leaq -0x3b0(%rbp), %rdi
callq 0xa930
jmp 0x293c9
leaq -0x2a0(%rbp), %rax
movq %rax, -0x418(%rbp)
movq -0x418(%rbp), %rdi
callq 0xa800
movq %rax, -0x420(%rbp)
movq -0x418(%rbp), %rdi
callq 0xa830
movq %rax, -0x428(%rbp)
leaq -0x420(%rbp), %rdi
leaq -0x428(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x2960a
jmp 0x2964f
leaq -0x420(%rbp), %rdi
callq 0xa8a0
movq -0x440(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x42c(%rbp)
movl -0x42c(%rbp), %esi
callq 0x5f7f0
jmp 0x29632
movl -0x348(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x348(%rbp)
leaq -0x420(%rbp), %rdi
callq 0xa930
jmp 0x295f1
movl -0x348(%rbp), %eax
cmpl -0x84(%rbp), %eax
jl 0x2965f
jmp 0x2967e
leaq 0x5d784(%rip), %rdi     # 0x86dea
leaq 0x5d5fc(%rip), %rsi     # 0x86c69
movl $0xfd, %edx
leaq 0x5d5fa(%rip), %rcx     # 0x86c73
callq 0x4260
movl -0x348(%rbp), %eax
movl -0x84(%rbp), %ecx
addl -0x88(%rbp), %ecx
cmpl %ecx, %eax
jg 0x29696
jmp 0x296b5
leaq 0x5d75e(%rip), %rdi     # 0x86dfb
leaq 0x5d5c5(%rip), %rsi     # 0x86c69
movl $0xfe, %edx
leaq 0x5d5c3(%rip), %rcx     # 0x86c73
callq 0x4260
movq -0x440(%rbp), %rdi
addq $0x218, %rdi            # imm = 0x218
movl -0x348(%rbp), %esi
callq 0x61410
jmp 0x296d0
movq -0x440(%rbp), %rdi
addq $0x218, %rdi            # imm = 0x218
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
callq 0x61490
jmp 0x296ea
movl -0x348(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x1, -0x11c(%rbp)
leaq -0x2a0(%rbp), %rdi
callq 0xab00
jmp 0x29719
leaq -0x2a0(%rbp), %rdi
callq 0xab00
jmp 0x29737
leaq -0x80(%rbp), %rdi
callq 0xab00
leaq -0x40(%rbp), %rdi
callq 0xab00
movl -0x4(%rbp), %eax
addq $0x5e0, %rsp            # imm = 0x5E0
popq %rbp
retq
leaq -0x80(%rbp), %rdi
callq 0xab00
leaq -0x40(%rbp), %rdi
callq 0xab00
movq -0x60(%rbp), %rdi
callq 0x4610
nopw %cs:(%rax,%rax)