// File: /workspace/github_cpp_makefile_star2_O1/Laakeri[P]maxpre/src/preprocessor.cpp
// Function: maxPreprocessor::Preprocessor::eliminateReduntantLabels()
int Preprocessor::eliminateReduntantLabels() {
	map<int64_t, map<int, vector<int> > > labels;
	vector<int> ls;
	for (int var = 0; var < pi.vars; var++) {
		if (pi.isLabel[var]) {
			if (pi.isLabel[var] == VAR_TRUE) {
				if (pi.litClauses[negLit(var)].size() == 1) {
					int c = pi.litClauses[negLit(var)][0];
					for (int lit : pi.clauses[c].lit) {
						labels[pi.labelWeight(var)][lit].push_back(posLit(var));
					}
					ls.push_back(posLit(var));
				}
			}
			else {
				if (pi.litClauses[posLit(var)].size() == 1) {
					int c = pi.litClauses[posLit(var)][0];
					for (int lit : pi.clauses[c].lit) {
						labels[pi.labelWeight(var)][lit].push_back(negLit(var));
					}
					ls.push_back(negLit(var));
				}
			}
		}
	}
	vector<int> matched(pi.vars);
	int fnd = 0;
	//priorize matching ternary clauses
	for (int lb : ls) {
		if (matched[litVariable(lb)]) continue;
		int c = pi.litClauses[litNegation(lb)][0];
		if (pi.clauses[c].lit.size() != 3) continue;
		vector<int> lits;
		for (int lit : pi.clauses[c].lit) {
			if (!pi.isLabel[litVariable(lit)]) lits.push_back(litNegation(lit));
		}
		if (lits.size() != 2) continue;
		int tl = lits[0];
		if (pi.litClauses[lits[1]].size() < pi.litClauses[tl].size()) tl = lits[1];
		for (int c2 : pi.litClauses[tl]) {
			if (pi.clauses[c2].lit.size() != 3) continue;
			int lb2 = -1;
			vector<int> lits2;
			for (int lit : pi.clauses[c2].lit) {
				if (!pi.isLabel[litVariable(lit)]) lits2.push_back(lit);
				else lb2 = litNegation(lit);
			}
			if (lits2.size() != 2) continue;
			if (lb2 == -1) continue;
			if (lb2 == lb) continue;
			if (pi.labelWeight(litVariable(lb)) != pi.labelWeight(litVariable(lb2))) continue;
			if (matched[litVariable(lb2)]) continue;
			if (pi.litClauses[litNegation(lb2)].size() > 1) continue;
			if ((lits[0] == lits2[0] && lits[1] == lits2[1]) || (lits[1] == lits2[0] && lits[0] == lits2[1])) {
				fnd++;
				matched[litVariable(lb)] = 1;
				matched[litVariable(lb2)] = 1;
				pi.removeLiteralFromClause(litNegation(lb2), c2);
				pi.addLiteralToClause(litNegation(lb), c2);
				pi.removeClause(pi.litClauses[lb2][0]);
				assert(pi.isVarRemoved(litVariable(lb2)));
				trace.labelEliminate(lb, lb2, lits2[0]);
				trace.setVar(litVariable(lb2), litValue(lb2));
				pi.isLabel[litVariable(lb2)] = VAR_UNDEFINED;
				break;
			}
		}
	}
	//match greedily
	for (unsigned i = 0; i < ls.size(); i++) {
		if (matched[litVariable(ls[i])]) continue;
		int c1 = pi.litClauses[litNegation(ls[i])][0];
		for (int lit : pi.clauses[c1].lit) {
			if (pi.isLabel[litVariable(lit)]) continue;
			for (int l2 : labels[pi.labelWeight(litVariable(ls[i]))][litNegation(lit)]) {
				if (matched[litVariable(l2)]) continue;
				int c2 = pi.litClauses[litNegation(l2)][0];
				bool taut = false;
				int tautli = 0;
				unsigned j2 = 0;
				for (unsigned j = 0; j < pi.clauses[c1].lit.size(); j++) {
					while (j2 < pi.clauses[c2].lit.size() && pi.clauses[c2].lit[j2] < pi.clauses[c1].lit[j]) {
						if (pi.clauses[c2].lit[j2] == litNegation(pi.clauses[c1].lit[j])) {
							tautli = pi.clauses[c2].lit[j2];
							taut = true;
						}
						j2++;
					}
					if (j2 < pi.clauses[c2].lit.size() && pi.clauses[c2].lit[j2] == litNegation(pi.clauses[c1].lit[j])) {
						tautli = pi.clauses[c2].lit[j2];
						taut = true;
					}
					if (taut) break;
				}
				assert(taut == true);
				fnd++;
				matched[litVariable(ls[i])] = 1;
				matched[litVariable(l2)] = 1;
				pi.removeLiteralFromClause(litNegation(l2), c2);
				pi.addLiteralToClause(litNegation(ls[i]), c2);
				pi.removeClause(pi.litClauses[l2][0]);
				assert(pi.isVarRemoved(litVariable(l2)));
				trace.labelEliminate(ls[i], l2, tautli);
				trace.setVar(litVariable(l2), litValue(l2));
				pi.isLabel[litVariable(l2)] = VAR_UNDEFINED;
				break;
			}
			if (matched[litVariable(ls[i])]) break;
		}
	}
	return fnd;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %rdi, %r12
leaq 0xf0(%rsp), %rax
movl $0x0, (%rax)
xorl %ecx, %ecx
movq %rcx, 0x8(%rax)
movq %rax, 0x10(%rax)
movq %rax, 0x18(%rax)
movq %rcx, 0x20(%rax)
movq %rcx, 0x20(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movl 0x60(%rdi), %eax
testl %eax, %eax
movq %rdi, (%rsp)
jle 0xa408
xorl %r14d, %r14d
movq %r12, %rsi
leaq 0x90(%rsp), %r12
leaq 0x60(%rsp), %rbp
movq 0x48(%rsi), %rax
movl (%rax,%r14,4), %eax
testl %eax, %eax
je 0xa3f5
cmpl $0x1, %eax
jne 0xa2d3
movq %r14, %rax
shlq $0x21, %rax
sarq $0x20, %rax
incq %rax
movq (%rsp), %rsi
movq 0x18(%rsi), %rcx
leaq (%rax,%rax,2), %rdx
movq (%rcx,%rdx,8), %rax
movq 0x8(%rcx,%rdx,8), %rcx
subq %rax, %rcx
cmpq $0x4, %rcx
jne 0xa3f5
leaq (%r14,%r14), %rbx
movslq (%rax), %rax
movq (%rsi), %rcx
leaq (%rax,%rax,4), %rax
movq (%rcx,%rax,8), %r15
movq 0x8(%rcx,%rax,8), %r13
cmpq %r13, %r15
je 0xa3b5
movl (%r15), %eax
movl %eax, 0x60(%rsp)
movq (%rsp), %rdi
movl %r14d, %esi
callq 0x285da
movq %rax, 0x90(%rsp)
leaq 0xe8(%rsp), %rdi
movq %r12, %rsi
callq 0x1f458
movq %rax, %rdi
movq %rbp, %rsi
callq 0x1f4be
movl %ebx, 0x30(%rsp)
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0xa2c0
movl %ebx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0xa2cd
movq %rax, %rdi
leaq 0x30(%rsp), %rdx
callq 0x20b8a
addq $0x4, %r15
jmp 0xa267
movq %r14, %rax
shlq $0x21, %rax
sarq $0x20, %rax
movq (%rsp), %rsi
movq 0x18(%rsi), %rcx
leaq (%rax,%rax,2), %rdx
movq (%rcx,%rdx,8), %rax
movq 0x8(%rcx,%rdx,8), %rcx
subq %rax, %rcx
cmpq $0x4, %rcx
jne 0xa3f5
leaq (%r14,%r14), %rcx
movq %rcx, 0x58(%rsp)
movslq (%rax), %rax
movq (%rsi), %rcx
leaq (%rax,%rax,4), %rax
movq (%rcx,%rax,8), %r15
movq 0x8(%rcx,%rax,8), %rbx
cmpq %rbx, %r15
je 0xa395
movq 0x58(%rsp), %rax
movl %eax, %r13d
orl $0x1, %r13d
movl (%r15), %eax
movl %eax, 0x60(%rsp)
movq (%rsp), %rdi
movl %r14d, %esi
callq 0x285da
movq %rax, 0x90(%rsp)
leaq 0xe8(%rsp), %rdi
movq %r12, %rsi
callq 0x1f458
movq %rax, %rdi
movq %rbp, %rsi
callq 0x1f4be
movl %r13d, 0x30(%rsp)
movq 0x8(%rax), %rsi
cmpq 0x10(%rax), %rsi
je 0xa37f
movl %r13d, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%rax)
jmp 0xa38c
movq %rax, %rdi
leaq 0x30(%rsp), %rdx
callq 0x20b8a
addq $0x4, %r15
cmpq %rbx, %r15
jne 0xa32d
movq 0x58(%rsp), %rax
orq $0x1, %rax
movl %eax, 0x90(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0xa3e4
movl %eax, (%rsi)
jmp 0xa3ca
movl %ebx, 0x90(%rsp)
movq 0x18(%rsp), %rsi
cmpq 0x20(%rsp), %rsi
je 0xa3d5
movl %ebx, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x18(%rsp)
jmp 0xa3f1
leaq 0x10(%rsp), %rdi
movq %r12, %rdx
callq 0x20b8a
jmp 0xa3f1
leaq 0x10(%rsp), %rdi
movq %r12, %rdx
callq 0x20b8a
movq (%rsp), %rsi
incq %r14
movslq 0x60(%rsi), %rax
cmpq %rax, %r14
jl 0xa207
movq %rsi, %r12
movslq %eax, %rsi
leaq 0x90(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x8c32
movq 0x10(%rsp), %r13
movq 0x18(%rsp), %r15
cmpq %r15, %r13
je 0xa81b
leaq 0x2f0(%r12), %rax
movq %rax, 0x80(%rsp)
movl $0x0, 0xc(%rsp)
leaq 0x60(%rsp), %rbp
movq %r15, 0xb8(%rsp)
movslq (%r13), %rcx
movl %ecx, %esi
sarl %esi
movslq %esi, %rdi
movq 0x90(%rsp), %rax
cmpl $0x0, (%rax,%rdi,4)
jne 0xa80c
movq %rcx, 0x50(%rsp)
movq %rcx, %r8
xorq $0x1, %r8
movq (%r12), %rax
movq 0x18(%r12), %rcx
leaq (%r8,%r8,2), %rdx
movq (%rcx,%rdx,8), %rcx
movslq (%rcx), %rcx
leaq (%rcx,%rcx,4), %rcx
movq 0x8(%rax,%rcx,8), %rdx
subq (%rax,%rcx,8), %rdx
cmpq $0xc, %rdx
jne 0xa80c
movq %r8, 0xa8(%rsp)
movq %rdi, 0xb0(%rsp)
movl %esi, 0x88(%rsp)
leaq (%rax,%rcx,8), %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
movq (%rax), %rbx
movq 0x8(%rax), %r14
cmpq %r14, %rbx
je 0xa528
movl (%rbx), %eax
movl %eax, %ecx
sarl %ecx
movslq %ecx, %rcx
movq 0x48(%r12), %rdx
cmpl $0x0, (%rdx,%rcx,4)
jne 0xa522
xorl $0x1, %eax
movl %eax, 0x30(%rsp)
movq 0x68(%rsp), %rsi
cmpq 0x70(%rsp), %rsi
je 0xa515
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x68(%rsp)
jmp 0xa522
movq %rbp, %rdi
leaq 0x30(%rsp), %rdx
callq 0x20b8a
addq $0x4, %rbx
jmp 0xa4dc
movq 0x60(%rsp), %rax
movq 0x68(%rsp), %rcx
subq %rax, %rcx
cmpq $0x8, %rcx
jne 0xa7e8
movslq (%rax), %rcx
movslq 0x4(%rax), %rax
movq 0x18(%r12), %rdx
leaq (%rax,%rax,2), %rsi
movq 0x8(%rdx,%rsi,8), %rdi
subq (%rdx,%rsi,8), %rdi
leaq (%rcx,%rcx,2), %rsi
movq 0x8(%rdx,%rsi,8), %r8
subq (%rdx,%rsi,8), %r8
cmpq %r8, %rdi
cmovael %ecx, %eax
cltq
leaq (%rax,%rax,2), %rax
movq (%rdx,%rax,8), %rbp
movq 0x8(%rdx,%rax,8), %rax
movq %rax, 0x58(%rsp)
cmpq %rax, %rbp
je 0xa7e8
movslq (%rbp), %rsi
movq (%r12), %rax
leaq (%rsi,%rsi,4), %rcx
movq 0x8(%rax,%rcx,8), %rdx
subq (%rax,%rcx,8), %rdx
movl $0xe, %ebx
cmpq $0xc, %rdx
jne 0xa7d0
movq %rsi, 0x28(%rsp)
leaq (%rax,%rcx,8), %rax
xorps %xmm0, %xmm0
movaps %xmm0, 0x30(%rsp)
movq $0x0, 0x40(%rsp)
movq (%rax), %rbx
movq 0x8(%rax), %r14
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
cmpq %r14, %rbx
je 0xa62c
movl (%rbx), %eax
movl %eax, 0xc4(%rsp)
movl %eax, %ecx
sarl %ecx
movslq %ecx, %rcx
movq 0x48(%r12), %rdx
cmpl $0x0, (%rdx,%rcx,4)
je 0xa5fb
xorl $0x1, %eax
movl %eax, %r15d
jmp 0xa626
movq 0x38(%rsp), %rsi
cmpq 0x40(%rsp), %rsi
je 0xa614
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x38(%rsp)
jmp 0xa626
leaq 0x30(%rsp), %rdi
leaq 0xc4(%rsp), %rdx
callq 0x98e8
addq $0x4, %rbx
jmp 0xa5d3
movq 0x38(%rsp), %rax
subq 0x30(%rsp), %rax
movl $0xe, %ebx
cmpq $0x8, %rax
jne 0xa7b9
cmpl $-0x1, %r15d
je 0xa7b9
cmpl 0x50(%rsp), %r15d
je 0xa7b9
movq %r12, %rdi
movl 0x88(%rsp), %esi
callq 0x285da
movq %rax, %r14
movq %r12, %rdi
movl %r15d, %r12d
sarl %r12d
movl %r12d, %esi
callq 0x285da
cmpq %rax, %r14
jne 0xa7b5
movslq %r12d, %r14
movq 0x90(%rsp), %rax
cmpl $0x0, (%rax,%r14,4)
jne 0xa7b5
movl %r15d, %esi
xorl $0x1, %esi
movslq %esi, %rcx
movq (%rsp), %rdx
movq 0x18(%rdx), %rdx
leaq (%rcx,%rcx,2), %rcx
movq 0x8(%rdx,%rcx,8), %rdi
subq (%rdx,%rcx,8), %rdi
cmpq $0x4, %rdi
ja 0xa7b5
movq 0x60(%rsp), %rdi
movl (%rdi), %ecx
movq 0x30(%rsp), %rdx
movl (%rdx), %r8d
cmpl %r8d, %ecx
jne 0xa6e2
movl 0x4(%rdi), %r9d
cmpl 0x4(%rdx), %r9d
je 0xa6f7
xorl %ebx, %ebx
cmpl %r8d, 0x4(%rdi)
jne 0xa7b5
cmpl 0x4(%rdx), %ecx
jne 0xa7b5
movl $0x1, %ecx
movq 0xb0(%rsp), %rdx
movl %ecx, (%rax,%rdx,4)
movl %ecx, (%rax,%r14,4)
movq (%rsp), %rbx
movq %rbx, %rdi
movq 0x28(%rsp), %rdx
callq 0x28f40
movq %rbx, %rdi
movq 0xa8(%rsp), %rsi
movq 0x28(%rsp), %rdx
movl $0x1, %ecx
callq 0x28e70
movslq %r15d, %rax
movq 0x18(%rbx), %rcx
leaq (%rax,%rax,2), %rax
movq (%rcx,%rax,8), %rax
movl (%rax), %esi
movq %rbx, %rdi
callq 0x28c34
movq %rbx, %rdi
movl %r12d, %esi
callq 0x2859c
testb %al, %al
je 0xac4c
movq 0x30(%rsp), %rax
movl (%rax), %ecx
movq 0x80(%rsp), %rdi
movq 0x50(%rsp), %rsi
movl %r15d, %edx
callq 0x27c4e
movq (%rsp), %rbx
xorl %edx, %edx
testb $0x1, %r15b
sete %dl
movq 0x80(%rsp), %rdi
movl %r12d, %esi
callq 0x27524
incl 0xc(%rsp)
movq 0x48(%rbx), %rax
movl $0x0, (%rax,%r14,4)
movq %rbx, %r12
movl $0xd, %ebx
jmp 0xa7b9
movq (%rsp), %r12
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0xa7d0
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x32b0
cmpl $0xe, %ebx
je 0xa7d9
testl %ebx, %ebx
jne 0xa7e8
addq $0x4, %rbp
cmpq 0x58(%rsp), %rbp
jne 0xa588
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xa7ff
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
callq 0x32b0
movq 0xb8(%rsp), %r15
leaq 0x60(%rsp), %rbp
addq $0x4, %r13
cmpq %r15, %r13
jne 0xa455
jmp 0xa823
movl $0x0, 0xc(%rsp)
movq 0x10(%rsp), %rax
cmpq %rax, 0x18(%rsp)
je 0xabb7
leaq 0x2f0(%r12), %rcx
movq %rcx, 0x88(%rsp)
xorl %r14d, %r14d
movslq (%rax,%r14,4), %rax
movl %eax, %ecx
sarl %ecx
movslq %ecx, %rcx
movq 0x90(%rsp), %rdx
cmpl $0x0, (%rdx,%rcx,4)
je 0xa87d
incl %r14d
movq 0x10(%rsp), %rax
movq 0x18(%rsp), %rcx
subq %rax, %rcx
sarq $0x2, %rcx
cmpq %r14, %rcx
ja 0xa846
jmp 0xabb7
xorq $0x1, %rax
movq (%r12), %rcx
movq 0x18(%r12), %rdx
leaq (%rax,%rax,2), %rax
movq (%rdx,%rax,8), %rax
movslq (%rax), %rax
leaq (%rax,%rax,4), %rax
movq (%rcx,%rax,8), %rdx
movq %rax, 0xd8(%rsp)
movq 0x8(%rcx,%rax,8), %rcx
movq %rcx, 0xc8(%rsp)
cmpq %rcx, %rdx
je 0xa85f
movq %rdx, %rax
movq %r14, 0x28(%rsp)
movq %rax, 0xd0(%rsp)
movl (%rax), %ebx
movl %ebx, %eax
sarl %eax
movslq %eax, %rcx
movq 0x48(%r12), %rdx
movl $0x15, %eax
cmpl $0x0, (%rdx,%rcx,4)
jne 0xab8b
movq 0x10(%rsp), %rax
movl (%rax,%r14,4), %esi
sarl %esi
movq %r12, %rdi
callq 0x285da
movq %rax, 0x60(%rsp)
leaq 0xe8(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0x1f458
xorl $0x1, %ebx
movl %ebx, 0x30(%rsp)
movq %rax, %rdi
leaq 0x30(%rsp), %rsi
callq 0x1f522
movq (%rax), %r14
movq 0x8(%rax), %rax
cmpq %rax, %r14
movq %rax, 0xe0(%rsp)
je 0xab64
movslq (%r14), %rdx
movl %edx, %r15d
sarl %r15d
movslq %r15d, %r10
movq 0x90(%rsp), %r11
movl (%r11,%r10,4), %ecx
movl %ecx, 0x58(%rsp)
testl %ecx, %ecx
jne 0xab50
movq %rdx, 0x50(%rsp)
movq %rdx, %r8
xorq $0x1, %r8
movq (%r12), %rax
movq 0x18(%r12), %rdi
movq 0xd8(%rsp), %rdx
movq (%rax,%rdx,8), %rcx
movq 0x8(%rax,%rdx,8), %rsi
movq %r8, 0xb8(%rsp)
leaq (%r8,%r8,2), %r8
movq (%rdi,%r8,8), %rdi
movslq (%rdi), %rbp
subq %rcx, %rsi
je 0xaa6b
movq %r11, 0x80(%rsp)
movq %r10, 0xb0(%rsp)
sarq $0x2, %rsi
movq %rbp, 0xa8(%rsp)
leaq (,%rbp,4), %r8
addq %rbp, %r8
movq (%rax,%r8,8), %rdi
movq 0x8(%rax,%r8,8), %r8
subq %rdi, %r8
sarq $0x2, %r8
xorl %r10d, %r10d
xorl %r11d, %r11d
xorl %r13d, %r13d
xorl %r9d, %r9d
movl %r11d, %eax
cmpq %rax, %r8
seta %r12b
jbe 0xaa3f
movl (%rcx,%r10,4), %ebp
movl (%rdi,%rax,4), %ebx
cmpl %ebp, %ebx
jge 0xaa22
movl %ebp, %eax
xorl %ebx, %eax
cmpl $0x1, %eax
movzbl %r9b, %r9d
cmovel %eax, %r9d
cmovel %ebx, %r13d
incl %r11d
cmpq %r11, %r8
seta %r12b
jbe 0xaa3f
movl (%rdi,%r11,4), %ebx
movq %r11, %rax
jmp 0xa9f6
testb %r12b, %r12b
je 0xaa3f
movl (%rdi,%rax,4), %eax
movl (%rcx,%r10,4), %ebx
xorl %eax, %ebx
cmpl $0x1, %ebx
movzbl %r9b, %r9d
cmovel %ebx, %r9d
cmovel %eax, %r13d
testb $0x1, %r9b
jne 0xaa4d
incl %r10d
cmpq %r10, %rsi
ja 0xa9e3
movq (%rsp), %r12
movq 0xb0(%rsp), %r10
movq 0xa8(%rsp), %rbp
movq 0x80(%rsp), %r11
jmp 0xaa71
xorl %r9d, %r9d
xorl %r13d, %r13d
testb $0x1, %r9b
je 0xac0e
movq 0x10(%rsp), %rax
movq 0x28(%rsp), %rcx
movl (%rax,%rcx,4), %eax
sarl %eax
cltq
movl $0x1, %ecx
movl %ecx, (%r11,%rax,4)
movq %r10, %rbx
movl %ecx, (%r11,%r10,4)
movq %r12, %rdi
movq 0xb8(%rsp), %rsi
movl %ebp, %edx
callq 0x28f40
movq 0x10(%rsp), %rax
movq 0x28(%rsp), %rcx
movl (%rax,%rcx,4), %esi
xorl $0x1, %esi
movq %r12, %rdi
movl %ebp, %edx
movl $0x1, %ecx
callq 0x28e70
movq 0x18(%r12), %rax
movq 0x50(%rsp), %rcx
leaq (%rcx,%rcx,2), %rcx
movq (%rax,%rcx,8), %rax
movl (%rax), %esi
movq %r12, %rdi
callq 0x28c34
movq %r12, %rdi
movl %r15d, %esi
callq 0x2859c
testb %al, %al
je 0xac2d
movq 0x10(%rsp), %rax
movq 0x28(%rsp), %rcx
movl (%rax,%rcx,4), %esi
movq 0x88(%rsp), %rdi
movq 0x50(%rsp), %rdx
movl %r13d, %ecx
callq 0x27c4e
xorl %edx, %edx
testb $0x1, 0x50(%rsp)
sete %dl
movq 0x88(%rsp), %rdi
movl %r15d, %esi
callq 0x27524
incl 0xc(%rsp)
movq 0x48(%r12), %rax
movl $0x0, (%rax,%rbx,4)
movq 0xe0(%rsp), %rax
cmpl $0x0, 0x58(%rsp)
je 0xab64
addq $0x4, %r14
cmpq %rax, %r14
jne 0xa93a
movq 0x10(%rsp), %rax
movq 0x28(%rsp), %r14
movl (%rax,%r14,4), %eax
sarl %eax
cltq
movq 0x90(%rsp), %rcx
movl (%rcx,%rax,4), %eax
testl %eax, %eax
movl $0x14, %ecx
cmovnel %ecx, %eax
cmpl $0x15, %eax
je 0xab98
testl %eax, %eax
jne 0xa85f
movq 0xd0(%rsp), %rax
addq $0x4, %rax
cmpq 0xc8(%rsp), %rax
jne 0xa8bf
jmp 0xa85f
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0xabd4
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x32b0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xabeb
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x32b0
leaq 0xe8(%rsp), %rdi
callq 0x2031c
movl 0xc(%rsp), %eax
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x2e771(%rip), %rdi     # 0x39386
leaq 0x2e71b(%rip), %rsi     # 0x39337
leaq 0x2e725(%rip), %rcx     # 0x39348
movl $0xb1, %edx
callq 0x31b0
leaq 0x2e75f(%rip), %rdi     # 0x39393
leaq 0x2e6fc(%rip), %rsi     # 0x39337
leaq 0x2e706(%rip), %rcx     # 0x39348
movl $0xb8, %edx
callq 0x31b0
leaq 0x2e6c2(%rip), %rdi     # 0x39315
leaq 0x2e6dd(%rip), %rsi     # 0x39337
leaq 0x2e6e7(%rip), %rcx     # 0x39348
movl $0x8f, %edx
callq 0x31b0
jmp 0xacb5
jmp 0xacb5
jmp 0xacb5
movq %rax, %rbx
jmp 0xac96
jmp 0xac7c
jmp 0xacb5
jmp 0xacb5
movq %rax, %rbx
movq 0x30(%rsp), %rdi
testq %rdi, %rdi
je 0xac96
movq 0x40(%rsp), %rsi
subq %rdi, %rsi
callq 0x32b0
movq 0x60(%rsp), %rdi
testq %rdi, %rdi
je 0xacbd
movq 0x70(%rsp), %rsi
subq %rdi, %rsi
callq 0x32b0
jmp 0xacbd
jmp 0xacba
jmp 0xacba
jmp 0xacb5
movq %rax, %rbx
jmp 0xacda
movq %rax, %rbx
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0xacda
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x32b0
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0xacf1
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x32b0
leaq 0xe8(%rsp), %rdi
callq 0x2031c
movq %rbx, %rdi
callq 0x34a0