This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Revert "postpone perl_parse() exit(0) bugfix"
[perl5.git] / sbox32_hash.h
index b912ad7..04078ae 100644 (file)
@@ -27,7 +27,7 @@
 #define SBOX32_WARN2(pat,v0,v1)
 #endif
 
-#ifndef PERL_SEEN_HV_FUNC_H
+#ifndef PERL_SEEN_HV_FUNC_H_
 #if !defined(U32) 
 #include <stdint.h>
 #define U32 uint32_t
 #define case_1_SBOX32(hash,state,key) /**/
 #endif
 
-#define XORSHIFT96_set(r,x,y,z,t) STMT_START {          \
-    t = (x ^ ( x << 10 ) );                             \
-    x = y; y = z;                                       \
-    r = z = (z ^ ( z >> 26 ) ) ^ ( t ^ ( t >> 5 ) );    \
-} STMT_END
-
 #define XORSHIFT128_set(r,x,y,z,w,t) STMT_START {       \
     t = ( x ^ ( x << 5 ) );                             \
     x = y; y = z; z = w;                                \
     r = w = ( w ^ ( w >> 29 ) ) ^ ( t ^ ( t >> 12 ) );  \
 } STMT_END
 
-#define SBOX32_SCRAMBLE32(v,prime) STMT_START {  \
-    v ^= (v>>9);                        \
-    v ^= (v<<21);                       \
-    v ^= (v>>16);                       \
-    v *= prime;                         \
-    v ^= (v>>17);                       \
-    v ^= (v<<15);                       \
-    v ^= (v>>23);                       \
-} STMT_END
-
 #ifndef SBOX32_CHURN_ROUNDS 
-#define SBOX32_CHURN_ROUNDS 5
-#endif
-#ifndef SBOX32_SKIP_MASK
-#define SBOX32_SKIP_MASK 0x3
+#define SBOX32_CHURN_ROUNDS 128
 #endif
 
 #define _SBOX32_CASE(len,hash,state,key) \
+    /* FALLTHROUGH */ \
     case len: hash ^= state[ 1 + ( 256 * ( len - 1 ) ) + key[ len - 1 ] ];
 
 
