while ((int)bytecount % 64 != 56)
while ((bytecount & 0x3f) != 56)
  public byte[] engineDigest ()  {    long bitcount = bytecount * 8;    engineUpdate ((byte)0x80); // 10000000 in binary; the start of the padding    // add the rest of the padding to fill this block out, but leave 8    // bytes to put in the original bytecount    while ((int)bytecount % 64 != 56)      engineUpdate ((byte)0);    // add the length of the original, unpadded block to the end of    // the padding    W[14] = (int)(bitcount >>> 32);    W[15] = (int)bitcount;    bytecount += 8;    // digest the fully padded block    munch ();    byte[] result      = new byte[] {(byte)(H0 >>> 24), (byte)(H0 >>> 16),		    (byte)(H0 >>> 8), (byte)H0,		    (byte)(H1 >>> 24), (byte)(H1 >>> 16),		    (byte)(H1 >>> 8), (byte)H1,		    (byte)(H2 >>> 24), (byte)(H2 >>> 16),		    (byte)(H2 >>> 8), (byte)H2,		    (byte)(H3 >>> 24), (byte)(H3 >>> 16),		    (byte)(H3 >>> 8), (byte)H3,		    (byte)(H4 >>> 24), (byte)(H4 >>> 16),		    (byte)(H4 >>> 8), (byte)H4};        engineReset ();    return result;  }