- r += ((uint32_t*)m)[j];
- r += ((uint32_t*)m)[j+3];
- r -= ((uint32_t*)m)[j+10];
+#if TWEAK
+# if BUG_ROT
+ r += ( ROTL32(((uint32_t*)m)[j&0xf], ((j+0)&0xf)+1 )
+ + ROTL32(((uint32_t*)m)[(j+3)&0xf], ((j+3)&0xf)+1 )
+ - ROTL32(((uint32_t*)m)[(j+10)&0xf], ((j+10)&0xf)+1 )
+ + pgm_read_dword(k_lut+j)
+ ) ^ ((uint32_t*)h)[(j+7)&0xf];
+# else
+ r += ( ROTL32(((uint32_t*)m)[j&0xf], (j+1)&0xf )
+ + ROTL32(((uint32_t*)m)[(j+3)&0xf], (j+4)&0xf )
+ - ROTL32(((uint32_t*)m)[(j+10)&0xf], (j+11)&0xf )
+ + pgm_read_dword(k_lut+j)
+ ) ^ ((uint32_t*)h)[(j+7)&0xf];
+# endif
+#else
+ r += pgm_read_dword(k_lut+j);
+ r += ((uint32_t*)m)[j&0xf];
+ r += ((uint32_t*)m)[(j+3)&0xf];
+ r -= ((uint32_t*)m)[(j+10)&0xf];
+#endif