decryptStep :: PartiallyDecrypted -> String -> PartiallyDecrypted
decryptStep p@(PartiallyDecrypted m) s = if pos < 8 then (PartiallyDecrypted $ insertIgnore pos char m) else p
  where
    pos = maybe 9 id $ elemIndex (s !! 5) "01234567"
    char  = s !! 6
    insertIgnore position character map = if member position map then map else insert position character map

-- Expects to be fed results of interestingHashes, so that interestingHashes can
-- be cached between parts
decryptStep :: PartiallyDecrypted -> String -> PartiallyDecrypted
decryptStep p@(PartiallyDecrypted m) s = if pos < 8 then (PartiallyDecrypted $ insertIgnore pos char m) else p
  where
    pos = maybe 9 id $ elemIndex (s !! 5) "01234567"
    char  = s !! 6
    insertIgnore position character map = if member position map then map else insert position character map

-- Expects to be fed results of interestingHashes, so that interestingHashes can
-- be cached between parts
decryptStep p@(PartiallyDecrypted m) s = if pos < 8 then (PartiallyDecrypted $ insertIgnore pos char m) else p
  where
    pos = maybe 9 id $ elemIndex (s !! 5) "01234567"
    char  = s !! 6
    insertIgnore position character map = if member position map then map else insert position character map

-- Expects to be fed results of interestingHashes, so that interestingHashes can
-- be cached between parts