private 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); }