// File: CMU-SAFARI[P]optimal-seed-solver/HashTree.cc
// Function: HashTree::readHashLenTable(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void HashTree::readHashLenTable(string filename)
{
	std::ifstream f;
	f.open(filename.c_str(),  ios::in | ios::binary);
	if(f.is_open())
	{
		f.seekg(0, ios::beg);

		int curr[1];
		f.read((char*)(&curr), sizeof(int));
		unsigned int tableWidth = (unsigned int)(curr[0]);

		int curr2[1];
		f.read((char*)(&curr2), sizeof(int));
		unsigned int tableHeight = (unsigned int)(curr2[0]);

		vector< vector <unsigned int> > hashLenTable (tableHeight,
			vector<unsigned int>(tableWidth));

		for(int i=0; i<tableHeight; i++)
			for(int j=0; j<tableWidth; j++)
			{
				int curr[1];
				f.read((char*)(&curr), sizeof(int));
				hashLenTable[i][j] = (unsigned int)(curr[0]);
			}

		this->hashLenTable = hashLenTable;
		f.close();
		return;
	}
}

// Assembly:
subq $0x2c8, %rsp            # imm = 0x2C8
movq %rsi, 0x38(%rsp)
movq %rdi, 0x2c0(%rsp)
movq %rsi, 0x2b8(%rsp)
movq 0x2c0(%rsp), %rax
movq %rax, 0x30(%rsp)
leaq 0xb0(%rsp), %rdi
callq 0x3350
movq 0x38(%rsp), %rdi
callq 0x3130
movq %rax, 0x40(%rsp)
movl $0x8, %edi
movl $0x4, %esi
callq 0xa940
movl %eax, 0x48(%rsp)
jmp 0x8d2a
movl 0x48(%rsp), %edx
movq 0x40(%rsp), %rsi
leaq 0xb0(%rsp), %rdi
callq 0x31c0
jmp 0x8d42
leaq 0xb0(%rsp), %rdi
callq 0x34f0
movb %al, 0x2f(%rsp)
jmp 0x8d55
movb 0x2f(%rsp), %al
testb $0x1, %al
jne 0x8d62
jmp 0x8fa3
xorl %edx, %edx
movl %edx, %esi
leaq 0xb0(%rsp), %rdi
callq 0x3440
jmp 0x8d75
leaq 0xb0(%rsp), %rdi
leaq 0xa0(%rsp), %rsi
movl $0x4, %edx
callq 0x33c0
jmp 0x8d91
movl 0xa0(%rsp), %eax
movl %eax, 0x9c(%rsp)
leaq 0xb0(%rsp), %rdi
leaq 0x98(%rsp), %rsi
movl $0x4, %edx
callq 0x33c0
jmp 0x8dbb
movl 0x98(%rsp), %eax
movl %eax, 0x94(%rsp)
movl 0x94(%rsp), %eax
movq %rax, 0x10(%rsp)
movl 0x9c(%rsp), %eax
movq %rax, 0x18(%rsp)
leaq 0x5f(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xa4a0
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rdx
leaq 0x60(%rsp), %rdi
callq 0xa4b0
jmp 0x8e06
leaq 0x5e(%rsp), %rdi
movq %rdi, 0x8(%rsp)
callq 0xa530
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rcx
leaq 0x78(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0xa540
jmp 0x8e30
leaq 0x5e(%rsp), %rdi
callq 0xa5c0
leaq 0x60(%rsp), %rdi
callq 0xa5d0
leaq 0x5f(%rsp), %rdi
callq 0xa630
movl $0x0, 0x58(%rsp)
movl 0x58(%rsp), %eax
cmpl 0x94(%rsp), %eax
jae 0x8f68
movl $0x0, 0x54(%rsp)
movl 0x54(%rsp), %eax
cmpl 0x9c(%rsp), %eax
jae 0x8f56
leaq 0xb0(%rsp), %rdi
leaq 0x50(%rsp), %rsi
movl $0x4, %edx
callq 0x33c0
jmp 0x8e99
movl 0x50(%rsp), %eax
movl %eax, 0x4(%rsp)
movslq 0x58(%rsp), %rsi
leaq 0x78(%rsp), %rdi
callq 0xa640
movq %rax, %rdi
movslq 0x54(%rsp), %rsi
callq 0xa660
movl 0x4(%rsp), %ecx
movl %ecx, (%rax)
movl 0x54(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x54(%rsp)
jmp 0x8e6f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa8(%rsp)
movl %eax, 0xa4(%rsp)
jmp 0x8fc0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa8(%rsp)
movl %eax, 0xa4(%rsp)
jmp 0x8f27
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa8(%rsp)
movl %eax, 0xa4(%rsp)
leaq 0x5e(%rsp), %rdi
callq 0xa5c0
leaq 0x60(%rsp), %rdi
callq 0xa5d0
leaq 0x5f(%rsp), %rdi
callq 0xa630
jmp 0x8fc0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa8(%rsp)
movl %eax, 0xa4(%rsp)
leaq 0x78(%rsp), %rdi
callq 0xa420
jmp 0x8fc0
jmp 0x8f58
movl 0x58(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x58(%rsp)
jmp 0x8e56
movq 0x30(%rsp), %rdi
addq $0x328, %rdi            # imm = 0x328
leaq 0x78(%rsp), %rsi
callq 0xa680
jmp 0x8f80
leaq 0xb0(%rsp), %rdi
callq 0x30b0
jmp 0x8f8f
movl $0x1, 0x4c(%rsp)
leaq 0x78(%rsp), %rdi
callq 0xa420
jmp 0x8fab
movl $0x0, 0x4c(%rsp)
leaq 0xb0(%rsp), %rdi
callq 0x30e0
addq $0x2c8, %rsp            # imm = 0x2C8
retq
leaq 0xb0(%rsp), %rdi
callq 0x30e0
movq 0xa8(%rsp), %rdi
callq 0x3590
nopw (%rax,%rax)