static SatisfiesCode satisfies(boolean reverse, byte[] row, int offset, int length,
    byte[] fuzzyKeyBytes, byte[] fuzzyKeyMeta) {

    if (!UNSAFE_UNALIGNED) {
      return satisfiesNoUnsafe(reverse, row, offset, length, fuzzyKeyBytes, fuzzyKeyMeta);
    }

    if (row == null) {
      // do nothing, let scan to proceed
      return SatisfiesCode.YES;
    }
    length = Math.min(length, fuzzyKeyBytes.length);
    int numWords = length / Bytes.SIZEOF_LONG;

    int j = numWords << 3; // numWords * SIZEOF_LONG;

    for (int i = 0; i < j; i += Bytes.SIZEOF_LONG) {
      long fuzzyBytes = Bytes.toLong(fuzzyKeyBytes, i);
      long fuzzyMeta = Bytes.toLong(fuzzyKeyMeta, i);
      long rowValue = Bytes.toLong(row, offset + i);
      if ((rowValue & fuzzyMeta) != fuzzyBytes) {
        // We always return NEXT_EXISTS
        return SatisfiesCode.NEXT_EXISTS;
      }
    }

    int off = j;

    if (length - off >= Bytes.SIZEOF_INT) {
      int fuzzyBytes = Bytes.toInt(fuzzyKeyBytes, off);
      int fuzzyMeta = Bytes.toInt(fuzzyKeyMeta, off);
      int rowValue = Bytes.toInt(row, offset + off);
      if ((rowValue & fuzzyMeta) != fuzzyBytes) {
        // We always return NEXT_EXISTS
        return SatisfiesCode.NEXT_EXISTS;
      }
      off += Bytes.SIZEOF_INT;
    }

    if (length - off >= Bytes.SIZEOF_SHORT) {
      short fuzzyBytes = Bytes.toShort(fuzzyKeyBytes, off);
      short fuzzyMeta = Bytes.toShort(fuzzyKeyMeta, off);
      short rowValue = Bytes.toShort(row, offset + off);
      if ((rowValue & fuzzyMeta) != fuzzyBytes) {
        // We always return NEXT_EXISTS
        // even if it does not (in this case getNextForFuzzyRule
        // will return null)
        return SatisfiesCode.NEXT_EXISTS;
      }
      off += Bytes.SIZEOF_SHORT;
    }

    if (length - off >= Bytes.SIZEOF_BYTE) {
      int fuzzyBytes = fuzzyKeyBytes[off] & 0xff;
      int fuzzyMeta = fuzzyKeyMeta[off] & 0xff;
      int rowValue = row[offset + off] & 0xff;
      if ((rowValue & fuzzyMeta) != fuzzyBytes) {
        // We always return NEXT_EXISTS
        return SatisfiesCode.NEXT_EXISTS;
      }
    }
    return SatisfiesCode.YES;
  }
row doesn't satisfy fuzzy rule and there's no greater row that does
hbase-client/src/main/java/org/apache/hadoop/hbase/filter/FuzzyRowFilter.java