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 |