my %dispatch = ( 11 => sub{ $c+=$k[10]<<24 }, 10 => sub{ $c+=$k[9] <<16 }, 9 => sub{ $c+=$k[8] <<8 }, 8 => sub{ $b+=$k[7] <<24 }, 7 => sub{ $b+=$k[6] <<16 }, 6 => sub{ $b+=$k[5] <<8 }, 5 => sub{ $b+=$k[4] }, 4 => sub{ $a+=$k[3] <<24 }, 3 => sub{ $a+=$k[2] <<16 }, 2 => sub{ $a+=$k[1] <<8 }, 1 => sub{ $a+=$k[0] } ); &{$dispatch{$_}} for reverse 1..$len;