aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/sha/asm
diff options
context:
space:
mode:
authorAndy Polyakov <appro@openssl.org>1999-09-05 14:17:42 +0000
committerAndy Polyakov <appro@openssl.org>1999-09-05 14:17:42 +0000
commit69fb1c3f9db266105a7c1072cdd609b6bcbbd19e (patch)
treeee94d7211f277e86f65fb20cc30ea2d036e5d8c1 /crypto/sha/asm
parent7f7c318cfc4899cf1e9e249e5b0e34497ef1becc (diff)
downloadopenssl-69fb1c3f9db266105a7c1072cdd609b6bcbbd19e.tar.gz
SHA clean-up Intel assembler companion.
I've chosen to nest two functions in order to save about 4K. As a result s1-win32.asm doesn't look right (nested PROC/ENDP SEGMENT/ENDS) and it's probably impossible to compile. I assume I have to reconsider... But not today...
Diffstat (limited to 'crypto/sha/asm')
-rw-r--r--crypto/sha/asm/s1-win32.asm1138
-rw-r--r--crypto/sha/asm/sha1-586.pl107
2 files changed, 672 insertions, 573 deletions
diff --git a/crypto/sha/asm/s1-win32.asm b/crypto/sha/asm/s1-win32.asm
index 61335666b9..699afdb022 100644
--- a/crypto/sha/asm/s1-win32.asm
+++ b/crypto/sha/asm/s1-win32.asm
@@ -8,302 +8,303 @@
.486
.model FLAT
_TEXT SEGMENT
-PUBLIC _sha1_block_x86
+PUBLIC _sha1_block_asm_data_order
-_sha1_block_x86 PROC NEAR
+_sha1_block_asm_data_order PROC NEAR
+ mov ecx, DWORD PTR 12[esp]
push esi
+ shl ecx, 6
+ mov esi, DWORD PTR 12[esp]
push ebp
- mov eax, DWORD PTR 20[esp]
- mov esi, DWORD PTR 16[esp]
- add eax, esi
- mov ebp, DWORD PTR 12[esp]
+ add ecx, esi
push ebx
- sub eax, 64
+ mov ebp, DWORD PTR 16[esp]
push edi
- mov ebx, DWORD PTR 4[ebp]
- sub esp, 72
mov edx, DWORD PTR 12[ebp]
+ sub esp, 108
mov edi, DWORD PTR 16[ebp]
- mov ecx, DWORD PTR 8[ebp]
- mov DWORD PTR 68[esp],eax
+ mov ebx, DWORD PTR 8[ebp]
+ mov DWORD PTR 68[esp],ecx
; First we need to setup the X array
- mov eax, DWORD PTR [esi]
L000start:
; First, load the words onto the stack in network byte order
+ mov eax, DWORD PTR [esi]
+ mov ecx, DWORD PTR 4[esi]
bswap eax
+ bswap ecx
mov DWORD PTR [esp],eax
- mov eax, DWORD PTR 4[esi]
- bswap eax
- mov DWORD PTR 4[esp],eax
+ mov DWORD PTR 4[esp],ecx
mov eax, DWORD PTR 8[esi]
+ mov ecx, DWORD PTR 12[esi]
bswap eax
+ bswap ecx
mov DWORD PTR 8[esp],eax
- mov eax, DWORD PTR 12[esi]
- bswap eax
- mov DWORD PTR 12[esp],eax
+ mov DWORD PTR 12[esp],ecx
mov eax, DWORD PTR 16[esi]
+ mov ecx, DWORD PTR 20[esi]
bswap eax
+ bswap ecx
mov DWORD PTR 16[esp],eax
- mov eax, DWORD PTR 20[esi]
- bswap eax
- mov DWORD PTR 20[esp],eax
+ mov DWORD PTR 20[esp],ecx
mov eax, DWORD PTR 24[esi]
+ mov ecx, DWORD PTR 28[esi]
bswap eax
+ bswap ecx
mov DWORD PTR 24[esp],eax
- mov eax, DWORD PTR 28[esi]
- bswap eax
- mov DWORD PTR 28[esp],eax
+ mov DWORD PTR 28[esp],ecx
mov eax, DWORD PTR 32[esi]
+ mov ecx, DWORD PTR 36[esi]
bswap eax
+ bswap ecx
mov DWORD PTR 32[esp],eax
- mov eax, DWORD PTR 36[esi]
- bswap eax
- mov DWORD PTR 36[esp],eax
+ mov DWORD PTR 36[esp],ecx
mov eax, DWORD PTR 40[esi]
+ mov ecx, DWORD PTR 44[esi]
bswap eax
+ bswap ecx
mov DWORD PTR 40[esp],eax
- mov eax, DWORD PTR 44[esi]
- bswap eax
- mov DWORD PTR 44[esp],eax
+ mov DWORD PTR 44[esp],ecx
mov eax, DWORD PTR 48[esi]
+ mov ecx, DWORD PTR 52[esi]
bswap eax
+ bswap ecx
mov DWORD PTR 48[esp],eax
- mov eax, DWORD PTR 52[esi]
- bswap eax
- mov DWORD PTR 52[esp],eax
+ mov DWORD PTR 52[esp],ecx
mov eax, DWORD PTR 56[esi]
+ mov ecx, DWORD PTR 60[esi]
bswap eax
+ bswap ecx
mov DWORD PTR 56[esp],eax
- mov eax, DWORD PTR 60[esi]
- bswap eax
- mov DWORD PTR 60[esp],eax
+ mov DWORD PTR 60[esp],ecx
; We now have the X array on the stack
; starting at sp-4
- mov DWORD PTR 64[esp],esi
+ mov DWORD PTR 132[esp],esi
+L001shortcut:
;
; Start processing
mov eax, DWORD PTR [ebp]
+ mov ecx, DWORD PTR 4[ebp]
; 00_15 0
- mov esi, ecx
+ mov esi, ebx
mov ebp, eax
xor esi, edx
rol ebp, 5
- and esi, ebx
+ and esi, ecx
add ebp, edi
- ror ebx, 1
+ ror ecx, 1
mov edi, DWORD PTR [esp]
- ror ebx, 1
+ ror ecx, 1
xor esi, edx
lea ebp, DWORD PTR 1518500249[edi*1+ebp]
- mov edi, ebx
+ mov edi, ecx
add esi, ebp
- xor edi, ecx
+ xor edi, ebx
mov ebp, esi
and edi, eax
rol ebp, 5
add ebp, edx
mov edx, DWORD PTR 4[esp]
ror eax, 1
- xor edi, ecx
+ xor edi, ebx
ror eax, 1
lea ebp, DWORD PTR 1518500249[edx*1+ebp]
add edi, ebp
; 00_15 2
mov edx, eax
mov ebp, edi
- xor edx, ebx
+ xor edx, ecx
rol ebp, 5
and edx, esi
- add ebp, ecx
+ add ebp, ebx
ror esi, 1
- mov ecx, DWORD PTR 8[esp]
+ mov ebx, DWORD PTR 8[esp]
ror esi, 1
- xor edx, ebx
- lea ebp, DWORD PTR 1518500249[ecx*1+ebp]
- mov ecx, esi
+ xor edx, ecx
+ lea ebp, DWORD PTR 1518500249[ebx*1+ebp]
+ mov ebx, esi
add edx, ebp
- xor ecx, eax
+ xor ebx, eax
mov ebp, edx
- and ecx, edi
+ and ebx, edi
rol ebp, 5
- add ebp, ebx
- mov ebx, DWORD PTR 12[esp]
+ add ebp, ecx
+ mov ecx, DWORD PTR 12[esp]
ror edi, 1
- xor ecx, eax
+ xor ebx, eax
ror edi, 1
- lea ebp, DWORD PTR 1518500249[ebx*1+ebp]
- add ecx, ebp
+ lea ebp, DWORD PTR 1518500249[ecx*1+ebp]
+ add ebx, ebp
; 00_15 4
- mov ebx, edi
- mov ebp, ecx
- xor ebx, esi
+ mov ecx, edi
+ mov ebp, ebx
+ xor ecx, esi
rol ebp, 5
- and ebx, edx
+ and ecx, edx
add ebp, eax
ror edx, 1
mov eax, DWORD PTR 16[esp]
ror edx, 1
- xor ebx, esi
+ xor ecx, esi
lea ebp, DWORD PTR 1518500249[eax*1+ebp]
mov eax, edx
- add ebx, ebp
+ add ecx, ebp
xor eax, edi
- mov ebp, ebx
- and eax, ecx
+ mov ebp, ecx
+ and eax, ebx
rol ebp, 5
add ebp, esi
mov esi, DWORD PTR 20[esp]
- ror ecx, 1
+ ror ebx, 1
xor eax, edi
- ror ecx, 1
+ ror ebx, 1
lea ebp, DWORD PTR 1518500249[esi*1+ebp]
add eax, ebp
; 00_15 6
- mov esi, ecx
+ mov esi, ebx
mov ebp, eax
xor esi, edx
rol ebp, 5
- and esi, ebx
+ and esi, ecx
add ebp, edi
- ror ebx, 1
+ ror ecx, 1
mov edi, DWORD PTR 24[esp]
- ror ebx, 1
+ ror ecx, 1
xor esi, edx
lea ebp, DWORD PTR 1518500249[edi*1+ebp]
- mov edi, ebx
+ mov edi, ecx
add esi, ebp
- xor edi, ecx
+ xor edi, ebx
mov ebp, esi
and edi, eax
rol ebp, 5
add ebp, edx
mov edx, DWORD PTR 28[esp]
ror eax, 1
- xor edi, ecx
+ xor edi, ebx
ror eax, 1
lea ebp, DWORD PTR 1518500249[edx*1+ebp]
add edi, ebp
; 00_15 8
mov edx, eax
mov ebp, edi
- xor edx, ebx
+ xor edx, ecx
rol ebp, 5
and edx, esi
- add ebp, ecx
+ add ebp, ebx
ror esi, 1
- mov ecx, DWORD PTR 32[esp]
+ mov ebx, DWORD PTR 32[esp]
ror esi, 1
- xor edx, ebx
- lea ebp, DWORD PTR 1518500249[ecx*1+ebp]
- mov ecx, esi
+ xor edx, ecx
+ lea ebp, DWORD PTR 1518500249[ebx*1+ebp]
+ mov ebx, esi
add edx, ebp
- xor ecx, eax
+ xor ebx, eax
mov ebp, edx
- and ecx, edi
+ and ebx, edi
rol ebp, 5
- add ebp, ebx
- mov ebx, DWORD PTR 36[esp]
+ add ebp, ecx
+ mov ecx, DWORD PTR 36[esp]
ror edi, 1
- xor ecx, eax
+ xor ebx, eax
ror edi, 1
- lea ebp, DWORD PTR 1518500249[ebx*1+ebp]
- add ecx, ebp
+ lea ebp, DWORD PTR 1518500249[ecx*1+ebp]
+ add ebx, ebp
; 00_15 10
- mov ebx, edi
- mov ebp, ecx
- xor ebx, esi
+ mov ecx, edi
+ mov ebp, ebx
+ xor ecx, esi
rol ebp, 5
- and ebx, edx
+ and ecx, edx
add ebp, eax
ror edx, 1
mov eax, DWORD PTR 40[esp]
ror edx, 1
- xor ebx, esi
+ xor ecx, esi
lea ebp, DWORD PTR 1518500249[eax*1+ebp]
mov eax, edx
- add ebx, ebp
+ add ecx, ebp
xor eax, edi
- mov ebp, ebx
- and eax, ecx
+ mov ebp, ecx
+ and eax, ebx
rol ebp, 5
add ebp, esi
mov esi, DWORD PTR 44[esp]
- ror ecx, 1
+ ror ebx, 1
xor eax, edi
- ror ecx, 1
+ ror ebx, 1
lea ebp, DWORD PTR 1518500249[esi*1+ebp]
add eax, ebp
; 00_15 12
- mov esi, ecx
+ mov esi, ebx
mov ebp, eax
xor esi, edx
rol ebp, 5
- and esi, ebx
+ and esi, ecx
add ebp, edi
- ror ebx, 1
+ ror ecx, 1
mov edi, DWORD PTR 48[esp]
- ror ebx, 1
+ ror ecx, 1
xor esi, edx
lea ebp, DWORD PTR 1518500249[edi*1+ebp]
- mov edi, ebx
+ mov edi, ecx
add esi, ebp
- xor edi, ecx
+ xor edi, ebx
mov ebp, esi
and edi, eax
rol ebp, 5
add ebp, edx
mov edx, DWORD PTR 52[esp]
ror eax, 1
- xor edi, ecx
+ xor edi, ebx
ror eax, 1
lea ebp, DWORD PTR 1518500249[edx*1+ebp]
add edi, ebp
; 00_15 14
mov edx, eax
mov ebp, edi
- xor edx, ebx
+ xor edx, ecx
rol ebp, 5
and edx, esi
- add ebp, ecx
+ add ebp, ebx
ror esi, 1
- mov ecx, DWORD PTR 56[esp]
+ mov ebx, DWORD PTR 56[esp]
ror esi, 1
- xor edx, ebx
- lea ebp, DWORD PTR 1518500249[ecx*1+ebp]
- mov ecx, esi
+ xor edx, ecx
+ lea ebp, DWORD PTR 1518500249[ebx*1+ebp]
+ mov ebx, esi
add edx, ebp
- xor ecx, eax
+ xor ebx, eax
mov ebp, edx
- and ecx, edi
+ and ebx, edi
rol ebp, 5
- add ebp, ebx
- mov ebx, DWORD PTR 60[esp]
+ add ebp, ecx
+ mov ecx, DWORD PTR 60[esp]
ror edi, 1
- xor ecx, eax
+ xor ebx, eax
ror edi, 1
- lea ebp, DWORD PTR 1518500249[ebx*1+ebp]
- add ecx, ebp
+ lea ebp, DWORD PTR 1518500249[ecx*1+ebp]
+ add ebx, ebp
; 16_19 16
nop
mov ebp, DWORD PTR [esp]
- mov ebx, DWORD PTR 8[esp]
- xor ebx, ebp
+ mov ecx, DWORD PTR 8[esp]
+ xor ecx, ebp
mov ebp, DWORD PTR 32[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 52[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, edi
- rol ebx, 1
+ rol ecx, 1
xor ebp, esi
- mov DWORD PTR [esp],ebx
+ mov DWORD PTR [esp],ecx
and ebp, edx
- lea ebx, DWORD PTR 1518500249[eax*1+ebx]
+ lea ecx, DWORD PTR 1518500249[eax*1+ecx]
xor ebp, esi
- mov eax, ecx
- add ebx, ebp
+ mov eax, ebx
+ add ecx, ebp
rol eax, 5
ror edx, 1
- add ebx, eax
+ add ecx, eax
mov eax, DWORD PTR 4[esp]
mov ebp, DWORD PTR 12[esp]
xor eax, ebp
@@ -316,14 +317,14 @@ L000start:
mov ebp, edx
xor ebp, edi
mov DWORD PTR 4[esp],eax
- and ebp, ecx
+ and ebp, ebx
lea eax, DWORD PTR 1518500249[esi*1+eax]
xor ebp, edi
- mov esi, ebx
+ mov esi, ecx
rol esi, 5
- ror ecx, 1
+ ror ebx, 1
add eax, esi
- ror ecx, 1
+ ror ebx, 1
add eax, ebp
; 16_19 18
mov ebp, DWORD PTR 8[esp]
@@ -333,17 +334,17 @@ L000start:
xor esi, ebp
mov ebp, DWORD PTR 60[esp]
xor esi, ebp
- mov ebp, ecx
+ mov ebp, ebx
rol esi, 1
xor ebp, edx
mov DWORD PTR 8[esp],esi
- and ebp, ebx
+ and ebp, ecx
lea esi, DWORD PTR 1518500249[edi*1+esi]
xor ebp, edx
mov edi, eax
add esi, ebp
rol edi, 5
- ror ebx, 1
+ ror ecx, 1
add esi, edi
mov edi, DWORD PTR 12[esp]
mov ebp, DWORD PTR 20[esp]
@@ -351,15 +352,15 @@ L000start:
mov ebp, DWORD PTR 44[esp]
xor edi, ebp
mov ebp, DWORD PTR [esp]
- ror ebx, 1
+ ror ecx, 1
xor edi, ebp
rol edi, 1
- mov ebp, ebx
- xor ebp, ecx
+ mov ebp, ecx
+ xor ebp, ebx
mov DWORD PTR 12[esp],edi
and ebp, eax
lea edi, DWORD PTR 1518500249[edx*1+edi]
- xor ebp, ecx
+ xor ebp, ebx
mov edx, esi
rol edx, 5
ror eax, 1
@@ -378,54 +379,54 @@ L000start:
rol edx, 1
xor ebp, eax
mov DWORD PTR 16[esp],edx
- xor ebp, ebx
- lea edx, DWORD PTR 1859775393[ecx*1+edx]
- mov ecx, edi
- rol ecx, 5
+ xor ebp, ecx
+ lea edx, DWORD PTR 1859775393[ebx*1+edx]
+ mov ebx, edi
+ rol ebx, 5
ror esi, 1
- add ecx, ebp
+ add ebx, ebp
ror esi, 1
- add edx, ecx
+ add edx, ebx
; 20_39 21
- mov ecx, DWORD PTR 20[esp]
+ mov ebx, DWORD PTR 20[esp]
mov ebp, DWORD PTR 28[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 52[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 8[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, edi
- rol ecx, 1
+ rol ebx, 1
xor ebp, esi
- mov DWORD PTR 20[esp],ecx
+ mov DWORD PTR 20[esp],ebx
xor ebp, eax
- lea ecx, DWORD PTR 1859775393[ebx*1+ecx]
- mov ebx, edx
- rol ebx, 5
+ lea ebx, DWORD PTR 1859775393[ecx*1+ebx]
+ mov ecx, edx
+ rol ecx, 5
ror edi, 1
- add ebx, ebp
+ add ecx, ebp
ror edi, 1
- add ecx, ebx
+ add ebx, ecx
; 20_39 22
- mov ebx, DWORD PTR 24[esp]
+ mov ecx, DWORD PTR 24[esp]
mov ebp, DWORD PTR 32[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 56[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 12[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, edx
- rol ebx, 1
+ rol ecx, 1
xor ebp, edi
- mov DWORD PTR 24[esp],ebx
+ mov DWORD PTR 24[esp],ecx
xor ebp, esi
- lea ebx, DWORD PTR 1859775393[eax*1+ebx]
- mov eax, ecx
+ lea ecx, DWORD PTR 1859775393[eax*1+ecx]
+ mov eax, ebx
rol eax, 5
ror edx, 1
add eax, ebp
ror edx, 1
- add ebx, eax
+ add ecx, eax
; 20_39 23
mov eax, DWORD PTR 28[esp]
mov ebp, DWORD PTR 36[esp]
@@ -434,17 +435,17 @@ L000start:
xor eax, ebp
mov ebp, DWORD PTR 16[esp]
xor eax, ebp
- mov ebp, ecx
+ mov ebp, ebx
rol eax, 1
xor ebp, edx
mov DWORD PTR 28[esp],eax
xor ebp, edi
lea eax, DWORD PTR 1859775393[esi*1+eax]
- mov esi, ebx
+ mov esi, ecx
rol esi, 5
- ror ecx, 1
+ ror ebx, 1
add esi, ebp
- ror ecx, 1
+ ror ebx, 1
add eax, esi
; 20_39 24
mov esi, DWORD PTR 32[esp]
@@ -454,17 +455,17 @@ L000start:
xor esi, ebp
mov ebp, DWORD PTR 20[esp]
xor esi, ebp
- mov ebp, ebx
+ mov ebp, ecx
rol esi, 1
- xor ebp, ecx
+ xor ebp, ebx
mov DWORD PTR 32[esp],esi
xor ebp, edx
lea esi, DWORD PTR 1859775393[edi*1+esi]
mov edi, eax
rol edi, 5
- ror ebx, 1
+ ror ecx, 1
add edi, ebp
- ror ebx, 1
+ ror ecx, 1
add esi, edi
; 20_39 25
mov edi, DWORD PTR 36[esp]
@@ -476,9 +477,9 @@ L000start:
xor edi, ebp
mov ebp, eax
rol edi, 1
- xor ebp, ebx
- mov DWORD PTR 36[esp],edi
xor ebp, ecx
+ mov DWORD PTR 36[esp],edi
+ xor ebp, ebx
lea edi, DWORD PTR 1859775393[edx*1+edi]
mov edx, esi
rol edx, 5
@@ -498,54 +499,54 @@ L000start:
rol edx, 1
xor ebp, eax
mov DWORD PTR 40[esp],edx
- xor ebp, ebx
- lea edx, DWORD PTR 1859775393[ecx*1+edx]
- mov ecx, edi
- rol ecx, 5
+ xor ebp, ecx
+ lea edx, DWORD PTR 1859775393[ebx*1+edx]
+ mov ebx, edi
+ rol ebx, 5
ror esi, 1
- add ecx, ebp
+ add ebx, ebp
ror esi, 1
- add edx, ecx
+ add edx, ebx
; 20_39 27
- mov ecx, DWORD PTR 44[esp]
+ mov ebx, DWORD PTR 44[esp]
mov ebp, DWORD PTR 52[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 12[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 32[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, edi
- rol ecx, 1
+ rol ebx, 1
xor ebp, esi
- mov DWORD PTR 44[esp],ecx
+ mov DWORD PTR 44[esp],ebx
xor ebp, eax
- lea ecx, DWORD PTR 1859775393[ebx*1+ecx]
- mov ebx, edx
- rol ebx, 5
+ lea ebx, DWORD PTR 1859775393[ecx*1+ebx]
+ mov ecx, edx
+ rol ecx, 5
ror edi, 1
- add ebx, ebp
+ add ecx, ebp
ror edi, 1
- add ecx, ebx
+ add ebx, ecx
; 20_39 28
- mov ebx, DWORD PTR 48[esp]
+ mov ecx, DWORD PTR 48[esp]
mov ebp, DWORD PTR 56[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 16[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 36[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, edx
- rol ebx, 1
+ rol ecx, 1
xor ebp, edi
- mov DWORD PTR 48[esp],ebx
+ mov DWORD PTR 48[esp],ecx
xor ebp, esi
- lea ebx, DWORD PTR 1859775393[eax*1+ebx]
- mov eax, ecx
+ lea ecx, DWORD PTR 1859775393[eax*1+ecx]
+ mov eax, ebx
rol eax, 5
ror edx, 1
add eax, ebp
ror edx, 1
- add ebx, eax
+ add ecx, eax
; 20_39 29
mov eax, DWORD PTR 52[esp]
mov ebp, DWORD PTR 60[esp]
@@ -554,17 +555,17 @@ L000start:
xor eax, ebp
mov ebp, DWORD PTR 40[esp]
xor eax, ebp
- mov ebp, ecx
+ mov ebp, ebx
rol eax, 1
xor ebp, edx
mov DWORD PTR 52[esp],eax
xor ebp, edi
lea eax, DWORD PTR 1859775393[esi*1+eax]
- mov esi, ebx
+ mov esi, ecx
rol esi, 5
- ror ecx, 1
+ ror ebx, 1
add esi, ebp
- ror ecx, 1
+ ror ebx, 1
add eax, esi
; 20_39 30
mov esi, DWORD PTR 56[esp]
@@ -574,17 +575,17 @@ L000start:
xor esi, ebp
mov ebp, DWORD PTR 44[esp]
xor esi, ebp
- mov ebp, ebx
+ mov ebp, ecx
rol esi, 1
- xor ebp, ecx
+ xor ebp, ebx
mov DWORD PTR 56[esp],esi
xor ebp, edx
lea esi, DWORD PTR 1859775393[edi*1+esi]
mov edi, eax
rol edi, 5
- ror ebx, 1
+ ror ecx, 1
add edi, ebp
- ror ebx, 1
+ ror ecx, 1
add esi, edi
; 20_39 31
mov edi, DWORD PTR 60[esp]
@@ -596,9 +597,9 @@ L000start:
xor edi, ebp
mov ebp, eax
rol edi, 1
- xor ebp, ebx
- mov DWORD PTR 60[esp],edi
xor ebp, ecx
+ mov DWORD PTR 60[esp],edi
+ xor ebp, ebx
lea edi, DWORD PTR 1859775393[edx*1+edi]
mov edx, esi
rol edx, 5
@@ -618,54 +619,54 @@ L000start:
rol edx, 1
xor ebp, eax
mov DWORD PTR [esp],edx
- xor ebp, ebx
- lea edx, DWORD PTR 1859775393[ecx*1+edx]
- mov ecx, edi
- rol ecx, 5
+ xor ebp, ecx
+ lea edx, DWORD PTR 1859775393[ebx*1+edx]
+ mov ebx, edi
+ rol ebx, 5
ror esi, 1
- add ecx, ebp
+ add ebx, ebp
ror esi, 1
- add edx, ecx
+ add edx, ebx
; 20_39 33
- mov ecx, DWORD PTR 4[esp]
+ mov ebx, DWORD PTR 4[esp]
mov ebp, DWORD PTR 12[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 36[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 56[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, edi
- rol ecx, 1
+ rol ebx, 1
xor ebp, esi
- mov DWORD PTR 4[esp],ecx
+ mov DWORD PTR 4[esp],ebx
xor ebp, eax
- lea ecx, DWORD PTR 1859775393[ebx*1+ecx]
- mov ebx, edx
- rol ebx, 5
+ lea ebx, DWORD PTR 1859775393[ecx*1+ebx]
+ mov ecx, edx
+ rol ecx, 5
ror edi, 1
- add ebx, ebp
+ add ecx, ebp
ror edi, 1
- add ecx, ebx
+ add ebx, ecx
; 20_39 34
- mov ebx, DWORD PTR 8[esp]
+ mov ecx, DWORD PTR 8[esp]
mov ebp, DWORD PTR 16[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 40[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 60[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, edx
- rol ebx, 1
+ rol ecx, 1
xor ebp, edi
- mov DWORD PTR 8[esp],ebx
+ mov DWORD PTR 8[esp],ecx
xor ebp, esi
- lea ebx, DWORD PTR 1859775393[eax*1+ebx]
- mov eax, ecx
+ lea ecx, DWORD PTR 1859775393[eax*1+ecx]
+ mov eax, ebx
rol eax, 5
ror edx, 1
add eax, ebp
ror edx, 1
- add ebx, eax
+ add ecx, eax
; 20_39 35
mov eax, DWORD PTR 12[esp]
mov ebp, DWORD PTR 20[esp]
@@ -674,17 +675,17 @@ L000start:
xor eax, ebp
mov ebp, DWORD PTR [esp]
xor eax, ebp
- mov ebp, ecx
+ mov ebp, ebx
rol eax, 1
xor ebp, edx
mov DWORD PTR 12[esp],eax
xor ebp, edi
lea eax, DWORD PTR 1859775393[esi*1+eax]
- mov esi, ebx
+ mov esi, ecx
rol esi, 5
- ror ecx, 1
+ ror ebx, 1
add esi, ebp
- ror ecx, 1
+ ror ebx, 1
add eax, esi
; 20_39 36
mov esi, DWORD PTR 16[esp]
@@ -694,17 +695,17 @@ L000start:
xor esi, ebp
mov ebp, DWORD PTR 4[esp]
xor esi, ebp
- mov ebp, ebx
+ mov ebp, ecx
rol esi, 1
- xor ebp, ecx
+ xor ebp, ebx
mov DWORD PTR 16[esp],esi
xor ebp, edx
lea esi, DWORD PTR 1859775393[edi*1+esi]
mov edi, eax
rol edi, 5
- ror ebx, 1
+ ror ecx, 1
add edi, ebp
- ror ebx, 1
+ ror ecx, 1
add esi, edi
; 20_39 37
mov edi, DWORD PTR 20[esp]
@@ -716,9 +717,9 @@ L000start:
xor edi, ebp
mov ebp, eax
rol edi, 1
- xor ebp, ebx
- mov DWORD PTR 20[esp],edi
xor ebp, ecx
+ mov DWORD PTR 20[esp],edi
+ xor ebp, ebx
lea edi, DWORD PTR 1859775393[edx*1+edi]
mov edx, esi
rol edx, 5
@@ -738,57 +739,57 @@ L000start:
rol edx, 1
xor ebp, eax
mov DWORD PTR 24[esp],edx
- xor ebp, ebx
- lea edx, DWORD PTR 1859775393[ecx*1+edx]
- mov ecx, edi
- rol ecx, 5
+ xor ebp, ecx
+ lea edx, DWORD PTR 1859775393[ebx*1+edx]
+ mov ebx, edi
+ rol ebx, 5
ror esi, 1
- add ecx, ebp
+ add ebx, ebp
ror esi, 1
- add edx, ecx
+ add edx, ebx
; 20_39 39
- mov ecx, DWORD PTR 28[esp]
+ mov ebx, DWORD PTR 28[esp]
mov ebp, DWORD PTR 36[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 60[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 16[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, edi
- rol ecx, 1
+ rol ebx, 1
xor ebp, esi
- mov DWORD PTR 28[esp],ecx
+ mov DWORD PTR 28[esp],ebx
xor ebp, eax
- lea ecx, DWORD PTR 1859775393[ebx*1+ecx]
- mov ebx, edx
- rol ebx, 5
+ lea ebx, DWORD PTR 1859775393[ecx*1+ebx]
+ mov ecx, edx
+ rol ecx, 5
ror edi, 1
- add ebx, ebp
+ add ecx, ebp
ror edi, 1
- add ecx, ebx
+ add ebx, ecx
; 40_59 40
- mov ebx, DWORD PTR 32[esp]
+ mov ecx, DWORD PTR 32[esp]
mov ebp, DWORD PTR 40[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR [esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 20[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, edx
- rol ebx, 1
+ rol ecx, 1
or ebp, edi
- mov DWORD PTR 32[esp],ebx
+ mov DWORD PTR 32[esp],ecx
and ebp, esi
- lea ebx, DWORD PTR 2400959708[eax*1+ebx]
+ lea ecx, DWORD PTR 2400959708[eax*1+ecx]
mov eax, edx
ror edx, 1
and eax, edi
or ebp, eax
- mov eax, ecx
+ mov eax, ebx
rol eax, 5
add ebp, eax
mov eax, DWORD PTR 36[esp]
- add ebx, ebp
+ add ecx, ebp
mov ebp, DWORD PTR 44[esp]
xor eax, ebp
mov ebp, DWORD PTR 4[esp]
@@ -797,19 +798,19 @@ L000start:
ror edx, 1
xor eax, ebp
rol eax, 1
- mov ebp, ecx
+ mov ebp, ebx
mov DWORD PTR 36[esp],eax
or ebp, edx
lea eax, DWORD PTR 2400959708[esi*1+eax]
- mov esi, ecx
+ mov esi, ebx
and ebp, edi
and esi, edx
or ebp, esi
- mov esi, ebx
+ mov esi, ecx
rol esi, 5
- ror ecx, 1
+ ror ebx, 1
add ebp, esi
- ror ecx, 1
+ ror ebx, 1
add eax, ebp
; 40_59 41
; 40_59 42
@@ -820,15 +821,15 @@ L000start:
xor esi, ebp
mov ebp, DWORD PTR 28[esp]
xor esi, ebp
- mov ebp, ebx
+ mov ebp, ecx
rol esi, 1
- or ebp, ecx
+ or ebp, ebx
mov DWORD PTR 40[esp],esi
and ebp, edx
lea esi, DWORD PTR 2400959708[edi*1+esi]
- mov edi, ebx
- ror ebx, 1
- and edi, ecx
+ mov edi, ecx
+ ror ecx, 1
+ and edi, ebx
or ebp, edi
mov edi, eax
rol edi, 5
@@ -840,16 +841,16 @@ L000start:
mov ebp, DWORD PTR 12[esp]
xor edi, ebp
mov ebp, DWORD PTR 32[esp]
- ror ebx, 1
+ ror ecx, 1
xor edi, ebp
rol edi, 1
mov ebp, eax
mov DWORD PTR 44[esp],edi
- or ebp, ebx
+ or ebp, ecx
lea edi, DWORD PTR 2400959708[edx*1+edi]
mov edx, eax
- and ebp, ecx
- and edx, ebx
+ and ebp, ebx
+ and edx, ecx
or ebp, edx
mov edx, esi
rol edx, 5
@@ -870,63 +871,63 @@ L000start:
rol edx, 1
or ebp, eax
mov DWORD PTR 48[esp],edx
- and ebp, ebx
- lea edx, DWORD PTR 2400959708[ecx*1+edx]
- mov ecx, esi
+ and ebp, ecx
+ lea edx, DWORD PTR 2400959708[ebx*1+edx]
+ mov ebx, esi
ror esi, 1
- and ecx, eax
- or ebp, ecx
- mov ecx, edi
- rol ecx, 5
- add ebp, ecx
- mov ecx, DWORD PTR 52[esp]
+ and ebx, eax
+ or ebp, ebx
+ mov ebx, edi
+ rol ebx, 5
+ add ebp, ebx
+ mov ebx, DWORD PTR 52[esp]
add edx, ebp
mov ebp, DWORD PTR 60[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 20[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 40[esp]
ror esi, 1
- xor ecx, ebp
- rol ecx, 1
+ xor ebx, ebp
+ rol ebx, 1
mov ebp, edi
- mov DWORD PTR 52[esp],ecx
+ mov DWORD PTR 52[esp],ebx
or ebp, esi
- lea ecx, DWORD PTR 2400959708[ebx*1+ecx]
- mov ebx, edi
+ lea ebx, DWORD PTR 2400959708[ecx*1+ebx]
+ mov ecx, edi
and ebp, eax
- and ebx, esi
- or ebp, ebx
- mov ebx, edx
- rol ebx, 5
+ and ecx, esi
+ or ebp, ecx
+ mov ecx, edx
+ rol ecx, 5
ror edi, 1
- add ebp, ebx
+ add ebp, ecx
ror edi, 1
- add ecx, ebp
+ add ebx, ebp
; 40_59 45
; 40_59 46
- mov ebx, DWORD PTR 56[esp]
+ mov ecx, DWORD PTR 56[esp]
mov ebp, DWORD PTR [esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 24[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 44[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, edx
- rol ebx, 1
+ rol ecx, 1
or ebp, edi
- mov DWORD PTR 56[esp],ebx
+ mov DWORD PTR 56[esp],ecx
and ebp, esi
- lea ebx, DWORD PTR 2400959708[eax*1+ebx]
+ lea ecx, DWORD PTR 2400959708[eax*1+ecx]
mov eax, edx
ror edx, 1
and eax, edi
or ebp, eax
- mov eax, ecx
+ mov eax, ebx
rol eax, 5
add ebp, eax
mov eax, DWORD PTR 60[esp]
- add ebx, ebp
+ add ecx, ebp
mov ebp, DWORD PTR 4[esp]
xor eax, ebp
mov ebp, DWORD PTR 28[esp]
@@ -935,19 +936,19 @@ L000start:
ror edx, 1
xor eax, ebp
rol eax, 1
- mov ebp, ecx
+ mov ebp, ebx
mov DWORD PTR 60[esp],eax
or ebp, edx
lea eax, DWORD PTR 2400959708[esi*1+eax]
- mov esi, ecx
+ mov esi, ebx
and ebp, edi
and esi, edx
or ebp, esi
- mov esi, ebx
+ mov esi, ecx
rol esi, 5
- ror ecx, 1
+ ror ebx, 1
add ebp, esi
- ror ecx, 1
+ ror ebx, 1
add eax, ebp
; 40_59 47
; 40_59 48
@@ -958,15 +959,15 @@ L000start:
xor esi, ebp
mov ebp, DWORD PTR 52[esp]
xor esi, ebp
- mov ebp, ebx
+ mov ebp, ecx
rol esi, 1
- or ebp, ecx
+ or ebp, ebx
mov DWORD PTR [esp],esi
and ebp, edx
lea esi, DWORD PTR 2400959708[edi*1+esi]
- mov edi, ebx
- ror ebx, 1
- and edi, ecx
+ mov edi, ecx
+ ror ecx, 1
+ and edi, ebx
or ebp, edi
mov edi, eax
rol edi, 5
@@ -978,16 +979,16 @@ L000start:
mov ebp, DWORD PTR 36[esp]
xor edi, ebp
mov ebp, DWORD PTR 56[esp]
- ror ebx, 1
+ ror ecx, 1
xor edi, ebp
rol edi, 1
mov ebp, eax
mov DWORD PTR 4[esp],edi
- or ebp, ebx
+ or ebp, ecx
lea edi, DWORD PTR 2400959708[edx*1+edi]
mov edx, eax
- and ebp, ecx
- and edx, ebx
+ and ebp, ebx
+ and edx, ecx
or ebp, edx
mov edx, esi
rol edx, 5
@@ -1008,63 +1009,63 @@ L000start:
rol edx, 1
or ebp, eax
mov DWORD PTR 8[esp],edx
- and ebp, ebx
- lea edx, DWORD PTR 2400959708[ecx*1+edx]
- mov ecx, esi
+ and ebp, ecx
+ lea edx, DWORD PTR 2400959708[ebx*1+edx]
+ mov ebx, esi
ror esi, 1
- and ecx, eax
- or ebp, ecx
- mov ecx, edi
- rol ecx, 5
- add ebp, ecx
- mov ecx, DWORD PTR 12[esp]
+ and ebx, eax
+ or ebp, ebx
+ mov ebx, edi
+ rol ebx, 5
+ add ebp, ebx
+ mov ebx, DWORD PTR 12[esp]
add edx, ebp
mov ebp, DWORD PTR 20[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 44[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR [esp]
ror esi, 1
- xor ecx, ebp
- rol ecx, 1
+ xor ebx, ebp
+ rol ebx, 1
mov ebp, edi
- mov DWORD PTR 12[esp],ecx
+ mov DWORD PTR 12[esp],ebx
or ebp, esi
- lea ecx, DWORD PTR 2400959708[ebx*1+ecx]
- mov ebx, edi
+ lea ebx, DWORD PTR 2400959708[ecx*1+ebx]
+ mov ecx, edi
and ebp, eax
- and ebx, esi
- or ebp, ebx
- mov ebx, edx
- rol ebx, 5
+ and ecx, esi
+ or ebp, ecx
+ mov ecx, edx
+ rol ecx, 5
ror edi, 1
- add ebp, ebx
+ add ebp, ecx
ror edi, 1
- add ecx, ebp
+ add ebx, ebp
; 40_59 51
; 40_59 52
- mov ebx, DWORD PTR 16[esp]
+ mov ecx, DWORD PTR 16[esp]
mov ebp, DWORD PTR 24[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 48[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 4[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, edx
- rol ebx, 1
+ rol ecx, 1
or ebp, edi
- mov DWORD PTR 16[esp],ebx
+ mov DWORD PTR 16[esp],ecx
and ebp, esi
- lea ebx, DWORD PTR 2400959708[eax*1+ebx]
+ lea ecx, DWORD PTR 2400959708[eax*1+ecx]
mov eax, edx
ror edx, 1
and eax, edi
or ebp, eax
- mov eax, ecx
+ mov eax, ebx
rol eax, 5
add ebp, eax
mov eax, DWORD PTR 20[esp]
- add ebx, ebp
+ add ecx, ebp
mov ebp, DWORD PTR 28[esp]
xor eax, ebp
mov ebp, DWORD PTR 52[esp]
@@ -1073,19 +1074,19 @@ L000start:
ror edx, 1
xor eax, ebp
rol eax, 1
- mov ebp, ecx
+ mov ebp, ebx
mov DWORD PTR 20[esp],eax
or ebp, edx
lea eax, DWORD PTR 2400959708[esi*1+eax]
- mov esi, ecx
+ mov esi, ebx
and ebp, edi
and esi, edx
or ebp, esi
- mov esi, ebx
+ mov esi, ecx
rol esi, 5
- ror ecx, 1
+ ror ebx, 1
add ebp, esi
- ror ecx, 1
+ ror ebx, 1
add eax, ebp
; 40_59 53
; 40_59 54
@@ -1096,15 +1097,15 @@ L000start:
xor esi, ebp
mov ebp, DWORD PTR 12[esp]
xor esi, ebp
- mov ebp, ebx
+ mov ebp, ecx
rol esi, 1
- or ebp, ecx
+ or ebp, ebx
mov DWORD PTR 24[esp],esi
and ebp, edx
lea esi, DWORD PTR 2400959708[edi*1+esi]
- mov edi, ebx
- ror ebx, 1
- and edi, ecx
+ mov edi, ecx
+ ror ecx, 1
+ and edi, ebx
or ebp, edi
mov edi, eax
rol edi, 5
@@ -1116,16 +1117,16 @@ L000start:
mov ebp, DWORD PTR 60[esp]
xor edi, ebp
mov ebp, DWORD PTR 16[esp]
- ror ebx, 1
+ ror ecx, 1
xor edi, ebp
rol edi, 1
mov ebp, eax
mov DWORD PTR 28[esp],edi
- or ebp, ebx
+ or ebp, ecx
lea edi, DWORD PTR 2400959708[edx*1+edi]
mov edx, eax
- and ebp, ecx
- and edx, ebx
+ and ebp, ebx
+ and edx, ecx
or ebp, edx
mov edx, esi
rol edx, 5
@@ -1146,63 +1147,63 @@ L000start:
rol edx, 1
or ebp, eax
mov DWORD PTR 32[esp],edx
- and ebp, ebx
- lea edx, DWORD PTR 2400959708[ecx*1+edx]
- mov ecx, esi
+ and ebp, ecx
+ lea edx, DWORD PTR 2400959708[ebx*1+edx]
+ mov ebx, esi
ror esi, 1
- and ecx, eax
- or ebp, ecx
- mov ecx, edi
- rol ecx, 5
- add ebp, ecx
- mov ecx, DWORD PTR 36[esp]
+ and ebx, eax
+ or ebp, ebx
+ mov ebx, edi
+ rol ebx, 5
+ add ebp, ebx
+ mov ebx, DWORD PTR 36[esp]
add edx, ebp
mov ebp, DWORD PTR 44[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 4[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 24[esp]
ror esi, 1
- xor ecx, ebp
- rol ecx, 1
+ xor ebx, ebp
+ rol ebx, 1
mov ebp, edi
- mov DWORD PTR 36[esp],ecx
+ mov DWORD PTR 36[esp],ebx
or ebp, esi
- lea ecx, DWORD PTR 2400959708[ebx*1+ecx]
- mov ebx, edi
+ lea ebx, DWORD PTR 2400959708[ecx*1+ebx]
+ mov ecx, edi
and ebp, eax
- and ebx, esi
- or ebp, ebx
- mov ebx, edx
- rol ebx, 5
+ and ecx, esi
+ or ebp, ecx
+ mov ecx, edx
+ rol ecx, 5
ror edi, 1
- add ebp, ebx
+ add ebp, ecx
ror edi, 1
- add ecx, ebp
+ add ebx, ebp
; 40_59 57
; 40_59 58
- mov ebx, DWORD PTR 40[esp]
+ mov ecx, DWORD PTR 40[esp]
mov ebp, DWORD PTR 48[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 8[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 28[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, edx
- rol ebx, 1
+ rol ecx, 1
or ebp, edi
- mov DWORD PTR 40[esp],ebx
+ mov DWORD PTR 40[esp],ecx
and ebp, esi
- lea ebx, DWORD PTR 2400959708[eax*1+ebx]
+ lea ecx, DWORD PTR 2400959708[eax*1+ecx]
mov eax, edx
ror edx, 1
and eax, edi
or ebp, eax
- mov eax, ecx
+ mov eax, ebx
rol eax, 5
add ebp, eax
mov eax, DWORD PTR 44[esp]
- add ebx, ebp
+ add ecx, ebp
mov ebp, DWORD PTR 52[esp]
xor eax, ebp
mov ebp, DWORD PTR 12[esp]
@@ -1211,19 +1212,19 @@ L000start:
ror edx, 1
xor eax, ebp
rol eax, 1
- mov ebp, ecx
+ mov ebp, ebx
mov DWORD PTR 44[esp],eax
or ebp, edx
lea eax, DWORD PTR 2400959708[esi*1+eax]
- mov esi, ecx
+ mov esi, ebx
and ebp, edi
and esi, edx
or ebp, esi
- mov esi, ebx
+ mov esi, ecx
rol esi, 5
- ror ecx, 1
+ ror ebx, 1
add ebp, esi
- ror ecx, 1
+ ror ebx, 1
add eax, ebp
; 40_59 59
; 20_39 60
@@ -1234,17 +1235,17 @@ L000start:
xor esi, ebp
mov ebp, DWORD PTR 36[esp]
xor esi, ebp
- mov ebp, ebx
+ mov ebp, ecx
rol esi, 1
- xor ebp, ecx
+ xor ebp, ebx
mov DWORD PTR 48[esp],esi
xor ebp, edx
lea esi, DWORD PTR 3395469782[edi*1+esi]
mov edi, eax
rol edi, 5
- ror ebx, 1
+ ror ecx, 1
add edi, ebp
- ror ebx, 1
+ ror ecx, 1
add esi, edi
; 20_39 61
mov edi, DWORD PTR 52[esp]
@@ -1256,9 +1257,9 @@ L000start:
xor edi, ebp
mov ebp, eax
rol edi, 1
- xor ebp, ebx
- mov DWORD PTR 52[esp],edi
xor ebp, ecx
+ mov DWORD PTR 52[esp],edi
+ xor ebp, ebx
lea edi, DWORD PTR 3395469782[edx*1+edi]
mov edx, esi
rol edx, 5
@@ -1278,54 +1279,54 @@ L000start:
rol edx, 1
xor ebp, eax
mov DWORD PTR 56[esp],edx
- xor ebp, ebx
- lea edx, DWORD PTR 3395469782[ecx*1+edx]
- mov ecx, edi
- rol ecx, 5
+ xor ebp, ecx
+ lea edx, DWORD PTR 3395469782[ebx*1+edx]
+ mov ebx, edi
+ rol ebx, 5
ror esi, 1
- add ecx, ebp
+ add ebx, ebp
ror esi, 1
- add edx, ecx
+ add edx, ebx
; 20_39 63
- mov ecx, DWORD PTR 60[esp]
+ mov ebx, DWORD PTR 60[esp]
mov ebp, DWORD PTR 4[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 28[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 48[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, edi
- rol ecx, 1
+ rol ebx, 1
xor ebp, esi
- mov DWORD PTR 60[esp],ecx
+ mov DWORD PTR 60[esp],ebx
xor ebp, eax
- lea ecx, DWORD PTR 3395469782[ebx*1+ecx]
- mov ebx, edx
- rol ebx, 5
+ lea ebx, DWORD PTR 3395469782[ecx*1+ebx]
+ mov ecx, edx
+ rol ecx, 5
ror edi, 1
- add ebx, ebp
+ add ecx, ebp
ror edi, 1
- add ecx, ebx
+ add ebx, ecx
; 20_39 64
- mov ebx, DWORD PTR [esp]
+ mov ecx, DWORD PTR [esp]
mov ebp, DWORD PTR 8[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 32[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 52[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, edx
- rol ebx, 1
+ rol ecx, 1
xor ebp, edi
- mov DWORD PTR [esp],ebx
+ mov DWORD PTR [esp],ecx
xor ebp, esi
- lea ebx, DWORD PTR 3395469782[eax*1+ebx]
- mov eax, ecx
+ lea ecx, DWORD PTR 3395469782[eax*1+ecx]
+ mov eax, ebx
rol eax, 5
ror edx, 1
add eax, ebp
ror edx, 1
- add ebx, eax
+ add ecx, eax
; 20_39 65
mov eax, DWORD PTR 4[esp]
mov ebp, DWORD PTR 12[esp]
@@ -1334,17 +1335,17 @@ L000start:
xor eax, ebp
mov ebp, DWORD PTR 56[esp]
xor eax, ebp
- mov ebp, ecx
+ mov ebp, ebx
rol eax, 1
xor ebp, edx
mov DWORD PTR 4[esp],eax
xor ebp, edi
lea eax, DWORD PTR 3395469782[esi*1+eax]
- mov esi, ebx
+ mov esi, ecx
rol esi, 5
- ror ecx, 1
+ ror ebx, 1
add esi, ebp
- ror ecx, 1
+ ror ebx, 1
add eax, esi
; 20_39 66
mov esi, DWORD PTR 8[esp]
@@ -1354,17 +1355,17 @@ L000start:
xor esi, ebp
mov ebp, DWORD PTR 60[esp]
xor esi, ebp
- mov ebp, ebx
+ mov ebp, ecx
rol esi, 1
- xor ebp, ecx
+ xor ebp, ebx
mov DWORD PTR 8[esp],esi
xor ebp, edx
lea esi, DWORD PTR 3395469782[edi*1+esi]
mov edi, eax
rol edi, 5
- ror ebx, 1
+ ror ecx, 1
add edi, ebp
- ror ebx, 1
+ ror ecx, 1
add esi, edi
; 20_39 67
mov edi, DWORD PTR 12[esp]
@@ -1376,9 +1377,9 @@ L000start:
xor edi, ebp
mov ebp, eax
rol edi, 1
- xor ebp, ebx
- mov DWORD PTR 12[esp],edi
xor ebp, ecx
+ mov DWORD PTR 12[esp],edi
+ xor ebp, ebx
lea edi, DWORD PTR 3395469782[edx*1+edi]
mov edx, esi
rol edx, 5
@@ -1398,54 +1399,54 @@ L000start:
rol edx, 1
xor ebp, eax
mov DWORD PTR 16[esp],edx
- xor ebp, ebx
- lea edx, DWORD PTR 3395469782[ecx*1+edx]
- mov ecx, edi
- rol ecx, 5
+ xor ebp, ecx
+ lea edx, DWORD PTR 3395469782[ebx*1+edx]
+ mov ebx, edi
+ rol ebx, 5
ror esi, 1
- add ecx, ebp
+ add ebx, ebp
ror esi, 1
- add edx, ecx
+ add edx, ebx
; 20_39 69
- mov ecx, DWORD PTR 20[esp]
+ mov ebx, DWORD PTR 20[esp]
mov ebp, DWORD PTR 28[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 52[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 8[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, edi
- rol ecx, 1
+ rol ebx, 1
xor ebp, esi
- mov DWORD PTR 20[esp],ecx
+ mov DWORD PTR 20[esp],ebx
xor ebp, eax
- lea ecx, DWORD PTR 3395469782[ebx*1+ecx]
- mov ebx, edx
- rol ebx, 5
+ lea ebx, DWORD PTR 3395469782[ecx*1+ebx]
+ mov ecx, edx
+ rol ecx, 5
ror edi, 1
- add ebx, ebp
+ add ecx, ebp
ror edi, 1
- add ecx, ebx
+ add ebx, ecx
; 20_39 70
- mov ebx, DWORD PTR 24[esp]
+ mov ecx, DWORD PTR 24[esp]
mov ebp, DWORD PTR 32[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 56[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 12[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, edx
- rol ebx, 1
+ rol ecx, 1
xor ebp, edi
- mov DWORD PTR 24[esp],ebx
+ mov DWORD PTR 24[esp],ecx
xor ebp, esi
- lea ebx, DWORD PTR 3395469782[eax*1+ebx]
- mov eax, ecx
+ lea ecx, DWORD PTR 3395469782[eax*1+ecx]
+ mov eax, ebx
rol eax, 5
ror edx, 1
add eax, ebp
ror edx, 1
- add ebx, eax
+ add ecx, eax
; 20_39 71
mov eax, DWORD PTR 28[esp]
mov ebp, DWORD PTR 36[esp]
@@ -1454,17 +1455,17 @@ L000start:
xor eax, ebp
mov ebp, DWORD PTR 16[esp]
xor eax, ebp
- mov ebp, ecx
+ mov ebp, ebx
rol eax, 1
xor ebp, edx
mov DWORD PTR 28[esp],eax
xor ebp, edi
lea eax, DWORD PTR 3395469782[esi*1+eax]
- mov esi, ebx
+ mov esi, ecx
rol esi, 5
- ror ecx, 1
+ ror ebx, 1
add esi, ebp
- ror ecx, 1
+ ror ebx, 1
add eax, esi
; 20_39 72
mov esi, DWORD PTR 32[esp]
@@ -1474,17 +1475,17 @@ L000start:
xor esi, ebp
mov ebp, DWORD PTR 20[esp]
xor esi, ebp
- mov ebp, ebx
+ mov ebp, ecx
rol esi, 1
- xor ebp, ecx
+ xor ebp, ebx
mov DWORD PTR 32[esp],esi
xor ebp, edx
lea esi, DWORD PTR 3395469782[edi*1+esi]
mov edi, eax
rol edi, 5
- ror ebx, 1
+ ror ecx, 1
add edi, ebp
- ror ebx, 1
+ ror ecx, 1
add esi, edi
; 20_39 73
mov edi, DWORD PTR 36[esp]
@@ -1496,9 +1497,9 @@ L000start:
xor edi, ebp
mov ebp, eax
rol edi, 1
- xor ebp, ebx
- mov DWORD PTR 36[esp],edi
xor ebp, ecx
+ mov DWORD PTR 36[esp],edi
+ xor ebp, ebx
lea edi, DWORD PTR 3395469782[edx*1+edi]
mov edx, esi
rol edx, 5
@@ -1518,54 +1519,54 @@ L000start:
rol edx, 1
xor ebp, eax
mov DWORD PTR 40[esp],edx
- xor ebp, ebx
- lea edx, DWORD PTR 3395469782[ecx*1+edx]
- mov ecx, edi
- rol ecx, 5
+ xor ebp, ecx
+ lea edx, DWORD PTR 3395469782[ebx*1+edx]
+ mov ebx, edi
+ rol ebx, 5
ror esi, 1
- add ecx, ebp
+ add ebx, ebp
ror esi, 1
- add edx, ecx
+ add edx, ebx
; 20_39 75
- mov ecx, DWORD PTR 44[esp]
+ mov ebx, DWORD PTR 44[esp]
mov ebp, DWORD PTR 52[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 12[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, DWORD PTR 32[esp]
- xor ecx, ebp
+ xor ebx, ebp
mov ebp, edi
- rol ecx, 1
+ rol ebx, 1
xor ebp, esi
- mov DWORD PTR 44[esp],ecx
+ mov DWORD PTR 44[esp],ebx
xor ebp, eax
- lea ecx, DWORD PTR 3395469782[ebx*1+ecx]
- mov ebx, edx
- rol ebx, 5
+ lea ebx, DWORD PTR 3395469782[ecx*1+ebx]
+ mov ecx, edx
+ rol ecx, 5
ror edi, 1
- add ebx, ebp
+ add ecx, ebp
ror edi, 1
- add ecx, ebx
+ add ebx, ecx
; 20_39 76
- mov ebx, DWORD PTR 48[esp]
+ mov ecx, DWORD PTR 48[esp]
mov ebp, DWORD PTR 56[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 16[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, DWORD PTR 36[esp]
- xor ebx, ebp
+ xor ecx, ebp
mov ebp, edx
- rol ebx, 1
+ rol ecx, 1
xor ebp, edi
- mov DWORD PTR 48[esp],ebx
+ mov DWORD PTR 48[esp],ecx
xor ebp, esi
- lea ebx, DWORD PTR 3395469782[eax*1+ebx]
- mov eax, ecx
+ lea ecx, DWORD PTR 3395469782[eax*1+ecx]
+ mov eax, ebx
rol eax, 5
ror edx, 1
add eax, ebp
ror edx, 1
- add ebx, eax
+ add ecx, eax
; 20_39 77
mov eax, DWORD PTR 52[esp]
mov ebp, DWORD PTR 60[esp]
@@ -1574,17 +1575,17 @@ L000start:
xor eax, ebp
mov ebp, DWORD PTR 40[esp]
xor eax, ebp
- mov ebp, ecx
+ mov ebp, ebx
rol eax, 1
xor ebp, edx
mov DWORD PTR 52[esp],eax
xor ebp, edi
lea eax, DWORD PTR 3395469782[esi*1+eax]
- mov esi, ebx
+ mov esi, ecx
rol esi, 5
- ror ecx, 1
+ ror ebx, 1
add esi, ebp
- ror ecx, 1
+ ror ebx, 1
add eax, esi
; 20_39 78
mov esi, DWORD PTR 56[esp]
@@ -1594,17 +1595,17 @@ L000start:
xor esi, ebp
mov ebp, DWORD PTR 44[esp]
xor esi, ebp
- mov ebp, ebx
+ mov ebp, ecx
rol esi, 1
- xor ebp, ecx
+ xor ebp, ebx
mov DWORD PTR 56[esp],esi
xor ebp, edx
lea esi, DWORD PTR 3395469782[edi*1+esi]
mov edi, eax
rol edi, 5
- ror ebx, 1
+ ror ecx, 1
add edi, ebp
- ror ebx, 1
+ ror ecx, 1
add esi, edi
; 20_39 79
mov edi, DWORD PTR 60[esp]
@@ -1616,49 +1617,100 @@ L000start:
xor edi, ebp
mov ebp, eax
rol edi, 1
- xor ebp, ebx
- mov DWORD PTR 60[esp],edi
xor ebp, ecx
+ mov DWORD PTR 60[esp],edi
+ xor ebp, ebx
lea edi, DWORD PTR 3395469782[edx*1+edi]
mov edx, esi
rol edx, 5
add edx, ebp
- mov ebp, DWORD PTR 92[esp]
+ mov ebp, DWORD PTR 128[esp]
ror eax, 1
add edi, edx
ror eax, 1
; End processing
;
mov edx, DWORD PTR 12[ebp]
- add edx, ebx
- mov ebx, DWORD PTR 4[ebp]
- add ebx, esi
+ add edx, ecx
+ mov ecx, DWORD PTR 4[ebp]
+ add ecx, esi
mov esi, eax
mov eax, DWORD PTR [ebp]
mov DWORD PTR 12[ebp],edx
add eax, edi
mov edi, DWORD PTR 16[ebp]
- add edi, ecx
- mov ecx, DWORD PTR 8[ebp]
- add ecx, esi
+ add edi, ebx
+ mov ebx, DWORD PTR 8[ebp]
+ add ebx, esi
mov DWORD PTR [ebp],eax
- mov esi, DWORD PTR 64[esp]
- mov DWORD PTR 8[ebp],ecx
+ mov esi, DWORD PTR 132[esp]
+ mov DWORD PTR 8[ebp],ebx
add esi, 64
mov eax, DWORD PTR 68[esp]
mov DWORD PTR 16[ebp],edi
- cmp eax, esi
- mov DWORD PTR 4[ebp],ebx
- jl $L001end
- mov eax, DWORD PTR [esi]
- jmp L000start
-$L001end:
- add esp, 72
+ cmp esi, eax
+ mov DWORD PTR 4[ebp],ecx
+ jl L000start
+ add esp, 108
pop edi
pop ebx
pop ebp
pop esi
ret
-_sha1_block_x86 ENDP
+_TEXT SEGMENT
+PUBLIC _sha1_block_asm_host_order
+
+_sha1_block_asm_host_order PROC NEAR
+ mov ecx, DWORD PTR 12[esp]
+ push esi
+ shl ecx, 6
+ mov esi, DWORD PTR 12[esp]
+ push ebp
+ add ecx, esi
+ push ebx
+ mov ebp, DWORD PTR 16[esp]
+ push edi
+ mov edx, DWORD PTR 12[ebp]
+ sub esp, 108
+ mov edi, DWORD PTR 16[ebp]
+ mov ebx, DWORD PTR 8[ebp]
+ mov DWORD PTR 68[esp],ecx
+ ; First we need to setup the X array
+ mov eax, DWORD PTR [esi]
+ mov ecx, DWORD PTR 4[esi]
+ mov DWORD PTR [esp],eax
+ mov DWORD PTR 4[esp],ecx
+ mov eax, DWORD PTR 8[esi]
+ mov ecx, DWORD PTR 12[esi]
+ mov DWORD PTR 8[esp],eax
+ mov DWORD PTR 12[esp],ecx
+ mov eax, DWORD PTR 16[esi]
+ mov ecx, DWORD PTR 20[esi]
+ mov DWORD PTR 16[esp],eax
+ mov DWORD PTR 20[esp],ecx
+ mov eax, DWORD PTR 24[esi]
+ mov ecx, DWORD PTR 28[esi]
+ mov DWORD PTR 24[esp],eax
+ mov DWORD PTR 28[esp],ecx
+ mov eax, DWORD PTR 32[esi]
+ mov ecx, DWORD PTR 36[esi]
+ mov DWORD PTR 32[esp],eax
+ mov DWORD PTR 36[esp],ecx
+ mov eax, DWORD PTR 40[esi]
+ mov ecx, DWORD PTR 44[esi]
+ mov DWORD PTR 40[esp],eax
+ mov DWORD PTR 44[esp],ecx
+ mov eax, DWORD PTR 48[esi]
+ mov ecx, DWORD PTR 52[esi]
+ mov DWORD PTR 48[esp],eax
+ mov DWORD PTR 52[esp],ecx
+ mov eax, DWORD PTR 56[esi]
+ mov ecx, DWORD PTR 60[esi]
+ mov DWORD PTR 56[esp],eax
+ mov DWORD PTR 60[esp],ecx
+ jmp L001shortcut
+_sha1_block_asm_host_order ENDP
+_TEXT ENDS
+_sha1_block_asm_data_order ENDP
_TEXT ENDS
END
diff --git a/crypto/sha/asm/sha1-586.pl b/crypto/sha/asm/sha1-586.pl
index 04e42ab09f..3662c20acc 100644
--- a/crypto/sha/asm/sha1-586.pl
+++ b/crypto/sha/asm/sha1-586.pl
@@ -8,8 +8,8 @@ require "x86asm.pl";
&asm_init($ARGV[0],"sha1-586.pl",$ARGV[$#ARGV] eq "386");
$A="eax";
-$B="ebx";
-$C="ecx";
+$B="ecx";
+$C="ebx";
$D="edx";
$E="edi";
$T="esi";
@@ -19,7 +19,7 @@ $off=9*4;
@K=(0x5a827999,0x6ed9eba1,0x8f1bbcdc,0xca62c1d6);
-&sha1_block("sha1_block_x86");
+&sha1_block_data("sha1_block_asm_data_order");
&asm_finish();
@@ -53,11 +53,14 @@ sub X_expand
local($in)=@_;
&comment("First, load the words onto the stack in network byte order");
- for ($i=0; $i<16; $i++)
+ for ($i=0; $i<16; $i+=2)
{
- &mov("eax",&DWP(($i+0)*4,$in,"",0)) unless $i == 0;
- &bswap("eax");
- &mov(&swtmp($i+0),"eax");
+ &mov($A,&DWP(($i+0)*4,$in,"",0));# unless $i == 0;
+ &mov($B,&DWP(($i+1)*4,$in,"",0));
+ &bswap($A);
+ &bswap($B);
+ &mov(&swtmp($i+0),$A);
+ &mov(&swtmp($i+1),$B);
}
&comment("We now have the X array on the stack");
@@ -312,7 +315,7 @@ sub BODY_60_79
&BODY_20_39(@_);
}
-sub sha1_block
+sub sha1_block_host
{
local($name)=@_;
@@ -325,35 +328,77 @@ sub sha1_block
# D 12
# E 16
- &push("esi");
- &push("ebp");
- &mov("eax", &wparam(2));
+ &mov("ecx", &wparam(2));
+ &push("esi");
+ &shl("ecx",6);
&mov("esi", &wparam(1));
- &add("eax", "esi"); # offset to leave on
+ &push("ebp");
+ &add("ecx","esi"); # offset to leave on
+ &push("ebx");
&mov("ebp", &wparam(0));
+ &push("edi");
+ &mov($D, &DWP(12,"ebp","",0));
+ &stack_push(18+9);
+ &mov($E, &DWP(16,"ebp","",0));
+ &mov($C, &DWP( 8,"ebp","",0));
+ &mov(&swtmp(17),"ecx");
+
+ &comment("First we need to setup the X array");
+
+ for ($i=0; $i<16; $i+=2)
+ {
+ &mov($A,&DWP(($i+0)*4,"esi","",0));# unless $i == 0;
+ &mov($B,&DWP(($i+1)*4,"esi","",0));
+ &mov(&swtmp($i+0),$A);
+ &mov(&swtmp($i+1),$B);
+ }
+ &jmp(&label("shortcut"));
+ &function_end_B($name);
+ }
+
+
+sub sha1_block_data
+ {
+ local($name)=@_;
+
+ &function_begin_B($name,"");
+
+ # parameter 1 is the MD5_CTX structure.
+ # A 0
+ # B 4
+ # C 8
+ # D 12
+ # E 16
+
+ &mov("ecx", &wparam(2));
+ &push("esi");
+ &shl("ecx",6);
+ &mov("esi", &wparam(1));
+ &push("ebp");
+ &add("ecx","esi"); # offset to leave on
&push("ebx");
- &sub("eax", 64);
+ &mov("ebp", &wparam(0));
&push("edi");
- &mov($B, &DWP( 4,"ebp","",0));
- &stack_push(18);
&mov($D, &DWP(12,"ebp","",0));
- &mov($E, &DWP(16,"ebp","",0));
- &mov($C, &DWP( 8,"ebp","",0));
- &mov(&swtmp(17),"eax");
+ &stack_push(18+9);
+ &mov($E, &DWP(16,"ebp","",0));
+ &mov($C, &DWP( 8,"ebp","",0));
+ &mov(&swtmp(17),"ecx");
&comment("First we need to setup the X array");
- &mov("eax",&DWP(0,"esi","",0)); # pulled out of X_expand
&set_label("start") unless $normal;
&X_expand("esi");
- &mov(&swtmp(16),"esi");
+ &mov(&wparam(1),"esi");
+ &set_label("shortcut");
&comment("");
&comment("Start processing");
# odd start
&mov($A, &DWP( 0,"ebp","",0));
+ &mov($B, &DWP( 4,"ebp","",0));
$X="esp";
&BODY_00_15(-2,$K[0],$X, 0,$A,$B,$C,$D,$E,$T);
&BODY_00_15( 0,$K[0],$X, 1,$T,$A,$B,$C,$D,$E);
@@ -468,24 +513,26 @@ sub sha1_block
&add($C,$T);
&mov(&DWP( 0,$tmp1,"",0),$A);
- &mov("esi",&swtmp(16));
- &mov(&DWP( 8,$tmp1,"",0),$C); # This is for looping
+ &mov("esi",&wparam(1));
+ &mov(&DWP( 8,$tmp1,"",0),$C);
&add("esi",64);
&mov("eax",&swtmp(17));
&mov(&DWP(16,$tmp1,"",0),$E);
- &cmp("eax","esi");
- &mov(&DWP( 4,$tmp1,"",0),$B); # This is for looping
- &jl(&label("end"));
- &mov("eax",&DWP(0,"esi","",0)); # Pulled down from
- &jmp(&label("start"));
-
- &set_label("end");
- &stack_pop(18);
+ &cmp("esi","eax");
+ &mov(&DWP( 4,$tmp1,"",0),$B);
+ &jl(&label("start"));
+
+ &stack_pop(18+9);
&pop("edi");
&pop("ebx");
&pop("ebp");
&pop("esi");
&ret();
+
+ # it has to reside within sha1_block_asm_host_order body
+ # because it calls &jmp(&label("shortcut"));
+ &sha1_block_host("sha1_block_asm_host_order");
+
&function_end_B($name);
}