public void engineUpdate(byte[] input,int offset,int len){
  if (offset < 0 || len < 0 || (long)offset + len > input.length)   throw new ArrayIndexOutOfBoundsException();
  int bufferNdx=(int)(count % BLOCK_LENGTH);
  count+=len;
  int partLen=BLOCK_LENGTH - bufferNdx;
  int i=0;
  if (len >= partLen) {
    System.arraycopy(input,offset,buffer,bufferNdx,partLen);
    transform(buffer,0);
    for (i=partLen; i + BLOCK_LENGTH - 1 < len; i+=BLOCK_LENGTH)     transform(input,offset + i);
    bufferNdx=0;
  }
  if (i < len)   System.arraycopy(input,offset + i,buffer,bufferNdx,len - i);
}

public void engineUpdate ( byte [ ] input , int offset , int len ) { if ( offset < 0 || len < 0 || ( long ) offset + len > input . length ) throw new ArrayIndexOutOfBoundsException ( ) ; int bufferNdx = ( int ) ( count % BLOCK_LENGTH ) ; count += len ; int partLen = BLOCK_LENGTH - bufferNdx ; int i = 0 ; if ( len >= partLen ) { System . arraycopy ( input , offset , buffer , bufferNdx , partLen ) ; transform ( buffer , 0 ) ; for ( i = partLen ; i + BLOCK_LENGTH - 1 < len ; i += BLOCK_LENGTH ) transform ( input , offset + i ) ; bufferNdx = 0 ; } if ( i < len ) System . arraycopy ( input , offset + i , buffer , bufferNdx , len - i ) ; }
md4 block update operation . < p > continues an md4 message digest operation , by filling the buffer , transform ( ing ) data in 512 - bit message block ( s ) , updating the variables context and count , and leaving ( buffering ) the remaining bytes in buffer for the next update or finish .
