// File: BU-DiSC[P]BF-Shared-Hashing/db.cpp
// Function: db::Build(std::vector<std::vector<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, std::allocator<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>>, std::allocator<std::vector<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>, std::allocator<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>>>>, bool)
void db::Build( vector<vector<vector<string> > > reallocated_keys, bool bf_only )
{
	cout << "DB Build started." << endl;

	string index_command = "rm -rf " + index_dir+"/*";
	string data_command = "rm -rf " + data_dir+"/*";
	string bf_command = "rm -rf " + bf_dir+"/*";
	system(bf_command.c_str());
	if ( bf_only==false ){
		system(data_command.c_str());
		system(index_command.c_str());
	}
	
	fp_vec = vector<uint64_t> (num_levels, 0);
	n_vec = vector<uint64_t> (num_levels, 0);
	ofstream file_settings (settings_file, ios::out);
	file_settings << P << endl;
	file_settings << B << endl;
	file_settings << E << endl;
	file_settings << K << endl;
	file_settings << num_filter_units << endl;
	hash_digests = vector<uint64_t> (num_filter_units, 0);
	file_settings << num_levels << endl;
	file_settings << last_sst_keys << endl;

	ofstream file_fence(fence_file, ios::out);
	for ( int i=0 ; i<num_levels ; i++ ){
                int len = fence_pointers[i].size();
		for ( int j=0 ; j<len ; j++ ){
			file_fence << fence_pointers[i][j] << endl;
		}
	}
	file_fence.close();
	if(fastlocal_bf){
		FastLocalBF tmpbf = FastLocalBF(bpk/num_filter_units);
		filter_size = tmpbf.CalculateSpace(B*P);
		last_filter_size = tmpbf.CalculateSpace(last_sst_keys);
		num_probes = tmpbf.num_probes_;
	}else{
		LegacyBF tmpbf = LegacyBF(bpk/num_filter_units);
		uint32_t dont_care;
		filter_size = tmpbf.CalculateSpace(B*P, &dont_care, &num_lines);
		last_filter_size = tmpbf.CalculateSpace(last_sst_keys, &dont_care, &last_num_lines);
		num_probes = tmpbf.num_probes_;

	}
	
	
	bf_prime = (char****) malloc  ( num_levels * sizeof(char***));
	blk_fp_prime = (char****) malloc  ( num_levels * sizeof(char***));
	blk_size_prime = (int**) malloc (num_levels*sizeof(int*));
	cout << "total lv " << num_levels << endl;
	for( int l = 0; l < num_levels; l++){
		cout << "lv " << l << endl;
		vector<vector<string> > keys_one_level = reallocated_keys[l];
		int num_sst = keys_one_level.size();
		bf_prime[l] = (char***) malloc (num_sst*sizeof(char**));
		blk_fp_prime[l] = (char***) malloc (num_sst*sizeof(char**));
		blk_size_prime[l] = (int*) malloc (num_sst*sizeof(int));
		file_settings << num_sst << endl;
		for(int sst_index = 0; sst_index < num_sst; sst_index++){
			vector<string> keys_one_sst = keys_one_level[sst_index];
			char** sst_bf = (char**) malloc (num_filter_units*sizeof(char*));
			string sst_bf_prefix = bf_dir + "level_" + to_string(l) + "-sst_" + to_string(sst_index);



			for(int blo = 0; blo < num_filter_units; blo++){
				string sst_bf_filename = sst_bf_prefix + "_" + to_string(blo) +".txt";
				//cout << sst_bf_filename << endl;
				int end = keys_one_sst.size();
				if(fastlocal_bf){
					FastLocalBF bf = FastLocalBF(bpk/num_filter_units);
					for( int i=0 ; i <end ; i++){
					
						BFHash bfHash (keys_one_sst[i]);	
						vector<uint64_t>* hash_digests = bfHash.getLevelwiseHashDigest(l);
						BFHash::reset = true;
						bf.AddKey(keys_one_sst[i], hash_digests->at(blo));
					}
					bf.Finish();
					flushBFfile(sst_bf_filename, bf.data_, bf.space_);
					char* blo_bf = ( char*) malloc (bf.space_*sizeof(char));
					memcpy(blo_bf, bf.data_, bf.space_);
					sst_bf[blo] = blo_bf;
				}else{
					LegacyBF bf = LegacyBF(bpk/num_filter_units);
					for( int i=0 ; i <end ; i++){
					
						BFHash bfHash (keys_one_sst[i]);	
						vector<uint64_t>* hash_digests = bfHash.getLevelwiseHashDigest(l);
						BFHash::reset = true;
						bf.AddKey(keys_one_sst[i], hash_digests->at(blo));
					}
					bf.Finish();
					flushBFfile(sst_bf_filename, bf.data_, bf.space_);
					char* blo_bf = ( char*) malloc (bf.space_*sizeof(char));
					memcpy(blo_bf, bf.data_, bf.space_);
					sst_bf[blo] = blo_bf;
				}
				//FastLocalBF bf (bpk/num_filter_units*1000);
				
			}
			bf_prime[l][sst_index] = sst_bf;

			// fence pointers
			
			string sst_index_filename = index_dir + "level_" + to_string(l) + "-sst_" + to_string(sst_index) + ".txt";
			// building index
			char** index_one_sst = (char**) malloc (ceil(keys_one_sst.size()/B)*sizeof(char*));
			int j = 0;
			for( int i=0; i<keys_one_sst.size() ; i+=B ){
				index_one_sst[j] = (char *) malloc ((K+1)*sizeof(char));
				strcpy(index_one_sst[j], keys_one_sst[i].c_str());
				j++;
			}
			blk_fp_prime[l][sst_index] = index_one_sst;
			blk_size_prime[l][sst_index] = j;
			flushIndexes(sst_index_filename, index_one_sst, j, K);
			string sst_data_filename = data_dir + "level_" + to_string(l) + "-sst_" + to_string(sst_index) + ".txt";
			for( int i=0 ; i<keys_one_sst.size() ; i++ ){
				keys_one_sst[i].resize(E, '0');
			}
			flushfile(sst_data_filename, &keys_one_sst);
		
		}
	}

	file_settings.close();

	return;
}

