// File: Laakeri[P]maxpre/src/preprocessor.cpp
// Function: maxPreprocessor::Preprocessor::getPreprocessedInstance()
PreprocessedInstance Preprocessor::getPreprocessedInstance() {
	PreprocessedInstance ret;
	for (unsigned i = 0; i < pi.clauses.size(); i++) {
		if (!pi.isClauseRemoved(i) && pi.clauses[i].isHard()) {
			ret.clauses.push_back(pi.clauses[i].lit);
			ret.weights.push_back(pi.clauses[i].weight);
		}
	}
	for (int var = 0; var < pi.vars; var++) {
		if (pi.isLabel[var] == VAR_TRUE && !pi.isVarRemoved(var)) {
			assert(pi.litClauses[posLit(var)].size() == 1);
		}
		if (pi.isLabel[var] == VAR_FALSE && !pi.isVarRemoved(var)) {
			assert(pi.litClauses[negLit(var)].size() == 1);
		}
		if (pi.litClauses[posLit(var)].size() > 0 || pi.litClauses[negLit(var)].size() > 0) {
			if (pi.isLabel[var] == VAR_TRUE) {
				if (pi.litClauses[negLit(var)].size() == 0) {
					trace.setVar(var, true);
				}
				else {
					assert(pi.litClauses[posLit(var)].size() == 1);
					assert(pi.clauses[pi.litClauses[posLit(var)][0]].lit.size() == 1);
					assert(!pi.clauses[pi.litClauses[posLit(var)][0]].isHard());
					ret.labels.push_back({posLit(var), pi.clauses[pi.litClauses[posLit(var)][0]].weight});
				}
			}
			else if(pi.isLabel[var] == VAR_FALSE) {
				if (pi.litClauses[posLit(var)].size() == 0) {
					trace.setVar(var, false);
				}
				else {
					assert(pi.litClauses[negLit(var)].size() == 1);
					assert(pi.clauses[pi.litClauses[negLit(var)][0]].lit.size() == 1);
					assert(!pi.clauses[pi.litClauses[negLit(var)][0]].isHard());
					ret.labels.push_back({negLit(var), pi.clauses[pi.litClauses[negLit(var)][0]].weight});
				}
			}
		}
	}
	if (trace.removedWeight > 0) {
		int nVar = pi.getExcessVar();
		ret.labels.push_back({negLit(nVar), trace.removedWeight});
		ret.clauses.push_back({posLit(nVar)});
		ret.weights.push_back(HARDWEIGHT);
	}
	auto cmp = [&](pair<int, uint64_t> a, pair<int, uint64_t> b) {
		if (litVariable(a.F) >= pi.vars || litVariable(b.F) >= pi.vars) return a.F > b.F;
		return pi.litClauses[a.F].size() + pi.litClauses[litNegation(a.F)].size() > pi.litClauses[b.F].size() + pi.litClauses[litNegation(b.F)].size();
	};
	sort(ret.labels.begin(), ret.labels.end(), cmp);
	for (int i = 0; i < (int)ret.labels.size(); i++) {
		ret.clauses.push_back({ret.labels[i].F});
		ret.weights.push_back(ret.labels[i].S);
	}
	return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2b0, %rsp            # imm = 0x2B0
movq %rdi, -0x110(%rbp)
movq %rdi, %rax
movq %rax, -0x108(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x100(%rbp)
movb $0x0, -0x11(%rbp)
callq 0x3f4f0
movl $0x0, -0x18(%rbp)
movq -0x100(%rbp), %rdi
movl -0x18(%rbp), %eax
movq %rax, -0x118(%rbp)
callq 0x3c4b0
movq %rax, %rcx
movq -0x118(%rbp), %rax
cmpq %rcx, %rax
jae 0x2d8f9
movq -0x100(%rbp), %rdi
movl -0x18(%rbp), %esi
callq 0x5eb70
movb %al, -0x119(%rbp)
jmp 0x2d83f
movb -0x119(%rbp), %al
testb $0x1, %al
jne 0x2d8e9
jmp 0x2d84f
movq -0x100(%rbp), %rdi
movl -0x18(%rbp), %eax
movl %eax, %esi
callq 0x3c600
movq %rax, %rdi
callq 0x60e90
movb %al, -0x11a(%rbp)
jmp 0x2d870
movb -0x11a(%rbp), %al
testb $0x1, %al
jne 0x2d87c
jmp 0x2d8e9
movq -0x100(%rbp), %rdi
movl -0x18(%rbp), %eax
movl %eax, %esi
callq 0x3c600
movq -0x110(%rbp), %rdi
movq %rax, %rsi
callq 0x3e2b0
jmp 0x2d89e
movq -0x100(%rbp), %rdi
movq -0x110(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x128(%rbp)
movl -0x18(%rbp), %eax
movl %eax, %esi
callq 0x3c600
movq -0x128(%rbp), %rdi
movq %rax, %rsi
addq $0x18, %rsi
callq 0x3f530
jmp 0x2d8d6
jmp 0x2d8e9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x2e3fe
jmp 0x2d8eb
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x2d7ff
movl $0x0, -0x28(%rbp)
movq -0x100(%rbp), %rcx
movl -0x28(%rbp), %eax
cmpl 0x60(%rcx), %eax
jge 0x2e08b
movq -0x100(%rbp), %rdi
addq $0x48, %rdi
movslq -0x28(%rbp), %rsi
callq 0xa7c0
cmpl $0x1, (%rax)
jne 0x2d9bb
movq -0x100(%rbp), %rdi
movl -0x28(%rbp), %esi
callq 0x5ecc0
movb %al, -0x129(%rbp)
jmp 0x2d947
movb -0x129(%rbp), %al
testb $0x1, %al
jne 0x2d9bb
jmp 0x2d953
movq -0x100(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x138(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5d0
movl %eax, -0x130(%rbp)
jmp 0x2d975
movq -0x138(%rbp), %rdi
movl -0x130(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rdi
callq 0xf940
cmpq $0x1, %rax
jne 0x2d99a
jmp 0x2d9b9
leaq 0x58f7d(%rip), %rdi     # 0x8691e
leaq 0x5891f(%rip), %rsi     # 0x862c7
movl $0x1ae, %edx            # imm = 0x1AE
leaq 0x595f2(%rip), %rcx     # 0x86fa6
callq 0x4260
jmp 0x2d9bb
movq -0x100(%rbp), %rdi
addq $0x48, %rdi
movslq -0x28(%rbp), %rsi
callq 0xa7c0
cmpl $0x2, (%rax)
jne 0x2da63
movq -0x100(%rbp), %rdi
movl -0x28(%rbp), %esi
callq 0x5ecc0
movb %al, -0x139(%rbp)
jmp 0x2d9ef
movb -0x139(%rbp), %al
testb $0x1, %al
jne 0x2da63
jmp 0x2d9fb
movq -0x100(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x148(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5e0
movl %eax, -0x140(%rbp)
jmp 0x2da1d
movq -0x148(%rbp), %rdi
movl -0x140(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rdi
callq 0xf940
cmpq $0x1, %rax
jne 0x2da42
jmp 0x2da61
leaq 0x58f27(%rip), %rdi     # 0x86970
leaq 0x58877(%rip), %rsi     # 0x862c7
movl $0x1b1, %edx            # imm = 0x1B1
leaq 0x5954a(%rip), %rcx     # 0x86fa6
callq 0x4260
jmp 0x2da63
movq -0x100(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x158(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5d0
movl %eax, -0x14c(%rbp)
jmp 0x2da85
movq -0x158(%rbp), %rdi
movl -0x14c(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rdi
callq 0xf940
cmpq $0x0, %rax
ja 0x2daf1
movq -0x100(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x168(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5e0
movl %eax, -0x15c(%rbp)
jmp 0x2daca
movq -0x168(%rbp), %rdi
movl -0x15c(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rdi
callq 0xf940
cmpq $0x0, %rax
jbe 0x2e07b
movq -0x100(%rbp), %rdi
addq $0x48, %rdi
movslq -0x28(%rbp), %rsi
callq 0xa7c0
cmpl $0x1, (%rax)
jne 0x2ddb7
movq -0x100(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x178(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5e0
movl %eax, -0x16c(%rbp)
jmp 0x2db30
movq -0x178(%rbp), %rdi
movl -0x16c(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rdi
callq 0xf940
cmpq $0x0, %rax
jne 0x2db75
movq -0x100(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x28(%rbp), %esi
movl $0x1, %edx
callq 0x5c160
jmp 0x2db70
jmp 0x2ddb2
movq -0x100(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x188(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5d0
movl %eax, -0x17c(%rbp)
jmp 0x2db97
movq -0x188(%rbp), %rdi
movl -0x17c(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rdi
callq 0xf940
cmpq $0x1, %rax
jne 0x2dbbc
jmp 0x2dbdb
leaq 0x58d5b(%rip), %rdi     # 0x8691e
leaq 0x586fd(%rip), %rsi     # 0x862c7
movl $0x1b9, %edx            # imm = 0x1B9
leaq 0x593d0(%rip), %rcx     # 0x86fa6
callq 0x4260
movq -0x100(%rbp), %rax
movq %rax, %rcx
movq %rcx, -0x1a0(%rbp)
addq $0x18, %rax
movq %rax, -0x198(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5d0
movl %eax, -0x18c(%rbp)
jmp 0x2dc07
movq -0x198(%rbp), %rdi
movl -0x18c(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa7c0
movq -0x1a0(%rbp), %rdi
movslq (%rax), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xf940
cmpq $0x1, %rax
jne 0x2dc47
jmp 0x2dc66
leaq 0x593a6(%rip), %rdi     # 0x86ff4
leaq 0x58672(%rip), %rsi     # 0x862c7
movl $0x1ba, %edx            # imm = 0x1BA
leaq 0x59345(%rip), %rcx     # 0x86fa6
callq 0x4260
movq -0x100(%rbp), %rax
movq %rax, %rcx
movq %rcx, -0x1b8(%rbp)
addq $0x18, %rax
movq %rax, -0x1b0(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5d0
movl %eax, -0x1a4(%rbp)
jmp 0x2dc92
movq -0x1b0(%rbp), %rdi
movl -0x1a4(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa7c0
movq -0x1b8(%rbp), %rdi
movslq (%rax), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0x60e90
movb %al, -0x1b9(%rbp)
jmp 0x2dcd2
movb -0x1b9(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2dce0
jmp 0x2dce2
jmp 0x2dd01
leaq 0x59345(%rip), %rdi     # 0x8702e
leaq 0x585d7(%rip), %rsi     # 0x862c7
movl $0x1bb, %edx            # imm = 0x1BB
leaq 0x592aa(%rip), %rcx     # 0x86fa6
callq 0x4260
movq -0x110(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x1c8(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5d0
movl %eax, -0x1c0(%rbp)
jmp 0x2dd23
movq -0x100(%rbp), %rax
movl -0x1c0(%rbp), %ecx
movl %ecx, -0x3c(%rbp)
movq %rax, %rcx
movq %rcx, -0x1e0(%rbp)
addq $0x18, %rax
movq %rax, -0x1d8(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5d0
movl %eax, -0x1cc(%rbp)
jmp 0x2dd58
movq -0x1d8(%rbp), %rdi
movl -0x1cc(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa7c0
movq -0x1e0(%rbp), %rdi
movslq (%rax), %rsi
callq 0x3c600
movq %rax, %rdx
addq $0x18, %rdx
leaq -0x38(%rbp), %rdi
leaq -0x3c(%rbp), %rsi
callq 0x3f5a0
jmp 0x2dd9e
movq -0x1c8(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x3cd60
jmp 0x2ddb0
jmp 0x2ddb2
jmp 0x2e079
movq -0x100(%rbp), %rdi
addq $0x48, %rdi
movslq -0x28(%rbp), %rsi
callq 0xa7c0
cmpl $0x2, (%rax)
jne 0x2e077
movq -0x100(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x1f0(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5d0
movl %eax, -0x1e4(%rbp)
jmp 0x2ddf6
movq -0x1f0(%rbp), %rdi
movl -0x1e4(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rdi
callq 0xf940
cmpq $0x0, %rax
jne 0x2de38
movq -0x100(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x28(%rbp), %esi
xorl %edx, %edx
callq 0x5c160
jmp 0x2de33
jmp 0x2e075
movq -0x100(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x200(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5e0
movl %eax, -0x1f4(%rbp)
jmp 0x2de5a
movq -0x200(%rbp), %rdi
movl -0x1f4(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rdi
callq 0xf940
cmpq $0x1, %rax
jne 0x2de7f
jmp 0x2de9e
leaq 0x58aea(%rip), %rdi     # 0x86970
leaq 0x5843a(%rip), %rsi     # 0x862c7
movl $0x1c4, %edx            # imm = 0x1C4
leaq 0x5910d(%rip), %rcx     # 0x86fa6
callq 0x4260
movq -0x100(%rbp), %rax
movq %rax, %rcx
movq %rcx, -0x218(%rbp)
addq $0x18, %rax
movq %rax, -0x210(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5e0
movl %eax, -0x204(%rbp)
jmp 0x2deca
movq -0x210(%rbp), %rdi
movl -0x204(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa7c0
movq -0x218(%rbp), %rdi
movslq (%rax), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0xf940
cmpq $0x1, %rax
jne 0x2df0a
jmp 0x2df29
leaq 0x59151(%rip), %rdi     # 0x87062
leaq 0x583af(%rip), %rsi     # 0x862c7
movl $0x1c5, %edx            # imm = 0x1C5
leaq 0x59082(%rip), %rcx     # 0x86fa6
callq 0x4260
movq -0x100(%rbp), %rax
movq %rax, %rcx
movq %rcx, -0x230(%rbp)
addq $0x18, %rax
movq %rax, -0x228(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5e0
movl %eax, -0x21c(%rbp)
jmp 0x2df55
movq -0x228(%rbp), %rdi
movl -0x21c(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa7c0
movq -0x230(%rbp), %rdi
movslq (%rax), %rsi
callq 0x3c600
movq %rax, %rdi
callq 0x60e90
movb %al, -0x231(%rbp)
jmp 0x2df95
movb -0x231(%rbp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x2dfa3
jmp 0x2dfa5
jmp 0x2dfc4
leaq 0x590f0(%rip), %rdi     # 0x8709c
leaq 0x58314(%rip), %rsi     # 0x862c7
movl $0x1c6, %edx            # imm = 0x1C6
leaq 0x58fe7(%rip), %rcx     # 0x86fa6
callq 0x4260
movq -0x110(%rbp), %rax
addq $0x30, %rax
movq %rax, -0x240(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5e0
movl %eax, -0x238(%rbp)
jmp 0x2dfe6
movq -0x100(%rbp), %rax
movl -0x238(%rbp), %ecx
movl %ecx, -0x54(%rbp)
movq %rax, %rcx
movq %rcx, -0x258(%rbp)
addq $0x18, %rax
movq %rax, -0x250(%rbp)
movl -0x28(%rbp), %edi
callq 0x3c5e0
movl %eax, -0x244(%rbp)
jmp 0x2e01b
movq -0x250(%rbp), %rdi
movl -0x244(%rbp), %eax
movslq %eax, %rsi
callq 0xaab0
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xa7c0
movq -0x258(%rbp), %rdi
movslq (%rax), %rsi
callq 0x3c600
movq %rax, %rdx
addq $0x18, %rdx
leaq -0x50(%rbp), %rdi
leaq -0x54(%rbp), %rsi
callq 0x3f5a0
jmp 0x2e061
movq -0x240(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x3cd60
jmp 0x2e073
jmp 0x2e075
jmp 0x2e077
jmp 0x2e079
jmp 0x2e07b
jmp 0x2e07d
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x2d900
movq -0x100(%rbp), %rax
cmpq $0x0, 0x2f0(%rax)
jbe 0x2e20f
movq -0x100(%rbp), %rdi
callq 0x5fd70
movl %eax, -0x25c(%rbp)
jmp 0x2e0b4
movq -0x110(%rbp), %rax
movl -0x25c(%rbp), %ecx
movl %ecx, -0x58(%rbp)
addq $0x30, %rax
movq %rax, -0x268(%rbp)
movl -0x58(%rbp), %edi
callq 0x3c5e0
movl %eax, -0x260(%rbp)
jmp 0x2e0df
movq -0x100(%rbp), %rdx
movl -0x260(%rbp), %eax
movl %eax, -0x6c(%rbp)
addq $0x2f0, %rdx            # imm = 0x2F0
leaq -0x68(%rbp), %rdi
leaq -0x6c(%rbp), %rsi
callq 0x3f5a0
jmp 0x2e105
movq -0x268(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x3cd60
jmp 0x2e117
movq -0x110(%rbp), %rax
movq %rax, -0x278(%rbp)
movl -0x58(%rbp), %edi
callq 0x3c5d0
movl %eax, -0x26c(%rbp)
jmp 0x2e135
movl -0x26c(%rbp), %eax
movl %eax, -0x9c(%rbp)
leaq -0x9c(%rbp), %rax
movq %rax, -0x98(%rbp)
movq $0x1, -0x90(%rbp)
leaq -0x9d(%rbp), %rdi
movq %rdi, -0x280(%rbp)
callq 0xa710
movq -0x280(%rbp), %rcx
movq -0x98(%rbp), %rsi
movq -0x90(%rbp), %rdx
leaq -0x88(%rbp), %rdi
callq 0x3c9b0
jmp 0x2e190
movq -0x278(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x3e200
jmp 0x2e1a5
leaq -0x88(%rbp), %rdi
callq 0xab00
leaq -0x9d(%rbp), %rdi
callq 0xa7a0
movq -0x110(%rbp), %rdi
addq $0x18, %rdi
leaq 0x59021(%rip), %rsi     # 0x871f0
callq 0x3f530
jmp 0x2e1d6
jmp 0x2e20f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x2e1fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xab00
leaq -0x9d(%rbp), %rdi
callq 0xa7a0
jmp 0x2e3fe
movq -0x110(%rbp), %rdi
movq -0x100(%rbp), %rax
movq %rax, -0xa8(%rbp)
addq $0x30, %rdi
movq %rdi, -0x288(%rbp)
callq 0x3cdc0
movq -0x288(%rbp), %rdi
movq %rax, -0xb0(%rbp)
callq 0x3cdf0
movq %rax, -0xb8(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xb0(%rbp), %rdi
movq -0xb8(%rbp), %rsi
movq -0xc0(%rbp), %rdx
callq 0x2e420
jmp 0x2e278
movl $0x0, -0xc4(%rbp)
movq -0x110(%rbp), %rdi
movl -0xc4(%rbp), %eax
movl %eax, -0x28c(%rbp)
addq $0x30, %rdi
callq 0x3f5d0
movq %rax, %rcx
movl -0x28c(%rbp), %eax
cmpl %ecx, %eax
jge 0x2e3d8
movq -0x110(%rbp), %rdi
movq %rdi, %rax
movq %rax, -0x2a0(%rbp)
addq $0x30, %rdi
movslq -0xc4(%rbp), %rsi
callq 0x3f5f0
movl (%rax), %eax
movl %eax, -0xf4(%rbp)
leaq -0xf4(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq $0x1, -0xe8(%rbp)
leaq -0xf5(%rbp), %rdi
movq %rdi, -0x298(%rbp)
callq 0xa710
movq -0x298(%rbp), %rcx
movq -0xf0(%rbp), %rsi
movq -0xe8(%rbp), %rdx
leaq -0xe0(%rbp), %rdi
callq 0x3c9b0
jmp 0x2e327
movq -0x2a0(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0x3e200
jmp 0x2e33c
leaq -0xe0(%rbp), %rdi
callq 0xab00
leaq -0xf5(%rbp), %rdi
callq 0xa7a0
movq -0x110(%rbp), %rdi
movq %rdi, %rax
addq $0x18, %rax
movq %rax, -0x2a8(%rbp)
addq $0x30, %rdi
movslq -0xc4(%rbp), %rsi
callq 0x3f5f0
movq -0x2a8(%rbp), %rdi
movq %rax, %rsi
addq $0x8, %rsi
callq 0x3f530
jmp 0x2e38e
jmp 0x2e390
movl -0xc4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc4(%rbp)
jmp 0x2e282
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
jmp 0x2e3ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x20(%rbp)
movl %eax, -0x24(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0xab00
leaq -0xf5(%rbp), %rdi
callq 0xa7a0
jmp 0x2e3fe
movb $0x1, -0x11(%rbp)
testb $0x1, -0x11(%rbp)
jne 0x2e3ee
movq -0x110(%rbp), %rdi
callq 0xb7c0
movq -0x108(%rbp), %rax
addq $0x2b0, %rsp            # imm = 0x2B0
popq %rbp
retq
movq -0x110(%rbp), %rdi
callq 0xb7c0
movq -0x20(%rbp), %rdi
callq 0x4610
nopw %cs:(%rax,%rax)