feat: reimplement hashes.

This commit is contained in:
2025-03-14 20:33:59 +08:00
parent b223a3022f
commit fb368a30a0

View File

@@ -3,46 +3,43 @@
#define XXH_INLINE_ALL #define XXH_INLINE_ALL
#include "xxhash.h" #include "xxhash.h"
#ifndef HIDWORD namespace {
#define HIDWORD(x) (*((int32_t*)&(x) + 1))
#endif
// copy from ida F5. constexpr uint64_t (uint64_t ) {
constexpr uint64_t unk_hash(uint64_t a1) { constexpr auto = 0x7ED55D16u;
unsigned int v1; // eax constexpr auto = 0xC761C23Cu;
int v2; // edx constexpr auto = 0x165667B1u;
int64_t v3; // rdx constexpr auto = 0x160733E3u;
constexpr auto = 0x028FB93Bu;
constexpr auto = 0xB55A4F09uLL;
v1 = ((33 constexpr auto = [](uint32_t ) {
* ((4097 * HIDWORD(a1) + 2127912214) auto = (0x1000 + 1) * + ;
^ ((unsigned int)(4097 * HIDWORD(a1) + 2127912214) >> 19) auto = (0x20 + 1) * ( ^ ( >> 19) ^ );
^ 0xC761C23C) auto = (( + ) << 9) ^ ( - );
+ 374761393) return + 8 * - ;
<< 9) };
^ (33
* ((4097 * HIDWORD(a1) + 2127912214) auto = ( >> 32);
^ ((unsigned int)(4097 * HIDWORD(a1) + 2127912214) >> 19) auto 西 = ();
^ 0xC761C23C)
- 369570787); auto = | 0xFFFFFFFF00000000uLL;
v2 = 33
* ((4097 * a1 + 2127912214) auto = (( & 0xFFFF0000) ^ (( ^ ) << 16)) << 16;
^ ((unsigned int)(4097 * a1 + 2127912214) >> 19) ^ 0xC761C23C); auto = 西 ^ ((西 ^ << 16) >> 16);
v3 = (((v2 + 374761393) << 9) ^ (v2 - 369570787))
+ 8 * (((v2 + 374761393) << 9) ^ (unsigned int)(v2 - 369570787)) return | ;
- 42973499;
return (v3 ^ (((unsigned int)v3 ^ 0xB55A4F090000uLL) >> 16))
| ((((v1 + 8 * v1 - 42973499) & 0xFFFF0000)
^ (((v1 + 8 * v1 - 42973499) ^ 0xFFFFFFFFB55A4F09uLL) << 16))
<< 16);
} }
} // namespace
namespace di::data_format { namespace di::data_format {
void MagicBlob::read(const fs::path& path) { void MagicBlob::read(const fs::path& path) {
StreamedIO::read(path); StreamedIO::read(path);
m_stored_seed = eat<uint64_t>(); m_stored_seed = eat<uint64_t>();
m_query_seed = unk_hash(m_stored_seed); m_query_seed = (m_stored_seed);
rva_t n_rva{}; rva_t n_rva{};