;ELC   
;;; compiled by amu@mit.edu on Sat Sep 13 16:20:13 1997
;;; from file /afs/sipb.mit.edu/contrib/emacs/packages/gnus-5.4.67/lisp/md5.el
;;; emacs version 19.30.1.
;;; bytecomp version FSF 2.10
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`md5.el' was compiled for Emacs 19.29 or later"))


#@93 *Program that reads a message on its standard input and writes an
MD5 digest on its output.
(defvar md5-program "md5" (#$ . -484))
#@343 *The maximum size of a piece of data that should use the MD5 routines
written in lisp.  If a message exceeds this, it will be run through an
external filter for processing.  Also see the `md5-program' variable.
This variable has no effect if you call the md5-init|update|final
functions - only used by the `md5' function's simpler interface.
(defvar md5-maximum-internal-length 4096 (#$ . -622))
#@99 Number of bits handled, modulo 2^64.
Represented as four 16-bit numbers, least significant first.
(defvar md5-bits (make-vector 4 0) (#$ . 1024))
#@40 Scratch buffer (four 32-bit integers).
(defvar md5-buffer (make-vector 4 (quote (0 . 0))) (#$ . 1176))
#@26 Input buffer (64 bytes).
(defvar md5-input (make-vector 64 0) (#$ . 1285))
(defalias 'md5-unhex #[(x) "V Y Z\\Z\\Z" [x 57 97 10 65 48] 2])
#@164 Encodes MESSAGE using the MD5 message digest algorithm.
MESSAGE must be a string or an array of bytes.
Returns a vector of 16 bytes containing the message digest.
(defalias 'md5-encode #[(message) "G	X  ! !q ced	& p&ee\\{\"Wk \\H!_\\TH!\\ITA ," [message md5-maximum-internal-length md5-init md5-update md5-final get-buffer-create " *md5-work*" erase-buffer call-process-region shell-file-name "/bin/sh" t nil "-c" md5-program 32 make-vector 16 0 ctr vec data md5-unhex] 10 (#$ . 1450)])
#@47 Return 32-bit sum of 32-bit integers X and Y.
(defalias 'md5-add #[(x y) "@	@\\A	A\\\n\"\\\"\n\"*B" [x y l m logand lsh -16 65535] 5 (#$ . 2012)])
(put (quote md5-add) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'md5-F #[(x y z) "\n\"\n!\"\"" [logior logand x y lognot z] 5])
(put (quote md5-F) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'md5-G #[(x y z) "\n\"\f!\"\"" [logior logand x z y lognot] 6])
(put (quote md5-G) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'md5-H #[(x y z) "	\n#" [logxor x y z] 4])
(put (quote md5-H) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'md5-I #[(x y z) "	!\"\"\"" [logxor y logior x logand lognot z 65535] 7])
(put (quote md5-I) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'md5-make-step '(macro . #[(name func) "	BBBBDBBBBDBBBBF" [defun name (a b c d x s ac) let* m1 + (car a) func ((car b) (car c) (car d)) ((car x) (car ac)) l1 (cdr a) ((cdr b) (cdr c) (cdr d)) ((cdr x) (cdr ac)) ((m2 (logand 65535 (+ m1 (lsh l1 -16)))) (l2 (logand 65535 l1)) (m3 (logand 65535 (if (> s 15) (+ (lsh m2 (- s 32)) (lsh l2 (- s 16))) (+ (lsh m2 s) (lsh l2 (- s 16)))))) (l3 (logand 65535 (if (> s 15) (+ (lsh l2 (- s 32)) (lsh m2 (- s 16))) (+ (lsh l2 s) (lsh m2 (- s 16))))))) ((md5-add (cons m3 l3) b))] 10]))
(defalias 'md5-FF #[(a b c d x s ac) "@	@\n@@\"!\f\"\"+\\@\\\n@\\A	A\nAA\"!\f\"\"+\\A\\\nA\\\f\f\"\\\"\f\"V| Z\"Z\"\\ \"Z\"\\\"V Z\"Z\"\\ \"Z\"\\\"B	@@\\AA\\\"\\\"\".\nB" [a b c d z y x logior logand lognot ac m1 l1 lsh -16 65535 m2 l2 s 15 32 16 m3 l3 l m] 7])
(defalias 'md5-GG #[(a b c d x s ac) "@	@\n@@\f\"\f!\"\"+\\@\\\n@\\A	A\nAA\f\"\f!\"\"+\\A\\\nA\\\f\f\"\\\"\f\"Vz Z\"Z\"\\ \"Z\"\\\"V Z\"Z\"\\ \"Z\"\\\"B	@@\\AA\\\"\\\"\".\nB" [a b c d z y x logior logand lognot ac m1 l1 lsh -16 65535 m2 l2 s 15 32 16 m3 l3 l m] 8])
(defalias 'md5-HH #[(a b c d x s ac) "@	@\n@@\f#+\\@\\@\\	A	A\nAA\f#+\\A\\A\\\n	\n\"\\\"\n\"Vl Z\"Z\"\\{ \"Z\"\\\"V Z\"Z\"\\ \"Z\"\\\"B	@@\\AA\\\"\\\"\".\nB" [a b c d z y x logxor ac m1 l1 logand lsh -16 65535 m2 l2 s 15 32 16 m3 l3 l m] 7])
(defalias 'md5-II #[(a b c d x s ac) "@	@\n@@\f!\"\"\"+\\@\\\f@\\A	A\nAA\f!\"\"\"+\\A\\\fA\\\"\\\"\"Vz Z\"Z\"\\ \"Z\"\\\"V Z\"Z\"\\ \"Z\"\\\"B	@@\\AA\\\"\\\"\".\nB" [a b c d z y x logxor logior logand lognot 65535 ac m1 l1 lsh -16 m2 l2 s 15 32 16 m3 l3 l m] 9])
#@54 Initialise the state of the message-digest routines.
(defalias 'md5-init #[nil "IIIIIIII" [md5-bits 0 1 2 3 md5-buffer (26437 . 8961) (61389 . 43913) (39098 . 56574) (4146 . 21622)] 3 (#$ . 5049)])
#@63 Update the current MD5 state with STRING (an array of bytes).
(defalias 'md5-update #[(string) "G\fW HƥǦ\nH\"I\f\fVa Wa H\f\\\"I\fZVU ЂV \fT)& *T\nU B\"W \"I\\\\y !+ +" [string 0 j i len md5-bits 8 64 md5-input logand 255 k c 4 b 65535 1 63 make-vector 16 kk in md5-pack md5-transform] 5 (#$ . 5285)])
#@72 Pack the four bytes at ARRAY reference I to I+3 into a 32-bit integer.
(defalias 'md5-pack #[(array i) "	\n\\H\"	\n\\H\\	\n\\H\"	\nH\\B" [lsh array i 3 8 2 1] 5 (#$ . 5703)])
#@69 Unpack byte B (0 to 3) from Nth member of ARRAY of 32-bit integers.
(defalias 'md5-byte #[(array n b) "	H= \nA\"9 =  \nA\"9 =. \n@\"9 =9 \n@\")" [array n e b 0 logand 255 1 lsh -8 2 3] 3 (#$ . 5892)])
(defalias 'md5-final #[nil "B\"\"	H	HBI	H	HBI	HΥϦWF ZJ Z\"I\f!W~ \"I\\\\\\ *!W #I\\#I\\#I\\#I\\\\ *," [make-vector 16 0 nil padding digest j in 14 md5-bits 1 15 3 2 8 64 56 120 128 md5-update kk k md5-pack md5-input 4 md5-transform md5-byte md5-buffer] 7])
#@57 Basic MD5 step. Transform md5-buffer based on array IN.
(defalias 'md5-transform #[(in) "HHHH\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH&\nH@ A &\nHӁB &\nHC &\nHD &\nH@ E &\nHӁF &\nHG &\nHH &\nH@ I &\nHӁJ &\nHK &\nHL &\nH@ M &N \nHׁO &N \nHށP &N \nHQ &N \nHR S &N \nHׁT &N \nHށU &N \nHV &N \nHR W &N \nHׁX &N \nHށY &N \nHZ &N \nHR [ &N \nHׁ\\ &N \nHށ] &N \nH^ &N \nHR _ &H`a@`@\\aA`A\\bcd ce bf \"\\g \"d bg \",BIH`a@`@\\aA`A\\bcd ce bf \"\\g \"d bg \",BIH`a@`@\\aA`A\\bcd ce bf \"\\g \"d bg \",BIH`a@`@\\aA`A\\bcd ce bf \"\\g \"d bg \",BI," [md5-buffer 0 1 2 3 d c b a md5-FF in 7 (55146 . 42104) 12 (59591 . 46934) 17 (9248 . 28891) 22 (49597 . 52974) 4 (62844 . 4015) 5 (18311 . 50730) 6 (43056 . 17939) (64838 . 38145) 8 (27008 . 39128) 9 (35652 . 63407) 10 (65535 . 23473) 11 (35164 . 55230) (27536 . 4386) 13 (64920 . 29075) 14 (42617 . 17294) 15 (18868 . 2081) md5-GG (63006 . 9570) (49216 . 45888) (9822 . 23121) 20 (59830 . 51114) (54831 . 4189) (580 . 5203) (55457 . 59009) (59347 . 64456) (8673 . 52710) (49975 . 2006) (62677 . 3463) (17754 . 5357) (43491 . 59653) (64751 . 41976) (26479 . 729) (36138 . 19594) md5-HH (65530 . 14658) (34673 . 63105) 16 (28061 . 24866) 23 (64997 . 14348) (42174 . 59972) (19422 . 53161) (63163 . 19296) (48831 . 48240) (10395 . 32454) (60065 . 10234) (54511 . 12421) (1160 . 7429) (55764 . 53305) (59099 . 39397) (8098 . 31992) (50348 . 22117) md5-II (62505 . 8772) (17194 . 65431) (43924 . 9127) 21 (64659 . 41017) (25947 . 22979) (36620 . 52370) (65519 . 62589) (34180 . 24017) (28584 . 32335) (65068 . 59104) (41729 . 17172) (19976 . 4513) (63315 . 32386) (48442 . 62005) (10967 . 53947) (60294 . 54161) y x l m logand lsh -16 65535] 9 (#$ . 6542)])
#@209 Return the MD5 (a secure message digest algorithm) of an object.
OBJECT is either a string or a buffer.
Optional arguments START and END denote buffer positions for computing the
hash of a portion of OBJECT.
(defalias 'md5 #[(object &optional start end) "!q! 	#= ;= / 	9 	O; cd\nXO  !#f edX 	&ee\\{	!+" [nil buffer ((byte-code " !" [buffer kill-buffer] 2)) generate-new-buffer " *md5-work*" bufferp object insert-buffer-substring start end md5-maximum-internal-length mapconcat #[(node) "\n\"" [format "%02x" node] 3] md5-encode buffer-string "" call-process-region shell-file-name "/bin/sh" t "-c" md5-program 32 kill-buffer] 10 (#$ . 9385)])
(provide (quote md5))
