// File: Laakeri[P]maxpre/src/inputreader.cpp
// Function: maxPreprocessor::InputReader::readClauses(std::istream&, bool)
int InputReader::readClauses(istream& input, bool maxSat) {
	clauses.clear();
	weights.clear();
	cardinalityConstraints.clear();
	readError = "";
	currentLine = 0;
	string line;
	while (getline(input, line)) {
		currentLine++;
		if (line.size() > 0 && line[0] == 'p') break;
	}
	if (line.size() == 0 || line[0] != 'p') {
		readError = "Cannot find the p-line of the input";
		return 1;
	}
	stringstream parameterLine;
	parameterLine<<line;
	parameterLine>>line;
	if (line != "p") {
		readError = "Invalid p-line of the input (line "+to_string(currentLine)+")";
		return 1;
	}
	parameterLine>>line>>nbvar>>nbclauses;
	clauses.reserve(nbclauses);
	weights.reserve(nbclauses);
	if (parameterLine.fail()) {
		readError = "Invalid p-line of the input (line "+to_string(currentLine)+")";
		return 1;
	}
	if (line == "wcnf" && maxSat) {
		inputFormat = INPUT_FORMAT_WPMS;
		if (!(parameterLine>>top)) {
			cerr<<"Weighted Max-SAT input format"<<endl;
			top = (1ull << 63ull) - 1;
		}
		else {
			cerr<<"Weighted Partial Max-SAT input format"<<endl;
		}
		cerr<<"Top "<<top<<endl;
	}
	else if (line == "cnf" && maxSat) {
		inputFormat = INPUT_FORMAT_MS;
		cerr<<"Max-SAT input format"<<endl;
		top = (1ull << 63ull) - 1;
	}
	else if (line == "cnf" && !maxSat) {
		inputFormat = INPUT_FORMAT_SAT;
		cerr<<"SAT input format"<<endl;
		top = (1ull << 63ull) - 1;
	}
	else {
		readError = "Invalid p-line of the input (problem type "+line+" and the dimacs format do not match) (line "+to_string(currentLine)+")";
		return 1;
	}
	while (1) {
		currentLine++;
		int status = readLine(input);
		if (status == 1) break;
		else if (status == 2) return 1;
		assert(status == 0);
	}
	int freeVar = 1;
	for (auto& clause : clauses) {
		for (int lit : clause) {
			freeVar = max(freeVar, abs(lit) + 1);
		}
	}
	for (auto& cc : cardinalityConstraints) {
		for (int lit : cc.inputLiterals) freeVar = max(freeVar, abs(lit) + 1);
		for (int lit : cc.outputLiterals) freeVar = max(freeVar, abs(lit) + 1);
		for (int lit : cc.addLiterals) freeVar = max(freeVar, abs(lit) + 1);
	}
	for (auto& cc : cardinalityConstraints) {
		vector<vector<int> > cls = cc.getClauses(freeVar);
		for (auto& clause : cls) {
			clauses.push_back(clause);
			weights.push_back(top);
			for (int lit : clause) {
				freeVar = max(freeVar, abs(lit) + 1);
			}
		}
	}
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x540, %rsp            # imm = 0x540
movb %dl, %al
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
andb $0x1, %al
movb %al, -0x19(%rbp)
movq -0x10(%rbp), %rdi
movq %rdi, -0x480(%rbp)
addq $0x40, %rdi
callq 0x5a9d0
movq -0x480(%rbp), %rdi
addq $0x58, %rdi
callq 0x5a9f0
movq -0x480(%rbp), %rdi
addq $0x70, %rdi
callq 0x5aa10
movq -0x480(%rbp), %rdi
addq $0x10, %rdi
leaq 0x2e640(%rip), %rsi     # 0x88000
callq 0x44f0
movq -0x480(%rbp), %rax
movl $0x0, 0x8(%rax)
leaq -0x40(%rbp), %rdi
callq 0x4500
movq -0x18(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x40a0
movq %rax, -0x488(%rbp)
jmp 0x599f2
movq -0x488(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x44b0
movb %al, -0x489(%rbp)
jmp 0x59a10
movb -0x489(%rbp), %al
testb $0x1, %al
jne 0x59a1c
jmp 0x59a78
movq -0x480(%rbp), %rax
movl 0x8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x8(%rax)
leaq -0x40(%rbp), %rdi
callq 0x42a0
cmpq $0x0, %rax
jbe 0x59a73
xorl %eax, %eax
movl %eax, %esi
leaq -0x40(%rbp), %rdi
callq 0x46b0
movq %rax, -0x498(%rbp)
jmp 0x59a51
movq -0x498(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x70, %eax
jne 0x59a73
jmp 0x59a78
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5a7eb
jmp 0x599dc
leaq -0x40(%rbp), %rdi
callq 0x42a0
cmpq $0x0, %rax
je 0x59aac
xorl %eax, %eax
movl %eax, %esi
leaq -0x40(%rbp), %rdi
callq 0x46b0
movq %rax, -0x4a0(%rbp)
jmp 0x59a9d
movq -0x4a0(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x70, %eax
je 0x59ad8
movq -0x480(%rbp), %rdi
addq $0x10, %rdi
leaq 0x2d82d(%rip), %rsi     # 0x872eb
callq 0x44f0
jmp 0x59ac5
movl $0x1, -0x4(%rbp)
movl $0x1, -0x50(%rbp)
jmp 0x5a7d6
leaq -0x1d8(%rbp), %rdi
callq 0x42b0
jmp 0x59ae6
leaq -0x1c8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x4370
jmp 0x59af8
leaq -0x1d8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x44c0
jmp 0x59b0a
leaq 0x2c0a1(%rip), %rsi     # 0x85bb2
leaq -0x40(%rbp), %rdi
callq 0x5aa30
movb %al, -0x4a1(%rbp)
jmp 0x59b22
movb -0x4a1(%rbp), %al
testb $0x1, %al
jne 0x59b31
jmp 0x59c17
movq -0x480(%rbp), %rax
movl 0x8(%rax), %esi
leaq -0x238(%rbp), %rdi
callq 0x5a8b0
jmp 0x59b49
leaq 0x2d7bf(%rip), %rsi     # 0x8730f
leaq -0x218(%rbp), %rdi
leaq -0x238(%rbp), %rdx
callq 0x5a860
jmp 0x59b65
leaq 0x2d9fb(%rip), %rdx     # 0x87567
leaq -0x1f8(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0xabf0
jmp 0x59b81
movq -0x480(%rbp), %rdi
addq $0x10, %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x4490
leaq -0x1f8(%rbp), %rdi
callq 0x4240
leaq -0x218(%rbp), %rdi
callq 0x4240
leaq -0x238(%rbp), %rdi
callq 0x4240
movl $0x1, -0x4(%rbp)
movl $0x1, -0x50(%rbp)
jmp 0x5a7ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5a7c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x59c06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x218(%rbp), %rdi
callq 0x4240
leaq -0x238(%rbp), %rdi
callq 0x4240
jmp 0x5a7c8
leaq -0x1d8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x44c0
movq %rax, -0x4b0(%rbp)
jmp 0x59c30
movq -0x480(%rbp), %rsi
movq -0x4b0(%rbp), %rdi
callq 0x4230
movq %rax, -0x4b8(%rbp)
jmp 0x59c4c
movq -0x4b8(%rbp), %rdi
movq -0x480(%rbp), %rsi
addq $0x4, %rsi
callq 0x4230
jmp 0x59c65
movq -0x480(%rbp), %rax
movq %rax, %rdi
addq $0x40, %rdi
movslq 0x4(%rax), %rsi
callq 0x5aa60
jmp 0x59c7e
movq -0x480(%rbp), %rax
movq %rax, %rdi
addq $0x58, %rdi
movslq 0x4(%rax), %rsi
callq 0x5ab60
jmp 0x59c97
movq -0x1d8(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x1d8(%rbp,%rax), %rdi
callq 0x4030
movb %al, -0x4b9(%rbp)
jmp 0x59cb7
movb -0x4b9(%rbp), %al
testb $0x1, %al
jne 0x59cc6
jmp 0x59d9b
movq -0x480(%rbp), %rax
movl 0x8(%rax), %esi
leaq -0x298(%rbp), %rdi
callq 0x5a8b0
jmp 0x59cde
leaq 0x2d62a(%rip), %rsi     # 0x8730f
leaq -0x278(%rbp), %rdi
leaq -0x298(%rbp), %rdx
callq 0x5a860
jmp 0x59cfa
leaq 0x2d866(%rip), %rdx     # 0x87567
leaq -0x258(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0xabf0
jmp 0x59d16
movq -0x480(%rbp), %rdi
addq $0x10, %rdi
leaq -0x258(%rbp), %rsi
callq 0x4490
leaq -0x258(%rbp), %rdi
callq 0x4240
leaq -0x278(%rbp), %rdi
callq 0x4240
leaq -0x298(%rbp), %rdi
callq 0x4240
movl $0x1, -0x4(%rbp)
movl $0x1, -0x50(%rbp)
jmp 0x5a7ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x59d8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x4240
leaq -0x298(%rbp), %rdi
callq 0x4240
jmp 0x5a7c8
leaq 0x2b7b6(%rip), %rsi     # 0x85558
leaq -0x40(%rbp), %rdi
callq 0xa640
movb %al, -0x4ba(%rbp)
jmp 0x59db3
movb -0x4ba(%rbp), %al
testb $0x1, %al
jne 0x59dc2
jmp 0x59eee
testb $0x1, -0x19(%rbp)
je 0x59eee
movq -0x480(%rbp), %rsi
movl $0x1, 0x38(%rsi)
addq $0x30, %rsi
leaq -0x1d8(%rbp), %rdi
callq 0x4510
movq %rax, -0x4c8(%rbp)
jmp 0x59df3
movq -0x4c8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x41c0
movb %al, -0x4c9(%rbp)
jmp 0x59e11
movb -0x4c9(%rbp), %al
testb $0x1, %al
jne 0x59e1d
jmp 0x59e65
movq 0x551cc(%rip), %rdi     # 0xaeff0
leaq 0x2d507(%rip), %rsi     # 0x87332
callq 0x4380
movq %rax, -0x4d8(%rbp)
jmp 0x59e39
movq -0x4d8(%rbp), %rdi
movq 0x55169(%rip), %rsi     # 0xaefb0
callq 0x43d0
jmp 0x59e4e
movq -0x480(%rbp), %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
movq %rcx, 0x30(%rax)
jmp 0x59e98
movq 0x55184(%rip), %rdi     # 0xaeff0
leaq 0x2d4dd(%rip), %rsi     # 0x87350
callq 0x4380
movq %rax, -0x4e0(%rbp)
jmp 0x59e81
movq -0x4e0(%rbp), %rdi
movq 0x55121(%rip), %rsi     # 0xaefb0
callq 0x43d0
jmp 0x59e96
jmp 0x59e98
movq 0x55151(%rip), %rdi     # 0xaeff0
leaq 0x2d4d0(%rip), %rsi     # 0x87376
callq 0x4380
movq %rax, -0x4e8(%rbp)
jmp 0x59eb4
movq -0x4e8(%rbp), %rdi
movq -0x480(%rbp), %rax
movq 0x30(%rax), %rsi
callq 0x40c0
movq %rax, -0x4f0(%rbp)
jmp 0x59ed4
movq -0x4f0(%rbp), %rdi
movq 0x550ce(%rip), %rsi     # 0xaefb0
callq 0x43d0
jmp 0x59ee9
jmp 0x5a14e
leaq 0x2b664(%rip), %rsi     # 0x85559
leaq -0x40(%rbp), %rdi
callq 0xa640
movb %al, -0x4f1(%rbp)
jmp 0x59f06
movb -0x4f1(%rbp), %al
testb $0x1, %al
jne 0x59f12
jmp 0x59f71
testb $0x1, -0x19(%rbp)
je 0x59f71
movq -0x480(%rbp), %rax
movl $0x2, 0x38(%rax)
movq 0x550c3(%rip), %rdi     # 0xaeff0
leaq 0x2d407(%rip), %rsi     # 0x8733b
callq 0x4380
movq %rax, -0x500(%rbp)
jmp 0x59f42
movq -0x500(%rbp), %rdi
movq 0x55060(%rip), %rsi     # 0xaefb0
callq 0x43d0
jmp 0x59f57
movq -0x480(%rbp), %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
movq %rcx, 0x30(%rax)
jmp 0x5a14c
leaq 0x2b5e1(%rip), %rsi     # 0x85559
leaq -0x40(%rbp), %rdi
callq 0xa640
movb %al, -0x501(%rbp)
jmp 0x59f89
movb -0x501(%rbp), %al
testb $0x1, %al
jne 0x59f95
jmp 0x59ff4
testb $0x1, -0x19(%rbp)
jne 0x59ff4
movq -0x480(%rbp), %rax
movl $0x3, 0x38(%rax)
movq 0x55040(%rip), %rdi     # 0xaeff0
leaq 0x2d388(%rip), %rsi     # 0x8733f
callq 0x4380
movq %rax, -0x510(%rbp)
jmp 0x59fc5
movq -0x510(%rbp), %rdi
movq 0x54fdd(%rip), %rsi     # 0xaefb0
callq 0x43d0
jmp 0x59fda
movq -0x480(%rbp), %rax
movabsq $0x7fffffffffffffff, %rcx # imm = 0x7FFFFFFFFFFFFFFF
movq %rcx, 0x30(%rax)
jmp 0x5a14a
leaq 0x2d380(%rip), %rsi     # 0x8737b
leaq -0x318(%rbp), %rdi
leaq -0x40(%rbp), %rdx
callq 0x5ad30
jmp 0x5a00d
leaq 0x2d392(%rip), %rdx     # 0x873a6
leaq -0x2f8(%rbp), %rdi
leaq -0x318(%rbp), %rsi
callq 0xabf0
jmp 0x5a029
movq -0x480(%rbp), %rax
movl 0x8(%rax), %esi
leaq -0x338(%rbp), %rdi
callq 0x5a8b0
jmp 0x5a041
leaq -0x2d8(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
leaq -0x338(%rbp), %rdx
callq 0x5ac60
jmp 0x5a05d
leaq 0x2d503(%rip), %rdx     # 0x87567
leaq -0x2b8(%rbp), %rdi
leaq -0x2d8(%rbp), %rsi
callq 0xabf0
jmp 0x5a079
movq -0x480(%rbp), %rdi
addq $0x10, %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x4490
leaq -0x2b8(%rbp), %rdi
callq 0x4240
leaq -0x2d8(%rbp), %rdi
callq 0x4240
leaq -0x338(%rbp), %rdi
callq 0x4240
leaq -0x2f8(%rbp), %rdi
callq 0x4240
leaq -0x318(%rbp), %rdi
callq 0x4240
movl $0x1, -0x4(%rbp)
movl $0x1, -0x50(%rbp)
jmp 0x5a7ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5a139
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5a12d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
jmp 0x5a121
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x2d8(%rbp), %rdi
callq 0x4240
leaq -0x338(%rbp), %rdi
callq 0x4240
leaq -0x2f8(%rbp), %rdi
callq 0x4240
leaq -0x318(%rbp), %rdi
callq 0x4240
jmp 0x5a7c8
jmp 0x5a14c
jmp 0x5a14e
jmp 0x5a150
jmp 0x5a152
movq -0x480(%rbp), %rdi
movl 0x8(%rdi), %eax
incl %eax
movl %eax, 0x8(%rdi)
movq -0x18(%rbp), %rsi
callq 0x59350
movl %eax, -0x514(%rbp)
jmp 0x5a172
movl -0x514(%rbp), %eax
movl %eax, -0x33c(%rbp)
cmpl $0x1, -0x33c(%rbp)
jne 0x5a189
jmp 0x5a1d6
cmpl $0x2, -0x33c(%rbp)
jne 0x5a1a5
movl $0x1, -0x4(%rbp)
movl $0x1, -0x50(%rbp)
jmp 0x5a7ba
jmp 0x5a1a7
cmpl $0x0, -0x33c(%rbp)
jne 0x5a1b2
jmp 0x5a1d1
leaq 0x2d219(%rip), %rdi     # 0x873d2
leaq 0x2d0e5(%rip), %rsi     # 0x872a5
movl $0x10a, %edx            # imm = 0x10A
leaq 0x2d212(%rip), %rcx     # 0x873de
callq 0x4260
jmp 0x5a150
movq -0x480(%rbp), %rax
movl $0x1, -0x340(%rbp)
addq $0x40, %rax
movq %rax, -0x348(%rbp)
movq -0x348(%rbp), %rdi
callq 0x3e320
movq %rax, -0x350(%rbp)
movq -0x348(%rbp), %rdi
callq 0x3e350
movq %rax, -0x358(%rbp)
leaq -0x350(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x3e380
testb $0x1, %al
jne 0x5a234
jmp 0x5a309
leaq -0x350(%rbp), %rdi
callq 0x3e3c0
movq %rax, -0x360(%rbp)
movq -0x360(%rbp), %rax
movq %rax, -0x368(%rbp)
movq -0x368(%rbp), %rdi
callq 0xa800
movq %rax, -0x370(%rbp)
movq -0x368(%rbp), %rdi
callq 0xa830
movq %rax, -0x378(%rbp)
leaq -0x370(%rbp), %rdi
leaq -0x378(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x5a294
jmp 0x5a2f6
leaq -0x370(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x37c(%rbp)
movl -0x37c(%rbp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
incl %eax
movl %eax, -0x380(%rbp)
leaq -0x340(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x3e430
movq %rax, -0x520(%rbp)
jmp 0x5a2d9
movq -0x520(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x340(%rbp)
leaq -0x370(%rbp), %rdi
callq 0xa930
jmp 0x5a27b
jmp 0x5a2f8
leaq -0x350(%rbp), %rdi
callq 0x3e3e0
jmp 0x5a218
movq -0x480(%rbp), %rax
addq $0x70, %rax
movq %rax, -0x388(%rbp)
movq -0x388(%rbp), %rdi
callq 0x5ae40
movq %rax, -0x390(%rbp)
movq -0x388(%rbp), %rdi
callq 0x5ae70
movq %rax, -0x398(%rbp)
leaq -0x390(%rbp), %rdi
leaq -0x398(%rbp), %rsi
callq 0x5aea0
testb $0x1, %al
jne 0x5a35d
jmp 0x5a59c
leaq -0x390(%rbp), %rdi
callq 0x5aee0
movq %rax, -0x3a0(%rbp)
movq -0x3a0(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x3a8(%rbp)
movq -0x3a8(%rbp), %rdi
callq 0x3d080
movq %rax, -0x3b0(%rbp)
movq -0x3a8(%rbp), %rdi
callq 0x3d0b0
movq %rax, -0x3b8(%rbp)
leaq -0x3b0(%rbp), %rdi
leaq -0x3b8(%rbp), %rsi
callq 0x3d0e0
testb $0x1, %al
jne 0x5a3c1
jmp 0x5a423
leaq -0x3b0(%rbp), %rdi
callq 0x3d120
movl (%rax), %eax
movl %eax, -0x3bc(%rbp)
movl -0x3bc(%rbp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
incl %eax
movl %eax, -0x3c0(%rbp)
leaq -0x340(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x3e430
movq %rax, -0x528(%rbp)
jmp 0x5a406
movq -0x528(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x340(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x3d160
jmp 0x5a3a8
movq -0x3a0(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x3c8(%rbp)
movq -0x3c8(%rbp), %rdi
callq 0x3d080
movq %rax, -0x3d0(%rbp)
movq -0x3c8(%rbp), %rdi
callq 0x3d0b0
movq %rax, -0x3d8(%rbp)
leaq -0x3d0(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
callq 0x3d0e0
testb $0x1, %al
jne 0x5a474
jmp 0x5a4d6
leaq -0x3d0(%rbp), %rdi
callq 0x3d120
movl (%rax), %eax
movl %eax, -0x3dc(%rbp)
movl -0x3dc(%rbp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
incl %eax
movl %eax, -0x3e0(%rbp)
leaq -0x340(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x3e430
movq %rax, -0x530(%rbp)
jmp 0x5a4b9
movq -0x530(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x340(%rbp)
leaq -0x3d0(%rbp), %rdi
callq 0x3d160
jmp 0x5a45b
movq -0x3a0(%rbp), %rax
addq $0x40, %rax
movq %rax, -0x3e8(%rbp)
movq -0x3e8(%rbp), %rdi
callq 0x3d080
movq %rax, -0x3f0(%rbp)
movq -0x3e8(%rbp), %rdi
callq 0x3d0b0
movq %rax, -0x3f8(%rbp)
leaq -0x3f0(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
callq 0x3d0e0
testb $0x1, %al
jne 0x5a527
jmp 0x5a589
leaq -0x3f0(%rbp), %rdi
callq 0x3d120
movl (%rax), %eax
movl %eax, -0x3fc(%rbp)
movl -0x3fc(%rbp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
incl %eax
movl %eax, -0x400(%rbp)
leaq -0x340(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x3e430
movq %rax, -0x538(%rbp)
jmp 0x5a56c
movq -0x538(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x340(%rbp)
leaq -0x3f0(%rbp), %rdi
callq 0x3d160
jmp 0x5a50e
jmp 0x5a58b
leaq -0x390(%rbp), %rdi
callq 0x5af00
jmp 0x5a341
movq -0x480(%rbp), %rax
addq $0x70, %rax
movq %rax, -0x408(%rbp)
movq -0x408(%rbp), %rdi
callq 0x5ae40
movq %rax, -0x410(%rbp)
movq -0x408(%rbp), %rdi
callq 0x5ae70
movq %rax, -0x418(%rbp)
leaq -0x410(%rbp), %rdi
leaq -0x418(%rbp), %rsi
callq 0x5aea0
testb $0x1, %al
jne 0x5a5f0
jmp 0x5a7ac
leaq -0x410(%rbp), %rdi
callq 0x5aee0
movq %rax, -0x420(%rbp)
movq -0x420(%rbp), %rsi
movl -0x340(%rbp), %edx
leaq -0x438(%rbp), %rdi
callq 0x7f390
jmp 0x5a61e
leaq -0x438(%rbp), %rax
movq %rax, -0x440(%rbp)
movq -0x440(%rbp), %rdi
callq 0x3e320
movq %rax, -0x448(%rbp)
movq -0x440(%rbp), %rdi
callq 0x3e350
movq %rax, -0x450(%rbp)
leaq -0x448(%rbp), %rdi
leaq -0x450(%rbp), %rsi
callq 0x3e380
testb $0x1, %al
jne 0x5a66e
jmp 0x5a78f
leaq -0x448(%rbp), %rdi
callq 0x3e3c0
movq -0x480(%rbp), %rdi
movq %rax, -0x458(%rbp)
addq $0x40, %rdi
movq -0x458(%rbp), %rsi
callq 0x3e2b0
jmp 0x5a69a
movq -0x480(%rbp), %rsi
movq %rsi, %rdi
addq $0x58, %rdi
addq $0x30, %rsi
callq 0x3f530
jmp 0x5a6b3
movq -0x458(%rbp), %rax
movq %rax, -0x460(%rbp)
movq -0x460(%rbp), %rdi
callq 0xa800
movq %rax, -0x468(%rbp)
movq -0x460(%rbp), %rdi
callq 0xa830
movq %rax, -0x470(%rbp)
leaq -0x468(%rbp), %rdi
leaq -0x470(%rbp), %rsi
callq 0xa860
testb $0x1, %al
jne 0x5a700
jmp 0x5a77c
leaq -0x468(%rbp), %rdi
callq 0xa8a0
movl (%rax), %eax
movl %eax, -0x474(%rbp)
movl -0x474(%rbp), %eax
movl %eax, %ecx
negl %ecx
cmovnsl %ecx, %eax
incl %eax
movl %eax, -0x478(%rbp)
leaq -0x340(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0x3e430
movq %rax, -0x540(%rbp)
jmp 0x5a745
movq -0x540(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x340(%rbp)
leaq -0x468(%rbp), %rdi
callq 0xa930
jmp 0x5a6e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x48(%rbp)
movl %eax, -0x4c(%rbp)
leaq -0x438(%rbp), %rdi
callq 0xb3b0
jmp 0x5a7c8
jmp 0x5a77e
leaq -0x448(%rbp), %rdi
callq 0x3e3e0
jmp 0x5a652
leaq -0x438(%rbp), %rdi
callq 0xb3b0
leaq -0x410(%rbp), %rdi
callq 0x5af00
jmp 0x5a5d4
movl $0x0, -0x4(%rbp)
movl $0x1, -0x50(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0x42e0
jmp 0x5a7d6
leaq -0x1d8(%rbp), %rdi
callq 0x42e0
jmp 0x5a7eb
leaq -0x40(%rbp), %rdi
callq 0x4240
movl -0x4(%rbp), %eax
addq $0x540, %rsp            # imm = 0x540
popq %rbp
retq
leaq -0x40(%rbp), %rdi
callq 0x4240
movq -0x48(%rbp), %rdi
callq 0x4610
nopl (%rax)