decode' (a:b:c:d:xs)
  | c == pad   = d1 a b : []
  | d == pad   = d1 a b : d2 b c : []
  | otherwise  = d1 a b : d2 b c : d3 c d : decode' xs
decode' (a:b:c:d:xs)
  | c == pad   = d1 a b : []
  | d == pad   = d1 a b : d2 b c : []
  | otherwise  = d1 a b : d2 b c : d3 c d : decode' xs
decode' (a:b:c:d:xs)
  | c == pad   = d1 a b : []
  | d == pad   = d1 a b : d2 b c : []
  | otherwise  = d1 a b : d2 b c : d3 c d : decode' xs