pcfbEncipherWord8 :: PCFB s -> Word8 -> ST s Word8
pcfbEncipherWord8 pc@(MkPCFB _ f i) x = do
   pcfbRefill pc
   fpos <- readSTRef i
   ff <- UMV.read f fpos
   modifySTRef i (+1)
   let result = x `xor` ff
   UMV.write f fpos result
   return $! result
pcfbEncipherWord8 :: PCFB s -> Word8 -> ST s Word8
pcfbEncipherWord8 pc@(MkPCFB _ f i) x = do
   pcfbRefill pc
   fpos <- readSTRef i
   ff <- UMV.read f fpos
   modifySTRef i (+1)
   let result = x `xor` ff
   UMV.write f fpos result
   return $! result
pcfbEncipherWord8 pc@(MkPCFB _ f i) x = do
   pcfbRefill pc
   fpos <- readSTRef i
   ff <- UMV.read f fpos
   modifySTRef i (+1)
   let result = x `xor` ff
   UMV.write f fpos result
   return $! result