{-# OPTIONS_HADDOCK hide #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE UnboxedTuples #-}
{-# LANGUAGE UnliftedNewtypes #-}
{-# LANGUAGE ViewPatterns #-}
module Crypto.Hash.SHA512.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, Word64)
import qualified GHC.IO (IO(..))
import GHC.Ptr (Ptr(..))
import GHC.Exts (Int#)
import qualified GHC.Exts as Exts
import qualified GHC.Word (Word64(..), 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.Word64#, Exts.Word64#, Exts.Word64#, Exts.Word64#
, Exts.Word64#, Exts.Word64#, Exts.Word64#, Exts.Word64#
, Exts.Word64#, Exts.Word64#, Exts.Word64#, Exts.Word64#
, Exts.Word64#, Exts.Word64#, Exts.Word64#, Exts.Word64#
#)
pattern B
:: Exts.Word64# -> Exts.Word64# -> Exts.Word64# -> Exts.Word64#
-> Exts.Word64# -> Exts.Word64# -> Exts.Word64# -> Exts.Word64#
-> Exts.Word64# -> Exts.Word64# -> Exts.Word64# -> Exts.Word64#
-> Exts.Word64# -> Exts.Word64# -> Exts.Word64# -> Exts.Word64#
-> Block
pattern $mB :: forall {r}.
Block
-> (Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> r)
-> ((# #) -> r)
-> r
$bB :: Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> 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.Word64#, Exts.Word64#, Exts.Word64#, Exts.Word64#
, Exts.Word64#, Exts.Word64#, Exts.Word64#, Exts.Word64#
#)
pattern R
:: Exts.Word64# -> Exts.Word64# -> Exts.Word64# -> Exts.Word64#
-> Exts.Word64# -> Exts.Word64# -> Exts.Word64# -> Exts.Word64#
-> Registers
pattern $mR :: forall {r}.
Registers
-> (Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> r)
-> ((# #) -> r)
-> r
$bR :: Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
R w00 w01 w02 w03 w04 w05 w06 w07 = Registers
(# w00, w01, w02, w03
, w04, w05, w06, w07
#)
{-# COMPLETE R #-}
parse :: BS.ByteString -> Int -> Block
parse :: ByteString -> Int -> Block
parse ByteString
bs Int
m = Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Block
B
(ByteString -> Int -> Word64#
word64be ByteString
bs Int
m)
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
08))
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
16))
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
24))
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
32))
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
40))
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
48))
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
56))
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
64))
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
72))
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
80))
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
88))
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
96))
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
104))
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
112))
(ByteString -> Int -> Word64#
word64be ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
120))
{-# INLINE parse #-}
word64be :: BS.ByteString -> Int -> Exts.Word64#
word64be :: ByteString -> Int -> Word64#
word64be ByteString
bs Int
m =
let !(GHC.Word.W8# Word8#
r0) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
bs Int
m
!(GHC.Word.W8# Word8#
r1) = 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#
r2) = 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#
r3) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
3)
!(GHC.Word.W8# Word8#
r4) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
4)
!(GHC.Word.W8# Word8#
r5) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
5)
!(GHC.Word.W8# Word8#
r6) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
6)
!(GHC.Word.W8# Word8#
r7) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
bs (Int
m Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
7)
!w0 :: Word#
w0 = Word8# -> Word#
Exts.word8ToWord# Word8#
r0
!w1 :: Word#
w1 = Word8# -> Word#
Exts.word8ToWord# Word8#
r1
!w2 :: Word#
w2 = Word8# -> Word#
Exts.word8ToWord# Word8#
r2
!w3 :: Word#
w3 = Word8# -> Word#
Exts.word8ToWord# Word8#
r3
!w4 :: Word#
w4 = Word8# -> Word#
Exts.word8ToWord# Word8#
r4
!w5 :: Word#
w5 = Word8# -> Word#
Exts.word8ToWord# Word8#
r5
!w6 :: Word#
w6 = Word8# -> Word#
Exts.word8ToWord# Word8#
r6
!w7 :: Word#
w7 = Word8# -> Word#
Exts.word8ToWord# Word8#
r7
!s0 :: Word#
s0 = Word# -> Int# -> Word#
Exts.uncheckedShiftL# Word#
w0 Int#
56#
!s1 :: Word#
s1 = Word# -> Int# -> Word#
Exts.uncheckedShiftL# Word#
w1 Int#
48#
!s2 :: Word#
s2 = Word# -> Int# -> Word#
Exts.uncheckedShiftL# Word#
w2 Int#
40#
!s3 :: Word#
s3 = Word# -> Int# -> Word#
Exts.uncheckedShiftL# Word#
w3 Int#
32#
!s4 :: Word#
s4 = Word# -> Int# -> Word#
Exts.uncheckedShiftL# Word#
w4 Int#
24#
!s5 :: Word#
s5 = Word# -> Int# -> Word#
Exts.uncheckedShiftL# Word#
w5 Int#
16#
!s6 :: Word#
s6 = Word# -> Int# -> Word#
Exts.uncheckedShiftL# Word#
w6 Int#
8#
in Word# -> Word64#
Exts.wordToWord64#
(Word#
s0 Word# -> Word# -> Word#
`Exts.or#` Word#
s1 Word# -> Word# -> Word#
`Exts.or#` Word#
s2 Word# -> Word# -> Word#
`Exts.or#` Word#
s3 Word# -> Word# -> Word#
`Exts.or#`
Word#
s4 Word# -> Word# -> Word#
`Exts.or#` Word#
s5 Word# -> Word# -> Word#
`Exts.or#` Word#
s6 Word# -> Word# -> Word#
`Exts.or#` Word#
w7)
{-# INLINE word64be #-}
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.W64# Word64#
llo) = Word64
bits
in Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Block
B (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
000) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
008) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
016) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
024)
(ByteString -> Int -> Word64#
w64_at ByteString
bs Int
032) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
040) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
048) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
056)
(ByteString -> Int -> Word64#
w64_at ByteString
bs Int
064) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
072) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
080) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
088)
(ByteString -> Int -> Word64#
w64_at ByteString
bs Int
096) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
104) (Word# -> Word64#
Exts.wordToWord64# Word#
0##) Word64#
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 :: Word64#
z = Word# -> Word64#
Exts.wordToWord64# Word#
0##
!(GHC.Word.W64# Word64#
llo) = Word64
bits
!block0 :: Block
block0 = Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Block
B
(ByteString -> Int -> Word64#
w64_at ByteString
bs Int
000) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
008) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
016) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
024)
(ByteString -> Int -> Word64#
w64_at ByteString
bs Int
032) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
040) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
048) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
056)
(ByteString -> Int -> Word64#
w64_at ByteString
bs Int
064) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
072) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
080) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
088)
(ByteString -> Int -> Word64#
w64_at ByteString
bs Int
096) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
104) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
112) (ByteString -> Int -> Word64#
w64_at ByteString
bs Int
120)
!block1 :: Block
block1 = Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Block
B Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
llo
in (# Block
block0, Block
block1 #)
{-# INLINABLE parse_pad2 #-}
w8_as_w64_at
:: BS.ByteString
-> Int
-> Exts.Word#
w8_as_w64_at :: ByteString -> Int -> Word#
w8_as_w64_at bs :: ByteString
bs@(BI.PS ForeignPtr Word8
_ Int
_ Int
l) Int
i = 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_w64_at #-}
w64_at
:: BS.ByteString
-> Int
-> Exts.Word64#
w64_at :: ByteString -> Int -> Word64#
w64_at ByteString
bs Int
i =
let !w0 :: Word#
w0 = ByteString -> Int -> Word#
w8_as_w64_at ByteString
bs Int
i Word# -> Int# -> Word#
`Exts.uncheckedShiftL#` Int#
56#
!w1 :: Word#
w1 = ByteString -> Int -> Word#
w8_as_w64_at ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1) Word# -> Int# -> Word#
`Exts.uncheckedShiftL#` Int#
48#
!w2 :: Word#
w2 = ByteString -> Int -> Word#
w8_as_w64_at ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
2) Word# -> Int# -> Word#
`Exts.uncheckedShiftL#` Int#
40#
!w3 :: Word#
w3 = ByteString -> Int -> Word#
w8_as_w64_at ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
3) Word# -> Int# -> Word#
`Exts.uncheckedShiftL#` Int#
32#
!w4 :: Word#
w4 = ByteString -> Int -> Word#
w8_as_w64_at ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
4) Word# -> Int# -> Word#
`Exts.uncheckedShiftL#` Int#
24#
!w5 :: Word#
w5 = ByteString -> Int -> Word#
w8_as_w64_at ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
5) Word# -> Int# -> Word#
`Exts.uncheckedShiftL#` Int#
16#
!w6 :: Word#
w6 = ByteString -> Int -> Word#
w8_as_w64_at ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
6) Word# -> Int# -> Word#
`Exts.uncheckedShiftL#` Int#
08#
!w7 :: Word#
w7 = ByteString -> Int -> Word#
w8_as_w64_at ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
7)
in Word# -> Word64#
Exts.wordToWord64#
(Word#
w0 Word# -> Word# -> Word#
`Exts.or#` Word#
w1 Word# -> Word# -> Word#
`Exts.or#` Word#
w2 Word# -> Word# -> Word#
`Exts.or#` Word#
w3 Word# -> Word# -> Word#
`Exts.or#`
Word#
w4 Word# -> Word# -> Word#
`Exts.or#` Word#
w5 Word# -> Word# -> Word#
`Exts.or#` Word#
w6 Word# -> Word# -> Word#
`Exts.or#` Word#
w7)
{-# INLINE w64_at #-}
update :: Registers -> Block -> Registers
update :: Registers -> Block -> Registers
update
(R Word64#
h0 Word64#
h1 Word64#
h2 Word64#
h3 Word64#
h4 Word64#
h5 Word64#
h6 Word64#
h7)
(B Word64#
b00 Word64#
b01 Word64#
b02 Word64#
b03 Word64#
b04 Word64#
b05 Word64#
b06 Word64#
b07 Word64#
b08 Word64#
b09 Word64#
b10 Word64#
b11 Word64#
b12 Word64#
b13 Word64#
b14 Word64#
b15)
=
let
!w00 :: Word64#
w00 = Word64#
b00; !w01 :: Word64#
w01 = Word64#
b01; !w02 :: Word64#
w02 = Word64#
b02; !w03 :: Word64#
w03 = Word64#
b03
!w04 :: Word64#
w04 = Word64#
b04; !w05 :: Word64#
w05 = Word64#
b05; !w06 :: Word64#
w06 = Word64#
b06; !w07 :: Word64#
w07 = Word64#
b07
!w08 :: Word64#
w08 = Word64#
b08; !w09 :: Word64#
w09 = Word64#
b09; !w10 :: Word64#
w10 = Word64#
b10; !w11 :: Word64#
w11 = Word64#
b11
!w12 :: Word64#
w12 = Word64#
b12; !w13 :: Word64#
w13 = Word64#
b13; !w14 :: Word64#
w14 = Word64#
b14; !w15 :: Word64#
w15 = Word64#
b15
!w16 :: Word64#
w16 = Word64# -> Word64#
ssig1# Word64#
w14 Word64# -> Word64# -> Word64#
`p` Word64#
w09 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w01 Word64# -> Word64# -> Word64#
`p` Word64#
w00
!w17 :: Word64#
w17 = Word64# -> Word64#
ssig1# Word64#
w15 Word64# -> Word64# -> Word64#
`p` Word64#
w10 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w02 Word64# -> Word64# -> Word64#
`p` Word64#
w01
!w18 :: Word64#
w18 = Word64# -> Word64#
ssig1# Word64#
w16 Word64# -> Word64# -> Word64#
`p` Word64#
w11 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w03 Word64# -> Word64# -> Word64#
`p` Word64#
w02
!w19 :: Word64#
w19 = Word64# -> Word64#
ssig1# Word64#
w17 Word64# -> Word64# -> Word64#
`p` Word64#
w12 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w04 Word64# -> Word64# -> Word64#
`p` Word64#
w03
!w20 :: Word64#
w20 = Word64# -> Word64#
ssig1# Word64#
w18 Word64# -> Word64# -> Word64#
`p` Word64#
w13 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w05 Word64# -> Word64# -> Word64#
`p` Word64#
w04
!w21 :: Word64#
w21 = Word64# -> Word64#
ssig1# Word64#
w19 Word64# -> Word64# -> Word64#
`p` Word64#
w14 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w06 Word64# -> Word64# -> Word64#
`p` Word64#
w05
!w22 :: Word64#
w22 = Word64# -> Word64#
ssig1# Word64#
w20 Word64# -> Word64# -> Word64#
`p` Word64#
w15 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w07 Word64# -> Word64# -> Word64#
`p` Word64#
w06
!w23 :: Word64#
w23 = Word64# -> Word64#
ssig1# Word64#
w21 Word64# -> Word64# -> Word64#
`p` Word64#
w16 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w08 Word64# -> Word64# -> Word64#
`p` Word64#
w07
!w24 :: Word64#
w24 = Word64# -> Word64#
ssig1# Word64#
w22 Word64# -> Word64# -> Word64#
`p` Word64#
w17 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w09 Word64# -> Word64# -> Word64#
`p` Word64#
w08
!w25 :: Word64#
w25 = Word64# -> Word64#
ssig1# Word64#
w23 Word64# -> Word64# -> Word64#
`p` Word64#
w18 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w10 Word64# -> Word64# -> Word64#
`p` Word64#
w09
!w26 :: Word64#
w26 = Word64# -> Word64#
ssig1# Word64#
w24 Word64# -> Word64# -> Word64#
`p` Word64#
w19 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w11 Word64# -> Word64# -> Word64#
`p` Word64#
w10
!w27 :: Word64#
w27 = Word64# -> Word64#
ssig1# Word64#
w25 Word64# -> Word64# -> Word64#
`p` Word64#
w20 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w12 Word64# -> Word64# -> Word64#
`p` Word64#
w11
!w28 :: Word64#
w28 = Word64# -> Word64#
ssig1# Word64#
w26 Word64# -> Word64# -> Word64#
`p` Word64#
w21 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w13 Word64# -> Word64# -> Word64#
`p` Word64#
w12
!w29 :: Word64#
w29 = Word64# -> Word64#
ssig1# Word64#
w27 Word64# -> Word64# -> Word64#
`p` Word64#
w22 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w14 Word64# -> Word64# -> Word64#
`p` Word64#
w13
!w30 :: Word64#
w30 = Word64# -> Word64#
ssig1# Word64#
w28 Word64# -> Word64# -> Word64#
`p` Word64#
w23 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w15 Word64# -> Word64# -> Word64#
`p` Word64#
w14
!w31 :: Word64#
w31 = Word64# -> Word64#
ssig1# Word64#
w29 Word64# -> Word64# -> Word64#
`p` Word64#
w24 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w16 Word64# -> Word64# -> Word64#
`p` Word64#
w15
!w32 :: Word64#
w32 = Word64# -> Word64#
ssig1# Word64#
w30 Word64# -> Word64# -> Word64#
`p` Word64#
w25 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w17 Word64# -> Word64# -> Word64#
`p` Word64#
w16
!w33 :: Word64#
w33 = Word64# -> Word64#
ssig1# Word64#
w31 Word64# -> Word64# -> Word64#
`p` Word64#
w26 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w18 Word64# -> Word64# -> Word64#
`p` Word64#
w17
!w34 :: Word64#
w34 = Word64# -> Word64#
ssig1# Word64#
w32 Word64# -> Word64# -> Word64#
`p` Word64#
w27 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w19 Word64# -> Word64# -> Word64#
`p` Word64#
w18
!w35 :: Word64#
w35 = Word64# -> Word64#
ssig1# Word64#
w33 Word64# -> Word64# -> Word64#
`p` Word64#
w28 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w20 Word64# -> Word64# -> Word64#
`p` Word64#
w19
!w36 :: Word64#
w36 = Word64# -> Word64#
ssig1# Word64#
w34 Word64# -> Word64# -> Word64#
`p` Word64#
w29 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w21 Word64# -> Word64# -> Word64#
`p` Word64#
w20
!w37 :: Word64#
w37 = Word64# -> Word64#
ssig1# Word64#
w35 Word64# -> Word64# -> Word64#
`p` Word64#
w30 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w22 Word64# -> Word64# -> Word64#
`p` Word64#
w21
!w38 :: Word64#
w38 = Word64# -> Word64#
ssig1# Word64#
w36 Word64# -> Word64# -> Word64#
`p` Word64#
w31 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w23 Word64# -> Word64# -> Word64#
`p` Word64#
w22
!w39 :: Word64#
w39 = Word64# -> Word64#
ssig1# Word64#
w37 Word64# -> Word64# -> Word64#
`p` Word64#
w32 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w24 Word64# -> Word64# -> Word64#
`p` Word64#
w23
!w40 :: Word64#
w40 = Word64# -> Word64#
ssig1# Word64#
w38 Word64# -> Word64# -> Word64#
`p` Word64#
w33 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w25 Word64# -> Word64# -> Word64#
`p` Word64#
w24
!w41 :: Word64#
w41 = Word64# -> Word64#
ssig1# Word64#
w39 Word64# -> Word64# -> Word64#
`p` Word64#
w34 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w26 Word64# -> Word64# -> Word64#
`p` Word64#
w25
!w42 :: Word64#
w42 = Word64# -> Word64#
ssig1# Word64#
w40 Word64# -> Word64# -> Word64#
`p` Word64#
w35 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w27 Word64# -> Word64# -> Word64#
`p` Word64#
w26
!w43 :: Word64#
w43 = Word64# -> Word64#
ssig1# Word64#
w41 Word64# -> Word64# -> Word64#
`p` Word64#
w36 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w28 Word64# -> Word64# -> Word64#
`p` Word64#
w27
!w44 :: Word64#
w44 = Word64# -> Word64#
ssig1# Word64#
w42 Word64# -> Word64# -> Word64#
`p` Word64#
w37 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w29 Word64# -> Word64# -> Word64#
`p` Word64#
w28
!w45 :: Word64#
w45 = Word64# -> Word64#
ssig1# Word64#
w43 Word64# -> Word64# -> Word64#
`p` Word64#
w38 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w30 Word64# -> Word64# -> Word64#
`p` Word64#
w29
!w46 :: Word64#
w46 = Word64# -> Word64#
ssig1# Word64#
w44 Word64# -> Word64# -> Word64#
`p` Word64#
w39 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w31 Word64# -> Word64# -> Word64#
`p` Word64#
w30
!w47 :: Word64#
w47 = Word64# -> Word64#
ssig1# Word64#
w45 Word64# -> Word64# -> Word64#
`p` Word64#
w40 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w32 Word64# -> Word64# -> Word64#
`p` Word64#
w31
!w48 :: Word64#
w48 = Word64# -> Word64#
ssig1# Word64#
w46 Word64# -> Word64# -> Word64#
`p` Word64#
w41 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w33 Word64# -> Word64# -> Word64#
`p` Word64#
w32
!w49 :: Word64#
w49 = Word64# -> Word64#
ssig1# Word64#
w47 Word64# -> Word64# -> Word64#
`p` Word64#
w42 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w34 Word64# -> Word64# -> Word64#
`p` Word64#
w33
!w50 :: Word64#
w50 = Word64# -> Word64#
ssig1# Word64#
w48 Word64# -> Word64# -> Word64#
`p` Word64#
w43 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w35 Word64# -> Word64# -> Word64#
`p` Word64#
w34
!w51 :: Word64#
w51 = Word64# -> Word64#
ssig1# Word64#
w49 Word64# -> Word64# -> Word64#
`p` Word64#
w44 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w36 Word64# -> Word64# -> Word64#
`p` Word64#
w35
!w52 :: Word64#
w52 = Word64# -> Word64#
ssig1# Word64#
w50 Word64# -> Word64# -> Word64#
`p` Word64#
w45 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w37 Word64# -> Word64# -> Word64#
`p` Word64#
w36
!w53 :: Word64#
w53 = Word64# -> Word64#
ssig1# Word64#
w51 Word64# -> Word64# -> Word64#
`p` Word64#
w46 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w38 Word64# -> Word64# -> Word64#
`p` Word64#
w37
!w54 :: Word64#
w54 = Word64# -> Word64#
ssig1# Word64#
w52 Word64# -> Word64# -> Word64#
`p` Word64#
w47 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w39 Word64# -> Word64# -> Word64#
`p` Word64#
w38
!w55 :: Word64#
w55 = Word64# -> Word64#
ssig1# Word64#
w53 Word64# -> Word64# -> Word64#
`p` Word64#
w48 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w40 Word64# -> Word64# -> Word64#
`p` Word64#
w39
!w56 :: Word64#
w56 = Word64# -> Word64#
ssig1# Word64#
w54 Word64# -> Word64# -> Word64#
`p` Word64#
w49 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w41 Word64# -> Word64# -> Word64#
`p` Word64#
w40
!w57 :: Word64#
w57 = Word64# -> Word64#
ssig1# Word64#
w55 Word64# -> Word64# -> Word64#
`p` Word64#
w50 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w42 Word64# -> Word64# -> Word64#
`p` Word64#
w41
!w58 :: Word64#
w58 = Word64# -> Word64#
ssig1# Word64#
w56 Word64# -> Word64# -> Word64#
`p` Word64#
w51 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w43 Word64# -> Word64# -> Word64#
`p` Word64#
w42
!w59 :: Word64#
w59 = Word64# -> Word64#
ssig1# Word64#
w57 Word64# -> Word64# -> Word64#
`p` Word64#
w52 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w44 Word64# -> Word64# -> Word64#
`p` Word64#
w43
!w60 :: Word64#
w60 = Word64# -> Word64#
ssig1# Word64#
w58 Word64# -> Word64# -> Word64#
`p` Word64#
w53 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w45 Word64# -> Word64# -> Word64#
`p` Word64#
w44
!w61 :: Word64#
w61 = Word64# -> Word64#
ssig1# Word64#
w59 Word64# -> Word64# -> Word64#
`p` Word64#
w54 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w46 Word64# -> Word64# -> Word64#
`p` Word64#
w45
!w62 :: Word64#
w62 = Word64# -> Word64#
ssig1# Word64#
w60 Word64# -> Word64# -> Word64#
`p` Word64#
w55 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w47 Word64# -> Word64# -> Word64#
`p` Word64#
w46
!w63 :: Word64#
w63 = Word64# -> Word64#
ssig1# Word64#
w61 Word64# -> Word64# -> Word64#
`p` Word64#
w56 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w48 Word64# -> Word64# -> Word64#
`p` Word64#
w47
!w64 :: Word64#
w64 = Word64# -> Word64#
ssig1# Word64#
w62 Word64# -> Word64# -> Word64#
`p` Word64#
w57 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w49 Word64# -> Word64# -> Word64#
`p` Word64#
w48
!w65 :: Word64#
w65 = Word64# -> Word64#
ssig1# Word64#
w63 Word64# -> Word64# -> Word64#
`p` Word64#
w58 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w50 Word64# -> Word64# -> Word64#
`p` Word64#
w49
!w66 :: Word64#
w66 = Word64# -> Word64#
ssig1# Word64#
w64 Word64# -> Word64# -> Word64#
`p` Word64#
w59 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w51 Word64# -> Word64# -> Word64#
`p` Word64#
w50
!w67 :: Word64#
w67 = Word64# -> Word64#
ssig1# Word64#
w65 Word64# -> Word64# -> Word64#
`p` Word64#
w60 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w52 Word64# -> Word64# -> Word64#
`p` Word64#
w51
!w68 :: Word64#
w68 = Word64# -> Word64#
ssig1# Word64#
w66 Word64# -> Word64# -> Word64#
`p` Word64#
w61 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w53 Word64# -> Word64# -> Word64#
`p` Word64#
w52
!w69 :: Word64#
w69 = Word64# -> Word64#
ssig1# Word64#
w67 Word64# -> Word64# -> Word64#
`p` Word64#
w62 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w54 Word64# -> Word64# -> Word64#
`p` Word64#
w53
!w70 :: Word64#
w70 = Word64# -> Word64#
ssig1# Word64#
w68 Word64# -> Word64# -> Word64#
`p` Word64#
w63 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w55 Word64# -> Word64# -> Word64#
`p` Word64#
w54
!w71 :: Word64#
w71 = Word64# -> Word64#
ssig1# Word64#
w69 Word64# -> Word64# -> Word64#
`p` Word64#
w64 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w56 Word64# -> Word64# -> Word64#
`p` Word64#
w55
!w72 :: Word64#
w72 = Word64# -> Word64#
ssig1# Word64#
w70 Word64# -> Word64# -> Word64#
`p` Word64#
w65 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w57 Word64# -> Word64# -> Word64#
`p` Word64#
w56
!w73 :: Word64#
w73 = Word64# -> Word64#
ssig1# Word64#
w71 Word64# -> Word64# -> Word64#
`p` Word64#
w66 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w58 Word64# -> Word64# -> Word64#
`p` Word64#
w57
!w74 :: Word64#
w74 = Word64# -> Word64#
ssig1# Word64#
w72 Word64# -> Word64# -> Word64#
`p` Word64#
w67 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w59 Word64# -> Word64# -> Word64#
`p` Word64#
w58
!w75 :: Word64#
w75 = Word64# -> Word64#
ssig1# Word64#
w73 Word64# -> Word64# -> Word64#
`p` Word64#
w68 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w60 Word64# -> Word64# -> Word64#
`p` Word64#
w59
!w76 :: Word64#
w76 = Word64# -> Word64#
ssig1# Word64#
w74 Word64# -> Word64# -> Word64#
`p` Word64#
w69 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w61 Word64# -> Word64# -> Word64#
`p` Word64#
w60
!w77 :: Word64#
w77 = Word64# -> Word64#
ssig1# Word64#
w75 Word64# -> Word64# -> Word64#
`p` Word64#
w70 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w62 Word64# -> Word64# -> Word64#
`p` Word64#
w61
!w78 :: Word64#
w78 = Word64# -> Word64#
ssig1# Word64#
w76 Word64# -> Word64# -> Word64#
`p` Word64#
w71 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w63 Word64# -> Word64# -> Word64#
`p` Word64#
w62
!w79 :: Word64#
w79 = Word64# -> Word64#
ssig1# Word64#
w77 Word64# -> Word64# -> Word64#
`p` Word64#
w72 Word64# -> Word64# -> Word64#
`p` Word64# -> Word64#
ssig0# Word64#
w64 Word64# -> Word64# -> Word64#
`p` Word64#
w63
!(R Word64#
s00a Word64#
s00b Word64#
s00c Word64#
s00d Word64#
s00e Word64#
s00f Word64#
s00g Word64#
s00h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
h0 Word64#
h1 Word64#
h2 Word64#
h3 Word64#
h4 Word64#
h5 Word64#
h6 Word64#
h7 (Word# -> Word64#
k Word#
0x428a2f98d728ae22##) Word64#
w00
!(R Word64#
s01a Word64#
s01b Word64#
s01c Word64#
s01d Word64#
s01e Word64#
s01f Word64#
s01g Word64#
s01h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s00a Word64#
s00b Word64#
s00c Word64#
s00d Word64#
s00e Word64#
s00f Word64#
s00g Word64#
s00h
(Word# -> Word64#
k Word#
0x7137449123ef65cd##) Word64#
w01
!(R Word64#
s02a Word64#
s02b Word64#
s02c Word64#
s02d Word64#
s02e Word64#
s02f Word64#
s02g Word64#
s02h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s01a Word64#
s01b Word64#
s01c Word64#
s01d Word64#
s01e Word64#
s01f Word64#
s01g Word64#
s01h
(Word# -> Word64#
k Word#
0xb5c0fbcfec4d3b2f##) Word64#
w02
!(R Word64#
s03a Word64#
s03b Word64#
s03c Word64#
s03d Word64#
s03e Word64#
s03f Word64#
s03g Word64#
s03h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s02a Word64#
s02b Word64#
s02c Word64#
s02d Word64#
s02e Word64#
s02f Word64#
s02g Word64#
s02h
(Word# -> Word64#
k Word#
0xe9b5dba58189dbbc##) Word64#
w03
!(R Word64#
s04a Word64#
s04b Word64#
s04c Word64#
s04d Word64#
s04e Word64#
s04f Word64#
s04g Word64#
s04h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s03a Word64#
s03b Word64#
s03c Word64#
s03d Word64#
s03e Word64#
s03f Word64#
s03g Word64#
s03h
(Word# -> Word64#
k Word#
0x3956c25bf348b538##) Word64#
w04
!(R Word64#
s05a Word64#
s05b Word64#
s05c Word64#
s05d Word64#
s05e Word64#
s05f Word64#
s05g Word64#
s05h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s04a Word64#
s04b Word64#
s04c Word64#
s04d Word64#
s04e Word64#
s04f Word64#
s04g Word64#
s04h
(Word# -> Word64#
k Word#
0x59f111f1b605d019##) Word64#
w05
!(R Word64#
s06a Word64#
s06b Word64#
s06c Word64#
s06d Word64#
s06e Word64#
s06f Word64#
s06g Word64#
s06h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s05a Word64#
s05b Word64#
s05c Word64#
s05d Word64#
s05e Word64#
s05f Word64#
s05g Word64#
s05h
(Word# -> Word64#
k Word#
0x923f82a4af194f9b##) Word64#
w06
!(R Word64#
s07a Word64#
s07b Word64#
s07c Word64#
s07d Word64#
s07e Word64#
s07f Word64#
s07g Word64#
s07h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s06a Word64#
s06b Word64#
s06c Word64#
s06d Word64#
s06e Word64#
s06f Word64#
s06g Word64#
s06h
(Word# -> Word64#
k Word#
0xab1c5ed5da6d8118##) Word64#
w07
!(R Word64#
s08a Word64#
s08b Word64#
s08c Word64#
s08d Word64#
s08e Word64#
s08f Word64#
s08g Word64#
s08h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s07a Word64#
s07b Word64#
s07c Word64#
s07d Word64#
s07e Word64#
s07f Word64#
s07g Word64#
s07h
(Word# -> Word64#
k Word#
0xd807aa98a3030242##) Word64#
w08
!(R Word64#
s09a Word64#
s09b Word64#
s09c Word64#
s09d Word64#
s09e Word64#
s09f Word64#
s09g Word64#
s09h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s08a Word64#
s08b Word64#
s08c Word64#
s08d Word64#
s08e Word64#
s08f Word64#
s08g Word64#
s08h
(Word# -> Word64#
k Word#
0x12835b0145706fbe##) Word64#
w09
!(R Word64#
s10a Word64#
s10b Word64#
s10c Word64#
s10d Word64#
s10e Word64#
s10f Word64#
s10g Word64#
s10h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s09a Word64#
s09b Word64#
s09c Word64#
s09d Word64#
s09e Word64#
s09f Word64#
s09g Word64#
s09h
(Word# -> Word64#
k Word#
0x243185be4ee4b28c##) Word64#
w10
!(R Word64#
s11a Word64#
s11b Word64#
s11c Word64#
s11d Word64#
s11e Word64#
s11f Word64#
s11g Word64#
s11h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s10a Word64#
s10b Word64#
s10c Word64#
s10d Word64#
s10e Word64#
s10f Word64#
s10g Word64#
s10h
(Word# -> Word64#
k Word#
0x550c7dc3d5ffb4e2##) Word64#
w11
!(R Word64#
s12a Word64#
s12b Word64#
s12c Word64#
s12d Word64#
s12e Word64#
s12f Word64#
s12g Word64#
s12h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s11a Word64#
s11b Word64#
s11c Word64#
s11d Word64#
s11e Word64#
s11f Word64#
s11g Word64#
s11h
(Word# -> Word64#
k Word#
0x72be5d74f27b896f##) Word64#
w12
!(R Word64#
s13a Word64#
s13b Word64#
s13c Word64#
s13d Word64#
s13e Word64#
s13f Word64#
s13g Word64#
s13h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s12a Word64#
s12b Word64#
s12c Word64#
s12d Word64#
s12e Word64#
s12f Word64#
s12g Word64#
s12h
(Word# -> Word64#
k Word#
0x80deb1fe3b1696b1##) Word64#
w13
!(R Word64#
s14a Word64#
s14b Word64#
s14c Word64#
s14d Word64#
s14e Word64#
s14f Word64#
s14g Word64#
s14h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s13a Word64#
s13b Word64#
s13c Word64#
s13d Word64#
s13e Word64#
s13f Word64#
s13g Word64#
s13h
(Word# -> Word64#
k Word#
0x9bdc06a725c71235##) Word64#
w14
!(R Word64#
s15a Word64#
s15b Word64#
s15c Word64#
s15d Word64#
s15e Word64#
s15f Word64#
s15g Word64#
s15h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s14a Word64#
s14b Word64#
s14c Word64#
s14d Word64#
s14e Word64#
s14f Word64#
s14g Word64#
s14h
(Word# -> Word64#
k Word#
0xc19bf174cf692694##) Word64#
w15
!(R Word64#
s16a Word64#
s16b Word64#
s16c Word64#
s16d Word64#
s16e Word64#
s16f Word64#
s16g Word64#
s16h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s15a Word64#
s15b Word64#
s15c Word64#
s15d Word64#
s15e Word64#
s15f Word64#
s15g Word64#
s15h
(Word# -> Word64#
k Word#
0xe49b69c19ef14ad2##) Word64#
w16
!(R Word64#
s17a Word64#
s17b Word64#
s17c Word64#
s17d Word64#
s17e Word64#
s17f Word64#
s17g Word64#
s17h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s16a Word64#
s16b Word64#
s16c Word64#
s16d Word64#
s16e Word64#
s16f Word64#
s16g Word64#
s16h
(Word# -> Word64#
k Word#
0xefbe4786384f25e3##) Word64#
w17
!(R Word64#
s18a Word64#
s18b Word64#
s18c Word64#
s18d Word64#
s18e Word64#
s18f Word64#
s18g Word64#
s18h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s17a Word64#
s17b Word64#
s17c Word64#
s17d Word64#
s17e Word64#
s17f Word64#
s17g Word64#
s17h
(Word# -> Word64#
k Word#
0x0fc19dc68b8cd5b5##) Word64#
w18
!(R Word64#
s19a Word64#
s19b Word64#
s19c Word64#
s19d Word64#
s19e Word64#
s19f Word64#
s19g Word64#
s19h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s18a Word64#
s18b Word64#
s18c Word64#
s18d Word64#
s18e Word64#
s18f Word64#
s18g Word64#
s18h
(Word# -> Word64#
k Word#
0x240ca1cc77ac9c65##) Word64#
w19
!(R Word64#
s20a Word64#
s20b Word64#
s20c Word64#
s20d Word64#
s20e Word64#
s20f Word64#
s20g Word64#
s20h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s19a Word64#
s19b Word64#
s19c Word64#
s19d Word64#
s19e Word64#
s19f Word64#
s19g Word64#
s19h
(Word# -> Word64#
k Word#
0x2de92c6f592b0275##) Word64#
w20
!(R Word64#
s21a Word64#
s21b Word64#
s21c Word64#
s21d Word64#
s21e Word64#
s21f Word64#
s21g Word64#
s21h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s20a Word64#
s20b Word64#
s20c Word64#
s20d Word64#
s20e Word64#
s20f Word64#
s20g Word64#
s20h
(Word# -> Word64#
k Word#
0x4a7484aa6ea6e483##) Word64#
w21
!(R Word64#
s22a Word64#
s22b Word64#
s22c Word64#
s22d Word64#
s22e Word64#
s22f Word64#
s22g Word64#
s22h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s21a Word64#
s21b Word64#
s21c Word64#
s21d Word64#
s21e Word64#
s21f Word64#
s21g Word64#
s21h
(Word# -> Word64#
k Word#
0x5cb0a9dcbd41fbd4##) Word64#
w22
!(R Word64#
s23a Word64#
s23b Word64#
s23c Word64#
s23d Word64#
s23e Word64#
s23f Word64#
s23g Word64#
s23h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s22a Word64#
s22b Word64#
s22c Word64#
s22d Word64#
s22e Word64#
s22f Word64#
s22g Word64#
s22h
(Word# -> Word64#
k Word#
0x76f988da831153b5##) Word64#
w23
!(R Word64#
s24a Word64#
s24b Word64#
s24c Word64#
s24d Word64#
s24e Word64#
s24f Word64#
s24g Word64#
s24h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s23a Word64#
s23b Word64#
s23c Word64#
s23d Word64#
s23e Word64#
s23f Word64#
s23g Word64#
s23h
(Word# -> Word64#
k Word#
0x983e5152ee66dfab##) Word64#
w24
!(R Word64#
s25a Word64#
s25b Word64#
s25c Word64#
s25d Word64#
s25e Word64#
s25f Word64#
s25g Word64#
s25h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s24a Word64#
s24b Word64#
s24c Word64#
s24d Word64#
s24e Word64#
s24f Word64#
s24g Word64#
s24h
(Word# -> Word64#
k Word#
0xa831c66d2db43210##) Word64#
w25
!(R Word64#
s26a Word64#
s26b Word64#
s26c Word64#
s26d Word64#
s26e Word64#
s26f Word64#
s26g Word64#
s26h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s25a Word64#
s25b Word64#
s25c Word64#
s25d Word64#
s25e Word64#
s25f Word64#
s25g Word64#
s25h
(Word# -> Word64#
k Word#
0xb00327c898fb213f##) Word64#
w26
!(R Word64#
s27a Word64#
s27b Word64#
s27c Word64#
s27d Word64#
s27e Word64#
s27f Word64#
s27g Word64#
s27h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s26a Word64#
s26b Word64#
s26c Word64#
s26d Word64#
s26e Word64#
s26f Word64#
s26g Word64#
s26h
(Word# -> Word64#
k Word#
0xbf597fc7beef0ee4##) Word64#
w27
!(R Word64#
s28a Word64#
s28b Word64#
s28c Word64#
s28d Word64#
s28e Word64#
s28f Word64#
s28g Word64#
s28h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s27a Word64#
s27b Word64#
s27c Word64#
s27d Word64#
s27e Word64#
s27f Word64#
s27g Word64#
s27h
(Word# -> Word64#
k Word#
0xc6e00bf33da88fc2##) Word64#
w28
!(R Word64#
s29a Word64#
s29b Word64#
s29c Word64#
s29d Word64#
s29e Word64#
s29f Word64#
s29g Word64#
s29h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s28a Word64#
s28b Word64#
s28c Word64#
s28d Word64#
s28e Word64#
s28f Word64#
s28g Word64#
s28h
(Word# -> Word64#
k Word#
0xd5a79147930aa725##) Word64#
w29
!(R Word64#
s30a Word64#
s30b Word64#
s30c Word64#
s30d Word64#
s30e Word64#
s30f Word64#
s30g Word64#
s30h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s29a Word64#
s29b Word64#
s29c Word64#
s29d Word64#
s29e Word64#
s29f Word64#
s29g Word64#
s29h
(Word# -> Word64#
k Word#
0x06ca6351e003826f##) Word64#
w30
!(R Word64#
s31a Word64#
s31b Word64#
s31c Word64#
s31d Word64#
s31e Word64#
s31f Word64#
s31g Word64#
s31h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s30a Word64#
s30b Word64#
s30c Word64#
s30d Word64#
s30e Word64#
s30f Word64#
s30g Word64#
s30h
(Word# -> Word64#
k Word#
0x142929670a0e6e70##) Word64#
w31
!(R Word64#
s32a Word64#
s32b Word64#
s32c Word64#
s32d Word64#
s32e Word64#
s32f Word64#
s32g Word64#
s32h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s31a Word64#
s31b Word64#
s31c Word64#
s31d Word64#
s31e Word64#
s31f Word64#
s31g Word64#
s31h
(Word# -> Word64#
k Word#
0x27b70a8546d22ffc##) Word64#
w32
!(R Word64#
s33a Word64#
s33b Word64#
s33c Word64#
s33d Word64#
s33e Word64#
s33f Word64#
s33g Word64#
s33h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s32a Word64#
s32b Word64#
s32c Word64#
s32d Word64#
s32e Word64#
s32f Word64#
s32g Word64#
s32h
(Word# -> Word64#
k Word#
0x2e1b21385c26c926##) Word64#
w33
!(R Word64#
s34a Word64#
s34b Word64#
s34c Word64#
s34d Word64#
s34e Word64#
s34f Word64#
s34g Word64#
s34h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s33a Word64#
s33b Word64#
s33c Word64#
s33d Word64#
s33e Word64#
s33f Word64#
s33g Word64#
s33h
(Word# -> Word64#
k Word#
0x4d2c6dfc5ac42aed##) Word64#
w34
!(R Word64#
s35a Word64#
s35b Word64#
s35c Word64#
s35d Word64#
s35e Word64#
s35f Word64#
s35g Word64#
s35h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s34a Word64#
s34b Word64#
s34c Word64#
s34d Word64#
s34e Word64#
s34f Word64#
s34g Word64#
s34h
(Word# -> Word64#
k Word#
0x53380d139d95b3df##) Word64#
w35
!(R Word64#
s36a Word64#
s36b Word64#
s36c Word64#
s36d Word64#
s36e Word64#
s36f Word64#
s36g Word64#
s36h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s35a Word64#
s35b Word64#
s35c Word64#
s35d Word64#
s35e Word64#
s35f Word64#
s35g Word64#
s35h
(Word# -> Word64#
k Word#
0x650a73548baf63de##) Word64#
w36
!(R Word64#
s37a Word64#
s37b Word64#
s37c Word64#
s37d Word64#
s37e Word64#
s37f Word64#
s37g Word64#
s37h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s36a Word64#
s36b Word64#
s36c Word64#
s36d Word64#
s36e Word64#
s36f Word64#
s36g Word64#
s36h
(Word# -> Word64#
k Word#
0x766a0abb3c77b2a8##) Word64#
w37
!(R Word64#
s38a Word64#
s38b Word64#
s38c Word64#
s38d Word64#
s38e Word64#
s38f Word64#
s38g Word64#
s38h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s37a Word64#
s37b Word64#
s37c Word64#
s37d Word64#
s37e Word64#
s37f Word64#
s37g Word64#
s37h
(Word# -> Word64#
k Word#
0x81c2c92e47edaee6##) Word64#
w38
!(R Word64#
s39a Word64#
s39b Word64#
s39c Word64#
s39d Word64#
s39e Word64#
s39f Word64#
s39g Word64#
s39h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s38a Word64#
s38b Word64#
s38c Word64#
s38d Word64#
s38e Word64#
s38f Word64#
s38g Word64#
s38h
(Word# -> Word64#
k Word#
0x92722c851482353b##) Word64#
w39
!(R Word64#
s40a Word64#
s40b Word64#
s40c Word64#
s40d Word64#
s40e Word64#
s40f Word64#
s40g Word64#
s40h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s39a Word64#
s39b Word64#
s39c Word64#
s39d Word64#
s39e Word64#
s39f Word64#
s39g Word64#
s39h
(Word# -> Word64#
k Word#
0xa2bfe8a14cf10364##) Word64#
w40
!(R Word64#
s41a Word64#
s41b Word64#
s41c Word64#
s41d Word64#
s41e Word64#
s41f Word64#
s41g Word64#
s41h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s40a Word64#
s40b Word64#
s40c Word64#
s40d Word64#
s40e Word64#
s40f Word64#
s40g Word64#
s40h
(Word# -> Word64#
k Word#
0xa81a664bbc423001##) Word64#
w41
!(R Word64#
s42a Word64#
s42b Word64#
s42c Word64#
s42d Word64#
s42e Word64#
s42f Word64#
s42g Word64#
s42h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s41a Word64#
s41b Word64#
s41c Word64#
s41d Word64#
s41e Word64#
s41f Word64#
s41g Word64#
s41h
(Word# -> Word64#
k Word#
0xc24b8b70d0f89791##) Word64#
w42
!(R Word64#
s43a Word64#
s43b Word64#
s43c Word64#
s43d Word64#
s43e Word64#
s43f Word64#
s43g Word64#
s43h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s42a Word64#
s42b Word64#
s42c Word64#
s42d Word64#
s42e Word64#
s42f Word64#
s42g Word64#
s42h
(Word# -> Word64#
k Word#
0xc76c51a30654be30##) Word64#
w43
!(R Word64#
s44a Word64#
s44b Word64#
s44c Word64#
s44d Word64#
s44e Word64#
s44f Word64#
s44g Word64#
s44h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s43a Word64#
s43b Word64#
s43c Word64#
s43d Word64#
s43e Word64#
s43f Word64#
s43g Word64#
s43h
(Word# -> Word64#
k Word#
0xd192e819d6ef5218##) Word64#
w44
!(R Word64#
s45a Word64#
s45b Word64#
s45c Word64#
s45d Word64#
s45e Word64#
s45f Word64#
s45g Word64#
s45h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s44a Word64#
s44b Word64#
s44c Word64#
s44d Word64#
s44e Word64#
s44f Word64#
s44g Word64#
s44h
(Word# -> Word64#
k Word#
0xd69906245565a910##) Word64#
w45
!(R Word64#
s46a Word64#
s46b Word64#
s46c Word64#
s46d Word64#
s46e Word64#
s46f Word64#
s46g Word64#
s46h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s45a Word64#
s45b Word64#
s45c Word64#
s45d Word64#
s45e Word64#
s45f Word64#
s45g Word64#
s45h
(Word# -> Word64#
k Word#
0xf40e35855771202a##) Word64#
w46
!(R Word64#
s47a Word64#
s47b Word64#
s47c Word64#
s47d Word64#
s47e Word64#
s47f Word64#
s47g Word64#
s47h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s46a Word64#
s46b Word64#
s46c Word64#
s46d Word64#
s46e Word64#
s46f Word64#
s46g Word64#
s46h
(Word# -> Word64#
k Word#
0x106aa07032bbd1b8##) Word64#
w47
!(R Word64#
s48a Word64#
s48b Word64#
s48c Word64#
s48d Word64#
s48e Word64#
s48f Word64#
s48g Word64#
s48h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s47a Word64#
s47b Word64#
s47c Word64#
s47d Word64#
s47e Word64#
s47f Word64#
s47g Word64#
s47h
(Word# -> Word64#
k Word#
0x19a4c116b8d2d0c8##) Word64#
w48
!(R Word64#
s49a Word64#
s49b Word64#
s49c Word64#
s49d Word64#
s49e Word64#
s49f Word64#
s49g Word64#
s49h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s48a Word64#
s48b Word64#
s48c Word64#
s48d Word64#
s48e Word64#
s48f Word64#
s48g Word64#
s48h
(Word# -> Word64#
k Word#
0x1e376c085141ab53##) Word64#
w49
!(R Word64#
s50a Word64#
s50b Word64#
s50c Word64#
s50d Word64#
s50e Word64#
s50f Word64#
s50g Word64#
s50h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s49a Word64#
s49b Word64#
s49c Word64#
s49d Word64#
s49e Word64#
s49f Word64#
s49g Word64#
s49h
(Word# -> Word64#
k Word#
0x2748774cdf8eeb99##) Word64#
w50
!(R Word64#
s51a Word64#
s51b Word64#
s51c Word64#
s51d Word64#
s51e Word64#
s51f Word64#
s51g Word64#
s51h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s50a Word64#
s50b Word64#
s50c Word64#
s50d Word64#
s50e Word64#
s50f Word64#
s50g Word64#
s50h
(Word# -> Word64#
k Word#
0x34b0bcb5e19b48a8##) Word64#
w51
!(R Word64#
s52a Word64#
s52b Word64#
s52c Word64#
s52d Word64#
s52e Word64#
s52f Word64#
s52g Word64#
s52h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s51a Word64#
s51b Word64#
s51c Word64#
s51d Word64#
s51e Word64#
s51f Word64#
s51g Word64#
s51h
(Word# -> Word64#
k Word#
0x391c0cb3c5c95a63##) Word64#
w52
!(R Word64#
s53a Word64#
s53b Word64#
s53c Word64#
s53d Word64#
s53e Word64#
s53f Word64#
s53g Word64#
s53h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s52a Word64#
s52b Word64#
s52c Word64#
s52d Word64#
s52e Word64#
s52f Word64#
s52g Word64#
s52h
(Word# -> Word64#
k Word#
0x4ed8aa4ae3418acb##) Word64#
w53
!(R Word64#
s54a Word64#
s54b Word64#
s54c Word64#
s54d Word64#
s54e Word64#
s54f Word64#
s54g Word64#
s54h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s53a Word64#
s53b Word64#
s53c Word64#
s53d Word64#
s53e Word64#
s53f Word64#
s53g Word64#
s53h
(Word# -> Word64#
k Word#
0x5b9cca4f7763e373##) Word64#
w54
!(R Word64#
s55a Word64#
s55b Word64#
s55c Word64#
s55d Word64#
s55e Word64#
s55f Word64#
s55g Word64#
s55h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s54a Word64#
s54b Word64#
s54c Word64#
s54d Word64#
s54e Word64#
s54f Word64#
s54g Word64#
s54h
(Word# -> Word64#
k Word#
0x682e6ff3d6b2b8a3##) Word64#
w55
!(R Word64#
s56a Word64#
s56b Word64#
s56c Word64#
s56d Word64#
s56e Word64#
s56f Word64#
s56g Word64#
s56h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s55a Word64#
s55b Word64#
s55c Word64#
s55d Word64#
s55e Word64#
s55f Word64#
s55g Word64#
s55h
(Word# -> Word64#
k Word#
0x748f82ee5defb2fc##) Word64#
w56
!(R Word64#
s57a Word64#
s57b Word64#
s57c Word64#
s57d Word64#
s57e Word64#
s57f Word64#
s57g Word64#
s57h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s56a Word64#
s56b Word64#
s56c Word64#
s56d Word64#
s56e Word64#
s56f Word64#
s56g Word64#
s56h
(Word# -> Word64#
k Word#
0x78a5636f43172f60##) Word64#
w57
!(R Word64#
s58a Word64#
s58b Word64#
s58c Word64#
s58d Word64#
s58e Word64#
s58f Word64#
s58g Word64#
s58h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s57a Word64#
s57b Word64#
s57c Word64#
s57d Word64#
s57e Word64#
s57f Word64#
s57g Word64#
s57h
(Word# -> Word64#
k Word#
0x84c87814a1f0ab72##) Word64#
w58
!(R Word64#
s59a Word64#
s59b Word64#
s59c Word64#
s59d Word64#
s59e Word64#
s59f Word64#
s59g Word64#
s59h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s58a Word64#
s58b Word64#
s58c Word64#
s58d Word64#
s58e Word64#
s58f Word64#
s58g Word64#
s58h
(Word# -> Word64#
k Word#
0x8cc702081a6439ec##) Word64#
w59
!(R Word64#
s60a Word64#
s60b Word64#
s60c Word64#
s60d Word64#
s60e Word64#
s60f Word64#
s60g Word64#
s60h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s59a Word64#
s59b Word64#
s59c Word64#
s59d Word64#
s59e Word64#
s59f Word64#
s59g Word64#
s59h
(Word# -> Word64#
k Word#
0x90befffa23631e28##) Word64#
w60
!(R Word64#
s61a Word64#
s61b Word64#
s61c Word64#
s61d Word64#
s61e Word64#
s61f Word64#
s61g Word64#
s61h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s60a Word64#
s60b Word64#
s60c Word64#
s60d Word64#
s60e Word64#
s60f Word64#
s60g Word64#
s60h
(Word# -> Word64#
k Word#
0xa4506cebde82bde9##) Word64#
w61
!(R Word64#
s62a Word64#
s62b Word64#
s62c Word64#
s62d Word64#
s62e Word64#
s62f Word64#
s62g Word64#
s62h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s61a Word64#
s61b Word64#
s61c Word64#
s61d Word64#
s61e Word64#
s61f Word64#
s61g Word64#
s61h
(Word# -> Word64#
k Word#
0xbef9a3f7b2c67915##) Word64#
w62
!(R Word64#
s63a Word64#
s63b Word64#
s63c Word64#
s63d Word64#
s63e Word64#
s63f Word64#
s63g Word64#
s63h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s62a Word64#
s62b Word64#
s62c Word64#
s62d Word64#
s62e Word64#
s62f Word64#
s62g Word64#
s62h
(Word# -> Word64#
k Word#
0xc67178f2e372532b##) Word64#
w63
!(R Word64#
s64a Word64#
s64b Word64#
s64c Word64#
s64d Word64#
s64e Word64#
s64f Word64#
s64g Word64#
s64h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s63a Word64#
s63b Word64#
s63c Word64#
s63d Word64#
s63e Word64#
s63f Word64#
s63g Word64#
s63h
(Word# -> Word64#
k Word#
0xca273eceea26619c##) Word64#
w64
!(R Word64#
s65a Word64#
s65b Word64#
s65c Word64#
s65d Word64#
s65e Word64#
s65f Word64#
s65g Word64#
s65h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s64a Word64#
s64b Word64#
s64c Word64#
s64d Word64#
s64e Word64#
s64f Word64#
s64g Word64#
s64h
(Word# -> Word64#
k Word#
0xd186b8c721c0c207##) Word64#
w65
!(R Word64#
s66a Word64#
s66b Word64#
s66c Word64#
s66d Word64#
s66e Word64#
s66f Word64#
s66g Word64#
s66h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s65a Word64#
s65b Word64#
s65c Word64#
s65d Word64#
s65e Word64#
s65f Word64#
s65g Word64#
s65h
(Word# -> Word64#
k Word#
0xeada7dd6cde0eb1e##) Word64#
w66
!(R Word64#
s67a Word64#
s67b Word64#
s67c Word64#
s67d Word64#
s67e Word64#
s67f Word64#
s67g Word64#
s67h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s66a Word64#
s66b Word64#
s66c Word64#
s66d Word64#
s66e Word64#
s66f Word64#
s66g Word64#
s66h
(Word# -> Word64#
k Word#
0xf57d4f7fee6ed178##) Word64#
w67
!(R Word64#
s68a Word64#
s68b Word64#
s68c Word64#
s68d Word64#
s68e Word64#
s68f Word64#
s68g Word64#
s68h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s67a Word64#
s67b Word64#
s67c Word64#
s67d Word64#
s67e Word64#
s67f Word64#
s67g Word64#
s67h
(Word# -> Word64#
k Word#
0x06f067aa72176fba##) Word64#
w68
!(R Word64#
s69a Word64#
s69b Word64#
s69c Word64#
s69d Word64#
s69e Word64#
s69f Word64#
s69g Word64#
s69h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s68a Word64#
s68b Word64#
s68c Word64#
s68d Word64#
s68e Word64#
s68f Word64#
s68g Word64#
s68h
(Word# -> Word64#
k Word#
0x0a637dc5a2c898a6##) Word64#
w69
!(R Word64#
s70a Word64#
s70b Word64#
s70c Word64#
s70d Word64#
s70e Word64#
s70f Word64#
s70g Word64#
s70h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s69a Word64#
s69b Word64#
s69c Word64#
s69d Word64#
s69e Word64#
s69f Word64#
s69g Word64#
s69h
(Word# -> Word64#
k Word#
0x113f9804bef90dae##) Word64#
w70
!(R Word64#
s71a Word64#
s71b Word64#
s71c Word64#
s71d Word64#
s71e Word64#
s71f Word64#
s71g Word64#
s71h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s70a Word64#
s70b Word64#
s70c Word64#
s70d Word64#
s70e Word64#
s70f Word64#
s70g Word64#
s70h
(Word# -> Word64#
k Word#
0x1b710b35131c471b##) Word64#
w71
!(R Word64#
s72a Word64#
s72b Word64#
s72c Word64#
s72d Word64#
s72e Word64#
s72f Word64#
s72g Word64#
s72h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s71a Word64#
s71b Word64#
s71c Word64#
s71d Word64#
s71e Word64#
s71f Word64#
s71g Word64#
s71h
(Word# -> Word64#
k Word#
0x28db77f523047d84##) Word64#
w72
!(R Word64#
s73a Word64#
s73b Word64#
s73c Word64#
s73d Word64#
s73e Word64#
s73f Word64#
s73g Word64#
s73h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s72a Word64#
s72b Word64#
s72c Word64#
s72d Word64#
s72e Word64#
s72f Word64#
s72g Word64#
s72h
(Word# -> Word64#
k Word#
0x32caab7b40c72493##) Word64#
w73
!(R Word64#
s74a Word64#
s74b Word64#
s74c Word64#
s74d Word64#
s74e Word64#
s74f Word64#
s74g Word64#
s74h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s73a Word64#
s73b Word64#
s73c Word64#
s73d Word64#
s73e Word64#
s73f Word64#
s73g Word64#
s73h
(Word# -> Word64#
k Word#
0x3c9ebe0a15c9bebc##) Word64#
w74
!(R Word64#
s75a Word64#
s75b Word64#
s75c Word64#
s75d Word64#
s75e Word64#
s75f Word64#
s75g Word64#
s75h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s74a Word64#
s74b Word64#
s74c Word64#
s74d Word64#
s74e Word64#
s74f Word64#
s74g Word64#
s74h
(Word# -> Word64#
k Word#
0x431d67c49c100d4c##) Word64#
w75
!(R Word64#
s76a Word64#
s76b Word64#
s76c Word64#
s76d Word64#
s76e Word64#
s76f Word64#
s76g Word64#
s76h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s75a Word64#
s75b Word64#
s75c Word64#
s75d Word64#
s75e Word64#
s75f Word64#
s75g Word64#
s75h
(Word# -> Word64#
k Word#
0x4cc5d4becb3e42b6##) Word64#
w76
!(R Word64#
s77a Word64#
s77b Word64#
s77c Word64#
s77d Word64#
s77e Word64#
s77f Word64#
s77g Word64#
s77h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s76a Word64#
s76b Word64#
s76c Word64#
s76d Word64#
s76e Word64#
s76f Word64#
s76g Word64#
s76h
(Word# -> Word64#
k Word#
0x597f299cfc657e2a##) Word64#
w77
!(R Word64#
s78a Word64#
s78b Word64#
s78c Word64#
s78d Word64#
s78e Word64#
s78f Word64#
s78g Word64#
s78h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s77a Word64#
s77b Word64#
s77c Word64#
s77d Word64#
s77e Word64#
s77f Word64#
s77g Word64#
s77h
(Word# -> Word64#
k Word#
0x5fcb6fab3ad6faec##) Word64#
w78
!(R Word64#
s79a Word64#
s79b Word64#
s79c Word64#
s79d Word64#
s79e Word64#
s79f Word64#
s79g Word64#
s79h) =
Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
s78a Word64#
s78b Word64#
s78c Word64#
s78d Word64#
s78e Word64#
s78f Word64#
s78g Word64#
s78h
(Word# -> Word64#
k Word#
0x6c44198c4a475817##) Word64#
w79
in Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
R (Word64#
h0 Word64# -> Word64# -> Word64#
`p` Word64#
s79a) (Word64#
h1 Word64# -> Word64# -> Word64#
`p` Word64#
s79b) (Word64#
h2 Word64# -> Word64# -> Word64#
`p` Word64#
s79c) (Word64#
h3 Word64# -> Word64# -> Word64#
`p` Word64#
s79d)
(Word64#
h4 Word64# -> Word64# -> Word64#
`p` Word64#
s79e) (Word64#
h5 Word64# -> Word64# -> Word64#
`p` Word64#
s79f) (Word64#
h6 Word64# -> Word64# -> Word64#
`p` Word64#
s79g) (Word64#
h7 Word64# -> Word64# -> Word64#
`p` Word64#
s79h)
where
p :: Word64# -> Word64# -> Word64#
p = Word64# -> Word64# -> Word64#
Exts.plusWord64#
{-# INLINE p #-}
k :: Exts.Word# -> Exts.Word64#
k :: Word# -> Word64#
k = Word# -> Word64#
Exts.wordToWord64#
{-# INLINE k #-}
rotr# :: Exts.Word64# -> Int# -> Exts.Word64#
rotr# :: Word64# -> Int# -> Word64#
rotr# Word64#
x Int#
n =
Word64# -> Int# -> Word64#
Exts.uncheckedShiftRL64# Word64#
x Int#
n Word64# -> Word64# -> Word64#
`Exts.or64#`
Word64# -> Int# -> Word64#
Exts.uncheckedShiftL64# Word64#
x (Int#
64# Int# -> Int# -> Int#
Exts.-# Int#
n)
{-# INLINE rotr# #-}
shr# :: Exts.Word64# -> Int# -> Exts.Word64#
shr# :: Word64# -> Int# -> Word64#
shr# = Word64# -> Int# -> Word64#
Exts.uncheckedShiftRL64#
{-# INLINE shr# #-}
ch# :: Exts.Word64# -> Exts.Word64# -> Exts.Word64# -> Exts.Word64#
ch# :: Word64# -> Word64# -> Word64# -> Word64#
ch# Word64#
x Word64#
y Word64#
z =
(Word64#
x Word64# -> Word64# -> Word64#
`Exts.and64#` Word64#
y) Word64# -> Word64# -> Word64#
`Exts.xor64#`
(Word64# -> Word64#
Exts.not64# Word64#
x Word64# -> Word64# -> Word64#
`Exts.and64#` Word64#
z)
{-# INLINE ch# #-}
maj# :: Exts.Word64# -> Exts.Word64# -> Exts.Word64# -> Exts.Word64#
maj# :: Word64# -> Word64# -> Word64# -> Word64#
maj# Word64#
x Word64#
y Word64#
z =
(Word64#
x Word64# -> Word64# -> Word64#
`Exts.and64#` (Word64#
y Word64# -> Word64# -> Word64#
`Exts.or64#` Word64#
z)) Word64# -> Word64# -> Word64#
`Exts.or64#`
(Word64#
y Word64# -> Word64# -> Word64#
`Exts.and64#` Word64#
z)
{-# INLINE maj# #-}
bsig0# :: Exts.Word64# -> Exts.Word64#
bsig0# :: Word64# -> Word64#
bsig0# Word64#
x =
Word64# -> Int# -> Word64#
rotr# Word64#
x Int#
28# Word64# -> Word64# -> Word64#
`Exts.xor64#` Word64# -> Int# -> Word64#
rotr# Word64#
x Int#
34# Word64# -> Word64# -> Word64#
`Exts.xor64#` Word64# -> Int# -> Word64#
rotr# Word64#
x Int#
39#
{-# INLINE bsig0# #-}
bsig1# :: Exts.Word64# -> Exts.Word64#
bsig1# :: Word64# -> Word64#
bsig1# Word64#
x =
Word64# -> Int# -> Word64#
rotr# Word64#
x Int#
14# Word64# -> Word64# -> Word64#
`Exts.xor64#` Word64# -> Int# -> Word64#
rotr# Word64#
x Int#
18# Word64# -> Word64# -> Word64#
`Exts.xor64#` Word64# -> Int# -> Word64#
rotr# Word64#
x Int#
41#
{-# INLINE bsig1# #-}
ssig0# :: Exts.Word64# -> Exts.Word64#
ssig0# :: Word64# -> Word64#
ssig0# Word64#
x =
Word64# -> Int# -> Word64#
rotr# Word64#
x Int#
1# Word64# -> Word64# -> Word64#
`Exts.xor64#` Word64# -> Int# -> Word64#
rotr# Word64#
x Int#
8# Word64# -> Word64# -> Word64#
`Exts.xor64#` Word64# -> Int# -> Word64#
shr# Word64#
x Int#
7#
{-# INLINE ssig0# #-}
ssig1# :: Exts.Word64# -> Exts.Word64#
ssig1# :: Word64# -> Word64#
ssig1# Word64#
x =
Word64# -> Int# -> Word64#
rotr# Word64#
x Int#
19# Word64# -> Word64# -> Word64#
`Exts.xor64#` Word64# -> Int# -> Word64#
rotr# Word64#
x Int#
61# Word64# -> Word64# -> Word64#
`Exts.xor64#` Word64# -> Int# -> Word64#
shr# Word64#
x Int#
6#
{-# INLINE ssig1# #-}
step#
:: Exts.Word64# -> Exts.Word64# -> Exts.Word64# -> Exts.Word64#
-> Exts.Word64# -> Exts.Word64# -> Exts.Word64# -> Exts.Word64#
-> Exts.Word64# -> Exts.Word64#
-> Registers
step# :: Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
step# Word64#
a Word64#
b Word64#
c Word64#
d Word64#
e Word64#
f Word64#
g Word64#
h Word64#
k Word64#
w =
let !t1 :: Word64#
t1 = Word64#
h
Word64# -> Word64# -> Word64#
`Exts.plusWord64#` Word64# -> Word64#
bsig1# Word64#
e
Word64# -> Word64# -> Word64#
`Exts.plusWord64#` Word64# -> Word64# -> Word64# -> Word64#
ch# Word64#
e Word64#
f Word64#
g
Word64# -> Word64# -> Word64#
`Exts.plusWord64#` Word64#
k
Word64# -> Word64# -> Word64#
`Exts.plusWord64#` Word64#
w
!t2 :: Word64#
t2 = Word64# -> Word64#
bsig0# Word64#
a Word64# -> Word64# -> Word64#
`Exts.plusWord64#` Word64# -> Word64# -> Word64# -> Word64#
maj# Word64#
a Word64#
b Word64#
c
in Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
R (Word64#
t1 Word64# -> Word64# -> Word64#
`Exts.plusWord64#` Word64#
t2) Word64#
a Word64#
b Word64#
c (Word64#
d Word64# -> Word64# -> Word64#
`Exts.plusWord64#` Word64#
t1) Word64#
e Word64#
f Word64#
g
{-# INLINE step# #-}
iv :: () -> Registers
iv :: () -> Registers
iv ()
_ = Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Registers
R
(Word# -> Word64#
Exts.wordToWord64# Word#
0x6a09e667f3bcc908##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0xbb67ae8584caa73b##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0x3c6ef372fe94f82b##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0xa54ff53a5f1d36f1##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0x510e527fade682d1##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0x9b05688c2b3e6c1f##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0x1f83d9abfb41bd6b##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0x5be0cd19137e2179##)
cat :: Registers -> BS.ByteString
cat :: Registers -> ByteString
cat Registers
rs = Int -> (Ptr Word8 -> IO ()) -> ByteString
BI.unsafeCreate Int
64 (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 Word64#
h0 Word64#
h1 Word64#
h2 Word64#
h3 Word64#
h4 Word64#
h5 Word64#
h6 Word64#
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# -> Word64# -> State# RealWorld -> State# RealWorld
poke64be Addr#
addr Int#
00# Word64#
h0 State# RealWorld
s0 of { State# RealWorld
s1 ->
case Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
poke64be Addr#
addr Int#
08# Word64#
h1 State# RealWorld
s1 of { State# RealWorld
s2 ->
case Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
poke64be Addr#
addr Int#
16# Word64#
h2 State# RealWorld
s2 of { State# RealWorld
s3 ->
case Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
poke64be Addr#
addr Int#
24# Word64#
h3 State# RealWorld
s3 of { State# RealWorld
s4 ->
case Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
poke64be Addr#
addr Int#
32# Word64#
h4 State# RealWorld
s4 of { State# RealWorld
s5 ->
case Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
poke64be Addr#
addr Int#
40# Word64#
h5 State# RealWorld
s5 of { State# RealWorld
s6 ->
case Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
poke64be Addr#
addr Int#
48# Word64#
h6 State# RealWorld
s6 of { State# RealWorld
s7 ->
case Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
poke64be Addr#
addr Int#
56# Word64#
h7 State# RealWorld
s7 of { State# RealWorld
s8 ->
(# State# RealWorld
s8, () #)
}}}}}}}}
{-# INLINE cat_into #-}
poke64be
:: Exts.Addr#
-> Int#
-> Exts.Word64#
-> Exts.State# Exts.RealWorld
-> Exts.State# Exts.RealWorld
poke64be :: Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
poke64be Addr#
a Int#
off Word64#
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 (Word64# -> Int# -> Word8#
byte# Word64#
w Int#
56#) 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#) (Word64# -> Int# -> Word8#
byte# Word64#
w Int#
48#) 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#) (Word64# -> Int# -> Word8#
byte# Word64#
w Int#
40#) State# RealWorld
s2 of { State# RealWorld
s3 ->
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#
3#) (Word64# -> Int# -> Word8#
byte# Word64#
w Int#
32#) State# RealWorld
s3 of { State# RealWorld
s4 ->
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#
4#) (Word64# -> Int# -> Word8#
byte# Word64#
w Int#
24#) State# RealWorld
s4 of { State# RealWorld
s5 ->
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#
5#) (Word64# -> Int# -> Word8#
byte# Word64#
w Int#
16#) State# RealWorld
s5 of { State# RealWorld
s6 ->
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#
6#) (Word64# -> Int# -> Word8#
byte# Word64#
w Int#
8#) State# RealWorld
s6 of { State# RealWorld
s7 ->
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#
7#) (Word64# -> Int# -> Word8#
byte# Word64#
w Int#
0#) State# RealWorld
s7
}}}}}}}
{-# INLINE poke64be #-}
byte# :: Exts.Word64# -> Int# -> Exts.Word8#
byte# :: Word64# -> Int# -> Word8#
byte# Word64#
w Int#
n = Word# -> Word8#
Exts.wordToWord8#
(Word64# -> Word#
Exts.word64ToWord# (Word64# -> Int# -> Word64#
Exts.uncheckedShiftRL64# Word64#
w Int#
n))
{-# INLINE byte# #-}
poke_registers :: Ptr Word64 -> Registers -> IO ()
poke_registers :: Ptr Word64 -> Registers -> IO ()
poke_registers (Ptr Addr#
addr) (R Word64#
w0 Word64#
w1 Word64#
w2 Word64#
w3 Word64#
w4 Word64#
w5 Word64#
w6 Word64#
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# -> Word64# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word64# -> State# d -> State# d
Exts.writeWord64OffAddr# Addr#
addr Int#
0# Word64#
w0 State# RealWorld
s0 of { State# RealWorld
s1 ->
case Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word64# -> State# d -> State# d
Exts.writeWord64OffAddr# Addr#
addr Int#
1# Word64#
w1 State# RealWorld
s1 of { State# RealWorld
s2 ->
case Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word64# -> State# d -> State# d
Exts.writeWord64OffAddr# Addr#
addr Int#
2# Word64#
w2 State# RealWorld
s2 of { State# RealWorld
s3 ->
case Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word64# -> State# d -> State# d
Exts.writeWord64OffAddr# Addr#
addr Int#
3# Word64#
w3 State# RealWorld
s3 of { State# RealWorld
s4 ->
case Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word64# -> State# d -> State# d
Exts.writeWord64OffAddr# Addr#
addr Int#
4# Word64#
w4 State# RealWorld
s4 of { State# RealWorld
s5 ->
case Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word64# -> State# d -> State# d
Exts.writeWord64OffAddr# Addr#
addr Int#
5# Word64#
w5 State# RealWorld
s5 of { State# RealWorld
s6 ->
case Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word64# -> State# d -> State# d
Exts.writeWord64OffAddr# Addr#
addr Int#
6# Word64#
w6 State# RealWorld
s6 of { State# RealWorld
s7 ->
case Addr# -> Int# -> Word64# -> State# RealWorld -> State# RealWorld
forall d. Addr# -> Int# -> Word64# -> State# d -> State# d
Exts.writeWord64OffAddr# Addr#
addr Int#
7# Word64#
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 Word64#
w0 Word64#
w1 Word64#
w2 Word64#
w3 Word64#
w4 Word64#
w5 Word64#
w6 Word64#
w7) = Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Block
B
Word64#
w0 Word64#
w1 Word64#
w2 Word64#
w3 Word64#
w4 Word64#
w5 Word64#
w6 Word64#
w7
(Word# -> Word64#
Exts.wordToWord64# Word#
0##) (Word# -> Word64#
Exts.wordToWord64# Word#
0##) (Word# -> Word64#
Exts.wordToWord64# Word#
0##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0##) (Word# -> Word64#
Exts.wordToWord64# Word#
0##) (Word# -> Word64#
Exts.wordToWord64# Word#
0##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0##) (Word# -> Word64#
Exts.wordToWord64# Word#
0##)
{-# INLINE pad_registers #-}
pad_registers_with_length :: Registers -> Block
pad_registers_with_length :: Registers -> Block
pad_registers_with_length (R Word64#
h0 Word64#
h1 Word64#
h2 Word64#
h3 Word64#
h4 Word64#
h5 Word64#
h6 Word64#
h7) = Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Block
B
Word64#
h0 Word64#
h1 Word64#
h2 Word64#
h3 Word64#
h4 Word64#
h5 Word64#
h6 Word64#
h7
(Word# -> Word64#
Exts.wordToWord64# Word#
0x8000000000000000##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0x0000000000000000##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0x0000000000000000##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0x0000000000000000##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0x0000000000000000##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0x0000000000000000##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0x0000000000000000##)
(Word# -> Word64#
Exts.wordToWord64# Word#
0x0000000000000600##)
{-# INLINABLE pad_registers_with_length #-}
xor :: Block -> Exts.Word64# -> Block
xor :: Block -> Word64# -> Block
xor (B Word64#
w00 Word64#
w01 Word64#
w02 Word64#
w03 Word64#
w04 Word64#
w05 Word64#
w06 Word64#
w07 Word64#
w08 Word64#
w09 Word64#
w10 Word64#
w11 Word64#
w12 Word64#
w13 Word64#
w14 Word64#
w15) Word64#
b = Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Block
B
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w00 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w01 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w02 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w03 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w04 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w05 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w06 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w07 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w08 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w09 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w10 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w11 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w12 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w13 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w14 Word64#
b)
(Word64# -> Word64# -> Word64#
Exts.xor64# Word64#
w15 Word64#
b)
{-# INLINE xor #-}
parse_key :: BS.ByteString -> Block
parse_key :: ByteString -> Block
parse_key ByteString
bs = Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Block
B
(ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
000) (ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
008) (ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
016) (ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
024)
(ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
032) (ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
040) (ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
048) (ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
056)
(ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
064) (ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
072) (ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
080) (ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
088)
(ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
096) (ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
104) (ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
112) (ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
120)
{-# INLINE parse_key #-}
w64_zero :: BS.ByteString -> Int -> Exts.Word64#
w64_zero :: ByteString -> Int -> Word64#
w64_zero ByteString
bs Int
i =
let !w0 :: Word#
w0 = ByteString -> Int -> Word#
w8_zero ByteString
bs Int
i Word# -> Int# -> Word#
`Exts.uncheckedShiftL#` Int#
56#
!w1 :: Word#
w1 = ByteString -> Int -> Word#
w8_zero ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1) Word# -> Int# -> Word#
`Exts.uncheckedShiftL#` Int#
48#
!w2 :: Word#
w2 = ByteString -> Int -> Word#
w8_zero ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
2) Word# -> Int# -> Word#
`Exts.uncheckedShiftL#` Int#
40#
!w3 :: Word#
w3 = ByteString -> Int -> Word#
w8_zero ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
3) Word# -> Int# -> Word#
`Exts.uncheckedShiftL#` Int#
32#
!w4 :: Word#
w4 = ByteString -> Int -> Word#
w8_zero ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
4) Word# -> Int# -> Word#
`Exts.uncheckedShiftL#` Int#
24#
!w5 :: Word#
w5 = ByteString -> Int -> Word#
w8_zero ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
5) Word# -> Int# -> Word#
`Exts.uncheckedShiftL#` Int#
16#
!w6 :: Word#
w6 = ByteString -> Int -> Word#
w8_zero ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
6) Word# -> Int# -> Word#
`Exts.uncheckedShiftL#` Int#
08#
!w7 :: Word#
w7 = ByteString -> Int -> Word#
w8_zero ByteString
bs (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
7)
in Word# -> Word64#
Exts.wordToWord64#
(Word#
w0 Word# -> Word# -> Word#
`Exts.or#` Word#
w1 Word# -> Word# -> Word#
`Exts.or#` Word#
w2 Word# -> Word# -> Word#
`Exts.or#` Word#
w3 Word# -> Word# -> Word#
`Exts.or#`
Word#
w4 Word# -> Word# -> Word#
`Exts.or#` Word#
w5 Word# -> Word# -> Word#
`Exts.or#` Word#
w6 Word# -> Word# -> Word#
`Exts.or#` Word#
w7)
{-# INLINE w64_zero #-}
w8_zero :: BS.ByteString -> Int -> Exts.Word#
w8_zero :: ByteString -> Int -> Word#
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 Word8# -> Word#
Exts.word8ToWord# Word8#
w
| Bool
otherwise = Word#
0##
{-# INLINE w8_zero #-}
parse_vsb :: Registers -> Word8 -> BS.ByteString -> Block
parse_vsb :: Registers -> Word8 -> ByteString -> Block
parse_vsb (R Word64#
v0 Word64#
v1 Word64#
v2 Word64#
v3 Word64#
v4 Word64#
v5 Word64#
v6 Word64#
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
!(GHC.Word.W8# Word8#
b3) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
dat Int
3
!(GHC.Word.W8# Word8#
b4) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
dat Int
4
!(GHC.Word.W8# Word8#
b5) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
dat Int
5
!(GHC.Word.W8# Word8#
b6) = ByteString -> Int -> Word8
BU.unsafeIndex ByteString
dat Int
6
!w08 :: Word#
w08 =
Word# -> Int# -> Word#
Exts.uncheckedShiftL# (Word8# -> Word#
Exts.word8ToWord# Word8#
sep) Int#
56#
Word# -> Word# -> Word#
`Exts.or#`
Word# -> Int# -> Word#
Exts.uncheckedShiftL# (Word8# -> Word#
Exts.word8ToWord# Word8#
b0) Int#
48#
Word# -> Word# -> Word#
`Exts.or#`
Word# -> Int# -> Word#
Exts.uncheckedShiftL# (Word8# -> Word#
Exts.word8ToWord# Word8#
b1) Int#
40#
Word# -> Word# -> Word#
`Exts.or#`
Word# -> Int# -> Word#
Exts.uncheckedShiftL# (Word8# -> Word#
Exts.word8ToWord# Word8#
b2) Int#
32#
Word# -> Word# -> Word#
`Exts.or#`
Word# -> Int# -> Word#
Exts.uncheckedShiftL# (Word8# -> Word#
Exts.word8ToWord# Word8#
b3) Int#
24#
Word# -> Word# -> Word#
`Exts.or#`
Word# -> Int# -> Word#
Exts.uncheckedShiftL# (Word8# -> Word#
Exts.word8ToWord# Word8#
b4) Int#
16#
Word# -> Word# -> Word#
`Exts.or#`
Word# -> Int# -> Word#
Exts.uncheckedShiftL# (Word8# -> Word#
Exts.word8ToWord# Word8#
b5) Int#
8#
Word# -> Word# -> Word#
`Exts.or#`
Word8# -> Word#
Exts.word8ToWord# Word8#
b6
in Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Block
B Word64#
v0 Word64#
v1 Word64#
v2 Word64#
v3 Word64#
v4 Word64#
v5 Word64#
v6 Word64#
v7
(Word# -> Word64#
Exts.wordToWord64# Word#
w08)
(ByteString -> Int -> Word64#
word64be ByteString
dat Int
07) (ByteString -> Int -> Word64#
word64be ByteString
dat Int
15) (ByteString -> Int -> Word64#
word64be ByteString
dat Int
23)
(ByteString -> Int -> Word64#
word64be ByteString
dat Int
31) (ByteString -> Int -> Word64#
word64be ByteString
dat Int
39) (ByteString -> Int -> Word64#
word64be ByteString
dat Int
47) (ByteString -> Int -> Word64#
word64be ByteString
dat Int
55)
{-# INLINE parse_vsb #-}
parse_pad1_vsb :: Registers -> Word8 -> BS.ByteString -> Word64 -> Block
parse_pad1_vsb :: Registers -> Word8 -> ByteString -> Word64 -> Block
parse_pad1_vsb (R Word64#
v0 Word64#
v1 Word64#
v2 Word64#
v3 Word64#
v4 Word64#
v5 Word64#
v6 Word64#
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.W64# Word64#
llo) = Word64
bits
in Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Block
B Word64#
v0 Word64#
v1 Word64#
v2 Word64#
v3 Word64#
v4 Word64#
v5 Word64#
v6 Word64#
v7
(Word8 -> ByteString -> Int -> Word64#
w64_sdp Word8
sep ByteString
dat Int
064) (Word8 -> ByteString -> Int -> Word64#
w64_sdp Word8
sep ByteString
dat Int
072)
(Word8 -> ByteString -> Int -> Word64#
w64_sdp Word8
sep ByteString
dat Int
080) (Word8 -> ByteString -> Int -> Word64#
w64_sdp Word8
sep ByteString
dat Int
088)
(Word8 -> ByteString -> Int -> Word64#
w64_sdp Word8
sep ByteString
dat Int
096) (Word8 -> ByteString -> Int -> Word64#
w64_sdp Word8
sep ByteString
dat Int
104)
(Word# -> Word64#
Exts.wordToWord64# Word#
0##) Word64#
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 Word64#
v0 Word64#
v1 Word64#
v2 Word64#
v3 Word64#
v4 Word64#
v5 Word64#
v6 Word64#
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 :: Word64#
z = Word# -> Word64#
Exts.wordToWord64# Word#
0##
!(GHC.Word.W64# Word64#
llo) = Word64
bits
!b0 :: Block
b0 = Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Block
B Word64#
v0 Word64#
v1 Word64#
v2 Word64#
v3 Word64#
v4 Word64#
v5 Word64#
v6 Word64#
v7
(Word8 -> ByteString -> Int -> Word64#
w64_sdp Word8
sep ByteString
dat Int
064) (Word8 -> ByteString -> Int -> Word64#
w64_sdp Word8
sep ByteString
dat Int
072)
(Word8 -> ByteString -> Int -> Word64#
w64_sdp Word8
sep ByteString
dat Int
080) (Word8 -> ByteString -> Int -> Word64#
w64_sdp Word8
sep ByteString
dat Int
088)
(Word8 -> ByteString -> Int -> Word64#
w64_sdp Word8
sep ByteString
dat Int
096) (Word8 -> ByteString -> Int -> Word64#
w64_sdp Word8
sep ByteString
dat Int
104)
(Word8 -> ByteString -> Int -> Word64#
w64_sdp Word8
sep ByteString
dat Int
112) (Word8 -> ByteString -> Int -> Word64#
w64_sdp Word8
sep ByteString
dat Int
120)
!b1 :: Block
b1 = Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Word64#
-> Block
B Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
z Word64#
llo
in (# Block
b0, Block
b1 #)
{-# INLINABLE parse_pad2_vsb #-}
w64_sdp :: Word8 -> BS.ByteString -> Int -> Exts.Word64#
w64_sdp :: Word8 -> ByteString -> Int -> Word64#
w64_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)
!(GHC.Word.W8# Word8#
e) = Word8 -> ByteString -> Int -> Word8
byte_sdp Word8
sep ByteString
dat (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
4)
!(GHC.Word.W8# Word8#
f) = Word8 -> ByteString -> Int -> Word8
byte_sdp Word8
sep ByteString
dat (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
5)
!(GHC.Word.W8# Word8#
g) = Word8 -> ByteString -> Int -> Word8
byte_sdp Word8
sep ByteString
dat (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
6)
!(GHC.Word.W8# Word8#
h) = Word8 -> ByteString -> Int -> Word8
byte_sdp Word8
sep ByteString
dat (Int
i Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
7)
in Word# -> Word64#
Exts.wordToWord64#
(Word# -> Int# -> Word#
Exts.uncheckedShiftL# (Word8# -> Word#
Exts.word8ToWord# Word8#
a) Int#
56#
Word# -> Word# -> Word#
`Exts.or#`
Word# -> Int# -> Word#
Exts.uncheckedShiftL# (Word8# -> Word#
Exts.word8ToWord# Word8#
b) Int#
48#
Word# -> Word# -> Word#
`Exts.or#`
Word# -> Int# -> Word#
Exts.uncheckedShiftL# (Word8# -> Word#
Exts.word8ToWord# Word8#
c) Int#
40#
Word# -> Word# -> Word#
`Exts.or#`
Word# -> Int# -> Word#
Exts.uncheckedShiftL# (Word8# -> Word#
Exts.word8ToWord# Word8#
d) Int#
32#
Word# -> Word# -> Word#
`Exts.or#`
Word# -> Int# -> Word#
Exts.uncheckedShiftL# (Word8# -> Word#
Exts.word8ToWord# Word8#
e) Int#
24#
Word# -> Word# -> Word#
`Exts.or#`
Word# -> Int# -> Word#
Exts.uncheckedShiftL# (Word8# -> Word#
Exts.word8ToWord# Word8#
f) Int#
16#
Word# -> Word# -> Word#
`Exts.or#`
Word# -> Int# -> Word#
Exts.uncheckedShiftL# (Word8# -> Word#
Exts.word8ToWord# Word8#
g) Int#
8#
Word# -> Word# -> Word#
`Exts.or#`
Word8# -> Word#
Exts.word8ToWord# Word8#
h)
{-# INLINE w64_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
64 = Word8
sep
| Int
i Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
< Int
65 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
65)
| Int
i Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
== Int
65 Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
l = Word8
0x80
| Bool
otherwise = Word8
0x00
{-# INLINE byte_sdp #-}