 ! See http://factorcode.org/license.txt for BSD license.
 USING: kernel io io.binary io.files io.streams.byte-array math
 math.functions math.parser namespaces splitting grouping strings
-sequences byte-arrays locals sequences.private
+sequences byte-arrays locals sequences.private macros fry
 io.encodings.binary math.bitwise checksums
-checksums.common checksums.stream ;
+checksums.common checksums.stream combinators ;
 IN: checksums.md5
 
 ! See http://www.faqs.org/rfcs/rfc1321.html

        s bitroll-32
        b get w+
    ] change ; inline

: ABCD a b c d (ABCD) ; inline
: BCDA b c d a (ABCD) ; inline
: CDAB c d a b (ABCD) ; inline
: DABC d a b c (ABCD) ; inline

: F ( X Y Z -- FXYZ )
    #! F(X,Y,Z) = XY v not(X) Z

    old-c c update-old-new
    old-d d update-old-new ;

:: (ABCD) ( x a b c d k s i func -- )
    #! a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s)
    a [
        b get c get d get func call w+
