code: public static long hash(byte[] key, byte[] data, int c, int d) {
          if (key.length != 16) {
              throw new IllegalArgumentException("Key must be exactly 16 bytes!");
          }
  
          long k0 = bytesToLong(key, 0);
          long k1 = bytesToLong(key, 8);
  
          return hash(
              c, d,
              INITIAL_V0 ^ k0,
              INITIAL_V1 ^ k1,
              INITIAL_V2 ^ k0,
              INITIAL_V3 ^ k1,
              data
          );
      }
docs: Hashes a data input for a given key, using the provided rounds
  of compression.
  
  @param key
  the key to seed the hash with.
  @param data
  the input data to hash.
  @param c
  the number of C rounds of compression
  @param d
  the number of D rounds of compression.
  @return
  a long value as the output of the hash.