// File: CMU-SAFARI[P]optimal-seed-solver/thresholdSolver.cc
// Function: ThresholdSolver::load(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void ThresholdSolver::load(string file)
{
	std::ifstream test;
	test.open(file.c_str(), ios::in);
	string line;
	int num = 0;
	if(test.is_open())
	{
		while(std::getline(test,line))
			num++;
	}

	int SIZE = thresholdVec.size();
	std::ifstream f;
	f.open(file.c_str(), ios::in);

	if(f.is_open())
	{
		int i = 0;

		vector< vector <int> > freqTable (num/4, vector<int>(SIZE));
		vector< vector <int> > seedLenTable (num/4, vector<int>(SIZE));

		vector<int> avgFreqTable (SIZE);
		vector<int> avgSeedLenTable (SIZE);
		vector<int> lettersLeft (num/4);

		vector<int> totalFrequency (100000);
		for(int j=0; j<100000; j++) totalFrequency[j] = 0;

		int avgLettersLeft = 0;

		int pass = 0;
		int total = 0;

		this->freqTable = freqTable;
		this->seedLenTable = seedLenTable;
		this->lettersLeft = lettersLeft;
		this->avgFreqTable = avgFreqTable;
		this->avgSeedLenTable = avgSeedLenTable;
		this->totalFrequency = totalFrequency;

		while(!f.eof())
		{
			string id, id2, read, plus, quality;
			f >> id; f >> id2; f >> read; f >> plus; f >> quality;

			this->index = i;
			if(read.find('N') != string::npos)
			{
				if(verbose)
				{
					cout << "Read #" << i << "failed." << endl;
					cout << "Found N ... fail" << endl;
				}
			}
			else if(read.length() > 0){
				int ret = solve(read);
				if(ret != -1)
				{
					for(int j = 0; j < SIZE; j++)
					{
						this->avgFreqTable[j] += this->freqTable[i][j];
						this->avgSeedLenTable[j] += this->seedLenTable[i][j];
					}
					pass++;
				}
				else
					avgLettersLeft += this->lettersLeft[i];
				int s = this->totalFrequency.size();
				if(ret + 1 >= s)
					this->totalFrequency.resize(2*s, 0);
				total++;
				this->totalFrequency[ret + 1]++;
			}

			i++;
		}
		if(verbose)
		{
			cout << "# of Valid reads: " << pass << "/" << total << endl << endl;

			if(pass > 0)
			{
				cout << "For valid reads ... " << endl;
				cout << "Average Frequency Table:" << endl;
				for(int j = 0; j < SIZE; j++)
					cout << this->avgFreqTable[j]/pass << " ";
				cout << endl;
				cout << "Average SeedLength Table:" << endl;
				for(int j = 0; j < SIZE; j++)
					cout << this->avgSeedLenTable[j]/pass << " ";
				cout << endl;
				cout << endl;
			}
			if(total - pass > 0)
			{
				cout << "For invalid reads ... " << endl;
				cout << "Average lettersLeft: " << avgLettersLeft/(total - pass) << endl;
				cout << endl << endl;
			}
		}
	}
	if(verbose)
		printFreqTable();
}

