// File: 0asa[P]TTree-source/JavaDB.cpp
// Function: JavaDB::readBlock(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void JavaDB::readBlock(std::string file) {
	std::ifstream fs(file.c_str());
	if (!fs)
		fprintf(stderr, "Error : Cannot find block file %s\n",file.c_str());
	std::string line;
	int ln = 0;
	while (getline(fs, line)) {
		std::vector<std::string> ex = StrTools::explode(line,const_cast<char *>("\t"));
		std::vector<unsigned int> g;
		// treat ex and pushback attribute into g...
		if (ex.size() > 0) {
			for (int i = 0 ; i < ex.size(); ++i)
				g.push_back(atoi(ex[i].c_str()));
			groups.push_back(g);
		} else {
			fprintf(stderr, "Error : Incorrect block file format ?\n");
		}
		++ln;
	}
	setNbGroup((int) groups.size());
	blocked = true;
	fs.close();
}

// Assembly:
subq $0x2c8, %rsp            # imm = 0x2C8
movq %rsi, 0x20(%rsp)
movq %rdi, %rax
movq 0x20(%rsp), %rdi
movq %rdi, 0x28(%rsp)
movq %rax, 0x2c0(%rsp)
movq %rdi, 0x2b8(%rsp)
movq 0x2c0(%rsp), %rax
movq %rax, 0x30(%rsp)
callq 0x3100
movq %rax, %rsi
leaq 0xb0(%rsp), %rdi
movl $0x8, %edx
callq 0x3410
movq 0xb0(%rsp), %rax
movq -0x18(%rax), %rax
leaq 0xb0(%rsp,%rax), %rdi
callq 0x3140
movb %al, 0x3f(%rsp)
jmp 0x1e40f
movb 0x3f(%rsp), %al
testb $0x1, %al
jne 0x1e419
jmp 0x1e463
movq 0x28(%rsp), %rdi
movq 0x22bb3(%rip), %rax     # 0x40fd8
movq (%rax), %rax
movq %rax, 0x18(%rsp)
callq 0x3100
movq 0x18(%rsp), %rdi
movq %rax, %rdx
leaq 0x1253d(%rip), %rsi     # 0x3097e
movb $0x0, %al
callq 0x3360
jmp 0x1e463
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa8(%rsp)
movl %eax, 0xa4(%rsp)
jmp 0x1e65e
leaq 0x80(%rsp), %rdi
callq 0x3350
movl $0x0, 0x7c(%rsp)
leaq 0xb0(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x3070
movq %rax, 0x10(%rsp)
jmp 0x1e494
movq 0x10(%rsp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x3320
movb %al, 0xf(%rsp)
jmp 0x1e4ae
movb 0xf(%rsp), %al
testb $0x1, %al
jne 0x1e4bb
jmp 0x1e5fb
leaq 0x123ea(%rip), %rdx     # 0x308ac
leaq 0x60(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x79d0
jmp 0x1e4d6
leaq 0x48(%rsp), %rdi
callq 0x67b0
leaq 0x60(%rsp), %rdi
callq 0x7b50
cmpq $0x0, %rax
jbe 0x1e5bf
movl $0x0, 0x44(%rsp)
movslq 0x44(%rsp), %rax
movq %rax, (%rsp)
leaq 0x60(%rsp), %rdi
callq 0x7b50
movq %rax, %rcx
movq (%rsp), %rax
cmpq %rcx, %rax
jae 0x1e5a8
movslq 0x44(%rsp), %rsi
leaq 0x60(%rsp), %rdi
callq 0x7b70
movq %rax, %rdi
callq 0x3100
movq %rax, %rdi
callq 0x33a0
movl %eax, 0x40(%rsp)
leaq 0x48(%rsp), %rdi
leaq 0x40(%rsp), %rsi
callq 0x7b90
jmp 0x1e553
jmp 0x1e555
movl 0x44(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x44(%rsp)
jmp 0x1e4fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa8(%rsp)
movl %eax, 0xa4(%rsp)
jmp 0x1e651
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa8(%rsp)
movl %eax, 0xa4(%rsp)
leaq 0x48(%rsp), %rdi
callq 0x6830
leaq 0x60(%rsp), %rdi
callq 0x7bc0
jmp 0x1e651
movq 0x30(%rsp), %rdi
addq $0x60, %rdi
leaq 0x48(%rsp), %rsi
callq 0x1ea90
jmp 0x1e5bd
jmp 0x1e5d7
movq 0x22a12(%rip), %rax     # 0x40fd8
movq (%rax), %rdi
leaq 0x123d1(%rip), %rsi     # 0x309a1
movb $0x0, %al
callq 0x3360
movl 0x7c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x7c(%rsp)
leaq 0x48(%rsp), %rdi
callq 0x6830
leaq 0x60(%rsp), %rdi
callq 0x7bc0
jmp 0x1e478
movq 0x30(%rsp), %rdi
addq $0x60, %rdi
callq 0x1eb00
movq 0x30(%rsp), %rdi
movl %eax, %esi
callq 0xf0b0
jmp 0x1e617
movq 0x30(%rsp), %rax
movb $0x1, 0x5c(%rax)
leaq 0xb0(%rsp), %rdi
callq 0x3080
jmp 0x1e62f
leaq 0x80(%rsp), %rdi
callq 0x3170
leaq 0xb0(%rsp), %rdi
callq 0x30a0
addq $0x2c8, %rsp            # imm = 0x2C8
retq
leaq 0x80(%rsp), %rdi
callq 0x3170
leaq 0xb0(%rsp), %rdi
callq 0x30a0
movq 0xa8(%rsp), %rdi
callq 0x33e0
nopl (%rax,%rax)