#include <iostream>
#include <iomanip>
#include <stdint.h>
#include <cstdio>
#include <string>
#include <sstream>
#include <cstdlib>
 | 
| uint32_t  | rotl32 (uint32_t x, int r) | 
|   | 
| void  | posix_memalign_free (void *p) | 
|   | 
| uint32_t  | getblock32 (uint32_t p) | 
|   | 
| uint32_t  | fmix32 (uint32_t h0, uint32_t h1=0xd86b048b) | 
|   | 
| void  | pad_buffer (const char *src, char *buf, size_t len) | 
|   | 
| void  | VectorHashFold (uint32_t *res, uint32_t *z[], size_t nbits) | 
|   | 
| static void  | VectorHashFinalize (size_t len, uint32_t *h1, uint32_t *h2, uint32_t *h3, uint32_t *h4, void *out) | 
|   | 
| static void  | stateinit (uint32_t st[], uint32_t &seed) | 
|   | 
| void  | VectorHashBody (const uint32_t *data, uint32_t h1[], uint32_t h2[], uint32_t h3[], uint32_t h4[]) | 
|   | 
| void  | VectorHash (const void *key, size_t len, uint32_t seed, void *out) | 
|   | 
| string  | VHstream (FILE *io) | 
|   | 
| string  | VHstring (const string &s) | 
|   | 
      
        
          | #define _POSIX_MAPPED_FILES   0 | 
        
      
 
 
      
        
          | #define ROTL32 | 
          ( | 
            | 
          x,  | 
        
        
           | 
           | 
            | 
          y  | 
        
        
           | 
          ) | 
           |    rotl32(x,y) | 
        
      
 
 
      
        
          | #define VEC | 
          ( | 
            | 
          X | ) | 
             for( size_t j=0; j < vh_nint; j++ ) { X; } | 
        
      
 
 
      
        
          | #define VEC | 
          ( | 
            | 
          X | ) | 
             for( size_t j=0; j < vh_nint; j++ ) { X; } | 
        
      
 
 
  
  
      
        
          | uint32_t fmix32  | 
          ( | 
          uint32_t  | 
          h0,  | 
         
        
           | 
           | 
          uint32_t  | 
          h1 = 0xd86b048b  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inline   | 
  
 
 
  
  
      
        
          | uint32_t getblock32  | 
          ( | 
          uint32_t  | 
          p | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
 
  
  
      
        
          | void pad_buffer  | 
          ( | 
          const char *  | 
          src,  | 
         
        
           | 
           | 
          char *  | 
          buf,  | 
         
        
           | 
           | 
          size_t  | 
          len  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inline   | 
  
 
 
  
  
      
        
          | void posix_memalign_free  | 
          ( | 
          void *  | 
          p | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
 
  
  
      
        
          | uint32_t rotl32  | 
          ( | 
          uint32_t  | 
          x,  | 
         
        
           | 
           | 
          int  | 
          r  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inline   | 
  
 
 
  
  
      
        
          | static void stateinit  | 
          ( | 
          uint32_t  | 
          st[],  | 
         
        
           | 
           | 
          uint32_t &  | 
          seed  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
 
      
        
          | void VectorHash  | 
          ( | 
          const void *  | 
          key,  | 
        
        
           | 
           | 
          size_t  | 
          len,  | 
        
        
           | 
           | 
          uint32_t  | 
          seed,  | 
        
        
           | 
           | 
          void *  | 
          out  | 
        
        
           | 
          ) | 
           |  | 
        
      
 
 
  
  
      
        
          | void VectorHashBody  | 
          ( | 
          const uint32_t *  | 
          data,  | 
         
        
           | 
           | 
          uint32_t  | 
          h1[],  | 
         
        
           | 
           | 
          uint32_t  | 
          h2[],  | 
         
        
           | 
           | 
          uint32_t  | 
          h3[],  | 
         
        
           | 
           | 
          uint32_t  | 
          h4[]  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inline   | 
  
 
 
  
  
      
        
          | static void VectorHashFinalize  | 
          ( | 
          size_t  | 
          len,  | 
         
        
           | 
           | 
          uint32_t *  | 
          h1,  | 
         
        
           | 
           | 
          uint32_t *  | 
          h2,  | 
         
        
           | 
           | 
          uint32_t *  | 
          h3,  | 
         
        
           | 
           | 
          uint32_t *  | 
          h4,  | 
         
        
           | 
           | 
          void *  | 
          out  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
 
  
  
      
        
          | void VectorHashFold  | 
          ( | 
          uint32_t *  | 
          res,  | 
         
        
           | 
           | 
          uint32_t *  | 
          z[],  | 
         
        
           | 
           | 
          size_t  | 
          nbits  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inline   | 
  
 
 
      
        
          | string VHstream  | 
          ( | 
          FILE *  | 
          io | ) | 
           | 
        
      
 
 
      
        
          | string VHstring  | 
          ( | 
          const string &  | 
          s | ) | 
           | 
        
      
 
 
  
  
      
        
          | const size_t blocksize = 4*vh_nint*sizeof(uint32_t) | 
         
       
   | 
  
static   | 
  
 
 
  
  
      
        
          | const size_t vh_hash_width = 128 | 
         
       
   | 
  
static   | 
  
 
 
  
  
      
        
          | const size_t vh_hwreg_width = 512 | 
         
       
   | 
  
static   |