TITLE ../openssl/crypto/md5/asm/md5-586.asm IF @Version LT 800 ECHO MASM version 8.00 or later is strongly recommended. ENDIF .486 .MODEL FLAT OPTION DOTNAME IF @Version LT 800 .text$ SEGMENT PAGE 'CODE' ELSE .text$ SEGMENT ALIGN(64) 'CODE' ENDIF ALIGN 16 _md5_block_asm_data_order PROC PUBLIC $L_md5_block_asm_data_order_begin:: push esi push edi mov edi,DWORD PTR 12[esp] mov esi,DWORD PTR 16[esp] mov ecx,DWORD PTR 20[esp] push ebp shl ecx,6 push ebx add ecx,esi sub ecx,64 mov eax,DWORD PTR [edi] push ecx mov ebx,DWORD PTR 4[edi] mov ecx,DWORD PTR 8[edi] mov edx,DWORD PTR 12[edi] $L000start: ; ; R0 section mov edi,ecx mov ebp,DWORD PTR [esi] ; R0 0 xor edi,edx and edi,ebx lea eax,DWORD PTR 3614090360[ebp*1+eax] xor edi,edx add eax,edi mov edi,ebx rol eax,7 mov ebp,DWORD PTR 4[esi] add eax,ebx ; R0 1 xor edi,ecx and edi,eax lea edx,DWORD PTR 3905402710[ebp*1+edx] xor edi,ecx add edx,edi mov edi,eax rol edx,12 mov ebp,DWORD PTR 8[esi] add edx,eax ; R0 2 xor edi,ebx and edi,edx lea ecx,DWORD PTR 606105819[ebp*1+ecx] xor edi,ebx add ecx,edi mov edi,edx rol ecx,17 mov ebp,DWORD PTR 12[esi] add ecx,edx ; R0 3 xor edi,eax and edi,ecx lea ebx,DWORD PTR 3250441966[ebp*1+ebx] xor edi,eax add ebx,edi mov edi,ecx rol ebx,22 mov ebp,DWORD PTR 16[esi] add ebx,ecx ; R0 4 xor edi,edx and edi,ebx lea eax,DWORD PTR 4118548399[ebp*1+eax] xor edi,edx add eax,edi mov edi,ebx rol eax,7 mov ebp,DWORD PTR 20[esi] add eax,ebx ; R0 5 xor edi,ecx and edi,eax lea edx,DWORD PTR 1200080426[ebp*1+edx] xor edi,ecx add edx,edi mov edi,eax rol edx,12 mov ebp,DWORD PTR 24[esi] add edx,eax ; R0 6 xor edi,ebx and edi,edx lea ecx,DWORD PTR 2821735955[ebp*1+ecx] xor edi,ebx add ecx,edi mov edi,edx rol ecx,17 mov ebp,DWORD PTR 28[esi] add ecx,edx ; R0 7 xor edi,eax and edi,ecx lea ebx,DWORD PTR 4249261313[ebp*1+ebx] xor edi,eax add ebx,edi mov edi,ecx rol ebx,22 mov ebp,DWORD PTR 32[esi] add ebx,ecx ; R0 8 xor edi,edx and edi,ebx lea eax,DWORD PTR 1770035416[ebp*1+eax] xor edi,edx add eax,edi mov edi,ebx rol eax,7 mov ebp,DWORD PTR 36[esi] add eax,ebx ; R0 9 xor edi,ecx and edi,eax lea edx,DWORD PTR 2336552879[ebp*1+edx] xor edi,ecx add edx,edi mov edi,eax rol edx,12 mov ebp,DWORD PTR 40[esi] add edx,eax ; R0 10 xor edi,ebx and edi,edx lea ecx,DWORD PTR 4294925233[ebp*1+ecx] xor edi,ebx add ecx,edi mov edi,edx rol ecx,17 mov ebp,DWORD PTR 44[esi] add ecx,edx ; R0 11 xor edi,eax and edi,ecx lea ebx,DWORD PTR 2304563134[ebp*1+ebx] xor edi,eax add ebx,edi mov edi,ecx rol ebx,22 mov ebp,DWORD PTR 48[esi] add ebx,ecx ; R0 12 xor edi,edx and edi,ebx lea eax,DWORD PTR 1804603682[ebp*1+eax] xor edi,edx add eax,edi mov edi,ebx rol eax,7 mov ebp,DWORD PTR 52[esi] add eax,ebx ; R0 13 xor edi,ecx and edi,eax lea edx,DWORD PTR 4254626195[ebp*1+edx] xor edi,ecx add edx,edi mov edi,eax rol edx,12 mov ebp,DWORD PTR 56[esi] add edx,eax ; R0 14 xor edi,ebx and edi,edx lea ecx,DWORD PTR 2792965006[ebp*1+ecx] xor edi,ebx add ecx,edi mov edi,edx rol ecx,17 mov ebp,DWORD PTR 60[esi] add ecx,edx ; R0 15 xor edi,eax and edi,ecx lea ebx,DWORD PTR 1236535329[ebp*1+ebx] xor edi,eax add ebx,edi mov edi,ecx rol ebx,22 mov ebp,DWORD PTR 4[esi] add ebx,ecx ; ; R1 section ; R1 16 lea eax,DWORD PTR 4129170786[ebp*1+eax] xor edi,ebx and edi,edx mov ebp,DWORD PTR 24[esi] xor edi,ecx add eax,edi mov edi,ebx rol eax,5 add eax,ebx ; R1 17 lea edx,DWORD PTR 3225465664[ebp*1+edx] xor edi,eax and edi,ecx mov ebp,DWORD PTR 44[esi] xor edi,ebx add edx,edi mov edi,eax rol edx,9 add edx,eax ; R1 18 lea ecx,DWORD PTR 643717713[ebp*1+ecx] xor edi,edx and edi,ebx mov ebp,DWORD PTR [esi] xor edi,eax add ecx,edi mov edi,edx rol ecx,14 add ecx,edx ; R1 19 lea ebx,DWORD PTR 3921069994[ebp*1+ebx] xor edi,ecx and edi,eax mov ebp,DWORD PTR 20[esi] xor edi,edx add ebx,edi mov edi,ecx rol ebx,20 add ebx,ecx ; R1 20 lea eax,DWORD PTR 3593408605[ebp*1+eax] xor edi,ebx and edi,edx mov ebp,DWORD PTR 40[esi] xor edi,ecx add eax,edi mov edi,ebx rol eax,5 add eax,ebx ; R1 21 lea edx,DWORD PTR 38016083[ebp*1+edx] xor edi,eax and edi,ecx mov ebp,DWORD PTR 60[esi] xor edi,ebx add edx,edi mov edi,eax rol edx,9 add edx,eax ; R1 22 lea ecx,DWORD PTR 3634488961[ebp*1+ecx] xor edi,edx and edi,ebx mov ebp,DWORD PTR 16[esi] xor edi,eax add ecx,edi mov edi,edx rol ecx,14 add ecx,edx ; R1 23 lea ebx,DWORD PTR 3889429448[ebp*1+ebx] xor edi,ecx and edi,eax mov ebp,DWORD PTR 36[esi] xor edi,edx add ebx,edi mov edi,ecx rol ebx,20 add ebx,ecx ; R1 24 lea eax,DWORD PTR 568446438[ebp*1+eax] xor edi,ebx and edi,edx mov ebp,DWORD PTR 56[esi] xor edi,ecx add eax,edi mov edi,ebx rol eax,5 add eax,ebx ; R1 25 lea edx,DWORD PTR 3275163606[ebp*1+edx] xor edi,eax and edi,ecx mov ebp,DWORD PTR 12[esi] xor edi,ebx add edx,edi mov edi,eax rol edx,9 add edx,eax ; R1 26 lea ecx,DWORD PTR 4107603335[ebp*1+ecx] xor edi,edx and edi,ebx mov ebp,DWORD PTR 32[esi] xor edi,eax add ecx,edi mov edi,edx rol ecx,14 add ecx,edx ; R1 27 lea ebx,DWORD PTR 1163531501[ebp*1+ebx] xor edi,ecx and edi,eax mov ebp,DWORD PTR 52[esi] xor edi,edx add ebx,edi mov edi,ecx rol ebx,20 add ebx,ecx ; R1 28 lea eax,DWORD PTR 2850285829[ebp*1+eax] xor edi,ebx and edi,edx mov ebp,DWORD PTR 8[esi] xor edi,ecx add eax,edi mov edi,ebx rol eax,5 add eax,ebx ; R1 29 lea edx,DWORD PTR 4243563512[ebp*1+edx] xor edi,eax and edi,ecx mov ebp,DWORD PTR 28[esi] xor edi,ebx add edx,edi mov edi,eax rol edx,9 add edx,eax ; R1 30 lea ecx,DWORD PTR 1735328473[ebp*1+ecx] xor edi,edx and edi,ebx mov ebp,DWORD PTR 48[esi] xor edi,eax add ecx,edi mov edi,edx rol ecx,14 add ecx,edx ; R1 31 lea ebx,DWORD PTR 2368359562[ebp*1+ebx] xor edi,ecx and edi,eax mov ebp,DWORD PTR 20[esi] xor edi,edx add ebx,edi mov edi,ecx rol ebx,20 add ebx,ecx ; ; R2 section ; R2 32 xor edi,edx xor edi,ebx lea eax,DWORD PTR 4294588738[ebp*1+eax] add eax,edi rol eax,4 mov ebp,DWORD PTR 32[esi] mov edi,ebx ; R2 33 lea edx,DWORD PTR 2272392833[ebp*1+edx] add eax,ebx xor edi,ecx xor edi,eax mov ebp,DWORD PTR 44[esi] add edx,edi mov edi,eax rol edx,11 add edx,eax ; R2 34 xor edi,ebx xor edi,edx lea ecx,DWORD PTR 1839030562[ebp*1+ecx] add ecx,edi rol ecx,16 mov ebp,DWORD PTR 56[esi] mov edi,edx ; R2 35 lea ebx,DWORD PTR 4259657740[ebp*1+ebx] add ecx,edx xor edi,eax xor edi,ecx mov ebp,DWORD PTR 4[esi] add ebx,edi mov edi,ecx rol ebx,23 add ebx,ecx ; R2 36 xor edi,edx xor edi,ebx lea eax,DWORD PTR 2763975236[ebp*1+eax] add eax,edi rol eax,4 mov ebp,DWORD PTR 16[esi] mov edi,ebx ; R2 37 lea edx,DWORD PTR 1272893353[ebp*1+edx] add eax,ebx xor edi,ecx xor edi,eax mov ebp,DWORD PTR 28[esi] add edx,edi mov edi,eax rol edx,11 add edx,eax ; R2 38 xor edi,ebx xor edi,edx lea ecx,DWORD PTR 4139469664[ebp*1+ecx] add ecx,edi rol ecx,16 mov ebp,DWORD PTR 40[esi] mov edi,edx ; R2 39 lea ebx,DWORD PTR 3200236656[ebp*1+ebx] add ecx,edx xor edi,eax xor edi,ecx mov ebp,DWORD PTR 52[esi] add ebx,edi mov edi,ecx rol ebx,23 add ebx,ecx ; R2 40 xor edi,edx xor edi,ebx lea eax,DWORD PTR 681279174[ebp*1+eax] add eax,edi rol eax,4 mov ebp,DWORD PTR [esi] mov edi,ebx ; R2 41 lea edx,DWORD PTR 3936430074[ebp*1+edx] add eax,ebx xor edi,ecx xor edi,eax mov ebp,DWORD PTR 12[esi] add edx,edi mov edi,eax rol edx,11 add edx,eax ; R2 42 xor edi,ebx xor edi,edx lea ecx,DWORD PTR 3572445317[ebp*1+ecx] add ecx,edi rol ecx,16 mov ebp,DWORD PTR 24[esi] mov edi,edx ; R2 43 lea ebx,DWORD PTR 76029189[ebp*1+ebx] add ecx,edx xor edi,eax xor edi,ecx mov ebp,DWORD PTR 36[esi] add ebx,edi mov edi,ecx rol ebx,23 add ebx,ecx ; R2 44 xor edi,edx xor edi,ebx lea eax,DWORD PTR 3654602809[ebp*1+eax] add eax,edi rol eax,4 mov ebp,DWORD PTR 48[esi] mov edi,ebx ; R2 45 lea edx,DWORD PTR 3873151461[ebp*1+edx] add eax,ebx xor edi,ecx xor edi,eax mov ebp,DWORD PTR 60[esi] add edx,edi mov edi,eax rol edx,11 add edx,eax ; R2 46 xor edi,ebx xor edi,edx lea ecx,DWORD PTR 530742520[ebp*1+ecx] add ecx,edi rol ecx,16 mov ebp,DWORD PTR 8[esi] mov edi,edx ; R2 47 lea ebx,DWORD PTR 3299628645[ebp*1+ebx] add ecx,edx xor edi,eax xor edi,ecx mov ebp,DWORD PTR [esi] add ebx,edi mov edi,-1 rol ebx,23 add ebx,ecx ; ; R3 section ; R3 48 xor edi,edx or edi,ebx lea eax,DWORD PTR 4096336452[ebp*1+eax] xor edi,ecx mov ebp,DWORD PTR 28[esi] add eax,edi mov edi,-1 rol eax,6 xor edi,ecx add eax,ebx ; R3 49 or edi,eax lea edx,DWORD PTR 1126891415[ebp*1+edx] xor edi,ebx mov ebp,DWORD PTR 56[esi] add edx,edi mov edi,-1 rol edx,10 xor edi,ebx add edx,eax ; R3 50 or edi,edx lea ecx,DWORD PTR 2878612391[ebp*1+ecx] xor edi,eax mov ebp,DWORD PTR 20[esi] add ecx,edi mov edi,-1 rol ecx,15 xor edi,eax add ecx,edx ; R3 51 or edi,ecx lea ebx,DWORD PTR 4237533241[ebp*1+ebx] xor edi,edx mov ebp,DWORD PTR 48[esi] add ebx,edi mov edi,-1 rol ebx,21 xor edi,edx add ebx,ecx ; R3 52 or edi,ebx lea eax,DWORD PTR 1700485571[ebp*1+eax] xor edi,ecx mov ebp,DWORD PTR 12[esi] add eax,edi mov edi,-1 rol eax,6 xor edi,ecx add eax,ebx ; R3 53 or edi,eax lea edx,DWORD PTR 2399980690[ebp*1+edx] xor edi,ebx mov ebp,DWORD PTR 40[esi] add edx,edi mov edi,-1 rol edx,10 xor edi,ebx add edx,eax ; R3 54 or edi,edx lea ecx,DWORD PTR 4293915773[ebp*1+ecx] xor edi,eax mov ebp,DWORD PTR 4[esi] add ecx,edi mov edi,-1 rol ecx,15 xor edi,eax add ecx,edx ; R3 55 or edi,ecx lea ebx,DWORD PTR 2240044497[ebp*1+ebx] xor edi,edx mov ebp,DWORD PTR 32[esi] add ebx,edi mov edi,-1 rol ebx,21 xor edi,edx add ebx,ecx ; R3 56 or edi,ebx lea eax,DWORD PTR 1873313359[ebp*1+eax] xor edi,ecx mov ebp,DWORD PTR 60[esi] add eax,edi mov edi,-1 rol eax,6 xor edi,ecx add eax,ebx ; R3 57 or edi,eax lea edx,DWORD PTR 4264355552[ebp*1+edx] xor edi,ebx mov ebp,DWORD PTR 24[esi] add edx,edi mov edi,-1 rol edx,10 xor edi,ebx add edx,eax ; R3 58 or edi,edx lea ecx,DWORD PTR 2734768916[ebp*1+ecx] xor edi,eax mov ebp,DWORD PTR 52[esi] add ecx,edi mov edi,-1 rol ecx,15 xor edi,eax add ecx,edx ; R3 59 or edi,ecx lea ebx,DWORD PTR 1309151649[ebp*1+ebx] xor edi,edx mov ebp,DWORD PTR 16[esi] add ebx,edi mov edi,-1 rol ebx,21 xor edi,edx add ebx,ecx ; R3 60 or edi,ebx lea eax,DWORD PTR 4149444226[ebp*1+eax] xor edi,ecx mov ebp,DWORD PTR 44[esi] add eax,edi mov edi,-1 rol eax,6 xor edi,ecx add eax,ebx ; R3 61 or edi,eax lea edx,DWORD PTR 3174756917[ebp*1+edx] xor edi,ebx mov ebp,DWORD PTR 8[esi] add edx,edi mov edi,-1 rol edx,10 xor edi,ebx add edx,eax ; R3 62 or edi,edx lea ecx,DWORD PTR 718787259[ebp*1+ecx] xor edi,eax mov ebp,DWORD PTR 36[esi] add ecx,edi mov edi,-1 rol ecx,15 xor edi,eax add ecx,edx ; R3 63 or edi,ecx lea ebx,DWORD PTR 3951481745[ebp*1+ebx] xor edi,edx mov ebp,DWORD PTR 24[esp] add ebx,edi add esi,64 rol ebx,21 mov edi,DWORD PTR [ebp] add ebx,ecx add eax,edi mov edi,DWORD PTR 4[ebp] add ebx,edi mov edi,DWORD PTR 8[ebp] add ecx,edi mov edi,DWORD PTR 12[ebp] add edx,edi mov DWORD PTR [ebp],eax mov DWORD PTR 4[ebp],ebx mov edi,DWORD PTR [esp] mov DWORD PTR 8[ebp],ecx mov DWORD PTR 12[ebp],edx cmp edi,esi jae $L000start pop eax pop ebx pop ebp pop edi pop esi ret _md5_block_asm_data_order ENDP .text$ ENDS END