int i = ((int)bytecount) & 0x3f; int shift = (3 - i % 4) << 3;
int i = (int)bytecount % 64; int shift = (3 - i % 4) * 8;
  public void engineUpdate (byte b)  {    int i = ((int)bytecount) & 0x3f; //wgs    int shift = (3 - i % 4) << 3;    int idx = i / 4;    i = (int)b;    W[idx] = (W[idx] & ~(0xff << shift)) | ((i & 0xff) << shift);    // if we've filled up a block, then process it    if (((++bytecount) & 0x3f) == 0)      munch ();  }