// Assembly:
subq $0x798, %rsp            # imm = 0x798
movq %rsi, 0x148(%rsp)
movq %rdi, 0x790(%rsp)
movq %rsi, 0x788(%rsp)
movq 0x790(%rsp), %rax
movq %rax, 0x140(%rsp)
leaq 0x580(%rsp), %rdi
movq %rdi, 0x150(%rsp)
callq 0x3370
movq 0x148(%rsp), %rdi
callq 0x3140
movq 0x150(%rsp), %rdi
movq %rax, %rsi
movl $0x8, %edx
callq 0x31d0
jmp 0x8178
leaq 0x550(%rsp), %rdi
callq 0x3480
movl $0x0, 0x54c(%rsp)
leaq 0x580(%rsp), %rdi
callq 0x3520
movb %al, 0x13f(%rsp)
jmp 0x81a6
movb 0x13f(%rsp), %al
testb $0x1, %al
jne 0x81b6
jmp 0x824b
jmp 0x81b8
leaq 0x580(%rsp), %rdi
leaq 0x550(%rsp), %rsi
callq 0x30b0
movq %rax, 0x130(%rsp)
jmp 0x81d7
movq 0x130(%rsp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x33d0
movb %al, 0x12f(%rsp)
jmp 0x81f7
movb 0x12f(%rsp), %al
testb $0x1, %al
jne 0x8204
jmp 0x8249
movl 0x54c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x54c(%rsp)
jmp 0x81b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x914a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x913d
jmp 0x824b
movq 0x140(%rsp), %rdi
addq $0x450, %rdi            # imm = 0x450
callq 0x5550
movl %eax, 0x548(%rsp)
leaq 0x340(%rsp), %rdi
callq 0x3370
jmp 0x8275
movq 0x148(%rsp), %rdi
callq 0x3140
movq %rax, %rsi
leaq 0x340(%rsp), %rdi
movl $0x8, %edx
callq 0x31d0
jmp 0x8299
leaq 0x340(%rsp), %rdi
callq 0x3520
movb %al, 0x12e(%rsp)
jmp 0x82af
movb 0x12e(%rsp), %al
testb $0x1, %al
jne 0x82bf
jmp 0x90df
movl $0x0, 0x33c(%rsp)
movl 0x54c(%rsp), %eax
movl %eax, %ecx
addl $0x3, %ecx
testl %eax, %eax
cmovsl %ecx, %eax
sarl $0x2, %eax
cltq
movq %rax, 0x110(%rsp)
movslq 0x548(%rsp), %rax
movq %rax, 0x118(%rsp)
leaq 0x307(%rsp), %rdi
movq %rdi, 0x120(%rsp)
callq 0x4b30
movq 0x118(%rsp), %rsi
movq 0x120(%rsp), %rdx
leaq 0x308(%rsp), %rdi
callq 0x9f80
jmp 0x832c
leaq 0x306(%rsp), %rdi
movq %rdi, 0x108(%rsp)
callq 0xa2e0
movq 0x110(%rsp), %rsi
movq 0x108(%rsp), %rcx
leaq 0x320(%rsp), %rdi
leaq 0x308(%rsp), %rdx
callq 0xa2f0
jmp 0x8368
leaq 0x306(%rsp), %rdi
callq 0x4da0
leaq 0x308(%rsp), %rdi
callq 0x48c0
leaq 0x307(%rsp), %rdi
callq 0x5210
movl 0x54c(%rsp), %eax
movl %eax, %ecx
addl $0x3, %ecx
testl %eax, %eax
cmovsl %ecx, %eax
sarl $0x2, %eax
cltq
movq %rax, 0xf0(%rsp)
movslq 0x548(%rsp), %rax
movq %rax, 0xf8(%rsp)
leaq 0x2cf(%rsp), %rdi
movq %rdi, 0x100(%rsp)
callq 0x4b30
movq 0xf8(%rsp), %rsi
movq 0x100(%rsp), %rdx
leaq 0x2d0(%rsp), %rdi
callq 0x9f80
jmp 0x83f1
leaq 0x2ce(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
callq 0xa2e0
movq 0xf0(%rsp), %rsi
movq 0xe8(%rsp), %rcx
leaq 0x2e8(%rsp), %rdi
leaq 0x2d0(%rsp), %rdx
callq 0xa2f0
jmp 0x842d
leaq 0x2ce(%rsp), %rdi
callq 0x4da0
leaq 0x2d0(%rsp), %rdi
callq 0x48c0
leaq 0x2cf(%rsp), %rdi
callq 0x5210
movslq 0x548(%rsp), %rax
movq %rax, 0xd8(%rsp)
leaq 0x2af(%rsp), %rdi
movq %rdi, 0xe0(%rsp)
callq 0x4b30
movq 0xd8(%rsp), %rsi
movq 0xe0(%rsp), %rdx
leaq 0x2b0(%rsp), %rdi
callq 0x9f80
jmp 0x8498
leaq 0x2af(%rsp), %rdi
callq 0x5210
movslq 0x548(%rsp), %rax
movq %rax, 0xc8(%rsp)
leaq 0x28f(%rsp), %rdi
movq %rdi, 0xd0(%rsp)
callq 0x4b30
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
leaq 0x290(%rsp), %rdi
callq 0x9f80
jmp 0x84e9
leaq 0x28f(%rsp), %rdi
callq 0x5210
movl 0x54c(%rsp), %eax
movl %eax, %ecx
addl $0x3, %ecx
testl %eax, %eax
cmovsl %ecx, %eax
sarl $0x2, %eax
cltq
movq %rax, 0xb8(%rsp)
leaq 0x26f(%rsp), %rdi
movq %rdi, 0xc0(%rsp)
callq 0x4b30
movq 0xb8(%rsp), %rsi
movq 0xc0(%rsp), %rdx
leaq 0x270(%rsp), %rdi
callq 0x9f80
jmp 0x8548
leaq 0x26f(%rsp), %rdi
callq 0x5210
leaq 0x24f(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x4b30
movq 0xb0(%rsp), %rdx
leaq 0x250(%rsp), %rdi
movl $0x186a0, %esi          # imm = 0x186A0
callq 0x9f80
jmp 0x8586
leaq 0x24f(%rsp), %rdi
callq 0x5210
movl $0x0, 0x248(%rsp)
cmpl $0x186a0, 0x248(%rsp) # imm = 0x186A0
jge 0x873a
movslq 0x248(%rsp), %rsi
leaq 0x250(%rsp), %rdi
callq 0xa000
movl $0x0, (%rax)
movl 0x248(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x248(%rsp)
jmp 0x859e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x9130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x863a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x306(%rsp), %rdi
callq 0x4da0
leaq 0x308(%rsp), %rdi
callq 0x48c0
leaq 0x307(%rsp), %rdi
callq 0x5210
jmp 0x9130
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x8690
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x2ce(%rsp), %rdi
callq 0x4da0
leaq 0x2d0(%rsp), %rdi
callq 0x48c0
leaq 0x2cf(%rsp), %rdi
callq 0x5210
jmp 0x90d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x2af(%rsp), %rdi
callq 0x5210
jmp 0x90c3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x28f(%rsp), %rdi
callq 0x5210
jmp 0x90b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x26f(%rsp), %rdi
callq 0x5210
jmp 0x90a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x24f(%rsp), %rdi
callq 0x5210
jmp 0x909c
movq 0x140(%rsp), %rdi
movl $0x0, 0x244(%rsp)
movl $0x0, 0x240(%rsp)
movl $0x0, 0x23c(%rsp)
addq $0x30, %rdi
leaq 0x320(%rsp), %rsi
callq 0xa370
jmp 0x8776
movq 0x140(%rsp), %rdi
addq $0x48, %rdi
leaq 0x2e8(%rsp), %rsi
callq 0xa370
jmp 0x8791
movq 0x140(%rsp), %rdi
addq $0x90, %rdi
leaq 0x270(%rsp), %rsi
callq 0xa020
jmp 0x87af
movq 0x140(%rsp), %rdi
addq $0x60, %rdi
leaq 0x2b0(%rsp), %rsi
callq 0xa020
jmp 0x87ca
movq 0x140(%rsp), %rdi
addq $0x78, %rdi
leaq 0x290(%rsp), %rsi
callq 0xa020
jmp 0x87e5
movq 0x140(%rsp), %rdi
addq $0xa8, %rdi
leaq 0x250(%rsp), %rsi
callq 0xa020
jmp 0x8803
jmp 0x8805
movq 0x340(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0x340(%rsp,%rax), %rdi
callq 0x3600
movb %al, 0xaf(%rsp)
jmp 0x8827
movb 0xaf(%rsp), %al
xorb $-0x1, %al
testb $0x1, %al
jne 0x8839
jmp 0x8d00
leaq 0x218(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x3480
leaq 0x1f8(%rsp), %rdi
callq 0x3480
leaq 0x1d8(%rsp), %rdi
callq 0x3480
leaq 0x1b8(%rsp), %rdi
callq 0x3480
leaq 0x198(%rsp), %rdi
callq 0x3480
movq 0xa0(%rsp), %rsi
leaq 0x340(%rsp), %rdi
callq 0x3400
jmp 0x8899
leaq 0x340(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
callq 0x3400
jmp 0x88b0
leaq 0x340(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0x3400
jmp 0x88c7
leaq 0x340(%rsp), %rdi
leaq 0x1b8(%rsp), %rsi
callq 0x3400
jmp 0x88de
leaq 0x340(%rsp), %rdi
leaq 0x198(%rsp), %rsi
callq 0x3400
jmp 0x88f5
movq 0x140(%rsp), %rax
movl 0x33c(%rsp), %ecx
movl %ecx, 0x428(%rax)
leaq 0x1d8(%rsp), %rdi
movl $0x4e, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x3420
cmpq $-0x1, %rax
je 0x8a1a
movq 0x140(%rsp), %rax
testb $0x1, 0xcc(%rax)
je 0x8a15
movq 0x1a682(%rip), %rdi     # 0x22fc8
leaq 0x10781(%rip), %rsi     # 0x190ce
callq 0x32c0
movq %rax, 0x98(%rsp)
jmp 0x895c
movq 0x98(%rsp), %rdi
movl 0x33c(%rsp), %esi
callq 0x35a0
movq %rax, 0x90(%rsp)
jmp 0x897a
movq 0x90(%rsp), %rdi
leaq 0x1074c(%rip), %rsi     # 0x190d5
callq 0x32c0
movq %rax, 0x88(%rsp)
jmp 0x8998
movq 0x88(%rsp), %rdi
movq 0x1a611(%rip), %rsi     # 0x22fb8
callq 0x3310
jmp 0x89ae
movq 0x1a613(%rip), %rdi     # 0x22fc8
leaq 0x10721(%rip), %rsi     # 0x190dd
callq 0x32c0
movq %rax, 0x80(%rsp)
jmp 0x89cb
movq 0x80(%rsp), %rdi
movq 0x1a5de(%rip), %rsi     # 0x22fb8
callq 0x3310
jmp 0x89e1
jmp 0x8a15
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x908f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
jmp 0x8cba
jmp 0x8c63
leaq 0x1d8(%rsp), %rdi
callq 0x34d0
cmpq $0x0, %rax
jbe 0x8c61
leaq 0x170(%rsp), %rdi
leaq 0x1d8(%rsp), %rsi
callq 0x3150
jmp 0x8a48
movq 0x140(%rsp), %rdi
leaq 0x170(%rsp), %rsi
callq 0x9170
movl %eax, 0x7c(%rsp)
jmp 0x8a63
leaq 0x170(%rsp), %rdi
callq 0x31c0
movl 0x7c(%rsp), %eax
movl %eax, 0x194(%rsp)
cmpl $-0x1, 0x194(%rsp)
je 0x8b97
movl $0x0, 0x16c(%rsp)
movl 0x16c(%rsp), %eax
cmpl 0x548(%rsp), %eax
jge 0x8b84
movq 0x140(%rsp), %rdi
addq $0x30, %rdi
movslq 0x33c(%rsp), %rsi
callq 0xa630
movq %rax, %rdi
movslq 0x16c(%rsp), %rsi
callq 0xa000
movq 0x140(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x74(%rsp)
addq $0x60, %rdi
movslq 0x16c(%rsp), %rsi
callq 0xa000
movl 0x74(%rsp), %ecx
movq 0x140(%rsp), %rdi
addl (%rax), %ecx
movl %ecx, (%rax)
addq $0x48, %rdi
movslq 0x33c(%rsp), %rsi
callq 0xa630
movq %rax, %rdi
movslq 0x16c(%rsp), %rsi
callq 0xa000
movq 0x140(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x78(%rsp)
addq $0x78, %rdi
movslq 0x16c(%rsp), %rsi
callq 0xa000
movl 0x78(%rsp), %ecx
addl (%rax), %ecx
movl %ecx, (%rax)
movl 0x16c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x16c(%rsp)
jmp 0x8a94
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x578(%rsp)
movl %eax, 0x574(%rsp)
leaq 0x170(%rsp), %rdi
callq 0x31c0
jmp 0x8cba
movl 0x240(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x240(%rsp)
jmp 0x8bc3
movq 0x140(%rsp), %rdi
addq $0x90, %rdi
movslq 0x33c(%rsp), %rsi
callq 0xa000
movl (%rax), %eax
addl 0x244(%rsp), %eax
movl %eax, 0x244(%rsp)
movq 0x140(%rsp), %rdi
addq $0xa8, %rdi
callq 0x5550
movl %eax, 0x168(%rsp)
movl 0x194(%rsp), %eax
addl $0x1, %eax
cmpl 0x168(%rsp), %eax
jl 0x8c28
movq 0x140(%rsp), %rdi
addq $0xa8, %rdi
movl 0x168(%rsp), %eax
addl %eax, %eax
movslq %eax, %rsi
movl $0x0, 0x164(%rsp)
leaq 0x164(%rsp), %rdx
callq 0x45d0
jmp 0x8c26
jmp 0x8c28
movq 0x140(%rsp), %rdi
movl 0x23c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x23c(%rsp)
addq $0xa8, %rdi
movl 0x194(%rsp), %eax
addl $0x1, %eax
movslq %eax, %rsi
callq 0xa000
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
jmp 0x8c63
movl 0x33c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x33c(%rsp)
leaq 0x198(%rsp), %rdi
callq 0x31c0
leaq 0x1b8(%rsp), %rdi
callq 0x31c0
leaq 0x1d8(%rsp), %rdi
callq 0x31c0
leaq 0x1f8(%rsp), %rdi
callq 0x31c0
leaq 0x218(%rsp), %rdi
callq 0x31c0
jmp 0x8805
leaq 0x198(%rsp), %rdi
callq 0x31c0
leaq 0x1b8(%rsp), %rdi
callq 0x31c0
leaq 0x1d8(%rsp), %rdi
callq 0x31c0
leaq 0x1f8(%rsp), %rdi
callq 0x31c0
leaq 0x218(%rsp), %rdi
callq 0x31c0
jmp 0x908f
movq 0x140(%rsp), %rax
testb $0x1, 0xcc(%rax)
je 0x903f
movq 0x1a2ac(%rip), %rdi     # 0x22fc8
leaq 0x103cb(%rip), %rsi     # 0x190ee
callq 0x32c0
movq %rax, 0x68(%rsp)
jmp 0x8d2f
movq 0x68(%rsp), %rdi
movl 0x240(%rsp), %esi
callq 0x35a0
movq %rax, 0x60(%rsp)
jmp 0x8d47
movq 0x60(%rsp), %rdi
leaq 0x103ae(%rip), %rsi     # 0x19101
callq 0x32c0
movq %rax, 0x58(%rsp)
jmp 0x8d5f
movq 0x58(%rsp), %rdi
movl 0x23c(%rsp), %esi
callq 0x35a0
movq %rax, 0x50(%rsp)
jmp 0x8d77
movq 0x50(%rsp), %rdi
movq 0x1a235(%rip), %rsi     # 0x22fb8
callq 0x3310
movq %rax, 0x48(%rsp)
jmp 0x8d8f
movq 0x48(%rsp), %rdi
movq 0x1a21d(%rip), %rsi     # 0x22fb8
callq 0x3310
jmp 0x8da2
cmpl $0x0, 0x240(%rsp)
jle 0x8f72
movq 0x1a211(%rip), %rdi     # 0x22fc8
leaq 0x10345(%rip), %rsi     # 0x19103
callq 0x32c0
movq %rax, 0x40(%rsp)
jmp 0x8dca
movq 0x40(%rsp), %rdi
movq 0x1a1e2(%rip), %rsi     # 0x22fb8
callq 0x3310
jmp 0x8ddd
movq 0x1a1e4(%rip), %rdi     # 0x22fc8
leaq 0x1032d(%rip), %rsi     # 0x19118
callq 0x32c0
movq %rax, 0x38(%rsp)
jmp 0x8df7
movq 0x38(%rsp), %rdi
movq 0x1a1b5(%rip), %rsi     # 0x22fb8
callq 0x3310
jmp 0x8e0a
movl $0x0, 0x160(%rsp)
movl 0x160(%rsp), %eax
cmpl 0x548(%rsp), %eax
jge 0x8e87
movq 0x140(%rsp), %rdi
addq $0x60, %rdi
movslq 0x160(%rsp), %rsi
callq 0xa000
movl (%rax), %eax
movl 0x240(%rsp), %ecx
cltd
idivl %ecx
movl %eax, %esi
movq 0x1a175(%rip), %rdi     # 0x22fc8
callq 0x35a0
movq %rax, 0x30(%rsp)
jmp 0x8e5f
movq 0x30(%rsp), %rdi
leaq 0x102ab(%rip), %rsi     # 0x19116
callq 0x32c0
jmp 0x8e72
jmp 0x8e74
movl 0x160(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x160(%rsp)
jmp 0x8e15
movq 0x1a13a(%rip), %rdi     # 0x22fc8
movq 0x1a123(%rip), %rsi     # 0x22fb8
callq 0x3310
jmp 0x8e9c
movq 0x1a125(%rip), %rdi     # 0x22fc8
leaq 0x10287(%rip), %rsi     # 0x19131
callq 0x32c0
movq %rax, 0x28(%rsp)
jmp 0x8eb6
movq 0x28(%rsp), %rdi
movq 0x1a0f6(%rip), %rsi     # 0x22fb8
callq 0x3310
jmp 0x8ec9
movl $0x0, 0x15c(%rsp)
movl 0x15c(%rsp), %eax
cmpl 0x548(%rsp), %eax
jge 0x8f46
movq 0x140(%rsp), %rdi
addq $0x78, %rdi
movslq 0x15c(%rsp), %rsi
callq 0xa000
movl (%rax), %eax
movl 0x240(%rsp), %ecx
cltd
idivl %ecx
movl %eax, %esi
movq 0x1a0b6(%rip), %rdi     # 0x22fc8
callq 0x35a0
movq %rax, 0x20(%rsp)
jmp 0x8f1e
movq 0x20(%rsp), %rdi
leaq 0x101ec(%rip), %rsi     # 0x19116
callq 0x32c0
jmp 0x8f31
jmp 0x8f33
movl 0x15c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x15c(%rsp)
jmp 0x8ed4
movq 0x1a07b(%rip), %rdi     # 0x22fc8
movq 0x1a064(%rip), %rsi     # 0x22fb8
callq 0x3310
jmp 0x8f5b
movq 0x1a066(%rip), %rdi     # 0x22fc8
movq 0x1a04f(%rip), %rsi     # 0x22fb8
callq 0x3310
jmp 0x8f70
jmp 0x8f72
movl 0x23c(%rsp), %eax
subl 0x240(%rsp), %eax
cmpl $0x0, %eax
jle 0x903d
movq 0x1a038(%rip), %rdi     # 0x22fc8
leaq 0x101b4(%rip), %rsi     # 0x1914b
callq 0x32c0
movq %rax, 0x18(%rsp)
jmp 0x8fa3
movq 0x18(%rsp), %rdi
movq 0x1a009(%rip), %rsi     # 0x22fb8
callq 0x3310
jmp 0x8fb6
movq 0x1a00b(%rip), %rdi     # 0x22fc8
leaq 0x1019e(%rip), %rsi     # 0x19162
callq 0x32c0
movq %rax, 0x10(%rsp)
jmp 0x8fd0
movq 0x10(%rsp), %rdi
movl 0x244(%rsp), %eax
movl 0x23c(%rsp), %ecx
movl 0x240(%rsp), %edx
subl %edx, %ecx
cltd
idivl %ecx
movl %eax, %esi
callq 0x35a0
movq %rax, 0x8(%rsp)
jmp 0x8ffd
movq 0x8(%rsp), %rdi
movq 0x19faf(%rip), %rsi     # 0x22fb8
callq 0x3310
jmp 0x9010
movq 0x19fb1(%rip), %rdi     # 0x22fc8
movq 0x19f9a(%rip), %rsi     # 0x22fb8
callq 0x3310
movq %rax, (%rsp)
jmp 0x9029
movq (%rsp), %rdi
movq 0x19f84(%rip), %rsi     # 0x22fb8
callq 0x3310
jmp 0x903b
jmp 0x903d
jmp 0x903f
leaq 0x250(%rsp), %rdi
callq 0x48c0
leaq 0x270(%rsp), %rdi
callq 0x48c0
leaq 0x290(%rsp), %rdi
callq 0x48c0
leaq 0x2b0(%rsp), %rdi
callq 0x48c0
leaq 0x2e8(%rsp), %rdi
callq 0x4b80
leaq 0x320(%rsp), %rdi
callq 0x4b80
jmp 0x90df
leaq 0x250(%rsp), %rdi
callq 0x48c0
leaq 0x270(%rsp), %rdi
callq 0x48c0
leaq 0x290(%rsp), %rdi
callq 0x48c0
leaq 0x2b0(%rsp), %rdi
callq 0x48c0
leaq 0x2e8(%rsp), %rdi
callq 0x4b80
leaq 0x320(%rsp), %rdi
callq 0x4b80
jmp 0x9130
movq 0x140(%rsp), %rax
testb $0x1, 0xcc(%rax)
je 0x9101
movq 0x140(%rsp), %rdi
callq 0x99b0
jmp 0x90ff
jmp 0x9101
leaq 0x340(%rsp), %rdi
callq 0x30f0
leaq 0x550(%rsp), %rdi
callq 0x31c0
leaq 0x580(%rsp), %rdi
callq 0x30f0
addq $0x798, %rsp            # imm = 0x798
retq
leaq 0x340(%rsp), %rdi
callq 0x30f0
leaq 0x550(%rsp), %rdi
callq 0x31c0
leaq 0x580(%rsp), %rdi
callq 0x30f0
movq 0x578(%rsp), %rdi
callq 0x35c0
nopw %cs:(%rax,%rax)