-SBOX32_STATIC_INLINE void sbox32_seed_state96 (
+SBOX32_STATIC_INLINE void sbox32_seed_state128 (
     const U8 *seed_ch,
     U8 *state_ch
 ) {
-    const U32 *seed= (const U32 *)seed_ch;
+    U32 *seed= (U32 *)seed_ch;
     U32 *state= (U32 *)state_ch;
     U32 *state_cursor = state + 1;
     U32 *sbox32_end = state + 1 + (256 * SBOX32_MAX_LEN);
-    U32 s0 = seed[0] ^ 0x68736168; /* sbox */
-    U32 s1 = seed[1] ^ 0x786f6273; /* hash */
+    U32 s0 = seed[1] ^ 0x786f6273; /* sbox */
+    U32 s1 = seed[0] ^ 0x68736168; /* hash */
     U32 s2 = seed[2] ^ 0x646f6f67; /* good */
+    U32 s3 = seed[3] ^ 0x74736166; /* fast */
     U32 t1,t2,i;
 
     /* make sure we have all non-zero state elements */
     if (!s0) s0 = 1;
     if (!s1) s1 = 2;
     if (!s2) s2 = 4;
+    if (!s3) s3 = 8;
 
     /* Do a bunch of mix rounds to avalanche the seedbits
      * before we use them for the XORSHIFT rng. */
     for ( i = 0; i < SBOX32_CHURN_ROUNDS; i++ )
-        SBOX32_MIX3(s0,s1,s2,"SEED STATE");
-
-    while ( state_cursor < sbox32_end ) {
-        U32 *row_end = state_cursor + 256; 
-        for ( ; state_cursor < row_end; state_cursor++ ) {
-            XORSHIFT96_set(*state_cursor,s0,s1,s2,t1);
-        }
-    }
-    XORSHIFT96_set(*state,s0,s1,s2,t2);
-}
+        SBOX32_MIX4(s0,s1,s2,s3,"SEED STATE");
 
-SBOX32_STATIC_INLINE void sbox32_seed_state128 (
-    const U8 *seed_ch,
-    U8 *state_ch
-) {
-    U32 *seed= (U32 *)seed_ch;
-    U32 *state= (U32 *)state_ch;
-    U32 *state_cursor = state + 1;
-    U32 *sbox32_end = state + 1 + (256 * SBOX32_MAX_LEN);
-    U32 s0 = seed[0] ^ 0x68736168; /* sbox */
-    U32 s1 = seed[1] ^ 0x786f6273; /* hash */
-    U32 s2 = seed[2] ^ 0x646f6f67; /* good */
-    U32 s3 = seed[3] ^ 0x74736166; /* fast */
-    U32 t1,t2,i;
+    s0 ^= ~seed[3];
+    s1 ^= ~seed[2];
+    s2 ^= ~seed[1];
+    s3 ^= ~seed[0];
 
-    /* make sure we have all non-zero state elements */
-    if (!s0) s0 = 1;
-    if (!s1) s1 = 2;
-    if (!s2) s2 = 4;
-    if (!s3) s3 = 8;
+    /* make sure we have all non-zero state elements, again */
+    if (!s0) s0 = 8;
+    if (!s1) s1 = 4;
+    if (!s2) s2 = 2;
+    if (!s3) s3 = 1;
     
-    /* Do a bunch of mix rounds to avalanche the seedbits
-     * before we use them for the XORSHIFT rng. */
     for ( i = 0; i < SBOX32_CHURN_ROUNDS; i++ )
         SBOX32_MIX4(s0,s1,s2,s3,"SEED STATE");
 
@@ -1498,277 +1462,267 @@ SBOX32_STATIC_INLINE U32 sbox32_hash_with_state(
     U32 hash = *state;
     switch (key_len) {
         default: return zaphod32_hash_with_state(state_ch, key, key_len);
-        case_256_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_255_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_254_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_253_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_252_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_251_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_250_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_249_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_248_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_247_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_246_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_245_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_244_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_243_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_242_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_241_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_240_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_239_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_238_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_237_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_236_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_235_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_234_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_233_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_232_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_231_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_230_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_229_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_228_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_227_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_226_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_225_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_224_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_223_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_222_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_221_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_220_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_219_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_218_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_217_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_216_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_215_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_214_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_213_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_212_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_211_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_210_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_209_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_208_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_207_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_206_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_205_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_204_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_203_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_202_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_201_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_200_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_199_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_198_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_197_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_196_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_195_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_194_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_193_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_192_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_191_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_190_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_189_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_188_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_187_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_186_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_185_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_184_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_183_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_182_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_181_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_180_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_179_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_178_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_177_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_176_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_175_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_174_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_173_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_172_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_171_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_170_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_169_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_168_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_167_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_166_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_165_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_164_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_163_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_162_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_161_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_160_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_159_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_158_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_157_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_156_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_155_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_154_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_153_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_152_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_151_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_150_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_149_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_148_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_147_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_146_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_145_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_144_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_143_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_142_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_141_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_140_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_139_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_138_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_137_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_136_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_135_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_134_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_133_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_132_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_131_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_130_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_129_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_128_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_127_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_126_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_125_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_124_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_123_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_122_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_121_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_120_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_119_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_118_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_117_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_116_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_115_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_114_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_113_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_112_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_111_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_110_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_109_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_108_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_107_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_106_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_105_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_104_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_103_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_102_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_101_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_100_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_99_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_98_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_97_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_96_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_95_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_94_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_93_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_92_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_91_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_90_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_89_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_88_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_87_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_86_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_85_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_84_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_83_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_82_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_81_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_80_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_79_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_78_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_77_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_76_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_75_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_74_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_73_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_72_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_71_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_70_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_69_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_68_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_67_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_66_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_65_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_64_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_63_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_62_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_61_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_60_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_59_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_58_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_57_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_56_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_55_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_54_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_53_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_52_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_51_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_50_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_49_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_48_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_47_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_46_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_45_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_44_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_43_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_42_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_41_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_40_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_39_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_38_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_37_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_36_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_35_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_34_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_33_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_32_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_31_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_30_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_29_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_28_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_27_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_26_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_25_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_24_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_23_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_22_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_21_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_20_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_19_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_18_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_17_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_16_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_15_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_14_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_13_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_12_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_11_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_10_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_9_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_8_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_7_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_6_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_5_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_4_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_3_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_2_SBOX32(hash,state,key) /* FALLTHROUGH */
-        case_1_SBOX32(hash,state,key) /* FALLTHROUGH */
+        case_256_SBOX32(hash,state,key)
+        case_255_SBOX32(hash,state,key)
+        case_254_SBOX32(hash,state,key)
+        case_253_SBOX32(hash,state,key)
+        case_252_SBOX32(hash,state,key)
+        case_251_SBOX32(hash,state,key)
+        case_250_SBOX32(hash,state,key)
+        case_249_SBOX32(hash,state,key)
+        case_248_SBOX32(hash,state,key)
+        case_247_SBOX32(hash,state,key)
+        case_246_SBOX32(hash,state,key)
+        case_245_SBOX32(hash,state,key)
+        case_244_SBOX32(hash,state,key)
+        case_243_SBOX32(hash,state,key)
+        case_242_SBOX32(hash,state,key)
+        case_241_SBOX32(hash,state,key)
+        case_240_SBOX32(hash,state,key)
+        case_239_SBOX32(hash,state,key)
+        case_238_SBOX32(hash,state,key)
+        case_237_SBOX32(hash,state,key)
+        case_236_SBOX32(hash,state,key)
+        case_235_SBOX32(hash,state,key)
+        case_234_SBOX32(hash,state,key)
+        case_233_SBOX32(hash,state,key)
+        case_232_SBOX32(hash,state,key)
+        case_231_SBOX32(hash,state,key)
+        case_230_SBOX32(hash,state,key)
+        case_229_SBOX32(hash,state,key)
+        case_228_SBOX32(hash,state,key)
+        case_227_SBOX32(hash,state,key)
+        case_226_SBOX32(hash,state,key)
+        case_225_SBOX32(hash,state,key)
+        case_224_SBOX32(hash,state,key)
+        case_223_SBOX32(hash,state,key)
+        case_222_SBOX32(hash,state,key)
+        case_221_SBOX32(hash,state,key)
+        case_220_SBOX32(hash,state,key)
+        case_219_SBOX32(hash,state,key)
+        case_218_SBOX32(hash,state,key)
+        case_217_SBOX32(hash,state,key)
+        case_216_SBOX32(hash,state,key)
+        case_215_SBOX32(hash,state,key)
+        case_214_SBOX32(hash,state,key)
+        case_213_SBOX32(hash,state,key)
+        case_212_SBOX32(hash,state,key)
+        case_211_SBOX32(hash,state,key)
+        case_210_SBOX32(hash,state,key)
+        case_209_SBOX32(hash,state,key)
+        case_208_SBOX32(hash,state,key)
+        case_207_SBOX32(hash,state,key)
+        case_206_SBOX32(hash,state,key)
+        case_205_SBOX32(hash,state,key)
+        case_204_SBOX32(hash,state,key)
+        case_203_SBOX32(hash,state,key)
+        case_202_SBOX32(hash,state,key)
+        case_201_SBOX32(hash,state,key)
+        case_200_SBOX32(hash,state,key)
+        case_199_SBOX32(hash,state,key)
+        case_198_SBOX32(hash,state,key)
+        case_197_SBOX32(hash,state,key)
+        case_196_SBOX32(hash,state,key)
+        case_195_SBOX32(hash,state,key)
+        case_194_SBOX32(hash,state,key)
+        case_193_SBOX32(hash,state,key)
+        case_192_SBOX32(hash,state,key)
+        case_191_SBOX32(hash,state,key)
+        case_190_SBOX32(hash,state,key)
+        case_189_SBOX32(hash,state,key)
+        case_188_SBOX32(hash,state,key)
+        case_187_SBOX32(hash,state,key)
+        case_186_SBOX32(hash,state,key)
+        case_185_SBOX32(hash,state,key)
+        case_184_SBOX32(hash,state,key)
+        case_183_SBOX32(hash,state,key)
+        case_182_SBOX32(hash,state,key)
+        case_181_SBOX32(hash,state,key)
+        case_180_SBOX32(hash,state,key)
+        case_179_SBOX32(hash,state,key)
+        case_178_SBOX32(hash,state,key)
+        case_177_SBOX32(hash,state,key)
+        case_176_SBOX32(hash,state,key)
+        case_175_SBOX32(hash,state,key)
+        case_174_SBOX32(hash,state,key)
+        case_173_SBOX32(hash,state,key)
+        case_172_SBOX32(hash,state,key)
+        case_171_SBOX32(hash,state,key)
+        case_170_SBOX32(hash,state,key)
+        case_169_SBOX32(hash,state,key)
+        case_168_SBOX32(hash,state,key)
+        case_167_SBOX32(hash,state,key)
+        case_166_SBOX32(hash,state,key)
+        case_165_SBOX32(hash,state,key)
+        case_164_SBOX32(hash,state,key)
+        case_163_SBOX32(hash,state,key)
+        case_162_SBOX32(hash,state,key)
+        case_161_SBOX32(hash,state,key)
+        case_160_SBOX32(hash,state,key)
+        case_159_SBOX32(hash,state,key)
+        case_158_SBOX32(hash,state,key)
+        case_157_SBOX32(hash,state,key)
+        case_156_SBOX32(hash,state,key)
+        case_155_SBOX32(hash,state,key)
+        case_154_SBOX32(hash,state,key)
+        case_153_SBOX32(hash,state,key)
+        case_152_SBOX32(hash,state,key)
+        case_151_SBOX32(hash,state,key)
+        case_150_SBOX32(hash,state,key)
+        case_149_SBOX32(hash,state,key)
+        case_148_SBOX32(hash,state,key)
+        case_147_SBOX32(hash,state,key)
+        case_146_SBOX32(hash,state,key)
+        case_145_SBOX32(hash,state,key)
+        case_144_SBOX32(hash,state,key)
+        case_143_SBOX32(hash,state,key)
+        case_142_SBOX32(hash,state,key)
+        case_141_SBOX32(hash,state,key)
+        case_140_SBOX32(hash,state,key)
+        case_139_SBOX32(hash,state,key)
+        case_138_SBOX32(hash,state,key)
+        case_137_SBOX32(hash,state,key)
+        case_136_SBOX32(hash,state,key)
+        case_135_SBOX32(hash,state,key)
+        case_134_SBOX32(hash,state,key)
+        case_133_SBOX32(hash,state,key)
+        case_132_SBOX32(hash,state,key)
+        case_131_SBOX32(hash,state,key)
+        case_130_SBOX32(hash,state,key)
+        case_129_SBOX32(hash,state,key)
+        case_128_SBOX32(hash,state,key)
+        case_127_SBOX32(hash,state,key)
+        case_126_SBOX32(hash,state,key)
+        case_125_SBOX32(hash,state,key)
+        case_124_SBOX32(hash,state,key)
+        case_123_SBOX32(hash,state,key)
+        case_122_SBOX32(hash,state,key)
+        case_121_SBOX32(hash,state,key)
+        case_120_SBOX32(hash,state,key)
+        case_119_SBOX32(hash,state,key)
+        case_118_SBOX32(hash,state,key)
+        case_117_SBOX32(hash,state,key)
+        case_116_SBOX32(hash,state,key)
+        case_115_SBOX32(hash,state,key)
+        case_114_SBOX32(hash,state,key)
+        case_113_SBOX32(hash,state,key)
+        case_112_SBOX32(hash,state,key)
+        case_111_SBOX32(hash,state,key)
+        case_110_SBOX32(hash,state,key)
+        case_109_SBOX32(hash,state,key)
+        case_108_SBOX32(hash,state,key)
+        case_107_SBOX32(hash,state,key)
+        case_106_SBOX32(hash,state,key)
+        case_105_SBOX32(hash,state,key)
+        case_104_SBOX32(hash,state,key)
+        case_103_SBOX32(hash,state,key)
+        case_102_SBOX32(hash,state,key)
+        case_101_SBOX32(hash,state,key)
+        case_100_SBOX32(hash,state,key)
+        case_99_SBOX32(hash,state,key)
+        case_98_SBOX32(hash,state,key)
+        case_97_SBOX32(hash,state,key)
+        case_96_SBOX32(hash,state,key)
+        case_95_SBOX32(hash,state,key)
+        case_94_SBOX32(hash,state,key)
+        case_93_SBOX32(hash,state,key)
+        case_92_SBOX32(hash,state,key)
+        case_91_SBOX32(hash,state,key)
+        case_90_SBOX32(hash,state,key)
+        case_89_SBOX32(hash,state,key)
+        case_88_SBOX32(hash,state,key)
+        case_87_SBOX32(hash,state,key)
+        case_86_SBOX32(hash,state,key)
+        case_85_SBOX32(hash,state,key)
+        case_84_SBOX32(hash,state,key)
+        case_83_SBOX32(hash,state,key)
+        case_82_SBOX32(hash,state,key)
+        case_81_SBOX32(hash,state,key)
+        case_80_SBOX32(hash,state,key)
+        case_79_SBOX32(hash,state,key)
+        case_78_SBOX32(hash,state,key)
+        case_77_SBOX32(hash,state,key)
+        case_76_SBOX32(hash,state,key)
+        case_75_SBOX32(hash,state,key)
+        case_74_SBOX32(hash,state,key)
+        case_73_SBOX32(hash,state,key)
+        case_72_SBOX32(hash,state,key)
+        case_71_SBOX32(hash,state,key)
+        case_70_SBOX32(hash,state,key)
+        case_69_SBOX32(hash,state,key)
+        case_68_SBOX32(hash,state,key)
+        case_67_SBOX32(hash,state,key)
+        case_66_SBOX32(hash,state,key)
+        case_65_SBOX32(hash,state,key)
+        case_64_SBOX32(hash,state,key)
+        case_63_SBOX32(hash,state,key)
+        case_62_SBOX32(hash,state,key)
+        case_61_SBOX32(hash,state,key)
+        case_60_SBOX32(hash,state,key)
+        case_59_SBOX32(hash,state,key)
+        case_58_SBOX32(hash,state,key)
+        case_57_SBOX32(hash,state,key)
+        case_56_SBOX32(hash,state,key)
+        case_55_SBOX32(hash,state,key)
+        case_54_SBOX32(hash,state,key)
+        case_53_SBOX32(hash,state,key)
+        case_52_SBOX32(hash,state,key)
+        case_51_SBOX32(hash,state,key)
+        case_50_SBOX32(hash,state,key)
+        case_49_SBOX32(hash,state,key)
+        case_48_SBOX32(hash,state,key)
+        case_47_SBOX32(hash,state,key)
+        case_46_SBOX32(hash,state,key)
+        case_45_SBOX32(hash,state,key)
+        case_44_SBOX32(hash,state,key)
+        case_43_SBOX32(hash,state,key)
+        case_42_SBOX32(hash,state,key)
+        case_41_SBOX32(hash,state,key)
+        case_40_SBOX32(hash,state,key)
+        case_39_SBOX32(hash,state,key)
+        case_38_SBOX32(hash,state,key)
+        case_37_SBOX32(hash,state,key)
+        case_36_SBOX32(hash,state,key)
+        case_35_SBOX32(hash,state,key)
+        case_34_SBOX32(hash,state,key)
+        case_33_SBOX32(hash,state,key)
+        case_32_SBOX32(hash,state,key)
+        case_31_SBOX32(hash,state,key)
+        case_30_SBOX32(hash,state,key)
+        case_29_SBOX32(hash,state,key)
+        case_28_SBOX32(hash,state,key)
+        case_27_SBOX32(hash,state,key)
+        case_26_SBOX32(hash,state,key)
+        case_25_SBOX32(hash,state,key)
+        case_24_SBOX32(hash,state,key)
+        case_23_SBOX32(hash,state,key)
+        case_22_SBOX32(hash,state,key)
+        case_21_SBOX32(hash,state,key)
+        case_20_SBOX32(hash,state,key)
+        case_19_SBOX32(hash,state,key)
+        case_18_SBOX32(hash,state,key)
+        case_17_SBOX32(hash,state,key)
+        case_16_SBOX32(hash,state,key)
+        case_15_SBOX32(hash,state,key)
+        case_14_SBOX32(hash,state,key)
+        case_13_SBOX32(hash,state,key)
+        case_12_SBOX32(hash,state,key)
+        case_11_SBOX32(hash,state,key)
+        case_10_SBOX32(hash,state,key)
+        case_9_SBOX32(hash,state,key)
+        case_8_SBOX32(hash,state,key)
+        case_7_SBOX32(hash,state,key)
+        case_6_SBOX32(hash,state,key)
+        case_5_SBOX32(hash,state,key)
+        case_4_SBOX32(hash,state,key)
+        case_3_SBOX32(hash,state,key)
+        case_2_SBOX32(hash,state,key)
+        case_1_SBOX32(hash,state,key)
         case 0: break;
     }
     return hash;
 }
 
-SBOX32_STATIC_INLINE U32 sbox32_hash96(
-    const U8 *seed_ch,
-    const U8 *key,
-    const STRLEN key_len
-) {
-    U32 state[SBOX32_STATE_WORDS];
-    sbox32_seed_state96(seed_ch,(U8*)state);
-    return sbox32_hash_with_state((U8*)state,key,key_len);
-}
-
 SBOX32_STATIC_INLINE U32 sbox32_hash128(
     const U8 *seed_ch,
     const U8 *key,
@@ -1779,6 +1733,4 @@ SBOX32_STATIC_INLINE U32 sbox32_hash128(
     return sbox32_hash_with_state((U8*)state,key,key_len);
 }
 
-GCC_DIAG_RESTORE
-
 #endif