sub belg4mit { my %H; my ($len, @k) = @_; my ($a,$b,$c) = (0)x3; while($len--) { $H{(('a')x4,('b')x4,('c')x3)[$len]} += $k[$len -1] << (8* ( ($len > 8 ? $len : $len - 1 )%4 ) ); } return ($H{a}||0)+($H{b}||0)+($H{c}||0); }