column :: V.Vector Word64
       -> Int -> Int -> Int -> Int
       -> Int -> Int -> Int -> Int 
       -> Word64
column v c0 c1 c2 c3 c4 c5 c6 c7 = 
    V.unsafeIndex tables (index 0 c0) `xor`
    V.unsafeIndex tables (index 1 c1) `xor`
    V.unsafeIndex tables (index 2 c2) `xor`
    V.unsafeIndex tables (index 3 c3) `xor`
    V.unsafeIndex tables (index 4 c4) `xor`
    V.unsafeIndex tables (index 5 c5) `xor`
    V.unsafeIndex tables (index 6 c6) `xor`
    V.unsafeIndex tables (index 7 c7) 
    
    where index i c = i * 256 + fromIntegral (extractByte i (v V.! c))
column :: V.Vector Word64
       -> Int -> Int -> Int -> Int
       -> Int -> Int -> Int -> Int 
       -> Word64
column v c0 c1 c2 c3 c4 c5 c6 c7 = 
    V.unsafeIndex tables (index 0 c0) `xor`
    V.unsafeIndex tables (index 1 c1) `xor`
    V.unsafeIndex tables (index 2 c2) `xor`
    V.unsafeIndex tables (index 3 c3) `xor`
    V.unsafeIndex tables (index 4 c4) `xor`
    V.unsafeIndex tables (index 5 c5) `xor`
    V.unsafeIndex tables (index 6 c6) `xor`
    V.unsafeIndex tables (index 7 c7) 
    
    where index i c = i * 256 + fromIntegral (extractByte i (v V.! c))
column v c0 c1 c2 c3 c4 c5 c6 c7 = 
    V.unsafeIndex tables (index 0 c0) `xor`
    V.unsafeIndex tables (index 1 c1) `xor`
    V.unsafeIndex tables (index 2 c2) `xor`
    V.unsafeIndex tables (index 3 c3) `xor`
    V.unsafeIndex tables (index 4 c4) `xor`
    V.unsafeIndex tables (index 5 c5) `xor`
    V.unsafeIndex tables (index 6 c6) `xor`
    V.unsafeIndex tables (index 7 c7) 
    
    where index i c = i * 256 + fromIntegral (extractByte i (v V.! c))