private static void ByteArrayToU32(byte[] byteArray, int start, out UInt32 s0, out UInt32 s1, out UInt32 s2,
out UInt32 s3)
{
s0 = (UInt32) byteArray[start + 0] << 24 ^ (UInt32) byteArray[start + 1] << 16 ^
(UInt32) byteArray[start + 2] << 8 ^ (UInt32) byteArray[start + 3];
s1 = (UInt32) byteArray[start + 4] << 24 ^ (UInt32) byteArray[start + 5] << 16 ^
(UInt32) byteArray[start + 6] << 8 ^ (UInt32) byteArray[start + 7];
s2 = (UInt32) byteArray[start + 8] << 24 ^ (UInt32) byteArray[start + 9] << 16 ^
(UInt32) byteArray[start + 10] << 8 ^ (UInt32) byteArray[start + 11];
s3 = (UInt32) byteArray[start + 12] << 24 ^ (UInt32) byteArray[start + 13] << 16 ^
(UInt32) byteArray[start + 14] << 8 ^ (UInt32) byteArray[start + 15];
}