Îõ³h) ¤ &0.2.0.0 Safe-InferredË  ChibiHash$Prime-like constants used for mixing ChibiHash$Prime-like constants used for mixing ChibiHash$Prime-like constants used for mixing ChibiHash‚Convert 8 bytes into a Word64 using little-endian ordering Each byte is shifted left by its position (0, 8, 16, ...) and combined ChibiHash£Main hash function that processes input in several stages: 1. Process full 32-byte blocks 2. Process remaining bytes (< 32 bytes) 3. Apply final mixing function  ChibiHashñProcess input in 32-byte blocks (4 lanes of 8 bytes each) Returns the updated hash state and any remaining bytes  ChibiHashÈProcess remaining bytes that didn't fill a complete 32-byte block Handles: 1. Length mixing into first hash value 2. Single odd byte (if present) 3. Remaining 8-byte chunks 4. Final 2-byte chunks  ChibiHash+Process 8-byte chunks into h[1], h[2], h[3]  ChibiHashProcess remaining 2-byte chunks  ChibiHashêFinal mixing function to improve avalanche effect Applies a series of xor, shift, and multiply operations ChibiHashÉSplit a list into chunks of size n Used to break input into 8-byte lanes Safe-Inferred Ç  ChibiHash=Prime-like constant used for mixing, derived from digits of e ChibiHashïConvert bytes to Word64 using little-endian ordering Takes 8 bytes and combines them into a single 64-bit word ChibiHashøConvert bytes to Word32 using little-endian ordering Takes 4 bytes and combines them into the lower 32 bits of a Word64 ChibiHash=Basic arithmetic operations used throughout the hash function ChibiHash=Basic arithmetic operations used throughout the hash function ChibiHash=Basic arithmetic operations used throughout the hash function ChibiHashæMain hash function for V2 Takes a ByteString input and 64-bit seed value Returns a 64-bit hash value ChibiHashÍProcess input in 32-byte blocks Each block is split into four 8-byte stripes ChibiHashàProcess an 8-byte stripe within a block Updates the 4-element state array based on stripe index ChibiHash†Process remaining bytes after block processing Handles different cases based on number of remaining bytes: - 8 or more bytes: process in 8-byte chunks - 4-7 bytes: special handling with two 32-bit reads - 1-3 bytes: special handling for very short remainders ChibiHash*Split a list into chunks of specified size&A simple and fast 64-bit hash function(c) Ville Vesilehto, 2024MITville@vesilehto.fi experimentalportable Safe-Inferred  ChibiHash6Hash a ByteString with the default (V1) implementation ChibiHash,Hash a ByteString with the V1 implementation ChibiHash,Hash a ByteString with the V2 implementation        ChibiHash-0.2.0.0-inplace ChibiHash.V1 ChibiHash.V2 ChibiHash chibihash64 chibihash64V1 chibihash64V2p1p2p3load64le processBlocksprocessRemainingprocess8ByteChunksprocess2ByteChunksfinalMixchunksOfkload32leaddsubtractmul processStripe