void CPasswordLookupHash::GetPasswordChunk(BYTE bytIn, LONG nLengthToGet, BYTE* pbytOut) { int nIndex=0; nIndex = GetLookup(bytIn, nLengthToGet); memcpy((LPVOID)pbytOut, (LPVOID)&PasswordLookupHash__tab[nIndex], nLengthToGet); }
void bm_PrintTopBlocks() { double total_lups=0; double total_runs=0; double total_cycles=0; double total_hops=0; double total_sops=0; for (size_t i=0;i<all_blocks.size();i++) { total_lups+=GetLookup(all_blocks[i]); total_cycles+=all_blocks[i]->runs*all_blocks[i]->guest_cycles; total_hops+=all_blocks[i]->runs*all_blocks[i]->host_opcodes; total_sops+=all_blocks[i]->runs*all_blocks[i]->guest_opcodes; total_runs+=all_blocks[i]->runs; } printf("Total lookups: %.0fKRuns, %.0fKLuops, Total cycles: %.0fMhz, Total Hops: %.0fMips, Total Sops: %.0fMips! \n",total_runs/1000,total_lups/1000,total_cycles/1000/1000,total_hops/1000/1000,total_sops/1000/1000); total_hops/=100; total_cycles/=100; total_runs/=100; double sel_hops=0; for (size_t i=0;i<(all_blocks.size()/100);i++) { printf("Block %08X: %06X, r: %d (c: %d, s: %d, h: %d) (r: %.2f%%, c: %.2f%%, h: %.2f%%)\n", all_blocks[i]->addr, all_blocks[i]->code,all_blocks[i]->runs, all_blocks[i]->guest_cycles,all_blocks[i]->guest_opcodes,all_blocks[i]->host_opcodes, all_blocks[i]->runs/total_runs, all_blocks[i]->guest_cycles*all_blocks[i]->runs/total_cycles, all_blocks[i]->host_opcodes*all_blocks[i]->runs/total_hops); sel_hops+=all_blocks[i]->host_opcodes*all_blocks[i]->runs; } printf(" >-< %.2f%% covered in top 1% blocks\n",sel_hops/total_hops); size_t i; for (i=all_blocks.size()/100;sel_hops/total_hops<50;i++) { printf("Block %08X: %06X, r: %d (c: %d, s: %d, h: %d) (r: %.2f%%, c: %.2f%%, h: %.2f%%)\n", all_blocks[i]->addr, all_blocks[i]->code,all_blocks[i]->runs, all_blocks[i]->guest_cycles,all_blocks[i]->guest_opcodes,all_blocks[i]->host_opcodes, all_blocks[i]->runs/total_runs, all_blocks[i]->guest_cycles*all_blocks[i]->runs/total_cycles, all_blocks[i]->host_opcodes*all_blocks[i]->runs/total_hops); sel_hops+=all_blocks[i]->host_opcodes*all_blocks[i]->runs; } printf(" >-< %.2f%% covered in top %.2f%% blocks\n",sel_hops/total_hops,i*100.0/all_blocks.size()); }