{-# OPTIONS_HADDOCK hide #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE UnboxedTuples #-}
{-# LANGUAGE UnliftedNewtypes #-}
{-# LANGUAGE ViewPatterns #-}
module Crypto.Hash.SHA256.Internal (
Block(B, ..)
, Registers(R, ..)
, MAC(..)
, parse
, parse_pad1
, parse_pad2
, cat
, cat_into
, update
, iv
, pad_registers
, pad_registers_with_length
, xor
, parse_key
, parse_vsb
, parse_pad1_vsb
, parse_pad2_vsb
, poke_registers
) where
import qualified Data.Bits as B
import qualified Data.ByteString as BS
import qualified Data.ByteString.Internal as BI
import qualified Data.ByteString.Unsafe as BU
import Data.Word (Word8, Word32, Word64)
import qualified GHC.IO (IO(..))
import GHC.Ptr (Ptr(..))
import GHC.Exts (Int#)
import qualified GHC.Exts as Exts
import qualified GHC.Word (Word32(..), Word8(..))
newtype MAC = MAC BS.ByteString
deriving newtype Int -> MAC -> ShowS
[MAC] -> ShowS
MAC -> String
(Int -> MAC -> ShowS)
-> (MAC -> String) -> ([MAC] -> ShowS) -> Show MAC
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> MAC -> ShowS
showsPrec :: Int -> MAC -> ShowS
$cshow :: MAC -> String
show :: MAC -> String
$cshowList :: [MAC] -> ShowS
showList :: [MAC] -> ShowS
Show
instance Eq MAC where
(MAC a :: ByteString
a@(BI.PS ForeignPtr Word8
_ Int
_ Int
la)) == :: MAC -> MAC -> Bool
== (MAC b :: ByteString
b@(BI.PS ForeignPtr Word8
_ Int
_ Int
lb))
| Int
la Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
/= Int
lb = Bool
False
| Bool
otherwise = (Word8 -> Word8 -> Word8) -> Word8 -> ByteString -> Word8
forall a. (a -> Word8 -> a) -> a -> ByteString -> a
BS.foldl' Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
(B..|.) Word8
0 ((Word8 -> Word8 -> Word8) -> ByteString -> ByteString -> ByteString
BS.packZipWith Word8 -> Word8 -> Word8
forall a. Bits a => a -> a -> a
B.xor ByteString
a ByteString
b) Word8 -> Word8 -> Bool
forall a. Eq a => a -> a -> Bool
== Word8
0
newtype Block = Block
(# Exts.Word32#, Exts.Word32#, Exts.Word32#, Exts.Word32#
, Exts.Word32#, Exts.Word32#, Exts.Word32#, Exts.Word32#
, Exts.Word32#, Exts.Word32#, Exts.Word32#, Exts.Word32#
, Exts.Word32#, Exts.Word32#, Exts.Word32#, Exts.Word32#
#)
pattern B
:: Exts.Word32# -> Exts.Word32# -> Exts.Word32# -> Exts.Word32#
-> Exts.Word32# -> Exts.Word32# -> Exts.Word32# -> Exts.Word32#
-> Exts.Word32# -> Exts.Word32# -> Exts.Word32# -> Exts.Word32#
-> Exts.Word32# -> Exts.Word32# -> Exts.Word32# -> Exts.Word32#
-> Block
pattern $mB :: forall {r}.
Block
-> (Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> r)
-> ((# #) -> r)
-> r
$bB :: Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Block
B w00 w01 w02 w03 w04 w05 w06 w07 w08 w09 w10 w11 w12 w13 w14 w15 =
Block
(# w00, w01, w02, w03, w04, w05, w06, w07
, w08, w09, w10, w11, w12, w13, w14, w15
#)
{-# COMPLETE B #-}
newtype Registers = Registers
(# Exts.Word32#, Exts.Word32#, Exts.Word32#, Exts.Word32#
, Exts.Word32#, Exts.Word32#, Exts.Word32#, Exts.Word32#
#)
pattern R
:: Exts.Word32# -> Exts.Word32# -> Exts.Word32# -> Exts.Word32#
-> Exts.Word32# -> Exts.Word32# -> Exts.Word32# -> Exts.Word32#
-> Registers
pattern $mR :: forall {r}.
Registers
-> (Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> r)
-> ((# #) -> r)
-> r
$bR :: Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
R w00 w01 w02 w03 w04 w05 w06 w07 = Registers
(# w00, w01, w02, w03
, w04, w05, w06, w07
#)
{-# COMPLETE R #-}
fi :: (Integral a, Num b) => a -> b
fi :: forall a b. (Integral a, Num b) => a -> b
fi = a -> b
forall a b. (Integral a, Num b) => a -> b
fromIntegral
{-# INLINE fi #-}
parse :: BS.ByteString -> Int -> Block
parse :: ByteString -> Int -> Block
parse ByteString
bs Int
m = Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Block
B
(ByteString -> Int -> Word32#
word32be ByteString
bs Int
m)
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
04))
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
08))
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
12))
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
16))
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
20))
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
24))
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
28))
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
32))
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
36))
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
40))
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
44))
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
48))
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
52))
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
56))
(ByteString -> Int -> Word32#
word32be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
60))
{-# INLINE parse #-}
word32be :: BS.ByteString -> Int -> Exts.Word32#
word32be :: ByteString -> Int -> Word32#
word32be ByteString
bs Int
m =
let !(GHC.Word.W8# Word8#
ra) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
bs Int
m
!(GHC.Word.W8# Word8#
rb) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)
!(GHC.Word.W8# Word8#
rc) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
2)
!(GHC.Word.W8# Word8#
rd) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
3)
!a :: Word32#
a = Word# -> Word32#
Exts.wordToWord32# (Word8# -> Word#
Exts.word8ToWord# Word8#
ra)
!b :: Word32#
b = Word# -> Word32#
Exts.wordToWord32# (Word8# -> Word#
Exts.word8ToWord# Word8#
rb)
!c :: Word32#
c = Word# -> Word32#
Exts.wordToWord32# (Word8# -> Word#
Exts.word8ToWord# Word8#
rc)
!d :: Word32#
d = Word# -> Word32#
Exts.wordToWord32# (Word8# -> Word#
Exts.word8ToWord# Word8#
rd)
!sa :: Word32#
sa = Word32# -> Int# -> Word32#
Exts.uncheckedShiftLWord32# Word32#
a Int#
24#
!sb :: Word32#
sb = Word32# -> Int# -> Word32#
Exts.uncheckedShiftLWord32# Word32#
b Int#
16#
!sc :: Word32#
sc = Word32# -> Int# -> Word32#
Exts.uncheckedShiftLWord32# Word32#
c Int#
08#
in Word32#
sa Word32# -> Word32# -> Word32#
`Exts.orWord32#` Word32#
sb Word32# -> Word32# -> Word32#
`Exts.orWord32#` Word32#
sc Word32# -> Word32# -> Word32#
`Exts.orWord32#` Word32#
d
{-# INLINE word32be #-}
parse_pad1
:: BS.ByteString
-> Word64
-> Block
parse_pad1 :: ByteString -> Word64 -> Block
parse_pad1 ByteString
bs Word64
l =
let !bits :: Word64
bits = Word64
l Word64 -> Word64 -> Word64
forall a. Num a => a -> a -> a
* Word64
8
!(GHC.Word.W32# Word32#
lhi) = Word64 -> Word32
forall a b. (Integral a, Num b) => a -> b
fi (Word64
bits Word64 -> Int -> Word64
forall a. Bits a => a -> Int -> a
`B.unsafeShiftR` Int
32)
!(GHC.Word.W32# Word32#
llo) = Word64 -> Word32
forall a b. (Integral a, Num b) => a -> b
fi Word64
bits
in Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Block
B (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
00) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
04) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
08) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
12)
(ByteString -> Int -> Word32#
w32_at ByteString
bs Int
16) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
20) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
24) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
28)
(ByteString -> Int -> Word32#
w32_at ByteString
bs Int
32) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
36) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
40) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
44)
(ByteString -> Int -> Word32#
w32_at ByteString
bs Int
48) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
52) Word32#
lhi Word32#
llo
{-# INLINABLE parse_pad1 #-}
parse_pad2
:: BS.ByteString
-> Word64
-> (# Block, Block #)
parse_pad2 :: ByteString -> Word64 -> (# Block, Block #)
parse_pad2 ByteString
bs Word64
l =
let !bits :: Word64
bits = Word64
l Word64 -> Word64 -> Word64
forall a. Num a => a -> a -> a
* Word64
8
!z :: Word32#
z = Word# -> Word32#
Exts.wordToWord32# Word#
0##
!(GHC.Word.W32# Word32#
lhi) = Word64 -> Word32
forall a b. (Integral a, Num b) => a -> b
fi (Word64
bits Word64 -> Int -> Word64
forall a. Bits a => a -> Int -> a
`B.unsafeShiftR` Int
32)
!(GHC.Word.W32# Word32#
llo) = Word64 -> Word32
forall a b. (Integral a, Num b) => a -> b
fi Word64
bits
!block0 :: Block
block0 = Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Block
B
(ByteString -> Int -> Word32#
w32_at ByteString
bs Int
00) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
04) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
08) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
12)
(ByteString -> Int -> Word32#
w32_at ByteString
bs Int
16) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
20) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
24) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
28)
(ByteString -> Int -> Word32#
w32_at ByteString
bs Int
32) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
36) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
40) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
44)
(ByteString -> Int -> Word32#
w32_at ByteString
bs Int
48) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
52) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
56) (ByteString -> Int -> Word32#
w32_at ByteString
bs Int
60)
!block1 :: Block
block1 = Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Block
B Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
lhi Word32#
llo
in (# Block
block0, Block
block1 #)
{-# INLINABLE parse_pad2 #-}
w8_as_w32_at
:: BS.ByteString
-> Int
-> Exts.Word32#
w8_as_w32_at :: ByteString -> Int -> Word32#
w8_as_w32_at bs :: ByteString
bs@(BI.PS ForeignPtr Word8
_ Int
_ Int
l) Int
i = Word# -> Word32#
Exts.wordToWord32# (Word# -> Word32#) -> Word# -> Word32#
forall a b. (a -> b) -> a -> b
$ case Int -> Int -> Ordering
forall a. Ord a => a -> a -> Ordering
compare Int
i Int
l of
Ordering
LT -> let !(GHC.Word.W8# Word8#
w) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
bs Int
i
in Word8# -> Word#
Exts.word8ToWord# Word8#
w
Ordering
EQ -> Word#
0x80##
Ordering
_ -> Word#
0x00##
{-# INLINE w8_as_w32_at #-}
w32_at
:: BS.ByteString
-> Int
-> Exts.Word32#
w32_at :: ByteString -> Int -> Word32#
w32_at ByteString
bs Int
i =
let !wa :: Word32#
wa = ByteString -> Int -> Word32#
w8_as_w32_at ByteString
bs Int
i Word32# -> Int# -> Word32#
`Exts.uncheckedShiftLWord32#` Int#
24#
!wb :: Word32#
wb = ByteString -> Int -> Word32#
w8_as_w32_at ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1) Word32# -> Int# -> Word32#
`Exts.uncheckedShiftLWord32#` Int#
16#
!wc :: Word32#
wc = ByteString -> Int -> Word32#
w8_as_w32_at ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
2) Word32# -> Int# -> Word32#
`Exts.uncheckedShiftLWord32#` Int#
08#
!wd :: Word32#
wd = ByteString -> Int -> Word32#
w8_as_w32_at ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
3)
in Word32#
wa Word32# -> Word32# -> Word32#
`Exts.orWord32#` Word32#
wb Word32# -> Word32# -> Word32#
`Exts.orWord32#` Word32#
wc Word32# -> Word32# -> Word32#
`Exts.orWord32#` Word32#
wd
{-# INLINE w32_at #-}
update :: Registers -> Block -> Registers
update :: Registers -> Block -> Registers
update
(R Word32#
h0 Word32#
h1 Word32#
h2 Word32#
h3 Word32#
h4 Word32#
h5 Word32#
h6 Word32#
h7)
(B Word32#
b00 Word32#
b01 Word32#
b02 Word32#
b03 Word32#
b04 Word32#
b05 Word32#
b06 Word32#
b07 Word32#
b08 Word32#
b09 Word32#
b10 Word32#
b11 Word32#
b12 Word32#
b13 Word32#
b14 Word32#
b15)
=
let
!w00 :: Word32#
w00 = Word32#
b00; !w01 :: Word32#
w01 = Word32#
b01; !w02 :: Word32#
w02 = Word32#
b02; !w03 :: Word32#
w03 = Word32#
b03
!w04 :: Word32#
w04 = Word32#
b04; !w05 :: Word32#
w05 = Word32#
b05; !w06 :: Word32#
w06 = Word32#
b06; !w07 :: Word32#
w07 = Word32#
b07
!w08 :: Word32#
w08 = Word32#
b08; !w09 :: Word32#
w09 = Word32#
b09; !w10 :: Word32#
w10 = Word32#
b10; !w11 :: Word32#
w11 = Word32#
b11
!w12 :: Word32#
w12 = Word32#
b12; !w13 :: Word32#
w13 = Word32#
b13; !w14 :: Word32#
w14 = Word32#
b14; !w15 :: Word32#
w15 = Word32#
b15
!w16 :: Word32#
w16 = Word32# -> Word32#
ssig1# Word32#
w14 Word32# -> Word32# -> Word32#
`p` Word32#
w09 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w01 Word32# -> Word32# -> Word32#
`p` Word32#
w00
!w17 :: Word32#
w17 = Word32# -> Word32#
ssig1# Word32#
w15 Word32# -> Word32# -> Word32#
`p` Word32#
w10 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w02 Word32# -> Word32# -> Word32#
`p` Word32#
w01
!w18 :: Word32#
w18 = Word32# -> Word32#
ssig1# Word32#
w16 Word32# -> Word32# -> Word32#
`p` Word32#
w11 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w03 Word32# -> Word32# -> Word32#
`p` Word32#
w02
!w19 :: Word32#
w19 = Word32# -> Word32#
ssig1# Word32#
w17 Word32# -> Word32# -> Word32#
`p` Word32#
w12 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w04 Word32# -> Word32# -> Word32#
`p` Word32#
w03
!w20 :: Word32#
w20 = Word32# -> Word32#
ssig1# Word32#
w18 Word32# -> Word32# -> Word32#
`p` Word32#
w13 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w05 Word32# -> Word32# -> Word32#
`p` Word32#
w04
!w21 :: Word32#
w21 = Word32# -> Word32#
ssig1# Word32#
w19 Word32# -> Word32# -> Word32#
`p` Word32#
w14 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w06 Word32# -> Word32# -> Word32#
`p` Word32#
w05
!w22 :: Word32#
w22 = Word32# -> Word32#
ssig1# Word32#
w20 Word32# -> Word32# -> Word32#
`p` Word32#
w15 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w07 Word32# -> Word32# -> Word32#
`p` Word32#
w06
!w23 :: Word32#
w23 = Word32# -> Word32#
ssig1# Word32#
w21 Word32# -> Word32# -> Word32#
`p` Word32#
w16 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w08 Word32# -> Word32# -> Word32#
`p` Word32#
w07
!w24 :: Word32#
w24 = Word32# -> Word32#
ssig1# Word32#
w22 Word32# -> Word32# -> Word32#
`p` Word32#
w17 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w09 Word32# -> Word32# -> Word32#
`p` Word32#
w08
!w25 :: Word32#
w25 = Word32# -> Word32#
ssig1# Word32#
w23 Word32# -> Word32# -> Word32#
`p` Word32#
w18 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w10 Word32# -> Word32# -> Word32#
`p` Word32#
w09
!w26 :: Word32#
w26 = Word32# -> Word32#
ssig1# Word32#
w24 Word32# -> Word32# -> Word32#
`p` Word32#
w19 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w11 Word32# -> Word32# -> Word32#
`p` Word32#
w10
!w27 :: Word32#
w27 = Word32# -> Word32#
ssig1# Word32#
w25 Word32# -> Word32# -> Word32#
`p` Word32#
w20 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w12 Word32# -> Word32# -> Word32#
`p` Word32#
w11
!w28 :: Word32#
w28 = Word32# -> Word32#
ssig1# Word32#
w26 Word32# -> Word32# -> Word32#
`p` Word32#
w21 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w13 Word32# -> Word32# -> Word32#
`p` Word32#
w12
!w29 :: Word32#
w29 = Word32# -> Word32#
ssig1# Word32#
w27 Word32# -> Word32# -> Word32#
`p` Word32#
w22 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w14 Word32# -> Word32# -> Word32#
`p` Word32#
w13
!w30 :: Word32#
w30 = Word32# -> Word32#
ssig1# Word32#
w28 Word32# -> Word32# -> Word32#
`p` Word32#
w23 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w15 Word32# -> Word32# -> Word32#
`p` Word32#
w14
!w31 :: Word32#
w31 = Word32# -> Word32#
ssig1# Word32#
w29 Word32# -> Word32# -> Word32#
`p` Word32#
w24 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w16 Word32# -> Word32# -> Word32#
`p` Word32#
w15
!w32 :: Word32#
w32 = Word32# -> Word32#
ssig1# Word32#
w30 Word32# -> Word32# -> Word32#
`p` Word32#
w25 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w17 Word32# -> Word32# -> Word32#
`p` Word32#
w16
!w33 :: Word32#
w33 = Word32# -> Word32#
ssig1# Word32#
w31 Word32# -> Word32# -> Word32#
`p` Word32#
w26 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w18 Word32# -> Word32# -> Word32#
`p` Word32#
w17
!w34 :: Word32#
w34 = Word32# -> Word32#
ssig1# Word32#
w32 Word32# -> Word32# -> Word32#
`p` Word32#
w27 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w19 Word32# -> Word32# -> Word32#
`p` Word32#
w18
!w35 :: Word32#
w35 = Word32# -> Word32#
ssig1# Word32#
w33 Word32# -> Word32# -> Word32#
`p` Word32#
w28 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w20 Word32# -> Word32# -> Word32#
`p` Word32#
w19
!w36 :: Word32#
w36 = Word32# -> Word32#
ssig1# Word32#
w34 Word32# -> Word32# -> Word32#
`p` Word32#
w29 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w21 Word32# -> Word32# -> Word32#
`p` Word32#
w20
!w37 :: Word32#
w37 = Word32# -> Word32#
ssig1# Word32#
w35 Word32# -> Word32# -> Word32#
`p` Word32#
w30 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w22 Word32# -> Word32# -> Word32#
`p` Word32#
w21
!w38 :: Word32#
w38 = Word32# -> Word32#
ssig1# Word32#
w36 Word32# -> Word32# -> Word32#
`p` Word32#
w31 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w23 Word32# -> Word32# -> Word32#
`p` Word32#
w22
!w39 :: Word32#
w39 = Word32# -> Word32#
ssig1# Word32#
w37 Word32# -> Word32# -> Word32#
`p` Word32#
w32 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w24 Word32# -> Word32# -> Word32#
`p` Word32#
w23
!w40 :: Word32#
w40 = Word32# -> Word32#
ssig1# Word32#
w38 Word32# -> Word32# -> Word32#
`p` Word32#
w33 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w25 Word32# -> Word32# -> Word32#
`p` Word32#
w24
!w41 :: Word32#
w41 = Word32# -> Word32#
ssig1# Word32#
w39 Word32# -> Word32# -> Word32#
`p` Word32#
w34 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w26 Word32# -> Word32# -> Word32#
`p` Word32#
w25
!w42 :: Word32#
w42 = Word32# -> Word32#
ssig1# Word32#
w40 Word32# -> Word32# -> Word32#
`p` Word32#
w35 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w27 Word32# -> Word32# -> Word32#
`p` Word32#
w26
!w43 :: Word32#
w43 = Word32# -> Word32#
ssig1# Word32#
w41 Word32# -> Word32# -> Word32#
`p` Word32#
w36 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w28 Word32# -> Word32# -> Word32#
`p` Word32#
w27
!w44 :: Word32#
w44 = Word32# -> Word32#
ssig1# Word32#
w42 Word32# -> Word32# -> Word32#
`p` Word32#
w37 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w29 Word32# -> Word32# -> Word32#
`p` Word32#
w28
!w45 :: Word32#
w45 = Word32# -> Word32#
ssig1# Word32#
w43 Word32# -> Word32# -> Word32#
`p` Word32#
w38 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w30 Word32# -> Word32# -> Word32#
`p` Word32#
w29
!w46 :: Word32#
w46 = Word32# -> Word32#
ssig1# Word32#
w44 Word32# -> Word32# -> Word32#
`p` Word32#
w39 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w31 Word32# -> Word32# -> Word32#
`p` Word32#
w30
!w47 :: Word32#
w47 = Word32# -> Word32#
ssig1# Word32#
w45 Word32# -> Word32# -> Word32#
`p` Word32#
w40 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w32 Word32# -> Word32# -> Word32#
`p` Word32#
w31
!w48 :: Word32#
w48 = Word32# -> Word32#
ssig1# Word32#
w46 Word32# -> Word32# -> Word32#
`p` Word32#
w41 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w33 Word32# -> Word32# -> Word32#
`p` Word32#
w32
!w49 :: Word32#
w49 = Word32# -> Word32#
ssig1# Word32#
w47 Word32# -> Word32# -> Word32#
`p` Word32#
w42 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w34 Word32# -> Word32# -> Word32#
`p` Word32#
w33
!w50 :: Word32#
w50 = Word32# -> Word32#
ssig1# Word32#
w48 Word32# -> Word32# -> Word32#
`p` Word32#
w43 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w35 Word32# -> Word32# -> Word32#
`p` Word32#
w34
!w51 :: Word32#
w51 = Word32# -> Word32#
ssig1# Word32#
w49 Word32# -> Word32# -> Word32#
`p` Word32#
w44 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w36 Word32# -> Word32# -> Word32#
`p` Word32#
w35
!w52 :: Word32#
w52 = Word32# -> Word32#
ssig1# Word32#
w50 Word32# -> Word32# -> Word32#
`p` Word32#
w45 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w37 Word32# -> Word32# -> Word32#
`p` Word32#
w36
!w53 :: Word32#
w53 = Word32# -> Word32#
ssig1# Word32#
w51 Word32# -> Word32# -> Word32#
`p` Word32#
w46 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w38 Word32# -> Word32# -> Word32#
`p` Word32#
w37
!w54 :: Word32#
w54 = Word32# -> Word32#
ssig1# Word32#
w52 Word32# -> Word32# -> Word32#
`p` Word32#
w47 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w39 Word32# -> Word32# -> Word32#
`p` Word32#
w38
!w55 :: Word32#
w55 = Word32# -> Word32#
ssig1# Word32#
w53 Word32# -> Word32# -> Word32#
`p` Word32#
w48 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w40 Word32# -> Word32# -> Word32#
`p` Word32#
w39
!w56 :: Word32#
w56 = Word32# -> Word32#
ssig1# Word32#
w54 Word32# -> Word32# -> Word32#
`p` Word32#
w49 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w41 Word32# -> Word32# -> Word32#
`p` Word32#
w40
!w57 :: Word32#
w57 = Word32# -> Word32#
ssig1# Word32#
w55 Word32# -> Word32# -> Word32#
`p` Word32#
w50 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w42 Word32# -> Word32# -> Word32#
`p` Word32#
w41
!w58 :: Word32#
w58 = Word32# -> Word32#
ssig1# Word32#
w56 Word32# -> Word32# -> Word32#
`p` Word32#
w51 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w43 Word32# -> Word32# -> Word32#
`p` Word32#
w42
!w59 :: Word32#
w59 = Word32# -> Word32#
ssig1# Word32#
w57 Word32# -> Word32# -> Word32#
`p` Word32#
w52 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w44 Word32# -> Word32# -> Word32#
`p` Word32#
w43
!w60 :: Word32#
w60 = Word32# -> Word32#
ssig1# Word32#
w58 Word32# -> Word32# -> Word32#
`p` Word32#
w53 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w45 Word32# -> Word32# -> Word32#
`p` Word32#
w44
!w61 :: Word32#
w61 = Word32# -> Word32#
ssig1# Word32#
w59 Word32# -> Word32# -> Word32#
`p` Word32#
w54 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w46 Word32# -> Word32# -> Word32#
`p` Word32#
w45
!w62 :: Word32#
w62 = Word32# -> Word32#
ssig1# Word32#
w60 Word32# -> Word32# -> Word32#
`p` Word32#
w55 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w47 Word32# -> Word32# -> Word32#
`p` Word32#
w46
!w63 :: Word32#
w63 = Word32# -> Word32#
ssig1# Word32#
w61 Word32# -> Word32# -> Word32#
`p` Word32#
w56 Word32# -> Word32# -> Word32#
`p` Word32# -> Word32#
ssig0# Word32#
w48 Word32# -> Word32# -> Word32#
`p` Word32#
w47
!(R Word32#
s00a Word32#
s00b Word32#
s00c Word32#
s00d Word32#
s00e Word32#
s00f Word32#
s00g Word32#
s00h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
h0 Word32#
h1 Word32#
h2 Word32#
h3 Word32#
h4 Word32#
h5 Word32#
h6 Word32#
h7 (Word# -> Word32#
k Word#
0x428a2f98##) Word32#
w00
!(R Word32#
s01a Word32#
s01b Word32#
s01c Word32#
s01d Word32#
s01e Word32#
s01f Word32#
s01g Word32#
s01h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s00a Word32#
s00b Word32#
s00c Word32#
s00d Word32#
s00e Word32#
s00f Word32#
s00g Word32#
s00h (Word# -> Word32#
k Word#
0x71374491##) Word32#
w01
!(R Word32#
s02a Word32#
s02b Word32#
s02c Word32#
s02d Word32#
s02e Word32#
s02f Word32#
s02g Word32#
s02h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s01a Word32#
s01b Word32#
s01c Word32#
s01d Word32#
s01e Word32#
s01f Word32#
s01g Word32#
s01h (Word# -> Word32#
k Word#
0xb5c0fbcf##) Word32#
w02
!(R Word32#
s03a Word32#
s03b Word32#
s03c Word32#
s03d Word32#
s03e Word32#
s03f Word32#
s03g Word32#
s03h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s02a Word32#
s02b Word32#
s02c Word32#
s02d Word32#
s02e Word32#
s02f Word32#
s02g Word32#
s02h (Word# -> Word32#
k Word#
0xe9b5dba5##) Word32#
w03
!(R Word32#
s04a Word32#
s04b Word32#
s04c Word32#
s04d Word32#
s04e Word32#
s04f Word32#
s04g Word32#
s04h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s03a Word32#
s03b Word32#
s03c Word32#
s03d Word32#
s03e Word32#
s03f Word32#
s03g Word32#
s03h (Word# -> Word32#
k Word#
0x3956c25b##) Word32#
w04
!(R Word32#
s05a Word32#
s05b Word32#
s05c Word32#
s05d Word32#
s05e Word32#
s05f Word32#
s05g Word32#
s05h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s04a Word32#
s04b Word32#
s04c Word32#
s04d Word32#
s04e Word32#
s04f Word32#
s04g Word32#
s04h (Word# -> Word32#
k Word#
0x59f111f1##) Word32#
w05
!(R Word32#
s06a Word32#
s06b Word32#
s06c Word32#
s06d Word32#
s06e Word32#
s06f Word32#
s06g Word32#
s06h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s05a Word32#
s05b Word32#
s05c Word32#
s05d Word32#
s05e Word32#
s05f Word32#
s05g Word32#
s05h (Word# -> Word32#
k Word#
0x923f82a4##) Word32#
w06
!(R Word32#
s07a Word32#
s07b Word32#
s07c Word32#
s07d Word32#
s07e Word32#
s07f Word32#
s07g Word32#
s07h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s06a Word32#
s06b Word32#
s06c Word32#
s06d Word32#
s06e Word32#
s06f Word32#
s06g Word32#
s06h (Word# -> Word32#
k Word#
0xab1c5ed5##) Word32#
w07
!(R Word32#
s08a Word32#
s08b Word32#
s08c Word32#
s08d Word32#
s08e Word32#
s08f Word32#
s08g Word32#
s08h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s07a Word32#
s07b Word32#
s07c Word32#
s07d Word32#
s07e Word32#
s07f Word32#
s07g Word32#
s07h (Word# -> Word32#
k Word#
0xd807aa98##) Word32#
w08
!(R Word32#
s09a Word32#
s09b Word32#
s09c Word32#
s09d Word32#
s09e Word32#
s09f Word32#
s09g Word32#
s09h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s08a Word32#
s08b Word32#
s08c Word32#
s08d Word32#
s08e Word32#
s08f Word32#
s08g Word32#
s08h (Word# -> Word32#
k Word#
0x12835b01##) Word32#
w09
!(R Word32#
s10a Word32#
s10b Word32#
s10c Word32#
s10d Word32#
s10e Word32#
s10f Word32#
s10g Word32#
s10h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s09a Word32#
s09b Word32#
s09c Word32#
s09d Word32#
s09e Word32#
s09f Word32#
s09g Word32#
s09h (Word# -> Word32#
k Word#
0x243185be##) Word32#
w10
!(R Word32#
s11a Word32#
s11b Word32#
s11c Word32#
s11d Word32#
s11e Word32#
s11f Word32#
s11g Word32#
s11h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s10a Word32#
s10b Word32#
s10c Word32#
s10d Word32#
s10e Word32#
s10f Word32#
s10g Word32#
s10h (Word# -> Word32#
k Word#
0x550c7dc3##) Word32#
w11
!(R Word32#
s12a Word32#
s12b Word32#
s12c Word32#
s12d Word32#
s12e Word32#
s12f Word32#
s12g Word32#
s12h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s11a Word32#
s11b Word32#
s11c Word32#
s11d Word32#
s11e Word32#
s11f Word32#
s11g Word32#
s11h (Word# -> Word32#
k Word#
0x72be5d74##) Word32#
w12
!(R Word32#
s13a Word32#
s13b Word32#
s13c Word32#
s13d Word32#
s13e Word32#
s13f Word32#
s13g Word32#
s13h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s12a Word32#
s12b Word32#
s12c Word32#
s12d Word32#
s12e Word32#
s12f Word32#
s12g Word32#
s12h (Word# -> Word32#
k Word#
0x80deb1fe##) Word32#
w13
!(R Word32#
s14a Word32#
s14b Word32#
s14c Word32#
s14d Word32#
s14e Word32#
s14f Word32#
s14g Word32#
s14h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s13a Word32#
s13b Word32#
s13c Word32#
s13d Word32#
s13e Word32#
s13f Word32#
s13g Word32#
s13h (Word# -> Word32#
k Word#
0x9bdc06a7##) Word32#
w14
!(R Word32#
s15a Word32#
s15b Word32#
s15c Word32#
s15d Word32#
s15e Word32#
s15f Word32#
s15g Word32#
s15h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s14a Word32#
s14b Word32#
s14c Word32#
s14d Word32#
s14e Word32#
s14f Word32#
s14g Word32#
s14h (Word# -> Word32#
k Word#
0xc19bf174##) Word32#
w15
!(R Word32#
s16a Word32#
s16b Word32#
s16c Word32#
s16d Word32#
s16e Word32#
s16f Word32#
s16g Word32#
s16h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s15a Word32#
s15b Word32#
s15c Word32#
s15d Word32#
s15e Word32#
s15f Word32#
s15g Word32#
s15h (Word# -> Word32#
k Word#
0xe49b69c1##) Word32#
w16
!(R Word32#
s17a Word32#
s17b Word32#
s17c Word32#
s17d Word32#
s17e Word32#
s17f Word32#
s17g Word32#
s17h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s16a Word32#
s16b Word32#
s16c Word32#
s16d Word32#
s16e Word32#
s16f Word32#
s16g Word32#
s16h (Word# -> Word32#
k Word#
0xefbe4786##) Word32#
w17
!(R Word32#
s18a Word32#
s18b Word32#
s18c Word32#
s18d Word32#
s18e Word32#
s18f Word32#
s18g Word32#
s18h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s17a Word32#
s17b Word32#
s17c Word32#
s17d Word32#
s17e Word32#
s17f Word32#
s17g Word32#
s17h (Word# -> Word32#
k Word#
0x0fc19dc6##) Word32#
w18
!(R Word32#
s19a Word32#
s19b Word32#
s19c Word32#
s19d Word32#
s19e Word32#
s19f Word32#
s19g Word32#
s19h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s18a Word32#
s18b Word32#
s18c Word32#
s18d Word32#
s18e Word32#
s18f Word32#
s18g Word32#
s18h (Word# -> Word32#
k Word#
0x240ca1cc##) Word32#
w19
!(R Word32#
s20a Word32#
s20b Word32#
s20c Word32#
s20d Word32#
s20e Word32#
s20f Word32#
s20g Word32#
s20h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s19a Word32#
s19b Word32#
s19c Word32#
s19d Word32#
s19e Word32#
s19f Word32#
s19g Word32#
s19h (Word# -> Word32#
k Word#
0x2de92c6f##) Word32#
w20
!(R Word32#
s21a Word32#
s21b Word32#
s21c Word32#
s21d Word32#
s21e Word32#
s21f Word32#
s21g Word32#
s21h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s20a Word32#
s20b Word32#
s20c Word32#
s20d Word32#
s20e Word32#
s20f Word32#
s20g Word32#
s20h (Word# -> Word32#
k Word#
0x4a7484aa##) Word32#
w21
!(R Word32#
s22a Word32#
s22b Word32#
s22c Word32#
s22d Word32#
s22e Word32#
s22f Word32#
s22g Word32#
s22h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s21a Word32#
s21b Word32#
s21c Word32#
s21d Word32#
s21e Word32#
s21f Word32#
s21g Word32#
s21h (Word# -> Word32#
k Word#
0x5cb0a9dc##) Word32#
w22
!(R Word32#
s23a Word32#
s23b Word32#
s23c Word32#
s23d Word32#
s23e Word32#
s23f Word32#
s23g Word32#
s23h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s22a Word32#
s22b Word32#
s22c Word32#
s22d Word32#
s22e Word32#
s22f Word32#
s22g Word32#
s22h (Word# -> Word32#
k Word#
0x76f988da##) Word32#
w23
!(R Word32#
s24a Word32#
s24b Word32#
s24c Word32#
s24d Word32#
s24e Word32#
s24f Word32#
s24g Word32#
s24h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s23a Word32#
s23b Word32#
s23c Word32#
s23d Word32#
s23e Word32#
s23f Word32#
s23g Word32#
s23h (Word# -> Word32#
k Word#
0x983e5152##) Word32#
w24
!(R Word32#
s25a Word32#
s25b Word32#
s25c Word32#
s25d Word32#
s25e Word32#
s25f Word32#
s25g Word32#
s25h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s24a Word32#
s24b Word32#
s24c Word32#
s24d Word32#
s24e Word32#
s24f Word32#
s24g Word32#
s24h (Word# -> Word32#
k Word#
0xa831c66d##) Word32#
w25
!(R Word32#
s26a Word32#
s26b Word32#
s26c Word32#
s26d Word32#
s26e Word32#
s26f Word32#
s26g Word32#
s26h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s25a Word32#
s25b Word32#
s25c Word32#
s25d Word32#
s25e Word32#
s25f Word32#
s25g Word32#
s25h (Word# -> Word32#
k Word#
0xb00327c8##) Word32#
w26
!(R Word32#
s27a Word32#
s27b Word32#
s27c Word32#
s27d Word32#
s27e Word32#
s27f Word32#
s27g Word32#
s27h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s26a Word32#
s26b Word32#
s26c Word32#
s26d Word32#
s26e Word32#
s26f Word32#
s26g Word32#
s26h (Word# -> Word32#
k Word#
0xbf597fc7##) Word32#
w27
!(R Word32#
s28a Word32#
s28b Word32#
s28c Word32#
s28d Word32#
s28e Word32#
s28f Word32#
s28g Word32#
s28h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s27a Word32#
s27b Word32#
s27c Word32#
s27d Word32#
s27e Word32#
s27f Word32#
s27g Word32#
s27h (Word# -> Word32#
k Word#
0xc6e00bf3##) Word32#
w28
!(R Word32#
s29a Word32#
s29b Word32#
s29c Word32#
s29d Word32#
s29e Word32#
s29f Word32#
s29g Word32#
s29h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s28a Word32#
s28b Word32#
s28c Word32#
s28d Word32#
s28e Word32#
s28f Word32#
s28g Word32#
s28h (Word# -> Word32#
k Word#
0xd5a79147##) Word32#
w29
!(R Word32#
s30a Word32#
s30b Word32#
s30c Word32#
s30d Word32#
s30e Word32#
s30f Word32#
s30g Word32#
s30h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s29a Word32#
s29b Word32#
s29c Word32#
s29d Word32#
s29e Word32#
s29f Word32#
s29g Word32#
s29h (Word# -> Word32#
k Word#
0x06ca6351##) Word32#
w30
!(R Word32#
s31a Word32#
s31b Word32#
s31c Word32#
s31d Word32#
s31e Word32#
s31f Word32#
s31g Word32#
s31h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s30a Word32#
s30b Word32#
s30c Word32#
s30d Word32#
s30e Word32#
s30f Word32#
s30g Word32#
s30h (Word# -> Word32#
k Word#
0x14292967##) Word32#
w31
!(R Word32#
s32a Word32#
s32b Word32#
s32c Word32#
s32d Word32#
s32e Word32#
s32f Word32#
s32g Word32#
s32h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s31a Word32#
s31b Word32#
s31c Word32#
s31d Word32#
s31e Word32#
s31f Word32#
s31g Word32#
s31h (Word# -> Word32#
k Word#
0x27b70a85##) Word32#
w32
!(R Word32#
s33a Word32#
s33b Word32#
s33c Word32#
s33d Word32#
s33e Word32#
s33f Word32#
s33g Word32#
s33h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s32a Word32#
s32b Word32#
s32c Word32#
s32d Word32#
s32e Word32#
s32f Word32#
s32g Word32#
s32h (Word# -> Word32#
k Word#
0x2e1b2138##) Word32#
w33
!(R Word32#
s34a Word32#
s34b Word32#
s34c Word32#
s34d Word32#
s34e Word32#
s34f Word32#
s34g Word32#
s34h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s33a Word32#
s33b Word32#
s33c Word32#
s33d Word32#
s33e Word32#
s33f Word32#
s33g Word32#
s33h (Word# -> Word32#
k Word#
0x4d2c6dfc##) Word32#
w34
!(R Word32#
s35a Word32#
s35b Word32#
s35c Word32#
s35d Word32#
s35e Word32#
s35f Word32#
s35g Word32#
s35h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s34a Word32#
s34b Word32#
s34c Word32#
s34d Word32#
s34e Word32#
s34f Word32#
s34g Word32#
s34h (Word# -> Word32#
k Word#
0x53380d13##) Word32#
w35
!(R Word32#
s36a Word32#
s36b Word32#
s36c Word32#
s36d Word32#
s36e Word32#
s36f Word32#
s36g Word32#
s36h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s35a Word32#
s35b Word32#
s35c Word32#
s35d Word32#
s35e Word32#
s35f Word32#
s35g Word32#
s35h (Word# -> Word32#
k Word#
0x650a7354##) Word32#
w36
!(R Word32#
s37a Word32#
s37b Word32#
s37c Word32#
s37d Word32#
s37e Word32#
s37f Word32#
s37g Word32#
s37h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s36a Word32#
s36b Word32#
s36c Word32#
s36d Word32#
s36e Word32#
s36f Word32#
s36g Word32#
s36h (Word# -> Word32#
k Word#
0x766a0abb##) Word32#
w37
!(R Word32#
s38a Word32#
s38b Word32#
s38c Word32#
s38d Word32#
s38e Word32#
s38f Word32#
s38g Word32#
s38h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s37a Word32#
s37b Word32#
s37c Word32#
s37d Word32#
s37e Word32#
s37f Word32#
s37g Word32#
s37h (Word# -> Word32#
k Word#
0x81c2c92e##) Word32#
w38
!(R Word32#
s39a Word32#
s39b Word32#
s39c Word32#
s39d Word32#
s39e Word32#
s39f Word32#
s39g Word32#
s39h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s38a Word32#
s38b Word32#
s38c Word32#
s38d Word32#
s38e Word32#
s38f Word32#
s38g Word32#
s38h (Word# -> Word32#
k Word#
0x92722c85##) Word32#
w39
!(R Word32#
s40a Word32#
s40b Word32#
s40c Word32#
s40d Word32#
s40e Word32#
s40f Word32#
s40g Word32#
s40h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s39a Word32#
s39b Word32#
s39c Word32#
s39d Word32#
s39e Word32#
s39f Word32#
s39g Word32#
s39h (Word# -> Word32#
k Word#
0xa2bfe8a1##) Word32#
w40
!(R Word32#
s41a Word32#
s41b Word32#
s41c Word32#
s41d Word32#
s41e Word32#
s41f Word32#
s41g Word32#
s41h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s40a Word32#
s40b Word32#
s40c Word32#
s40d Word32#
s40e Word32#
s40f Word32#
s40g Word32#
s40h (Word# -> Word32#
k Word#
0xa81a664b##) Word32#
w41
!(R Word32#
s42a Word32#
s42b Word32#
s42c Word32#
s42d Word32#
s42e Word32#
s42f Word32#
s42g Word32#
s42h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s41a Word32#
s41b Word32#
s41c Word32#
s41d Word32#
s41e Word32#
s41f Word32#
s41g Word32#
s41h (Word# -> Word32#
k Word#
0xc24b8b70##) Word32#
w42
!(R Word32#
s43a Word32#
s43b Word32#
s43c Word32#
s43d Word32#
s43e Word32#
s43f Word32#
s43g Word32#
s43h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s42a Word32#
s42b Word32#
s42c Word32#
s42d Word32#
s42e Word32#
s42f Word32#
s42g Word32#
s42h (Word# -> Word32#
k Word#
0xc76c51a3##) Word32#
w43
!(R Word32#
s44a Word32#
s44b Word32#
s44c Word32#
s44d Word32#
s44e Word32#
s44f Word32#
s44g Word32#
s44h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s43a Word32#
s43b Word32#
s43c Word32#
s43d Word32#
s43e Word32#
s43f Word32#
s43g Word32#
s43h (Word# -> Word32#
k Word#
0xd192e819##) Word32#
w44
!(R Word32#
s45a Word32#
s45b Word32#
s45c Word32#
s45d Word32#
s45e Word32#
s45f Word32#
s45g Word32#
s45h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s44a Word32#
s44b Word32#
s44c Word32#
s44d Word32#
s44e Word32#
s44f Word32#
s44g Word32#
s44h (Word# -> Word32#
k Word#
0xd6990624##) Word32#
w45
!(R Word32#
s46a Word32#
s46b Word32#
s46c Word32#
s46d Word32#
s46e Word32#
s46f Word32#
s46g Word32#
s46h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s45a Word32#
s45b Word32#
s45c Word32#
s45d Word32#
s45e Word32#
s45f Word32#
s45g Word32#
s45h (Word# -> Word32#
k Word#
0xf40e3585##) Word32#
w46
!(R Word32#
s47a Word32#
s47b Word32#
s47c Word32#
s47d Word32#
s47e Word32#
s47f Word32#
s47g Word32#
s47h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s46a Word32#
s46b Word32#
s46c Word32#
s46d Word32#
s46e Word32#
s46f Word32#
s46g Word32#
s46h (Word# -> Word32#
k Word#
0x106aa070##) Word32#
w47
!(R Word32#
s48a Word32#
s48b Word32#
s48c Word32#
s48d Word32#
s48e Word32#
s48f Word32#
s48g Word32#
s48h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s47a Word32#
s47b Word32#
s47c Word32#
s47d Word32#
s47e Word32#
s47f Word32#
s47g Word32#
s47h (Word# -> Word32#
k Word#
0x19a4c116##) Word32#
w48
!(R Word32#
s49a Word32#
s49b Word32#
s49c Word32#
s49d Word32#
s49e Word32#
s49f Word32#
s49g Word32#
s49h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s48a Word32#
s48b Word32#
s48c Word32#
s48d Word32#
s48e Word32#
s48f Word32#
s48g Word32#
s48h (Word# -> Word32#
k Word#
0x1e376c08##) Word32#
w49
!(R Word32#
s50a Word32#
s50b Word32#
s50c Word32#
s50d Word32#
s50e Word32#
s50f Word32#
s50g Word32#
s50h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s49a Word32#
s49b Word32#
s49c Word32#
s49d Word32#
s49e Word32#
s49f Word32#
s49g Word32#
s49h (Word# -> Word32#
k Word#
0x2748774c##) Word32#
w50
!(R Word32#
s51a Word32#
s51b Word32#
s51c Word32#
s51d Word32#
s51e Word32#
s51f Word32#
s51g Word32#
s51h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s50a Word32#
s50b Word32#
s50c Word32#
s50d Word32#
s50e Word32#
s50f Word32#
s50g Word32#
s50h (Word# -> Word32#
k Word#
0x34b0bcb5##) Word32#
w51
!(R Word32#
s52a Word32#
s52b Word32#
s52c Word32#
s52d Word32#
s52e Word32#
s52f Word32#
s52g Word32#
s52h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s51a Word32#
s51b Word32#
s51c Word32#
s51d Word32#
s51e Word32#
s51f Word32#
s51g Word32#
s51h (Word# -> Word32#
k Word#
0x391c0cb3##) Word32#
w52
!(R Word32#
s53a Word32#
s53b Word32#
s53c Word32#
s53d Word32#
s53e Word32#
s53f Word32#
s53g Word32#
s53h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s52a Word32#
s52b Word32#
s52c Word32#
s52d Word32#
s52e Word32#
s52f Word32#
s52g Word32#
s52h (Word# -> Word32#
k Word#
0x4ed8aa4a##) Word32#
w53
!(R Word32#
s54a Word32#
s54b Word32#
s54c Word32#
s54d Word32#
s54e Word32#
s54f Word32#
s54g Word32#
s54h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s53a Word32#
s53b Word32#
s53c Word32#
s53d Word32#
s53e Word32#
s53f Word32#
s53g Word32#
s53h (Word# -> Word32#
k Word#
0x5b9cca4f##) Word32#
w54
!(R Word32#
s55a Word32#
s55b Word32#
s55c Word32#
s55d Word32#
s55e Word32#
s55f Word32#
s55g Word32#
s55h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s54a Word32#
s54b Word32#
s54c Word32#
s54d Word32#
s54e Word32#
s54f Word32#
s54g Word32#
s54h (Word# -> Word32#
k Word#
0x682e6ff3##) Word32#
w55
!(R Word32#
s56a Word32#
s56b Word32#
s56c Word32#
s56d Word32#
s56e Word32#
s56f Word32#
s56g Word32#
s56h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s55a Word32#
s55b Word32#
s55c Word32#
s55d Word32#
s55e Word32#
s55f Word32#
s55g Word32#
s55h (Word# -> Word32#
k Word#
0x748f82ee##) Word32#
w56
!(R Word32#
s57a Word32#
s57b Word32#
s57c Word32#
s57d Word32#
s57e Word32#
s57f Word32#
s57g Word32#
s57h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s56a Word32#
s56b Word32#
s56c Word32#
s56d Word32#
s56e Word32#
s56f Word32#
s56g Word32#
s56h (Word# -> Word32#
k Word#
0x78a5636f##) Word32#
w57
!(R Word32#
s58a Word32#
s58b Word32#
s58c Word32#
s58d Word32#
s58e Word32#
s58f Word32#
s58g Word32#
s58h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s57a Word32#
s57b Word32#
s57c Word32#
s57d Word32#
s57e Word32#
s57f Word32#
s57g Word32#
s57h (Word# -> Word32#
k Word#
0x84c87814##) Word32#
w58
!(R Word32#
s59a Word32#
s59b Word32#
s59c Word32#
s59d Word32#
s59e Word32#
s59f Word32#
s59g Word32#
s59h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s58a Word32#
s58b Word32#
s58c Word32#
s58d Word32#
s58e Word32#
s58f Word32#
s58g Word32#
s58h (Word# -> Word32#
k Word#
0x8cc70208##) Word32#
w59
!(R Word32#
s60a Word32#
s60b Word32#
s60c Word32#
s60d Word32#
s60e Word32#
s60f Word32#
s60g Word32#
s60h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s59a Word32#
s59b Word32#
s59c Word32#
s59d Word32#
s59e Word32#
s59f Word32#
s59g Word32#
s59h (Word# -> Word32#
k Word#
0x90befffa##) Word32#
w60
!(R Word32#
s61a Word32#
s61b Word32#
s61c Word32#
s61d Word32#
s61e Word32#
s61f Word32#
s61g Word32#
s61h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s60a Word32#
s60b Word32#
s60c Word32#
s60d Word32#
s60e Word32#
s60f Word32#
s60g Word32#
s60h (Word# -> Word32#
k Word#
0xa4506ceb##) Word32#
w61
!(R Word32#
s62a Word32#
s62b Word32#
s62c Word32#
s62d Word32#
s62e Word32#
s62f Word32#
s62g Word32#
s62h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s61a Word32#
s61b Word32#
s61c Word32#
s61d Word32#
s61e Word32#
s61f Word32#
s61g Word32#
s61h (Word# -> Word32#
k Word#
0xbef9a3f7##) Word32#
w62
!(R Word32#
s63a Word32#
s63b Word32#
s63c Word32#
s63d Word32#
s63e Word32#
s63f Word32#
s63g Word32#
s63h) =
Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
s62a Word32#
s62b Word32#
s62c Word32#
s62d Word32#
s62e Word32#
s62f Word32#
s62g Word32#
s62h (Word# -> Word32#
k Word#
0xc67178f2##) Word32#
w63
in Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
R (Word32#
h0 Word32# -> Word32# -> Word32#
`p` Word32#
s63a) (Word32#
h1 Word32# -> Word32# -> Word32#
`p` Word32#
s63b) (Word32#
h2 Word32# -> Word32# -> Word32#
`p` Word32#
s63c) (Word32#
h3 Word32# -> Word32# -> Word32#
`p` Word32#
s63d)
(Word32#
h4 Word32# -> Word32# -> Word32#
`p` Word32#
s63e) (Word32#
h5 Word32# -> Word32# -> Word32#
`p` Word32#
s63f) (Word32#
h6 Word32# -> Word32# -> Word32#
`p` Word32#
s63g) (Word32#
h7 Word32# -> Word32# -> Word32#
`p` Word32#
s63h)
where
p :: Word32# -> Word32# -> Word32#
p = Word32# -> Word32# -> Word32#
Exts.plusWord32#
{-# INLINE p #-}
k :: Exts.Word# -> Exts.Word32#
k :: Word# -> Word32#
k = Word# -> Word32#
Exts.wordToWord32#
{-# INLINE k #-}
rotr# :: Exts.Word32# -> Int# -> Exts.Word32#
rotr# :: Word32# -> Int# -> Word32#
rotr# Word32#
x Int#
n =
Word32# -> Int# -> Word32#
Exts.uncheckedShiftRLWord32# Word32#
x Int#
n Word32# -> Word32# -> Word32#
`Exts.orWord32#`
Word32# -> Int# -> Word32#
Exts.uncheckedShiftLWord32# Word32#
x (Int#
32# Int# -> Int# -> Int#
Exts.-# Int#
n)
{-# INLINE rotr# #-}
shr# :: Exts.Word32# -> Int# -> Exts.Word32#
shr# :: Word32# -> Int# -> Word32#
shr# = Word32# -> Int# -> Word32#
Exts.uncheckedShiftRLWord32#
{-# INLINE shr# #-}
ch# :: Exts.Word32# -> Exts.Word32# -> Exts.Word32# -> Exts.Word32#
ch# :: Word32# -> Word32# -> Word32# -> Word32#
ch# Word32#
x Word32#
y Word32#
z =
(Word32#
x Word32# -> Word32# -> Word32#
`Exts.andWord32#` Word32#
y) Word32# -> Word32# -> Word32#
`Exts.xorWord32#`
(Word32# -> Word32#
Exts.notWord32# Word32#
x Word32# -> Word32# -> Word32#
`Exts.andWord32#` Word32#
z)
{-# INLINE ch# #-}
maj# :: Exts.Word32# -> Exts.Word32# -> Exts.Word32# -> Exts.Word32#
maj# :: Word32# -> Word32# -> Word32# -> Word32#
maj# Word32#
x Word32#
y Word32#
z =
(Word32#
x Word32# -> Word32# -> Word32#
`Exts.andWord32#` (Word32#
y Word32# -> Word32# -> Word32#
`Exts.orWord32#` Word32#
z)) Word32# -> Word32# -> Word32#
`Exts.orWord32#`
(Word32#
y Word32# -> Word32# -> Word32#
`Exts.andWord32#` Word32#
z)
{-# INLINE maj# #-}
bsig0# :: Exts.Word32# -> Exts.Word32#
bsig0# :: Word32# -> Word32#
bsig0# Word32#
x =
Word32# -> Int# -> Word32#
rotr# Word32#
x Int#
2# Word32# -> Word32# -> Word32#
`Exts.xorWord32#` Word32# -> Int# -> Word32#
rotr# Word32#
x Int#
13# Word32# -> Word32# -> Word32#
`Exts.xorWord32#` Word32# -> Int# -> Word32#
rotr# Word32#
x Int#
22#
{-# INLINE bsig0# #-}
bsig1# :: Exts.Word32# -> Exts.Word32#
bsig1# :: Word32# -> Word32#
bsig1# Word32#
x =
Word32# -> Int# -> Word32#
rotr# Word32#
x Int#
6# Word32# -> Word32# -> Word32#
`Exts.xorWord32#` Word32# -> Int# -> Word32#
rotr# Word32#
x Int#
11# Word32# -> Word32# -> Word32#
`Exts.xorWord32#` Word32# -> Int# -> Word32#
rotr# Word32#
x Int#
25#
{-# INLINE bsig1# #-}
ssig0# :: Exts.Word32# -> Exts.Word32#
ssig0# :: Word32# -> Word32#
ssig0# Word32#
x =
Word32# -> Int# -> Word32#
rotr# Word32#
x Int#
7# Word32# -> Word32# -> Word32#
`Exts.xorWord32#` Word32# -> Int# -> Word32#
rotr# Word32#
x Int#
18# Word32# -> Word32# -> Word32#
`Exts.xorWord32#` Word32# -> Int# -> Word32#
shr# Word32#
x Int#
3#
{-# INLINE ssig0# #-}
ssig1# :: Exts.Word32# -> Exts.Word32#
ssig1# :: Word32# -> Word32#
ssig1# Word32#
x =
Word32# -> Int# -> Word32#
rotr# Word32#
x Int#
17# Word32# -> Word32# -> Word32#
`Exts.xorWord32#` Word32# -> Int# -> Word32#
rotr# Word32#
x Int#
19# Word32# -> Word32# -> Word32#
`Exts.xorWord32#` Word32# -> Int# -> Word32#
shr# Word32#
x Int#
10#
{-# INLINE ssig1# #-}
step#
:: Exts.Word32# -> Exts.Word32# -> Exts.Word32# -> Exts.Word32#
-> Exts.Word32# -> Exts.Word32# -> Exts.Word32# -> Exts.Word32#
-> Exts.Word32# -> Exts.Word32#
-> Registers
step# :: Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
step# Word32#
a Word32#
b Word32#
c Word32#
d Word32#
e Word32#
f Word32#
g Word32#
h Word32#
k Word32#
w =
let !t1 :: Word32#
t1 = Word32#
h
Word32# -> Word32# -> Word32#
`Exts.plusWord32#` Word32# -> Word32#
bsig1# Word32#
e
Word32# -> Word32# -> Word32#
`Exts.plusWord32#` Word32# -> Word32# -> Word32# -> Word32#
ch# Word32#
e Word32#
f Word32#
g
Word32# -> Word32# -> Word32#
`Exts.plusWord32#` Word32#
k
Word32# -> Word32# -> Word32#
`Exts.plusWord32#` Word32#
w
!t2 :: Word32#
t2 = Word32# -> Word32#
bsig0# Word32#
a Word32# -> Word32# -> Word32#
`Exts.plusWord32#` Word32# -> Word32# -> Word32# -> Word32#
maj# Word32#
a Word32#
b Word32#
c
in Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
R (Word32#
t1 Word32# -> Word32# -> Word32#
`Exts.plusWord32#` Word32#
t2) Word32#
a Word32#
b Word32#
c (Word32#
d Word32# -> Word32# -> Word32#
`Exts.plusWord32#` Word32#
t1) Word32#
e Word32#
f Word32#
g
{-# INLINE step# #-}
iv :: () -> Registers
iv :: () -> Registers
iv ()
_ = Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Registers
R
(Word# -> Word32#
Exts.wordToWord32# Word#
0x6a09e667##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0xbb67ae85##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0x3c6ef372##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0xa54ff53a##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0x510e527f##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0x9b05688c##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0x1f83d9ab##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0x5be0cd19##)
cat :: Registers -> BS.ByteString
cat :: Registers -> ByteString
cat Registers
rs = Int -> (Ptr Word8 -> IO ()) -> ByteString
BI.unsafeCreate Int
32 (Registers -> Ptr Word8 -> IO ()
cat_into Registers
rs)
{-# INLINABLE cat #-}
cat_into :: Registers -> Ptr Word8 -> IO ()
cat_into :: Registers -> Ptr Word8 -> IO ()
cat_into (R Word32#
h0 Word32#
h1 Word32#
h2 Word32#
h3 Word32#
h4 Word32#
h5 Word32#
h6 Word32#
h7) (Ptr Addr#
addr) = (State# RealWorld -> (# State# RealWorld, () #)) -> IO ()
forall a. (State# RealWorld -> (# State# RealWorld, a #)) -> IO a
GHC.IO.IO ((State# RealWorld -> (# State# RealWorld, () #)) -> IO ())
-> (State# RealWorld -> (# State# RealWorld, () #)) -> IO ()
forall a b. (a -> b) -> a -> b
$ \State# RealWorld
s0 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
poke32be Addr#
addr Int#
00# Word32#
h0 State# RealWorld
s0 of { State# RealWorld
s1 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
poke32be Addr#
addr Int#
04# Word32#
h1 State# RealWorld
s1 of { State# RealWorld
s2 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
poke32be Addr#
addr Int#
08# Word32#
h2 State# RealWorld
s2 of { State# RealWorld
s3 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
poke32be Addr#
addr Int#
12# Word32#
h3 State# RealWorld
s3 of { State# RealWorld
s4 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
poke32be Addr#
addr Int#
16# Word32#
h4 State# RealWorld
s4 of { State# RealWorld
s5 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
poke32be Addr#
addr Int#
20# Word32#
h5 State# RealWorld
s5 of { State# RealWorld
s6 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
poke32be Addr#
addr Int#
24# Word32#
h6 State# RealWorld
s6 of { State# RealWorld
s7 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
poke32be Addr#
addr Int#
28# Word32#
h7 State# RealWorld
s7 of { State# RealWorld
s8 ->
(# State# RealWorld
s8, () #)
}}}}}}}}
{-# INLINE cat_into #-}
poke32be
:: Exts.Addr#
-> Int#
-> Exts.Word32#
-> Exts.State# Exts.RealWorld
-> Exts.State# Exts.RealWorld
poke32be :: Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
poke32be Addr#
a Int#
off Word32#
w State# RealWorld
s0 =
case Addr# -> Int# -> Word8# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word8# -> State# d -> State# d
Exts.writeWord8OffAddr# Addr#
a Int#
off (Word32# -> Int# -> Word8#
byte# Word32#
w Int#
24#) State# RealWorld
s0 of { State# RealWorld
s1 ->
case Addr# -> Int# -> Word8# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word8# -> State# d -> State# d
Exts.writeWord8OffAddr# Addr#
a (Int#
off Int# -> Int# -> Int#
Exts.+# Int#
1#) (Word32# -> Int# -> Word8#
byte# Word32#
w Int#
16#) State# RealWorld
s1 of { State# RealWorld
s2 ->
case Addr# -> Int# -> Word8# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word8# -> State# d -> State# d
Exts.writeWord8OffAddr# Addr#
a (Int#
off Int# -> Int# -> Int#
Exts.+# Int#
2#) (Word32# -> Int# -> Word8#
byte# Word32#
w Int#
8#) State# RealWorld
s2 of { State# RealWorld
s3 ->
Addr# -> Int# -> Word8# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word8# -> State# d -> State# d
Exts.writeWord8OffAddr# Addr#
a (Int#
off Int# -> Int# -> Int#
Exts.+# Int#
3#) (Word32# -> Int# -> Word8#
byte# Word32#
w Int#
0#) State# RealWorld
s3
}}}
{-# INLINE poke32be #-}
byte# :: Exts.Word32# -> Int# -> Exts.Word8#
byte# :: Word32# -> Int# -> Word8#
byte# Word32#
w Int#
n = Word# -> Word8#
Exts.wordToWord8#
(Word32# -> Word#
Exts.word32ToWord# (Word32# -> Int# -> Word32#
Exts.uncheckedShiftRLWord32# Word32#
w Int#
n))
{-# INLINE byte# #-}
poke_registers :: Ptr Word32 -> Registers -> IO ()
poke_registers :: Ptr Word32 -> Registers -> IO ()
poke_registers (Ptr Addr#
addr) (R Word32#
w0 Word32#
w1 Word32#
w2 Word32#
w3 Word32#
w4 Word32#
w5 Word32#
w6 Word32#
w7) = (State# RealWorld -> (# State# RealWorld, () #)) -> IO ()
forall a. (State# RealWorld -> (# State# RealWorld, a #)) -> IO a
GHC.IO.IO ((State# RealWorld -> (# State# RealWorld, () #)) -> IO ())
-> (State# RealWorld -> (# State# RealWorld, () #)) -> IO ()
forall a b. (a -> b) -> a -> b
$ \State# RealWorld
s0 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word32# -> State# d -> State# d
Exts.writeWord32OffAddr# Addr#
addr Int#
0# Word32#
w0 State# RealWorld
s0 of { State# RealWorld
s1 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word32# -> State# d -> State# d
Exts.writeWord32OffAddr# Addr#
addr Int#
1# Word32#
w1 State# RealWorld
s1 of { State# RealWorld
s2 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word32# -> State# d -> State# d
Exts.writeWord32OffAddr# Addr#
addr Int#
2# Word32#
w2 State# RealWorld
s2 of { State# RealWorld
s3 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word32# -> State# d -> State# d
Exts.writeWord32OffAddr# Addr#
addr Int#
3# Word32#
w3 State# RealWorld
s3 of { State# RealWorld
s4 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word32# -> State# d -> State# d
Exts.writeWord32OffAddr# Addr#
addr Int#
4# Word32#
w4 State# RealWorld
s4 of { State# RealWorld
s5 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word32# -> State# d -> State# d
Exts.writeWord32OffAddr# Addr#
addr Int#
5# Word32#
w5 State# RealWorld
s5 of { State# RealWorld
s6 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word32# -> State# d -> State# d
Exts.writeWord32OffAddr# Addr#
addr Int#
6# Word32#
w6 State# RealWorld
s6 of { State# RealWorld
s7 ->
case Addr# -> Int# -> Word32# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word32# -> State# d -> State# d
Exts.writeWord32OffAddr# Addr#
addr Int#
7# Word32#
w7 State# RealWorld
s7 of { State# RealWorld
s8 ->
(# State# RealWorld
s8, () #) }}}}}}}}
{-# INLINE poke_registers #-}
pad_registers :: Registers -> Block
pad_registers :: Registers -> Block
pad_registers (R Word32#
w0 Word32#
w1 Word32#
w2 Word32#
w3 Word32#
w4 Word32#
w5 Word32#
w6 Word32#
w7) = Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Block
B
Word32#
w0 Word32#
w1 Word32#
w2 Word32#
w3 Word32#
w4 Word32#
w5 Word32#
w6 Word32#
w7
(Word# -> Word32#
Exts.wordToWord32# Word#
0##) (Word# -> Word32#
Exts.wordToWord32# Word#
0##) (Word# -> Word32#
Exts.wordToWord32# Word#
0##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0##) (Word# -> Word32#
Exts.wordToWord32# Word#
0##) (Word# -> Word32#
Exts.wordToWord32# Word#
0##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0##) (Word# -> Word32#
Exts.wordToWord32# Word#
0##)
{-# INLINE pad_registers #-}
pad_registers_with_length :: Registers -> Block
pad_registers_with_length :: Registers -> Block
pad_registers_with_length (R Word32#
h0 Word32#
h1 Word32#
h2 Word32#
h3 Word32#
h4 Word32#
h5 Word32#
h6 Word32#
h7) = Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Block
B
Word32#
h0 Word32#
h1 Word32#
h2 Word32#
h3 Word32#
h4 Word32#
h5 Word32#
h6 Word32#
h7
(Word# -> Word32#
Exts.wordToWord32# Word#
0x80000000##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0x00000000##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0x00000000##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0x00000000##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0x00000000##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0x00000000##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0x00000000##)
(Word# -> Word32#
Exts.wordToWord32# Word#
0x00000300##)
{-# INLINABLE pad_registers_with_length #-}
xor :: Block -> Exts.Word32# -> Block
xor :: Block -> Word32# -> Block
xor (B Word32#
w00 Word32#
w01 Word32#
w02 Word32#
w03 Word32#
w04 Word32#
w05 Word32#
w06 Word32#
w07 Word32#
w08 Word32#
w09 Word32#
w10 Word32#
w11 Word32#
w12 Word32#
w13 Word32#
w14 Word32#
w15) Word32#
b = Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Block
B
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w00 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w01 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w02 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w03 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w04 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w05 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w06 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w07 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w08 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w09 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w10 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w11 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w12 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w13 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w14 Word32#
b)
(Word32# -> Word32# -> Word32#
Exts.xorWord32# Word32#
w15 Word32#
b)
{-# INLINE xor #-}
parse_key :: BS.ByteString -> Block
parse_key :: ByteString -> Block
parse_key ByteString
bs = Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Block
B
(ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
0) (ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
4) (ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
8) (ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
12)
(ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
16) (ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
20) (ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
24) (ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
28)
(ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
32) (ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
36) (ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
40) (ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
44)
(ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
48) (ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
52) (ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
56) (ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
60)
{-# INLINE parse_key #-}
w32_zero :: BS.ByteString -> Int -> Exts.Word32#
w32_zero :: ByteString -> Int -> Word32#
w32_zero ByteString
bs Int
i =
let !wa :: Word32#
wa = ByteString -> Int -> Word32#
w8_zero ByteString
bs Int
i Word32# -> Int# -> Word32#
`Exts.uncheckedShiftLWord32#` Int#
24#
!wb :: Word32#
wb = ByteString -> Int -> Word32#
w8_zero ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1) Word32# -> Int# -> Word32#
`Exts.uncheckedShiftLWord32#` Int#
16#
!wc :: Word32#
wc = ByteString -> Int -> Word32#
w8_zero ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
2) Word32# -> Int# -> Word32#
`Exts.uncheckedShiftLWord32#` Int#
08#
!wd :: Word32#
wd = ByteString -> Int -> Word32#
w8_zero ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
3)
in Word32#
wa Word32# -> Word32# -> Word32#
`Exts.orWord32#` Word32#
wb Word32# -> Word32# -> Word32#
`Exts.orWord32#` Word32#
wc Word32# -> Word32# -> Word32#
`Exts.orWord32#` Word32#
wd
{-# INLINE w32_zero #-}
w8_zero :: BS.ByteString -> Int -> Exts.Word32#
w8_zero :: ByteString -> Int -> Word32#
w8_zero bs :: ByteString
bs@(BI.PS ForeignPtr Word8
_ Int
_ Int
l) Int
i
| Int
i Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
l = let !(GHC.Word.W8# Word8#
w) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
bs Int
i
in Word# -> Word32#
Exts.wordToWord32# (Word8# -> Word#
Exts.word8ToWord# Word8#
w)
| Bool
otherwise = Word# -> Word32#
Exts.wordToWord32# Word#
0##
{-# INLINE w8_zero #-}
parse_vsb :: Registers -> Word8 -> BS.ByteString -> Block
parse_vsb :: Registers -> Word8 -> ByteString -> Block
parse_vsb (R Word32#
v0 Word32#
v1 Word32#
v2 Word32#
v3 Word32#
v4 Word32#
v5 Word32#
v6 Word32#
v7) (GHC.Word.W8# Word8#
sep) ByteString
dat =
let !(GHC.Word.W8# Word8#
b0) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
dat Int
0
!(GHC.Word.W8# Word8#
b1) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
dat Int
1
!(GHC.Word.W8# Word8#
b2) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
dat Int
2
!w08 :: Word32#
w08 =
Word32# -> Int# -> Word32#
Exts.uncheckedShiftLWord32# (Word8# -> Word32#
w8_w32 Word8#
sep) Int#
24#
Word32# -> Word32# -> Word32#
`Exts.orWord32#`
Word32# -> Int# -> Word32#
Exts.uncheckedShiftLWord32# (Word8# -> Word32#
w8_w32 Word8#
b0) Int#
16#
Word32# -> Word32# -> Word32#
`Exts.orWord32#`
Word32# -> Int# -> Word32#
Exts.uncheckedShiftLWord32# (Word8# -> Word32#
w8_w32 Word8#
b1) Int#
8#
Word32# -> Word32# -> Word32#
`Exts.orWord32#`
Word8# -> Word32#
w8_w32 Word8#
b2
in Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Block
B Word32#
v0 Word32#
v1 Word32#
v2 Word32#
v3 Word32#
v4 Word32#
v5 Word32#
v6 Word32#
v7
Word32#
w08
(ByteString -> Int -> Word32#
word32be ByteString
dat Int
3) (ByteString -> Int -> Word32#
word32be ByteString
dat Int
7) (ByteString -> Int -> Word32#
word32be ByteString
dat Int
11)
(ByteString -> Int -> Word32#
word32be ByteString
dat Int
15) (ByteString -> Int -> Word32#
word32be ByteString
dat Int
19) (ByteString -> Int -> Word32#
word32be ByteString
dat Int
23) (ByteString -> Int -> Word32#
word32be ByteString
dat Int
27)
{-# INLINE parse_vsb #-}
parse_pad1_vsb :: Registers -> Word8 -> BS.ByteString -> Word64 -> Block
parse_pad1_vsb :: Registers -> Word8 -> ByteString -> Word64 -> Block
parse_pad1_vsb (R Word32#
v0 Word32#
v1 Word32#
v2 Word32#
v3 Word32#
v4 Word32#
v5 Word32#
v6 Word32#
v7) Word8
sep ByteString
dat Word64
total =
let !bits :: Word64
bits = Word64
total Word64 -> Word64 -> Word64
forall a. Num a => a -> a -> a
* Word64
8
!(GHC.Word.W32# Word32#
lhi) = Word64 -> Word32
forall a b. (Integral a, Num b) => a -> b
fi (Word64
bits Word64 -> Int -> Word64
forall a. Bits a => a -> Int -> a
`B.unsafeShiftR` Int
32)
!(GHC.Word.W32# Word32#
llo) = Word64 -> Word32
forall a b. (Integral a, Num b) => a -> b
fi Word64
bits
in Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Block
B Word32#
v0 Word32#
v1 Word32#
v2 Word32#
v3 Word32#
v4 Word32#
v5 Word32#
v6 Word32#
v7
(Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
32) (Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
36)
(Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
40) (Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
44)
(Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
48) (Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
52)
Word32#
lhi Word32#
llo
{-# INLINABLE parse_pad1_vsb #-}
parse_pad2_vsb
:: Registers -> Word8 -> BS.ByteString -> Word64 -> (# Block, Block #)
parse_pad2_vsb :: Registers -> Word8 -> ByteString -> Word64 -> (# Block, Block #)
parse_pad2_vsb (R Word32#
v0 Word32#
v1 Word32#
v2 Word32#
v3 Word32#
v4 Word32#
v5 Word32#
v6 Word32#
v7) Word8
sep ByteString
dat Word64
total =
let !bits :: Word64
bits = Word64
total Word64 -> Word64 -> Word64
forall a. Num a => a -> a -> a
* Word64
8
!z :: Word32#
z = Word# -> Word32#
Exts.wordToWord32# Word#
0##
!(GHC.Word.W32# Word32#
lhi) = Word64 -> Word32
forall a b. (Integral a, Num b) => a -> b
fi (Word64
bits Word64 -> Int -> Word64
forall a. Bits a => a -> Int -> a
`B.unsafeShiftR` Int
32)
!(GHC.Word.W32# Word32#
llo) = Word64 -> Word32
forall a b. (Integral a, Num b) => a -> b
fi Word64
bits
!b0 :: Block
b0 = Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Block
B Word32#
v0 Word32#
v1 Word32#
v2 Word32#
v3 Word32#
v4 Word32#
v5 Word32#
v6 Word32#
v7
(Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
32) (Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
36)
(Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
40) (Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
44)
(Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
48) (Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
52)
(Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
56) (Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
60)
!b1 :: Block
b1 = Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Word32#
-> Block
B Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
z Word32#
lhi Word32#
llo
in (# Block
b0, Block
b1 #)
{-# INLINABLE parse_pad2_vsb #-}
w32_sdp :: Word8 -> BS.ByteString -> Int -> Exts.Word32#
w32_sdp :: Word8 -> ByteString -> Int -> Word32#
w32_sdp Word8
sep ByteString
dat Int
i =
let !(GHC.Word.W8# Word8#
a) = Word8 -> ByteString -> Int -> Word8
byte_sdp Word8
sep ByteString
dat Int
i
!(GHC.Word.W8# Word8#
b) = Word8 -> ByteString -> Int -> Word8
byte_sdp Word8
sep ByteString
dat (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1)
!(GHC.Word.W8# Word8#
c) = Word8 -> ByteString -> Int -> Word8
byte_sdp Word8
sep ByteString
dat (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
2)
!(GHC.Word.W8# Word8#
d) = Word8 -> ByteString -> Int -> Word8
byte_sdp Word8
sep ByteString
dat (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
3)
in Word32# -> Int# -> Word32#
Exts.uncheckedShiftLWord32# (Word8# -> Word32#
w8_w32 Word8#
a) Int#
24#
Word32# -> Word32# -> Word32#
`Exts.orWord32#`
Word32# -> Int# -> Word32#
Exts.uncheckedShiftLWord32# (Word8# -> Word32#
w8_w32 Word8#
b) Int#
16#
Word32# -> Word32# -> Word32#
`Exts.orWord32#`
Word32# -> Int# -> Word32#
Exts.uncheckedShiftLWord32# (Word8# -> Word32#
w8_w32 Word8#
c) Int#
8#
Word32# -> Word32# -> Word32#
`Exts.orWord32#`
Word8# -> Word32#
w8_w32 Word8#
d
{-# INLINE w32_sdp #-}
byte_sdp :: Word8 -> BS.ByteString -> Int -> Word8
byte_sdp :: Word8 -> ByteString -> Int -> Word8
byte_sdp Word8
sep dat :: ByteString
dat@(BI.PS ForeignPtr Word8
_ Int
_ Int
l) Int
i
| Int
i Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
32 = Word8
sep
| Int
i Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
33 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
l = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
dat (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
33)
| Int
i Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
33 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
l = Word8
0x80
| Bool
otherwise = Word8
0x00
{-# INLINE byte_sdp #-}
w8_w32 :: Exts.Word8# -> Exts.Word32#
w8_w32 :: Word8# -> Word32#
w8_w32 Word8#
w = Word# -> Word32#
Exts.wordToWord32# (Word8# -> Word#
Exts.word8ToWord# Word8#
w)
{-# INLINE w8_w32 #-}