| 390 | } |
| 391 | |
| 392 | void dmHashUpdateBuffer32(HashState32* hash_state, const void* buffer, uint32_t buffer_len) |
| 393 | { |
| 394 | const uint32_t m = 0x5bd1e995; |
| 395 | const int r = 24; |
| 396 | |
| 397 | const unsigned char * data = (const unsigned char *) buffer; |
| 398 | int len = (int) buffer_len; |
| 399 | |
| 400 | hash_state->m_Size += len; |
| 401 | |
| 402 | MixTail32(hash_state, data, len); |
| 403 | |
| 404 | while(len >= 4) |
| 405 | { |
| 406 | uint32_t k; |
| 407 | k = data[0]; |
| 408 | k |= data[1] << 8; |
| 409 | k |= data[2] << 16; |
| 410 | k |= data[3] << 24; |
| 411 | |
| 412 | mmix(hash_state->m_Hash,k); |
| 413 | |
| 414 | data += 4; |
| 415 | len -= 4; |
| 416 | } |
| 417 | |
| 418 | MixTail32(hash_state, data, len); |
| 419 | if (dmHashContainer().m_Enabled && hash_state->m_ReverseHashEntryIndex && hash_state->m_Size <= DMHASH_MAX_REVERSE_LENGTH) |
| 420 | { |
| 421 | dmHashContainer().UpdateReversHashState(hash_state->m_ReverseHashEntryIndex, hash_state->m_Size, buffer, buffer_len); |
| 422 | } |
| 423 | } |
| 424 | |
| 425 | uint32_t dmHashFinal32(HashState32* hash_state) |
| 426 | { |