// Assembly:
subq $0xc38, %rsp            # imm = 0xC38
movq %rsi, 0x110(%rsp)
movb %dl, %al
movq %rdi, 0xc30(%rsp)
movq %rsi, 0xc28(%rsp)
andb $0x1, %al
movb %al, 0xc27(%rsp)
movq 0xc30(%rsp), %rax
movq %rax, 0x118(%rsp)
movq 0x73eef(%rip), %rdi     # 0x7ffc0
leaq 0x58279(%rip), %rsi     # 0x64351
callq 0x6500
movq %rax, %rdi
movq 0x73ec1(%rip), %rsi     # 0x7ffa8
callq 0x6540
movq 0x118(%rsp), %rdx
addq $0x40, %rdx
leaq 0x58264(%rip), %rsi     # 0x64363
leaq 0xbe0(%rsp), %rdi
movq %rdi, 0x120(%rsp)
callq 0x10ff0
movq 0x120(%rsp), %rsi
leaq 0x58248(%rip), %rdx     # 0x6436b
leaq 0xc00(%rsp), %rdi
callq 0x11740
jmp 0xc132
leaq 0xbe0(%rsp), %rdi
callq 0x6340
movq 0x118(%rsp), %rdx
addq $0x60, %rdx
leaq 0x58211(%rip), %rsi     # 0x64363
leaq 0xb90(%rsp), %rdi
callq 0x10ff0
jmp 0xc161
leaq 0x58203(%rip), %rdx     # 0x6436b
leaq 0xbb0(%rsp), %rdi
leaq 0xb90(%rsp), %rsi
callq 0x11740
jmp 0xc17f
leaq 0xb90(%rsp), %rdi
callq 0x6340
movq 0x118(%rsp), %rdx
addq $0x20, %rdx
leaq 0x581c4(%rip), %rsi     # 0x64363
leaq 0xb50(%rsp), %rdi
callq 0x10ff0
jmp 0xc1ae
leaq 0x581b6(%rip), %rdx     # 0x6436b
leaq 0xb70(%rsp), %rdi
leaq 0xb50(%rsp), %rsi
callq 0x11740
jmp 0xc1cc
leaq 0xb50(%rsp), %rdi
callq 0x6340
leaq 0xb70(%rsp), %rdi
callq 0x6250
movq %rax, %rdi
callq 0x6460
jmp 0xc1f0
movb 0xc27(%rsp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0xc2f5
leaq 0xbb0(%rsp), %rdi
callq 0x6250
movq %rax, %rdi
callq 0x6460
jmp 0xc21c
leaq 0xc00(%rsp), %rdi
callq 0x6250
movq %rax, %rdi
callq 0x6460
jmp 0xc233
jmp 0xc2f5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0xbe0(%rsp), %rdi
callq 0x6340
jmp 0xdd2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdd1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0xb90(%rsp), %rdi
callq 0x6340
jmp 0xdd1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdd10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0xb50(%rsp), %rdi
callq 0x6340
jmp 0xdd10
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdd03
movq 0x118(%rsp), %rax
movslq 0xdc(%rax), %rax
movq %rax, 0x100(%rsp)
movq $0x0, 0xb30(%rsp)
leaq 0xb2f(%rsp), %rdi
movq %rdi, 0x108(%rsp)
callq 0x11120
movq 0x100(%rsp), %rsi
movq 0x108(%rsp), %rcx
leaq 0xb38(%rsp), %rdi
leaq 0xb30(%rsp), %rdx
callq 0x11130
jmp 0xc354
movq 0x118(%rsp), %rdi
addq $0x1b0, %rdi            # imm = 0x1B0
leaq 0xb38(%rsp), %rsi
movq %rsi, 0xe8(%rsp)
callq 0x111b0
movq 0xe8(%rsp), %rdi
callq 0x8500
leaq 0xb2f(%rsp), %rdi
callq 0x88d0
movq 0x118(%rsp), %rax
movslq 0xdc(%rax), %rax
movq %rax, 0xf0(%rsp)
movq $0x0, 0xb08(%rsp)
leaq 0xb07(%rsp), %rdi
movq %rdi, 0xf8(%rsp)
callq 0x11120
movq 0xf0(%rsp), %rsi
movq 0xf8(%rsp), %rcx
leaq 0xb10(%rsp), %rdi
leaq 0xb08(%rsp), %rdx
callq 0x11130
jmp 0xc3f1
movq 0x118(%rsp), %rdi
addq $0x1c8, %rdi            # imm = 0x1C8
leaq 0xb10(%rsp), %rsi
movq %rsi, 0xe0(%rsp)
callq 0x111b0
movq 0xe0(%rsp), %rdi
callq 0x8500
leaq 0xb07(%rsp), %rdi
callq 0x88d0
movq 0x118(%rsp), %rsi
subq $-0x80, %rsi
leaq 0x900(%rsp), %rdi
movl $0x10, %edx
callq 0x68f0
jmp 0xc44f
movq 0x118(%rsp), %rax
movl 0xc4(%rax), %esi
leaq 0x900(%rsp), %rdi
callq 0x6830
movq %rax, 0xd8(%rsp)
jmp 0xc474
movq 0xd8(%rsp), %rdi
movq 0x73b25(%rip), %rsi     # 0x7ffa8
callq 0x6540
jmp 0xc48a
movq 0x118(%rsp), %rax
movl 0xc8(%rax), %esi
leaq 0x900(%rsp), %rdi
callq 0x6830
movq %rax, 0xd0(%rsp)
jmp 0xc4af
movq 0xd0(%rsp), %rdi
movq 0x73aea(%rip), %rsi     # 0x7ffa8
callq 0x6540
jmp 0xc4c5
movq 0x118(%rsp), %rax
movl 0xcc(%rax), %esi
leaq 0x900(%rsp), %rdi
callq 0x6830
movq %rax, 0xc8(%rsp)
jmp 0xc4ea
movq 0xc8(%rsp), %rdi
movq 0x73aaf(%rip), %rsi     # 0x7ffa8
callq 0x6540
jmp 0xc500
movq 0x118(%rsp), %rax
movl 0xd0(%rax), %esi
leaq 0x900(%rsp), %rdi
callq 0x6830
movq %rax, 0xc0(%rsp)
jmp 0xc525
movq 0xc0(%rsp), %rdi
movq 0x73a74(%rip), %rsi     # 0x7ffa8
callq 0x6540
jmp 0xc53b
movq 0x118(%rsp), %rax
movl 0x110(%rax), %esi
leaq 0x900(%rsp), %rdi
callq 0x6830
movq %rax, 0xb8(%rsp)
jmp 0xc560
movq 0xb8(%rsp), %rdi
movq 0x73a39(%rip), %rsi     # 0x7ffa8
callq 0x6540
jmp 0xc576
movq 0x118(%rsp), %rax
movslq 0x110(%rax), %rax
movq %rax, 0xa8(%rsp)
movq $0x0, 0x8e0(%rsp)
leaq 0x8df(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x11120
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rcx
leaq 0x8e8(%rsp), %rdi
leaq 0x8e0(%rsp), %rdx
callq 0x11130
jmp 0xc5d5
movq 0x118(%rsp), %rdi
addq $0x170, %rdi            # imm = 0x170
leaq 0x8e8(%rsp), %rsi
movq %rsi, 0x98(%rsp)
callq 0x111b0
movq 0x98(%rsp), %rdi
callq 0x8500
leaq 0x8df(%rsp), %rdi
callq 0x88d0
movq 0x118(%rsp), %rax
movl 0xdc(%rax), %esi
leaq 0x900(%rsp), %rdi
callq 0x6830
movq %rax, 0xa0(%rsp)
jmp 0xc638
movq 0xa0(%rsp), %rdi
movq 0x73961(%rip), %rsi     # 0x7ffa8
callq 0x6540
jmp 0xc64e
movq 0x118(%rsp), %rax
movl 0x100(%rax), %esi
leaq 0x900(%rsp), %rdi
callq 0x6830
movq %rax, 0x90(%rsp)
jmp 0xc673
movq 0x90(%rsp), %rdi
movq 0x73926(%rip), %rsi     # 0x7ffa8
callq 0x6540
jmp 0xc689
movq 0x118(%rsp), %rsi
addq $0xa0, %rsi
leaq 0x6d8(%rsp), %rdi
movl $0x10, %edx
callq 0x68f0
jmp 0xc6ac
movl $0x0, 0x6d4(%rsp)
movq 0x118(%rsp), %rcx
movl 0x6d4(%rsp), %eax
cmpl 0xdc(%rcx), %eax
jge 0xc84c
movq 0x118(%rsp), %rdi
addq $0x140, %rdi            # imm = 0x140
movslq 0x6d4(%rsp), %rsi
callq 0x11460
movq %rax, %rdi
callq 0x8020
movl %eax, 0x6d0(%rsp)
movl $0x0, 0x6cc(%rsp)
movl 0x6cc(%rsp), %eax
cmpl 0x6d0(%rsp), %eax
jge 0xc834
movq 0x118(%rsp), %rdi
addq $0x140, %rdi            # imm = 0x140
movslq 0x6d4(%rsp), %rsi
callq 0x11460
movq %rax, %rdi
movslq 0x6cc(%rsp), %rsi
callq 0x8040
movq %rax, %rsi
leaq 0x6d8(%rsp), %rdi
callq 0x6490
movq %rax, 0x88(%rsp)
jmp 0xc762
movq 0x88(%rsp), %rdi
movq 0x73837(%rip), %rsi     # 0x7ffa8
callq 0x6540
jmp 0xc778
jmp 0xc77a
movl 0x6cc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x6cc(%rsp)
jmp 0xc708
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0xb2f(%rsp), %rdi
callq 0x88d0
jmp 0xdd03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0xb07(%rsp), %rdi
callq 0x88d0
jmp 0xdd03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdcf6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0x8df(%rsp), %rdi
callq 0x88d0
jmp 0xdcf6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdce9
jmp 0xc836
movl 0x6d4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x6d4(%rsp)
jmp 0xc6b7
leaq 0x6d8(%rsp), %rdi
callq 0x6720
jmp 0xc85b
movq 0x118(%rsp), %rax
testb $0x1, 0x10c(%rax)
je 0xc950
movq 0x118(%rsp), %rcx
movl 0x104(%rcx), %eax
movl 0x110(%rcx), %ecx
cltd
idivl %ecx
movl %eax, %esi
leaq 0x658(%rsp), %rdi
callq 0x11790
jmp 0xc898
movq 0x118(%rsp), %rcx
movl 0xc4(%rcx), %eax
movl 0xc8(%rcx), %esi
imull %eax, %esi
leaq 0x658(%rsp), %rdi
callq 0x11840
movl %eax, 0x84(%rsp)
jmp 0xc8c5
movq 0x118(%rsp), %rax
movl 0x84(%rsp), %ecx
movl %ecx, 0x120(%rax)
movl 0x100(%rax), %esi
leaq 0x658(%rsp), %rdi
callq 0x11840
movl %eax, 0x80(%rsp)
jmp 0xc8f6
movq 0x118(%rsp), %rax
movl 0x80(%rsp), %ecx
movl %ecx, 0x124(%rax)
movl 0x65c(%rsp), %ecx
movl %ecx, 0x130(%rax)
leaq 0x658(%rsp), %rdi
callq 0x118a0
jmp 0xca03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0x658(%rsp), %rdi
callq 0x118a0
jmp 0xdce9
movq 0x118(%rsp), %rcx
movl 0x104(%rcx), %eax
movl 0x110(%rcx), %ecx
cltd
idivl %ecx
movl %eax, %esi
leaq 0x628(%rsp), %rdi
callq 0x118c0
jmp 0xc978
movq 0x118(%rsp), %rcx
movl 0xc8(%rcx), %esi
imull 0xc4(%rcx), %esi
addq $0x128, %rcx            # imm = 0x128
leaq 0x628(%rsp), %rdi
leaq 0x624(%rsp), %rdx
callq 0xab80
movq 0x118(%rsp), %rcx
movl %eax, 0x120(%rcx)
movl 0x100(%rcx), %esi
addq $0x12c, %rcx            # imm = 0x12C
leaq 0x628(%rsp), %rdi
leaq 0x624(%rsp), %rdx
callq 0xab80
movl %eax, %ecx
movq 0x118(%rsp), %rax
movl %ecx, 0x124(%rax)
movl 0x62c(%rsp), %ecx
movl %ecx, 0x130(%rax)
leaq 0x628(%rsp), %rdi
callq 0x11930
movq 0x118(%rsp), %rax
movslq 0xdc(%rax), %rdi
shlq $0x3, %rdi
callq 0x66b0
movq %rax, %rcx
movq 0x118(%rsp), %rax
movq %rcx, 0x158(%rax)
movslq 0xdc(%rax), %rdi
shlq $0x3, %rdi
callq 0x66b0
movq %rax, %rcx
movq 0x118(%rsp), %rax
movq %rcx, 0x160(%rax)
movslq 0xdc(%rax), %rdi
shlq $0x3, %rdi
callq 0x66b0
movq %rax, %rcx
movq 0x118(%rsp), %rax
movq %rcx, 0x168(%rax)
movq 0x73548(%rip), %rdi     # 0x7ffc0
leaq 0x578ef(%rip), %rsi     # 0x6436e
callq 0x6500
movq %rax, 0x78(%rsp)
jmp 0xca8b
movq 0x78(%rsp), %rdi
movq 0x118(%rsp), %rax
movl 0xdc(%rax), %esi
callq 0x6830
movq %rax, 0x70(%rsp)
jmp 0xcaaa
movq 0x70(%rsp), %rdi
movq 0x734f2(%rip), %rsi     # 0x7ffa8
callq 0x6540
jmp 0xcabd
movl $0x0, 0x620(%rsp)
movq 0x118(%rsp), %rcx
movl 0x620(%rsp), %eax
cmpl 0xdc(%rcx), %eax
jge 0xdc91
movq 0x734d6(%rip), %rdi     # 0x7ffc0
leaq 0x57883(%rip), %rsi     # 0x64374
callq 0x6500
movq %rax, 0x68(%rsp)
jmp 0xcafd
movq 0x68(%rsp), %rdi
movl 0x620(%rsp), %esi
callq 0x6830
movq %rax, 0x60(%rsp)
jmp 0xcb15
movq 0x60(%rsp), %rdi
movq 0x73487(%rip), %rsi     # 0x7ffa8
callq 0x6540
jmp 0xcb28
movq 0x110(%rsp), %rdi
movslq 0x620(%rsp), %rsi
callq 0x11950
movq %rax, %rsi
leaq 0x608(%rsp), %rdi
callq 0x9950
jmp 0xcb4f
leaq 0x608(%rsp), %rdi
callq 0x9a50
movl %eax, 0x604(%rsp)
movslq 0x604(%rsp), %rdi
shlq $0x3, %rdi
callq 0x66b0
movq %rax, %rdx
movq 0x118(%rsp), %rax
movq 0x158(%rax), %rax
movslq 0x620(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movslq 0x604(%rsp), %rdi
shlq $0x3, %rdi
callq 0x66b0
movq %rax, %rdx
movq 0x118(%rsp), %rax
movq 0x160(%rax), %rax
movslq 0x620(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movslq 0x604(%rsp), %rdi
shlq $0x2, %rdi
callq 0x66b0
movq %rax, %rdx
movq 0x118(%rsp), %rax
movq 0x168(%rax), %rax
movslq 0x620(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movl 0x604(%rsp), %esi
leaq 0x900(%rsp), %rdi
callq 0x6830
movq %rax, 0x58(%rsp)
jmp 0xcc0b
movq 0x58(%rsp), %rdi
movq 0x73391(%rip), %rsi     # 0x7ffa8
callq 0x6540
jmp 0xcc1e
movl $0x0, 0x600(%rsp)
movl 0x600(%rsp), %eax
cmpl 0x604(%rsp), %eax
jge 0xdc5f
movslq 0x600(%rsp), %rsi
leaq 0x608(%rsp), %rdi
callq 0x11460
movq %rax, %rsi
leaq 0x5e8(%rsp), %rdi
callq 0x7d60
jmp 0xcc64
movq 0x118(%rsp), %rax
movslq 0x110(%rax), %rdi
shlq $0x3, %rdi
callq 0x66b0
movq 0x118(%rsp), %rsi
movq %rax, 0x5e0(%rsp)
addq $0x20, %rsi
leaq 0x576e1(%rip), %rdx     # 0x64378
leaq 0x560(%rsp), %rdi
callq 0x10f60
jmp 0xcca6
movl 0x620(%rsp), %esi
leaq 0x540(%rsp), %rdi
callq 0x11a60
jmp 0xccbc
leaq 0x580(%rsp), %rdi
leaq 0x560(%rsp), %rsi
leaq 0x540(%rsp), %rdx
callq 0x11970
jmp 0xccdb
leaq 0x5769d(%rip), %rdx     # 0x6437f
leaq 0x5a0(%rsp), %rdi
leaq 0x580(%rsp), %rsi
callq 0x11740
jmp 0xccf9
movl 0x600(%rsp), %esi
leaq 0x520(%rsp), %rdi
callq 0x11a60
jmp 0xcd0f
leaq 0x5c0(%rsp), %rdi
leaq 0x5a0(%rsp), %rsi
leaq 0x520(%rsp), %rdx
callq 0x11970
jmp 0xcd2e
leaq 0x520(%rsp), %rdi
callq 0x6340
leaq 0x5a0(%rsp), %rdi
callq 0x6340
leaq 0x580(%rsp), %rdi
callq 0x6340
leaq 0x540(%rsp), %rdi
callq 0x6340
leaq 0x560(%rsp), %rdi
callq 0x6340
movl $0x0, 0x51c(%rsp)
movq 0x118(%rsp), %rcx
movl 0x51c(%rsp), %eax
cmpl 0x110(%rcx), %eax
jge 0xd497
leaq 0x575e1(%rip), %rdx     # 0x6437d
leaq 0x4b8(%rsp), %rdi
leaq 0x5c0(%rsp), %rsi
callq 0x10f60
jmp 0xcdb3
movl 0x51c(%rsp), %esi
leaq 0x498(%rsp), %rdi
callq 0x11a60
jmp 0xcdc9
leaq 0x4d8(%rsp), %rdi
leaq 0x4b8(%rsp), %rsi
leaq 0x498(%rsp), %rdx
callq 0x11970
jmp 0xcde8
leaq 0x57f42(%rip), %rdx     # 0x64d31
leaq 0x4f8(%rsp), %rdi
leaq 0x4d8(%rsp), %rsi
callq 0x11740
jmp 0xce06
leaq 0x4d8(%rsp), %rdi
callq 0x6340
leaq 0x498(%rsp), %rdi
callq 0x6340
leaq 0x4b8(%rsp), %rdi
callq 0x6340
leaq 0x5e8(%rsp), %rdi
callq 0x8020
movq %rax, %rcx
movq 0x118(%rsp), %rax
movl %ecx, 0x494(%rsp)
testb $0x1, 0x10c(%rax)
je 0xd224
movq 0x118(%rsp), %rcx
movl 0x104(%rcx), %eax
movl 0x110(%rcx), %ecx
cltd
idivl %ecx
movl %eax, %esi
leaq 0x420(%rsp), %rdi
callq 0x11790
jmp 0xce81
movl $0x0, 0x41c(%rsp)
movl 0x41c(%rsp), %eax
cmpl 0x494(%rsp), %eax
jge 0xd132
movslq 0x41c(%rsp), %rsi
leaq 0x5e8(%rsp), %rdi
callq 0x8040
movq %rax, %rsi
leaq 0x3f8(%rsp), %rdi
callq 0x11ba0
jmp 0xcec7
movl 0x620(%rsp), %esi
leaq 0x3f8(%rsp), %rdi
callq 0x1e3e0
movq %rax, 0x50(%rsp)
jmp 0xcee2
movq 0x50(%rsp), %rax
movq %rax, 0x3f0(%rsp)
leaq 0x735e2(%rip), %rax     # 0x804d8
movb $0x1, (%rax)
movslq 0x41c(%rsp), %rsi
leaq 0x5e8(%rsp), %rdi
callq 0x8040
movq %rax, 0x40(%rsp)
movq 0x3f0(%rsp), %rdi
movslq 0x51c(%rsp), %rsi
callq 0x11c50
movq %rax, 0x48(%rsp)
jmp 0xcf2f
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rax
movq (%rax), %rdx
leaq 0x420(%rsp), %rdi
callq 0x11c20
jmp 0xcf4b
leaq 0x3f8(%rsp), %rdi
callq 0x11c90
movl 0x41c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x41c(%rsp)
jmp 0xce8c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdc82
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdc50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xd043
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xd036
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xd029
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xd01c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0x520(%rsp), %rdi
callq 0x6340
leaq 0x5a0(%rsp), %rdi
callq 0x6340
leaq 0x580(%rsp), %rdi
callq 0x6340
leaq 0x540(%rsp), %rdi
callq 0x6340
leaq 0x560(%rsp), %rdi
callq 0x6340
jmp 0xdc50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdc43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xd0c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xd0bb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0x4d8(%rsp), %rdi
callq 0x6340
leaq 0x498(%rsp), %rdi
callq 0x6340
leaq 0x4b8(%rsp), %rdi
callq 0x6340
jmp 0xdc43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xd485
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xd212
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0x3f8(%rsp), %rdi
callq 0x11c90
jmp 0xd212
leaq 0x420(%rsp), %rdi
callq 0x11ca0
jmp 0xd141
leaq 0x3d0(%rsp), %rdi
leaq 0x4f8(%rsp), %rsi
callq 0x6260
jmp 0xd158
movq 0x118(%rsp), %rdi
movq 0x430(%rsp), %rdx
movl 0x438(%rsp), %ecx
leaq 0x3d0(%rsp), %rsi
callq 0xdd40
jmp 0xd17e
leaq 0x3d0(%rsp), %rdi
callq 0x6340
movl 0x438(%rsp), %eax
movl %eax, %edi
shlq $0x0, %rdi
callq 0x66b0
movq %rax, 0x3c8(%rsp)
movq 0x3c8(%rsp), %rdi
movq 0x430(%rsp), %rsi
movl 0x438(%rsp), %eax
movl %eax, %edx
callq 0x6440
movq 0x3c8(%rsp), %rdx
movq 0x5e0(%rsp), %rax
movslq 0x51c(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
leaq 0x420(%rsp), %rdi
callq 0x118a0
jmp 0xd462
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0x3d0(%rsp), %rdi
callq 0x6340
leaq 0x420(%rsp), %rdi
callq 0x118a0
jmp 0xd485
movq 0x118(%rsp), %rcx
movl 0x104(%rcx), %eax
movl 0x110(%rcx), %ecx
cltd
idivl %ecx
movl %eax, %esi
leaq 0x398(%rsp), %rdi
callq 0x118c0
jmp 0xd24c
movl $0x0, 0x394(%rsp)
movl 0x394(%rsp), %eax
cmpl 0x494(%rsp), %eax
jge 0xd378
movslq 0x394(%rsp), %rsi
leaq 0x5e8(%rsp), %rdi
callq 0x8040
movq %rax, %rsi
leaq 0x370(%rsp), %rdi
callq 0x11ba0
jmp 0xd292
movl 0x620(%rsp), %esi
leaq 0x370(%rsp), %rdi
callq 0x1e3e0
movq %rax, 0x38(%rsp)
jmp 0xd2ad
movq 0x38(%rsp), %rax
movq %rax, 0x368(%rsp)
leaq 0x73217(%rip), %rax     # 0x804d8
movb $0x1, (%rax)
movslq 0x394(%rsp), %rsi
leaq 0x5e8(%rsp), %rdi
callq 0x8040
movq %rax, 0x28(%rsp)
movq 0x368(%rsp), %rdi
movslq 0x51c(%rsp), %rsi
callq 0x11c50
movq %rax, 0x30(%rsp)
jmp 0xd2fa
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rax
movq (%rax), %rdx
leaq 0x398(%rsp), %rdi
callq 0xa830
jmp 0xd316
leaq 0x370(%rsp), %rdi
callq 0x11c90
movl 0x394(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x394(%rsp)
jmp 0xd257
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xd453
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0x370(%rsp), %rdi
callq 0x11c90
jmp 0xd453
leaq 0x398(%rsp), %rdi
callq 0xa8b0
jmp 0xd387
leaq 0x348(%rsp), %rdi
leaq 0x4f8(%rsp), %rsi
callq 0x6260
jmp 0xd39e
movq 0x118(%rsp), %rdi
movq 0x3c0(%rsp), %rdx
movl 0x3a4(%rsp), %ecx
leaq 0x348(%rsp), %rsi
callq 0xdd40
jmp 0xd3c4
leaq 0x348(%rsp), %rdi
callq 0x6340
movslq 0x3a4(%rsp), %rdi
shlq $0x0, %rdi
callq 0x66b0
movq %rax, 0x340(%rsp)
movq 0x340(%rsp), %rdi
movq 0x3c0(%rsp), %rsi
movslq 0x3a4(%rsp), %rdx
callq 0x6440
movq 0x340(%rsp), %rdx
movq 0x5e0(%rsp), %rax
movslq 0x51c(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
leaq 0x398(%rsp), %rdi
callq 0x11930
jmp 0xd462
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0x348(%rsp), %rdi
callq 0x6340
leaq 0x398(%rsp), %rdi
callq 0x11930
jmp 0xd485
leaq 0x4f8(%rsp), %rdi
callq 0x6340
movl 0x51c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x51c(%rsp)
jmp 0xcd7a
leaq 0x4f8(%rsp), %rdi
callq 0x6340
jmp 0xdc43
movq 0x118(%rsp), %rsi
movq 0x5e0(%rsp), %rdx
movq 0x158(%rsi), %rax
movslq 0x620(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x600(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
addq $0x40, %rsi
leaq 0x56ea7(%rip), %rdx     # 0x64378
leaq 0x2a0(%rsp), %rdi
callq 0x10f60
jmp 0xd4e0
movl 0x620(%rsp), %esi
leaq 0x280(%rsp), %rdi
callq 0x11a60
jmp 0xd4f6
leaq 0x2c0(%rsp), %rdi
leaq 0x2a0(%rsp), %rsi
leaq 0x280(%rsp), %rdx
callq 0x11970
jmp 0xd515
leaq 0x56e63(%rip), %rdx     # 0x6437f
leaq 0x2e0(%rsp), %rdi
leaq 0x2c0(%rsp), %rsi
callq 0x11740
jmp 0xd533
movl 0x600(%rsp), %esi
leaq 0x260(%rsp), %rdi
callq 0x11a60
jmp 0xd549
leaq 0x300(%rsp), %rdi
leaq 0x2e0(%rsp), %rsi
leaq 0x260(%rsp), %rdx
callq 0x11970
jmp 0xd568
leaq 0x577c2(%rip), %rdx     # 0x64d31
leaq 0x320(%rsp), %rdi
leaq 0x300(%rsp), %rsi
callq 0x11740
jmp 0xd586
leaq 0x300(%rsp), %rdi
callq 0x6340
leaq 0x260(%rsp), %rdi
callq 0x6340
leaq 0x2e0(%rsp), %rdi
callq 0x6340
leaq 0x2c0(%rsp), %rdi
callq 0x6340
leaq 0x280(%rsp), %rdi
callq 0x6340
leaq 0x2a0(%rsp), %rdi
callq 0x6340
leaq 0x5e8(%rsp), %rdi
callq 0x8020
movq 0x118(%rsp), %rcx
movslq 0xc8(%rcx), %rcx
xorl %edx, %edx
divq %rcx
movq %rax, %rdi
callq 0x11e00
movsd %xmm0, 0x20(%rsp)
jmp 0xd605
movsd 0x20(%rsp), %xmm0
movsd 0x56ac5(%rip), %xmm1    # 0x640d8
mulsd %xmm1, %xmm0
movaps %xmm0, %xmm1
cvttsd2si %xmm1, %rdi
movq %rdi, %rcx
sarq $0x3f, %rcx
movsd 0x56ac2(%rip), %xmm1    # 0x640f0
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rax
andq %rcx, %rax
orq %rax, %rdi
callq 0x66b0
movq %rax, 0x258(%rsp)
movl $0x0, 0x254(%rsp)
movl $0x0, 0x250(%rsp)
movslq 0x250(%rsp), %rax
movq %rax, 0x18(%rsp)
leaq 0x5e8(%rsp), %rdi
callq 0x8020
movq %rax, %rcx
movq 0x18(%rsp), %rax
cmpq %rcx, %rax
jae 0xd828
movq 0x118(%rsp), %rax
movl 0xd0(%rax), %eax
addl $0x1, %eax
movslq %eax, %rdi
shlq $0x0, %rdi
callq 0x66b0
movq %rax, %rdx
movq 0x258(%rsp), %rax
movslq 0x254(%rsp), %rcx
movq %rdx, (%rax,%rcx,8)
movq 0x258(%rsp), %rax
movslq 0x254(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, 0x10(%rsp)
movslq 0x250(%rsp), %rsi
leaq 0x5e8(%rsp), %rdi
callq 0x8040
movq %rax, %rdi
callq 0x6250
movq 0x10(%rsp), %rdi
movq %rax, %rsi
callq 0x64b0
movl 0x254(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x254(%rsp)
movq 0x118(%rsp), %rax
movl 0xc8(%rax), %eax
addl 0x250(%rsp), %eax
movl %eax, 0x250(%rsp)
jmp 0xd660
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xd7fd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xd7f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xd7e3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xd7d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xd7c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0x300(%rsp), %rdi
callq 0x6340
leaq 0x260(%rsp), %rdi
callq 0x6340
leaq 0x2e0(%rsp), %rdi
callq 0x6340
leaq 0x2c0(%rsp), %rdi
callq 0x6340
leaq 0x280(%rsp), %rdi
callq 0x6340
leaq 0x2a0(%rsp), %rdi
callq 0x6340
jmp 0xdc43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdc36
movq 0x118(%rsp), %rax
movq 0x258(%rsp), %rsi
movq 0x160(%rax), %rcx
movslq 0x620(%rsp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq 0x600(%rsp), %rdx
movq %rsi, (%rcx,%rdx,8)
movl 0x254(%rsp), %edx
movq 0x168(%rax), %rax
movslq 0x620(%rsp), %rcx
movq (%rax,%rcx,8), %rax
movslq 0x600(%rsp), %rcx
movl %edx, (%rax,%rcx,4)
leaq 0x230(%rsp), %rdi
leaq 0x320(%rsp), %rsi
callq 0x6260
jmp 0xd893
movq 0x118(%rsp), %rdi
movq 0x258(%rsp), %rdx
movl 0x254(%rsp), %ecx
movl 0xd0(%rdi), %r8d
leaq 0x230(%rsp), %rsi
callq 0xde30
jmp 0xd8c0
leaq 0x230(%rsp), %rdi
callq 0x6340
movq 0x118(%rsp), %rsi
addq $0x60, %rsi
leaq 0x56a98(%rip), %rdx     # 0x64378
leaq 0x190(%rsp), %rdi
callq 0x10f60
jmp 0xd8ef
movl 0x620(%rsp), %esi
leaq 0x170(%rsp), %rdi
callq 0x11a60
jmp 0xd905
leaq 0x1b0(%rsp), %rdi
leaq 0x190(%rsp), %rsi
leaq 0x170(%rsp), %rdx
callq 0x11970
jmp 0xd924
leaq 0x56a54(%rip), %rdx     # 0x6437f
leaq 0x1d0(%rsp), %rdi
leaq 0x1b0(%rsp), %rsi
callq 0x11740
jmp 0xd942
movl 0x600(%rsp), %esi
leaq 0x150(%rsp), %rdi
callq 0x11a60
jmp 0xd958
leaq 0x1f0(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
leaq 0x150(%rsp), %rdx
callq 0x11970
jmp 0xd977
leaq 0x573b3(%rip), %rdx     # 0x64d31
leaq 0x210(%rsp), %rdi
leaq 0x1f0(%rsp), %rsi
callq 0x11740
jmp 0xd995
leaq 0x1f0(%rsp), %rdi
callq 0x6340
leaq 0x150(%rsp), %rdi
callq 0x6340
leaq 0x1d0(%rsp), %rdi
callq 0x6340
leaq 0x1b0(%rsp), %rdi
callq 0x6340
leaq 0x170(%rsp), %rdi
callq 0x6340
leaq 0x190(%rsp), %rdi
callq 0x6340
movl $0x0, 0x14c(%rsp)
movslq 0x14c(%rsp), %rax
movq %rax, 0x8(%rsp)
leaq 0x5e8(%rsp), %rdi
callq 0x8020
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0xdb7b
movslq 0x14c(%rsp), %rsi
leaq 0x5e8(%rsp), %rdi
callq 0x8040
movq %rax, %rdi
movq 0x118(%rsp), %rax
movslq 0xcc(%rax), %rsi
movl $0x30, %edx
callq 0x61c0
jmp 0xda4c
jmp 0xda4e
movl 0x14c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x14c(%rsp)
jmp 0xd9ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0x230(%rsp), %rdi
callq 0x6340
jmp 0xdc36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdb50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdb43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdb36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdb29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdb1c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0x1f0(%rsp), %rdi
callq 0x6340
leaq 0x150(%rsp), %rdi
callq 0x6340
leaq 0x1d0(%rsp), %rdi
callq 0x6340
leaq 0x1b0(%rsp), %rdi
callq 0x6340
leaq 0x170(%rsp), %rdi
callq 0x6340
leaq 0x190(%rsp), %rdi
callq 0x6340
jmp 0xdc36
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
jmp 0xdc29
leaq 0x128(%rsp), %rdi
leaq 0x210(%rsp), %rsi
callq 0x6260
jmp 0xdb92
movq 0x118(%rsp), %rdi
leaq 0x128(%rsp), %rsi
leaq 0x5e8(%rsp), %rdx
callq 0xdfc0
jmp 0xdbb1
leaq 0x128(%rsp), %rdi
callq 0x6340
leaq 0x210(%rsp), %rdi
callq 0x6340
leaq 0x320(%rsp), %rdi
callq 0x6340
leaq 0x5c0(%rsp), %rdi
callq 0x6340
leaq 0x5e8(%rsp), %rdi
callq 0x7e60
movl 0x600(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x600(%rsp)
jmp 0xcc29
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xbd8(%rsp)
movl %eax, 0xbd4(%rsp)
leaq 0x128(%rsp), %rdi
callq 0x6340
leaq 0x210(%rsp), %rdi
callq 0x6340
leaq 0x320(%rsp), %rdi
callq 0x6340
leaq 0x5c0(%rsp), %rdi
callq 0x6340
leaq 0x5e8(%rsp), %rdi
callq 0x7e60
jmp 0xdc82
leaq 0x608(%rsp), %rdi
callq 0x8560
movl 0x620(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x620(%rsp)
jmp 0xcac8
leaq 0x608(%rsp), %rdi
callq 0x8560
jmp 0xdce9
leaq 0x900(%rsp), %rdi
callq 0x6720
jmp 0xdca0
leaq 0x6d8(%rsp), %rdi
callq 0x6760
leaq 0x900(%rsp), %rdi
callq 0x6760
leaq 0xb70(%rsp), %rdi
callq 0x6340
leaq 0xbb0(%rsp), %rdi
callq 0x6340
leaq 0xc00(%rsp), %rdi
callq 0x6340
addq $0xc38, %rsp            # imm = 0xC38
retq
leaq 0x6d8(%rsp), %rdi
callq 0x6760
leaq 0x900(%rsp), %rdi
callq 0x6760
leaq 0xb70(%rsp), %rdi
callq 0x6340
leaq 0xbb0(%rsp), %rdi
callq 0x6340
leaq 0xc00(%rsp), %rdi
callq 0x6340
movq 0xbd8(%rsp), %rdi
callq 0x6850
nopw (%rax,%rax)