mov edi,ptBuffer mov eax,dtBufferLength inc eax add edi,eax mov byte ptr [edi-1],080h xor edx,edx mov ebx,64 div ebx neg edx add edx,64 cmp edx,8 jae @f add edx,64 @@: mov ecx,edx xor al,al rep stosb mov eax,dtBufferLength inc edx add dtBufferLength,edx xor edx,edx mov ebx,8 mul ebx mov dword ptr [edi-8],eax mov dword ptr [edi-4],edx mov edx,dtBufferLength mov edi,ptBuffer ; phase II · chaining variables initialization mov esi,ptMD5Result assume esi:ptr MD5RESULT mov [esi].dtA,067452301h mov [esi].dtB,0efcdab89h mov [esi].dtC,098badcfeh mov [esi].dtD,010325476h ; phase III · hashing hashloop: mov eax,[esi].dtA mov dta,eax mov eax,[esi].dtB mov dtb,eax mov eax,[esi].dtC mov dtc,eax mov eax,[esi].dtD mov dtd,eax ; round 1 invoke FF,dta,dtb,dtc,dtd,dword ptr [edi+00*4],07,0d76aa478h mov dta,eax invoke FF,dtd,dta,dtb,dtc,dword ptr [edi+01*4],12,0e8c7b756h mov dtd,eax invoke FF,dtc,dtd,dta,dtb,dword ptr [edi+02*4],17,0242070dbh mov dtc,eax invoke FF,dtb,dtc,dtd,dta,dword ptr [edi+03*4],22,0c1bdceeeh mov dtb,eax invoke FF,dta,dtb,dtc,dtd,dword ptr [edi+04*4],07,0f57c0fafh mov dta,eax invoke FF,dtd,dta,dtb,dtc,dword ptr [edi+05*4],12,04787c62ah mov dtd,eax invoke FF,dtc,dtd,dta,dtb,dword ptr [edi+06*4],17,0a8304613h mov dtc,eax invoke FF,dtb,dtc,dtd,dta,dword ptr [edi+07*4],22,0fd469501h mov dtb,eax invoke FF,dta,dtb,dtc,dtd,dword ptr [edi+08*4],07,0698098d8h mov dta,eax invoke FF,dtd,dta,dtb,dtc,dword ptr [edi+09*4],12,08b44f7afh mov dtd,eax invoke FF,dtc,dtd,dta,dtb,dword ptr [edi+10*4],17,0ffff5bb1h mov dtc,eax invoke FF,dtb,dtc,dtd,dta,dword ptr [edi+11*4],22,0895cd7beh mov dtb,eax invoke FF,dta,dtb,dtc,dtd,dword ptr [edi+12*4],07,06b901122h mov dta,eax invoke FF,dtd,dta,dtb,dtc,dword ptr [edi+13*4],12,0fd987193h mov dtd,eax invoke FF,dtc,dtd,dta,dtb,dword ptr [edi+14*4],17,0a679438eh mov dtc,eax invoke FF,dtb,dtc,dtd,dta,dword ptr [edi+15*4],22,049b40821h mov dtb,eax ; round 2 invoke GG,dta,dtb,dtc,dtd,dword ptr [edi+01*4],05,0f61e2562h mov dta,eax invoke GG,dtd,dta,dtb,dtc,dword ptr [edi+06*4],09,0c040b340h mov dtd,eax invoke GG,dtc,dtd,dta,dtb,dword ptr [edi+11*4],14,0265e5a51h mov dtc,eax invoke GG,dtb,dtc,dtd,dta,dword ptr [edi+00*4],20,0e9b6c7aah mov dtb,eax invoke GG,dta,dtb,dtc,dtd,dword ptr [edi+05*4],05,0d62f105dh mov dta,eax invoke GG,dtd,dta,dtb,dtc,dword ptr [edi+10*4],09,002441453h mov dtd,eax invoke GG,dtc,dtd,dta,dtb,dword ptr [edi+15*4],14,0d8a1e681h mov dtc,eax invoke GG,dtb,dtc,dtd,dta,dword ptr [edi+04*4],20,0e7d3fbc8h mov dtb,eax invoke GG,dta,dtb,dtc,dtd,dword ptr [edi+09*4],05,021e1cde6h mov dta,eax invoke GG,dtd,dta,dtb,dtc,dword ptr [edi+14*4],09,0c33707d6h mov dtd,eax invoke GG,dtc,dtd,dta,dtb,dword ptr [edi+03*4],14,0f4d50d87h mov dtc,eax invoke GG,dtb,dtc,dtd,dta,dword ptr [edi+08*4],20,0455a14edh mov dtb,eax invoke GG,dta,dtb,dtc,dtd,dword ptr [edi+13*4],05,0a9e3e905h mov dta,eax invoke GG,dtd,dta,dtb,dtc,dword ptr [edi+02*4],09,0fcefa3f8h mov dtd,eax invoke GG,dtc,dtd,dta,dtb,dword ptr [edi+07*4],14,0676f02d9h mov dtc,eax invoke GG,dtb,dtc,dtd,dta,dword ptr [edi+12*4],20,08d2a4c8ah mov dtb,eax ; round 3 invoke HH,dta,dtb,dtc,dtd,dword ptr [edi+05*4],04,0fffa3942h mov dta,eax invoke HH,dtd,dta,dtb,dtc,dword ptr [edi+08*4],11,08771f681h mov dtd,eax invoke HH,dtc,dtd,dta,dtb,dword ptr [edi+11*4],16,06d9d6122h mov dtc,eax invoke HH,dtb,dtc,dtd,dta,dword ptr [edi+14*4],23,0fde5380ch mov dtb,eax invoke HH,dta,dtb,dtc,dtd,dword ptr [edi+01*4],04,0a4beea44h mov dta,eax invoke HH,dtd,dta,dtb,dtc,dword ptr [edi+04*4],11,04bdecfa9h mov dtd,eax invoke HH,dtc,dtd,dta,dtb,dword ptr [edi+07*4],16,0f6bb4b60h mov dtc,eax invoke HH,dtb,dtc,dtd,dta,dword ptr [edi+10*4],23,0bebfbc70h mov dtb,eax invoke HH,dta,dtb,dtc,dtd,dword ptr [edi+13*4],04,0289b7ec6h mov dta,eax invoke HH,dtd,dta,dtb,dtc,dword ptr [edi+00*4],11,0eaa127fah mov dtd,eax invoke HH,dtc,dtd,dta,dtb,dword ptr [edi+03*4],16,0d4ef3085h mov dtc,eax invoke HH,dtb,dtc,dtd,dta,dword ptr [edi+06*4],23,004881d05h mov dtb,eax invoke HH,dta,dtb,dtc,dtd,dword ptr [edi+09*4],04,0d9d4d039h mov dta,eax invoke HH,dtd,dta,dtb,dtc,dword ptr [edi+12*4],11,0e6db99e5h mov dtd,eax invoke HH,dtc,dtd,dta,dtb,dword ptr [edi+15*4],16,01fa27cf8h mov dtc,eax invoke HH,dtb,dtc,dtd,dta,dword ptr [edi+02*4],23,0c4ac5665h mov dtb,eax ; round 4 invoke II,dta,dtb,dtc,dtd,dword ptr [edi+00*4],06,0f4292244h mov dta,eax invoke II,dtd,dta,dtb,dtc,dword ptr [edi+07*4],10,0432aff97h mov dtd,eax invoke II,dtc,dtd,dta,dtb,dword ptr [edi+14*4],15,0ab9423a7h mov dtc,eax invoke II,dtb,dtc,dtd,dta,dword ptr [edi+05*4],21,0fc93a039h mov dtb,eax invoke II,dta,dtb,dtc,dtd,dword ptr [edi+12*4],06,0655b59c3h mov dta,eax invoke II,dtd,dta,dtb,dtc,dword ptr [edi+03*4],10,08f0ccc92h mov dtd,eax invoke II,dtc,dtd,dta,dtb,dword ptr [edi+10*4],15,0ffeff47dh mov dtc,eax invoke II,dtb,dtc,dtd,dta,dword ptr [edi+01*4],21,085845dd1h mov dtb,eax invoke II,dta,dtb,dtc,dtd,dword ptr [edi+08*4],06,06fa87e4fh mov dta,eax invoke II,dtd,dta,dtb,dtc,dword ptr [edi+15*4],10,0fe2ce6e0h mov dtd,eax invoke II,dtc,dtd,dta,dtb,dword ptr [edi+06*4],15,0a3014314h mov dtc,eax invoke II,dtb,dtc,dtd,dta,dword ptr [edi+13*4],21,04e0811a1h mov dtb,eax invoke II,dta,dtb,dtc,dtd,dword ptr [edi+04*4],06,0f7537e82h mov dta,eax invoke II,dtd,dta,dtb,dtc,dword ptr [edi+11*4],10,0bd3af235h mov dtd,eax invoke II,dtc,dtd,dta,dtb,dword ptr [edi+02*4],15,02ad7d2bbh mov dtc,eax invoke II,dtb,dtc,dtd,dta,dword ptr [edi+09*4],21,0eb86d391h mov dtb,eax mov eax,dta add [esi].dtA,eax mov eax,dtb add [esi].dtB,eax . GG,dta,dtb,dtc,dtd,dword ptr [edi +05 *4] ,05 ,0d62f 105 dh mov dta,eax invoke GG,dtd,dta,dtb,dtc,dword ptr [edi + 10 *4] ,09 ,00 24 414 53h mov dtd,eax invoke GG,dtc,dtd,dta,dtb,dword ptr [edi +15 *4] ,14 ,0d8a1e681h mov dtc,eax. GG,dtd,dta,dtb,dtc,dword ptr [edi +06 *4] ,09 ,0c040b340h mov dtd,eax invoke GG,dtc,dtd,dta,dtb,dword ptr [edi +11 *4] ,14 ,02 65e5a51h mov dtc,eax invoke GG,dtb,dtc,dtd,dta,dword ptr [edi +00 *4], 20, 0e9b6c7aah mov. HH,dtd,dta,dtb,dtc,dword ptr [edi +00 *4] ,11 ,0eaa127fah mov dtd,eax invoke HH,dtc,dtd,dta,dtb,dword ptr [edi +03 *4] ,16 ,0d4ef 308 5h mov dtc,eax invoke HH,dtb,dtc,dtd,dta,dword ptr [edi +06 *4],23 ,00 4881d05h mov dtb,eax