private static uint SubWord(uint x) { return (uint)S[x & 255] | (((uint)S[(x >> 8) & 255]) << 8) | (((uint)S[(x >> 16) & 255]) << 16) | (((uint)S[(x >> 24) & 255]) << 24); }