// File: Laakeri[P]maxpre/src/./GSLE.cpp
// Function: maxPreprocessor::Preprocessor::tryGSLE(int)
int Preprocessor::tryGSLE(int lb) {
	uint64_t lw = pi.labelWeight(litVariable(lb));
	for (int c : pi.litClauses[lb]) {
		bool f = false;
		for (int l : pi.clauses[c].lit) {
			if (l != lb && pi.isLabel[litVariable(l)] && pi.labelWeight(litVariable(l)) <= lw) {
				f = true;
				break;
			}
		}
		if (!f) {
			return 0;
		}
	}
	vector<vector<int> > hs;
	set<int> sel;
	uint64_t selW = 0;
	for (int c : pi.litClauses[lb]) {
		vector<int> s;
		for (int l : pi.clauses[c].lit) {
			if (l != lb && pi.isLabel[litVariable(l)] && pi.labelWeight(litVariable(l)) <= lw) {
				s.push_back(litVariable(l));
			}
		}
		hs.push_back(s);
	}
	for (auto& s : hs) {
		if (s.size() == 1) {
			if (sel.count(s[0]) == 0) {
				sel.insert(s[0]);
				selW += pi.labelWeight(s[0]);
			}
		}
	}
	if (selW > lw) return 0;
	vector<vector<int> > hss;
	uint64_t hsl = 0;
	for (auto& s : hs) {
		if (s.size() > 1) {
			bool f = false;
			for (int l : s) {
				if (sel.count(l) > 0) {
					f = true;
					break;
				}
			}
			if (!f) {
				hss.push_back(s);
				hsl += (uint64_t)(int)s.size();
			}
		}
	}
	auto cmp = [](const vector<int>& a, const vector<int>& b) {
		return a.size() < b.size();
	};
	sort(hss.begin(), hss.end(), cmp);
	// Do coordinate compression
	vector<int> cc;
	for (auto& se : hss) {
		for (int l : se) {
			cc.push_back(l);
		}
	}
	sort(cc.begin(), cc.end());
	cc.erase(unique(cc.begin(), cc.end()), cc.end());
	vector<uint64_t> laWeights(cc.size());
	for (int i = 0; i < (int)cc.size(); i++) {
		laWeights[i] = pi.labelWeight(cc[i]);
	}
	for (auto& se : hss) {
		for (int& l : se) {
			l = lower_bound(cc.begin(), cc.end(), l) - cc.begin();
		}
	}
	vector<int> cnt(cc.size());
	for (int i = (int)hss.size() - 1; i >= 0; i--) {
		for (int l : hss[i]) {
			cnt[l]++;
		}
		auto cmp2 = [&](int a, int b) {// the log-approximation heuristic
			return (double)laWeights[a]/(double)cnt[a] < (double)laWeights[b]/(double)cnt[b];
		};
		sort(hss[i].begin(), hss[i].end(), cmp2);
	}
	bool ok = false;
	hsl = min(hsl, (uint64_t)hss.size()*10); // magic constant
	if (GSLEtryBackTrack(hss, laWeights, lw - selW, hsl)) {
		ok = true;
	}
	if (ok) {
		int rmClauses = 0;
		if (pi.isLabel[litVariable(lb)] == VAR_TRUE) {
			rmClauses = setVariable(litVariable(lb), true);
		}
		else {
			rmClauses = setVariable(litVariable(lb), false);
		}
		assert(pi.isVarRemoved(litVariable(lb)));
		rLog.removeClause(rmClauses);
		rLog.removeLabel(1);
		return 1;
	}
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4a0, %rsp            # imm = 0x4A0
movq %rdi, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x380(%rbp)
movl -0x14(%rbp), %edi
callq 0x3c880
movq -0x380(%rbp), %rdi
movl %eax, %esi
callq 0x5ed50
movq -0x380(%rbp), %rdi
movq %rax, -0x20(%rbp)
addq $0x18, %rdi
movslq -0x14(%rbp), %rsi
callq 0xaab0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0xa800
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rdi
callq 0xa830
movq %rax, -0x38(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x2a2ff
jmp 0x2a3ea
leaq -0x30(%rbp), %rdi
callq 0xa8a0
movq -0x380(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0x3c(%rbp)
movb $0x0, -0x3d(%rbp)
movslq -0x3c(%rbp), %rsi
callq 0x3c600
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rdi
callq 0xa800
movq %rax, -0x50(%rbp)
movq -0x48(%rbp), %rdi
callq 0xa830
movq %rax, -0x58(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x2a352
jmp 0x2a3c8
leaq -0x50(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %eax
cmpl -0x14(%rbp), %eax
je 0x2a3b8
movq -0x380(%rbp), %rax
addq $0x48, %rax
movq %rax, -0x388(%rbp)
movl -0x5c(%rbp), %edi
callq 0x3c880
movq -0x388(%rbp), %rdi
movslq %eax, %rsi
callq 0xa7c0
cmpl $0x0, (%rax)
je 0x2a3b8
movl -0x5c(%rbp), %edi
callq 0x3c880
movq -0x380(%rbp), %rdi
movl %eax, %esi
callq 0x5ed50
cmpq -0x20(%rbp), %rax
ja 0x2a3b8
movb $0x1, -0x3d(%rbp)
jmp 0x2a3c8
jmp 0x2a3ba
leaq -0x50(%rbp), %rdi
callq 0xa930
jmp 0x2a33f
testb $0x1, -0x3d(%rbp)
jne 0x2a3da
movl $0x0, -0x4(%rbp)
jmp 0x2b2e8
jmp 0x2a3dc
leaq -0x30(%rbp), %rdi
callq 0xa930
jmp 0x2a2e9
leaq -0x78(%rbp), %rdi
callq 0xb2e0
leaq -0xa8(%rbp), %rdi
callq 0x3dde0
movq -0x380(%rbp), %rdi
movq $0x0, -0xb0(%rbp)
addq $0x18, %rdi
movslq -0x14(%rbp), %rsi
callq 0xaab0
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rdi
callq 0xa800
movq %rax, -0xc0(%rbp)
movq -0xb8(%rbp), %rdi
callq 0xa830
movq %rax, -0xc8(%rbp)
leaq -0xc0(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x2a467
jmp 0x2a62d
leaq -0xc0(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0xcc(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0xa7e0
movq -0x380(%rbp), %rdi
movslq -0xcc(%rbp), %rsi
callq 0x3c600
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rdi
callq 0xa800
movq %rax, -0xf8(%rbp)
movq -0xf0(%rbp), %rdi
callq 0xa830
movq %rax, -0x100(%rbp)
leaq -0xf8(%rbp), %rdi
leaq -0x100(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x2a4e3
jmp 0x2a5fe
leaq -0xf8(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x104(%rbp)
movl -0x104(%rbp), %eax
cmpl -0x14(%rbp), %eax
je 0x2a5eb
movq -0x380(%rbp), %rax
addq $0x48, %rax
movq %rax, -0x398(%rbp)
movl -0x104(%rbp), %edi
callq 0x3c880
movl %eax, -0x38c(%rbp)
jmp 0x2a52b
movq -0x398(%rbp), %rdi
movl -0x38c(%rbp), %eax
movslq %eax, %rsi
callq 0xa7c0
cmpl $0x0, (%rax)
je 0x2a5eb
movq -0x380(%rbp), %rax
movq %rax, -0x3a8(%rbp)
movl -0x104(%rbp), %edi
callq 0x3c880
movl %eax, -0x39c(%rbp)
jmp 0x2a56a
movl -0x39c(%rbp), %esi
movq -0x3a8(%rbp), %rdi
callq 0x5ed50
movq %rax, -0x3b0(%rbp)
jmp 0x2a585
movq -0x3b0(%rbp), %rax
cmpq -0x20(%rbp), %rax
ja 0x2a5eb
movl -0x104(%rbp), %edi
callq 0x3c880
movl %eax, -0x3b4(%rbp)
jmp 0x2a5a5
movl -0x3b4(%rbp), %eax
movl %eax, -0x118(%rbp)
leaq -0xe8(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x3c850
jmp 0x2a5c6
jmp 0x2a5eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x110(%rbp)
movl %eax, -0x114(%rbp)
leaq -0xe8(%rbp), %rdi
callq 0xab00
jmp 0x2b2d1
jmp 0x2a5ed
leaq -0xf8(%rbp), %rdi
callq 0xa930
jmp 0x2a4c7
leaq -0x78(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x3e2b0
jmp 0x2a610
leaq -0xe8(%rbp), %rdi
callq 0xab00
leaq -0xc0(%rbp), %rdi
callq 0xa930
jmp 0x2a44b
leaq -0x78(%rbp), %rax
movq %rax, -0x120(%rbp)
movq -0x120(%rbp), %rdi
callq 0x3e320
movq %rax, -0x128(%rbp)
movq -0x120(%rbp), %rdi
callq 0x3e350
movq %rax, -0x130(%rbp)
leaq -0x128(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x3e380
testb $0x1, %al
jne 0x2a67a
jmp 0x2a78e
leaq -0x128(%rbp), %rdi
callq 0x3e3c0
movq %rax, -0x138(%rbp)
movq -0x138(%rbp), %rdi
callq 0xf940
cmpq $0x1, %rax
jne 0x2a77b
movq -0x138(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa7c0
movq %rax, %rsi
leaq -0xa8(%rbp), %rdi
callq 0x3d1a0
movq %rax, -0x3c0(%rbp)
jmp 0x2a6cb
movq -0x3c0(%rbp), %rax
cmpq $0x0, %rax
jne 0x2a779
movq -0x138(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa7c0
movq %rax, %rsi
leaq -0xa8(%rbp), %rdi
callq 0x3de00
movb %dl, -0x3c9(%rbp)
movq %rax, -0x3c8(%rbp)
jmp 0x2a70a
movb -0x3c9(%rbp), %al
movq -0x3c8(%rbp), %rcx
movq %rcx, -0x148(%rbp)
movb %al, -0x140(%rbp)
movq -0x138(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa7c0
movq -0x380(%rbp), %rdi
movl (%rax), %esi
callq 0x5ed50
movq %rax, -0x3d8(%rbp)
jmp 0x2a74b
movq -0x3d8(%rbp), %rax
addq -0xb0(%rbp), %rax
movq %rax, -0xb0(%rbp)
jmp 0x2a779
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x110(%rbp)
movl %eax, -0x114(%rbp)
jmp 0x2b2d1
jmp 0x2a77b
jmp 0x2a77d
leaq -0x128(%rbp), %rdi
callq 0x3e3e0
jmp 0x2a65e
movq -0xb0(%rbp), %rax
cmpq -0x20(%rbp), %rax
jbe 0x2a7b1
movl $0x0, -0x4(%rbp)
movl $0x1, -0x14c(%rbp)
jmp 0x2b2ba
leaq -0x168(%rbp), %rdi
callq 0xb2e0
movq $0x0, -0x170(%rbp)
leaq -0x78(%rbp), %rax
movq %rax, -0x178(%rbp)
movq -0x178(%rbp), %rdi
callq 0x3e320
movq %rax, -0x180(%rbp)
movq -0x178(%rbp), %rdi
callq 0x3e350
movq %rax, -0x188(%rbp)
leaq -0x180(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0x3e380
testb $0x1, %al
jne 0x2a815
jmp 0x2a951
leaq -0x180(%rbp), %rdi
callq 0x3e3c0
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rdi
callq 0xf940
cmpq $0x1, %rax
jbe 0x2a93e
movb $0x0, -0x191(%rbp)
movq -0x190(%rbp), %rax
movq %rax, -0x1a0(%rbp)
movq -0x1a0(%rbp), %rdi
callq 0xa800
movq %rax, -0x1a8(%rbp)
movq -0x1a0(%rbp), %rdi
callq 0xa830
movq %rax, -0x1b0(%rbp)
leaq -0x1a8(%rbp), %rdi
leaq -0x1b0(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x2a892
jmp 0x2a902
leaq -0x1a8(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x1b4(%rbp)
leaq -0xa8(%rbp), %rdi
leaq -0x1b4(%rbp), %rsi
callq 0x3d1a0
movq %rax, -0x3e0(%rbp)
jmp 0x2a8c2
movq -0x3e0(%rbp), %rax
cmpq $0x0, %rax
jbe 0x2a8ef
movb $0x1, -0x191(%rbp)
jmp 0x2a902
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x110(%rbp)
movl %eax, -0x114(%rbp)
jmp 0x2b2ac
jmp 0x2a8f1
leaq -0x1a8(%rbp), %rdi
callq 0xa930
jmp 0x2a879
testb $0x1, -0x191(%rbp)
jne 0x2a93c
movq -0x190(%rbp), %rsi
leaq -0x168(%rbp), %rdi
callq 0x3e2b0
jmp 0x2a920
movq -0x190(%rbp), %rdi
callq 0xf940
cltq
addq -0x170(%rbp), %rax
movq %rax, -0x170(%rbp)
jmp 0x2a93e
jmp 0x2a940
leaq -0x180(%rbp), %rdi
callq 0x3e3e0
jmp 0x2a7f9
leaq -0x168(%rbp), %rdi
movq %rdi, -0x3e8(%rbp)
callq 0x3e320
movq -0x3e8(%rbp), %rdi
movq %rax, -0x1c0(%rbp)
callq 0x3e350
movq %rax, -0x1c8(%rbp)
movq -0x1c0(%rbp), %rdi
movq -0x1c8(%rbp), %rsi
callq 0x2b300
jmp 0x2a993
leaq -0x1e8(%rbp), %rdi
callq 0xa7e0
leaq -0x168(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movq -0x1f0(%rbp), %rdi
callq 0x3e320
movq %rax, -0x1f8(%rbp)
movq -0x1f0(%rbp), %rdi
callq 0x3e350
movq %rax, -0x200(%rbp)
leaq -0x1f8(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0x3e380
testb $0x1, %al
jne 0x2a9ef
jmp 0x2aab2
leaq -0x1f8(%rbp), %rdi
callq 0x3e3c0
movq %rax, -0x208(%rbp)
movq -0x208(%rbp), %rax
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 0x2aa4f
jmp 0x2aa9f
leaq -0x218(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x224(%rbp)
leaq -0x1e8(%rbp), %rdi
leaq -0x224(%rbp), %rsi
callq 0xa8c0
jmp 0x2aa78
jmp 0x2aa7a
leaq -0x218(%rbp), %rdi
callq 0xa930
jmp 0x2aa36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x110(%rbp)
movl %eax, -0x114(%rbp)
jmp 0x2b2a0
jmp 0x2aaa1
leaq -0x1f8(%rbp), %rdi
callq 0x3e3e0
jmp 0x2a9d3
leaq -0x1e8(%rbp), %rdi
movq %rdi, -0x3f0(%rbp)
callq 0xa800
movq -0x3f0(%rbp), %rdi
movq %rax, -0x230(%rbp)
callq 0xa830
movq %rax, -0x238(%rbp)
movq -0x230(%rbp), %rdi
movq -0x238(%rbp), %rsi
callq 0x3e130
jmp 0x2aaf4
leaq -0x1e8(%rbp), %rdi
movq %rdi, -0x400(%rbp)
callq 0xa800
movq -0x400(%rbp), %rdi
movq %rax, -0x250(%rbp)
callq 0xa830
movq %rax, -0x258(%rbp)
movq -0x250(%rbp), %rdi
movq -0x258(%rbp), %rsi
callq 0x3e5a0
movq %rax, -0x3f8(%rbp)
jmp 0x2ab3d
movq -0x3f8(%rbp), %rax
movq %rax, -0x248(%rbp)
leaq -0x240(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x3e5e0
leaq -0x1e8(%rbp), %rdi
movq %rdi, -0x410(%rbp)
callq 0xa830
movq %rax, -0x268(%rbp)
leaq -0x260(%rbp), %rdi
leaq -0x268(%rbp), %rsi
callq 0x3e5e0
movq -0x410(%rbp), %rdi
movq -0x240(%rbp), %rsi
movq -0x260(%rbp), %rdx
callq 0x3e510
movq %rax, -0x408(%rbp)
jmp 0x2abae
movq -0x408(%rbp), %rax
movq %rax, -0x270(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0xf940
movq %rax, -0x420(%rbp)
leaq -0x289(%rbp), %rdi
movq %rdi, -0x418(%rbp)
callq 0xb6b0
movq -0x420(%rbp), %rsi
movq -0x418(%rbp), %rdx
leaq -0x288(%rbp), %rdi
callq 0x3cff0
jmp 0x2abfe
leaq -0x289(%rbp), %rdi
callq 0xbca0
movl $0x0, -0x290(%rbp)
movl -0x290(%rbp), %eax
movl %eax, -0x424(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0xf940
movq %rax, %rcx
movl -0x424(%rbp), %eax
cmpl %ecx, %eax
jge 0x2acd2
movslq -0x290(%rbp), %rsi
leaq -0x1e8(%rbp), %rdi
callq 0xa7c0
movq -0x380(%rbp), %rdi
movl (%rax), %esi
callq 0x5ed50
movq %rax, -0x430(%rbp)
jmp 0x2ac67
movslq -0x290(%rbp), %rsi
leaq -0x288(%rbp), %rdi
callq 0x3d140
movq -0x430(%rbp), %rcx
movq %rcx, (%rax)
movl -0x290(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x290(%rbp)
jmp 0x2ac14
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x110(%rbp)
movl %eax, -0x114(%rbp)
leaq -0x289(%rbp), %rdi
callq 0xbca0
jmp 0x2b2a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x110(%rbp)
movl %eax, -0x114(%rbp)
jmp 0x2b294
leaq -0x168(%rbp), %rax
movq %rax, -0x298(%rbp)
movq -0x298(%rbp), %rdi
callq 0x3e320
movq %rax, -0x2a0(%rbp)
movq -0x298(%rbp), %rdi
callq 0x3e350
movq %rax, -0x2a8(%rbp)
leaq -0x2a0(%rbp), %rdi
leaq -0x2a8(%rbp), %rsi
callq 0x3e380
testb $0x1, %al
jne 0x2ad22
jmp 0x2ae4b
leaq -0x2a0(%rbp), %rdi
callq 0x3e3c0
movq %rax, -0x2b0(%rbp)
movq -0x2b0(%rbp), %rax
movq %rax, -0x2b8(%rbp)
movq -0x2b8(%rbp), %rdi
callq 0xa800
movq %rax, -0x2c0(%rbp)
movq -0x2b8(%rbp), %rdi
callq 0xa830
movq %rax, -0x2c8(%rbp)
leaq -0x2c0(%rbp), %rdi
leaq -0x2c8(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x2ad85
jmp 0x2ae38
leaq -0x2c0(%rbp), %rdi
callq 0xa8a0
movq %rax, -0x2d0(%rbp)
leaq -0x1e8(%rbp), %rdi
movq %rdi, -0x440(%rbp)
callq 0xa800
movq -0x440(%rbp), %rdi
movq %rax, -0x2e0(%rbp)
callq 0xa830
movq %rax, -0x2e8(%rbp)
movq -0x2d0(%rbp), %rdx
movq -0x2e0(%rbp), %rdi
movq -0x2e8(%rbp), %rsi
callq 0x3f2b0
movq %rax, -0x438(%rbp)
jmp 0x2ade8
movq -0x438(%rbp), %rax
movq %rax, -0x2d8(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0xa800
movq %rax, -0x2f0(%rbp)
leaq -0x2d8(%rbp), %rdi
leaq -0x2f0(%rbp), %rsi
callq 0xf890
movl %eax, %ecx
movq -0x2d0(%rbp), %rax
movl %ecx, (%rax)
leaq -0x2c0(%rbp), %rdi
callq 0xa930
jmp 0x2ad69
jmp 0x2ae3a
leaq -0x2a0(%rbp), %rdi
callq 0x3e3e0
jmp 0x2ad06
leaq -0x1e8(%rbp), %rdi
callq 0xf940
movq %rax, -0x450(%rbp)
leaq -0x309(%rbp), %rdi
movq %rdi, -0x448(%rbp)
callq 0xa710
movq -0x450(%rbp), %rsi
movq -0x448(%rbp), %rdx
leaq -0x308(%rbp), %rdi
callq 0xa730
jmp 0x2ae8d
leaq -0x309(%rbp), %rdi
callq 0xa7a0
leaq -0x168(%rbp), %rdi
callq 0xfd70
subl $0x1, %eax
movl %eax, -0x310(%rbp)
cmpl $0x0, -0x310(%rbp)
jl 0x2b044
movslq -0x310(%rbp), %rsi
leaq -0x168(%rbp), %rdi
callq 0xaab0
movq %rax, -0x318(%rbp)
movq -0x318(%rbp), %rdi
callq 0xa800
movq %rax, -0x320(%rbp)
movq -0x318(%rbp), %rdi
callq 0xa830
movq %rax, -0x328(%rbp)
leaq -0x320(%rbp), %rdi
leaq -0x328(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x2af14
jmp 0x2af73
leaq -0x320(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x32c(%rbp)
movslq -0x32c(%rbp), %rsi
leaq -0x308(%rbp), %rdi
callq 0xa7c0
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
leaq -0x320(%rbp), %rdi
callq 0xa930
jmp 0x2aefb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x110(%rbp)
movl %eax, -0x114(%rbp)
leaq -0x309(%rbp), %rdi
callq 0xa7a0
jmp 0x2b294
leaq -0x288(%rbp), %rax
movq %rax, -0x340(%rbp)
leaq -0x308(%rbp), %rax
movq %rax, -0x338(%rbp)
movslq -0x310(%rbp), %rsi
leaq -0x168(%rbp), %rdi
movq %rdi, -0x458(%rbp)
callq 0xaab0
movq %rax, %rdi
callq 0xa800
movq -0x458(%rbp), %rdi
movq %rax, -0x348(%rbp)
movslq -0x310(%rbp), %rsi
callq 0xaab0
movq %rax, %rdi
callq 0xa830
movq %rax, -0x350(%rbp)
movups -0x340(%rbp), %xmm0
movaps %xmm0, -0x360(%rbp)
movq -0x348(%rbp), %rdi
movq -0x350(%rbp), %rsi
movq -0x360(%rbp), %rdx
movq -0x358(%rbp), %rcx
callq 0x2b340
jmp 0x2b00b
jmp 0x2b00d
movl -0x310(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x310(%rbp)
jmp 0x2aeae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x110(%rbp)
movl %eax, -0x114(%rbp)
leaq -0x308(%rbp), %rdi
callq 0xab00
jmp 0x2b294
movb $0x0, -0x361(%rbp)
leaq -0x168(%rbp), %rdi
callq 0xfd70
addq %rax, %rax
leaq (%rax,%rax,4), %rax
movq %rax, -0x370(%rbp)
leaq -0x170(%rbp), %rdi
leaq -0x370(%rbp), %rsi
callq 0xf190
movq %rax, -0x460(%rbp)
jmp 0x2b081
movq -0x380(%rbp), %rdi
movq -0x460(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x170(%rbp)
movq -0x20(%rbp), %rcx
movq -0xb0(%rbp), %rax
subq %rax, %rcx
movq -0x170(%rbp), %r8
leaq -0x168(%rbp), %rsi
leaq -0x288(%rbp), %rdx
callq 0x2a050
movb %al, -0x461(%rbp)
jmp 0x2b0c9
movb -0x461(%rbp), %al
testb $0x1, %al
jne 0x2b0d5
jmp 0x2b0dc
movb $0x1, -0x361(%rbp)
testb $0x1, -0x361(%rbp)
je 0x2b251
movq -0x380(%rbp), %rax
movl $0x0, -0x374(%rbp)
addq $0x48, %rax
movq %rax, -0x470(%rbp)
movl -0x14(%rbp), %edi
callq 0x3c880
movl %eax, -0x468(%rbp)
jmp 0x2b115
movq -0x470(%rbp), %rdi
movl -0x468(%rbp), %eax
movslq %eax, %rsi
callq 0xa7c0
cmpl $0x1, (%rax)
jne 0x2b16c
movl -0x14(%rbp), %edi
callq 0x3c880
movl %eax, -0x474(%rbp)
jmp 0x2b13f
movl -0x474(%rbp), %esi
movq -0x380(%rbp), %rdi
movl $0x1, %edx
callq 0x10a60
movl %eax, -0x478(%rbp)
jmp 0x2b15e
movl -0x478(%rbp), %eax
movl %eax, -0x374(%rbp)
jmp 0x2b1a4
movl -0x14(%rbp), %edi
callq 0x3c880
movl %eax, -0x47c(%rbp)
jmp 0x2b17c
movl -0x47c(%rbp), %esi
movq -0x380(%rbp), %rdi
xorl %edx, %edx
callq 0x10a60
movl %eax, -0x480(%rbp)
jmp 0x2b198
movl -0x480(%rbp), %eax
movl %eax, -0x374(%rbp)
movq -0x380(%rbp), %rax
movq %rax, -0x490(%rbp)
movl -0x14(%rbp), %edi
callq 0x3c880
movl %eax, -0x484(%rbp)
jmp 0x2b1c2
movl -0x484(%rbp), %esi
movq -0x490(%rbp), %rdi
callq 0x5ecc0
movb %al, -0x491(%rbp)
jmp 0x2b1dc
movb -0x491(%rbp), %al
testb $0x1, %al
jne 0x2b1e8
jmp 0x2b1ea
jmp 0x2b209
leaq 0x5bc4c(%rip), %rdi     # 0x86e3d
leaq 0x5bc66(%rip), %rsi     # 0x86e5e
movl $0x92, %edx
leaq 0x5bc65(%rip), %rcx     # 0x86e69
callq 0x4260
movq -0x380(%rbp), %rdi
addq $0x218, %rdi            # imm = 0x218
movl -0x374(%rbp), %esi
callq 0x61410
jmp 0x2b224
movq -0x380(%rbp), %rdi
addq $0x218, %rdi            # imm = 0x218
movl $0x1, %esi
callq 0x61590
jmp 0x2b23e
movl $0x1, -0x4(%rbp)
movl $0x1, -0x14c(%rbp)
jmp 0x2b262
movl $0x0, -0x4(%rbp)
movl $0x1, -0x14c(%rbp)
leaq -0x308(%rbp), %rdi
callq 0xab00
leaq -0x288(%rbp), %rdi
callq 0xb910
leaq -0x1e8(%rbp), %rdi
callq 0xab00
leaq -0x168(%rbp), %rdi
callq 0xb3b0
jmp 0x2b2ba
leaq -0x288(%rbp), %rdi
callq 0xb910
leaq -0x1e8(%rbp), %rdi
callq 0xab00
leaq -0x168(%rbp), %rdi
callq 0xb3b0
jmp 0x2b2d1
leaq -0xa8(%rbp), %rdi
callq 0x3e0a0
leaq -0x78(%rbp), %rdi
callq 0xb3b0
jmp 0x2b2e8
leaq -0xa8(%rbp), %rdi
callq 0x3e0a0
leaq -0x78(%rbp), %rdi
callq 0xb3b0
jmp 0x2b2f4
movl -0x4(%rbp), %eax
addq $0x4a0, %rsp            # imm = 0x4A0
popq %rbp
retq
movq -0x110(%rbp), %rdi
callq 0x4610