XUMF5AU ;ISS/PAVEL - XUMF5 MD5 Hash API ;06/17/05
Source file <XUMF5AU.m>
Name | Comments | DBIA/ICR reference |
---|---|---|
MD5E(ABCD,STR,PP,LL) | ; Construct a 128-bit MD5 hash of the input.
|
|
ADDIW(M,Y) | ; modulo 2**32
|
|
HEX(STR) | ; Printable hex representation of characters in string
|
|
UI64BIT(N) | ; Convert unsigned integer to 64-bit form, little endian
; code from CORBA ULONGLONG marshaling |
|
AND(X,Y) | ;
|
|
MD5R(STR) | ; Construct a 128-bit MD5 hash of the input.
|
|
ADD(X,Y) | ; modulo 2**32
|
|
NOT(X) | ;
|
|
CHR2OCT(STR) | ; convert hex string to decimal byte values
|
|
INITE(LASTABCD) | ||
INCR | ;
|
|
ADDII(M,N) | ; modulo 2**32
|
|
XOR(X,Y) | ;
|
|
PAD2E | ||
UI32BIT(N) | ; Convert unsigned integer to 32-bit form, little endian
; code from CORBA ULONG marshaling |
|
UINT32(STR) | ; Get integer value from bits of 4-character string
; code from CORBA ULONG unmarshaling |
|
PAD2R | ||
PROCESSE | ; Main processing and transformation loop
|
|
CHAR1(DIGIT) | ; convert one char to its hex value
|
|
PAD1R | ||
PROCESSR | ; Main processing and transformation loop
|
|
OR(X,Y) | ;
|
|
COMB | ; Choose F, G, H or I
|
|
PAD1E | ||
ROTL(X,S) | ; rotate left by s bits
|
|
COMB1 | ||
COMB2 | ||
COMB3 | ||
COMB4 | ||
SUB(A,B,C,D,X,S,AC,FN) | ; FN is 1 (F), 2 (G), 3 (H) or 4 (I)
|
|
ROTLI(N,S) | ; rotate left by s bits
|
|
INITR | ||
ROUND4 | ; Fourth round of transformation
|
|
SAVE | ; Save buffers
|
|
ROUND2 | ; Second round of transformation
|
|
ROUND3 | ; Third round of transformation
|
|
ROUND1 | ; First round of transformation
|
Name | Line Occurrences |
---|---|
$$ADD | INCR+1, INCR+2, INCR+3, INCR+4 |
$$ADDII | SUB+7 |
$$ADDIW | SUB+5, SUB+6, SUB+9 |
$$AND | COMB1, COMB2 |
$$CHAR1 | CHR2OCT+6, CHR2OCT+7 |
$$NOT | COMB1, COMB2, COMB4 |
$$OR | COMB1, COMB2, COMB4 |
$$ROTLI | SUB+8 |
$$UI32BIT | SUB+10, ADD+1, ROTL+5 |
$$UI64BIT | PAD2R+2, PAD2E+2 |
$$UINT32 | SUB+2, ADD+1, ADDIW+1, ROTL+2 |
$$XOR | COMB3, COMB4 |
@( | SUB+4 |
INCR | PROCESSR+11, PROCESSE+12 |
INITE | MD5E+4 |
INITR | MD5R+4 |
ROUND1 | PROCESSR+7, PROCESSE+8 |
ROUND2 | PROCESSR+8, PROCESSE+9 |
ROUND3 | PROCESSR+9, PROCESSE+10 |
ROUND4 | PROCESSR+10, PROCESSE+11 |
SAVE | PROCESSR+6, PROCESSE+7 |
SUB | ROUND1+1, ROUND1+2, ROUND1+3, ROUND1+4, ROUND1+5, ROUND1+6, ROUND1+7, ROUND1+8, ROUND1+9, ROUND1+10 , ROUND1+11, ROUND1+12, ROUND1+13, ROUND1+14, ROUND1+15, ROUND1+16, ROUND2+1, ROUND2+2, ROUND2+3, ROUND2+4 , ROUND2+5, ROUND2+6, ROUND2+7, ROUND2+8, ROUND2+9, ROUND2+10, ROUND2+11, ROUND2+12, ROUND2+13, ROUND2+14 , ROUND2+15, ROUND2+16, ROUND3+1, ROUND3+2, ROUND3+3, ROUND3+4, ROUND3+5, ROUND3+6, ROUND3+7, ROUND3+8 , ROUND3+9, ROUND3+10, ROUND3+11, ROUND3+12, ROUND3+13, ROUND3+14, ROUND3+15, ROUND3+16, ROUND4+1, ROUND4+2 , ROUND4+3, ROUND4+4, ROUND4+5, ROUND4+6, ROUND4+7, ROUND4+8, ROUND4+9, ROUND4+10, ROUND4+11, ROUND4+12 , ROUND4+13, ROUND4+14, ROUND4+15, ROUND4+16 |
>> | Not killed explicitly |
* | Changed |
! | Killed |
~ | Newed |
Name | Field # of Occurrence |
---|---|
A | MD5R+2~, PROCESSR+13, INITR+6*, MD5E+2~, PROCESSE+15, INITE+6*, SAVE+1, ROUND1+1, ROUND1+2, ROUND1+3 , ROUND1+4, ROUND1+5, ROUND1+6, ROUND1+7, ROUND1+8, ROUND1+9, ROUND1+10, ROUND1+11, ROUND1+12, ROUND1+13 , ROUND1+14, ROUND1+15, ROUND1+16, ROUND2+1, ROUND2+2, ROUND2+3, ROUND2+4, ROUND2+5, ROUND2+6, ROUND2+7 , ROUND2+8, ROUND2+9, ROUND2+10, ROUND2+11, ROUND2+12, ROUND2+13, ROUND2+14, ROUND2+15, ROUND2+16, ROUND3+1 , ROUND3+2, ROUND3+3, ROUND3+4, ROUND3+5, ROUND3+6, ROUND3+7, ROUND3+8, ROUND3+9, ROUND3+10, ROUND3+11 , ROUND3+12, ROUND3+13, ROUND3+14, ROUND3+15, ROUND3+16, ROUND4+1, ROUND4+2, ROUND4+3, ROUND4+4, ROUND4+5 , ROUND4+6, ROUND4+7, ROUND4+8, ROUND4+9, ROUND4+10, ROUND4+11, ROUND4+12, ROUND4+13, ROUND4+14, ROUND4+15 , ROUND4+16, INCR+1*, SUB~, SUB+2, SUB+10* |
AA | MD5R+3~, MD5E+3~, SAVE+1*, INCR+1 |
ABCD | MD5E~, MD5E+4 |
AC | SUB~, SUB+7 |
B | MD5R+2~, PROCESSR+13, INITR+7*, MD5E+2~, PROCESSE+15, INITE+7*, SAVE+1, ROUND1+1, ROUND1+2, ROUND1+3 , ROUND1+4, ROUND1+5, ROUND1+6, ROUND1+7, ROUND1+8, ROUND1+9, ROUND1+10, ROUND1+11, ROUND1+12, ROUND1+13 , ROUND1+14, ROUND1+15, ROUND1+16, ROUND2+1, ROUND2+2, ROUND2+3, ROUND2+4, ROUND2+5, ROUND2+6, ROUND2+7 , ROUND2+8, ROUND2+9, ROUND2+10, ROUND2+11, ROUND2+12, ROUND2+13, ROUND2+14, ROUND2+15, ROUND2+16, ROUND3+1 , ROUND3+2, ROUND3+3, ROUND3+4, ROUND3+5, ROUND3+6, ROUND3+7, ROUND3+8, ROUND3+9, ROUND3+10, ROUND3+11 , ROUND3+12, ROUND3+13, ROUND3+14, ROUND3+15, ROUND3+16, ROUND4+1, ROUND4+2, ROUND4+3, ROUND4+4, ROUND4+5 , ROUND4+6, ROUND4+7, ROUND4+8, ROUND4+9, ROUND4+10, ROUND4+11, ROUND4+12, ROUND4+13, ROUND4+14, ROUND4+15 , ROUND4+16, INCR+2*, SUB~, SUB+9, COMB1, COMB2, COMB3, COMB4 |
BB | MD5R+3~, MD5E+3~, SAVE+1*, INCR+2 |
BYTE | HEX+1~, HEX+7*, HEX+8, HEX+9, CHR2OCT+1~, CHR2OCT+4*, CHR2OCT+5, CHR2OCT+6, CHR2OCT+7 |
C | MD5R+2~, PROCESSR+13, INITR+8*, MD5E+2~, PROCESSE+15, INITE+8*, SAVE+1, ROUND1+1, ROUND1+2, ROUND1+3 , ROUND1+4, ROUND1+5, ROUND1+6, ROUND1+7, ROUND1+8, ROUND1+9, ROUND1+10, ROUND1+11, ROUND1+12, ROUND1+13 , ROUND1+14, ROUND1+15, ROUND1+16, ROUND2+1, ROUND2+2, ROUND2+3, ROUND2+4, ROUND2+5, ROUND2+6, ROUND2+7 , ROUND2+8, ROUND2+9, ROUND2+10, ROUND2+11, ROUND2+12, ROUND2+13, ROUND2+14, ROUND2+15, ROUND2+16, ROUND3+1 , ROUND3+2, ROUND3+3, ROUND3+4, ROUND3+5, ROUND3+6, ROUND3+7, ROUND3+8, ROUND3+9, ROUND3+10, ROUND3+11 , ROUND3+12, ROUND3+13, ROUND3+14, ROUND3+15, ROUND3+16, ROUND4+1, ROUND4+2, ROUND4+3, ROUND4+4, ROUND4+5 , ROUND4+6, ROUND4+7, ROUND4+8, ROUND4+9, ROUND4+10, ROUND4+11, ROUND4+12, ROUND4+13, ROUND4+14, ROUND4+15 , ROUND4+16, INCR+3*, SUB~, COMB1, COMB2, COMB3, COMB4 |
CC | MD5R+3~, MD5E+3~, SAVE+1*, INCR+3 |
CMD | SUB+1~ |
COMB | SUB+1~, SUB+5, COMB1*, COMB2*, COMB3*, COMB4* |
D | MD5R+2~, PROCESSR+13, INITR+9*, MD5E+2~, PROCESSE+15, INITE+9*, SAVE+1, ROUND1+1, ROUND1+2, ROUND1+3 , ROUND1+4, ROUND1+5, ROUND1+6, ROUND1+7, ROUND1+8, ROUND1+9, ROUND1+10, ROUND1+11, ROUND1+12, ROUND1+13 , ROUND1+14, ROUND1+15, ROUND1+16, ROUND2+1, ROUND2+2, ROUND2+3, ROUND2+4, ROUND2+5, ROUND2+6, ROUND2+7 , ROUND2+8, ROUND2+9, ROUND2+10, ROUND2+11, ROUND2+12, ROUND2+13, ROUND2+14, ROUND2+15, ROUND2+16, ROUND3+1 , ROUND3+2, ROUND3+3, ROUND3+4, ROUND3+5, ROUND3+6, ROUND3+7, ROUND3+8, ROUND3+9, ROUND3+10, ROUND3+11 , ROUND3+12, ROUND3+13, ROUND3+14, ROUND3+15, ROUND3+16, ROUND4+1, ROUND4+2, ROUND4+3, ROUND4+4, ROUND4+5 , ROUND4+6, ROUND4+7, ROUND4+8, ROUND4+9, ROUND4+10, ROUND4+11, ROUND4+12, ROUND4+13, ROUND4+14, ROUND4+15 , ROUND4+16, INCR+4*, SUB~, COMB1, COMB2, COMB3, COMB4, UI64BIT+2~, UI64BIT+3*, UI64BIT+8* , UI64BIT+9*, UI64BIT+10 |
DD | MD5R+3~, MD5E+3~, SAVE+1*, INCR+4 |
DIGIT | CHAR1~, CHAR1+2 |
DIGITS | HEX+1~, HEX+2*, HEX+8, HEX+9 |
DO | SUB+1~, SUB+3*, SUB+4 |
FN | SUB~, SUB+3 |
HIGH | CHR2OCT+1~, CHR2OCT+6*, CHR2OCT+8 |
I | PROCESSR+1~, PROCESSR+4*, PROCESSR+5, INITR+2~, INITR+4*, PROCESSE+1~, PROCESSE+5*, PROCESSE+6, INITE+2~, INITE+4* , UI64BIT+2~, UI64BIT+4*, UI64BIT+6, UI64BIT+7, UI64BIT+9*, HEX+1~, HEX+6*, HEX+7, CHR2OCT+1~, CHR2OCT+3* , CHR2OCT+4 |
INT | SUB+1~, SUB+2*, SUB+5*, SUB+6*, SUB+7*, SUB+8*, SUB+9*, SUB+10, ROTL+1~, ROTL+2* , ROTL+3, ROTL+4 |
J | PROCESSR+1~, PROCESSR+5*, PROCESSE+1~, PROCESSE+6*, HEX+1~, HEX+6*, HEX+7 |
L | INITE+2~ |
LASTABCD | INITE~, INITE+6, INITE+7, INITE+8, INITE+9 |
LEN | PAD1R+2~, PAD1R+3*, PAD2R+1*, PAD2R+2, PAD1E+6~, PAD1E+7*, PAD1E+8*, PAD2E+1*, PAD2E+2 |
LL | MD5E~, PAD1E+8 |
LOW | CHR2OCT+1~, CHR2OCT+7*, CHR2OCT+8 |
M | ADDIW~, ADDIW+1, ADDII~, ADDII+1 |
MOD | PAD1R+2~, PAD1R+3*, PAD1R+4, PAD1E+6~, PAD1E+7*, PAD1E+9 |
N | PROCESSR+1~, PROCESSR+3*, PROCESSR+4, INITR+2~, INITR+3*, INITR+4*, PROCESSE+1~, PROCESSE+4*, PROCESSE+5, INITE+2~ , INITE+3*, INITE+4*, ADDII~, ADDII+1, ROTLI~, ROTLI+2, ROTLI+3, UI64BIT~, UI64BIT+6*, UI64BIT+8 , UI32BIT~, UI32BIT+2 |
NPAD | PAD1R+2~, PAD1R+4*, PAD1R+6, PAD1E+6~, PAD1E+9*, PAD1E+11 |
OFFSET | HEX+1~, HEX+4*, HEX+5 |
PAD | PAD1R+2~, PAD1R+5*, PAD1R+6*, PAD1R+7, PAD1E+6~, PAD1E+10*, PAD1E+11*, PAD1E+12 |
POS | PROCESSR+1~, PROCESSR+5*, PROCESSE+1~, PROCESSE+6* |
PP | MD5E~, PAD1E+12 |
RET | HEX+1~, HEX+3*, HEX+8*, HEX+9*, HEX+10, CHR2OCT+1~, CHR2OCT+2*, CHR2OCT+8*, CHR2OCT+9 |
RIGHT | ROTL+1~, ROTL+3*, ROTL+4, ROTLI+1~, ROTLI+2*, ROTLI+3 |
S | SUB~, SUB+8, ROTL~, ROTL+3, ROTL+4, ROTLI~, ROTLI+2, ROTLI+3 |
STR | MD5R~, PAD1R+3, PAD1R+7*, PAD2R+2*, PROCESSR+3, PROCESSR+5, MD5E~, PAD1E+7, PAD1E+12*, PAD2E+2* , PROCESSE+4, PROCESSE+6, UINT32~, UINT32+2, HEX~, HEX+4, HEX+5*, HEX+6, HEX+7, CHR2OCT~ , CHR2OCT+3, CHR2OCT+4 |
SWAP | ROTL+1~, ROTL+4*, ROTL+5, ROTLI+1~, ROTLI+3*, ROTLI+4 |
TWOTO | MD5R+1~, MD5E+1~ |
TWOTO( | INITR+4*, INITE+4*, ROTL+4, ROTLI+3 |
TWOTO(32 | ROTL+3, ROTL+4, ROTLI+2, ROTLI+3 |
X | PROCESSR+2~, PROCESSR+12!, PROCESSE+2~, PROCESSE+14!, SUB~, SUB+6, AND~, AND+1, AND+2, OR~ , OR+1, OR+2, XOR~, XOR+1, XOR+2, NOT~, NOT+1, NOT+2, ADD~, ADD+1 , ROTL~, ROTL+2, UI64BIT+2~, UI64BIT+5*, UI64BIT+6*, UI64BIT+7, CHAR1+1~, CHAR1+2*, CHAR1+3, CHAR1+4 |
X( | PROCESSR+5*, PROCESSE+6*, UI64BIT+7*, UI64BIT+9 |
X(0 | ROUND1+1, ROUND2+4, ROUND3+10, ROUND4+1 |
X(1 | ROUND1+2, ROUND2+1, ROUND3+5, ROUND4+8 |
X(10 | ROUND1+11, ROUND2+6, ROUND3+8, ROUND4+7 |
X(11 | ROUND1+12, ROUND2+3, ROUND3+3, ROUND4+14 |
X(12 | ROUND1+13, ROUND2+16, ROUND3+14, ROUND4+5 |
X(13 | ROUND1+14, ROUND2+13, ROUND3+9, ROUND4+12 |
X(14 | ROUND1+15, ROUND2+10, ROUND3+4, ROUND4+3 |
X(15 | ROUND1+16, ROUND2+7, ROUND3+15, ROUND4+10 |
X(2 | ROUND1+3, ROUND2+14, ROUND3+16, ROUND4+15 |
X(3 | ROUND1+4, ROUND2+11, ROUND3+11, ROUND4+6 |
X(4 | ROUND1+5, ROUND2+8, ROUND3+6, ROUND4+13 |
X(5 | ROUND1+6, ROUND2+5, ROUND3+1, ROUND4+4 |
X(6 | ROUND1+7, ROUND2+2, ROUND3+12, ROUND4+11 |
X(7 | ROUND1+8, ROUND2+15, ROUND3+7, ROUND4+2 |
X(8 | ROUND1+9, ROUND2+12, ROUND3+2, ROUND4+9 |
X(9 | ROUND1+10, ROUND2+9, ROUND3+13, ROUND4+16 |
Y | AND~, AND+1, OR~, OR+1, XOR~, XOR+1, ADD~, ADD+1, ADDIW~, ADDIW+1 |