📄 rmd320.asm
字号:
.686
.model flat,stdcall
option casemap:none
.const
pushad_size equ 8*4
pushad_eax equ 7*4
pushad_ecx equ 6*4
pushad_edx equ 5*4
pushad_ebx equ 4*4
pushad_esp equ 3*4
pushad_ebp equ 2*4
pushad_esi equ 1*4
pushad_edi equ 0*4
.data?
RMD320HashBuf db 64 dup(?)
RMD320Len dd ?
RMD320Index dd ?
RMD320Digest dd 10 dup(?)
.code
RMD320FF macro dwA, dwB, dwC, dwD, dwE, locX, rolS
mov edi,dwB
xor edi,dwC
xor edi,dwD
add dwA,locX
add dwA,edi
rol dwA,rolS
add dwA,dwE
rol dwC,10
endm
RMD320GG macro dwA, dwB, dwC, dwD, dwE, locX, rolS, constAC
mov edi,dwC
xor edi,dwD
and edi,dwB
xor edi,dwD
add dwA,[locX]
lea dwA,[dwA+edi+constAC]
rol dwA,rolS
add dwA,dwE
rol dwC,10
ENDM
RMD320HH macro dwA, dwB, dwC, dwD, dwE, locX, rolS, constAC
mov edi,dwC
xor edi,-1
or edi,dwB
xor edi,dwD
add dwA,[locX]
lea dwA,[dwA+edi+constAC]
rol dwA,rolS
add dwA,dwE
rol dwC,10
endm
RMD320II macro dwA, dwB, dwC, dwD, dwE, locX, rolS, constAC
mov edi,dwC
xor edi,dwB
and edi,dwD
xor edi,dwC
add dwA,[locX]
lea dwA,[dwA+edi+constAC]
rol dwA,rolS
add dwA,dwE
rol dwC,10
endm
RMD320JJ macro dwA, dwB, dwC, dwD, dwE, locX, rolS, constAC
mov edi,dwD
xor edi,-1
or edi,dwC
xor edi,dwB
add dwA,[locX]
lea dwA,[dwA+edi+constAC]
rol dwA,rolS
add dwA,dwE
rol dwC,10
ENDM
align dword
RMD320Transform proc
pushad
mov edi,offset RMD320Digest
mov ebp,offset RMD320HashBuf
mov eax,[edi+0*4]
mov ebx,[edi+1*4]
mov ecx,[edi+2*4]
mov edx,[edi+3*4]
mov esi,[edi+4*4]
;==========================================================
RMD320FF eax, ebx, ecx, edx, esi, dword ptr [ebp+00*4], 11
RMD320FF esi, eax, ebx, ecx, edx, dword ptr [ebp+01*4], 14
RMD320FF edx, esi, eax, ebx, ecx, dword ptr [ebp+02*4], 15
RMD320FF ecx, edx, esi, eax, ebx, dword ptr [ebp+03*4], 12
RMD320FF ebx, ecx, edx, esi, eax, dword ptr [ebp+04*4], 05
RMD320FF eax, ebx, ecx, edx, esi, dword ptr [ebp+05*4], 08
RMD320FF esi, eax, ebx, ecx, edx, dword ptr [ebp+06*4], 07
RMD320FF edx, esi, eax, ebx, ecx, dword ptr [ebp+07*4], 09
RMD320FF ecx, edx, esi, eax, ebx, dword ptr [ebp+08*4], 11
RMD320FF ebx, ecx, edx, esi, eax, dword ptr [ebp+09*4], 13
RMD320FF eax, ebx, ecx, edx, esi, dword ptr [ebp+10*4], 14
RMD320FF esi, eax, ebx, ecx, edx, dword ptr [ebp+11*4], 15
RMD320FF edx, esi, eax, ebx, ecx, dword ptr [ebp+12*4], 06
RMD320FF ecx, edx, esi, eax, ebx, dword ptr [ebp+13*4], 07
RMD320FF ebx, ecx, edx, esi, eax, dword ptr [ebp+14*4], 09
RMD320FF eax, ebx, ecx, edx, esi, dword ptr [ebp+15*4], 08
;==========================================================
mov edi,offset RMD320Digest
pushad; store a..e 1
mov eax,[edi+5*4];a2
mov ebx,[edi+6*4];b2
mov ecx,[edi+7*4];c2
mov edx,[edi+8*4];d2
mov esi,[edi+9*4];d2
;======================================================================
RMD320JJ eax, ebx, ecx, edx, esi, dword ptr [ebp+05*4], 08, 050a28be6h
RMD320JJ esi, eax, ebx, ecx, edx, dword ptr [ebp+14*4], 09, 050a28be6h
RMD320JJ edx, esi, eax, ebx, ecx, dword ptr [ebp+07*4], 09, 050a28be6h
RMD320JJ ecx, edx, esi, eax, ebx, dword ptr [ebp+00*4], 11, 050a28be6h
RMD320JJ ebx, ecx, edx, esi, eax, dword ptr [ebp+09*4], 13, 050a28be6h
RMD320JJ eax, ebx, ecx, edx, esi, dword ptr [ebp+02*4], 15, 050a28be6h
RMD320JJ esi, eax, ebx, ecx, edx, dword ptr [ebp+11*4], 15, 050a28be6h
RMD320JJ edx, esi, eax, ebx, ecx, dword ptr [ebp+04*4], 05, 050a28be6h
RMD320JJ ecx, edx, esi, eax, ebx, dword ptr [ebp+13*4], 07, 050a28be6h
RMD320JJ ebx, ecx, edx, esi, eax, dword ptr [ebp+06*4], 07, 050a28be6h
RMD320JJ eax, ebx, ecx, edx, esi, dword ptr [ebp+15*4], 08, 050a28be6h
RMD320JJ esi, eax, ebx, ecx, edx, dword ptr [ebp+08*4], 11, 050a28be6h
RMD320JJ edx, esi, eax, ebx, ecx, dword ptr [ebp+01*4], 14, 050a28be6h
RMD320JJ ecx, edx, esi, eax, ebx, dword ptr [ebp+10*4], 14, 050a28be6h
RMD320JJ ebx, ecx, edx, esi, eax, dword ptr [ebp+03*4], 12, 050a28be6h
RMD320JJ eax, ebx, ecx, edx, esi, dword ptr [ebp+12*4], 06, 050a28be6h
;======================================================================
mov edi,[esp+pushad_eax]
mov [esp+pushad_eax],eax
mov eax,edi
; xchg eax,[esp+pushad_eax]
pushad;store a..d 2
mov eax,[esp+pushad_size+pushad_eax];a1
mov ebx,[esp+pushad_size+pushad_ebx];b1
mov ecx,[esp+pushad_size+pushad_ecx];c1
mov edx,[esp+pushad_size+pushad_edx];d1
mov esi,[esp+pushad_size+pushad_esi];d1
;======================================================================
RMD320GG esi, eax, ebx, ecx, edx, dword ptr [ebp+07*4], 07, 05a827999h
RMD320GG edx, esi, eax, ebx, ecx, dword ptr [ebp+04*4], 06, 05a827999h
RMD320GG ecx, edx, esi, eax, ebx, dword ptr [ebp+13*4], 08, 05a827999h
RMD320GG ebx, ecx, edx, esi, eax, dword ptr [ebp+01*4], 13, 05a827999h
RMD320GG eax, ebx, ecx, edx, esi, dword ptr [ebp+10*4], 11, 05a827999h
RMD320GG esi, eax, ebx, ecx, edx, dword ptr [ebp+06*4], 09, 05a827999h
RMD320GG edx, esi, eax, ebx, ecx, dword ptr [ebp+15*4], 07, 05a827999h
RMD320GG ecx, edx, esi, eax, ebx, dword ptr [ebp+03*4], 15, 05a827999h
RMD320GG ebx, ecx, edx, esi, eax, dword ptr [ebp+12*4], 07, 05a827999h
RMD320GG eax, ebx, ecx, edx, esi, dword ptr [ebp+00*4], 12, 05a827999h
RMD320GG esi, eax, ebx, ecx, edx, dword ptr [ebp+09*4], 15, 05a827999h
RMD320GG edx, esi, eax, ebx, ecx, dword ptr [ebp+05*4], 09, 05a827999h
RMD320GG ecx, edx, esi, eax, ebx, dword ptr [ebp+02*4], 11, 05a827999h
RMD320GG ebx, ecx, edx, esi, eax, dword ptr [ebp+14*4], 07, 05a827999h
RMD320GG eax, ebx, ecx, edx, esi, dword ptr [ebp+11*4], 13, 05a827999h
RMD320GG esi, eax, ebx, ecx, edx, dword ptr [ebp+08*4], 12, 05a827999h
;======================================================================
mov [esp+pushad_size+pushad_eax],eax;a1
mov [esp+pushad_size+pushad_ebx],ebx;b1
mov [esp+pushad_size+pushad_ecx],ecx;c1
mov [esp+pushad_size+pushad_edx],edx;d1
mov [esp+pushad_size+pushad_esi],esi;d1
mov eax,[esp+pushad_eax];a2
mov ebx,[esp+pushad_ebx];b2
mov ecx,[esp+pushad_ecx];c2
mov edx,[esp+pushad_edx];d2
mov esi,[esp+pushad_esi];d2
;======================================================================
RMD320II esi, eax, ebx, ecx, edx, dword ptr [ebp+06*4], 09, 05c4dd124h
RMD320II edx, esi, eax, ebx, ecx, dword ptr [ebp+11*4], 13, 05c4dd124h
RMD320II ecx, edx, esi, eax, ebx, dword ptr [ebp+03*4], 15, 05c4dd124h
RMD320II ebx, ecx, edx, esi, eax, dword ptr [ebp+07*4], 07, 05c4dd124h
RMD320II eax, ebx, ecx, edx, esi, dword ptr [ebp+00*4], 12, 05c4dd124h
RMD320II esi, eax, ebx, ecx, edx, dword ptr [ebp+13*4], 08, 05c4dd124h
RMD320II edx, esi, eax, ebx, ecx, dword ptr [ebp+05*4], 09, 05c4dd124h
RMD320II ecx, edx, esi, eax, ebx, dword ptr [ebp+10*4], 11, 05c4dd124h
RMD320II ebx, ecx, edx, esi, eax, dword ptr [ebp+14*4], 07, 05c4dd124h
RMD320II eax, ebx, ecx, edx, esi, dword ptr [ebp+15*4], 07, 05c4dd124h
RMD320II esi, eax, ebx, ecx, edx, dword ptr [ebp+08*4], 12, 05c4dd124h
RMD320II edx, esi, eax, ebx, ecx, dword ptr [ebp+12*4], 07, 05c4dd124h
RMD320II ecx, edx, esi, eax, ebx, dword ptr [ebp+04*4], 06, 05c4dd124h
RMD320II ebx, ecx, edx, esi, eax, dword ptr [ebp+09*4], 15, 05c4dd124h
RMD320II eax, ebx, ecx, edx, esi, dword ptr [ebp+01*4], 13, 05c4dd124h
RMD320II esi, eax, ebx, ecx, edx, dword ptr [ebp+02*4], 11, 05c4dd124h
;======================================================================
mov edi,[esp+pushad_size+pushad_ebx]
mov [esp+pushad_size+pushad_ebx],ebx
mov ebx,edi
; xchg ebx,[esp+pushad_size+pushad_ebx]
mov [esp+pushad_eax],eax;a2
mov [esp+pushad_ebx],ebx;b2
mov [esp+pushad_ecx],ecx;c2
mov [esp+pushad_edx],edx;d2
mov [esp+pushad_esi],esi;d2
mov eax,[esp+pushad_size+pushad_eax];a1
mov ebx,[esp+pushad_size+pushad_ebx];b1
mov ecx,[esp+pushad_size+pushad_ecx];c1
mov edx,[esp+pushad_size+pushad_edx];d1
mov esi,[esp+pushad_size+pushad_esi];d1
;======================================================================
RMD320HH edx, esi, eax, ebx, ecx, dword ptr [ebp+03*4], 11, 06ed9eba1h
RMD320HH ecx, edx, esi, eax, ebx, dword ptr [ebp+10*4], 13, 06ed9eba1h
RMD320HH ebx, ecx, edx, esi, eax, dword ptr [ebp+14*4], 06, 06ed9eba1h
RMD320HH eax, ebx, ecx, edx, esi, dword ptr [ebp+04*4], 07, 06ed9eba1h
RMD320HH esi, eax, ebx, ecx, edx, dword ptr [ebp+09*4], 14, 06ed9eba1h
RMD320HH edx, esi, eax, ebx, ecx, dword ptr [ebp+15*4], 09, 06ed9eba1h
RMD320HH ecx, edx, esi, eax, ebx, dword ptr [ebp+08*4], 13, 06ed9eba1h
RMD320HH ebx, ecx, edx, esi, eax, dword ptr [ebp+01*4], 15, 06ed9eba1h
RMD320HH eax, ebx, ecx, edx, esi, dword ptr [ebp+02*4], 14, 06ed9eba1h
RMD320HH esi, eax, ebx, ecx, edx, dword ptr [ebp+07*4], 08, 06ed9eba1h
RMD320HH edx, esi, eax, ebx, ecx, dword ptr [ebp+00*4], 13, 06ed9eba1h
RMD320HH ecx, edx, esi, eax, ebx, dword ptr [ebp+06*4], 06, 06ed9eba1h
RMD320HH ebx, ecx, edx, esi, eax, dword ptr [ebp+13*4], 05, 06ed9eba1h
RMD320HH eax, ebx, ecx, edx, esi, dword ptr [ebp+11*4], 12, 06ed9eba1h
RMD320HH esi, eax, ebx, ecx, edx, dword ptr [ebp+05*4], 07, 06ed9eba1h
RMD320HH edx, esi, eax, ebx, ecx, dword ptr [ebp+12*4], 05, 06ed9eba1h
;======================================================================
mov [esp+pushad_size+pushad_eax],eax;a1
mov [esp+pushad_size+pushad_ebx],ebx;b1
mov [esp+pushad_size+pushad_ecx],ecx;c1
mov [esp+pushad_size+pushad_edx],edx;d1
mov [esp+pushad_size+pushad_esi],esi;d1
mov eax,[esp+pushad_eax];a2
mov ebx,[esp+pushad_ebx];b2
mov ecx,[esp+pushad_ecx];c2
mov edx,[esp+pushad_edx];d2
mov esi,[esp+pushad_esi];d2
;======================================================================
RMD320HH edx, esi, eax, ebx, ecx, dword ptr [ebp+15*4], 09, 06d703ef3h
RMD320HH ecx, edx, esi, eax, ebx, dword ptr [ebp+05*4], 07, 06d703ef3h
RMD320HH ebx, ecx, edx, esi, eax, dword ptr [ebp+01*4], 15, 06d703ef3h
RMD320HH eax, ebx, ecx, edx, esi, dword ptr [ebp+03*4], 11, 06d703ef3h
RMD320HH esi, eax, ebx, ecx, edx, dword ptr [ebp+07*4], 08, 06d703ef3h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -