- for (i = 0; i < s->count; i++) {
- uint32 t = SUM2HASH(s->sums[i].sum1);
-@@ -162,11 +169,11 @@ static void hash_search(int f,struct sum
+- for (i = 0; i < s->count; i++) {
+- uint32 t = SUM2HASH(s->sums[i].sum1);
+- s->sums[i].chain = hash_table[t];
+- hash_table[t] = i;
++ if (tablesize == TRADITIONAL_TABLESIZE) {
++ for (i = 0; i < s->count; i++) {
++ uint32 t = SUM2HASH(s->sums[i].sum1);
++ s->sums[i].chain = hash_table[t];
++ hash_table[t] = i;
++ }
++ } else {
++ for (i = 0; i < s->count; i++) {
++ uint32 t = BIG_SUM2HASH(s->sums[i].sum1);
++ s->sums[i].chain = hash_table[t];
++ hash_table[t] = i;
++ }
+ }
+ }
+
+@@ -164,11 +185,16 @@ static void hash_search(int f,struct sum