unblast :: (Bool, [Word8]) -> Integer
unblast (s, ws)
  | s         = negate $ loop ws
  | otherwise = loop ws
 where
  loop = core 0 1
  core acc mult []     = acc
  core acc mult (w:ws) = core (acc + fromIntegral w * mult) (mult * 256) ws
unblast :: (Bool, [Word8]) -> Integer
unblast (s, ws)
  | s         = negate $ loop ws
  | otherwise = loop ws
 where
  loop = core 0 1
  core acc mult []     = acc
  core acc mult (w:ws) = core (acc + fromIntegral w * mult) (mult * 256) ws
unblast (s, ws)
  | s         = negate $ loop ws
  | otherwise = loop ws
 where
  loop = core 0 1
  core acc mult []     = acc
  core acc mult (w:ws) = core (acc + fromIntegral w * mult) (mult * 256) ws