-For each group of 8 bytes (or less), we do the following,
-
-Input into the hash function, the top 8 bytes from 'md', the byte that
-are to be overwritten by the random bytes and bytes from the 'state'
-(incrementing looping index). From this hash function output (which
-is kept in 'md'), the top (upto) 8 bytes are returned to the caller
-and the bottom (upto) 8 bytes are xored into the 'state'.
-
-Finally, after we have finished 'generation' random bytes for the
-called, 'count' (which is incremented) and 'md' are fed into the hash
-function and the results are kept in 'md'. I believe the above
-addressed points 1 (use of SHA-1), 6 (by hashing into the 'state' the
-'old' data from the caller that is about to be overwritten) and 7 (by
-not using the 8 bytes given to the caller to update the 'state', but
-they are used to update 'md').
+For each group of 10 bytes (or less), we do the following:
+
+Input into the hash function the local 'md' (which is initialized from
+the global 'md' before any bytes are generated), the bytes that are to
+be overwritten by the random bytes, and bytes from the 'state'
+(incrementing looping index). From this digest output (which is kept
+in 'md'), the top (up to) 10 bytes are returned to the caller and the
+bottom 10 bytes are xored into the 'state'.
+
+Finally, after we have finished 'num' random bytes for the caller,
+'count' (which is incremented) and the local and global 'md' are fed
+into the hash function and the results are kept in the global 'md'.
+
+I believe the above addressed points 1 (use of SHA-1), 6 (by hashing
+into the 'state' the 'old' data from the caller that is about to be
+overwritten) and 7 (by not using the 10 bytes given to the caller to
+update the 'state', but they are used to update 'md').