Explorar o código

Preprocessing OpenSSL asm files with Clang

There's whitespace change in the generated files. But it should be noop.

Source commit: ba01932f1d2ba820fba57d76976849d18bf2e1d0
Martin Prikryl hai 3 meses
pai
achega
905f58426d

+ 916 - 917
libs/openssl/crypto/bf/asm/bf_586.asm

@@ -1,980 +1,979 @@
-
 %ifidn __OUTPUT_FORMAT__,obj
-section	code	use32 class=code align=256
+section code use32 class=code align=256
 %elifidn __OUTPUT_FORMAT__,win32
 [email protected] equ 1
-section	.text	code align=256
+section .text code align=256
 %else
-section	.text	code
+section .text code
 %endif
-global	_BF_encrypt
-align	16
+global _BF_encrypt
+align 16
 _BF_encrypt:
 L$_BF_encrypt_begin:
-	; 
-	push	ebp
-	push	ebx
-	mov	ebx,DWORD [12+esp]
-	mov	ebp,DWORD [16+esp]
-	push	esi
-	push	edi
-	; Load the 2 words
-	mov	edi,DWORD [ebx]
-	mov	esi,DWORD [4+ebx]
-	xor	eax,eax
-	mov	ebx,DWORD [ebp]
-	xor	ecx,ecx
-	xor	edi,ebx
-	; 
-	; Round 0
-	mov	edx,DWORD [4+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 1
-	mov	edx,DWORD [8+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	edi,ebx
-	; 
-	; Round 2
-	mov	edx,DWORD [12+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 3
-	mov	edx,DWORD [16+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	edi,ebx
-	; 
-	; Round 4
-	mov	edx,DWORD [20+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 5
-	mov	edx,DWORD [24+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	edi,ebx
-	; 
-	; Round 6
-	mov	edx,DWORD [28+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 7
-	mov	edx,DWORD [32+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	edi,ebx
-	; 
-	; Round 8
-	mov	edx,DWORD [36+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 9
-	mov	edx,DWORD [40+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	edi,ebx
-	; 
-	; Round 10
-	mov	edx,DWORD [44+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 11
-	mov	edx,DWORD [48+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	edi,ebx
-	; 
-	; Round 12
-	mov	edx,DWORD [52+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 13
-	mov	edx,DWORD [56+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	edi,ebx
-	; 
-	; Round 14
-	mov	edx,DWORD [60+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 15
-	mov	edx,DWORD [64+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	; Load parameter 0 (16) enc=1
-	mov	eax,DWORD [20+esp]
-	xor	edi,ebx
-	mov	edx,DWORD [68+ebp]
-	xor	esi,edx
-	mov	DWORD [4+eax],edi
-	mov	DWORD [eax],esi
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-global	_BF_decrypt
-align	16
+ ;
+ push ebp
+ push ebx
+ mov ebx,DWORD [12+esp]
+ mov ebp,DWORD [16+esp]
+ push esi
+ push edi
+ ; Load the 2 words
+ mov edi,DWORD [ebx]
+ mov esi,DWORD [4+ebx]
+ xor eax,eax
+ mov ebx,DWORD [ebp]
+ xor ecx,ecx
+ xor edi,ebx
+ ;
+ ; Round 0
+ mov edx,DWORD [4+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 1
+ mov edx,DWORD [8+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor edi,ebx
+ ;
+ ; Round 2
+ mov edx,DWORD [12+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 3
+ mov edx,DWORD [16+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor edi,ebx
+ ;
+ ; Round 4
+ mov edx,DWORD [20+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 5
+ mov edx,DWORD [24+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor edi,ebx
+ ;
+ ; Round 6
+ mov edx,DWORD [28+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 7
+ mov edx,DWORD [32+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor edi,ebx
+ ;
+ ; Round 8
+ mov edx,DWORD [36+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 9
+ mov edx,DWORD [40+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor edi,ebx
+ ;
+ ; Round 10
+ mov edx,DWORD [44+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 11
+ mov edx,DWORD [48+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor edi,ebx
+ ;
+ ; Round 12
+ mov edx,DWORD [52+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 13
+ mov edx,DWORD [56+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor edi,ebx
+ ;
+ ; Round 14
+ mov edx,DWORD [60+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 15
+ mov edx,DWORD [64+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ ; Load parameter 0 (16) enc=1
+ mov eax,DWORD [20+esp]
+ xor edi,ebx
+ mov edx,DWORD [68+ebp]
+ xor esi,edx
+ mov DWORD [4+eax],edi
+ mov DWORD [eax],esi
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+global _BF_decrypt
+align 16
 _BF_decrypt:
 L$_BF_decrypt_begin:
-	; 
-	push	ebp
-	push	ebx
-	mov	ebx,DWORD [12+esp]
-	mov	ebp,DWORD [16+esp]
-	push	esi
-	push	edi
-	; Load the 2 words
-	mov	edi,DWORD [ebx]
-	mov	esi,DWORD [4+ebx]
-	xor	eax,eax
-	mov	ebx,DWORD [68+ebp]
-	xor	ecx,ecx
-	xor	edi,ebx
-	; 
-	; Round 16
-	mov	edx,DWORD [64+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 15
-	mov	edx,DWORD [60+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	edi,ebx
-	; 
-	; Round 14
-	mov	edx,DWORD [56+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 13
-	mov	edx,DWORD [52+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	edi,ebx
-	; 
-	; Round 12
-	mov	edx,DWORD [48+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 11
-	mov	edx,DWORD [44+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	edi,ebx
-	; 
-	; Round 10
-	mov	edx,DWORD [40+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 9
-	mov	edx,DWORD [36+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	edi,ebx
-	; 
-	; Round 8
-	mov	edx,DWORD [32+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 7
-	mov	edx,DWORD [28+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	edi,ebx
-	; 
-	; Round 6
-	mov	edx,DWORD [24+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 5
-	mov	edx,DWORD [20+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	edi,ebx
-	; 
-	; Round 4
-	mov	edx,DWORD [16+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 3
-	mov	edx,DWORD [12+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	edi,ebx
-	; 
-	; Round 2
-	mov	edx,DWORD [8+ebp]
-	mov	ebx,edi
-	xor	esi,edx
-	shr	ebx,16
-	mov	edx,edi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	xor	eax,eax
-	xor	esi,ebx
-	; 
-	; Round 1
-	mov	edx,DWORD [4+ebp]
-	mov	ebx,esi
-	xor	edi,edx
-	shr	ebx,16
-	mov	edx,esi
-	mov	al,bh
-	and	ebx,255
-	mov	cl,dh
-	and	edx,255
-	mov	eax,DWORD [72+eax*4+ebp]
-	mov	ebx,DWORD [1096+ebx*4+ebp]
-	add	ebx,eax
-	mov	eax,DWORD [2120+ecx*4+ebp]
-	xor	ebx,eax
-	mov	edx,DWORD [3144+edx*4+ebp]
-	add	ebx,edx
-	; Load parameter 0 (1) enc=0
-	mov	eax,DWORD [20+esp]
-	xor	edi,ebx
-	mov	edx,DWORD [ebp]
-	xor	esi,edx
-	mov	DWORD [4+eax],edi
-	mov	DWORD [eax],esi
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-global	_BF_cbc_encrypt
-align	16
+ ;
+ push ebp
+ push ebx
+ mov ebx,DWORD [12+esp]
+ mov ebp,DWORD [16+esp]
+ push esi
+ push edi
+ ; Load the 2 words
+ mov edi,DWORD [ebx]
+ mov esi,DWORD [4+ebx]
+ xor eax,eax
+ mov ebx,DWORD [68+ebp]
+ xor ecx,ecx
+ xor edi,ebx
+ ;
+ ; Round 16
+ mov edx,DWORD [64+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 15
+ mov edx,DWORD [60+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor edi,ebx
+ ;
+ ; Round 14
+ mov edx,DWORD [56+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 13
+ mov edx,DWORD [52+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor edi,ebx
+ ;
+ ; Round 12
+ mov edx,DWORD [48+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 11
+ mov edx,DWORD [44+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor edi,ebx
+ ;
+ ; Round 10
+ mov edx,DWORD [40+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 9
+ mov edx,DWORD [36+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor edi,ebx
+ ;
+ ; Round 8
+ mov edx,DWORD [32+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 7
+ mov edx,DWORD [28+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor edi,ebx
+ ;
+ ; Round 6
+ mov edx,DWORD [24+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 5
+ mov edx,DWORD [20+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor edi,ebx
+ ;
+ ; Round 4
+ mov edx,DWORD [16+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 3
+ mov edx,DWORD [12+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor edi,ebx
+ ;
+ ; Round 2
+ mov edx,DWORD [8+ebp]
+ mov ebx,edi
+ xor esi,edx
+ shr ebx,16
+ mov edx,edi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ xor eax,eax
+ xor esi,ebx
+ ;
+ ; Round 1
+ mov edx,DWORD [4+ebp]
+ mov ebx,esi
+ xor edi,edx
+ shr ebx,16
+ mov edx,esi
+ mov al,bh
+ and ebx,255
+ mov cl,dh
+ and edx,255
+ mov eax,DWORD [72+eax*4+ebp]
+ mov ebx,DWORD [1096+ebx*4+ebp]
+ add ebx,eax
+ mov eax,DWORD [2120+ecx*4+ebp]
+ xor ebx,eax
+ mov edx,DWORD [3144+edx*4+ebp]
+ add ebx,edx
+ ; Load parameter 0 (1) enc=0
+ mov eax,DWORD [20+esp]
+ xor edi,ebx
+ mov edx,DWORD [ebp]
+ xor esi,edx
+ mov DWORD [4+eax],edi
+ mov DWORD [eax],esi
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+global _BF_cbc_encrypt
+align 16
 _BF_cbc_encrypt:
 L$_BF_cbc_encrypt_begin:
-	; 
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	mov	ebp,DWORD [28+esp]
-	; getting iv ptr from parameter 4
-	mov	ebx,DWORD [36+esp]
-	mov	esi,DWORD [ebx]
-	mov	edi,DWORD [4+ebx]
-	push	edi
-	push	esi
-	push	edi
-	push	esi
-	mov	ebx,esp
-	mov	esi,DWORD [36+esp]
-	mov	edi,DWORD [40+esp]
-	; getting encrypt flag from parameter 5
-	mov	ecx,DWORD [56+esp]
-	; get and push parameter 3
-	mov	eax,DWORD [48+esp]
-	push	eax
-	push	ebx
-	cmp	ecx,0
-	jz	NEAR L$000decrypt
-	and	ebp,4294967288
-	mov	eax,DWORD [8+esp]
-	mov	ebx,DWORD [12+esp]
-	jz	NEAR L$001encrypt_finish
+ ;
+ push ebp
+ push ebx
+ push esi
+ push edi
+ mov ebp,DWORD [28+esp]
+ ; getting iv ptr from parameter 4
+ mov ebx,DWORD [36+esp]
+ mov esi,DWORD [ebx]
+ mov edi,DWORD [4+ebx]
+ push edi
+ push esi
+ push edi
+ push esi
+ mov ebx,esp
+ mov esi,DWORD [36+esp]
+ mov edi,DWORD [40+esp]
+ ; getting encrypt flag from parameter 5
+ mov ecx,DWORD [56+esp]
+ ; get and push parameter 3
+ mov eax,DWORD [48+esp]
+ push eax
+ push ebx
+ cmp ecx,0
+ jz NEAR L$000decrypt
+ and ebp,4294967288
+ mov eax,DWORD [8+esp]
+ mov ebx,DWORD [12+esp]
+ jz NEAR L$001encrypt_finish
 L$002encrypt_loop:
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [4+esi]
-	xor	eax,ecx
-	xor	ebx,edx
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	DWORD [8+esp],eax
-	mov	DWORD [12+esp],ebx
-	call	L$_BF_encrypt_begin
-	mov	eax,DWORD [8+esp]
-	mov	ebx,DWORD [12+esp]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	DWORD [edi],eax
-	mov	DWORD [4+edi],ebx
-	add	esi,8
-	add	edi,8
-	sub	ebp,8
-	jnz	NEAR L$002encrypt_loop
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [4+esi]
+ xor eax,ecx
+ xor ebx,edx
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov DWORD [8+esp],eax
+ mov DWORD [12+esp],ebx
+ call L$_BF_encrypt_begin
+ mov eax,DWORD [8+esp]
+ mov ebx,DWORD [12+esp]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov DWORD [edi],eax
+ mov DWORD [4+edi],ebx
+ add esi,8
+ add edi,8
+ sub ebp,8
+ jnz NEAR L$002encrypt_loop
 L$001encrypt_finish:
-	mov	ebp,DWORD [52+esp]
-	and	ebp,7
-	jz	NEAR L$003finish
-	call	L$004PIC_point
+ mov ebp,DWORD [52+esp]
+ and ebp,7
+ jz NEAR L$003finish
+ call L$004PIC_point
 L$004PIC_point:
-	pop	edx
-	lea	ecx,[(L$005cbc_enc_jmp_table-L$004PIC_point)+edx]
-	mov	ebp,DWORD [ebp*4+ecx]
-	add	ebp,edx
-	xor	ecx,ecx
-	xor	edx,edx
-	jmp	ebp
+ pop edx
+ lea ecx,[(L$005cbc_enc_jmp_table-L$004PIC_point)+edx]
+ mov ebp,DWORD [ebp*4+ecx]
+ add ebp,edx
+ xor ecx,ecx
+ xor edx,edx
+ jmp ebp
 L$006ej7:
-	
 
 
 
 
-	mov	dh,BYTE [6+esi]
-	shl	edx,8
+
+ mov dh,BYTE [6+esi]
+ shl edx,8
 L$007ej6:
-	
 
 
 
 
-	mov	dh,BYTE [5+esi]
+
+ mov dh,BYTE [5+esi]
 L$008ej5:
-	
 
 
 
 
-	mov	dl,BYTE [4+esi]
+
+ mov dl,BYTE [4+esi]
 L$009ej4:
-	
 
 
 
 
-	mov	ecx,DWORD [esi]
-	jmp	NEAR L$010ejend
+
+ mov ecx,DWORD [esi]
+ jmp NEAR L$010ejend
 L$011ej3:
-	
 
 
 
 
-	mov	ch,BYTE [2+esi]
-	shl	ecx,8
+
+ mov ch,BYTE [2+esi]
+ shl ecx,8
 L$012ej2:
-	
 
 
 
 
-	mov	ch,BYTE [1+esi]
+
+ mov ch,BYTE [1+esi]
 L$013ej1:
-	
 
 
 
 
-	mov	cl,BYTE [esi]
+
+ mov cl,BYTE [esi]
 L$010ejend:
-	xor	eax,ecx
-	xor	ebx,edx
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	DWORD [8+esp],eax
-	mov	DWORD [12+esp],ebx
-	call	L$_BF_encrypt_begin
-	mov	eax,DWORD [8+esp]
-	mov	ebx,DWORD [12+esp]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	DWORD [edi],eax
-	mov	DWORD [4+edi],ebx
-	jmp	NEAR L$003finish
+ xor eax,ecx
+ xor ebx,edx
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov DWORD [8+esp],eax
+ mov DWORD [12+esp],ebx
+ call L$_BF_encrypt_begin
+ mov eax,DWORD [8+esp]
+ mov ebx,DWORD [12+esp]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov DWORD [edi],eax
+ mov DWORD [4+edi],ebx
+ jmp NEAR L$003finish
 L$000decrypt:
-	and	ebp,4294967288
-	mov	eax,DWORD [16+esp]
-	mov	ebx,DWORD [20+esp]
-	jz	NEAR L$014decrypt_finish
+ and ebp,4294967288
+ mov eax,DWORD [16+esp]
+ mov ebx,DWORD [20+esp]
+ jz NEAR L$014decrypt_finish
 L$015decrypt_loop:
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	DWORD [8+esp],eax
-	mov	DWORD [12+esp],ebx
-	call	L$_BF_decrypt_begin
-	mov	eax,DWORD [8+esp]
-	mov	ebx,DWORD [12+esp]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	ecx,DWORD [16+esp]
-	mov	edx,DWORD [20+esp]
-	xor	ecx,eax
-	xor	edx,ebx
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	mov	DWORD [edi],ecx
-	mov	DWORD [4+edi],edx
-	mov	DWORD [16+esp],eax
-	mov	DWORD [20+esp],ebx
-	add	esi,8
-	add	edi,8
-	sub	ebp,8
-	jnz	NEAR L$015decrypt_loop
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov DWORD [8+esp],eax
+ mov DWORD [12+esp],ebx
+ call L$_BF_decrypt_begin
+ mov eax,DWORD [8+esp]
+ mov ebx,DWORD [12+esp]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov ecx,DWORD [16+esp]
+ mov edx,DWORD [20+esp]
+ xor ecx,eax
+ xor edx,ebx
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ mov DWORD [edi],ecx
+ mov DWORD [4+edi],edx
+ mov DWORD [16+esp],eax
+ mov DWORD [20+esp],ebx
+ add esi,8
+ add edi,8
+ sub ebp,8
+ jnz NEAR L$015decrypt_loop
 L$014decrypt_finish:
-	mov	ebp,DWORD [52+esp]
-	and	ebp,7
-	jz	NEAR L$003finish
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	DWORD [8+esp],eax
-	mov	DWORD [12+esp],ebx
-	call	L$_BF_decrypt_begin
-	mov	eax,DWORD [8+esp]
-	mov	ebx,DWORD [12+esp]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	ecx,DWORD [16+esp]
-	mov	edx,DWORD [20+esp]
-	xor	ecx,eax
-	xor	edx,ebx
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
+ mov ebp,DWORD [52+esp]
+ and ebp,7
+ jz NEAR L$003finish
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov DWORD [8+esp],eax
+ mov DWORD [12+esp],ebx
+ call L$_BF_decrypt_begin
+ mov eax,DWORD [8+esp]
+ mov ebx,DWORD [12+esp]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov ecx,DWORD [16+esp]
+ mov edx,DWORD [20+esp]
+ xor ecx,eax
+ xor edx,ebx
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
 L$016dj7:
-	ror	edx,16
-	mov	BYTE [6+edi],dl
-	shr	edx,16
+ ror edx,16
+ mov BYTE [6+edi],dl
+ shr edx,16
 L$017dj6:
-	mov	BYTE [5+edi],dh
+ mov BYTE [5+edi],dh
 L$018dj5:
-	mov	BYTE [4+edi],dl
+ mov BYTE [4+edi],dl
 L$019dj4:
-	mov	DWORD [edi],ecx
-	jmp	NEAR L$020djend
+ mov DWORD [edi],ecx
+ jmp NEAR L$020djend
 L$021dj3:
-	ror	ecx,16
-	mov	BYTE [2+edi],cl
-	shl	ecx,16
+ ror ecx,16
+ mov BYTE [2+edi],cl
+ shl ecx,16
 L$022dj2:
-	mov	BYTE [1+esi],ch
+ mov BYTE [1+esi],ch
 L$023dj1:
-	mov	BYTE [esi],cl
+ mov BYTE [esi],cl
 L$020djend:
-	jmp	NEAR L$003finish
+ jmp NEAR L$003finish
 L$003finish:
-	mov	ecx,DWORD [60+esp]
-	add	esp,24
-	mov	DWORD [ecx],eax
-	mov	DWORD [4+ecx],ebx
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-align	64
+ mov ecx,DWORD [60+esp]
+ add esp,24
+ mov DWORD [ecx],eax
+ mov DWORD [4+ecx],ebx
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+align 64
 L$005cbc_enc_jmp_table:
-dd	0
-dd	L$013ej1-L$004PIC_point
-dd	L$012ej2-L$004PIC_point
-dd	L$011ej3-L$004PIC_point
-dd	L$009ej4-L$004PIC_point
-dd	L$008ej5-L$004PIC_point
-dd	L$007ej6-L$004PIC_point
-dd	L$006ej7-L$004PIC_point
-align	64
+dd 0
+dd L$013ej1-L$004PIC_point
+dd L$012ej2-L$004PIC_point
+dd L$011ej3-L$004PIC_point
+dd L$009ej4-L$004PIC_point
+dd L$008ej5-L$004PIC_point
+dd L$007ej6-L$004PIC_point
+dd L$006ej7-L$004PIC_point
+align 64

+ 1314 - 1315
libs/openssl/crypto/bn/asm/bn_586.asm

@@ -1,1377 +1,1376 @@
-
 %ifidn __OUTPUT_FORMAT__,obj
-section	code	use32 class=code align=256
+section code use32 class=code align=256
 %elifidn __OUTPUT_FORMAT__,win32
 [email protected] equ 1
-section	.text	code align=256
+section .text code align=256
 %else
-section	.text	code
+section .text code
 %endif
-global	_bn_mul_add_words
-align	16
+global _bn_mul_add_words
+align 16
 _bn_mul_add_words:
 L$_bn_mul_add_words_begin:
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	; 
-	xor	esi,esi
-	mov	edi,DWORD [20+esp]
-	mov	ecx,DWORD [28+esp]
-	mov	ebx,DWORD [24+esp]
-	and	ecx,4294967288
-	mov	ebp,DWORD [32+esp]
-	push	ecx
-	jz	NEAR L$000maw_finish
-align	16
+ push ebp
+ push ebx
+ push esi
+ push edi
+ ;
+ xor esi,esi
+ mov edi,DWORD [20+esp]
+ mov ecx,DWORD [28+esp]
+ mov ebx,DWORD [24+esp]
+ and ecx,4294967288
+ mov ebp,DWORD [32+esp]
+ push ecx
+ jz NEAR L$000maw_finish
+align 16
 L$001maw_loop:
-	; Round 0
-	mov	eax,DWORD [ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [edi]
-	adc	edx,0
-	mov	DWORD [edi],eax
-	mov	esi,edx
-	; Round 4
-	mov	eax,DWORD [4+ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [4+edi]
-	adc	edx,0
-	mov	DWORD [4+edi],eax
-	mov	esi,edx
-	; Round 8
-	mov	eax,DWORD [8+ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [8+edi]
-	adc	edx,0
-	mov	DWORD [8+edi],eax
-	mov	esi,edx
-	; Round 12
-	mov	eax,DWORD [12+ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [12+edi]
-	adc	edx,0
-	mov	DWORD [12+edi],eax
-	mov	esi,edx
-	; Round 16
-	mov	eax,DWORD [16+ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [16+edi]
-	adc	edx,0
-	mov	DWORD [16+edi],eax
-	mov	esi,edx
-	; Round 20
-	mov	eax,DWORD [20+ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [20+edi]
-	adc	edx,0
-	mov	DWORD [20+edi],eax
-	mov	esi,edx
-	; Round 24
-	mov	eax,DWORD [24+ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [24+edi]
-	adc	edx,0
-	mov	DWORD [24+edi],eax
-	mov	esi,edx
-	; Round 28
-	mov	eax,DWORD [28+ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [28+edi]
-	adc	edx,0
-	mov	DWORD [28+edi],eax
-	mov	esi,edx
-	; 
-	sub	ecx,8
-	lea	ebx,[32+ebx]
-	lea	edi,[32+edi]
-	jnz	NEAR L$001maw_loop
+ ; Round 0
+ mov eax,DWORD [ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [edi]
+ adc edx,0
+ mov DWORD [edi],eax
+ mov esi,edx
+ ; Round 4
+ mov eax,DWORD [4+ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [4+edi]
+ adc edx,0
+ mov DWORD [4+edi],eax
+ mov esi,edx
+ ; Round 8
+ mov eax,DWORD [8+ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [8+edi]
+ adc edx,0
+ mov DWORD [8+edi],eax
+ mov esi,edx
+ ; Round 12
+ mov eax,DWORD [12+ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [12+edi]
+ adc edx,0
+ mov DWORD [12+edi],eax
+ mov esi,edx
+ ; Round 16
+ mov eax,DWORD [16+ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [16+edi]
+ adc edx,0
+ mov DWORD [16+edi],eax
+ mov esi,edx
+ ; Round 20
+ mov eax,DWORD [20+ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [20+edi]
+ adc edx,0
+ mov DWORD [20+edi],eax
+ mov esi,edx
+ ; Round 24
+ mov eax,DWORD [24+ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [24+edi]
+ adc edx,0
+ mov DWORD [24+edi],eax
+ mov esi,edx
+ ; Round 28
+ mov eax,DWORD [28+ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [28+edi]
+ adc edx,0
+ mov DWORD [28+edi],eax
+ mov esi,edx
+ ;
+ sub ecx,8
+ lea ebx,[32+ebx]
+ lea edi,[32+edi]
+ jnz NEAR L$001maw_loop
 L$000maw_finish:
-	mov	ecx,DWORD [32+esp]
-	and	ecx,7
-	jnz	NEAR L$002maw_finish2
-	jmp	NEAR L$003maw_end
+ mov ecx,DWORD [32+esp]
+ and ecx,7
+ jnz NEAR L$002maw_finish2
+ jmp NEAR L$003maw_end
 L$002maw_finish2:
-	; Tail Round 0
-	mov	eax,DWORD [ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [edi]
-	adc	edx,0
-	dec	ecx
-	mov	DWORD [edi],eax
-	mov	esi,edx
-	jz	NEAR L$003maw_end
-	; Tail Round 1
-	mov	eax,DWORD [4+ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [4+edi]
-	adc	edx,0
-	dec	ecx
-	mov	DWORD [4+edi],eax
-	mov	esi,edx
-	jz	NEAR L$003maw_end
-	; Tail Round 2
-	mov	eax,DWORD [8+ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [8+edi]
-	adc	edx,0
-	dec	ecx
-	mov	DWORD [8+edi],eax
-	mov	esi,edx
-	jz	NEAR L$003maw_end
-	; Tail Round 3
-	mov	eax,DWORD [12+ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [12+edi]
-	adc	edx,0
-	dec	ecx
-	mov	DWORD [12+edi],eax
-	mov	esi,edx
-	jz	NEAR L$003maw_end
-	; Tail Round 4
-	mov	eax,DWORD [16+ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [16+edi]
-	adc	edx,0
-	dec	ecx
-	mov	DWORD [16+edi],eax
-	mov	esi,edx
-	jz	NEAR L$003maw_end
-	; Tail Round 5
-	mov	eax,DWORD [20+ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [20+edi]
-	adc	edx,0
-	dec	ecx
-	mov	DWORD [20+edi],eax
-	mov	esi,edx
-	jz	NEAR L$003maw_end
-	; Tail Round 6
-	mov	eax,DWORD [24+ebx]
-	mul	ebp
-	add	eax,esi
-	adc	edx,0
-	add	eax,DWORD [24+edi]
-	adc	edx,0
-	mov	DWORD [24+edi],eax
-	mov	esi,edx
+ ; Tail Round 0
+ mov eax,DWORD [ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [edi]
+ adc edx,0
+ dec ecx
+ mov DWORD [edi],eax
+ mov esi,edx
+ jz NEAR L$003maw_end
+ ; Tail Round 1
+ mov eax,DWORD [4+ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [4+edi]
+ adc edx,0
+ dec ecx
+ mov DWORD [4+edi],eax
+ mov esi,edx
+ jz NEAR L$003maw_end
+ ; Tail Round 2
+ mov eax,DWORD [8+ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [8+edi]
+ adc edx,0
+ dec ecx
+ mov DWORD [8+edi],eax
+ mov esi,edx
+ jz NEAR L$003maw_end
+ ; Tail Round 3
+ mov eax,DWORD [12+ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [12+edi]
+ adc edx,0
+ dec ecx
+ mov DWORD [12+edi],eax
+ mov esi,edx
+ jz NEAR L$003maw_end
+ ; Tail Round 4
+ mov eax,DWORD [16+ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [16+edi]
+ adc edx,0
+ dec ecx
+ mov DWORD [16+edi],eax
+ mov esi,edx
+ jz NEAR L$003maw_end
+ ; Tail Round 5
+ mov eax,DWORD [20+ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [20+edi]
+ adc edx,0
+ dec ecx
+ mov DWORD [20+edi],eax
+ mov esi,edx
+ jz NEAR L$003maw_end
+ ; Tail Round 6
+ mov eax,DWORD [24+ebx]
+ mul ebp
+ add eax,esi
+ adc edx,0
+ add eax,DWORD [24+edi]
+ adc edx,0
+ mov DWORD [24+edi],eax
+ mov esi,edx
 L$003maw_end:
-	mov	eax,esi
-	pop	ecx
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-global	_bn_mul_words
-align	16
+ mov eax,esi
+ pop ecx
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+global _bn_mul_words
+align 16
 _bn_mul_words:
 L$_bn_mul_words_begin:
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	; 
-	xor	esi,esi
-	mov	edi,DWORD [20+esp]
-	mov	ebx,DWORD [24+esp]
-	mov	ebp,DWORD [28+esp]
-	mov	ecx,DWORD [32+esp]
-	and	ebp,4294967288
-	jz	NEAR L$004mw_finish
+ push ebp
+ push ebx
+ push esi
+ push edi
+ ;
+ xor esi,esi
+ mov edi,DWORD [20+esp]
+ mov ebx,DWORD [24+esp]
+ mov ebp,DWORD [28+esp]
+ mov ecx,DWORD [32+esp]
+ and ebp,4294967288
+ jz NEAR L$004mw_finish
 L$005mw_loop:
-	; Round 0
-	mov	eax,DWORD [ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [edi],eax
-	mov	esi,edx
-	; Round 4
-	mov	eax,DWORD [4+ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [4+edi],eax
-	mov	esi,edx
-	; Round 8
-	mov	eax,DWORD [8+ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [8+edi],eax
-	mov	esi,edx
-	; Round 12
-	mov	eax,DWORD [12+ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [12+edi],eax
-	mov	esi,edx
-	; Round 16
-	mov	eax,DWORD [16+ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [16+edi],eax
-	mov	esi,edx
-	; Round 20
-	mov	eax,DWORD [20+ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [20+edi],eax
-	mov	esi,edx
-	; Round 24
-	mov	eax,DWORD [24+ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [24+edi],eax
-	mov	esi,edx
-	; Round 28
-	mov	eax,DWORD [28+ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [28+edi],eax
-	mov	esi,edx
-	; 
-	add	ebx,32
-	add	edi,32
-	sub	ebp,8
-	jz	NEAR L$004mw_finish
-	jmp	NEAR L$005mw_loop
+ ; Round 0
+ mov eax,DWORD [ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [edi],eax
+ mov esi,edx
+ ; Round 4
+ mov eax,DWORD [4+ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [4+edi],eax
+ mov esi,edx
+ ; Round 8
+ mov eax,DWORD [8+ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [8+edi],eax
+ mov esi,edx
+ ; Round 12
+ mov eax,DWORD [12+ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [12+edi],eax
+ mov esi,edx
+ ; Round 16
+ mov eax,DWORD [16+ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [16+edi],eax
+ mov esi,edx
+ ; Round 20
+ mov eax,DWORD [20+ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [20+edi],eax
+ mov esi,edx
+ ; Round 24
+ mov eax,DWORD [24+ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [24+edi],eax
+ mov esi,edx
+ ; Round 28
+ mov eax,DWORD [28+ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [28+edi],eax
+ mov esi,edx
+ ;
+ add ebx,32
+ add edi,32
+ sub ebp,8
+ jz NEAR L$004mw_finish
+ jmp NEAR L$005mw_loop
 L$004mw_finish:
-	mov	ebp,DWORD [28+esp]
-	and	ebp,7
-	jnz	NEAR L$006mw_finish2
-	jmp	NEAR L$007mw_end
+ mov ebp,DWORD [28+esp]
+ and ebp,7
+ jnz NEAR L$006mw_finish2
+ jmp NEAR L$007mw_end
 L$006mw_finish2:
-	; Tail Round 0
-	mov	eax,DWORD [ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [edi],eax
-	mov	esi,edx
-	dec	ebp
-	jz	NEAR L$007mw_end
-	; Tail Round 1
-	mov	eax,DWORD [4+ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [4+edi],eax
-	mov	esi,edx
-	dec	ebp
-	jz	NEAR L$007mw_end
-	; Tail Round 2
-	mov	eax,DWORD [8+ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [8+edi],eax
-	mov	esi,edx
-	dec	ebp
-	jz	NEAR L$007mw_end
-	; Tail Round 3
-	mov	eax,DWORD [12+ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [12+edi],eax
-	mov	esi,edx
-	dec	ebp
-	jz	NEAR L$007mw_end
-	; Tail Round 4
-	mov	eax,DWORD [16+ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [16+edi],eax
-	mov	esi,edx
-	dec	ebp
-	jz	NEAR L$007mw_end
-	; Tail Round 5
-	mov	eax,DWORD [20+ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [20+edi],eax
-	mov	esi,edx
-	dec	ebp
-	jz	NEAR L$007mw_end
-	; Tail Round 6
-	mov	eax,DWORD [24+ebx]
-	mul	ecx
-	add	eax,esi
-	adc	edx,0
-	mov	DWORD [24+edi],eax
-	mov	esi,edx
+ ; Tail Round 0
+ mov eax,DWORD [ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [edi],eax
+ mov esi,edx
+ dec ebp
+ jz NEAR L$007mw_end
+ ; Tail Round 1
+ mov eax,DWORD [4+ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [4+edi],eax
+ mov esi,edx
+ dec ebp
+ jz NEAR L$007mw_end
+ ; Tail Round 2
+ mov eax,DWORD [8+ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [8+edi],eax
+ mov esi,edx
+ dec ebp
+ jz NEAR L$007mw_end
+ ; Tail Round 3
+ mov eax,DWORD [12+ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [12+edi],eax
+ mov esi,edx
+ dec ebp
+ jz NEAR L$007mw_end
+ ; Tail Round 4
+ mov eax,DWORD [16+ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [16+edi],eax
+ mov esi,edx
+ dec ebp
+ jz NEAR L$007mw_end
+ ; Tail Round 5
+ mov eax,DWORD [20+ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [20+edi],eax
+ mov esi,edx
+ dec ebp
+ jz NEAR L$007mw_end
+ ; Tail Round 6
+ mov eax,DWORD [24+ebx]
+ mul ecx
+ add eax,esi
+ adc edx,0
+ mov DWORD [24+edi],eax
+ mov esi,edx
 L$007mw_end:
-	mov	eax,esi
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-global	_bn_sqr_words
-align	16
+ mov eax,esi
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+global _bn_sqr_words
+align 16
 _bn_sqr_words:
 L$_bn_sqr_words_begin:
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	; 
-	mov	esi,DWORD [20+esp]
-	mov	edi,DWORD [24+esp]
-	mov	ebx,DWORD [28+esp]
-	and	ebx,4294967288
-	jz	NEAR L$008sw_finish
+ push ebp
+ push ebx
+ push esi
+ push edi
+ ;
+ mov esi,DWORD [20+esp]
+ mov edi,DWORD [24+esp]
+ mov ebx,DWORD [28+esp]
+ and ebx,4294967288
+ jz NEAR L$008sw_finish
 L$009sw_loop:
-	; Round 0
-	mov	eax,DWORD [edi]
-	mul	eax
-	mov	DWORD [esi],eax
-	mov	DWORD [4+esi],edx
-	; Round 4
-	mov	eax,DWORD [4+edi]
-	mul	eax
-	mov	DWORD [8+esi],eax
-	mov	DWORD [12+esi],edx
-	; Round 8
-	mov	eax,DWORD [8+edi]
-	mul	eax
-	mov	DWORD [16+esi],eax
-	mov	DWORD [20+esi],edx
-	; Round 12
-	mov	eax,DWORD [12+edi]
-	mul	eax
-	mov	DWORD [24+esi],eax
-	mov	DWORD [28+esi],edx
-	; Round 16
-	mov	eax,DWORD [16+edi]
-	mul	eax
-	mov	DWORD [32+esi],eax
-	mov	DWORD [36+esi],edx
-	; Round 20
-	mov	eax,DWORD [20+edi]
-	mul	eax
-	mov	DWORD [40+esi],eax
-	mov	DWORD [44+esi],edx
-	; Round 24
-	mov	eax,DWORD [24+edi]
-	mul	eax
-	mov	DWORD [48+esi],eax
-	mov	DWORD [52+esi],edx
-	; Round 28
-	mov	eax,DWORD [28+edi]
-	mul	eax
-	mov	DWORD [56+esi],eax
-	mov	DWORD [60+esi],edx
-	; 
-	add	edi,32
-	add	esi,64
-	sub	ebx,8
-	jnz	NEAR L$009sw_loop
+ ; Round 0
+ mov eax,DWORD [edi]
+ mul eax
+ mov DWORD [esi],eax
+ mov DWORD [4+esi],edx
+ ; Round 4
+ mov eax,DWORD [4+edi]
+ mul eax
+ mov DWORD [8+esi],eax
+ mov DWORD [12+esi],edx
+ ; Round 8
+ mov eax,DWORD [8+edi]
+ mul eax
+ mov DWORD [16+esi],eax
+ mov DWORD [20+esi],edx
+ ; Round 12
+ mov eax,DWORD [12+edi]
+ mul eax
+ mov DWORD [24+esi],eax
+ mov DWORD [28+esi],edx
+ ; Round 16
+ mov eax,DWORD [16+edi]
+ mul eax
+ mov DWORD [32+esi],eax
+ mov DWORD [36+esi],edx
+ ; Round 20
+ mov eax,DWORD [20+edi]
+ mul eax
+ mov DWORD [40+esi],eax
+ mov DWORD [44+esi],edx
+ ; Round 24
+ mov eax,DWORD [24+edi]
+ mul eax
+ mov DWORD [48+esi],eax
+ mov DWORD [52+esi],edx
+ ; Round 28
+ mov eax,DWORD [28+edi]
+ mul eax
+ mov DWORD [56+esi],eax
+ mov DWORD [60+esi],edx
+ ;
+ add edi,32
+ add esi,64
+ sub ebx,8
+ jnz NEAR L$009sw_loop
 L$008sw_finish:
-	mov	ebx,DWORD [28+esp]
-	and	ebx,7
-	jz	NEAR L$010sw_end
-	; Tail Round 0
-	mov	eax,DWORD [edi]
-	mul	eax
-	mov	DWORD [esi],eax
-	dec	ebx
-	mov	DWORD [4+esi],edx
-	jz	NEAR L$010sw_end
-	; Tail Round 1
-	mov	eax,DWORD [4+edi]
-	mul	eax
-	mov	DWORD [8+esi],eax
-	dec	ebx
-	mov	DWORD [12+esi],edx
-	jz	NEAR L$010sw_end
-	; Tail Round 2
-	mov	eax,DWORD [8+edi]
-	mul	eax
-	mov	DWORD [16+esi],eax
-	dec	ebx
-	mov	DWORD [20+esi],edx
-	jz	NEAR L$010sw_end
-	; Tail Round 3
-	mov	eax,DWORD [12+edi]
-	mul	eax
-	mov	DWORD [24+esi],eax
-	dec	ebx
-	mov	DWORD [28+esi],edx
-	jz	NEAR L$010sw_end
-	; Tail Round 4
-	mov	eax,DWORD [16+edi]
-	mul	eax
-	mov	DWORD [32+esi],eax
-	dec	ebx
-	mov	DWORD [36+esi],edx
-	jz	NEAR L$010sw_end
-	; Tail Round 5
-	mov	eax,DWORD [20+edi]
-	mul	eax
-	mov	DWORD [40+esi],eax
-	dec	ebx
-	mov	DWORD [44+esi],edx
-	jz	NEAR L$010sw_end
-	; Tail Round 6
-	mov	eax,DWORD [24+edi]
-	mul	eax
-	mov	DWORD [48+esi],eax
-	mov	DWORD [52+esi],edx
+ mov ebx,DWORD [28+esp]
+ and ebx,7
+ jz NEAR L$010sw_end
+ ; Tail Round 0
+ mov eax,DWORD [edi]
+ mul eax
+ mov DWORD [esi],eax
+ dec ebx
+ mov DWORD [4+esi],edx
+ jz NEAR L$010sw_end
+ ; Tail Round 1
+ mov eax,DWORD [4+edi]
+ mul eax
+ mov DWORD [8+esi],eax
+ dec ebx
+ mov DWORD [12+esi],edx
+ jz NEAR L$010sw_end
+ ; Tail Round 2
+ mov eax,DWORD [8+edi]
+ mul eax
+ mov DWORD [16+esi],eax
+ dec ebx
+ mov DWORD [20+esi],edx
+ jz NEAR L$010sw_end
+ ; Tail Round 3
+ mov eax,DWORD [12+edi]
+ mul eax
+ mov DWORD [24+esi],eax
+ dec ebx
+ mov DWORD [28+esi],edx
+ jz NEAR L$010sw_end
+ ; Tail Round 4
+ mov eax,DWORD [16+edi]
+ mul eax
+ mov DWORD [32+esi],eax
+ dec ebx
+ mov DWORD [36+esi],edx
+ jz NEAR L$010sw_end
+ ; Tail Round 5
+ mov eax,DWORD [20+edi]
+ mul eax
+ mov DWORD [40+esi],eax
+ dec ebx
+ mov DWORD [44+esi],edx
+ jz NEAR L$010sw_end
+ ; Tail Round 6
+ mov eax,DWORD [24+edi]
+ mul eax
+ mov DWORD [48+esi],eax
+ mov DWORD [52+esi],edx
 L$010sw_end:
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-global	_bn_div_words
-align	16
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+global _bn_div_words
+align 16
 _bn_div_words:
 L$_bn_div_words_begin:
-	mov	edx,DWORD [4+esp]
-	mov	eax,DWORD [8+esp]
-	mov	ecx,DWORD [12+esp]
-	div	ecx
-	ret
-global	_bn_add_words
-align	16
+ mov edx,DWORD [4+esp]
+ mov eax,DWORD [8+esp]
+ mov ecx,DWORD [12+esp]
+ div ecx
+ ret
+global _bn_add_words
+align 16
 _bn_add_words:
 L$_bn_add_words_begin:
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	; 
-	mov	ebx,DWORD [20+esp]
-	mov	esi,DWORD [24+esp]
-	mov	edi,DWORD [28+esp]
-	mov	ebp,DWORD [32+esp]
-	xor	eax,eax
-	and	ebp,4294967288
-	jz	NEAR L$011aw_finish
+ push ebp
+ push ebx
+ push esi
+ push edi
+ ;
+ mov ebx,DWORD [20+esp]
+ mov esi,DWORD [24+esp]
+ mov edi,DWORD [28+esp]
+ mov ebp,DWORD [32+esp]
+ xor eax,eax
+ and ebp,4294967288
+ jz NEAR L$011aw_finish
 L$012aw_loop:
-	; Round 0
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	mov	DWORD [ebx],ecx
-	; Round 1
-	mov	ecx,DWORD [4+esi]
-	mov	edx,DWORD [4+edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	mov	DWORD [4+ebx],ecx
-	; Round 2
-	mov	ecx,DWORD [8+esi]
-	mov	edx,DWORD [8+edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	mov	DWORD [8+ebx],ecx
-	; Round 3
-	mov	ecx,DWORD [12+esi]
-	mov	edx,DWORD [12+edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	mov	DWORD [12+ebx],ecx
-	; Round 4
-	mov	ecx,DWORD [16+esi]
-	mov	edx,DWORD [16+edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	mov	DWORD [16+ebx],ecx
-	; Round 5
-	mov	ecx,DWORD [20+esi]
-	mov	edx,DWORD [20+edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	mov	DWORD [20+ebx],ecx
-	; Round 6
-	mov	ecx,DWORD [24+esi]
-	mov	edx,DWORD [24+edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	mov	DWORD [24+ebx],ecx
-	; Round 7
-	mov	ecx,DWORD [28+esi]
-	mov	edx,DWORD [28+edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	mov	DWORD [28+ebx],ecx
-	; 
-	add	esi,32
-	add	edi,32
-	add	ebx,32
-	sub	ebp,8
-	jnz	NEAR L$012aw_loop
+ ; Round 0
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ mov DWORD [ebx],ecx
+ ; Round 1
+ mov ecx,DWORD [4+esi]
+ mov edx,DWORD [4+edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ mov DWORD [4+ebx],ecx
+ ; Round 2
+ mov ecx,DWORD [8+esi]
+ mov edx,DWORD [8+edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ mov DWORD [8+ebx],ecx
+ ; Round 3
+ mov ecx,DWORD [12+esi]
+ mov edx,DWORD [12+edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ mov DWORD [12+ebx],ecx
+ ; Round 4
+ mov ecx,DWORD [16+esi]
+ mov edx,DWORD [16+edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ mov DWORD [16+ebx],ecx
+ ; Round 5
+ mov ecx,DWORD [20+esi]
+ mov edx,DWORD [20+edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ mov DWORD [20+ebx],ecx
+ ; Round 6
+ mov ecx,DWORD [24+esi]
+ mov edx,DWORD [24+edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ mov DWORD [24+ebx],ecx
+ ; Round 7
+ mov ecx,DWORD [28+esi]
+ mov edx,DWORD [28+edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ mov DWORD [28+ebx],ecx
+ ;
+ add esi,32
+ add edi,32
+ add ebx,32
+ sub ebp,8
+ jnz NEAR L$012aw_loop
 L$011aw_finish:
-	mov	ebp,DWORD [32+esp]
-	and	ebp,7
-	jz	NEAR L$013aw_end
-	; Tail Round 0
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [ebx],ecx
-	jz	NEAR L$013aw_end
-	; Tail Round 1
-	mov	ecx,DWORD [4+esi]
-	mov	edx,DWORD [4+edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [4+ebx],ecx
-	jz	NEAR L$013aw_end
-	; Tail Round 2
-	mov	ecx,DWORD [8+esi]
-	mov	edx,DWORD [8+edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [8+ebx],ecx
-	jz	NEAR L$013aw_end
-	; Tail Round 3
-	mov	ecx,DWORD [12+esi]
-	mov	edx,DWORD [12+edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [12+ebx],ecx
-	jz	NEAR L$013aw_end
-	; Tail Round 4
-	mov	ecx,DWORD [16+esi]
-	mov	edx,DWORD [16+edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [16+ebx],ecx
-	jz	NEAR L$013aw_end
-	; Tail Round 5
-	mov	ecx,DWORD [20+esi]
-	mov	edx,DWORD [20+edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [20+ebx],ecx
-	jz	NEAR L$013aw_end
-	; Tail Round 6
-	mov	ecx,DWORD [24+esi]
-	mov	edx,DWORD [24+edi]
-	add	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	add	ecx,edx
-	adc	eax,0
-	mov	DWORD [24+ebx],ecx
+ mov ebp,DWORD [32+esp]
+ and ebp,7
+ jz NEAR L$013aw_end
+ ; Tail Round 0
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [ebx],ecx
+ jz NEAR L$013aw_end
+ ; Tail Round 1
+ mov ecx,DWORD [4+esi]
+ mov edx,DWORD [4+edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [4+ebx],ecx
+ jz NEAR L$013aw_end
+ ; Tail Round 2
+ mov ecx,DWORD [8+esi]
+ mov edx,DWORD [8+edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [8+ebx],ecx
+ jz NEAR L$013aw_end
+ ; Tail Round 3
+ mov ecx,DWORD [12+esi]
+ mov edx,DWORD [12+edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [12+ebx],ecx
+ jz NEAR L$013aw_end
+ ; Tail Round 4
+ mov ecx,DWORD [16+esi]
+ mov edx,DWORD [16+edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [16+ebx],ecx
+ jz NEAR L$013aw_end
+ ; Tail Round 5
+ mov ecx,DWORD [20+esi]
+ mov edx,DWORD [20+edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [20+ebx],ecx
+ jz NEAR L$013aw_end
+ ; Tail Round 6
+ mov ecx,DWORD [24+esi]
+ mov edx,DWORD [24+edi]
+ add ecx,eax
+ mov eax,0
+ adc eax,eax
+ add ecx,edx
+ adc eax,0
+ mov DWORD [24+ebx],ecx
 L$013aw_end:
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-global	_bn_sub_words
-align	16
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+global _bn_sub_words
+align 16
 _bn_sub_words:
 L$_bn_sub_words_begin:
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	; 
-	mov	ebx,DWORD [20+esp]
-	mov	esi,DWORD [24+esp]
-	mov	edi,DWORD [28+esp]
-	mov	ebp,DWORD [32+esp]
-	xor	eax,eax
-	and	ebp,4294967288
-	jz	NEAR L$014aw_finish
+ push ebp
+ push ebx
+ push esi
+ push edi
+ ;
+ mov ebx,DWORD [20+esp]
+ mov esi,DWORD [24+esp]
+ mov edi,DWORD [28+esp]
+ mov ebp,DWORD [32+esp]
+ xor eax,eax
+ and ebp,4294967288
+ jz NEAR L$014aw_finish
 L$015aw_loop:
-	; Round 0
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [ebx],ecx
-	; Round 1
-	mov	ecx,DWORD [4+esi]
-	mov	edx,DWORD [4+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [4+ebx],ecx
-	; Round 2
-	mov	ecx,DWORD [8+esi]
-	mov	edx,DWORD [8+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [8+ebx],ecx
-	; Round 3
-	mov	ecx,DWORD [12+esi]
-	mov	edx,DWORD [12+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [12+ebx],ecx
-	; Round 4
-	mov	ecx,DWORD [16+esi]
-	mov	edx,DWORD [16+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [16+ebx],ecx
-	; Round 5
-	mov	ecx,DWORD [20+esi]
-	mov	edx,DWORD [20+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [20+ebx],ecx
-	; Round 6
-	mov	ecx,DWORD [24+esi]
-	mov	edx,DWORD [24+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [24+ebx],ecx
-	; Round 7
-	mov	ecx,DWORD [28+esi]
-	mov	edx,DWORD [28+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [28+ebx],ecx
-	; 
-	add	esi,32
-	add	edi,32
-	add	ebx,32
-	sub	ebp,8
-	jnz	NEAR L$015aw_loop
+ ; Round 0
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [ebx],ecx
+ ; Round 1
+ mov ecx,DWORD [4+esi]
+ mov edx,DWORD [4+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [4+ebx],ecx
+ ; Round 2
+ mov ecx,DWORD [8+esi]
+ mov edx,DWORD [8+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [8+ebx],ecx
+ ; Round 3
+ mov ecx,DWORD [12+esi]
+ mov edx,DWORD [12+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [12+ebx],ecx
+ ; Round 4
+ mov ecx,DWORD [16+esi]
+ mov edx,DWORD [16+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [16+ebx],ecx
+ ; Round 5
+ mov ecx,DWORD [20+esi]
+ mov edx,DWORD [20+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [20+ebx],ecx
+ ; Round 6
+ mov ecx,DWORD [24+esi]
+ mov edx,DWORD [24+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [24+ebx],ecx
+ ; Round 7
+ mov ecx,DWORD [28+esi]
+ mov edx,DWORD [28+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [28+ebx],ecx
+ ;
+ add esi,32
+ add edi,32
+ add ebx,32
+ sub ebp,8
+ jnz NEAR L$015aw_loop
 L$014aw_finish:
-	mov	ebp,DWORD [32+esp]
-	and	ebp,7
-	jz	NEAR L$016aw_end
-	; Tail Round 0
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [ebx],ecx
-	jz	NEAR L$016aw_end
-	; Tail Round 1
-	mov	ecx,DWORD [4+esi]
-	mov	edx,DWORD [4+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [4+ebx],ecx
-	jz	NEAR L$016aw_end
-	; Tail Round 2
-	mov	ecx,DWORD [8+esi]
-	mov	edx,DWORD [8+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [8+ebx],ecx
-	jz	NEAR L$016aw_end
-	; Tail Round 3
-	mov	ecx,DWORD [12+esi]
-	mov	edx,DWORD [12+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [12+ebx],ecx
-	jz	NEAR L$016aw_end
-	; Tail Round 4
-	mov	ecx,DWORD [16+esi]
-	mov	edx,DWORD [16+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [16+ebx],ecx
-	jz	NEAR L$016aw_end
-	; Tail Round 5
-	mov	ecx,DWORD [20+esi]
-	mov	edx,DWORD [20+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [20+ebx],ecx
-	jz	NEAR L$016aw_end
-	; Tail Round 6
-	mov	ecx,DWORD [24+esi]
-	mov	edx,DWORD [24+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [24+ebx],ecx
+ mov ebp,DWORD [32+esp]
+ and ebp,7
+ jz NEAR L$016aw_end
+ ; Tail Round 0
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [ebx],ecx
+ jz NEAR L$016aw_end
+ ; Tail Round 1
+ mov ecx,DWORD [4+esi]
+ mov edx,DWORD [4+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [4+ebx],ecx
+ jz NEAR L$016aw_end
+ ; Tail Round 2
+ mov ecx,DWORD [8+esi]
+ mov edx,DWORD [8+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [8+ebx],ecx
+ jz NEAR L$016aw_end
+ ; Tail Round 3
+ mov ecx,DWORD [12+esi]
+ mov edx,DWORD [12+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [12+ebx],ecx
+ jz NEAR L$016aw_end
+ ; Tail Round 4
+ mov ecx,DWORD [16+esi]
+ mov edx,DWORD [16+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [16+ebx],ecx
+ jz NEAR L$016aw_end
+ ; Tail Round 5
+ mov ecx,DWORD [20+esi]
+ mov edx,DWORD [20+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [20+ebx],ecx
+ jz NEAR L$016aw_end
+ ; Tail Round 6
+ mov ecx,DWORD [24+esi]
+ mov edx,DWORD [24+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [24+ebx],ecx
 L$016aw_end:
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-global	_bn_sub_part_words
-align	16
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+global _bn_sub_part_words
+align 16
 _bn_sub_part_words:
 L$_bn_sub_part_words_begin:
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	; 
-	mov	ebx,DWORD [20+esp]
-	mov	esi,DWORD [24+esp]
-	mov	edi,DWORD [28+esp]
-	mov	ebp,DWORD [32+esp]
-	xor	eax,eax
-	and	ebp,4294967288
-	jz	NEAR L$017aw_finish
+ push ebp
+ push ebx
+ push esi
+ push edi
+ ;
+ mov ebx,DWORD [20+esp]
+ mov esi,DWORD [24+esp]
+ mov edi,DWORD [28+esp]
+ mov ebp,DWORD [32+esp]
+ xor eax,eax
+ and ebp,4294967288
+ jz NEAR L$017aw_finish
 L$018aw_loop:
-	; Round 0
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [ebx],ecx
-	; Round 1
-	mov	ecx,DWORD [4+esi]
-	mov	edx,DWORD [4+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [4+ebx],ecx
-	; Round 2
-	mov	ecx,DWORD [8+esi]
-	mov	edx,DWORD [8+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [8+ebx],ecx
-	; Round 3
-	mov	ecx,DWORD [12+esi]
-	mov	edx,DWORD [12+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [12+ebx],ecx
-	; Round 4
-	mov	ecx,DWORD [16+esi]
-	mov	edx,DWORD [16+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [16+ebx],ecx
-	; Round 5
-	mov	ecx,DWORD [20+esi]
-	mov	edx,DWORD [20+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [20+ebx],ecx
-	; Round 6
-	mov	ecx,DWORD [24+esi]
-	mov	edx,DWORD [24+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [24+ebx],ecx
-	; Round 7
-	mov	ecx,DWORD [28+esi]
-	mov	edx,DWORD [28+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [28+ebx],ecx
-	; 
-	add	esi,32
-	add	edi,32
-	add	ebx,32
-	sub	ebp,8
-	jnz	NEAR L$018aw_loop
+ ; Round 0
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [ebx],ecx
+ ; Round 1
+ mov ecx,DWORD [4+esi]
+ mov edx,DWORD [4+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [4+ebx],ecx
+ ; Round 2
+ mov ecx,DWORD [8+esi]
+ mov edx,DWORD [8+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [8+ebx],ecx
+ ; Round 3
+ mov ecx,DWORD [12+esi]
+ mov edx,DWORD [12+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [12+ebx],ecx
+ ; Round 4
+ mov ecx,DWORD [16+esi]
+ mov edx,DWORD [16+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [16+ebx],ecx
+ ; Round 5
+ mov ecx,DWORD [20+esi]
+ mov edx,DWORD [20+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [20+ebx],ecx
+ ; Round 6
+ mov ecx,DWORD [24+esi]
+ mov edx,DWORD [24+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [24+ebx],ecx
+ ; Round 7
+ mov ecx,DWORD [28+esi]
+ mov edx,DWORD [28+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [28+ebx],ecx
+ ;
+ add esi,32
+ add edi,32
+ add ebx,32
+ sub ebp,8
+ jnz NEAR L$018aw_loop
 L$017aw_finish:
-	mov	ebp,DWORD [32+esp]
-	and	ebp,7
-	jz	NEAR L$019aw_end
-	; Tail Round 0
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [ebx],ecx
-	add	esi,4
-	add	edi,4
-	add	ebx,4
-	dec	ebp
-	jz	NEAR L$019aw_end
-	; Tail Round 1
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [ebx],ecx
-	add	esi,4
-	add	edi,4
-	add	ebx,4
-	dec	ebp
-	jz	NEAR L$019aw_end
-	; Tail Round 2
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [ebx],ecx
-	add	esi,4
-	add	edi,4
-	add	ebx,4
-	dec	ebp
-	jz	NEAR L$019aw_end
-	; Tail Round 3
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [ebx],ecx
-	add	esi,4
-	add	edi,4
-	add	ebx,4
-	dec	ebp
-	jz	NEAR L$019aw_end
-	; Tail Round 4
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [ebx],ecx
-	add	esi,4
-	add	edi,4
-	add	ebx,4
-	dec	ebp
-	jz	NEAR L$019aw_end
-	; Tail Round 5
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [ebx],ecx
-	add	esi,4
-	add	edi,4
-	add	ebx,4
-	dec	ebp
-	jz	NEAR L$019aw_end
-	; Tail Round 6
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [ebx],ecx
-	add	esi,4
-	add	edi,4
-	add	ebx,4
+ mov ebp,DWORD [32+esp]
+ and ebp,7
+ jz NEAR L$019aw_end
+ ; Tail Round 0
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [ebx],ecx
+ add esi,4
+ add edi,4
+ add ebx,4
+ dec ebp
+ jz NEAR L$019aw_end
+ ; Tail Round 1
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [ebx],ecx
+ add esi,4
+ add edi,4
+ add ebx,4
+ dec ebp
+ jz NEAR L$019aw_end
+ ; Tail Round 2
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [ebx],ecx
+ add esi,4
+ add edi,4
+ add ebx,4
+ dec ebp
+ jz NEAR L$019aw_end
+ ; Tail Round 3
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [ebx],ecx
+ add esi,4
+ add edi,4
+ add ebx,4
+ dec ebp
+ jz NEAR L$019aw_end
+ ; Tail Round 4
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [ebx],ecx
+ add esi,4
+ add edi,4
+ add ebx,4
+ dec ebp
+ jz NEAR L$019aw_end
+ ; Tail Round 5
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [ebx],ecx
+ add esi,4
+ add edi,4
+ add ebx,4
+ dec ebp
+ jz NEAR L$019aw_end
+ ; Tail Round 6
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [ebx],ecx
+ add esi,4
+ add edi,4
+ add ebx,4
 L$019aw_end:
-	cmp	DWORD [36+esp],0
-	je	NEAR L$020pw_end
-	mov	ebp,DWORD [36+esp]
-	cmp	ebp,0
-	je	NEAR L$020pw_end
-	jge	NEAR L$021pw_pos
-	; pw_neg
-	mov	edx,0
-	sub	edx,ebp
-	mov	ebp,edx
-	and	ebp,4294967288
-	jz	NEAR L$022pw_neg_finish
+ cmp DWORD [36+esp],0
+ je NEAR L$020pw_end
+ mov ebp,DWORD [36+esp]
+ cmp ebp,0
+ je NEAR L$020pw_end
+ jge NEAR L$021pw_pos
+ ; pw_neg
+ mov edx,0
+ sub edx,ebp
+ mov ebp,edx
+ and ebp,4294967288
+ jz NEAR L$022pw_neg_finish
 L$023pw_neg_loop:
-	; dl<0 Round 0
-	mov	ecx,0
-	mov	edx,DWORD [edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [ebx],ecx
-	; dl<0 Round 1
-	mov	ecx,0
-	mov	edx,DWORD [4+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [4+ebx],ecx
-	; dl<0 Round 2
-	mov	ecx,0
-	mov	edx,DWORD [8+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [8+ebx],ecx
-	; dl<0 Round 3
-	mov	ecx,0
-	mov	edx,DWORD [12+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [12+ebx],ecx
-	; dl<0 Round 4
-	mov	ecx,0
-	mov	edx,DWORD [16+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [16+ebx],ecx
-	; dl<0 Round 5
-	mov	ecx,0
-	mov	edx,DWORD [20+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [20+ebx],ecx
-	; dl<0 Round 6
-	mov	ecx,0
-	mov	edx,DWORD [24+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [24+ebx],ecx
-	; dl<0 Round 7
-	mov	ecx,0
-	mov	edx,DWORD [28+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [28+ebx],ecx
-	; 
-	add	edi,32
-	add	ebx,32
-	sub	ebp,8
-	jnz	NEAR L$023pw_neg_loop
+ ; dl<0 Round 0
+ mov ecx,0
+ mov edx,DWORD [edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [ebx],ecx
+ ; dl<0 Round 1
+ mov ecx,0
+ mov edx,DWORD [4+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [4+ebx],ecx
+ ; dl<0 Round 2
+ mov ecx,0
+ mov edx,DWORD [8+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [8+ebx],ecx
+ ; dl<0 Round 3
+ mov ecx,0
+ mov edx,DWORD [12+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [12+ebx],ecx
+ ; dl<0 Round 4
+ mov ecx,0
+ mov edx,DWORD [16+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [16+ebx],ecx
+ ; dl<0 Round 5
+ mov ecx,0
+ mov edx,DWORD [20+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [20+ebx],ecx
+ ; dl<0 Round 6
+ mov ecx,0
+ mov edx,DWORD [24+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [24+ebx],ecx
+ ; dl<0 Round 7
+ mov ecx,0
+ mov edx,DWORD [28+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [28+ebx],ecx
+ ;
+ add edi,32
+ add ebx,32
+ sub ebp,8
+ jnz NEAR L$023pw_neg_loop
 L$022pw_neg_finish:
-	mov	edx,DWORD [36+esp]
-	mov	ebp,0
-	sub	ebp,edx
-	and	ebp,7
-	jz	NEAR L$020pw_end
-	; dl<0 Tail Round 0
-	mov	ecx,0
-	mov	edx,DWORD [edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [ebx],ecx
-	jz	NEAR L$020pw_end
-	; dl<0 Tail Round 1
-	mov	ecx,0
-	mov	edx,DWORD [4+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [4+ebx],ecx
-	jz	NEAR L$020pw_end
-	; dl<0 Tail Round 2
-	mov	ecx,0
-	mov	edx,DWORD [8+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [8+ebx],ecx
-	jz	NEAR L$020pw_end
-	; dl<0 Tail Round 3
-	mov	ecx,0
-	mov	edx,DWORD [12+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [12+ebx],ecx
-	jz	NEAR L$020pw_end
-	; dl<0 Tail Round 4
-	mov	ecx,0
-	mov	edx,DWORD [16+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [16+ebx],ecx
-	jz	NEAR L$020pw_end
-	; dl<0 Tail Round 5
-	mov	ecx,0
-	mov	edx,DWORD [20+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	dec	ebp
-	mov	DWORD [20+ebx],ecx
-	jz	NEAR L$020pw_end
-	; dl<0 Tail Round 6
-	mov	ecx,0
-	mov	edx,DWORD [24+edi]
-	sub	ecx,eax
-	mov	eax,0
-	adc	eax,eax
-	sub	ecx,edx
-	adc	eax,0
-	mov	DWORD [24+ebx],ecx
-	jmp	NEAR L$020pw_end
+ mov edx,DWORD [36+esp]
+ mov ebp,0
+ sub ebp,edx
+ and ebp,7
+ jz NEAR L$020pw_end
+ ; dl<0 Tail Round 0
+ mov ecx,0
+ mov edx,DWORD [edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [ebx],ecx
+ jz NEAR L$020pw_end
+ ; dl<0 Tail Round 1
+ mov ecx,0
+ mov edx,DWORD [4+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [4+ebx],ecx
+ jz NEAR L$020pw_end
+ ; dl<0 Tail Round 2
+ mov ecx,0
+ mov edx,DWORD [8+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [8+ebx],ecx
+ jz NEAR L$020pw_end
+ ; dl<0 Tail Round 3
+ mov ecx,0
+ mov edx,DWORD [12+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [12+ebx],ecx
+ jz NEAR L$020pw_end
+ ; dl<0 Tail Round 4
+ mov ecx,0
+ mov edx,DWORD [16+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [16+ebx],ecx
+ jz NEAR L$020pw_end
+ ; dl<0 Tail Round 5
+ mov ecx,0
+ mov edx,DWORD [20+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ dec ebp
+ mov DWORD [20+ebx],ecx
+ jz NEAR L$020pw_end
+ ; dl<0 Tail Round 6
+ mov ecx,0
+ mov edx,DWORD [24+edi]
+ sub ecx,eax
+ mov eax,0
+ adc eax,eax
+ sub ecx,edx
+ adc eax,0
+ mov DWORD [24+ebx],ecx
+ jmp NEAR L$020pw_end
 L$021pw_pos:
-	and	ebp,4294967288
-	jz	NEAR L$024pw_pos_finish
+ and ebp,4294967288
+ jz NEAR L$024pw_pos_finish
 L$025pw_pos_loop:
-	; dl>0 Round 0
-	mov	ecx,DWORD [esi]
-	sub	ecx,eax
-	mov	DWORD [ebx],ecx
-	jnc	NEAR L$026pw_nc0
-	; dl>0 Round 1
-	mov	ecx,DWORD [4+esi]
-	sub	ecx,eax
-	mov	DWORD [4+ebx],ecx
-	jnc	NEAR L$027pw_nc1
-	; dl>0 Round 2
-	mov	ecx,DWORD [8+esi]
-	sub	ecx,eax
-	mov	DWORD [8+ebx],ecx
-	jnc	NEAR L$028pw_nc2
-	; dl>0 Round 3
-	mov	ecx,DWORD [12+esi]
-	sub	ecx,eax
-	mov	DWORD [12+ebx],ecx
-	jnc	NEAR L$029pw_nc3
-	; dl>0 Round 4
-	mov	ecx,DWORD [16+esi]
-	sub	ecx,eax
-	mov	DWORD [16+ebx],ecx
-	jnc	NEAR L$030pw_nc4
-	; dl>0 Round 5
-	mov	ecx,DWORD [20+esi]
-	sub	ecx,eax
-	mov	DWORD [20+ebx],ecx
-	jnc	NEAR L$031pw_nc5
-	; dl>0 Round 6
-	mov	ecx,DWORD [24+esi]
-	sub	ecx,eax
-	mov	DWORD [24+ebx],ecx
-	jnc	NEAR L$032pw_nc6
-	; dl>0 Round 7
-	mov	ecx,DWORD [28+esi]
-	sub	ecx,eax
-	mov	DWORD [28+ebx],ecx
-	jnc	NEAR L$033pw_nc7
-	; 
-	add	esi,32
-	add	ebx,32
-	sub	ebp,8
-	jnz	NEAR L$025pw_pos_loop
+ ; dl>0 Round 0
+ mov ecx,DWORD [esi]
+ sub ecx,eax
+ mov DWORD [ebx],ecx
+ jnc NEAR L$026pw_nc0
+ ; dl>0 Round 1
+ mov ecx,DWORD [4+esi]
+ sub ecx,eax
+ mov DWORD [4+ebx],ecx
+ jnc NEAR L$027pw_nc1
+ ; dl>0 Round 2
+ mov ecx,DWORD [8+esi]
+ sub ecx,eax
+ mov DWORD [8+ebx],ecx
+ jnc NEAR L$028pw_nc2
+ ; dl>0 Round 3
+ mov ecx,DWORD [12+esi]
+ sub ecx,eax
+ mov DWORD [12+ebx],ecx
+ jnc NEAR L$029pw_nc3
+ ; dl>0 Round 4
+ mov ecx,DWORD [16+esi]
+ sub ecx,eax
+ mov DWORD [16+ebx],ecx
+ jnc NEAR L$030pw_nc4
+ ; dl>0 Round 5
+ mov ecx,DWORD [20+esi]
+ sub ecx,eax
+ mov DWORD [20+ebx],ecx
+ jnc NEAR L$031pw_nc5
+ ; dl>0 Round 6
+ mov ecx,DWORD [24+esi]
+ sub ecx,eax
+ mov DWORD [24+ebx],ecx
+ jnc NEAR L$032pw_nc6
+ ; dl>0 Round 7
+ mov ecx,DWORD [28+esi]
+ sub ecx,eax
+ mov DWORD [28+ebx],ecx
+ jnc NEAR L$033pw_nc7
+ ;
+ add esi,32
+ add ebx,32
+ sub ebp,8
+ jnz NEAR L$025pw_pos_loop
 L$024pw_pos_finish:
-	mov	ebp,DWORD [36+esp]
-	and	ebp,7
-	jz	NEAR L$020pw_end
-	; dl>0 Tail Round 0
-	mov	ecx,DWORD [esi]
-	sub	ecx,eax
-	mov	DWORD [ebx],ecx
-	jnc	NEAR L$034pw_tail_nc0
-	dec	ebp
-	jz	NEAR L$020pw_end
-	; dl>0 Tail Round 1
-	mov	ecx,DWORD [4+esi]
-	sub	ecx,eax
-	mov	DWORD [4+ebx],ecx
-	jnc	NEAR L$035pw_tail_nc1
-	dec	ebp
-	jz	NEAR L$020pw_end
-	; dl>0 Tail Round 2
-	mov	ecx,DWORD [8+esi]
-	sub	ecx,eax
-	mov	DWORD [8+ebx],ecx
-	jnc	NEAR L$036pw_tail_nc2
-	dec	ebp
-	jz	NEAR L$020pw_end
-	; dl>0 Tail Round 3
-	mov	ecx,DWORD [12+esi]
-	sub	ecx,eax
-	mov	DWORD [12+ebx],ecx
-	jnc	NEAR L$037pw_tail_nc3
-	dec	ebp
-	jz	NEAR L$020pw_end
-	; dl>0 Tail Round 4
-	mov	ecx,DWORD [16+esi]
-	sub	ecx,eax
-	mov	DWORD [16+ebx],ecx
-	jnc	NEAR L$038pw_tail_nc4
-	dec	ebp
-	jz	NEAR L$020pw_end
-	; dl>0 Tail Round 5
-	mov	ecx,DWORD [20+esi]
-	sub	ecx,eax
-	mov	DWORD [20+ebx],ecx
-	jnc	NEAR L$039pw_tail_nc5
-	dec	ebp
-	jz	NEAR L$020pw_end
-	; dl>0 Tail Round 6
-	mov	ecx,DWORD [24+esi]
-	sub	ecx,eax
-	mov	DWORD [24+ebx],ecx
-	jnc	NEAR L$040pw_tail_nc6
-	mov	eax,1
-	jmp	NEAR L$020pw_end
+ mov ebp,DWORD [36+esp]
+ and ebp,7
+ jz NEAR L$020pw_end
+ ; dl>0 Tail Round 0
+ mov ecx,DWORD [esi]
+ sub ecx,eax
+ mov DWORD [ebx],ecx
+ jnc NEAR L$034pw_tail_nc0
+ dec ebp
+ jz NEAR L$020pw_end
+ ; dl>0 Tail Round 1
+ mov ecx,DWORD [4+esi]
+ sub ecx,eax
+ mov DWORD [4+ebx],ecx
+ jnc NEAR L$035pw_tail_nc1
+ dec ebp
+ jz NEAR L$020pw_end
+ ; dl>0 Tail Round 2
+ mov ecx,DWORD [8+esi]
+ sub ecx,eax
+ mov DWORD [8+ebx],ecx
+ jnc NEAR L$036pw_tail_nc2
+ dec ebp
+ jz NEAR L$020pw_end
+ ; dl>0 Tail Round 3
+ mov ecx,DWORD [12+esi]
+ sub ecx,eax
+ mov DWORD [12+ebx],ecx
+ jnc NEAR L$037pw_tail_nc3
+ dec ebp
+ jz NEAR L$020pw_end
+ ; dl>0 Tail Round 4
+ mov ecx,DWORD [16+esi]
+ sub ecx,eax
+ mov DWORD [16+ebx],ecx
+ jnc NEAR L$038pw_tail_nc4
+ dec ebp
+ jz NEAR L$020pw_end
+ ; dl>0 Tail Round 5
+ mov ecx,DWORD [20+esi]
+ sub ecx,eax
+ mov DWORD [20+ebx],ecx
+ jnc NEAR L$039pw_tail_nc5
+ dec ebp
+ jz NEAR L$020pw_end
+ ; dl>0 Tail Round 6
+ mov ecx,DWORD [24+esi]
+ sub ecx,eax
+ mov DWORD [24+ebx],ecx
+ jnc NEAR L$040pw_tail_nc6
+ mov eax,1
+ jmp NEAR L$020pw_end
 L$041pw_nc_loop:
-	mov	ecx,DWORD [esi]
-	mov	DWORD [ebx],ecx
+ mov ecx,DWORD [esi]
+ mov DWORD [ebx],ecx
 L$026pw_nc0:
-	mov	ecx,DWORD [4+esi]
-	mov	DWORD [4+ebx],ecx
+ mov ecx,DWORD [4+esi]
+ mov DWORD [4+ebx],ecx
 L$027pw_nc1:
-	mov	ecx,DWORD [8+esi]
-	mov	DWORD [8+ebx],ecx
+ mov ecx,DWORD [8+esi]
+ mov DWORD [8+ebx],ecx
 L$028pw_nc2:
-	mov	ecx,DWORD [12+esi]
-	mov	DWORD [12+ebx],ecx
+ mov ecx,DWORD [12+esi]
+ mov DWORD [12+ebx],ecx
 L$029pw_nc3:
-	mov	ecx,DWORD [16+esi]
-	mov	DWORD [16+ebx],ecx
+ mov ecx,DWORD [16+esi]
+ mov DWORD [16+ebx],ecx
 L$030pw_nc4:
-	mov	ecx,DWORD [20+esi]
-	mov	DWORD [20+ebx],ecx
+ mov ecx,DWORD [20+esi]
+ mov DWORD [20+ebx],ecx
 L$031pw_nc5:
-	mov	ecx,DWORD [24+esi]
-	mov	DWORD [24+ebx],ecx
+ mov ecx,DWORD [24+esi]
+ mov DWORD [24+ebx],ecx
 L$032pw_nc6:
-	mov	ecx,DWORD [28+esi]
-	mov	DWORD [28+ebx],ecx
+ mov ecx,DWORD [28+esi]
+ mov DWORD [28+ebx],ecx
 L$033pw_nc7:
-	; 
-	add	esi,32
-	add	ebx,32
-	sub	ebp,8
-	jnz	NEAR L$041pw_nc_loop
-	mov	ebp,DWORD [36+esp]
-	and	ebp,7
-	jz	NEAR L$042pw_nc_end
-	mov	ecx,DWORD [esi]
-	mov	DWORD [ebx],ecx
+ ;
+ add esi,32
+ add ebx,32
+ sub ebp,8
+ jnz NEAR L$041pw_nc_loop
+ mov ebp,DWORD [36+esp]
+ and ebp,7
+ jz NEAR L$042pw_nc_end
+ mov ecx,DWORD [esi]
+ mov DWORD [ebx],ecx
 L$034pw_tail_nc0:
-	dec	ebp
-	jz	NEAR L$042pw_nc_end
-	mov	ecx,DWORD [4+esi]
-	mov	DWORD [4+ebx],ecx
+ dec ebp
+ jz NEAR L$042pw_nc_end
+ mov ecx,DWORD [4+esi]
+ mov DWORD [4+ebx],ecx
 L$035pw_tail_nc1:
-	dec	ebp
-	jz	NEAR L$042pw_nc_end
-	mov	ecx,DWORD [8+esi]
-	mov	DWORD [8+ebx],ecx
+ dec ebp
+ jz NEAR L$042pw_nc_end
+ mov ecx,DWORD [8+esi]
+ mov DWORD [8+ebx],ecx
 L$036pw_tail_nc2:
-	dec	ebp
-	jz	NEAR L$042pw_nc_end
-	mov	ecx,DWORD [12+esi]
-	mov	DWORD [12+ebx],ecx
+ dec ebp
+ jz NEAR L$042pw_nc_end
+ mov ecx,DWORD [12+esi]
+ mov DWORD [12+ebx],ecx
 L$037pw_tail_nc3:
-	dec	ebp
-	jz	NEAR L$042pw_nc_end
-	mov	ecx,DWORD [16+esi]
-	mov	DWORD [16+ebx],ecx
+ dec ebp
+ jz NEAR L$042pw_nc_end
+ mov ecx,DWORD [16+esi]
+ mov DWORD [16+ebx],ecx
 L$038pw_tail_nc4:
-	dec	ebp
-	jz	NEAR L$042pw_nc_end
-	mov	ecx,DWORD [20+esi]
-	mov	DWORD [20+ebx],ecx
+ dec ebp
+ jz NEAR L$042pw_nc_end
+ mov ecx,DWORD [20+esi]
+ mov DWORD [20+ebx],ecx
 L$039pw_tail_nc5:
-	dec	ebp
-	jz	NEAR L$042pw_nc_end
-	mov	ecx,DWORD [24+esi]
-	mov	DWORD [24+ebx],ecx
+ dec ebp
+ jz NEAR L$042pw_nc_end
+ mov ecx,DWORD [24+esi]
+ mov DWORD [24+ebx],ecx
 L$040pw_tail_nc6:
 L$042pw_nc_end:
-	mov	eax,0
+ mov eax,0
 L$020pw_end:
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret

+ 1239 - 1240
libs/openssl/crypto/bn/asm/co_586.asm

@@ -1,1253 +1,1252 @@
-
 %ifidn __OUTPUT_FORMAT__,obj
-section	code	use32 class=code align=256
+section code use32 class=code align=256
 %elifidn __OUTPUT_FORMAT__,win32
 [email protected] equ 1
-section	.text	code align=256
+section .text code align=256
 %else
-section	.text	code
+section .text code
 %endif
-global	_bn_mul_comba8
-align	16
+global _bn_mul_comba8
+align 16
 _bn_mul_comba8:
 L$_bn_mul_comba8_begin:
-	push	esi
-	mov	esi,DWORD [12+esp]
-	push	edi
-	mov	edi,DWORD [20+esp]
-	push	ebp
-	push	ebx
-	xor	ebx,ebx
-	mov	eax,DWORD [esi]
-	xor	ecx,ecx
-	mov	edx,DWORD [edi]
-	; ################## Calculate word 0
-	xor	ebp,ebp
-	; mul a[0]*b[0]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ecx,edx
-	mov	edx,DWORD [edi]
-	adc	ebp,0
-	mov	DWORD [eax],ebx
-	mov	eax,DWORD [4+esi]
-	; saved r[0]
-	; ################## Calculate word 1
-	xor	ebx,ebx
-	; mul a[1]*b[0]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [esi]
-	adc	ebp,edx
-	mov	edx,DWORD [4+edi]
-	adc	ebx,0
-	; mul a[0]*b[1]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ebp,edx
-	mov	edx,DWORD [edi]
-	adc	ebx,0
-	mov	DWORD [4+eax],ecx
-	mov	eax,DWORD [8+esi]
-	; saved r[1]
-	; ################## Calculate word 2
-	xor	ecx,ecx
-	; mul a[2]*b[0]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [4+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [4+edi]
-	adc	ecx,0
-	; mul a[1]*b[1]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [esi]
-	adc	ebx,edx
-	mov	edx,DWORD [8+edi]
-	adc	ecx,0
-	; mul a[0]*b[2]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [20+esp]
-	adc	ebx,edx
-	mov	edx,DWORD [edi]
-	adc	ecx,0
-	mov	DWORD [8+eax],ebp
-	mov	eax,DWORD [12+esi]
-	; saved r[2]
-	; ################## Calculate word 3
-	xor	ebp,ebp
-	; mul a[3]*b[0]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [8+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [4+edi]
-	adc	ebp,0
-	; mul a[2]*b[1]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [4+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [8+edi]
-	adc	ebp,0
-	; mul a[1]*b[2]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [esi]
-	adc	ecx,edx
-	mov	edx,DWORD [12+edi]
-	adc	ebp,0
-	; mul a[0]*b[3]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ecx,edx
-	mov	edx,DWORD [edi]
-	adc	ebp,0
-	mov	DWORD [12+eax],ebx
-	mov	eax,DWORD [16+esi]
-	; saved r[3]
-	; ################## Calculate word 4
-	xor	ebx,ebx
-	; mul a[4]*b[0]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [12+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [4+edi]
-	adc	ebx,0
-	; mul a[3]*b[1]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [8+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [8+edi]
-	adc	ebx,0
-	; mul a[2]*b[2]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [4+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [12+edi]
-	adc	ebx,0
-	; mul a[1]*b[3]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [esi]
-	adc	ebp,edx
-	mov	edx,DWORD [16+edi]
-	adc	ebx,0
-	; mul a[0]*b[4]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ebp,edx
-	mov	edx,DWORD [edi]
-	adc	ebx,0
-	mov	DWORD [16+eax],ecx
-	mov	eax,DWORD [20+esi]
-	; saved r[4]
-	; ################## Calculate word 5
-	xor	ecx,ecx
-	; mul a[5]*b[0]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [16+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [4+edi]
-	adc	ecx,0
-	; mul a[4]*b[1]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [12+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [8+edi]
-	adc	ecx,0
-	; mul a[3]*b[2]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [8+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [12+edi]
-	adc	ecx,0
-	; mul a[2]*b[3]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [4+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [16+edi]
-	adc	ecx,0
-	; mul a[1]*b[4]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [esi]
-	adc	ebx,edx
-	mov	edx,DWORD [20+edi]
-	adc	ecx,0
-	; mul a[0]*b[5]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [20+esp]
-	adc	ebx,edx
-	mov	edx,DWORD [edi]
-	adc	ecx,0
-	mov	DWORD [20+eax],ebp
-	mov	eax,DWORD [24+esi]
-	; saved r[5]
-	; ################## Calculate word 6
-	xor	ebp,ebp
-	; mul a[6]*b[0]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [20+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [4+edi]
-	adc	ebp,0
-	; mul a[5]*b[1]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [16+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [8+edi]
-	adc	ebp,0
-	; mul a[4]*b[2]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [12+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [12+edi]
-	adc	ebp,0
-	; mul a[3]*b[3]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [8+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [16+edi]
-	adc	ebp,0
-	; mul a[2]*b[4]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [4+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [20+edi]
-	adc	ebp,0
-	; mul a[1]*b[5]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [esi]
-	adc	ecx,edx
-	mov	edx,DWORD [24+edi]
-	adc	ebp,0
-	; mul a[0]*b[6]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ecx,edx
-	mov	edx,DWORD [edi]
-	adc	ebp,0
-	mov	DWORD [24+eax],ebx
-	mov	eax,DWORD [28+esi]
-	; saved r[6]
-	; ################## Calculate word 7
-	xor	ebx,ebx
-	; mul a[7]*b[0]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [24+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [4+edi]
-	adc	ebx,0
-	; mul a[6]*b[1]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [20+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [8+edi]
-	adc	ebx,0
-	; mul a[5]*b[2]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [16+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [12+edi]
-	adc	ebx,0
-	; mul a[4]*b[3]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [12+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [16+edi]
-	adc	ebx,0
-	; mul a[3]*b[4]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [8+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [20+edi]
-	adc	ebx,0
-	; mul a[2]*b[5]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [4+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [24+edi]
-	adc	ebx,0
-	; mul a[1]*b[6]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [esi]
-	adc	ebp,edx
-	mov	edx,DWORD [28+edi]
-	adc	ebx,0
-	; mul a[0]*b[7]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ebp,edx
-	mov	edx,DWORD [4+edi]
-	adc	ebx,0
-	mov	DWORD [28+eax],ecx
-	mov	eax,DWORD [28+esi]
-	; saved r[7]
-	; ################## Calculate word 8
-	xor	ecx,ecx
-	; mul a[7]*b[1]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [24+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [8+edi]
-	adc	ecx,0
-	; mul a[6]*b[2]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [20+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [12+edi]
-	adc	ecx,0
-	; mul a[5]*b[3]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [16+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [16+edi]
-	adc	ecx,0
-	; mul a[4]*b[4]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [12+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [20+edi]
-	adc	ecx,0
-	; mul a[3]*b[5]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [8+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [24+edi]
-	adc	ecx,0
-	; mul a[2]*b[6]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [4+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [28+edi]
-	adc	ecx,0
-	; mul a[1]*b[7]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [20+esp]
-	adc	ebx,edx
-	mov	edx,DWORD [8+edi]
-	adc	ecx,0
-	mov	DWORD [32+eax],ebp
-	mov	eax,DWORD [28+esi]
-	; saved r[8]
-	; ################## Calculate word 9
-	xor	ebp,ebp
-	; mul a[7]*b[2]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [24+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [12+edi]
-	adc	ebp,0
-	; mul a[6]*b[3]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [20+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [16+edi]
-	adc	ebp,0
-	; mul a[5]*b[4]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [16+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [20+edi]
-	adc	ebp,0
-	; mul a[4]*b[5]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [12+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [24+edi]
-	adc	ebp,0
-	; mul a[3]*b[6]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [8+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [28+edi]
-	adc	ebp,0
-	; mul a[2]*b[7]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ecx,edx
-	mov	edx,DWORD [12+edi]
-	adc	ebp,0
-	mov	DWORD [36+eax],ebx
-	mov	eax,DWORD [28+esi]
-	; saved r[9]
-	; ################## Calculate word 10
-	xor	ebx,ebx
-	; mul a[7]*b[3]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [24+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [16+edi]
-	adc	ebx,0
-	; mul a[6]*b[4]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [20+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [20+edi]
-	adc	ebx,0
-	; mul a[5]*b[5]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [16+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [24+edi]
-	adc	ebx,0
-	; mul a[4]*b[6]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [12+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [28+edi]
-	adc	ebx,0
-	; mul a[3]*b[7]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ebp,edx
-	mov	edx,DWORD [16+edi]
-	adc	ebx,0
-	mov	DWORD [40+eax],ecx
-	mov	eax,DWORD [28+esi]
-	; saved r[10]
-	; ################## Calculate word 11
-	xor	ecx,ecx
-	; mul a[7]*b[4]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [24+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [20+edi]
-	adc	ecx,0
-	; mul a[6]*b[5]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [20+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [24+edi]
-	adc	ecx,0
-	; mul a[5]*b[6]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [16+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [28+edi]
-	adc	ecx,0
-	; mul a[4]*b[7]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [20+esp]
-	adc	ebx,edx
-	mov	edx,DWORD [20+edi]
-	adc	ecx,0
-	mov	DWORD [44+eax],ebp
-	mov	eax,DWORD [28+esi]
-	; saved r[11]
-	; ################## Calculate word 12
-	xor	ebp,ebp
-	; mul a[7]*b[5]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [24+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [24+edi]
-	adc	ebp,0
-	; mul a[6]*b[6]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [20+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [28+edi]
-	adc	ebp,0
-	; mul a[5]*b[7]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ecx,edx
-	mov	edx,DWORD [24+edi]
-	adc	ebp,0
-	mov	DWORD [48+eax],ebx
-	mov	eax,DWORD [28+esi]
-	; saved r[12]
-	; ################## Calculate word 13
-	xor	ebx,ebx
-	; mul a[7]*b[6]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [24+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [28+edi]
-	adc	ebx,0
-	; mul a[6]*b[7]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ebp,edx
-	mov	edx,DWORD [28+edi]
-	adc	ebx,0
-	mov	DWORD [52+eax],ecx
-	mov	eax,DWORD [28+esi]
-	; saved r[13]
-	; ################## Calculate word 14
-	xor	ecx,ecx
-	; mul a[7]*b[7]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [20+esp]
-	adc	ebx,edx
-	adc	ecx,0
-	mov	DWORD [56+eax],ebp
-	; saved r[14]
-	; save r[15]
-	mov	DWORD [60+eax],ebx
-	pop	ebx
-	pop	ebp
-	pop	edi
-	pop	esi
-	ret
-global	_bn_mul_comba4
-align	16
+ push esi
+ mov esi,DWORD [12+esp]
+ push edi
+ mov edi,DWORD [20+esp]
+ push ebp
+ push ebx
+ xor ebx,ebx
+ mov eax,DWORD [esi]
+ xor ecx,ecx
+ mov edx,DWORD [edi]
+ ; ################## Calculate word 0
+ xor ebp,ebp
+ ; mul a[0]*b[0]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [20+esp]
+ adc ecx,edx
+ mov edx,DWORD [edi]
+ adc ebp,0
+ mov DWORD [eax],ebx
+ mov eax,DWORD [4+esi]
+ ; saved r[0]
+ ; ################## Calculate word 1
+ xor ebx,ebx
+ ; mul a[1]*b[0]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [esi]
+ adc ebp,edx
+ mov edx,DWORD [4+edi]
+ adc ebx,0
+ ; mul a[0]*b[1]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [20+esp]
+ adc ebp,edx
+ mov edx,DWORD [edi]
+ adc ebx,0
+ mov DWORD [4+eax],ecx
+ mov eax,DWORD [8+esi]
+ ; saved r[1]
+ ; ################## Calculate word 2
+ xor ecx,ecx
+ ; mul a[2]*b[0]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [4+esi]
+ adc ebx,edx
+ mov edx,DWORD [4+edi]
+ adc ecx,0
+ ; mul a[1]*b[1]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [esi]
+ adc ebx,edx
+ mov edx,DWORD [8+edi]
+ adc ecx,0
+ ; mul a[0]*b[2]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [20+esp]
+ adc ebx,edx
+ mov edx,DWORD [edi]
+ adc ecx,0
+ mov DWORD [8+eax],ebp
+ mov eax,DWORD [12+esi]
+ ; saved r[2]
+ ; ################## Calculate word 3
+ xor ebp,ebp
+ ; mul a[3]*b[0]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [8+esi]
+ adc ecx,edx
+ mov edx,DWORD [4+edi]
+ adc ebp,0
+ ; mul a[2]*b[1]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [4+esi]
+ adc ecx,edx
+ mov edx,DWORD [8+edi]
+ adc ebp,0
+ ; mul a[1]*b[2]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [esi]
+ adc ecx,edx
+ mov edx,DWORD [12+edi]
+ adc ebp,0
+ ; mul a[0]*b[3]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [20+esp]
+ adc ecx,edx
+ mov edx,DWORD [edi]
+ adc ebp,0
+ mov DWORD [12+eax],ebx
+ mov eax,DWORD [16+esi]
+ ; saved r[3]
+ ; ################## Calculate word 4
+ xor ebx,ebx
+ ; mul a[4]*b[0]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [12+esi]
+ adc ebp,edx
+ mov edx,DWORD [4+edi]
+ adc ebx,0
+ ; mul a[3]*b[1]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [8+esi]
+ adc ebp,edx
+ mov edx,DWORD [8+edi]
+ adc ebx,0
+ ; mul a[2]*b[2]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [4+esi]
+ adc ebp,edx
+ mov edx,DWORD [12+edi]
+ adc ebx,0
+ ; mul a[1]*b[3]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [esi]
+ adc ebp,edx
+ mov edx,DWORD [16+edi]
+ adc ebx,0
+ ; mul a[0]*b[4]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [20+esp]
+ adc ebp,edx
+ mov edx,DWORD [edi]
+ adc ebx,0
+ mov DWORD [16+eax],ecx
+ mov eax,DWORD [20+esi]
+ ; saved r[4]
+ ; ################## Calculate word 5
+ xor ecx,ecx
+ ; mul a[5]*b[0]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [16+esi]
+ adc ebx,edx
+ mov edx,DWORD [4+edi]
+ adc ecx,0
+ ; mul a[4]*b[1]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [12+esi]
+ adc ebx,edx
+ mov edx,DWORD [8+edi]
+ adc ecx,0
+ ; mul a[3]*b[2]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [8+esi]
+ adc ebx,edx
+ mov edx,DWORD [12+edi]
+ adc ecx,0
+ ; mul a[2]*b[3]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [4+esi]
+ adc ebx,edx
+ mov edx,DWORD [16+edi]
+ adc ecx,0
+ ; mul a[1]*b[4]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [esi]
+ adc ebx,edx
+ mov edx,DWORD [20+edi]
+ adc ecx,0
+ ; mul a[0]*b[5]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [20+esp]
+ adc ebx,edx
+ mov edx,DWORD [edi]
+ adc ecx,0
+ mov DWORD [20+eax],ebp
+ mov eax,DWORD [24+esi]
+ ; saved r[5]
+ ; ################## Calculate word 6
+ xor ebp,ebp
+ ; mul a[6]*b[0]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [20+esi]
+ adc ecx,edx
+ mov edx,DWORD [4+edi]
+ adc ebp,0
+ ; mul a[5]*b[1]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [16+esi]
+ adc ecx,edx
+ mov edx,DWORD [8+edi]
+ adc ebp,0
+ ; mul a[4]*b[2]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [12+esi]
+ adc ecx,edx
+ mov edx,DWORD [12+edi]
+ adc ebp,0
+ ; mul a[3]*b[3]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [8+esi]
+ adc ecx,edx
+ mov edx,DWORD [16+edi]
+ adc ebp,0
+ ; mul a[2]*b[4]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [4+esi]
+ adc ecx,edx
+ mov edx,DWORD [20+edi]
+ adc ebp,0
+ ; mul a[1]*b[5]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [esi]
+ adc ecx,edx
+ mov edx,DWORD [24+edi]
+ adc ebp,0
+ ; mul a[0]*b[6]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [20+esp]
+ adc ecx,edx
+ mov edx,DWORD [edi]
+ adc ebp,0
+ mov DWORD [24+eax],ebx
+ mov eax,DWORD [28+esi]
+ ; saved r[6]
+ ; ################## Calculate word 7
+ xor ebx,ebx
+ ; mul a[7]*b[0]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [24+esi]
+ adc ebp,edx
+ mov edx,DWORD [4+edi]
+ adc ebx,0
+ ; mul a[6]*b[1]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [20+esi]
+ adc ebp,edx
+ mov edx,DWORD [8+edi]
+ adc ebx,0
+ ; mul a[5]*b[2]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [16+esi]
+ adc ebp,edx
+ mov edx,DWORD [12+edi]
+ adc ebx,0
+ ; mul a[4]*b[3]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [12+esi]
+ adc ebp,edx
+ mov edx,DWORD [16+edi]
+ adc ebx,0
+ ; mul a[3]*b[4]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [8+esi]
+ adc ebp,edx
+ mov edx,DWORD [20+edi]
+ adc ebx,0
+ ; mul a[2]*b[5]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [4+esi]
+ adc ebp,edx
+ mov edx,DWORD [24+edi]
+ adc ebx,0
+ ; mul a[1]*b[6]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [esi]
+ adc ebp,edx
+ mov edx,DWORD [28+edi]
+ adc ebx,0
+ ; mul a[0]*b[7]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [20+esp]
+ adc ebp,edx
+ mov edx,DWORD [4+edi]
+ adc ebx,0
+ mov DWORD [28+eax],ecx
+ mov eax,DWORD [28+esi]
+ ; saved r[7]
+ ; ################## Calculate word 8
+ xor ecx,ecx
+ ; mul a[7]*b[1]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [24+esi]
+ adc ebx,edx
+ mov edx,DWORD [8+edi]
+ adc ecx,0
+ ; mul a[6]*b[2]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [20+esi]
+ adc ebx,edx
+ mov edx,DWORD [12+edi]
+ adc ecx,0
+ ; mul a[5]*b[3]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [16+esi]
+ adc ebx,edx
+ mov edx,DWORD [16+edi]
+ adc ecx,0
+ ; mul a[4]*b[4]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [12+esi]
+ adc ebx,edx
+ mov edx,DWORD [20+edi]
+ adc ecx,0
+ ; mul a[3]*b[5]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [8+esi]
+ adc ebx,edx
+ mov edx,DWORD [24+edi]
+ adc ecx,0
+ ; mul a[2]*b[6]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [4+esi]
+ adc ebx,edx
+ mov edx,DWORD [28+edi]
+ adc ecx,0
+ ; mul a[1]*b[7]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [20+esp]
+ adc ebx,edx
+ mov edx,DWORD [8+edi]
+ adc ecx,0
+ mov DWORD [32+eax],ebp
+ mov eax,DWORD [28+esi]
+ ; saved r[8]
+ ; ################## Calculate word 9
+ xor ebp,ebp
+ ; mul a[7]*b[2]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [24+esi]
+ adc ecx,edx
+ mov edx,DWORD [12+edi]
+ adc ebp,0
+ ; mul a[6]*b[3]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [20+esi]
+ adc ecx,edx
+ mov edx,DWORD [16+edi]
+ adc ebp,0
+ ; mul a[5]*b[4]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [16+esi]
+ adc ecx,edx
+ mov edx,DWORD [20+edi]
+ adc ebp,0
+ ; mul a[4]*b[5]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [12+esi]
+ adc ecx,edx
+ mov edx,DWORD [24+edi]
+ adc ebp,0
+ ; mul a[3]*b[6]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [8+esi]
+ adc ecx,edx
+ mov edx,DWORD [28+edi]
+ adc ebp,0
+ ; mul a[2]*b[7]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [20+esp]
+ adc ecx,edx
+ mov edx,DWORD [12+edi]
+ adc ebp,0
+ mov DWORD [36+eax],ebx
+ mov eax,DWORD [28+esi]
+ ; saved r[9]
+ ; ################## Calculate word 10
+ xor ebx,ebx
+ ; mul a[7]*b[3]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [24+esi]
+ adc ebp,edx
+ mov edx,DWORD [16+edi]
+ adc ebx,0
+ ; mul a[6]*b[4]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [20+esi]
+ adc ebp,edx
+ mov edx,DWORD [20+edi]
+ adc ebx,0
+ ; mul a[5]*b[5]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [16+esi]
+ adc ebp,edx
+ mov edx,DWORD [24+edi]
+ adc ebx,0
+ ; mul a[4]*b[6]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [12+esi]
+ adc ebp,edx
+ mov edx,DWORD [28+edi]
+ adc ebx,0
+ ; mul a[3]*b[7]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [20+esp]
+ adc ebp,edx
+ mov edx,DWORD [16+edi]
+ adc ebx,0
+ mov DWORD [40+eax],ecx
+ mov eax,DWORD [28+esi]
+ ; saved r[10]
+ ; ################## Calculate word 11
+ xor ecx,ecx
+ ; mul a[7]*b[4]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [24+esi]
+ adc ebx,edx
+ mov edx,DWORD [20+edi]
+ adc ecx,0
+ ; mul a[6]*b[5]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [20+esi]
+ adc ebx,edx
+ mov edx,DWORD [24+edi]
+ adc ecx,0
+ ; mul a[5]*b[6]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [16+esi]
+ adc ebx,edx
+ mov edx,DWORD [28+edi]
+ adc ecx,0
+ ; mul a[4]*b[7]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [20+esp]
+ adc ebx,edx
+ mov edx,DWORD [20+edi]
+ adc ecx,0
+ mov DWORD [44+eax],ebp
+ mov eax,DWORD [28+esi]
+ ; saved r[11]
+ ; ################## Calculate word 12
+ xor ebp,ebp
+ ; mul a[7]*b[5]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [24+esi]
+ adc ecx,edx
+ mov edx,DWORD [24+edi]
+ adc ebp,0
+ ; mul a[6]*b[6]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [20+esi]
+ adc ecx,edx
+ mov edx,DWORD [28+edi]
+ adc ebp,0
+ ; mul a[5]*b[7]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [20+esp]
+ adc ecx,edx
+ mov edx,DWORD [24+edi]
+ adc ebp,0
+ mov DWORD [48+eax],ebx
+ mov eax,DWORD [28+esi]
+ ; saved r[12]
+ ; ################## Calculate word 13
+ xor ebx,ebx
+ ; mul a[7]*b[6]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [24+esi]
+ adc ebp,edx
+ mov edx,DWORD [28+edi]
+ adc ebx,0
+ ; mul a[6]*b[7]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [20+esp]
+ adc ebp,edx
+ mov edx,DWORD [28+edi]
+ adc ebx,0
+ mov DWORD [52+eax],ecx
+ mov eax,DWORD [28+esi]
+ ; saved r[13]
+ ; ################## Calculate word 14
+ xor ecx,ecx
+ ; mul a[7]*b[7]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [20+esp]
+ adc ebx,edx
+ adc ecx,0
+ mov DWORD [56+eax],ebp
+ ; saved r[14]
+ ; save r[15]
+ mov DWORD [60+eax],ebx
+ pop ebx
+ pop ebp
+ pop edi
+ pop esi
+ ret
+global _bn_mul_comba4
+align 16
 _bn_mul_comba4:
 L$_bn_mul_comba4_begin:
-	push	esi
-	mov	esi,DWORD [12+esp]
-	push	edi
-	mov	edi,DWORD [20+esp]
-	push	ebp
-	push	ebx
-	xor	ebx,ebx
-	mov	eax,DWORD [esi]
-	xor	ecx,ecx
-	mov	edx,DWORD [edi]
-	; ################## Calculate word 0
-	xor	ebp,ebp
-	; mul a[0]*b[0]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ecx,edx
-	mov	edx,DWORD [edi]
-	adc	ebp,0
-	mov	DWORD [eax],ebx
-	mov	eax,DWORD [4+esi]
-	; saved r[0]
-	; ################## Calculate word 1
-	xor	ebx,ebx
-	; mul a[1]*b[0]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [esi]
-	adc	ebp,edx
-	mov	edx,DWORD [4+edi]
-	adc	ebx,0
-	; mul a[0]*b[1]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ebp,edx
-	mov	edx,DWORD [edi]
-	adc	ebx,0
-	mov	DWORD [4+eax],ecx
-	mov	eax,DWORD [8+esi]
-	; saved r[1]
-	; ################## Calculate word 2
-	xor	ecx,ecx
-	; mul a[2]*b[0]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [4+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [4+edi]
-	adc	ecx,0
-	; mul a[1]*b[1]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [esi]
-	adc	ebx,edx
-	mov	edx,DWORD [8+edi]
-	adc	ecx,0
-	; mul a[0]*b[2]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [20+esp]
-	adc	ebx,edx
-	mov	edx,DWORD [edi]
-	adc	ecx,0
-	mov	DWORD [8+eax],ebp
-	mov	eax,DWORD [12+esi]
-	; saved r[2]
-	; ################## Calculate word 3
-	xor	ebp,ebp
-	; mul a[3]*b[0]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [8+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [4+edi]
-	adc	ebp,0
-	; mul a[2]*b[1]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [4+esi]
-	adc	ecx,edx
-	mov	edx,DWORD [8+edi]
-	adc	ebp,0
-	; mul a[1]*b[2]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [esi]
-	adc	ecx,edx
-	mov	edx,DWORD [12+edi]
-	adc	ebp,0
-	; mul a[0]*b[3]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ecx,edx
-	mov	edx,DWORD [4+edi]
-	adc	ebp,0
-	mov	DWORD [12+eax],ebx
-	mov	eax,DWORD [12+esi]
-	; saved r[3]
-	; ################## Calculate word 4
-	xor	ebx,ebx
-	; mul a[3]*b[1]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [8+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [8+edi]
-	adc	ebx,0
-	; mul a[2]*b[2]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [4+esi]
-	adc	ebp,edx
-	mov	edx,DWORD [12+edi]
-	adc	ebx,0
-	; mul a[1]*b[3]
-	mul	edx
-	add	ecx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ebp,edx
-	mov	edx,DWORD [8+edi]
-	adc	ebx,0
-	mov	DWORD [16+eax],ecx
-	mov	eax,DWORD [12+esi]
-	; saved r[4]
-	; ################## Calculate word 5
-	xor	ecx,ecx
-	; mul a[3]*b[2]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [8+esi]
-	adc	ebx,edx
-	mov	edx,DWORD [12+edi]
-	adc	ecx,0
-	; mul a[2]*b[3]
-	mul	edx
-	add	ebp,eax
-	mov	eax,DWORD [20+esp]
-	adc	ebx,edx
-	mov	edx,DWORD [12+edi]
-	adc	ecx,0
-	mov	DWORD [20+eax],ebp
-	mov	eax,DWORD [12+esi]
-	; saved r[5]
-	; ################## Calculate word 6
-	xor	ebp,ebp
-	; mul a[3]*b[3]
-	mul	edx
-	add	ebx,eax
-	mov	eax,DWORD [20+esp]
-	adc	ecx,edx
-	adc	ebp,0
-	mov	DWORD [24+eax],ebx
-	; saved r[6]
-	; save r[7]
-	mov	DWORD [28+eax],ecx
-	pop	ebx
-	pop	ebp
-	pop	edi
-	pop	esi
-	ret
-global	_bn_sqr_comba8
-align	16
+ push esi
+ mov esi,DWORD [12+esp]
+ push edi
+ mov edi,DWORD [20+esp]
+ push ebp
+ push ebx
+ xor ebx,ebx
+ mov eax,DWORD [esi]
+ xor ecx,ecx
+ mov edx,DWORD [edi]
+ ; ################## Calculate word 0
+ xor ebp,ebp
+ ; mul a[0]*b[0]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [20+esp]
+ adc ecx,edx
+ mov edx,DWORD [edi]
+ adc ebp,0
+ mov DWORD [eax],ebx
+ mov eax,DWORD [4+esi]
+ ; saved r[0]
+ ; ################## Calculate word 1
+ xor ebx,ebx
+ ; mul a[1]*b[0]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [esi]
+ adc ebp,edx
+ mov edx,DWORD [4+edi]
+ adc ebx,0
+ ; mul a[0]*b[1]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [20+esp]
+ adc ebp,edx
+ mov edx,DWORD [edi]
+ adc ebx,0
+ mov DWORD [4+eax],ecx
+ mov eax,DWORD [8+esi]
+ ; saved r[1]
+ ; ################## Calculate word 2
+ xor ecx,ecx
+ ; mul a[2]*b[0]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [4+esi]
+ adc ebx,edx
+ mov edx,DWORD [4+edi]
+ adc ecx,0
+ ; mul a[1]*b[1]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [esi]
+ adc ebx,edx
+ mov edx,DWORD [8+edi]
+ adc ecx,0
+ ; mul a[0]*b[2]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [20+esp]
+ adc ebx,edx
+ mov edx,DWORD [edi]
+ adc ecx,0
+ mov DWORD [8+eax],ebp
+ mov eax,DWORD [12+esi]
+ ; saved r[2]
+ ; ################## Calculate word 3
+ xor ebp,ebp
+ ; mul a[3]*b[0]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [8+esi]
+ adc ecx,edx
+ mov edx,DWORD [4+edi]
+ adc ebp,0
+ ; mul a[2]*b[1]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [4+esi]
+ adc ecx,edx
+ mov edx,DWORD [8+edi]
+ adc ebp,0
+ ; mul a[1]*b[2]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [esi]
+ adc ecx,edx
+ mov edx,DWORD [12+edi]
+ adc ebp,0
+ ; mul a[0]*b[3]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [20+esp]
+ adc ecx,edx
+ mov edx,DWORD [4+edi]
+ adc ebp,0
+ mov DWORD [12+eax],ebx
+ mov eax,DWORD [12+esi]
+ ; saved r[3]
+ ; ################## Calculate word 4
+ xor ebx,ebx
+ ; mul a[3]*b[1]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [8+esi]
+ adc ebp,edx
+ mov edx,DWORD [8+edi]
+ adc ebx,0
+ ; mul a[2]*b[2]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [4+esi]
+ adc ebp,edx
+ mov edx,DWORD [12+edi]
+ adc ebx,0
+ ; mul a[1]*b[3]
+ mul edx
+ add ecx,eax
+ mov eax,DWORD [20+esp]
+ adc ebp,edx
+ mov edx,DWORD [8+edi]
+ adc ebx,0
+ mov DWORD [16+eax],ecx
+ mov eax,DWORD [12+esi]
+ ; saved r[4]
+ ; ################## Calculate word 5
+ xor ecx,ecx
+ ; mul a[3]*b[2]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [8+esi]
+ adc ebx,edx
+ mov edx,DWORD [12+edi]
+ adc ecx,0
+ ; mul a[2]*b[3]
+ mul edx
+ add ebp,eax
+ mov eax,DWORD [20+esp]
+ adc ebx,edx
+ mov edx,DWORD [12+edi]
+ adc ecx,0
+ mov DWORD [20+eax],ebp
+ mov eax,DWORD [12+esi]
+ ; saved r[5]
+ ; ################## Calculate word 6
+ xor ebp,ebp
+ ; mul a[3]*b[3]
+ mul edx
+ add ebx,eax
+ mov eax,DWORD [20+esp]
+ adc ecx,edx
+ adc ebp,0
+ mov DWORD [24+eax],ebx
+ ; saved r[6]
+ ; save r[7]
+ mov DWORD [28+eax],ecx
+ pop ebx
+ pop ebp
+ pop edi
+ pop esi
+ ret
+global _bn_sqr_comba8
+align 16
 _bn_sqr_comba8:
 L$_bn_sqr_comba8_begin:
-	push	esi
-	push	edi
-	push	ebp
-	push	ebx
-	mov	edi,DWORD [20+esp]
-	mov	esi,DWORD [24+esp]
-	xor	ebx,ebx
-	xor	ecx,ecx
-	mov	eax,DWORD [esi]
-	; ############### Calculate word 0
-	xor	ebp,ebp
-	; sqr a[0]*a[0]
-	mul	eax
-	add	ebx,eax
-	adc	ecx,edx
-	mov	edx,DWORD [esi]
-	adc	ebp,0
-	mov	DWORD [edi],ebx
-	mov	eax,DWORD [4+esi]
-	; saved r[0]
-	; ############### Calculate word 1
-	xor	ebx,ebx
-	; sqr a[1]*a[0]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebx,0
-	add	ecx,eax
-	adc	ebp,edx
-	mov	eax,DWORD [8+esi]
-	adc	ebx,0
-	mov	DWORD [4+edi],ecx
-	mov	edx,DWORD [esi]
-	; saved r[1]
-	; ############### Calculate word 2
-	xor	ecx,ecx
-	; sqr a[2]*a[0]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ecx,0
-	add	ebp,eax
-	adc	ebx,edx
-	mov	eax,DWORD [4+esi]
-	adc	ecx,0
-	; sqr a[1]*a[1]
-	mul	eax
-	add	ebp,eax
-	adc	ebx,edx
-	mov	edx,DWORD [esi]
-	adc	ecx,0
-	mov	DWORD [8+edi],ebp
-	mov	eax,DWORD [12+esi]
-	; saved r[2]
-	; ############### Calculate word 3
-	xor	ebp,ebp
-	; sqr a[3]*a[0]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebp,0
-	add	ebx,eax
-	adc	ecx,edx
-	mov	eax,DWORD [8+esi]
-	adc	ebp,0
-	mov	edx,DWORD [4+esi]
-	; sqr a[2]*a[1]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebp,0
-	add	ebx,eax
-	adc	ecx,edx
-	mov	eax,DWORD [16+esi]
-	adc	ebp,0
-	mov	DWORD [12+edi],ebx
-	mov	edx,DWORD [esi]
-	; saved r[3]
-	; ############### Calculate word 4
-	xor	ebx,ebx
-	; sqr a[4]*a[0]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebx,0
-	add	ecx,eax
-	adc	ebp,edx
-	mov	eax,DWORD [12+esi]
-	adc	ebx,0
-	mov	edx,DWORD [4+esi]
-	; sqr a[3]*a[1]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebx,0
-	add	ecx,eax
-	adc	ebp,edx
-	mov	eax,DWORD [8+esi]
-	adc	ebx,0
-	; sqr a[2]*a[2]
-	mul	eax
-	add	ecx,eax
-	adc	ebp,edx
-	mov	edx,DWORD [esi]
-	adc	ebx,0
-	mov	DWORD [16+edi],ecx
-	mov	eax,DWORD [20+esi]
-	; saved r[4]
-	; ############### Calculate word 5
-	xor	ecx,ecx
-	; sqr a[5]*a[0]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ecx,0
-	add	ebp,eax
-	adc	ebx,edx
-	mov	eax,DWORD [16+esi]
-	adc	ecx,0
-	mov	edx,DWORD [4+esi]
-	; sqr a[4]*a[1]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ecx,0
-	add	ebp,eax
-	adc	ebx,edx
-	mov	eax,DWORD [12+esi]
-	adc	ecx,0
-	mov	edx,DWORD [8+esi]
-	; sqr a[3]*a[2]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ecx,0
-	add	ebp,eax
-	adc	ebx,edx
-	mov	eax,DWORD [24+esi]
-	adc	ecx,0
-	mov	DWORD [20+edi],ebp
-	mov	edx,DWORD [esi]
-	; saved r[5]
-	; ############### Calculate word 6
-	xor	ebp,ebp
-	; sqr a[6]*a[0]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebp,0
-	add	ebx,eax
-	adc	ecx,edx
-	mov	eax,DWORD [20+esi]
-	adc	ebp,0
-	mov	edx,DWORD [4+esi]
-	; sqr a[5]*a[1]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebp,0
-	add	ebx,eax
-	adc	ecx,edx
-	mov	eax,DWORD [16+esi]
-	adc	ebp,0
-	mov	edx,DWORD [8+esi]
-	; sqr a[4]*a[2]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebp,0
-	add	ebx,eax
-	adc	ecx,edx
-	mov	eax,DWORD [12+esi]
-	adc	ebp,0
-	; sqr a[3]*a[3]
-	mul	eax
-	add	ebx,eax
-	adc	ecx,edx
-	mov	edx,DWORD [esi]
-	adc	ebp,0
-	mov	DWORD [24+edi],ebx
-	mov	eax,DWORD [28+esi]
-	; saved r[6]
-	; ############### Calculate word 7
-	xor	ebx,ebx
-	; sqr a[7]*a[0]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebx,0
-	add	ecx,eax
-	adc	ebp,edx
-	mov	eax,DWORD [24+esi]
-	adc	ebx,0
-	mov	edx,DWORD [4+esi]
-	; sqr a[6]*a[1]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebx,0
-	add	ecx,eax
-	adc	ebp,edx
-	mov	eax,DWORD [20+esi]
-	adc	ebx,0
-	mov	edx,DWORD [8+esi]
-	; sqr a[5]*a[2]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebx,0
-	add	ecx,eax
-	adc	ebp,edx
-	mov	eax,DWORD [16+esi]
-	adc	ebx,0
-	mov	edx,DWORD [12+esi]
-	; sqr a[4]*a[3]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebx,0
-	add	ecx,eax
-	adc	ebp,edx
-	mov	eax,DWORD [28+esi]
-	adc	ebx,0
-	mov	DWORD [28+edi],ecx
-	mov	edx,DWORD [4+esi]
-	; saved r[7]
-	; ############### Calculate word 8
-	xor	ecx,ecx
-	; sqr a[7]*a[1]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ecx,0
-	add	ebp,eax
-	adc	ebx,edx
-	mov	eax,DWORD [24+esi]
-	adc	ecx,0
-	mov	edx,DWORD [8+esi]
-	; sqr a[6]*a[2]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ecx,0
-	add	ebp,eax
-	adc	ebx,edx
-	mov	eax,DWORD [20+esi]
-	adc	ecx,0
-	mov	edx,DWORD [12+esi]
-	; sqr a[5]*a[3]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ecx,0
-	add	ebp,eax
-	adc	ebx,edx
-	mov	eax,DWORD [16+esi]
-	adc	ecx,0
-	; sqr a[4]*a[4]
-	mul	eax
-	add	ebp,eax
-	adc	ebx,edx
-	mov	edx,DWORD [8+esi]
-	adc	ecx,0
-	mov	DWORD [32+edi],ebp
-	mov	eax,DWORD [28+esi]
-	; saved r[8]
-	; ############### Calculate word 9
-	xor	ebp,ebp
-	; sqr a[7]*a[2]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebp,0
-	add	ebx,eax
-	adc	ecx,edx
-	mov	eax,DWORD [24+esi]
-	adc	ebp,0
-	mov	edx,DWORD [12+esi]
-	; sqr a[6]*a[3]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebp,0
-	add	ebx,eax
-	adc	ecx,edx
-	mov	eax,DWORD [20+esi]
-	adc	ebp,0
-	mov	edx,DWORD [16+esi]
-	; sqr a[5]*a[4]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebp,0
-	add	ebx,eax
-	adc	ecx,edx
-	mov	eax,DWORD [28+esi]
-	adc	ebp,0
-	mov	DWORD [36+edi],ebx
-	mov	edx,DWORD [12+esi]
-	; saved r[9]
-	; ############### Calculate word 10
-	xor	ebx,ebx
-	; sqr a[7]*a[3]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebx,0
-	add	ecx,eax
-	adc	ebp,edx
-	mov	eax,DWORD [24+esi]
-	adc	ebx,0
-	mov	edx,DWORD [16+esi]
-	; sqr a[6]*a[4]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebx,0
-	add	ecx,eax
-	adc	ebp,edx
-	mov	eax,DWORD [20+esi]
-	adc	ebx,0
-	; sqr a[5]*a[5]
-	mul	eax
-	add	ecx,eax
-	adc	ebp,edx
-	mov	edx,DWORD [16+esi]
-	adc	ebx,0
-	mov	DWORD [40+edi],ecx
-	mov	eax,DWORD [28+esi]
-	; saved r[10]
-	; ############### Calculate word 11
-	xor	ecx,ecx
-	; sqr a[7]*a[4]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ecx,0
-	add	ebp,eax
-	adc	ebx,edx
-	mov	eax,DWORD [24+esi]
-	adc	ecx,0
-	mov	edx,DWORD [20+esi]
-	; sqr a[6]*a[5]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ecx,0
-	add	ebp,eax
-	adc	ebx,edx
-	mov	eax,DWORD [28+esi]
-	adc	ecx,0
-	mov	DWORD [44+edi],ebp
-	mov	edx,DWORD [20+esi]
-	; saved r[11]
-	; ############### Calculate word 12
-	xor	ebp,ebp
-	; sqr a[7]*a[5]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebp,0
-	add	ebx,eax
-	adc	ecx,edx
-	mov	eax,DWORD [24+esi]
-	adc	ebp,0
-	; sqr a[6]*a[6]
-	mul	eax
-	add	ebx,eax
-	adc	ecx,edx
-	mov	edx,DWORD [24+esi]
-	adc	ebp,0
-	mov	DWORD [48+edi],ebx
-	mov	eax,DWORD [28+esi]
-	; saved r[12]
-	; ############### Calculate word 13
-	xor	ebx,ebx
-	; sqr a[7]*a[6]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebx,0
-	add	ecx,eax
-	adc	ebp,edx
-	mov	eax,DWORD [28+esi]
-	adc	ebx,0
-	mov	DWORD [52+edi],ecx
-	; saved r[13]
-	; ############### Calculate word 14
-	xor	ecx,ecx
-	; sqr a[7]*a[7]
-	mul	eax
-	add	ebp,eax
-	adc	ebx,edx
-	adc	ecx,0
-	mov	DWORD [56+edi],ebp
-	; saved r[14]
-	mov	DWORD [60+edi],ebx
-	pop	ebx
-	pop	ebp
-	pop	edi
-	pop	esi
-	ret
-global	_bn_sqr_comba4
-align	16
+ push esi
+ push edi
+ push ebp
+ push ebx
+ mov edi,DWORD [20+esp]
+ mov esi,DWORD [24+esp]
+ xor ebx,ebx
+ xor ecx,ecx
+ mov eax,DWORD [esi]
+ ; ############### Calculate word 0
+ xor ebp,ebp
+ ; sqr a[0]*a[0]
+ mul eax
+ add ebx,eax
+ adc ecx,edx
+ mov edx,DWORD [esi]
+ adc ebp,0
+ mov DWORD [edi],ebx
+ mov eax,DWORD [4+esi]
+ ; saved r[0]
+ ; ############### Calculate word 1
+ xor ebx,ebx
+ ; sqr a[1]*a[0]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebx,0
+ add ecx,eax
+ adc ebp,edx
+ mov eax,DWORD [8+esi]
+ adc ebx,0
+ mov DWORD [4+edi],ecx
+ mov edx,DWORD [esi]
+ ; saved r[1]
+ ; ############### Calculate word 2
+ xor ecx,ecx
+ ; sqr a[2]*a[0]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ecx,0
+ add ebp,eax
+ adc ebx,edx
+ mov eax,DWORD [4+esi]
+ adc ecx,0
+ ; sqr a[1]*a[1]
+ mul eax
+ add ebp,eax
+ adc ebx,edx
+ mov edx,DWORD [esi]
+ adc ecx,0
+ mov DWORD [8+edi],ebp
+ mov eax,DWORD [12+esi]
+ ; saved r[2]
+ ; ############### Calculate word 3
+ xor ebp,ebp
+ ; sqr a[3]*a[0]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebp,0
+ add ebx,eax
+ adc ecx,edx
+ mov eax,DWORD [8+esi]
+ adc ebp,0
+ mov edx,DWORD [4+esi]
+ ; sqr a[2]*a[1]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebp,0
+ add ebx,eax
+ adc ecx,edx
+ mov eax,DWORD [16+esi]
+ adc ebp,0
+ mov DWORD [12+edi],ebx
+ mov edx,DWORD [esi]
+ ; saved r[3]
+ ; ############### Calculate word 4
+ xor ebx,ebx
+ ; sqr a[4]*a[0]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebx,0
+ add ecx,eax
+ adc ebp,edx
+ mov eax,DWORD [12+esi]
+ adc ebx,0
+ mov edx,DWORD [4+esi]
+ ; sqr a[3]*a[1]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebx,0
+ add ecx,eax
+ adc ebp,edx
+ mov eax,DWORD [8+esi]
+ adc ebx,0
+ ; sqr a[2]*a[2]
+ mul eax
+ add ecx,eax
+ adc ebp,edx
+ mov edx,DWORD [esi]
+ adc ebx,0
+ mov DWORD [16+edi],ecx
+ mov eax,DWORD [20+esi]
+ ; saved r[4]
+ ; ############### Calculate word 5
+ xor ecx,ecx
+ ; sqr a[5]*a[0]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ecx,0
+ add ebp,eax
+ adc ebx,edx
+ mov eax,DWORD [16+esi]
+ adc ecx,0
+ mov edx,DWORD [4+esi]
+ ; sqr a[4]*a[1]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ecx,0
+ add ebp,eax
+ adc ebx,edx
+ mov eax,DWORD [12+esi]
+ adc ecx,0
+ mov edx,DWORD [8+esi]
+ ; sqr a[3]*a[2]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ecx,0
+ add ebp,eax
+ adc ebx,edx
+ mov eax,DWORD [24+esi]
+ adc ecx,0
+ mov DWORD [20+edi],ebp
+ mov edx,DWORD [esi]
+ ; saved r[5]
+ ; ############### Calculate word 6
+ xor ebp,ebp
+ ; sqr a[6]*a[0]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebp,0
+ add ebx,eax
+ adc ecx,edx
+ mov eax,DWORD [20+esi]
+ adc ebp,0
+ mov edx,DWORD [4+esi]
+ ; sqr a[5]*a[1]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebp,0
+ add ebx,eax
+ adc ecx,edx
+ mov eax,DWORD [16+esi]
+ adc ebp,0
+ mov edx,DWORD [8+esi]
+ ; sqr a[4]*a[2]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebp,0
+ add ebx,eax
+ adc ecx,edx
+ mov eax,DWORD [12+esi]
+ adc ebp,0
+ ; sqr a[3]*a[3]
+ mul eax
+ add ebx,eax
+ adc ecx,edx
+ mov edx,DWORD [esi]
+ adc ebp,0
+ mov DWORD [24+edi],ebx
+ mov eax,DWORD [28+esi]
+ ; saved r[6]
+ ; ############### Calculate word 7
+ xor ebx,ebx
+ ; sqr a[7]*a[0]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebx,0
+ add ecx,eax
+ adc ebp,edx
+ mov eax,DWORD [24+esi]
+ adc ebx,0
+ mov edx,DWORD [4+esi]
+ ; sqr a[6]*a[1]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebx,0
+ add ecx,eax
+ adc ebp,edx
+ mov eax,DWORD [20+esi]
+ adc ebx,0
+ mov edx,DWORD [8+esi]
+ ; sqr a[5]*a[2]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebx,0
+ add ecx,eax
+ adc ebp,edx
+ mov eax,DWORD [16+esi]
+ adc ebx,0
+ mov edx,DWORD [12+esi]
+ ; sqr a[4]*a[3]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebx,0
+ add ecx,eax
+ adc ebp,edx
+ mov eax,DWORD [28+esi]
+ adc ebx,0
+ mov DWORD [28+edi],ecx
+ mov edx,DWORD [4+esi]
+ ; saved r[7]
+ ; ############### Calculate word 8
+ xor ecx,ecx
+ ; sqr a[7]*a[1]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ecx,0
+ add ebp,eax
+ adc ebx,edx
+ mov eax,DWORD [24+esi]
+ adc ecx,0
+ mov edx,DWORD [8+esi]
+ ; sqr a[6]*a[2]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ecx,0
+ add ebp,eax
+ adc ebx,edx
+ mov eax,DWORD [20+esi]
+ adc ecx,0
+ mov edx,DWORD [12+esi]
+ ; sqr a[5]*a[3]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ecx,0
+ add ebp,eax
+ adc ebx,edx
+ mov eax,DWORD [16+esi]
+ adc ecx,0
+ ; sqr a[4]*a[4]
+ mul eax
+ add ebp,eax
+ adc ebx,edx
+ mov edx,DWORD [8+esi]
+ adc ecx,0
+ mov DWORD [32+edi],ebp
+ mov eax,DWORD [28+esi]
+ ; saved r[8]
+ ; ############### Calculate word 9
+ xor ebp,ebp
+ ; sqr a[7]*a[2]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebp,0
+ add ebx,eax
+ adc ecx,edx
+ mov eax,DWORD [24+esi]
+ adc ebp,0
+ mov edx,DWORD [12+esi]
+ ; sqr a[6]*a[3]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebp,0
+ add ebx,eax
+ adc ecx,edx
+ mov eax,DWORD [20+esi]
+ adc ebp,0
+ mov edx,DWORD [16+esi]
+ ; sqr a[5]*a[4]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebp,0
+ add ebx,eax
+ adc ecx,edx
+ mov eax,DWORD [28+esi]
+ adc ebp,0
+ mov DWORD [36+edi],ebx
+ mov edx,DWORD [12+esi]
+ ; saved r[9]
+ ; ############### Calculate word 10
+ xor ebx,ebx
+ ; sqr a[7]*a[3]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebx,0
+ add ecx,eax
+ adc ebp,edx
+ mov eax,DWORD [24+esi]
+ adc ebx,0
+ mov edx,DWORD [16+esi]
+ ; sqr a[6]*a[4]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebx,0
+ add ecx,eax
+ adc ebp,edx
+ mov eax,DWORD [20+esi]
+ adc ebx,0
+ ; sqr a[5]*a[5]
+ mul eax
+ add ecx,eax
+ adc ebp,edx
+ mov edx,DWORD [16+esi]
+ adc ebx,0
+ mov DWORD [40+edi],ecx
+ mov eax,DWORD [28+esi]
+ ; saved r[10]
+ ; ############### Calculate word 11
+ xor ecx,ecx
+ ; sqr a[7]*a[4]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ecx,0
+ add ebp,eax
+ adc ebx,edx
+ mov eax,DWORD [24+esi]
+ adc ecx,0
+ mov edx,DWORD [20+esi]
+ ; sqr a[6]*a[5]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ecx,0
+ add ebp,eax
+ adc ebx,edx
+ mov eax,DWORD [28+esi]
+ adc ecx,0
+ mov DWORD [44+edi],ebp
+ mov edx,DWORD [20+esi]
+ ; saved r[11]
+ ; ############### Calculate word 12
+ xor ebp,ebp
+ ; sqr a[7]*a[5]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebp,0
+ add ebx,eax
+ adc ecx,edx
+ mov eax,DWORD [24+esi]
+ adc ebp,0
+ ; sqr a[6]*a[6]
+ mul eax
+ add ebx,eax
+ adc ecx,edx
+ mov edx,DWORD [24+esi]
+ adc ebp,0
+ mov DWORD [48+edi],ebx
+ mov eax,DWORD [28+esi]
+ ; saved r[12]
+ ; ############### Calculate word 13
+ xor ebx,ebx
+ ; sqr a[7]*a[6]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebx,0
+ add ecx,eax
+ adc ebp,edx
+ mov eax,DWORD [28+esi]
+ adc ebx,0
+ mov DWORD [52+edi],ecx
+ ; saved r[13]
+ ; ############### Calculate word 14
+ xor ecx,ecx
+ ; sqr a[7]*a[7]
+ mul eax
+ add ebp,eax
+ adc ebx,edx
+ adc ecx,0
+ mov DWORD [56+edi],ebp
+ ; saved r[14]
+ mov DWORD [60+edi],ebx
+ pop ebx
+ pop ebp
+ pop edi
+ pop esi
+ ret
+global _bn_sqr_comba4
+align 16
 _bn_sqr_comba4:
 L$_bn_sqr_comba4_begin:
-	push	esi
-	push	edi
-	push	ebp
-	push	ebx
-	mov	edi,DWORD [20+esp]
-	mov	esi,DWORD [24+esp]
-	xor	ebx,ebx
-	xor	ecx,ecx
-	mov	eax,DWORD [esi]
-	; ############### Calculate word 0
-	xor	ebp,ebp
-	; sqr a[0]*a[0]
-	mul	eax
-	add	ebx,eax
-	adc	ecx,edx
-	mov	edx,DWORD [esi]
-	adc	ebp,0
-	mov	DWORD [edi],ebx
-	mov	eax,DWORD [4+esi]
-	; saved r[0]
-	; ############### Calculate word 1
-	xor	ebx,ebx
-	; sqr a[1]*a[0]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebx,0
-	add	ecx,eax
-	adc	ebp,edx
-	mov	eax,DWORD [8+esi]
-	adc	ebx,0
-	mov	DWORD [4+edi],ecx
-	mov	edx,DWORD [esi]
-	; saved r[1]
-	; ############### Calculate word 2
-	xor	ecx,ecx
-	; sqr a[2]*a[0]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ecx,0
-	add	ebp,eax
-	adc	ebx,edx
-	mov	eax,DWORD [4+esi]
-	adc	ecx,0
-	; sqr a[1]*a[1]
-	mul	eax
-	add	ebp,eax
-	adc	ebx,edx
-	mov	edx,DWORD [esi]
-	adc	ecx,0
-	mov	DWORD [8+edi],ebp
-	mov	eax,DWORD [12+esi]
-	; saved r[2]
-	; ############### Calculate word 3
-	xor	ebp,ebp
-	; sqr a[3]*a[0]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebp,0
-	add	ebx,eax
-	adc	ecx,edx
-	mov	eax,DWORD [8+esi]
-	adc	ebp,0
-	mov	edx,DWORD [4+esi]
-	; sqr a[2]*a[1]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebp,0
-	add	ebx,eax
-	adc	ecx,edx
-	mov	eax,DWORD [12+esi]
-	adc	ebp,0
-	mov	DWORD [12+edi],ebx
-	mov	edx,DWORD [4+esi]
-	; saved r[3]
-	; ############### Calculate word 4
-	xor	ebx,ebx
-	; sqr a[3]*a[1]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ebx,0
-	add	ecx,eax
-	adc	ebp,edx
-	mov	eax,DWORD [8+esi]
-	adc	ebx,0
-	; sqr a[2]*a[2]
-	mul	eax
-	add	ecx,eax
-	adc	ebp,edx
-	mov	edx,DWORD [8+esi]
-	adc	ebx,0
-	mov	DWORD [16+edi],ecx
-	mov	eax,DWORD [12+esi]
-	; saved r[4]
-	; ############### Calculate word 5
-	xor	ecx,ecx
-	; sqr a[3]*a[2]
-	mul	edx
-	add	eax,eax
-	adc	edx,edx
-	adc	ecx,0
-	add	ebp,eax
-	adc	ebx,edx
-	mov	eax,DWORD [12+esi]
-	adc	ecx,0
-	mov	DWORD [20+edi],ebp
-	; saved r[5]
-	; ############### Calculate word 6
-	xor	ebp,ebp
-	; sqr a[3]*a[3]
-	mul	eax
-	add	ebx,eax
-	adc	ecx,edx
-	adc	ebp,0
-	mov	DWORD [24+edi],ebx
-	; saved r[6]
-	mov	DWORD [28+edi],ecx
-	pop	ebx
-	pop	ebp
-	pop	edi
-	pop	esi
-	ret
+ push esi
+ push edi
+ push ebp
+ push ebx
+ mov edi,DWORD [20+esp]
+ mov esi,DWORD [24+esp]
+ xor ebx,ebx
+ xor ecx,ecx
+ mov eax,DWORD [esi]
+ ; ############### Calculate word 0
+ xor ebp,ebp
+ ; sqr a[0]*a[0]
+ mul eax
+ add ebx,eax
+ adc ecx,edx
+ mov edx,DWORD [esi]
+ adc ebp,0
+ mov DWORD [edi],ebx
+ mov eax,DWORD [4+esi]
+ ; saved r[0]
+ ; ############### Calculate word 1
+ xor ebx,ebx
+ ; sqr a[1]*a[0]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebx,0
+ add ecx,eax
+ adc ebp,edx
+ mov eax,DWORD [8+esi]
+ adc ebx,0
+ mov DWORD [4+edi],ecx
+ mov edx,DWORD [esi]
+ ; saved r[1]
+ ; ############### Calculate word 2
+ xor ecx,ecx
+ ; sqr a[2]*a[0]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ecx,0
+ add ebp,eax
+ adc ebx,edx
+ mov eax,DWORD [4+esi]
+ adc ecx,0
+ ; sqr a[1]*a[1]
+ mul eax
+ add ebp,eax
+ adc ebx,edx
+ mov edx,DWORD [esi]
+ adc ecx,0
+ mov DWORD [8+edi],ebp
+ mov eax,DWORD [12+esi]
+ ; saved r[2]
+ ; ############### Calculate word 3
+ xor ebp,ebp
+ ; sqr a[3]*a[0]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebp,0
+ add ebx,eax
+ adc ecx,edx
+ mov eax,DWORD [8+esi]
+ adc ebp,0
+ mov edx,DWORD [4+esi]
+ ; sqr a[2]*a[1]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebp,0
+ add ebx,eax
+ adc ecx,edx
+ mov eax,DWORD [12+esi]
+ adc ebp,0
+ mov DWORD [12+edi],ebx
+ mov edx,DWORD [4+esi]
+ ; saved r[3]
+ ; ############### Calculate word 4
+ xor ebx,ebx
+ ; sqr a[3]*a[1]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ebx,0
+ add ecx,eax
+ adc ebp,edx
+ mov eax,DWORD [8+esi]
+ adc ebx,0
+ ; sqr a[2]*a[2]
+ mul eax
+ add ecx,eax
+ adc ebp,edx
+ mov edx,DWORD [8+esi]
+ adc ebx,0
+ mov DWORD [16+edi],ecx
+ mov eax,DWORD [12+esi]
+ ; saved r[4]
+ ; ############### Calculate word 5
+ xor ecx,ecx
+ ; sqr a[3]*a[2]
+ mul edx
+ add eax,eax
+ adc edx,edx
+ adc ecx,0
+ add ebp,eax
+ adc ebx,edx
+ mov eax,DWORD [12+esi]
+ adc ecx,0
+ mov DWORD [20+edi],ebp
+ ; saved r[5]
+ ; ############### Calculate word 6
+ xor ebp,ebp
+ ; sqr a[3]*a[3]
+ mul eax
+ add ebx,eax
+ adc ecx,edx
+ adc ebp,0
+ mov DWORD [24+edi],ebx
+ ; saved r[6]
+ mov DWORD [28+edi],ecx
+ pop ebx
+ pop ebp
+ pop edi
+ pop esi
+ ret

+ 181 - 182
libs/openssl/crypto/bn/asm/x86_gf2m.asm

@@ -1,190 +1,189 @@
-
 %ifidn __OUTPUT_FORMAT__,obj
-section	code	use32 class=code align=256
+section code use32 class=code align=256
 %elifidn __OUTPUT_FORMAT__,win32
 [email protected] equ 1
-section	.text	code align=256
+section .text code align=256
 %else
-section	.text	code
+section .text code
 %endif
-align	16
+align 16
 __mul_1x1_ialu:
-	sub	esp,36
-	mov	ecx,eax
-	lea	edx,[eax*1+eax]
-	lea	ebp,[eax*4]
-	and	ecx,1073741823
-	lea	edi,[eax*1+eax]
-	sar	eax,31
-	mov	DWORD [esp],0
-	and	edx,2147483647
-	mov	DWORD [4+esp],ecx
-	xor	ecx,edx
-	mov	DWORD [8+esp],edx
-	xor	edx,ebp
-	mov	DWORD [12+esp],ecx
-	xor	ecx,edx
-	mov	DWORD [16+esp],ebp
-	xor	ebp,edx
-	mov	DWORD [20+esp],ecx
-	xor	ebp,ecx
-	sar	edi,31
-	and	eax,ebx
-	mov	DWORD [24+esp],edx
-	and	edi,ebx
-	mov	DWORD [28+esp],ebp
-	mov	edx,eax
-	shl	eax,31
-	mov	ecx,edi
-	shr	edx,1
-	mov	esi,7
-	shl	edi,30
-	and	esi,ebx
-	shr	ecx,2
-	xor	eax,edi
-	shr	ebx,3
-	mov	edi,7
-	and	edi,ebx
-	shr	ebx,3
-	xor	edx,ecx
-	xor	eax,DWORD [esi*4+esp]
-	mov	esi,7
-	and	esi,ebx
-	shr	ebx,3
-	mov	ebp,DWORD [edi*4+esp]
-	mov	edi,7
-	mov	ecx,ebp
-	shl	ebp,3
-	and	edi,ebx
-	shr	ecx,29
-	xor	eax,ebp
-	shr	ebx,3
-	xor	edx,ecx
-	mov	ecx,DWORD [esi*4+esp]
-	mov	esi,7
-	mov	ebp,ecx
-	shl	ecx,6
-	and	esi,ebx
-	shr	ebp,26
-	xor	eax,ecx
-	shr	ebx,3
-	xor	edx,ebp
-	mov	ebp,DWORD [edi*4+esp]
-	mov	edi,7
-	mov	ecx,ebp
-	shl	ebp,9
-	and	edi,ebx
-	shr	ecx,23
-	xor	eax,ebp
-	shr	ebx,3
-	xor	edx,ecx
-	mov	ecx,DWORD [esi*4+esp]
-	mov	esi,7
-	mov	ebp,ecx
-	shl	ecx,12
-	and	esi,ebx
-	shr	ebp,20
-	xor	eax,ecx
-	shr	ebx,3
-	xor	edx,ebp
-	mov	ebp,DWORD [edi*4+esp]
-	mov	edi,7
-	mov	ecx,ebp
-	shl	ebp,15
-	and	edi,ebx
-	shr	ecx,17
-	xor	eax,ebp
-	shr	ebx,3
-	xor	edx,ecx
-	mov	ecx,DWORD [esi*4+esp]
-	mov	esi,7
-	mov	ebp,ecx
-	shl	ecx,18
-	and	esi,ebx
-	shr	ebp,14
-	xor	eax,ecx
-	shr	ebx,3
-	xor	edx,ebp
-	mov	ebp,DWORD [edi*4+esp]
-	mov	edi,7
-	mov	ecx,ebp
-	shl	ebp,21
-	and	edi,ebx
-	shr	ecx,11
-	xor	eax,ebp
-	shr	ebx,3
-	xor	edx,ecx
-	mov	ecx,DWORD [esi*4+esp]
-	mov	esi,7
-	mov	ebp,ecx
-	shl	ecx,24
-	and	esi,ebx
-	shr	ebp,8
-	xor	eax,ecx
-	shr	ebx,3
-	xor	edx,ebp
-	mov	ebp,DWORD [edi*4+esp]
-	mov	ecx,ebp
-	shl	ebp,27
-	mov	edi,DWORD [esi*4+esp]
-	shr	ecx,5
-	mov	esi,edi
-	xor	eax,ebp
-	shl	edi,30
-	xor	edx,ecx
-	shr	esi,2
-	xor	eax,edi
-	xor	edx,esi
-	add	esp,36
-	ret
-global	_bn_GF2m_mul_2x2
-align	16
+ sub esp,36
+ mov ecx,eax
+ lea edx,[eax*1+eax]
+ lea ebp,[eax*4]
+ and ecx,1073741823
+ lea edi,[eax*1+eax]
+ sar eax,31
+ mov DWORD [esp],0
+ and edx,2147483647
+ mov DWORD [4+esp],ecx
+ xor ecx,edx
+ mov DWORD [8+esp],edx
+ xor edx,ebp
+ mov DWORD [12+esp],ecx
+ xor ecx,edx
+ mov DWORD [16+esp],ebp
+ xor ebp,edx
+ mov DWORD [20+esp],ecx
+ xor ebp,ecx
+ sar edi,31
+ and eax,ebx
+ mov DWORD [24+esp],edx
+ and edi,ebx
+ mov DWORD [28+esp],ebp
+ mov edx,eax
+ shl eax,31
+ mov ecx,edi
+ shr edx,1
+ mov esi,7
+ shl edi,30
+ and esi,ebx
+ shr ecx,2
+ xor eax,edi
+ shr ebx,3
+ mov edi,7
+ and edi,ebx
+ shr ebx,3
+ xor edx,ecx
+ xor eax,DWORD [esi*4+esp]
+ mov esi,7
+ and esi,ebx
+ shr ebx,3
+ mov ebp,DWORD [edi*4+esp]
+ mov edi,7
+ mov ecx,ebp
+ shl ebp,3
+ and edi,ebx
+ shr ecx,29
+ xor eax,ebp
+ shr ebx,3
+ xor edx,ecx
+ mov ecx,DWORD [esi*4+esp]
+ mov esi,7
+ mov ebp,ecx
+ shl ecx,6
+ and esi,ebx
+ shr ebp,26
+ xor eax,ecx
+ shr ebx,3
+ xor edx,ebp
+ mov ebp,DWORD [edi*4+esp]
+ mov edi,7
+ mov ecx,ebp
+ shl ebp,9
+ and edi,ebx
+ shr ecx,23
+ xor eax,ebp
+ shr ebx,3
+ xor edx,ecx
+ mov ecx,DWORD [esi*4+esp]
+ mov esi,7
+ mov ebp,ecx
+ shl ecx,12
+ and esi,ebx
+ shr ebp,20
+ xor eax,ecx
+ shr ebx,3
+ xor edx,ebp
+ mov ebp,DWORD [edi*4+esp]
+ mov edi,7
+ mov ecx,ebp
+ shl ebp,15
+ and edi,ebx
+ shr ecx,17
+ xor eax,ebp
+ shr ebx,3
+ xor edx,ecx
+ mov ecx,DWORD [esi*4+esp]
+ mov esi,7
+ mov ebp,ecx
+ shl ecx,18
+ and esi,ebx
+ shr ebp,14
+ xor eax,ecx
+ shr ebx,3
+ xor edx,ebp
+ mov ebp,DWORD [edi*4+esp]
+ mov edi,7
+ mov ecx,ebp
+ shl ebp,21
+ and edi,ebx
+ shr ecx,11
+ xor eax,ebp
+ shr ebx,3
+ xor edx,ecx
+ mov ecx,DWORD [esi*4+esp]
+ mov esi,7
+ mov ebp,ecx
+ shl ecx,24
+ and esi,ebx
+ shr ebp,8
+ xor eax,ecx
+ shr ebx,3
+ xor edx,ebp
+ mov ebp,DWORD [edi*4+esp]
+ mov ecx,ebp
+ shl ebp,27
+ mov edi,DWORD [esi*4+esp]
+ shr ecx,5
+ mov esi,edi
+ xor eax,ebp
+ shl edi,30
+ xor edx,ecx
+ shr esi,2
+ xor eax,edi
+ xor edx,esi
+ add esp,36
+ ret
+global _bn_GF2m_mul_2x2
+align 16
 _bn_GF2m_mul_2x2:
 L$_bn_GF2m_mul_2x2_begin:
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	sub	esp,20
-	mov	eax,DWORD [44+esp]
-	mov	ebx,DWORD [52+esp]
-	call	__mul_1x1_ialu
-	mov	DWORD [8+esp],eax
-	mov	DWORD [12+esp],edx
-	mov	eax,DWORD [48+esp]
-	mov	ebx,DWORD [56+esp]
-	call	__mul_1x1_ialu
-	mov	DWORD [esp],eax
-	mov	DWORD [4+esp],edx
-	mov	eax,DWORD [44+esp]
-	mov	ebx,DWORD [52+esp]
-	xor	eax,DWORD [48+esp]
-	xor	ebx,DWORD [56+esp]
-	call	__mul_1x1_ialu
-	mov	ebp,DWORD [40+esp]
-	mov	ebx,DWORD [esp]
-	mov	ecx,DWORD [4+esp]
-	mov	edi,DWORD [8+esp]
-	mov	esi,DWORD [12+esp]
-	xor	eax,edx
-	xor	edx,ecx
-	xor	eax,ebx
-	mov	DWORD [ebp],ebx
-	xor	edx,edi
-	mov	DWORD [12+ebp],esi
-	xor	eax,esi
-	add	esp,20
-	xor	edx,esi
-	pop	edi
-	xor	eax,edx
-	pop	esi
-	mov	DWORD [8+ebp],edx
-	pop	ebx
-	mov	DWORD [4+ebp],eax
-	pop	ebp
-	ret
-db	71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105
-db	99,97,116,105,111,110,32,102,111,114,32,120,56,54,44,32
-db	67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
-db	112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
-db	62,0
+ push ebp
+ push ebx
+ push esi
+ push edi
+ sub esp,20
+ mov eax,DWORD [44+esp]
+ mov ebx,DWORD [52+esp]
+ call __mul_1x1_ialu
+ mov DWORD [8+esp],eax
+ mov DWORD [12+esp],edx
+ mov eax,DWORD [48+esp]
+ mov ebx,DWORD [56+esp]
+ call __mul_1x1_ialu
+ mov DWORD [esp],eax
+ mov DWORD [4+esp],edx
+ mov eax,DWORD [44+esp]
+ mov ebx,DWORD [52+esp]
+ xor eax,DWORD [48+esp]
+ xor ebx,DWORD [56+esp]
+ call __mul_1x1_ialu
+ mov ebp,DWORD [40+esp]
+ mov ebx,DWORD [esp]
+ mov ecx,DWORD [4+esp]
+ mov edi,DWORD [8+esp]
+ mov esi,DWORD [12+esp]
+ xor eax,edx
+ xor edx,ecx
+ xor eax,ebx
+ mov DWORD [ebp],ebx
+ xor edx,edi
+ mov DWORD [12+ebp],esi
+ xor eax,esi
+ add esp,20
+ xor edx,esi
+ pop edi
+ xor eax,edx
+ pop esi
+ mov DWORD [8+ebp],edx
+ pop ebx
+ mov DWORD [4+ebp],eax
+ pop ebp
+ ret
+db 71,70,40,50,94,109,41,32,77,117,108,116,105,112,108,105
+db 99,97,116,105,111,110,32,102,111,114,32,120,56,54,44,32
+db 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
+db 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
+db 62,0

+ 338 - 339
libs/openssl/crypto/bn/asm/x86_mont.asm

@@ -1,360 +1,359 @@
-
 %ifidn __OUTPUT_FORMAT__,obj
-section	code	use32 class=code align=256
+section code use32 class=code align=256
 %elifidn __OUTPUT_FORMAT__,win32
 [email protected] equ 1
-section	.text	code align=256
+section .text code align=256
 %else
-section	.text	code
+section .text code
 %endif
-global	_bn_mul_mont
-align	16
+global _bn_mul_mont
+align 16
 _bn_mul_mont:
 L$_bn_mul_mont_begin:
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	xor	eax,eax
-	mov	edi,DWORD [40+esp]
-	cmp	edi,4
-	jl	NEAR L$000just_leave
-	lea	esi,[20+esp]
-	lea	edx,[24+esp]
-	add	edi,2
-	neg	edi
-	lea	ebp,[edi*4+esp-32]
-	neg	edi
-	mov	eax,ebp
-	sub	eax,edx
-	and	eax,2047
-	sub	ebp,eax
-	xor	edx,ebp
-	and	edx,2048
-	xor	edx,2048
-	sub	ebp,edx
-	and	ebp,-64
-	mov	eax,esp
-	sub	eax,ebp
-	and	eax,-4096
-	mov	edx,esp
-	lea	esp,[eax*1+ebp]
-	mov	eax,DWORD [esp]
-	cmp	esp,ebp
-	ja	NEAR L$001page_walk
-	jmp	NEAR L$002page_walk_done
-align	16
+ push ebp
+ push ebx
+ push esi
+ push edi
+ xor eax,eax
+ mov edi,DWORD [40+esp]
+ cmp edi,4
+ jl NEAR L$000just_leave
+ lea esi,[20+esp]
+ lea edx,[24+esp]
+ add edi,2
+ neg edi
+ lea ebp,[edi*4+esp-32]
+ neg edi
+ mov eax,ebp
+ sub eax,edx
+ and eax,2047
+ sub ebp,eax
+ xor edx,ebp
+ and edx,2048
+ xor edx,2048
+ sub ebp,edx
+ and ebp,-64
+ mov eax,esp
+ sub eax,ebp
+ and eax,-4096
+ mov edx,esp
+ lea esp,[eax*1+ebp]
+ mov eax,DWORD [esp]
+ cmp esp,ebp
+ ja NEAR L$001page_walk
+ jmp NEAR L$002page_walk_done
+align 16
 L$001page_walk:
-	lea	esp,[esp-4096]
-	mov	eax,DWORD [esp]
-	cmp	esp,ebp
-	ja	NEAR L$001page_walk
+ lea esp,[esp-4096]
+ mov eax,DWORD [esp]
+ cmp esp,ebp
+ ja NEAR L$001page_walk
 L$002page_walk_done:
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	mov	ecx,DWORD [8+esi]
-	mov	ebp,DWORD [12+esi]
-	mov	esi,DWORD [16+esi]
-	mov	esi,DWORD [esi]
-	mov	DWORD [4+esp],eax
-	mov	DWORD [8+esp],ebx
-	mov	DWORD [12+esp],ecx
-	mov	DWORD [16+esp],ebp
-	mov	DWORD [20+esp],esi
-	lea	ebx,[edi-3]
-	mov	DWORD [24+esp],edx
-	mov	esi,DWORD [8+esp]
-	lea	ebp,[1+ebx]
-	mov	edi,DWORD [12+esp]
-	xor	ecx,ecx
-	mov	edx,esi
-	and	ebp,1
-	sub	edx,edi
-	lea	eax,[4+ebx*4+edi]
-	or	ebp,edx
-	mov	edi,DWORD [edi]
-	jz	NEAR L$003bn_sqr_mont
-	mov	DWORD [28+esp],eax
-	mov	eax,DWORD [esi]
-	xor	edx,edx
-align	16
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ mov ecx,DWORD [8+esi]
+ mov ebp,DWORD [12+esi]
+ mov esi,DWORD [16+esi]
+ mov esi,DWORD [esi]
+ mov DWORD [4+esp],eax
+ mov DWORD [8+esp],ebx
+ mov DWORD [12+esp],ecx
+ mov DWORD [16+esp],ebp
+ mov DWORD [20+esp],esi
+ lea ebx,[edi-3]
+ mov DWORD [24+esp],edx
+ mov esi,DWORD [8+esp]
+ lea ebp,[1+ebx]
+ mov edi,DWORD [12+esp]
+ xor ecx,ecx
+ mov edx,esi
+ and ebp,1
+ sub edx,edi
+ lea eax,[4+ebx*4+edi]
+ or ebp,edx
+ mov edi,DWORD [edi]
+ jz NEAR L$003bn_sqr_mont
+ mov DWORD [28+esp],eax
+ mov eax,DWORD [esi]
+ xor edx,edx
+align 16
 L$004mull:
-	mov	ebp,edx
-	mul	edi
-	add	ebp,eax
-	lea	ecx,[1+ecx]
-	adc	edx,0
-	mov	eax,DWORD [ecx*4+esi]
-	cmp	ecx,ebx
-	mov	DWORD [28+ecx*4+esp],ebp
-	jl	NEAR L$004mull
-	mov	ebp,edx
-	mul	edi
-	mov	edi,DWORD [20+esp]
-	add	eax,ebp
-	mov	esi,DWORD [16+esp]
-	adc	edx,0
-	imul	edi,DWORD [32+esp]
-	mov	DWORD [32+ebx*4+esp],eax
-	xor	ecx,ecx
-	mov	DWORD [36+ebx*4+esp],edx
-	mov	DWORD [40+ebx*4+esp],ecx
-	mov	eax,DWORD [esi]
-	mul	edi
-	add	eax,DWORD [32+esp]
-	mov	eax,DWORD [4+esi]
-	adc	edx,0
-	inc	ecx
-	jmp	NEAR L$0052ndmadd
-align	16
+ mov ebp,edx
+ mul edi
+ add ebp,eax
+ lea ecx,[1+ecx]
+ adc edx,0
+ mov eax,DWORD [ecx*4+esi]
+ cmp ecx,ebx
+ mov DWORD [28+ecx*4+esp],ebp
+ jl NEAR L$004mull
+ mov ebp,edx
+ mul edi
+ mov edi,DWORD [20+esp]
+ add eax,ebp
+ mov esi,DWORD [16+esp]
+ adc edx,0
+ imul edi,DWORD [32+esp]
+ mov DWORD [32+ebx*4+esp],eax
+ xor ecx,ecx
+ mov DWORD [36+ebx*4+esp],edx
+ mov DWORD [40+ebx*4+esp],ecx
+ mov eax,DWORD [esi]
+ mul edi
+ add eax,DWORD [32+esp]
+ mov eax,DWORD [4+esi]
+ adc edx,0
+ inc ecx
+ jmp NEAR L$0052ndmadd
+align 16
 L$0061stmadd:
-	mov	ebp,edx
-	mul	edi
-	add	ebp,DWORD [32+ecx*4+esp]
-	lea	ecx,[1+ecx]
-	adc	edx,0
-	add	ebp,eax
-	mov	eax,DWORD [ecx*4+esi]
-	adc	edx,0
-	cmp	ecx,ebx
-	mov	DWORD [28+ecx*4+esp],ebp
-	jl	NEAR L$0061stmadd
-	mov	ebp,edx
-	mul	edi
-	add	eax,DWORD [32+ebx*4+esp]
-	mov	edi,DWORD [20+esp]
-	adc	edx,0
-	mov	esi,DWORD [16+esp]
-	add	ebp,eax
-	adc	edx,0
-	imul	edi,DWORD [32+esp]
-	xor	ecx,ecx
-	add	edx,DWORD [36+ebx*4+esp]
-	mov	DWORD [32+ebx*4+esp],ebp
-	adc	ecx,0
-	mov	eax,DWORD [esi]
-	mov	DWORD [36+ebx*4+esp],edx
-	mov	DWORD [40+ebx*4+esp],ecx
-	mul	edi
-	add	eax,DWORD [32+esp]
-	mov	eax,DWORD [4+esi]
-	adc	edx,0
-	mov	ecx,1
-align	16
+ mov ebp,edx
+ mul edi
+ add ebp,DWORD [32+ecx*4+esp]
+ lea ecx,[1+ecx]
+ adc edx,0
+ add ebp,eax
+ mov eax,DWORD [ecx*4+esi]
+ adc edx,0
+ cmp ecx,ebx
+ mov DWORD [28+ecx*4+esp],ebp
+ jl NEAR L$0061stmadd
+ mov ebp,edx
+ mul edi
+ add eax,DWORD [32+ebx*4+esp]
+ mov edi,DWORD [20+esp]
+ adc edx,0
+ mov esi,DWORD [16+esp]
+ add ebp,eax
+ adc edx,0
+ imul edi,DWORD [32+esp]
+ xor ecx,ecx
+ add edx,DWORD [36+ebx*4+esp]
+ mov DWORD [32+ebx*4+esp],ebp
+ adc ecx,0
+ mov eax,DWORD [esi]
+ mov DWORD [36+ebx*4+esp],edx
+ mov DWORD [40+ebx*4+esp],ecx
+ mul edi
+ add eax,DWORD [32+esp]
+ mov eax,DWORD [4+esi]
+ adc edx,0
+ mov ecx,1
+align 16
 L$0052ndmadd:
-	mov	ebp,edx
-	mul	edi
-	add	ebp,DWORD [32+ecx*4+esp]
-	lea	ecx,[1+ecx]
-	adc	edx,0
-	add	ebp,eax
-	mov	eax,DWORD [ecx*4+esi]
-	adc	edx,0
-	cmp	ecx,ebx
-	mov	DWORD [24+ecx*4+esp],ebp
-	jl	NEAR L$0052ndmadd
-	mov	ebp,edx
-	mul	edi
-	add	ebp,DWORD [32+ebx*4+esp]
-	adc	edx,0
-	add	ebp,eax
-	adc	edx,0
-	mov	DWORD [28+ebx*4+esp],ebp
-	xor	eax,eax
-	mov	ecx,DWORD [12+esp]
-	add	edx,DWORD [36+ebx*4+esp]
-	adc	eax,DWORD [40+ebx*4+esp]
-	lea	ecx,[4+ecx]
-	mov	DWORD [32+ebx*4+esp],edx
-	cmp	ecx,DWORD [28+esp]
-	mov	DWORD [36+ebx*4+esp],eax
-	je	NEAR L$007common_tail
-	mov	edi,DWORD [ecx]
-	mov	esi,DWORD [8+esp]
-	mov	DWORD [12+esp],ecx
-	xor	ecx,ecx
-	xor	edx,edx
-	mov	eax,DWORD [esi]
-	jmp	NEAR L$0061stmadd
-align	16
+ mov ebp,edx
+ mul edi
+ add ebp,DWORD [32+ecx*4+esp]
+ lea ecx,[1+ecx]
+ adc edx,0
+ add ebp,eax
+ mov eax,DWORD [ecx*4+esi]
+ adc edx,0
+ cmp ecx,ebx
+ mov DWORD [24+ecx*4+esp],ebp
+ jl NEAR L$0052ndmadd
+ mov ebp,edx
+ mul edi
+ add ebp,DWORD [32+ebx*4+esp]
+ adc edx,0
+ add ebp,eax
+ adc edx,0
+ mov DWORD [28+ebx*4+esp],ebp
+ xor eax,eax
+ mov ecx,DWORD [12+esp]
+ add edx,DWORD [36+ebx*4+esp]
+ adc eax,DWORD [40+ebx*4+esp]
+ lea ecx,[4+ecx]
+ mov DWORD [32+ebx*4+esp],edx
+ cmp ecx,DWORD [28+esp]
+ mov DWORD [36+ebx*4+esp],eax
+ je NEAR L$007common_tail
+ mov edi,DWORD [ecx]
+ mov esi,DWORD [8+esp]
+ mov DWORD [12+esp],ecx
+ xor ecx,ecx
+ xor edx,edx
+ mov eax,DWORD [esi]
+ jmp NEAR L$0061stmadd
+align 16
 L$003bn_sqr_mont:
-	mov	DWORD [esp],ebx
-	mov	DWORD [12+esp],ecx
-	mov	eax,edi
-	mul	edi
-	mov	DWORD [32+esp],eax
-	mov	ebx,edx
-	shr	edx,1
-	and	ebx,1
-	inc	ecx
-align	16
+ mov DWORD [esp],ebx
+ mov DWORD [12+esp],ecx
+ mov eax,edi
+ mul edi
+ mov DWORD [32+esp],eax
+ mov ebx,edx
+ shr edx,1
+ and ebx,1
+ inc ecx
+align 16
 L$008sqr:
-	mov	eax,DWORD [ecx*4+esi]
-	mov	ebp,edx
-	mul	edi
-	add	eax,ebp
-	lea	ecx,[1+ecx]
-	adc	edx,0
-	lea	ebp,[eax*2+ebx]
-	shr	eax,31
-	cmp	ecx,DWORD [esp]
-	mov	ebx,eax
-	mov	DWORD [28+ecx*4+esp],ebp
-	jl	NEAR L$008sqr
-	mov	eax,DWORD [ecx*4+esi]
-	mov	ebp,edx
-	mul	edi
-	add	eax,ebp
-	mov	edi,DWORD [20+esp]
-	adc	edx,0
-	mov	esi,DWORD [16+esp]
-	lea	ebp,[eax*2+ebx]
-	imul	edi,DWORD [32+esp]
-	shr	eax,31
-	mov	DWORD [32+ecx*4+esp],ebp
-	lea	ebp,[edx*2+eax]
-	mov	eax,DWORD [esi]
-	shr	edx,31
-	mov	DWORD [36+ecx*4+esp],ebp
-	mov	DWORD [40+ecx*4+esp],edx
-	mul	edi
-	add	eax,DWORD [32+esp]
-	mov	ebx,ecx
-	adc	edx,0
-	mov	eax,DWORD [4+esi]
-	mov	ecx,1
-align	16
+ mov eax,DWORD [ecx*4+esi]
+ mov ebp,edx
+ mul edi
+ add eax,ebp
+ lea ecx,[1+ecx]
+ adc edx,0
+ lea ebp,[eax*2+ebx]
+ shr eax,31
+ cmp ecx,DWORD [esp]
+ mov ebx,eax
+ mov DWORD [28+ecx*4+esp],ebp
+ jl NEAR L$008sqr
+ mov eax,DWORD [ecx*4+esi]
+ mov ebp,edx
+ mul edi
+ add eax,ebp
+ mov edi,DWORD [20+esp]
+ adc edx,0
+ mov esi,DWORD [16+esp]
+ lea ebp,[eax*2+ebx]
+ imul edi,DWORD [32+esp]
+ shr eax,31
+ mov DWORD [32+ecx*4+esp],ebp
+ lea ebp,[edx*2+eax]
+ mov eax,DWORD [esi]
+ shr edx,31
+ mov DWORD [36+ecx*4+esp],ebp
+ mov DWORD [40+ecx*4+esp],edx
+ mul edi
+ add eax,DWORD [32+esp]
+ mov ebx,ecx
+ adc edx,0
+ mov eax,DWORD [4+esi]
+ mov ecx,1
+align 16
 L$0093rdmadd:
-	mov	ebp,edx
-	mul	edi
-	add	ebp,DWORD [32+ecx*4+esp]
-	adc	edx,0
-	add	ebp,eax
-	mov	eax,DWORD [4+ecx*4+esi]
-	adc	edx,0
-	mov	DWORD [28+ecx*4+esp],ebp
-	mov	ebp,edx
-	mul	edi
-	add	ebp,DWORD [36+ecx*4+esp]
-	lea	ecx,[2+ecx]
-	adc	edx,0
-	add	ebp,eax
-	mov	eax,DWORD [ecx*4+esi]
-	adc	edx,0
-	cmp	ecx,ebx
-	mov	DWORD [24+ecx*4+esp],ebp
-	jl	NEAR L$0093rdmadd
-	mov	ebp,edx
-	mul	edi
-	add	ebp,DWORD [32+ebx*4+esp]
-	adc	edx,0
-	add	ebp,eax
-	adc	edx,0
-	mov	DWORD [28+ebx*4+esp],ebp
-	mov	ecx,DWORD [12+esp]
-	xor	eax,eax
-	mov	esi,DWORD [8+esp]
-	add	edx,DWORD [36+ebx*4+esp]
-	adc	eax,DWORD [40+ebx*4+esp]
-	mov	DWORD [32+ebx*4+esp],edx
-	cmp	ecx,ebx
-	mov	DWORD [36+ebx*4+esp],eax
-	je	NEAR L$007common_tail
-	mov	edi,DWORD [4+ecx*4+esi]
-	lea	ecx,[1+ecx]
-	mov	eax,edi
-	mov	DWORD [12+esp],ecx
-	mul	edi
-	add	eax,DWORD [32+ecx*4+esp]
-	adc	edx,0
-	mov	DWORD [32+ecx*4+esp],eax
-	xor	ebp,ebp
-	cmp	ecx,ebx
-	lea	ecx,[1+ecx]
-	je	NEAR L$010sqrlast
-	mov	ebx,edx
-	shr	edx,1
-	and	ebx,1
-align	16
+ mov ebp,edx
+ mul edi
+ add ebp,DWORD [32+ecx*4+esp]
+ adc edx,0
+ add ebp,eax
+ mov eax,DWORD [4+ecx*4+esi]
+ adc edx,0
+ mov DWORD [28+ecx*4+esp],ebp
+ mov ebp,edx
+ mul edi
+ add ebp,DWORD [36+ecx*4+esp]
+ lea ecx,[2+ecx]
+ adc edx,0
+ add ebp,eax
+ mov eax,DWORD [ecx*4+esi]
+ adc edx,0
+ cmp ecx,ebx
+ mov DWORD [24+ecx*4+esp],ebp
+ jl NEAR L$0093rdmadd
+ mov ebp,edx
+ mul edi
+ add ebp,DWORD [32+ebx*4+esp]
+ adc edx,0
+ add ebp,eax
+ adc edx,0
+ mov DWORD [28+ebx*4+esp],ebp
+ mov ecx,DWORD [12+esp]
+ xor eax,eax
+ mov esi,DWORD [8+esp]
+ add edx,DWORD [36+ebx*4+esp]
+ adc eax,DWORD [40+ebx*4+esp]
+ mov DWORD [32+ebx*4+esp],edx
+ cmp ecx,ebx
+ mov DWORD [36+ebx*4+esp],eax
+ je NEAR L$007common_tail
+ mov edi,DWORD [4+ecx*4+esi]
+ lea ecx,[1+ecx]
+ mov eax,edi
+ mov DWORD [12+esp],ecx
+ mul edi
+ add eax,DWORD [32+ecx*4+esp]
+ adc edx,0
+ mov DWORD [32+ecx*4+esp],eax
+ xor ebp,ebp
+ cmp ecx,ebx
+ lea ecx,[1+ecx]
+ je NEAR L$010sqrlast
+ mov ebx,edx
+ shr edx,1
+ and ebx,1
+align 16
 L$011sqradd:
-	mov	eax,DWORD [ecx*4+esi]
-	mov	ebp,edx
-	mul	edi
-	add	eax,ebp
-	lea	ebp,[eax*1+eax]
-	adc	edx,0
-	shr	eax,31
-	add	ebp,DWORD [32+ecx*4+esp]
-	lea	ecx,[1+ecx]
-	adc	eax,0
-	add	ebp,ebx
-	adc	eax,0
-	cmp	ecx,DWORD [esp]
-	mov	DWORD [28+ecx*4+esp],ebp
-	mov	ebx,eax
-	jle	NEAR L$011sqradd
-	mov	ebp,edx
-	add	edx,edx
-	shr	ebp,31
-	add	edx,ebx
-	adc	ebp,0
+ mov eax,DWORD [ecx*4+esi]
+ mov ebp,edx
+ mul edi
+ add eax,ebp
+ lea ebp,[eax*1+eax]
+ adc edx,0
+ shr eax,31
+ add ebp,DWORD [32+ecx*4+esp]
+ lea ecx,[1+ecx]
+ adc eax,0
+ add ebp,ebx
+ adc eax,0
+ cmp ecx,DWORD [esp]
+ mov DWORD [28+ecx*4+esp],ebp
+ mov ebx,eax
+ jle NEAR L$011sqradd
+ mov ebp,edx
+ add edx,edx
+ shr ebp,31
+ add edx,ebx
+ adc ebp,0
 L$010sqrlast:
-	mov	edi,DWORD [20+esp]
-	mov	esi,DWORD [16+esp]
-	imul	edi,DWORD [32+esp]
-	add	edx,DWORD [32+ecx*4+esp]
-	mov	eax,DWORD [esi]
-	adc	ebp,0
-	mov	DWORD [32+ecx*4+esp],edx
-	mov	DWORD [36+ecx*4+esp],ebp
-	mul	edi
-	add	eax,DWORD [32+esp]
-	lea	ebx,[ecx-1]
-	adc	edx,0
-	mov	ecx,1
-	mov	eax,DWORD [4+esi]
-	jmp	NEAR L$0093rdmadd
-align	16
+ mov edi,DWORD [20+esp]
+ mov esi,DWORD [16+esp]
+ imul edi,DWORD [32+esp]
+ add edx,DWORD [32+ecx*4+esp]
+ mov eax,DWORD [esi]
+ adc ebp,0
+ mov DWORD [32+ecx*4+esp],edx
+ mov DWORD [36+ecx*4+esp],ebp
+ mul edi
+ add eax,DWORD [32+esp]
+ lea ebx,[ecx-1]
+ adc edx,0
+ mov ecx,1
+ mov eax,DWORD [4+esi]
+ jmp NEAR L$0093rdmadd
+align 16
 L$007common_tail:
-	mov	ebp,DWORD [16+esp]
-	mov	edi,DWORD [4+esp]
-	lea	esi,[32+esp]
-	mov	eax,DWORD [esi]
-	mov	ecx,ebx
-	xor	edx,edx
-align	16
+ mov ebp,DWORD [16+esp]
+ mov edi,DWORD [4+esp]
+ lea esi,[32+esp]
+ mov eax,DWORD [esi]
+ mov ecx,ebx
+ xor edx,edx
+align 16
 L$012sub:
-	sbb	eax,DWORD [edx*4+ebp]
-	mov	DWORD [edx*4+edi],eax
-	dec	ecx
-	mov	eax,DWORD [4+edx*4+esi]
-	lea	edx,[1+edx]
-	jge	NEAR L$012sub
-	sbb	eax,0
-	mov	edx,-1
-	xor	edx,eax
-	jmp	NEAR L$013copy
-align	16
+ sbb eax,DWORD [edx*4+ebp]
+ mov DWORD [edx*4+edi],eax
+ dec ecx
+ mov eax,DWORD [4+edx*4+esi]
+ lea edx,[1+edx]
+ jge NEAR L$012sub
+ sbb eax,0
+ mov edx,-1
+ xor edx,eax
+ jmp NEAR L$013copy
+align 16
 L$013copy:
-	mov	esi,DWORD [32+ebx*4+esp]
-	mov	ebp,DWORD [ebx*4+edi]
-	mov	DWORD [32+ebx*4+esp],ecx
-	and	esi,eax
-	and	ebp,edx
-	or	ebp,esi
-	mov	DWORD [ebx*4+edi],ebp
-	dec	ebx
-	jge	NEAR L$013copy
-	mov	esp,DWORD [24+esp]
-	mov	eax,1
+ mov esi,DWORD [32+ebx*4+esp]
+ mov ebp,DWORD [ebx*4+edi]
+ mov DWORD [32+ebx*4+esp],ecx
+ and esi,eax
+ and ebp,edx
+ or ebp,esi
+ mov DWORD [ebx*4+edi],ebp
+ dec ebx
+ jge NEAR L$013copy
+ mov esp,DWORD [24+esp]
+ mov eax,1
 L$000just_leave:
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-db	77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105
-db	112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56
-db	54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
-db	32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
-db	111,114,103,62,0
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+db 77,111,110,116,103,111,109,101,114,121,32,77,117,108,116,105
+db 112,108,105,99,97,116,105,111,110,32,102,111,114,32,120,56
+db 54,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121
+db 32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46
+db 111,114,103,62,0

+ 959 - 960
libs/openssl/crypto/cast/asm/cast_586.asm

@@ -1,1025 +1,1024 @@
-
 %ifidn __OUTPUT_FORMAT__,obj
-section	code	use32 class=code align=256
+section code use32 class=code align=256
 %elifidn __OUTPUT_FORMAT__,win32
 [email protected] equ 1
-section	.text	code align=256
+section .text code align=256
 %else
-section	.text	code
+section .text code
 %endif
-extern	_CAST_S_table0
-extern	_CAST_S_table1
-extern	_CAST_S_table2
-extern	_CAST_S_table3
-global	_CAST_encrypt
-align	16
+extern _CAST_S_table0
+extern _CAST_S_table1
+extern _CAST_S_table2
+extern _CAST_S_table3
+global _CAST_encrypt
+align 16
 _CAST_encrypt:
 L$_CAST_encrypt_begin:
-	; 
-	push	ebp
-	push	ebx
-	mov	ebx,DWORD [12+esp]
-	mov	ebp,DWORD [16+esp]
-	push	esi
-	push	edi
-	; Load the 2 words
-	mov	edi,DWORD [ebx]
-	mov	esi,DWORD [4+ebx]
-	; Get short key flag
-	mov	eax,DWORD [128+ebp]
-	push	eax
-	xor	eax,eax
-	; round 0
-	mov	edx,DWORD [ebp]
-	mov	ecx,DWORD [4+ebp]
-	add	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	add	ecx,ebx
-	xor	edi,ecx
-	; round 1
-	mov	edx,DWORD [8+ebp]
-	mov	ecx,DWORD [12+ebp]
-	xor	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	xor	ecx,ebx
-	xor	esi,ecx
-	; round 2
-	mov	edx,DWORD [16+ebp]
-	mov	ecx,DWORD [20+ebp]
-	sub	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	sub	ecx,ebx
-	xor	edi,ecx
-	; round 3
-	mov	edx,DWORD [24+ebp]
-	mov	ecx,DWORD [28+ebp]
-	add	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	add	ecx,ebx
-	xor	esi,ecx
-	; round 4
-	mov	edx,DWORD [32+ebp]
-	mov	ecx,DWORD [36+ebp]
-	xor	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	xor	ecx,ebx
-	xor	edi,ecx
-	; round 5
-	mov	edx,DWORD [40+ebp]
-	mov	ecx,DWORD [44+ebp]
-	sub	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	sub	ecx,ebx
-	xor	esi,ecx
-	; round 6
-	mov	edx,DWORD [48+ebp]
-	mov	ecx,DWORD [52+ebp]
-	add	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	add	ecx,ebx
-	xor	edi,ecx
-	; round 7
-	mov	edx,DWORD [56+ebp]
-	mov	ecx,DWORD [60+ebp]
-	xor	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	xor	ecx,ebx
-	xor	esi,ecx
-	; round 8
-	mov	edx,DWORD [64+ebp]
-	mov	ecx,DWORD [68+ebp]
-	sub	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	sub	ecx,ebx
-	xor	edi,ecx
-	; round 9
-	mov	edx,DWORD [72+ebp]
-	mov	ecx,DWORD [76+ebp]
-	add	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	add	ecx,ebx
-	xor	esi,ecx
-	; round 10
-	mov	edx,DWORD [80+ebp]
-	mov	ecx,DWORD [84+ebp]
-	xor	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	xor	ecx,ebx
-	xor	edi,ecx
-	; round 11
-	mov	edx,DWORD [88+ebp]
-	mov	ecx,DWORD [92+ebp]
-	sub	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	sub	ecx,ebx
-	xor	esi,ecx
-	; test short key flag
-	pop	edx
-	or	edx,edx
-	jnz	NEAR L$000cast_enc_done
-	; round 12
-	mov	edx,DWORD [96+ebp]
-	mov	ecx,DWORD [100+ebp]
-	add	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	add	ecx,ebx
-	xor	edi,ecx
-	; round 13
-	mov	edx,DWORD [104+ebp]
-	mov	ecx,DWORD [108+ebp]
-	xor	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	xor	ecx,ebx
-	xor	esi,ecx
-	; round 14
-	mov	edx,DWORD [112+ebp]
-	mov	ecx,DWORD [116+ebp]
-	sub	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	sub	ecx,ebx
-	xor	edi,ecx
-	; round 15
-	mov	edx,DWORD [120+ebp]
-	mov	ecx,DWORD [124+ebp]
-	add	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	add	ecx,ebx
-	xor	esi,ecx
+ ;
+ push ebp
+ push ebx
+ mov ebx,DWORD [12+esp]
+ mov ebp,DWORD [16+esp]
+ push esi
+ push edi
+ ; Load the 2 words
+ mov edi,DWORD [ebx]
+ mov esi,DWORD [4+ebx]
+ ; Get short key flag
+ mov eax,DWORD [128+ebp]
+ push eax
+ xor eax,eax
+ ; round 0
+ mov edx,DWORD [ebp]
+ mov ecx,DWORD [4+ebp]
+ add edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ add ecx,ebx
+ xor edi,ecx
+ ; round 1
+ mov edx,DWORD [8+ebp]
+ mov ecx,DWORD [12+ebp]
+ xor edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ xor ecx,ebx
+ xor esi,ecx
+ ; round 2
+ mov edx,DWORD [16+ebp]
+ mov ecx,DWORD [20+ebp]
+ sub edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ sub ecx,ebx
+ xor edi,ecx
+ ; round 3
+ mov edx,DWORD [24+ebp]
+ mov ecx,DWORD [28+ebp]
+ add edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ add ecx,ebx
+ xor esi,ecx
+ ; round 4
+ mov edx,DWORD [32+ebp]
+ mov ecx,DWORD [36+ebp]
+ xor edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ xor ecx,ebx
+ xor edi,ecx
+ ; round 5
+ mov edx,DWORD [40+ebp]
+ mov ecx,DWORD [44+ebp]
+ sub edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ sub ecx,ebx
+ xor esi,ecx
+ ; round 6
+ mov edx,DWORD [48+ebp]
+ mov ecx,DWORD [52+ebp]
+ add edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ add ecx,ebx
+ xor edi,ecx
+ ; round 7
+ mov edx,DWORD [56+ebp]
+ mov ecx,DWORD [60+ebp]
+ xor edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ xor ecx,ebx
+ xor esi,ecx
+ ; round 8
+ mov edx,DWORD [64+ebp]
+ mov ecx,DWORD [68+ebp]
+ sub edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ sub ecx,ebx
+ xor edi,ecx
+ ; round 9
+ mov edx,DWORD [72+ebp]
+ mov ecx,DWORD [76+ebp]
+ add edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ add ecx,ebx
+ xor esi,ecx
+ ; round 10
+ mov edx,DWORD [80+ebp]
+ mov ecx,DWORD [84+ebp]
+ xor edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ xor ecx,ebx
+ xor edi,ecx
+ ; round 11
+ mov edx,DWORD [88+ebp]
+ mov ecx,DWORD [92+ebp]
+ sub edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ sub ecx,ebx
+ xor esi,ecx
+ ; test short key flag
+ pop edx
+ or edx,edx
+ jnz NEAR L$000cast_enc_done
+ ; round 12
+ mov edx,DWORD [96+ebp]
+ mov ecx,DWORD [100+ebp]
+ add edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ add ecx,ebx
+ xor edi,ecx
+ ; round 13
+ mov edx,DWORD [104+ebp]
+ mov ecx,DWORD [108+ebp]
+ xor edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ xor ecx,ebx
+ xor esi,ecx
+ ; round 14
+ mov edx,DWORD [112+ebp]
+ mov ecx,DWORD [116+ebp]
+ sub edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ sub ecx,ebx
+ xor edi,ecx
+ ; round 15
+ mov edx,DWORD [120+ebp]
+ mov ecx,DWORD [124+ebp]
+ add edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ add ecx,ebx
+ xor esi,ecx
 L$000cast_enc_done:
-	nop
-	mov	eax,DWORD [20+esp]
-	mov	DWORD [4+eax],edi
-	mov	DWORD [eax],esi
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-extern	_CAST_S_table0
-extern	_CAST_S_table1
-extern	_CAST_S_table2
-extern	_CAST_S_table3
-global	_CAST_decrypt
-align	16
+ nop
+ mov eax,DWORD [20+esp]
+ mov DWORD [4+eax],edi
+ mov DWORD [eax],esi
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+extern _CAST_S_table0
+extern _CAST_S_table1
+extern _CAST_S_table2
+extern _CAST_S_table3
+global _CAST_decrypt
+align 16
 _CAST_decrypt:
 L$_CAST_decrypt_begin:
-	; 
-	push	ebp
-	push	ebx
-	mov	ebx,DWORD [12+esp]
-	mov	ebp,DWORD [16+esp]
-	push	esi
-	push	edi
-	; Load the 2 words
-	mov	edi,DWORD [ebx]
-	mov	esi,DWORD [4+ebx]
-	; Get short key flag
-	mov	eax,DWORD [128+ebp]
-	or	eax,eax
-	jnz	NEAR L$001cast_dec_skip
-	xor	eax,eax
-	; round 15
-	mov	edx,DWORD [120+ebp]
-	mov	ecx,DWORD [124+ebp]
-	add	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	add	ecx,ebx
-	xor	edi,ecx
-	; round 14
-	mov	edx,DWORD [112+ebp]
-	mov	ecx,DWORD [116+ebp]
-	sub	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	sub	ecx,ebx
-	xor	esi,ecx
-	; round 13
-	mov	edx,DWORD [104+ebp]
-	mov	ecx,DWORD [108+ebp]
-	xor	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	xor	ecx,ebx
-	xor	edi,ecx
-	; round 12
-	mov	edx,DWORD [96+ebp]
-	mov	ecx,DWORD [100+ebp]
-	add	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	add	ecx,ebx
-	xor	esi,ecx
+ ;
+ push ebp
+ push ebx
+ mov ebx,DWORD [12+esp]
+ mov ebp,DWORD [16+esp]
+ push esi
+ push edi
+ ; Load the 2 words
+ mov edi,DWORD [ebx]
+ mov esi,DWORD [4+ebx]
+ ; Get short key flag
+ mov eax,DWORD [128+ebp]
+ or eax,eax
+ jnz NEAR L$001cast_dec_skip
+ xor eax,eax
+ ; round 15
+ mov edx,DWORD [120+ebp]
+ mov ecx,DWORD [124+ebp]
+ add edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ add ecx,ebx
+ xor edi,ecx
+ ; round 14
+ mov edx,DWORD [112+ebp]
+ mov ecx,DWORD [116+ebp]
+ sub edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ sub ecx,ebx
+ xor esi,ecx
+ ; round 13
+ mov edx,DWORD [104+ebp]
+ mov ecx,DWORD [108+ebp]
+ xor edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ xor ecx,ebx
+ xor edi,ecx
+ ; round 12
+ mov edx,DWORD [96+ebp]
+ mov ecx,DWORD [100+ebp]
+ add edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ add ecx,ebx
+ xor esi,ecx
 L$001cast_dec_skip:
-	; round 11
-	mov	edx,DWORD [88+ebp]
-	mov	ecx,DWORD [92+ebp]
-	sub	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	sub	ecx,ebx
-	xor	edi,ecx
-	; round 10
-	mov	edx,DWORD [80+ebp]
-	mov	ecx,DWORD [84+ebp]
-	xor	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	xor	ecx,ebx
-	xor	esi,ecx
-	; round 9
-	mov	edx,DWORD [72+ebp]
-	mov	ecx,DWORD [76+ebp]
-	add	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	add	ecx,ebx
-	xor	edi,ecx
-	; round 8
-	mov	edx,DWORD [64+ebp]
-	mov	ecx,DWORD [68+ebp]
-	sub	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	sub	ecx,ebx
-	xor	esi,ecx
-	; round 7
-	mov	edx,DWORD [56+ebp]
-	mov	ecx,DWORD [60+ebp]
-	xor	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	xor	ecx,ebx
-	xor	edi,ecx
-	; round 6
-	mov	edx,DWORD [48+ebp]
-	mov	ecx,DWORD [52+ebp]
-	add	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	add	ecx,ebx
-	xor	esi,ecx
-	; round 5
-	mov	edx,DWORD [40+ebp]
-	mov	ecx,DWORD [44+ebp]
-	sub	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	sub	ecx,ebx
-	xor	edi,ecx
-	; round 4
-	mov	edx,DWORD [32+ebp]
-	mov	ecx,DWORD [36+ebp]
-	xor	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	xor	ecx,ebx
-	xor	esi,ecx
-	; round 3
-	mov	edx,DWORD [24+ebp]
-	mov	ecx,DWORD [28+ebp]
-	add	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	add	ecx,ebx
-	xor	edi,ecx
-	; round 2
-	mov	edx,DWORD [16+ebp]
-	mov	ecx,DWORD [20+ebp]
-	sub	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	sub	ecx,ebx
-	xor	esi,ecx
-	; round 1
-	mov	edx,DWORD [8+ebp]
-	mov	ecx,DWORD [12+ebp]
-	xor	edx,esi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	add	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	xor	ecx,ebx
-	xor	edi,ecx
-	; round 0
-	mov	edx,DWORD [ebp]
-	mov	ecx,DWORD [4+ebp]
-	add	edx,edi
-	rol	edx,cl
-	xor	ecx,ecx
-	mov	ebx,255
-	mov	cl,dh
-	and	ebx,edx
-	shr	edx,16
-	xor	eax,eax
-	mov	al,dh
-	and	edx,255
-	mov	ecx,DWORD [_CAST_S_table0+ecx*4]
-	mov	ebx,DWORD [_CAST_S_table1+ebx*4]
-	xor	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table2+eax*4]
-	sub	ecx,ebx
-	mov	ebx,DWORD [_CAST_S_table3+edx*4]
-	add	ecx,ebx
-	xor	esi,ecx
-	nop
-	mov	eax,DWORD [20+esp]
-	mov	DWORD [4+eax],edi
-	mov	DWORD [eax],esi
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-global	_CAST_cbc_encrypt
-align	16
+ ; round 11
+ mov edx,DWORD [88+ebp]
+ mov ecx,DWORD [92+ebp]
+ sub edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ sub ecx,ebx
+ xor edi,ecx
+ ; round 10
+ mov edx,DWORD [80+ebp]
+ mov ecx,DWORD [84+ebp]
+ xor edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ xor ecx,ebx
+ xor esi,ecx
+ ; round 9
+ mov edx,DWORD [72+ebp]
+ mov ecx,DWORD [76+ebp]
+ add edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ add ecx,ebx
+ xor edi,ecx
+ ; round 8
+ mov edx,DWORD [64+ebp]
+ mov ecx,DWORD [68+ebp]
+ sub edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ sub ecx,ebx
+ xor esi,ecx
+ ; round 7
+ mov edx,DWORD [56+ebp]
+ mov ecx,DWORD [60+ebp]
+ xor edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ xor ecx,ebx
+ xor edi,ecx
+ ; round 6
+ mov edx,DWORD [48+ebp]
+ mov ecx,DWORD [52+ebp]
+ add edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ add ecx,ebx
+ xor esi,ecx
+ ; round 5
+ mov edx,DWORD [40+ebp]
+ mov ecx,DWORD [44+ebp]
+ sub edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ sub ecx,ebx
+ xor edi,ecx
+ ; round 4
+ mov edx,DWORD [32+ebp]
+ mov ecx,DWORD [36+ebp]
+ xor edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ xor ecx,ebx
+ xor esi,ecx
+ ; round 3
+ mov edx,DWORD [24+ebp]
+ mov ecx,DWORD [28+ebp]
+ add edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ add ecx,ebx
+ xor edi,ecx
+ ; round 2
+ mov edx,DWORD [16+ebp]
+ mov ecx,DWORD [20+ebp]
+ sub edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ sub ecx,ebx
+ xor esi,ecx
+ ; round 1
+ mov edx,DWORD [8+ebp]
+ mov ecx,DWORD [12+ebp]
+ xor edx,esi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ add ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ xor ecx,ebx
+ xor edi,ecx
+ ; round 0
+ mov edx,DWORD [ebp]
+ mov ecx,DWORD [4+ebp]
+ add edx,edi
+ rol edx,cl
+ xor ecx,ecx
+ mov ebx,255
+ mov cl,dh
+ and ebx,edx
+ shr edx,16
+ xor eax,eax
+ mov al,dh
+ and edx,255
+ mov ecx,DWORD [_CAST_S_table0+ecx*4]
+ mov ebx,DWORD [_CAST_S_table1+ebx*4]
+ xor ecx,ebx
+ mov ebx,DWORD [_CAST_S_table2+eax*4]
+ sub ecx,ebx
+ mov ebx,DWORD [_CAST_S_table3+edx*4]
+ add ecx,ebx
+ xor esi,ecx
+ nop
+ mov eax,DWORD [20+esp]
+ mov DWORD [4+eax],edi
+ mov DWORD [eax],esi
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+global _CAST_cbc_encrypt
+align 16
 _CAST_cbc_encrypt:
 L$_CAST_cbc_encrypt_begin:
-	; 
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	mov	ebp,DWORD [28+esp]
-	; getting iv ptr from parameter 4
-	mov	ebx,DWORD [36+esp]
-	mov	esi,DWORD [ebx]
-	mov	edi,DWORD [4+ebx]
-	push	edi
-	push	esi
-	push	edi
-	push	esi
-	mov	ebx,esp
-	mov	esi,DWORD [36+esp]
-	mov	edi,DWORD [40+esp]
-	; getting encrypt flag from parameter 5
-	mov	ecx,DWORD [56+esp]
-	; get and push parameter 3
-	mov	eax,DWORD [48+esp]
-	push	eax
-	push	ebx
-	cmp	ecx,0
-	jz	NEAR L$002decrypt
-	and	ebp,4294967288
-	mov	eax,DWORD [8+esp]
-	mov	ebx,DWORD [12+esp]
-	jz	NEAR L$003encrypt_finish
+ ;
+ push ebp
+ push ebx
+ push esi
+ push edi
+ mov ebp,DWORD [28+esp]
+ ; getting iv ptr from parameter 4
+ mov ebx,DWORD [36+esp]
+ mov esi,DWORD [ebx]
+ mov edi,DWORD [4+ebx]
+ push edi
+ push esi
+ push edi
+ push esi
+ mov ebx,esp
+ mov esi,DWORD [36+esp]
+ mov edi,DWORD [40+esp]
+ ; getting encrypt flag from parameter 5
+ mov ecx,DWORD [56+esp]
+ ; get and push parameter 3
+ mov eax,DWORD [48+esp]
+ push eax
+ push ebx
+ cmp ecx,0
+ jz NEAR L$002decrypt
+ and ebp,4294967288
+ mov eax,DWORD [8+esp]
+ mov ebx,DWORD [12+esp]
+ jz NEAR L$003encrypt_finish
 L$004encrypt_loop:
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [4+esi]
-	xor	eax,ecx
-	xor	ebx,edx
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	DWORD [8+esp],eax
-	mov	DWORD [12+esp],ebx
-	call	L$_CAST_encrypt_begin
-	mov	eax,DWORD [8+esp]
-	mov	ebx,DWORD [12+esp]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	DWORD [edi],eax
-	mov	DWORD [4+edi],ebx
-	add	esi,8
-	add	edi,8
-	sub	ebp,8
-	jnz	NEAR L$004encrypt_loop
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [4+esi]
+ xor eax,ecx
+ xor ebx,edx
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov DWORD [8+esp],eax
+ mov DWORD [12+esp],ebx
+ call L$_CAST_encrypt_begin
+ mov eax,DWORD [8+esp]
+ mov ebx,DWORD [12+esp]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov DWORD [edi],eax
+ mov DWORD [4+edi],ebx
+ add esi,8
+ add edi,8
+ sub ebp,8
+ jnz NEAR L$004encrypt_loop
 L$003encrypt_finish:
-	mov	ebp,DWORD [52+esp]
-	and	ebp,7
-	jz	NEAR L$005finish
-	call	L$006PIC_point
+ mov ebp,DWORD [52+esp]
+ and ebp,7
+ jz NEAR L$005finish
+ call L$006PIC_point
 L$006PIC_point:
-	pop	edx
-	lea	ecx,[(L$007cbc_enc_jmp_table-L$006PIC_point)+edx]
-	mov	ebp,DWORD [ebp*4+ecx]
-	add	ebp,edx
-	xor	ecx,ecx
-	xor	edx,edx
-	jmp	ebp
+ pop edx
+ lea ecx,[(L$007cbc_enc_jmp_table-L$006PIC_point)+edx]
+ mov ebp,DWORD [ebp*4+ecx]
+ add ebp,edx
+ xor ecx,ecx
+ xor edx,edx
+ jmp ebp
 L$008ej7:
-	
 
 
 
 
-	mov	dh,BYTE [6+esi]
-	shl	edx,8
+
+ mov dh,BYTE [6+esi]
+ shl edx,8
 L$009ej6:
-	
 
 
 
 
-	mov	dh,BYTE [5+esi]
+
+ mov dh,BYTE [5+esi]
 L$010ej5:
-	
 
 
 
 
-	mov	dl,BYTE [4+esi]
+
+ mov dl,BYTE [4+esi]
 L$011ej4:
-	
 
 
 
 
-	mov	ecx,DWORD [esi]
-	jmp	NEAR L$012ejend
+
+ mov ecx,DWORD [esi]
+ jmp NEAR L$012ejend
 L$013ej3:
-	
 
 
 
 
-	mov	ch,BYTE [2+esi]
-	shl	ecx,8
+
+ mov ch,BYTE [2+esi]
+ shl ecx,8
 L$014ej2:
-	
 
 
 
 
-	mov	ch,BYTE [1+esi]
+
+ mov ch,BYTE [1+esi]
 L$015ej1:
-	
 
 
 
 
-	mov	cl,BYTE [esi]
+
+ mov cl,BYTE [esi]
 L$012ejend:
-	xor	eax,ecx
-	xor	ebx,edx
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	DWORD [8+esp],eax
-	mov	DWORD [12+esp],ebx
-	call	L$_CAST_encrypt_begin
-	mov	eax,DWORD [8+esp]
-	mov	ebx,DWORD [12+esp]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	DWORD [edi],eax
-	mov	DWORD [4+edi],ebx
-	jmp	NEAR L$005finish
+ xor eax,ecx
+ xor ebx,edx
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov DWORD [8+esp],eax
+ mov DWORD [12+esp],ebx
+ call L$_CAST_encrypt_begin
+ mov eax,DWORD [8+esp]
+ mov ebx,DWORD [12+esp]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov DWORD [edi],eax
+ mov DWORD [4+edi],ebx
+ jmp NEAR L$005finish
 L$002decrypt:
-	and	ebp,4294967288
-	mov	eax,DWORD [16+esp]
-	mov	ebx,DWORD [20+esp]
-	jz	NEAR L$016decrypt_finish
+ and ebp,4294967288
+ mov eax,DWORD [16+esp]
+ mov ebx,DWORD [20+esp]
+ jz NEAR L$016decrypt_finish
 L$017decrypt_loop:
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	DWORD [8+esp],eax
-	mov	DWORD [12+esp],ebx
-	call	L$_CAST_decrypt_begin
-	mov	eax,DWORD [8+esp]
-	mov	ebx,DWORD [12+esp]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	ecx,DWORD [16+esp]
-	mov	edx,DWORD [20+esp]
-	xor	ecx,eax
-	xor	edx,ebx
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	mov	DWORD [edi],ecx
-	mov	DWORD [4+edi],edx
-	mov	DWORD [16+esp],eax
-	mov	DWORD [20+esp],ebx
-	add	esi,8
-	add	edi,8
-	sub	ebp,8
-	jnz	NEAR L$017decrypt_loop
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov DWORD [8+esp],eax
+ mov DWORD [12+esp],ebx
+ call L$_CAST_decrypt_begin
+ mov eax,DWORD [8+esp]
+ mov ebx,DWORD [12+esp]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov ecx,DWORD [16+esp]
+ mov edx,DWORD [20+esp]
+ xor ecx,eax
+ xor edx,ebx
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ mov DWORD [edi],ecx
+ mov DWORD [4+edi],edx
+ mov DWORD [16+esp],eax
+ mov DWORD [20+esp],ebx
+ add esi,8
+ add edi,8
+ sub ebp,8
+ jnz NEAR L$017decrypt_loop
 L$016decrypt_finish:
-	mov	ebp,DWORD [52+esp]
-	and	ebp,7
-	jz	NEAR L$005finish
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	DWORD [8+esp],eax
-	mov	DWORD [12+esp],ebx
-	call	L$_CAST_decrypt_begin
-	mov	eax,DWORD [8+esp]
-	mov	ebx,DWORD [12+esp]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	mov	ecx,DWORD [16+esp]
-	mov	edx,DWORD [20+esp]
-	xor	ecx,eax
-	xor	edx,ebx
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
+ mov ebp,DWORD [52+esp]
+ and ebp,7
+ jz NEAR L$005finish
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov DWORD [8+esp],eax
+ mov DWORD [12+esp],ebx
+ call L$_CAST_decrypt_begin
+ mov eax,DWORD [8+esp]
+ mov ebx,DWORD [12+esp]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ mov ecx,DWORD [16+esp]
+ mov edx,DWORD [20+esp]
+ xor ecx,eax
+ xor edx,ebx
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
 L$018dj7:
-	ror	edx,16
-	mov	BYTE [6+edi],dl
-	shr	edx,16
+ ror edx,16
+ mov BYTE [6+edi],dl
+ shr edx,16
 L$019dj6:
-	mov	BYTE [5+edi],dh
+ mov BYTE [5+edi],dh
 L$020dj5:
-	mov	BYTE [4+edi],dl
+ mov BYTE [4+edi],dl
 L$021dj4:
-	mov	DWORD [edi],ecx
-	jmp	NEAR L$022djend
+ mov DWORD [edi],ecx
+ jmp NEAR L$022djend
 L$023dj3:
-	ror	ecx,16
-	mov	BYTE [2+edi],cl
-	shl	ecx,16
+ ror ecx,16
+ mov BYTE [2+edi],cl
+ shl ecx,16
 L$024dj2:
-	mov	BYTE [1+esi],ch
+ mov BYTE [1+esi],ch
 L$025dj1:
-	mov	BYTE [esi],cl
+ mov BYTE [esi],cl
 L$022djend:
-	jmp	NEAR L$005finish
+ jmp NEAR L$005finish
 L$005finish:
-	mov	ecx,DWORD [60+esp]
-	add	esp,24
-	mov	DWORD [ecx],eax
-	mov	DWORD [4+ecx],ebx
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-align	64
+ mov ecx,DWORD [60+esp]
+ add esp,24
+ mov DWORD [ecx],eax
+ mov DWORD [4+ecx],ebx
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+align 64
 L$007cbc_enc_jmp_table:
-dd	0
-dd	L$015ej1-L$006PIC_point
-dd	L$014ej2-L$006PIC_point
-dd	L$013ej3-L$006PIC_point
-dd	L$011ej4-L$006PIC_point
-dd	L$010ej5-L$006PIC_point
-dd	L$009ej6-L$006PIC_point
-dd	L$008ej7-L$006PIC_point
-align	64
+dd 0
+dd L$015ej1-L$006PIC_point
+dd L$014ej2-L$006PIC_point
+dd L$013ej3-L$006PIC_point
+dd L$011ej4-L$006PIC_point
+dd L$010ej5-L$006PIC_point
+dd L$009ej6-L$006PIC_point
+dd L$008ej7-L$006PIC_point
+align 64

+ 1767 - 1768
libs/openssl/crypto/des/asm/des_586.asm

@@ -1,1899 +1,1898 @@
-
 %ifidn __OUTPUT_FORMAT__,obj
-section	code	use32 class=code align=256
+section code use32 class=code align=256
 %elifidn __OUTPUT_FORMAT__,win32
 [email protected] equ 1
-section	.text	code align=256
+section .text code align=256
 %else
-section	.text	code
+section .text code
 %endif
-global	_DES_SPtrans
-align	16
+global _DES_SPtrans
+align 16
 __x86_DES_encrypt:
-	push	ecx
-	; Round 0
-	mov	eax,DWORD [ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [4+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 1
-	mov	eax,DWORD [8+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [12+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	; Round 2
-	mov	eax,DWORD [16+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [20+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 3
-	mov	eax,DWORD [24+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [28+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	; Round 4
-	mov	eax,DWORD [32+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [36+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 5
-	mov	eax,DWORD [40+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [44+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	; Round 6
-	mov	eax,DWORD [48+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [52+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 7
-	mov	eax,DWORD [56+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [60+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	; Round 8
-	mov	eax,DWORD [64+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [68+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 9
-	mov	eax,DWORD [72+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [76+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	; Round 10
-	mov	eax,DWORD [80+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [84+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 11
-	mov	eax,DWORD [88+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [92+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	; Round 12
-	mov	eax,DWORD [96+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [100+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 13
-	mov	eax,DWORD [104+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [108+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	; Round 14
-	mov	eax,DWORD [112+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [116+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 15
-	mov	eax,DWORD [120+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [124+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	add	esp,4
-	ret
-align	16
+ push ecx
+ ; Round 0
+ mov eax,DWORD [ecx]
+ xor ebx,ebx
+ mov edx,DWORD [4+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 1
+ mov eax,DWORD [8+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [12+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ ; Round 2
+ mov eax,DWORD [16+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [20+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 3
+ mov eax,DWORD [24+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [28+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ ; Round 4
+ mov eax,DWORD [32+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [36+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 5
+ mov eax,DWORD [40+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [44+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ ; Round 6
+ mov eax,DWORD [48+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [52+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 7
+ mov eax,DWORD [56+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [60+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ ; Round 8
+ mov eax,DWORD [64+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [68+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 9
+ mov eax,DWORD [72+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [76+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ ; Round 10
+ mov eax,DWORD [80+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [84+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 11
+ mov eax,DWORD [88+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [92+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ ; Round 12
+ mov eax,DWORD [96+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [100+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 13
+ mov eax,DWORD [104+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [108+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ ; Round 14
+ mov eax,DWORD [112+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [116+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 15
+ mov eax,DWORD [120+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [124+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ add esp,4
+ ret
+align 16
 __x86_DES_decrypt:
-	push	ecx
-	; Round 15
-	mov	eax,DWORD [120+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [124+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 14
-	mov	eax,DWORD [112+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [116+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	; Round 13
-	mov	eax,DWORD [104+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [108+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 12
-	mov	eax,DWORD [96+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [100+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	; Round 11
-	mov	eax,DWORD [88+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [92+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 10
-	mov	eax,DWORD [80+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [84+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	; Round 9
-	mov	eax,DWORD [72+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [76+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 8
-	mov	eax,DWORD [64+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [68+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	; Round 7
-	mov	eax,DWORD [56+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [60+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 6
-	mov	eax,DWORD [48+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [52+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	; Round 5
-	mov	eax,DWORD [40+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [44+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 4
-	mov	eax,DWORD [32+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [36+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	; Round 3
-	mov	eax,DWORD [24+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [28+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 2
-	mov	eax,DWORD [16+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [20+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	; Round 1
-	mov	eax,DWORD [8+ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [12+ecx]
-	xor	eax,esi
-	xor	ecx,ecx
-	xor	edx,esi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	edi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	edi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	edi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	edi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	edi,DWORD [0x600+ebx*1+ebp]
-	xor	edi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	edi,DWORD [0x400+eax*1+ebp]
-	xor	edi,DWORD [0x500+edx*1+ebp]
-	; Round 0
-	mov	eax,DWORD [ecx]
-	xor	ebx,ebx
-	mov	edx,DWORD [4+ecx]
-	xor	eax,edi
-	xor	ecx,ecx
-	xor	edx,edi
-	and	eax,0xfcfcfcfc
-	and	edx,0xcfcfcfcf
-	mov	bl,al
-	mov	cl,ah
-	ror	edx,4
-	xor	esi,DWORD [ebx*1+ebp]
-	mov	bl,dl
-	xor	esi,DWORD [0x200+ecx*1+ebp]
-	mov	cl,dh
-	shr	eax,16
-	xor	esi,DWORD [0x100+ebx*1+ebp]
-	mov	bl,ah
-	shr	edx,16
-	xor	esi,DWORD [0x300+ecx*1+ebp]
-	mov	cl,dh
-	and	eax,0xff
-	and	edx,0xff
-	xor	esi,DWORD [0x600+ebx*1+ebp]
-	xor	esi,DWORD [0x700+ecx*1+ebp]
-	mov	ecx,DWORD [esp]
-	xor	esi,DWORD [0x400+eax*1+ebp]
-	xor	esi,DWORD [0x500+edx*1+ebp]
-	add	esp,4
-	ret
-global	_DES_encrypt1
-align	16
+ push ecx
+ ; Round 15
+ mov eax,DWORD [120+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [124+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 14
+ mov eax,DWORD [112+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [116+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ ; Round 13
+ mov eax,DWORD [104+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [108+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 12
+ mov eax,DWORD [96+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [100+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ ; Round 11
+ mov eax,DWORD [88+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [92+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 10
+ mov eax,DWORD [80+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [84+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ ; Round 9
+ mov eax,DWORD [72+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [76+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 8
+ mov eax,DWORD [64+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [68+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ ; Round 7
+ mov eax,DWORD [56+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [60+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 6
+ mov eax,DWORD [48+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [52+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ ; Round 5
+ mov eax,DWORD [40+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [44+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 4
+ mov eax,DWORD [32+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [36+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ ; Round 3
+ mov eax,DWORD [24+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [28+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 2
+ mov eax,DWORD [16+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [20+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ ; Round 1
+ mov eax,DWORD [8+ecx]
+ xor ebx,ebx
+ mov edx,DWORD [12+ecx]
+ xor eax,esi
+ xor ecx,ecx
+ xor edx,esi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor edi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor edi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor edi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor edi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor edi,DWORD [0x600+ebx*1+ebp]
+ xor edi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor edi,DWORD [0x400+eax*1+ebp]
+ xor edi,DWORD [0x500+edx*1+ebp]
+ ; Round 0
+ mov eax,DWORD [ecx]
+ xor ebx,ebx
+ mov edx,DWORD [4+ecx]
+ xor eax,edi
+ xor ecx,ecx
+ xor edx,edi
+ and eax,0xfcfcfcfc
+ and edx,0xcfcfcfcf
+ mov bl,al
+ mov cl,ah
+ ror edx,4
+ xor esi,DWORD [ebx*1+ebp]
+ mov bl,dl
+ xor esi,DWORD [0x200+ecx*1+ebp]
+ mov cl,dh
+ shr eax,16
+ xor esi,DWORD [0x100+ebx*1+ebp]
+ mov bl,ah
+ shr edx,16
+ xor esi,DWORD [0x300+ecx*1+ebp]
+ mov cl,dh
+ and eax,0xff
+ and edx,0xff
+ xor esi,DWORD [0x600+ebx*1+ebp]
+ xor esi,DWORD [0x700+ecx*1+ebp]
+ mov ecx,DWORD [esp]
+ xor esi,DWORD [0x400+eax*1+ebp]
+ xor esi,DWORD [0x500+edx*1+ebp]
+ add esp,4
+ ret
+global _DES_encrypt1
+align 16
 _DES_encrypt1:
 L$_DES_encrypt1_begin:
-	push	esi
-	push	edi
-	; 
-	; Load the 2 words
-	mov	esi,DWORD [12+esp]
-	xor	ecx,ecx
-	push	ebx
-	push	ebp
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [28+esp]
-	mov	edi,DWORD [4+esi]
-	; 
-	; IP
-	rol	eax,4
-	mov	esi,eax
-	xor	eax,edi
-	and	eax,0xf0f0f0f0
-	xor	esi,eax
-	xor	edi,eax
-	; 
-	rol	edi,20
-	mov	eax,edi
-	xor	edi,esi
-	and	edi,0xfff0000f
-	xor	eax,edi
-	xor	esi,edi
-	; 
-	rol	eax,14
-	mov	edi,eax
-	xor	eax,esi
-	and	eax,0x33333333
-	xor	edi,eax
-	xor	esi,eax
-	; 
-	rol	esi,22
-	mov	eax,esi
-	xor	esi,edi
-	and	esi,0x03fc03fc
-	xor	eax,esi
-	xor	edi,esi
-	; 
-	rol	eax,9
-	mov	esi,eax
-	xor	eax,edi
-	and	eax,0xaaaaaaaa
-	xor	esi,eax
-	xor	edi,eax
-	; 
-	rol	edi,1
-	call	L$000pic_point
+ push esi
+ push edi
+ ;
+ ; Load the 2 words
+ mov esi,DWORD [12+esp]
+ xor ecx,ecx
+ push ebx
+ push ebp
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [28+esp]
+ mov edi,DWORD [4+esi]
+ ;
+ ; IP
+ rol eax,4
+ mov esi,eax
+ xor eax,edi
+ and eax,0xf0f0f0f0
+ xor esi,eax
+ xor edi,eax
+ ;
+ rol edi,20
+ mov eax,edi
+ xor edi,esi
+ and edi,0xfff0000f
+ xor eax,edi
+ xor esi,edi
+ ;
+ rol eax,14
+ mov edi,eax
+ xor eax,esi
+ and eax,0x33333333
+ xor edi,eax
+ xor esi,eax
+ ;
+ rol esi,22
+ mov eax,esi
+ xor esi,edi
+ and esi,0x03fc03fc
+ xor eax,esi
+ xor edi,esi
+ ;
+ rol eax,9
+ mov esi,eax
+ xor eax,edi
+ and eax,0xaaaaaaaa
+ xor esi,eax
+ xor edi,eax
+ ;
+ rol edi,1
+ call L$000pic_point
 L$000pic_point:
-	pop	ebp
-	lea	ebp,[(L$des_sptrans-L$000pic_point)+ebp]
-	mov	ecx,DWORD [24+esp]
-	cmp	ebx,0
-	je	NEAR L$001decrypt
-	call	__x86_DES_encrypt
-	jmp	NEAR L$002done
+ pop ebp
+ lea ebp,[(L$des_sptrans-L$000pic_point)+ebp]
+ mov ecx,DWORD [24+esp]
+ cmp ebx,0
+ je NEAR L$001decrypt
+ call __x86_DES_encrypt
+ jmp NEAR L$002done
 L$001decrypt:
-	call	__x86_DES_decrypt
+ call __x86_DES_decrypt
 L$002done:
-	; 
-	; FP
-	mov	edx,DWORD [20+esp]
-	ror	esi,1
-	mov	eax,edi
-	xor	edi,esi
-	and	edi,0xaaaaaaaa
-	xor	eax,edi
-	xor	esi,edi
-	; 
-	rol	eax,23
-	mov	edi,eax
-	xor	eax,esi
-	and	eax,0x03fc03fc
-	xor	edi,eax
-	xor	esi,eax
-	; 
-	rol	edi,10
-	mov	eax,edi
-	xor	edi,esi
-	and	edi,0x33333333
-	xor	eax,edi
-	xor	esi,edi
-	; 
-	rol	esi,18
-	mov	edi,esi
-	xor	esi,eax
-	and	esi,0xfff0000f
-	xor	edi,esi
-	xor	eax,esi
-	; 
-	rol	edi,12
-	mov	esi,edi
-	xor	edi,eax
-	and	edi,0xf0f0f0f0
-	xor	esi,edi
-	xor	eax,edi
-	; 
-	ror	eax,4
-	mov	DWORD [edx],eax
-	mov	DWORD [4+edx],esi
-	pop	ebp
-	pop	ebx
-	pop	edi
-	pop	esi
-	ret
-global	_DES_encrypt2
-align	16
+ ;
+ ; FP
+ mov edx,DWORD [20+esp]
+ ror esi,1
+ mov eax,edi
+ xor edi,esi
+ and edi,0xaaaaaaaa
+ xor eax,edi
+ xor esi,edi
+ ;
+ rol eax,23
+ mov edi,eax
+ xor eax,esi
+ and eax,0x03fc03fc
+ xor edi,eax
+ xor esi,eax
+ ;
+ rol edi,10
+ mov eax,edi
+ xor edi,esi
+ and edi,0x33333333
+ xor eax,edi
+ xor esi,edi
+ ;
+ rol esi,18
+ mov edi,esi
+ xor esi,eax
+ and esi,0xfff0000f
+ xor edi,esi
+ xor eax,esi
+ ;
+ rol edi,12
+ mov esi,edi
+ xor edi,eax
+ and edi,0xf0f0f0f0
+ xor esi,edi
+ xor eax,edi
+ ;
+ ror eax,4
+ mov DWORD [edx],eax
+ mov DWORD [4+edx],esi
+ pop ebp
+ pop ebx
+ pop edi
+ pop esi
+ ret
+global _DES_encrypt2
+align 16
 _DES_encrypt2:
 L$_DES_encrypt2_begin:
-	push	esi
-	push	edi
-	; 
-	; Load the 2 words
-	mov	eax,DWORD [12+esp]
-	xor	ecx,ecx
-	push	ebx
-	push	ebp
-	mov	esi,DWORD [eax]
-	mov	ebx,DWORD [28+esp]
-	rol	esi,3
-	mov	edi,DWORD [4+eax]
-	rol	edi,3
-	call	L$003pic_point
+ push esi
+ push edi
+ ;
+ ; Load the 2 words
+ mov eax,DWORD [12+esp]
+ xor ecx,ecx
+ push ebx
+ push ebp
+ mov esi,DWORD [eax]
+ mov ebx,DWORD [28+esp]
+ rol esi,3
+ mov edi,DWORD [4+eax]
+ rol edi,3
+ call L$003pic_point
 L$003pic_point:
-	pop	ebp
-	lea	ebp,[(L$des_sptrans-L$003pic_point)+ebp]
-	mov	ecx,DWORD [24+esp]
-	cmp	ebx,0
-	je	NEAR L$004decrypt
-	call	__x86_DES_encrypt
-	jmp	NEAR L$005done
+ pop ebp
+ lea ebp,[(L$des_sptrans-L$003pic_point)+ebp]
+ mov ecx,DWORD [24+esp]
+ cmp ebx,0
+ je NEAR L$004decrypt
+ call __x86_DES_encrypt
+ jmp NEAR L$005done
 L$004decrypt:
-	call	__x86_DES_decrypt
+ call __x86_DES_decrypt
 L$005done:
-	; 
-	; Fixup
-	ror	edi,3
-	mov	eax,DWORD [20+esp]
-	ror	esi,3
-	mov	DWORD [eax],edi
-	mov	DWORD [4+eax],esi
-	pop	ebp
-	pop	ebx
-	pop	edi
-	pop	esi
-	ret
-global	_DES_encrypt3
-align	16
+ ;
+ ; Fixup
+ ror edi,3
+ mov eax,DWORD [20+esp]
+ ror esi,3
+ mov DWORD [eax],edi
+ mov DWORD [4+eax],esi
+ pop ebp
+ pop ebx
+ pop edi
+ pop esi
+ ret
+global _DES_encrypt3
+align 16
 _DES_encrypt3:
 L$_DES_encrypt3_begin:
-	push	ebx
-	mov	ebx,DWORD [8+esp]
-	push	ebp
-	push	esi
-	push	edi
-	; 
-	; Load the data words
-	mov	edi,DWORD [ebx]
-	mov	esi,DWORD [4+ebx]
-	sub	esp,12
-	; 
-	; IP
-	rol	edi,4
-	mov	edx,edi
-	xor	edi,esi
-	and	edi,0xf0f0f0f0
-	xor	edx,edi
-	xor	esi,edi
-	; 
-	rol	esi,20
-	mov	edi,esi
-	xor	esi,edx
-	and	esi,0xfff0000f
-	xor	edi,esi
-	xor	edx,esi
-	; 
-	rol	edi,14
-	mov	esi,edi
-	xor	edi,edx
-	and	edi,0x33333333
-	xor	esi,edi
-	xor	edx,edi
-	; 
-	rol	edx,22
-	mov	edi,edx
-	xor	edx,esi
-	and	edx,0x03fc03fc
-	xor	edi,edx
-	xor	esi,edx
-	; 
-	rol	edi,9
-	mov	edx,edi
-	xor	edi,esi
-	and	edi,0xaaaaaaaa
-	xor	edx,edi
-	xor	esi,edi
-	; 
-	ror	edx,3
-	ror	esi,2
-	mov	DWORD [4+ebx],esi
-	mov	eax,DWORD [36+esp]
-	mov	DWORD [ebx],edx
-	mov	edi,DWORD [40+esp]
-	mov	esi,DWORD [44+esp]
-	mov	DWORD [8+esp],DWORD 1
-	mov	DWORD [4+esp],eax
-	mov	DWORD [esp],ebx
-	call	L$_DES_encrypt2_begin
-	mov	DWORD [8+esp],DWORD 0
-	mov	DWORD [4+esp],edi
-	mov	DWORD [esp],ebx
-	call	L$_DES_encrypt2_begin
-	mov	DWORD [8+esp],DWORD 1
-	mov	DWORD [4+esp],esi
-	mov	DWORD [esp],ebx
-	call	L$_DES_encrypt2_begin
-	add	esp,12
-	mov	edi,DWORD [ebx]
-	mov	esi,DWORD [4+ebx]
-	; 
-	; FP
-	rol	esi,2
-	rol	edi,3
-	mov	eax,edi
-	xor	edi,esi
-	and	edi,0xaaaaaaaa
-	xor	eax,edi
-	xor	esi,edi
-	; 
-	rol	eax,23
-	mov	edi,eax
-	xor	eax,esi
-	and	eax,0x03fc03fc
-	xor	edi,eax
-	xor	esi,eax
-	; 
-	rol	edi,10
-	mov	eax,edi
-	xor	edi,esi
-	and	edi,0x33333333
-	xor	eax,edi
-	xor	esi,edi
-	; 
-	rol	esi,18
-	mov	edi,esi
-	xor	esi,eax
-	and	esi,0xfff0000f
-	xor	edi,esi
-	xor	eax,esi
-	; 
-	rol	edi,12
-	mov	esi,edi
-	xor	edi,eax
-	and	edi,0xf0f0f0f0
-	xor	esi,edi
-	xor	eax,edi
-	; 
-	ror	eax,4
-	mov	DWORD [ebx],eax
-	mov	DWORD [4+ebx],esi
-	pop	edi
-	pop	esi
-	pop	ebp
-	pop	ebx
-	ret
-global	_DES_decrypt3
-align	16
+ push ebx
+ mov ebx,DWORD [8+esp]
+ push ebp
+ push esi
+ push edi
+ ;
+ ; Load the data words
+ mov edi,DWORD [ebx]
+ mov esi,DWORD [4+ebx]
+ sub esp,12
+ ;
+ ; IP
+ rol edi,4
+ mov edx,edi
+ xor edi,esi
+ and edi,0xf0f0f0f0
+ xor edx,edi
+ xor esi,edi
+ ;
+ rol esi,20
+ mov edi,esi
+ xor esi,edx
+ and esi,0xfff0000f
+ xor edi,esi
+ xor edx,esi
+ ;
+ rol edi,14
+ mov esi,edi
+ xor edi,edx
+ and edi,0x33333333
+ xor esi,edi
+ xor edx,edi
+ ;
+ rol edx,22
+ mov edi,edx
+ xor edx,esi
+ and edx,0x03fc03fc
+ xor edi,edx
+ xor esi,edx
+ ;
+ rol edi,9
+ mov edx,edi
+ xor edi,esi
+ and edi,0xaaaaaaaa
+ xor edx,edi
+ xor esi,edi
+ ;
+ ror edx,3
+ ror esi,2
+ mov DWORD [4+ebx],esi
+ mov eax,DWORD [36+esp]
+ mov DWORD [ebx],edx
+ mov edi,DWORD [40+esp]
+ mov esi,DWORD [44+esp]
+ mov DWORD [8+esp],DWORD 1
+ mov DWORD [4+esp],eax
+ mov DWORD [esp],ebx
+ call L$_DES_encrypt2_begin
+ mov DWORD [8+esp],DWORD 0
+ mov DWORD [4+esp],edi
+ mov DWORD [esp],ebx
+ call L$_DES_encrypt2_begin
+ mov DWORD [8+esp],DWORD 1
+ mov DWORD [4+esp],esi
+ mov DWORD [esp],ebx
+ call L$_DES_encrypt2_begin
+ add esp,12
+ mov edi,DWORD [ebx]
+ mov esi,DWORD [4+ebx]
+ ;
+ ; FP
+ rol esi,2
+ rol edi,3
+ mov eax,edi
+ xor edi,esi
+ and edi,0xaaaaaaaa
+ xor eax,edi
+ xor esi,edi
+ ;
+ rol eax,23
+ mov edi,eax
+ xor eax,esi
+ and eax,0x03fc03fc
+ xor edi,eax
+ xor esi,eax
+ ;
+ rol edi,10
+ mov eax,edi
+ xor edi,esi
+ and edi,0x33333333
+ xor eax,edi
+ xor esi,edi
+ ;
+ rol esi,18
+ mov edi,esi
+ xor esi,eax
+ and esi,0xfff0000f
+ xor edi,esi
+ xor eax,esi
+ ;
+ rol edi,12
+ mov esi,edi
+ xor edi,eax
+ and edi,0xf0f0f0f0
+ xor esi,edi
+ xor eax,edi
+ ;
+ ror eax,4
+ mov DWORD [ebx],eax
+ mov DWORD [4+ebx],esi
+ pop edi
+ pop esi
+ pop ebp
+ pop ebx
+ ret
+global _DES_decrypt3
+align 16
 _DES_decrypt3:
 L$_DES_decrypt3_begin:
-	push	ebx
-	mov	ebx,DWORD [8+esp]
-	push	ebp
-	push	esi
-	push	edi
-	; 
-	; Load the data words
-	mov	edi,DWORD [ebx]
-	mov	esi,DWORD [4+ebx]
-	sub	esp,12
-	; 
-	; IP
-	rol	edi,4
-	mov	edx,edi
-	xor	edi,esi
-	and	edi,0xf0f0f0f0
-	xor	edx,edi
-	xor	esi,edi
-	; 
-	rol	esi,20
-	mov	edi,esi
-	xor	esi,edx
-	and	esi,0xfff0000f
-	xor	edi,esi
-	xor	edx,esi
-	; 
-	rol	edi,14
-	mov	esi,edi
-	xor	edi,edx
-	and	edi,0x33333333
-	xor	esi,edi
-	xor	edx,edi
-	; 
-	rol	edx,22
-	mov	edi,edx
-	xor	edx,esi
-	and	edx,0x03fc03fc
-	xor	edi,edx
-	xor	esi,edx
-	; 
-	rol	edi,9
-	mov	edx,edi
-	xor	edi,esi
-	and	edi,0xaaaaaaaa
-	xor	edx,edi
-	xor	esi,edi
-	; 
-	ror	edx,3
-	ror	esi,2
-	mov	DWORD [4+ebx],esi
-	mov	esi,DWORD [36+esp]
-	mov	DWORD [ebx],edx
-	mov	edi,DWORD [40+esp]
-	mov	eax,DWORD [44+esp]
-	mov	DWORD [8+esp],DWORD 0
-	mov	DWORD [4+esp],eax
-	mov	DWORD [esp],ebx
-	call	L$_DES_encrypt2_begin
-	mov	DWORD [8+esp],DWORD 1
-	mov	DWORD [4+esp],edi
-	mov	DWORD [esp],ebx
-	call	L$_DES_encrypt2_begin
-	mov	DWORD [8+esp],DWORD 0
-	mov	DWORD [4+esp],esi
-	mov	DWORD [esp],ebx
-	call	L$_DES_encrypt2_begin
-	add	esp,12
-	mov	edi,DWORD [ebx]
-	mov	esi,DWORD [4+ebx]
-	; 
-	; FP
-	rol	esi,2
-	rol	edi,3
-	mov	eax,edi
-	xor	edi,esi
-	and	edi,0xaaaaaaaa
-	xor	eax,edi
-	xor	esi,edi
-	; 
-	rol	eax,23
-	mov	edi,eax
-	xor	eax,esi
-	and	eax,0x03fc03fc
-	xor	edi,eax
-	xor	esi,eax
-	; 
-	rol	edi,10
-	mov	eax,edi
-	xor	edi,esi
-	and	edi,0x33333333
-	xor	eax,edi
-	xor	esi,edi
-	; 
-	rol	esi,18
-	mov	edi,esi
-	xor	esi,eax
-	and	esi,0xfff0000f
-	xor	edi,esi
-	xor	eax,esi
-	; 
-	rol	edi,12
-	mov	esi,edi
-	xor	edi,eax
-	and	edi,0xf0f0f0f0
-	xor	esi,edi
-	xor	eax,edi
-	; 
-	ror	eax,4
-	mov	DWORD [ebx],eax
-	mov	DWORD [4+ebx],esi
-	pop	edi
-	pop	esi
-	pop	ebp
-	pop	ebx
-	ret
-global	_DES_ncbc_encrypt
-align	16
+ push ebx
+ mov ebx,DWORD [8+esp]
+ push ebp
+ push esi
+ push edi
+ ;
+ ; Load the data words
+ mov edi,DWORD [ebx]
+ mov esi,DWORD [4+ebx]
+ sub esp,12
+ ;
+ ; IP
+ rol edi,4
+ mov edx,edi
+ xor edi,esi
+ and edi,0xf0f0f0f0
+ xor edx,edi
+ xor esi,edi
+ ;
+ rol esi,20
+ mov edi,esi
+ xor esi,edx
+ and esi,0xfff0000f
+ xor edi,esi
+ xor edx,esi
+ ;
+ rol edi,14
+ mov esi,edi
+ xor edi,edx
+ and edi,0x33333333
+ xor esi,edi
+ xor edx,edi
+ ;
+ rol edx,22
+ mov edi,edx
+ xor edx,esi
+ and edx,0x03fc03fc
+ xor edi,edx
+ xor esi,edx
+ ;
+ rol edi,9
+ mov edx,edi
+ xor edi,esi
+ and edi,0xaaaaaaaa
+ xor edx,edi
+ xor esi,edi
+ ;
+ ror edx,3
+ ror esi,2
+ mov DWORD [4+ebx],esi
+ mov esi,DWORD [36+esp]
+ mov DWORD [ebx],edx
+ mov edi,DWORD [40+esp]
+ mov eax,DWORD [44+esp]
+ mov DWORD [8+esp],DWORD 0
+ mov DWORD [4+esp],eax
+ mov DWORD [esp],ebx
+ call L$_DES_encrypt2_begin
+ mov DWORD [8+esp],DWORD 1
+ mov DWORD [4+esp],edi
+ mov DWORD [esp],ebx
+ call L$_DES_encrypt2_begin
+ mov DWORD [8+esp],DWORD 0
+ mov DWORD [4+esp],esi
+ mov DWORD [esp],ebx
+ call L$_DES_encrypt2_begin
+ add esp,12
+ mov edi,DWORD [ebx]
+ mov esi,DWORD [4+ebx]
+ ;
+ ; FP
+ rol esi,2
+ rol edi,3
+ mov eax,edi
+ xor edi,esi
+ and edi,0xaaaaaaaa
+ xor eax,edi
+ xor esi,edi
+ ;
+ rol eax,23
+ mov edi,eax
+ xor eax,esi
+ and eax,0x03fc03fc
+ xor edi,eax
+ xor esi,eax
+ ;
+ rol edi,10
+ mov eax,edi
+ xor edi,esi
+ and edi,0x33333333
+ xor eax,edi
+ xor esi,edi
+ ;
+ rol esi,18
+ mov edi,esi
+ xor esi,eax
+ and esi,0xfff0000f
+ xor edi,esi
+ xor eax,esi
+ ;
+ rol edi,12
+ mov esi,edi
+ xor edi,eax
+ and edi,0xf0f0f0f0
+ xor esi,edi
+ xor eax,edi
+ ;
+ ror eax,4
+ mov DWORD [ebx],eax
+ mov DWORD [4+ebx],esi
+ pop edi
+ pop esi
+ pop ebp
+ pop ebx
+ ret
+global _DES_ncbc_encrypt
+align 16
 _DES_ncbc_encrypt:
 L$_DES_ncbc_encrypt_begin:
-	; 
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	mov	ebp,DWORD [28+esp]
-	; getting iv ptr from parameter 4
-	mov	ebx,DWORD [36+esp]
-	mov	esi,DWORD [ebx]
-	mov	edi,DWORD [4+ebx]
-	push	edi
-	push	esi
-	push	edi
-	push	esi
-	mov	ebx,esp
-	mov	esi,DWORD [36+esp]
-	mov	edi,DWORD [40+esp]
-	; getting encrypt flag from parameter 5
-	mov	ecx,DWORD [56+esp]
-	; get and push parameter 5
-	push	ecx
-	; get and push parameter 3
-	mov	eax,DWORD [52+esp]
-	push	eax
-	push	ebx
-	cmp	ecx,0
-	jz	NEAR L$006decrypt
-	and	ebp,4294967288
-	mov	eax,DWORD [12+esp]
-	mov	ebx,DWORD [16+esp]
-	jz	NEAR L$007encrypt_finish
+ ;
+ push ebp
+ push ebx
+ push esi
+ push edi
+ mov ebp,DWORD [28+esp]
+ ; getting iv ptr from parameter 4
+ mov ebx,DWORD [36+esp]
+ mov esi,DWORD [ebx]
+ mov edi,DWORD [4+ebx]
+ push edi
+ push esi
+ push edi
+ push esi
+ mov ebx,esp
+ mov esi,DWORD [36+esp]
+ mov edi,DWORD [40+esp]
+ ; getting encrypt flag from parameter 5
+ mov ecx,DWORD [56+esp]
+ ; get and push parameter 5
+ push ecx
+ ; get and push parameter 3
+ mov eax,DWORD [52+esp]
+ push eax
+ push ebx
+ cmp ecx,0
+ jz NEAR L$006decrypt
+ and ebp,4294967288
+ mov eax,DWORD [12+esp]
+ mov ebx,DWORD [16+esp]
+ jz NEAR L$007encrypt_finish
 L$008encrypt_loop:
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [4+esi]
-	xor	eax,ecx
-	xor	ebx,edx
-	mov	DWORD [12+esp],eax
-	mov	DWORD [16+esp],ebx
-	call	L$_DES_encrypt1_begin
-	mov	eax,DWORD [12+esp]
-	mov	ebx,DWORD [16+esp]
-	mov	DWORD [edi],eax
-	mov	DWORD [4+edi],ebx
-	add	esi,8
-	add	edi,8
-	sub	ebp,8
-	jnz	NEAR L$008encrypt_loop
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [4+esi]
+ xor eax,ecx
+ xor ebx,edx
+ mov DWORD [12+esp],eax
+ mov DWORD [16+esp],ebx
+ call L$_DES_encrypt1_begin
+ mov eax,DWORD [12+esp]
+ mov ebx,DWORD [16+esp]
+ mov DWORD [edi],eax
+ mov DWORD [4+edi],ebx
+ add esi,8
+ add edi,8
+ sub ebp,8
+ jnz NEAR L$008encrypt_loop
 L$007encrypt_finish:
-	mov	ebp,DWORD [56+esp]
-	and	ebp,7
-	jz	NEAR L$009finish
-	call	L$010PIC_point
+ mov ebp,DWORD [56+esp]
+ and ebp,7
+ jz NEAR L$009finish
+ call L$010PIC_point
 L$010PIC_point:
-	pop	edx
-	lea	ecx,[(L$011cbc_enc_jmp_table-L$010PIC_point)+edx]
-	mov	ebp,DWORD [ebp*4+ecx]
-	add	ebp,edx
-	xor	ecx,ecx
-	xor	edx,edx
-	jmp	ebp
+ pop edx
+ lea ecx,[(L$011cbc_enc_jmp_table-L$010PIC_point)+edx]
+ mov ebp,DWORD [ebp*4+ecx]
+ add ebp,edx
+ xor ecx,ecx
+ xor edx,edx
+ jmp ebp
 L$012ej7:
-	
 
 
 
 
-	mov	dh,BYTE [6+esi]
-	shl	edx,8
+
+ mov dh,BYTE [6+esi]
+ shl edx,8
 L$013ej6:
-	
 
 
 
 
-	mov	dh,BYTE [5+esi]
+
+ mov dh,BYTE [5+esi]
 L$014ej5:
-	
 
 
 
 
-	mov	dl,BYTE [4+esi]
+
+ mov dl,BYTE [4+esi]
 L$015ej4:
-	
 
 
 
 
-	mov	ecx,DWORD [esi]
-	jmp	NEAR L$016ejend
+
+ mov ecx,DWORD [esi]
+ jmp NEAR L$016ejend
 L$017ej3:
-	
 
 
 
 
-	mov	ch,BYTE [2+esi]
-	shl	ecx,8
+
+ mov ch,BYTE [2+esi]
+ shl ecx,8
 L$018ej2:
-	
 
 
 
 
-	mov	ch,BYTE [1+esi]
+
+ mov ch,BYTE [1+esi]
 L$019ej1:
-	
 
 
 
 
-	mov	cl,BYTE [esi]
+
+ mov cl,BYTE [esi]
 L$016ejend:
-	xor	eax,ecx
-	xor	ebx,edx
-	mov	DWORD [12+esp],eax
-	mov	DWORD [16+esp],ebx
-	call	L$_DES_encrypt1_begin
-	mov	eax,DWORD [12+esp]
-	mov	ebx,DWORD [16+esp]
-	mov	DWORD [edi],eax
-	mov	DWORD [4+edi],ebx
-	jmp	NEAR L$009finish
+ xor eax,ecx
+ xor ebx,edx
+ mov DWORD [12+esp],eax
+ mov DWORD [16+esp],ebx
+ call L$_DES_encrypt1_begin
+ mov eax,DWORD [12+esp]
+ mov ebx,DWORD [16+esp]
+ mov DWORD [edi],eax
+ mov DWORD [4+edi],ebx
+ jmp NEAR L$009finish
 L$006decrypt:
-	and	ebp,4294967288
-	mov	eax,DWORD [20+esp]
-	mov	ebx,DWORD [24+esp]
-	jz	NEAR L$020decrypt_finish
+ and ebp,4294967288
+ mov eax,DWORD [20+esp]
+ mov ebx,DWORD [24+esp]
+ jz NEAR L$020decrypt_finish
 L$021decrypt_loop:
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	mov	DWORD [12+esp],eax
-	mov	DWORD [16+esp],ebx
-	call	L$_DES_encrypt1_begin
-	mov	eax,DWORD [12+esp]
-	mov	ebx,DWORD [16+esp]
-	mov	ecx,DWORD [20+esp]
-	mov	edx,DWORD [24+esp]
-	xor	ecx,eax
-	xor	edx,ebx
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	mov	DWORD [edi],ecx
-	mov	DWORD [4+edi],edx
-	mov	DWORD [20+esp],eax
-	mov	DWORD [24+esp],ebx
-	add	esi,8
-	add	edi,8
-	sub	ebp,8
-	jnz	NEAR L$021decrypt_loop
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ mov DWORD [12+esp],eax
+ mov DWORD [16+esp],ebx
+ call L$_DES_encrypt1_begin
+ mov eax,DWORD [12+esp]
+ mov ebx,DWORD [16+esp]
+ mov ecx,DWORD [20+esp]
+ mov edx,DWORD [24+esp]
+ xor ecx,eax
+ xor edx,ebx
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ mov DWORD [edi],ecx
+ mov DWORD [4+edi],edx
+ mov DWORD [20+esp],eax
+ mov DWORD [24+esp],ebx
+ add esi,8
+ add edi,8
+ sub ebp,8
+ jnz NEAR L$021decrypt_loop
 L$020decrypt_finish:
-	mov	ebp,DWORD [56+esp]
-	and	ebp,7
-	jz	NEAR L$009finish
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	mov	DWORD [12+esp],eax
-	mov	DWORD [16+esp],ebx
-	call	L$_DES_encrypt1_begin
-	mov	eax,DWORD [12+esp]
-	mov	ebx,DWORD [16+esp]
-	mov	ecx,DWORD [20+esp]
-	mov	edx,DWORD [24+esp]
-	xor	ecx,eax
-	xor	edx,ebx
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
+ mov ebp,DWORD [56+esp]
+ and ebp,7
+ jz NEAR L$009finish
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ mov DWORD [12+esp],eax
+ mov DWORD [16+esp],ebx
+ call L$_DES_encrypt1_begin
+ mov eax,DWORD [12+esp]
+ mov ebx,DWORD [16+esp]
+ mov ecx,DWORD [20+esp]
+ mov edx,DWORD [24+esp]
+ xor ecx,eax
+ xor edx,ebx
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
 L$022dj7:
-	ror	edx,16
-	mov	BYTE [6+edi],dl
-	shr	edx,16
+ ror edx,16
+ mov BYTE [6+edi],dl
+ shr edx,16
 L$023dj6:
-	mov	BYTE [5+edi],dh
+ mov BYTE [5+edi],dh
 L$024dj5:
-	mov	BYTE [4+edi],dl
+ mov BYTE [4+edi],dl
 L$025dj4:
-	mov	DWORD [edi],ecx
-	jmp	NEAR L$026djend
+ mov DWORD [edi],ecx
+ jmp NEAR L$026djend
 L$027dj3:
-	ror	ecx,16
-	mov	BYTE [2+edi],cl
-	shl	ecx,16
+ ror ecx,16
+ mov BYTE [2+edi],cl
+ shl ecx,16
 L$028dj2:
-	mov	BYTE [1+esi],ch
+ mov BYTE [1+esi],ch
 L$029dj1:
-	mov	BYTE [esi],cl
+ mov BYTE [esi],cl
 L$026djend:
-	jmp	NEAR L$009finish
+ jmp NEAR L$009finish
 L$009finish:
-	mov	ecx,DWORD [64+esp]
-	add	esp,28
-	mov	DWORD [ecx],eax
-	mov	DWORD [4+ecx],ebx
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-align	64
+ mov ecx,DWORD [64+esp]
+ add esp,28
+ mov DWORD [ecx],eax
+ mov DWORD [4+ecx],ebx
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+align 64
 L$011cbc_enc_jmp_table:
-dd	0
-dd	L$019ej1-L$010PIC_point
-dd	L$018ej2-L$010PIC_point
-dd	L$017ej3-L$010PIC_point
-dd	L$015ej4-L$010PIC_point
-dd	L$014ej5-L$010PIC_point
-dd	L$013ej6-L$010PIC_point
-dd	L$012ej7-L$010PIC_point
-align	64
-global	_DES_ede3_cbc_encrypt
-align	16
+dd 0
+dd L$019ej1-L$010PIC_point
+dd L$018ej2-L$010PIC_point
+dd L$017ej3-L$010PIC_point
+dd L$015ej4-L$010PIC_point
+dd L$014ej5-L$010PIC_point
+dd L$013ej6-L$010PIC_point
+dd L$012ej7-L$010PIC_point
+align 64
+global _DES_ede3_cbc_encrypt
+align 16
 _DES_ede3_cbc_encrypt:
 L$_DES_ede3_cbc_encrypt_begin:
-	; 
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	mov	ebp,DWORD [28+esp]
-	; getting iv ptr from parameter 6
-	mov	ebx,DWORD [44+esp]
-	mov	esi,DWORD [ebx]
-	mov	edi,DWORD [4+ebx]
-	push	edi
-	push	esi
-	push	edi
-	push	esi
-	mov	ebx,esp
-	mov	esi,DWORD [36+esp]
-	mov	edi,DWORD [40+esp]
-	; getting encrypt flag from parameter 7
-	mov	ecx,DWORD [64+esp]
-	; get and push parameter 5
-	mov	eax,DWORD [56+esp]
-	push	eax
-	; get and push parameter 4
-	mov	eax,DWORD [56+esp]
-	push	eax
-	; get and push parameter 3
-	mov	eax,DWORD [56+esp]
-	push	eax
-	push	ebx
-	cmp	ecx,0
-	jz	NEAR L$030decrypt
-	and	ebp,4294967288
-	mov	eax,DWORD [16+esp]
-	mov	ebx,DWORD [20+esp]
-	jz	NEAR L$031encrypt_finish
+ ;
+ push ebp
+ push ebx
+ push esi
+ push edi
+ mov ebp,DWORD [28+esp]
+ ; getting iv ptr from parameter 6
+ mov ebx,DWORD [44+esp]
+ mov esi,DWORD [ebx]
+ mov edi,DWORD [4+ebx]
+ push edi
+ push esi
+ push edi
+ push esi
+ mov ebx,esp
+ mov esi,DWORD [36+esp]
+ mov edi,DWORD [40+esp]
+ ; getting encrypt flag from parameter 7
+ mov ecx,DWORD [64+esp]
+ ; get and push parameter 5
+ mov eax,DWORD [56+esp]
+ push eax
+ ; get and push parameter 4
+ mov eax,DWORD [56+esp]
+ push eax
+ ; get and push parameter 3
+ mov eax,DWORD [56+esp]
+ push eax
+ push ebx
+ cmp ecx,0
+ jz NEAR L$030decrypt
+ and ebp,4294967288
+ mov eax,DWORD [16+esp]
+ mov ebx,DWORD [20+esp]
+ jz NEAR L$031encrypt_finish
 L$032encrypt_loop:
-	mov	ecx,DWORD [esi]
-	mov	edx,DWORD [4+esi]
-	xor	eax,ecx
-	xor	ebx,edx
-	mov	DWORD [16+esp],eax
-	mov	DWORD [20+esp],ebx
-	call	L$_DES_encrypt3_begin
-	mov	eax,DWORD [16+esp]
-	mov	ebx,DWORD [20+esp]
-	mov	DWORD [edi],eax
-	mov	DWORD [4+edi],ebx
-	add	esi,8
-	add	edi,8
-	sub	ebp,8
-	jnz	NEAR L$032encrypt_loop
+ mov ecx,DWORD [esi]
+ mov edx,DWORD [4+esi]
+ xor eax,ecx
+ xor ebx,edx
+ mov DWORD [16+esp],eax
+ mov DWORD [20+esp],ebx
+ call L$_DES_encrypt3_begin
+ mov eax,DWORD [16+esp]
+ mov ebx,DWORD [20+esp]
+ mov DWORD [edi],eax
+ mov DWORD [4+edi],ebx
+ add esi,8
+ add edi,8
+ sub ebp,8
+ jnz NEAR L$032encrypt_loop
 L$031encrypt_finish:
-	mov	ebp,DWORD [60+esp]
-	and	ebp,7
-	jz	NEAR L$033finish
-	call	L$034PIC_point
+ mov ebp,DWORD [60+esp]
+ and ebp,7
+ jz NEAR L$033finish
+ call L$034PIC_point
 L$034PIC_point:
-	pop	edx
-	lea	ecx,[(L$035cbc_enc_jmp_table-L$034PIC_point)+edx]
-	mov	ebp,DWORD [ebp*4+ecx]
-	add	ebp,edx
-	xor	ecx,ecx
-	xor	edx,edx
-	jmp	ebp
+ pop edx
+ lea ecx,[(L$035cbc_enc_jmp_table-L$034PIC_point)+edx]
+ mov ebp,DWORD [ebp*4+ecx]
+ add ebp,edx
+ xor ecx,ecx
+ xor edx,edx
+ jmp ebp
 L$036ej7:
-	
 
 
 
 
-	mov	dh,BYTE [6+esi]
-	shl	edx,8
+
+ mov dh,BYTE [6+esi]
+ shl edx,8
 L$037ej6:
-	
 
 
 
 
-	mov	dh,BYTE [5+esi]
+
+ mov dh,BYTE [5+esi]
 L$038ej5:
-	
 
 
 
 
-	mov	dl,BYTE [4+esi]
+
+ mov dl,BYTE [4+esi]
 L$039ej4:
-	
 
 
 
 
-	mov	ecx,DWORD [esi]
-	jmp	NEAR L$040ejend
+
+ mov ecx,DWORD [esi]
+ jmp NEAR L$040ejend
 L$041ej3:
-	
 
 
 
 
-	mov	ch,BYTE [2+esi]
-	shl	ecx,8
+
+ mov ch,BYTE [2+esi]
+ shl ecx,8
 L$042ej2:
-	
 
 
 
 
-	mov	ch,BYTE [1+esi]
+
+ mov ch,BYTE [1+esi]
 L$043ej1:
-	
 
 
 
 
-	mov	cl,BYTE [esi]
+
+ mov cl,BYTE [esi]
 L$040ejend:
-	xor	eax,ecx
-	xor	ebx,edx
-	mov	DWORD [16+esp],eax
-	mov	DWORD [20+esp],ebx
-	call	L$_DES_encrypt3_begin
-	mov	eax,DWORD [16+esp]
-	mov	ebx,DWORD [20+esp]
-	mov	DWORD [edi],eax
-	mov	DWORD [4+edi],ebx
-	jmp	NEAR L$033finish
+ xor eax,ecx
+ xor ebx,edx
+ mov DWORD [16+esp],eax
+ mov DWORD [20+esp],ebx
+ call L$_DES_encrypt3_begin
+ mov eax,DWORD [16+esp]
+ mov ebx,DWORD [20+esp]
+ mov DWORD [edi],eax
+ mov DWORD [4+edi],ebx
+ jmp NEAR L$033finish
 L$030decrypt:
-	and	ebp,4294967288
-	mov	eax,DWORD [24+esp]
-	mov	ebx,DWORD [28+esp]
-	jz	NEAR L$044decrypt_finish
+ and ebp,4294967288
+ mov eax,DWORD [24+esp]
+ mov ebx,DWORD [28+esp]
+ jz NEAR L$044decrypt_finish
 L$045decrypt_loop:
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	mov	DWORD [16+esp],eax
-	mov	DWORD [20+esp],ebx
-	call	L$_DES_decrypt3_begin
-	mov	eax,DWORD [16+esp]
-	mov	ebx,DWORD [20+esp]
-	mov	ecx,DWORD [24+esp]
-	mov	edx,DWORD [28+esp]
-	xor	ecx,eax
-	xor	edx,ebx
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	mov	DWORD [edi],ecx
-	mov	DWORD [4+edi],edx
-	mov	DWORD [24+esp],eax
-	mov	DWORD [28+esp],ebx
-	add	esi,8
-	add	edi,8
-	sub	ebp,8
-	jnz	NEAR L$045decrypt_loop
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ mov DWORD [16+esp],eax
+ mov DWORD [20+esp],ebx
+ call L$_DES_decrypt3_begin
+ mov eax,DWORD [16+esp]
+ mov ebx,DWORD [20+esp]
+ mov ecx,DWORD [24+esp]
+ mov edx,DWORD [28+esp]
+ xor ecx,eax
+ xor edx,ebx
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ mov DWORD [edi],ecx
+ mov DWORD [4+edi],edx
+ mov DWORD [24+esp],eax
+ mov DWORD [28+esp],ebx
+ add esi,8
+ add edi,8
+ sub ebp,8
+ jnz NEAR L$045decrypt_loop
 L$044decrypt_finish:
-	mov	ebp,DWORD [60+esp]
-	and	ebp,7
-	jz	NEAR L$033finish
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	mov	DWORD [16+esp],eax
-	mov	DWORD [20+esp],ebx
-	call	L$_DES_decrypt3_begin
-	mov	eax,DWORD [16+esp]
-	mov	ebx,DWORD [20+esp]
-	mov	ecx,DWORD [24+esp]
-	mov	edx,DWORD [28+esp]
-	xor	ecx,eax
-	xor	edx,ebx
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
+ mov ebp,DWORD [60+esp]
+ and ebp,7
+ jz NEAR L$033finish
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ mov DWORD [16+esp],eax
+ mov DWORD [20+esp],ebx
+ call L$_DES_decrypt3_begin
+ mov eax,DWORD [16+esp]
+ mov ebx,DWORD [20+esp]
+ mov ecx,DWORD [24+esp]
+ mov edx,DWORD [28+esp]
+ xor ecx,eax
+ xor edx,ebx
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
 L$046dj7:
-	ror	edx,16
-	mov	BYTE [6+edi],dl
-	shr	edx,16
+ ror edx,16
+ mov BYTE [6+edi],dl
+ shr edx,16
 L$047dj6:
-	mov	BYTE [5+edi],dh
+ mov BYTE [5+edi],dh
 L$048dj5:
-	mov	BYTE [4+edi],dl
+ mov BYTE [4+edi],dl
 L$049dj4:
-	mov	DWORD [edi],ecx
-	jmp	NEAR L$050djend
+ mov DWORD [edi],ecx
+ jmp NEAR L$050djend
 L$051dj3:
-	ror	ecx,16
-	mov	BYTE [2+edi],cl
-	shl	ecx,16
+ ror ecx,16
+ mov BYTE [2+edi],cl
+ shl ecx,16
 L$052dj2:
-	mov	BYTE [1+esi],ch
+ mov BYTE [1+esi],ch
 L$053dj1:
-	mov	BYTE [esi],cl
+ mov BYTE [esi],cl
 L$050djend:
-	jmp	NEAR L$033finish
+ jmp NEAR L$033finish
 L$033finish:
-	mov	ecx,DWORD [76+esp]
-	add	esp,32
-	mov	DWORD [ecx],eax
-	mov	DWORD [4+ecx],ebx
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-align	64
+ mov ecx,DWORD [76+esp]
+ add esp,32
+ mov DWORD [ecx],eax
+ mov DWORD [4+ecx],ebx
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+align 64
 L$035cbc_enc_jmp_table:
-dd	0
-dd	L$043ej1-L$034PIC_point
-dd	L$042ej2-L$034PIC_point
-dd	L$041ej3-L$034PIC_point
-dd	L$039ej4-L$034PIC_point
-dd	L$038ej5-L$034PIC_point
-dd	L$037ej6-L$034PIC_point
-dd	L$036ej7-L$034PIC_point
-align	64
-align	64
+dd 0
+dd L$043ej1-L$034PIC_point
+dd L$042ej2-L$034PIC_point
+dd L$041ej3-L$034PIC_point
+dd L$039ej4-L$034PIC_point
+dd L$038ej5-L$034PIC_point
+dd L$037ej6-L$034PIC_point
+dd L$036ej7-L$034PIC_point
+align 64
+align 64
 _DES_SPtrans:
 L$des_sptrans:
-dd	34080768,524288,33554434,34080770
-dd	33554432,526338,524290,33554434
-dd	526338,34080768,34078720,2050
-dd	33556482,33554432,0,524290
-dd	524288,2,33556480,526336
-dd	34080770,34078720,2050,33556480
-dd	2,2048,526336,34078722
-dd	2048,33556482,34078722,0
-dd	0,34080770,33556480,524290
-dd	34080768,524288,2050,33556480
-dd	34078722,2048,526336,33554434
-dd	526338,2,33554434,34078720
-dd	34080770,526336,34078720,33556482
-dd	33554432,2050,524290,0
-dd	524288,33554432,33556482,34080768
-dd	2,34078722,2048,526338
-dd	1074823184,0,1081344,1074790400
-dd	1073741840,32784,1073774592,1081344
-dd	32768,1074790416,16,1073774592
-dd	1048592,1074823168,1074790400,16
-dd	1048576,1073774608,1074790416,32768
-dd	1081360,1073741824,0,1048592
-dd	1073774608,1081360,1074823168,1073741840
-dd	1073741824,1048576,32784,1074823184
-dd	1048592,1074823168,1073774592,1081360
-dd	1074823184,1048592,1073741840,0
-dd	1073741824,32784,1048576,1074790416
-dd	32768,1073741824,1081360,1073774608
-dd	1074823168,32768,0,1073741840
-dd	16,1074823184,1081344,1074790400
-dd	1074790416,1048576,32784,1073774592
-dd	1073774608,16,1074790400,1081344
-dd	67108865,67371264,256,67109121
-dd	262145,67108864,67109121,262400
-dd	67109120,262144,67371008,1
-dd	67371265,257,1,67371009
-dd	0,262145,67371264,256
-dd	257,67371265,262144,67108865
-dd	67371009,67109120,262401,67371008
-dd	262400,0,67108864,262401
-dd	67371264,256,1,262144
-dd	257,262145,67371008,67109121
-dd	0,67371264,262400,67371009
-dd	262145,67108864,67371265,1
-dd	262401,67108865,67108864,67371265
-dd	262144,67109120,67109121,262400
-dd	67109120,0,67371009,257
-dd	67108865,262401,256,67371008
-dd	4198408,268439552,8,272633864
-dd	0,272629760,268439560,4194312
-dd	272633856,268435464,268435456,4104
-dd	268435464,4198408,4194304,268435456
-dd	272629768,4198400,4096,8
-dd	4198400,268439560,272629760,4096
-dd	4104,0,4194312,272633856
-dd	268439552,272629768,272633864,4194304
-dd	272629768,4104,4194304,268435464
-dd	4198400,268439552,8,272629760
-dd	268439560,0,4096,4194312
-dd	0,272629768,272633856,4096
-dd	268435456,272633864,4198408,4194304
-dd	272633864,8,268439552,4198408
-dd	4194312,4198400,272629760,268439560
-dd	4104,268435456,268435464,272633856
-dd	134217728,65536,1024,134284320
-dd	134283296,134218752,66592,134283264
-dd	65536,32,134217760,66560
-dd	134218784,134283296,134284288,0
-dd	66560,134217728,65568,1056
-dd	134218752,66592,0,134217760
-dd	32,134218784,134284320,65568
-dd	134283264,1024,1056,134284288
-dd	134284288,134218784,65568,134283264
-dd	65536,32,134217760,134218752
-dd	134217728,66560,134284320,0
-dd	66592,134217728,1024,65568
-dd	134218784,1024,0,134284320
-dd	134283296,134284288,1056,65536
-dd	66560,134283296,134218752,1056
-dd	32,66592,134283264,134217760
-dd	2147483712,2097216,0,2149588992
-dd	2097216,8192,2147491904,2097152
-dd	8256,2149589056,2105344,2147483648
-dd	2147491840,2147483712,2149580800,2105408
-dd	2097152,2147491904,2149580864,0
-dd	8192,64,2149588992,2149580864
-dd	2149589056,2149580800,2147483648,8256
-dd	64,2105344,2105408,2147491840
-dd	8256,2147483648,2147491840,2105408
-dd	2149588992,2097216,0,2147491840
-dd	2147483648,8192,2149580864,2097152
-dd	2097216,2149589056,2105344,64
-dd	2149589056,2105344,2097152,2147491904
-dd	2147483712,2149580800,2105408,0
-dd	8192,2147483712,2147491904,2149588992
-dd	2149580800,8256,64,2149580864
-dd	16384,512,16777728,16777220
-dd	16794116,16388,16896,0
-dd	16777216,16777732,516,16793600
-dd	4,16794112,16793600,516
-dd	16777732,16384,16388,16794116
-dd	0,16777728,16777220,16896
-dd	16793604,16900,16794112,4
-dd	16900,16793604,512,16777216
-dd	16900,16793600,16793604,516
-dd	16384,512,16777216,16793604
-dd	16777732,16900,16896,0
-dd	512,16777220,4,16777728
-dd	0,16777732,16777728,16896
-dd	516,16384,16794116,16777216
-dd	16794112,4,16388,16794116
-dd	16777220,16794112,16793600,16388
-dd	545259648,545390592,131200,0
-dd	537001984,8388736,545259520,545390720
-dd	128,536870912,8519680,131200
-dd	8519808,537002112,536871040,545259520
-dd	131072,8519808,8388736,537001984
-dd	545390720,536871040,0,8519680
-dd	536870912,8388608,537002112,545259648
-dd	8388608,131072,545390592,128
-dd	8388608,131072,536871040,545390720
-dd	131200,536870912,0,8519680
-dd	545259648,537002112,537001984,8388736
-dd	545390592,128,8388736,537001984
-dd	545390720,8388608,545259520,536871040
-dd	8519680,131200,537002112,545259520
-dd	128,545390592,8519808,0
-dd	536870912,545259648,131072,8519808
+dd 34080768,524288,33554434,34080770
+dd 33554432,526338,524290,33554434
+dd 526338,34080768,34078720,2050
+dd 33556482,33554432,0,524290
+dd 524288,2,33556480,526336
+dd 34080770,34078720,2050,33556480
+dd 2,2048,526336,34078722
+dd 2048,33556482,34078722,0
+dd 0,34080770,33556480,524290
+dd 34080768,524288,2050,33556480
+dd 34078722,2048,526336,33554434
+dd 526338,2,33554434,34078720
+dd 34080770,526336,34078720,33556482
+dd 33554432,2050,524290,0
+dd 524288,33554432,33556482,34080768
+dd 2,34078722,2048,526338
+dd 1074823184,0,1081344,1074790400
+dd 1073741840,32784,1073774592,1081344
+dd 32768,1074790416,16,1073774592
+dd 1048592,1074823168,1074790400,16
+dd 1048576,1073774608,1074790416,32768
+dd 1081360,1073741824,0,1048592
+dd 1073774608,1081360,1074823168,1073741840
+dd 1073741824,1048576,32784,1074823184
+dd 1048592,1074823168,1073774592,1081360
+dd 1074823184,1048592,1073741840,0
+dd 1073741824,32784,1048576,1074790416
+dd 32768,1073741824,1081360,1073774608
+dd 1074823168,32768,0,1073741840
+dd 16,1074823184,1081344,1074790400
+dd 1074790416,1048576,32784,1073774592
+dd 1073774608,16,1074790400,1081344
+dd 67108865,67371264,256,67109121
+dd 262145,67108864,67109121,262400
+dd 67109120,262144,67371008,1
+dd 67371265,257,1,67371009
+dd 0,262145,67371264,256
+dd 257,67371265,262144,67108865
+dd 67371009,67109120,262401,67371008
+dd 262400,0,67108864,262401
+dd 67371264,256,1,262144
+dd 257,262145,67371008,67109121
+dd 0,67371264,262400,67371009
+dd 262145,67108864,67371265,1
+dd 262401,67108865,67108864,67371265
+dd 262144,67109120,67109121,262400
+dd 67109120,0,67371009,257
+dd 67108865,262401,256,67371008
+dd 4198408,268439552,8,272633864
+dd 0,272629760,268439560,4194312
+dd 272633856,268435464,268435456,4104
+dd 268435464,4198408,4194304,268435456
+dd 272629768,4198400,4096,8
+dd 4198400,268439560,272629760,4096
+dd 4104,0,4194312,272633856
+dd 268439552,272629768,272633864,4194304
+dd 272629768,4104,4194304,268435464
+dd 4198400,268439552,8,272629760
+dd 268439560,0,4096,4194312
+dd 0,272629768,272633856,4096
+dd 268435456,272633864,4198408,4194304
+dd 272633864,8,268439552,4198408
+dd 4194312,4198400,272629760,268439560
+dd 4104,268435456,268435464,272633856
+dd 134217728,65536,1024,134284320
+dd 134283296,134218752,66592,134283264
+dd 65536,32,134217760,66560
+dd 134218784,134283296,134284288,0
+dd 66560,134217728,65568,1056
+dd 134218752,66592,0,134217760
+dd 32,134218784,134284320,65568
+dd 134283264,1024,1056,134284288
+dd 134284288,134218784,65568,134283264
+dd 65536,32,134217760,134218752
+dd 134217728,66560,134284320,0
+dd 66592,134217728,1024,65568
+dd 134218784,1024,0,134284320
+dd 134283296,134284288,1056,65536
+dd 66560,134283296,134218752,1056
+dd 32,66592,134283264,134217760
+dd 2147483712,2097216,0,2149588992
+dd 2097216,8192,2147491904,2097152
+dd 8256,2149589056,2105344,2147483648
+dd 2147491840,2147483712,2149580800,2105408
+dd 2097152,2147491904,2149580864,0
+dd 8192,64,2149588992,2149580864
+dd 2149589056,2149580800,2147483648,8256
+dd 64,2105344,2105408,2147491840
+dd 8256,2147483648,2147491840,2105408
+dd 2149588992,2097216,0,2147491840
+dd 2147483648,8192,2149580864,2097152
+dd 2097216,2149589056,2105344,64
+dd 2149589056,2105344,2097152,2147491904
+dd 2147483712,2149580800,2105408,0
+dd 8192,2147483712,2147491904,2149588992
+dd 2149580800,8256,64,2149580864
+dd 16384,512,16777728,16777220
+dd 16794116,16388,16896,0
+dd 16777216,16777732,516,16793600
+dd 4,16794112,16793600,516
+dd 16777732,16384,16388,16794116
+dd 0,16777728,16777220,16896
+dd 16793604,16900,16794112,4
+dd 16900,16793604,512,16777216
+dd 16900,16793600,16793604,516
+dd 16384,512,16777216,16793604
+dd 16777732,16900,16896,0
+dd 512,16777220,4,16777728
+dd 0,16777732,16777728,16896
+dd 516,16384,16794116,16777216
+dd 16794112,4,16388,16794116
+dd 16777220,16794112,16793600,16388
+dd 545259648,545390592,131200,0
+dd 537001984,8388736,545259520,545390720
+dd 128,536870912,8519680,131200
+dd 8519808,537002112,536871040,545259520
+dd 131072,8519808,8388736,537001984
+dd 545390720,536871040,0,8519680
+dd 536870912,8388608,537002112,545259648
+dd 8388608,131072,545390592,128
+dd 8388608,131072,536871040,545390720
+dd 131200,536870912,0,8519680
+dd 545259648,537002112,537001984,8388736
+dd 545390592,128,8388736,537001984
+dd 545390720,8388608,545259520,536871040
+dd 8519680,131200,537002112,545259520
+dd 128,545390592,8519808,0
+dd 536870912,545259648,131072,8519808

+ 675 - 676
libs/openssl/crypto/md5/asm/md5_586.asm

@@ -1,684 +1,683 @@
-
 %ifidn __OUTPUT_FORMAT__,obj
-section	code	use32 class=code align=256
+section code use32 class=code align=256
 %elifidn __OUTPUT_FORMAT__,win32
 [email protected] equ 1
-section	.text	code align=256
+section .text code align=256
 %else
-section	.text	code
+section .text code
 %endif
-global	_ossl_md5_block_asm_data_order
-align	16
+global _ossl_md5_block_asm_data_order
+align 16
 _ossl_md5_block_asm_data_order:
 L$_ossl_md5_block_asm_data_order_begin:
-	push	esi
-	push	edi
-	mov	edi,DWORD [12+esp]
-	mov	esi,DWORD [16+esp]
-	mov	ecx,DWORD [20+esp]
-	push	ebp
-	shl	ecx,6
-	push	ebx
-	add	ecx,esi
-	sub	ecx,64
-	mov	eax,DWORD [edi]
-	push	ecx
-	mov	ebx,DWORD [4+edi]
-	mov	ecx,DWORD [8+edi]
-	mov	edx,DWORD [12+edi]
+ push esi
+ push edi
+ mov edi,DWORD [12+esp]
+ mov esi,DWORD [16+esp]
+ mov ecx,DWORD [20+esp]
+ push ebp
+ shl ecx,6
+ push ebx
+ add ecx,esi
+ sub ecx,64
+ mov eax,DWORD [edi]
+ push ecx
+ mov ebx,DWORD [4+edi]
+ mov ecx,DWORD [8+edi]
+ mov edx,DWORD [12+edi]
 L$000start:
-	; 
-	; R0 section
-	mov	edi,ecx
-	mov	ebp,DWORD [esi]
-	; R0 0
-	xor	edi,edx
-	and	edi,ebx
-	lea	eax,[3614090360+ebp*1+eax]
-	xor	edi,edx
-	mov	ebp,DWORD [4+esi]
-	add	eax,edi
-	rol	eax,7
-	mov	edi,ebx
-	add	eax,ebx
-	; R0 1
-	xor	edi,ecx
-	and	edi,eax
-	lea	edx,[3905402710+ebp*1+edx]
-	xor	edi,ecx
-	mov	ebp,DWORD [8+esi]
-	add	edx,edi
-	rol	edx,12
-	mov	edi,eax
-	add	edx,eax
-	; R0 2
-	xor	edi,ebx
-	and	edi,edx
-	lea	ecx,[606105819+ebp*1+ecx]
-	xor	edi,ebx
-	mov	ebp,DWORD [12+esi]
-	add	ecx,edi
-	rol	ecx,17
-	mov	edi,edx
-	add	ecx,edx
-	; R0 3
-	xor	edi,eax
-	and	edi,ecx
-	lea	ebx,[3250441966+ebp*1+ebx]
-	xor	edi,eax
-	mov	ebp,DWORD [16+esi]
-	add	ebx,edi
-	rol	ebx,22
-	mov	edi,ecx
-	add	ebx,ecx
-	; R0 4
-	xor	edi,edx
-	and	edi,ebx
-	lea	eax,[4118548399+ebp*1+eax]
-	xor	edi,edx
-	mov	ebp,DWORD [20+esi]
-	add	eax,edi
-	rol	eax,7
-	mov	edi,ebx
-	add	eax,ebx
-	; R0 5
-	xor	edi,ecx
-	and	edi,eax
-	lea	edx,[1200080426+ebp*1+edx]
-	xor	edi,ecx
-	mov	ebp,DWORD [24+esi]
-	add	edx,edi
-	rol	edx,12
-	mov	edi,eax
-	add	edx,eax
-	; R0 6
-	xor	edi,ebx
-	and	edi,edx
-	lea	ecx,[2821735955+ebp*1+ecx]
-	xor	edi,ebx
-	mov	ebp,DWORD [28+esi]
-	add	ecx,edi
-	rol	ecx,17
-	mov	edi,edx
-	add	ecx,edx
-	; R0 7
-	xor	edi,eax
-	and	edi,ecx
-	lea	ebx,[4249261313+ebp*1+ebx]
-	xor	edi,eax
-	mov	ebp,DWORD [32+esi]
-	add	ebx,edi
-	rol	ebx,22
-	mov	edi,ecx
-	add	ebx,ecx
-	; R0 8
-	xor	edi,edx
-	and	edi,ebx
-	lea	eax,[1770035416+ebp*1+eax]
-	xor	edi,edx
-	mov	ebp,DWORD [36+esi]
-	add	eax,edi
-	rol	eax,7
-	mov	edi,ebx
-	add	eax,ebx
-	; R0 9
-	xor	edi,ecx
-	and	edi,eax
-	lea	edx,[2336552879+ebp*1+edx]
-	xor	edi,ecx
-	mov	ebp,DWORD [40+esi]
-	add	edx,edi
-	rol	edx,12
-	mov	edi,eax
-	add	edx,eax
-	; R0 10
-	xor	edi,ebx
-	and	edi,edx
-	lea	ecx,[4294925233+ebp*1+ecx]
-	xor	edi,ebx
-	mov	ebp,DWORD [44+esi]
-	add	ecx,edi
-	rol	ecx,17
-	mov	edi,edx
-	add	ecx,edx
-	; R0 11
-	xor	edi,eax
-	and	edi,ecx
-	lea	ebx,[2304563134+ebp*1+ebx]
-	xor	edi,eax
-	mov	ebp,DWORD [48+esi]
-	add	ebx,edi
-	rol	ebx,22
-	mov	edi,ecx
-	add	ebx,ecx
-	; R0 12
-	xor	edi,edx
-	and	edi,ebx
-	lea	eax,[1804603682+ebp*1+eax]
-	xor	edi,edx
-	mov	ebp,DWORD [52+esi]
-	add	eax,edi
-	rol	eax,7
-	mov	edi,ebx
-	add	eax,ebx
-	; R0 13
-	xor	edi,ecx
-	and	edi,eax
-	lea	edx,[4254626195+ebp*1+edx]
-	xor	edi,ecx
-	mov	ebp,DWORD [56+esi]
-	add	edx,edi
-	rol	edx,12
-	mov	edi,eax
-	add	edx,eax
-	; R0 14
-	xor	edi,ebx
-	and	edi,edx
-	lea	ecx,[2792965006+ebp*1+ecx]
-	xor	edi,ebx
-	mov	ebp,DWORD [60+esi]
-	add	ecx,edi
-	rol	ecx,17
-	mov	edi,edx
-	add	ecx,edx
-	; R0 15
-	xor	edi,eax
-	and	edi,ecx
-	lea	ebx,[1236535329+ebp*1+ebx]
-	xor	edi,eax
-	mov	ebp,DWORD [4+esi]
-	add	ebx,edi
-	rol	ebx,22
-	mov	edi,ecx
-	add	ebx,ecx
-	; 
-	; R1 section
-	; R1 16
-	xor	edi,ebx
-	and	edi,edx
-	lea	eax,[4129170786+ebp*1+eax]
-	xor	edi,ecx
-	mov	ebp,DWORD [24+esi]
-	add	eax,edi
-	mov	edi,ebx
-	rol	eax,5
-	add	eax,ebx
-	; R1 17
-	xor	edi,eax
-	and	edi,ecx
-	lea	edx,[3225465664+ebp*1+edx]
-	xor	edi,ebx
-	mov	ebp,DWORD [44+esi]
-	add	edx,edi
-	mov	edi,eax
-	rol	edx,9
-	add	edx,eax
-	; R1 18
-	xor	edi,edx
-	and	edi,ebx
-	lea	ecx,[643717713+ebp*1+ecx]
-	xor	edi,eax
-	mov	ebp,DWORD [esi]
-	add	ecx,edi
-	mov	edi,edx
-	rol	ecx,14
-	add	ecx,edx
-	; R1 19
-	xor	edi,ecx
-	and	edi,eax
-	lea	ebx,[3921069994+ebp*1+ebx]
-	xor	edi,edx
-	mov	ebp,DWORD [20+esi]
-	add	ebx,edi
-	mov	edi,ecx
-	rol	ebx,20
-	add	ebx,ecx
-	; R1 20
-	xor	edi,ebx
-	and	edi,edx
-	lea	eax,[3593408605+ebp*1+eax]
-	xor	edi,ecx
-	mov	ebp,DWORD [40+esi]
-	add	eax,edi
-	mov	edi,ebx
-	rol	eax,5
-	add	eax,ebx
-	; R1 21
-	xor	edi,eax
-	and	edi,ecx
-	lea	edx,[38016083+ebp*1+edx]
-	xor	edi,ebx
-	mov	ebp,DWORD [60+esi]
-	add	edx,edi
-	mov	edi,eax
-	rol	edx,9
-	add	edx,eax
-	; R1 22
-	xor	edi,edx
-	and	edi,ebx
-	lea	ecx,[3634488961+ebp*1+ecx]
-	xor	edi,eax
-	mov	ebp,DWORD [16+esi]
-	add	ecx,edi
-	mov	edi,edx
-	rol	ecx,14
-	add	ecx,edx
-	; R1 23
-	xor	edi,ecx
-	and	edi,eax
-	lea	ebx,[3889429448+ebp*1+ebx]
-	xor	edi,edx
-	mov	ebp,DWORD [36+esi]
-	add	ebx,edi
-	mov	edi,ecx
-	rol	ebx,20
-	add	ebx,ecx
-	; R1 24
-	xor	edi,ebx
-	and	edi,edx
-	lea	eax,[568446438+ebp*1+eax]
-	xor	edi,ecx
-	mov	ebp,DWORD [56+esi]
-	add	eax,edi
-	mov	edi,ebx
-	rol	eax,5
-	add	eax,ebx
-	; R1 25
-	xor	edi,eax
-	and	edi,ecx
-	lea	edx,[3275163606+ebp*1+edx]
-	xor	edi,ebx
-	mov	ebp,DWORD [12+esi]
-	add	edx,edi
-	mov	edi,eax
-	rol	edx,9
-	add	edx,eax
-	; R1 26
-	xor	edi,edx
-	and	edi,ebx
-	lea	ecx,[4107603335+ebp*1+ecx]
-	xor	edi,eax
-	mov	ebp,DWORD [32+esi]
-	add	ecx,edi
-	mov	edi,edx
-	rol	ecx,14
-	add	ecx,edx
-	; R1 27
-	xor	edi,ecx
-	and	edi,eax
-	lea	ebx,[1163531501+ebp*1+ebx]
-	xor	edi,edx
-	mov	ebp,DWORD [52+esi]
-	add	ebx,edi
-	mov	edi,ecx
-	rol	ebx,20
-	add	ebx,ecx
-	; R1 28
-	xor	edi,ebx
-	and	edi,edx
-	lea	eax,[2850285829+ebp*1+eax]
-	xor	edi,ecx
-	mov	ebp,DWORD [8+esi]
-	add	eax,edi
-	mov	edi,ebx
-	rol	eax,5
-	add	eax,ebx
-	; R1 29
-	xor	edi,eax
-	and	edi,ecx
-	lea	edx,[4243563512+ebp*1+edx]
-	xor	edi,ebx
-	mov	ebp,DWORD [28+esi]
-	add	edx,edi
-	mov	edi,eax
-	rol	edx,9
-	add	edx,eax
-	; R1 30
-	xor	edi,edx
-	and	edi,ebx
-	lea	ecx,[1735328473+ebp*1+ecx]
-	xor	edi,eax
-	mov	ebp,DWORD [48+esi]
-	add	ecx,edi
-	mov	edi,edx
-	rol	ecx,14
-	add	ecx,edx
-	; R1 31
-	xor	edi,ecx
-	and	edi,eax
-	lea	ebx,[2368359562+ebp*1+ebx]
-	xor	edi,edx
-	mov	ebp,DWORD [20+esi]
-	add	ebx,edi
-	mov	edi,ecx
-	rol	ebx,20
-	add	ebx,ecx
-	; 
-	; R2 section
-	; R2 32
-	xor	edi,edx
-	xor	edi,ebx
-	lea	eax,[4294588738+ebp*1+eax]
-	add	eax,edi
-	mov	ebp,DWORD [32+esi]
-	rol	eax,4
-	mov	edi,ebx
-	; R2 33
-	add	eax,ebx
-	xor	edi,ecx
-	lea	edx,[2272392833+ebp*1+edx]
-	xor	edi,eax
-	mov	ebp,DWORD [44+esi]
-	add	edx,edi
-	mov	edi,eax
-	rol	edx,11
-	add	edx,eax
-	; R2 34
-	xor	edi,ebx
-	xor	edi,edx
-	lea	ecx,[1839030562+ebp*1+ecx]
-	add	ecx,edi
-	mov	ebp,DWORD [56+esi]
-	rol	ecx,16
-	mov	edi,edx
-	; R2 35
-	add	ecx,edx
-	xor	edi,eax
-	lea	ebx,[4259657740+ebp*1+ebx]
-	xor	edi,ecx
-	mov	ebp,DWORD [4+esi]
-	add	ebx,edi
-	mov	edi,ecx
-	rol	ebx,23
-	add	ebx,ecx
-	; R2 36
-	xor	edi,edx
-	xor	edi,ebx
-	lea	eax,[2763975236+ebp*1+eax]
-	add	eax,edi
-	mov	ebp,DWORD [16+esi]
-	rol	eax,4
-	mov	edi,ebx
-	; R2 37
-	add	eax,ebx
-	xor	edi,ecx
-	lea	edx,[1272893353+ebp*1+edx]
-	xor	edi,eax
-	mov	ebp,DWORD [28+esi]
-	add	edx,edi
-	mov	edi,eax
-	rol	edx,11
-	add	edx,eax
-	; R2 38
-	xor	edi,ebx
-	xor	edi,edx
-	lea	ecx,[4139469664+ebp*1+ecx]
-	add	ecx,edi
-	mov	ebp,DWORD [40+esi]
-	rol	ecx,16
-	mov	edi,edx
-	; R2 39
-	add	ecx,edx
-	xor	edi,eax
-	lea	ebx,[3200236656+ebp*1+ebx]
-	xor	edi,ecx
-	mov	ebp,DWORD [52+esi]
-	add	ebx,edi
-	mov	edi,ecx
-	rol	ebx,23
-	add	ebx,ecx
-	; R2 40
-	xor	edi,edx
-	xor	edi,ebx
-	lea	eax,[681279174+ebp*1+eax]
-	add	eax,edi
-	mov	ebp,DWORD [esi]
-	rol	eax,4
-	mov	edi,ebx
-	; R2 41
-	add	eax,ebx
-	xor	edi,ecx
-	lea	edx,[3936430074+ebp*1+edx]
-	xor	edi,eax
-	mov	ebp,DWORD [12+esi]
-	add	edx,edi
-	mov	edi,eax
-	rol	edx,11
-	add	edx,eax
-	; R2 42
-	xor	edi,ebx
-	xor	edi,edx
-	lea	ecx,[3572445317+ebp*1+ecx]
-	add	ecx,edi
-	mov	ebp,DWORD [24+esi]
-	rol	ecx,16
-	mov	edi,edx
-	; R2 43
-	add	ecx,edx
-	xor	edi,eax
-	lea	ebx,[76029189+ebp*1+ebx]
-	xor	edi,ecx
-	mov	ebp,DWORD [36+esi]
-	add	ebx,edi
-	mov	edi,ecx
-	rol	ebx,23
-	add	ebx,ecx
-	; R2 44
-	xor	edi,edx
-	xor	edi,ebx
-	lea	eax,[3654602809+ebp*1+eax]
-	add	eax,edi
-	mov	ebp,DWORD [48+esi]
-	rol	eax,4
-	mov	edi,ebx
-	; R2 45
-	add	eax,ebx
-	xor	edi,ecx
-	lea	edx,[3873151461+ebp*1+edx]
-	xor	edi,eax
-	mov	ebp,DWORD [60+esi]
-	add	edx,edi
-	mov	edi,eax
-	rol	edx,11
-	add	edx,eax
-	; R2 46
-	xor	edi,ebx
-	xor	edi,edx
-	lea	ecx,[530742520+ebp*1+ecx]
-	add	ecx,edi
-	mov	ebp,DWORD [8+esi]
-	rol	ecx,16
-	mov	edi,edx
-	; R2 47
-	add	ecx,edx
-	xor	edi,eax
-	lea	ebx,[3299628645+ebp*1+ebx]
-	xor	edi,ecx
-	mov	ebp,DWORD [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,[4096336452+ebp*1+eax]
-	xor	edi,ecx
-	mov	ebp,DWORD [28+esi]
-	add	eax,edi
-	mov	edi,-1
-	rol	eax,6
-	xor	edi,ecx
-	add	eax,ebx
-	; R3 49
-	or	edi,eax
-	lea	edx,[1126891415+ebp*1+edx]
-	xor	edi,ebx
-	mov	ebp,DWORD [56+esi]
-	add	edx,edi
-	mov	edi,-1
-	rol	edx,10
-	xor	edi,ebx
-	add	edx,eax
-	; R3 50
-	or	edi,edx
-	lea	ecx,[2878612391+ebp*1+ecx]
-	xor	edi,eax
-	mov	ebp,DWORD [20+esi]
-	add	ecx,edi
-	mov	edi,-1
-	rol	ecx,15
-	xor	edi,eax
-	add	ecx,edx
-	; R3 51
-	or	edi,ecx
-	lea	ebx,[4237533241+ebp*1+ebx]
-	xor	edi,edx
-	mov	ebp,DWORD [48+esi]
-	add	ebx,edi
-	mov	edi,-1
-	rol	ebx,21
-	xor	edi,edx
-	add	ebx,ecx
-	; R3 52
-	or	edi,ebx
-	lea	eax,[1700485571+ebp*1+eax]
-	xor	edi,ecx
-	mov	ebp,DWORD [12+esi]
-	add	eax,edi
-	mov	edi,-1
-	rol	eax,6
-	xor	edi,ecx
-	add	eax,ebx
-	; R3 53
-	or	edi,eax
-	lea	edx,[2399980690+ebp*1+edx]
-	xor	edi,ebx
-	mov	ebp,DWORD [40+esi]
-	add	edx,edi
-	mov	edi,-1
-	rol	edx,10
-	xor	edi,ebx
-	add	edx,eax
-	; R3 54
-	or	edi,edx
-	lea	ecx,[4293915773+ebp*1+ecx]
-	xor	edi,eax
-	mov	ebp,DWORD [4+esi]
-	add	ecx,edi
-	mov	edi,-1
-	rol	ecx,15
-	xor	edi,eax
-	add	ecx,edx
-	; R3 55
-	or	edi,ecx
-	lea	ebx,[2240044497+ebp*1+ebx]
-	xor	edi,edx
-	mov	ebp,DWORD [32+esi]
-	add	ebx,edi
-	mov	edi,-1
-	rol	ebx,21
-	xor	edi,edx
-	add	ebx,ecx
-	; R3 56
-	or	edi,ebx
-	lea	eax,[1873313359+ebp*1+eax]
-	xor	edi,ecx
-	mov	ebp,DWORD [60+esi]
-	add	eax,edi
-	mov	edi,-1
-	rol	eax,6
-	xor	edi,ecx
-	add	eax,ebx
-	; R3 57
-	or	edi,eax
-	lea	edx,[4264355552+ebp*1+edx]
-	xor	edi,ebx
-	mov	ebp,DWORD [24+esi]
-	add	edx,edi
-	mov	edi,-1
-	rol	edx,10
-	xor	edi,ebx
-	add	edx,eax
-	; R3 58
-	or	edi,edx
-	lea	ecx,[2734768916+ebp*1+ecx]
-	xor	edi,eax
-	mov	ebp,DWORD [52+esi]
-	add	ecx,edi
-	mov	edi,-1
-	rol	ecx,15
-	xor	edi,eax
-	add	ecx,edx
-	; R3 59
-	or	edi,ecx
-	lea	ebx,[1309151649+ebp*1+ebx]
-	xor	edi,edx
-	mov	ebp,DWORD [16+esi]
-	add	ebx,edi
-	mov	edi,-1
-	rol	ebx,21
-	xor	edi,edx
-	add	ebx,ecx
-	; R3 60
-	or	edi,ebx
-	lea	eax,[4149444226+ebp*1+eax]
-	xor	edi,ecx
-	mov	ebp,DWORD [44+esi]
-	add	eax,edi
-	mov	edi,-1
-	rol	eax,6
-	xor	edi,ecx
-	add	eax,ebx
-	; R3 61
-	or	edi,eax
-	lea	edx,[3174756917+ebp*1+edx]
-	xor	edi,ebx
-	mov	ebp,DWORD [8+esi]
-	add	edx,edi
-	mov	edi,-1
-	rol	edx,10
-	xor	edi,ebx
-	add	edx,eax
-	; R3 62
-	or	edi,edx
-	lea	ecx,[718787259+ebp*1+ecx]
-	xor	edi,eax
-	mov	ebp,DWORD [36+esi]
-	add	ecx,edi
-	mov	edi,-1
-	rol	ecx,15
-	xor	edi,eax
-	add	ecx,edx
-	; R3 63
-	or	edi,ecx
-	lea	ebx,[3951481745+ebp*1+ebx]
-	xor	edi,edx
-	mov	ebp,DWORD [24+esp]
-	add	ebx,edi
-	add	esi,64
-	rol	ebx,21
-	mov	edi,DWORD [ebp]
-	add	ebx,ecx
-	add	eax,edi
-	mov	edi,DWORD [4+ebp]
-	add	ebx,edi
-	mov	edi,DWORD [8+ebp]
-	add	ecx,edi
-	mov	edi,DWORD [12+ebp]
-	add	edx,edi
-	mov	DWORD [ebp],eax
-	mov	DWORD [4+ebp],ebx
-	mov	edi,DWORD [esp]
-	mov	DWORD [8+ebp],ecx
-	mov	DWORD [12+ebp],edx
-	cmp	edi,esi
-	jae	NEAR L$000start
-	pop	eax
-	pop	ebx
-	pop	ebp
-	pop	edi
-	pop	esi
-	ret
+ ;
+ ; R0 section
+ mov edi,ecx
+ mov ebp,DWORD [esi]
+ ; R0 0
+ xor edi,edx
+ and edi,ebx
+ lea eax,[3614090360+ebp*1+eax]
+ xor edi,edx
+ mov ebp,DWORD [4+esi]
+ add eax,edi
+ rol eax,7
+ mov edi,ebx
+ add eax,ebx
+ ; R0 1
+ xor edi,ecx
+ and edi,eax
+ lea edx,[3905402710+ebp*1+edx]
+ xor edi,ecx
+ mov ebp,DWORD [8+esi]
+ add edx,edi
+ rol edx,12
+ mov edi,eax
+ add edx,eax
+ ; R0 2
+ xor edi,ebx
+ and edi,edx
+ lea ecx,[606105819+ebp*1+ecx]
+ xor edi,ebx
+ mov ebp,DWORD [12+esi]
+ add ecx,edi
+ rol ecx,17
+ mov edi,edx
+ add ecx,edx
+ ; R0 3
+ xor edi,eax
+ and edi,ecx
+ lea ebx,[3250441966+ebp*1+ebx]
+ xor edi,eax
+ mov ebp,DWORD [16+esi]
+ add ebx,edi
+ rol ebx,22
+ mov edi,ecx
+ add ebx,ecx
+ ; R0 4
+ xor edi,edx
+ and edi,ebx
+ lea eax,[4118548399+ebp*1+eax]
+ xor edi,edx
+ mov ebp,DWORD [20+esi]
+ add eax,edi
+ rol eax,7
+ mov edi,ebx
+ add eax,ebx
+ ; R0 5
+ xor edi,ecx
+ and edi,eax
+ lea edx,[1200080426+ebp*1+edx]
+ xor edi,ecx
+ mov ebp,DWORD [24+esi]
+ add edx,edi
+ rol edx,12
+ mov edi,eax
+ add edx,eax
+ ; R0 6
+ xor edi,ebx
+ and edi,edx
+ lea ecx,[2821735955+ebp*1+ecx]
+ xor edi,ebx
+ mov ebp,DWORD [28+esi]
+ add ecx,edi
+ rol ecx,17
+ mov edi,edx
+ add ecx,edx
+ ; R0 7
+ xor edi,eax
+ and edi,ecx
+ lea ebx,[4249261313+ebp*1+ebx]
+ xor edi,eax
+ mov ebp,DWORD [32+esi]
+ add ebx,edi
+ rol ebx,22
+ mov edi,ecx
+ add ebx,ecx
+ ; R0 8
+ xor edi,edx
+ and edi,ebx
+ lea eax,[1770035416+ebp*1+eax]
+ xor edi,edx
+ mov ebp,DWORD [36+esi]
+ add eax,edi
+ rol eax,7
+ mov edi,ebx
+ add eax,ebx
+ ; R0 9
+ xor edi,ecx
+ and edi,eax
+ lea edx,[2336552879+ebp*1+edx]
+ xor edi,ecx
+ mov ebp,DWORD [40+esi]
+ add edx,edi
+ rol edx,12
+ mov edi,eax
+ add edx,eax
+ ; R0 10
+ xor edi,ebx
+ and edi,edx
+ lea ecx,[4294925233+ebp*1+ecx]
+ xor edi,ebx
+ mov ebp,DWORD [44+esi]
+ add ecx,edi
+ rol ecx,17
+ mov edi,edx
+ add ecx,edx
+ ; R0 11
+ xor edi,eax
+ and edi,ecx
+ lea ebx,[2304563134+ebp*1+ebx]
+ xor edi,eax
+ mov ebp,DWORD [48+esi]
+ add ebx,edi
+ rol ebx,22
+ mov edi,ecx
+ add ebx,ecx
+ ; R0 12
+ xor edi,edx
+ and edi,ebx
+ lea eax,[1804603682+ebp*1+eax]
+ xor edi,edx
+ mov ebp,DWORD [52+esi]
+ add eax,edi
+ rol eax,7
+ mov edi,ebx
+ add eax,ebx
+ ; R0 13
+ xor edi,ecx
+ and edi,eax
+ lea edx,[4254626195+ebp*1+edx]
+ xor edi,ecx
+ mov ebp,DWORD [56+esi]
+ add edx,edi
+ rol edx,12
+ mov edi,eax
+ add edx,eax
+ ; R0 14
+ xor edi,ebx
+ and edi,edx
+ lea ecx,[2792965006+ebp*1+ecx]
+ xor edi,ebx
+ mov ebp,DWORD [60+esi]
+ add ecx,edi
+ rol ecx,17
+ mov edi,edx
+ add ecx,edx
+ ; R0 15
+ xor edi,eax
+ and edi,ecx
+ lea ebx,[1236535329+ebp*1+ebx]
+ xor edi,eax
+ mov ebp,DWORD [4+esi]
+ add ebx,edi
+ rol ebx,22
+ mov edi,ecx
+ add ebx,ecx
+ ;
+ ; R1 section
+ ; R1 16
+ xor edi,ebx
+ and edi,edx
+ lea eax,[4129170786+ebp*1+eax]
+ xor edi,ecx
+ mov ebp,DWORD [24+esi]
+ add eax,edi
+ mov edi,ebx
+ rol eax,5
+ add eax,ebx
+ ; R1 17
+ xor edi,eax
+ and edi,ecx
+ lea edx,[3225465664+ebp*1+edx]
+ xor edi,ebx
+ mov ebp,DWORD [44+esi]
+ add edx,edi
+ mov edi,eax
+ rol edx,9
+ add edx,eax
+ ; R1 18
+ xor edi,edx
+ and edi,ebx
+ lea ecx,[643717713+ebp*1+ecx]
+ xor edi,eax
+ mov ebp,DWORD [esi]
+ add ecx,edi
+ mov edi,edx
+ rol ecx,14
+ add ecx,edx
+ ; R1 19
+ xor edi,ecx
+ and edi,eax
+ lea ebx,[3921069994+ebp*1+ebx]
+ xor edi,edx
+ mov ebp,DWORD [20+esi]
+ add ebx,edi
+ mov edi,ecx
+ rol ebx,20
+ add ebx,ecx
+ ; R1 20
+ xor edi,ebx
+ and edi,edx
+ lea eax,[3593408605+ebp*1+eax]
+ xor edi,ecx
+ mov ebp,DWORD [40+esi]
+ add eax,edi
+ mov edi,ebx
+ rol eax,5
+ add eax,ebx
+ ; R1 21
+ xor edi,eax
+ and edi,ecx
+ lea edx,[38016083+ebp*1+edx]
+ xor edi,ebx
+ mov ebp,DWORD [60+esi]
+ add edx,edi
+ mov edi,eax
+ rol edx,9
+ add edx,eax
+ ; R1 22
+ xor edi,edx
+ and edi,ebx
+ lea ecx,[3634488961+ebp*1+ecx]
+ xor edi,eax
+ mov ebp,DWORD [16+esi]
+ add ecx,edi
+ mov edi,edx
+ rol ecx,14
+ add ecx,edx
+ ; R1 23
+ xor edi,ecx
+ and edi,eax
+ lea ebx,[3889429448+ebp*1+ebx]
+ xor edi,edx
+ mov ebp,DWORD [36+esi]
+ add ebx,edi
+ mov edi,ecx
+ rol ebx,20
+ add ebx,ecx
+ ; R1 24
+ xor edi,ebx
+ and edi,edx
+ lea eax,[568446438+ebp*1+eax]
+ xor edi,ecx
+ mov ebp,DWORD [56+esi]
+ add eax,edi
+ mov edi,ebx
+ rol eax,5
+ add eax,ebx
+ ; R1 25
+ xor edi,eax
+ and edi,ecx
+ lea edx,[3275163606+ebp*1+edx]
+ xor edi,ebx
+ mov ebp,DWORD [12+esi]
+ add edx,edi
+ mov edi,eax
+ rol edx,9
+ add edx,eax
+ ; R1 26
+ xor edi,edx
+ and edi,ebx
+ lea ecx,[4107603335+ebp*1+ecx]
+ xor edi,eax
+ mov ebp,DWORD [32+esi]
+ add ecx,edi
+ mov edi,edx
+ rol ecx,14
+ add ecx,edx
+ ; R1 27
+ xor edi,ecx
+ and edi,eax
+ lea ebx,[1163531501+ebp*1+ebx]
+ xor edi,edx
+ mov ebp,DWORD [52+esi]
+ add ebx,edi
+ mov edi,ecx
+ rol ebx,20
+ add ebx,ecx
+ ; R1 28
+ xor edi,ebx
+ and edi,edx
+ lea eax,[2850285829+ebp*1+eax]
+ xor edi,ecx
+ mov ebp,DWORD [8+esi]
+ add eax,edi
+ mov edi,ebx
+ rol eax,5
+ add eax,ebx
+ ; R1 29
+ xor edi,eax
+ and edi,ecx
+ lea edx,[4243563512+ebp*1+edx]
+ xor edi,ebx
+ mov ebp,DWORD [28+esi]
+ add edx,edi
+ mov edi,eax
+ rol edx,9
+ add edx,eax
+ ; R1 30
+ xor edi,edx
+ and edi,ebx
+ lea ecx,[1735328473+ebp*1+ecx]
+ xor edi,eax
+ mov ebp,DWORD [48+esi]
+ add ecx,edi
+ mov edi,edx
+ rol ecx,14
+ add ecx,edx
+ ; R1 31
+ xor edi,ecx
+ and edi,eax
+ lea ebx,[2368359562+ebp*1+ebx]
+ xor edi,edx
+ mov ebp,DWORD [20+esi]
+ add ebx,edi
+ mov edi,ecx
+ rol ebx,20
+ add ebx,ecx
+ ;
+ ; R2 section
+ ; R2 32
+ xor edi,edx
+ xor edi,ebx
+ lea eax,[4294588738+ebp*1+eax]
+ add eax,edi
+ mov ebp,DWORD [32+esi]
+ rol eax,4
+ mov edi,ebx
+ ; R2 33
+ add eax,ebx
+ xor edi,ecx
+ lea edx,[2272392833+ebp*1+edx]
+ xor edi,eax
+ mov ebp,DWORD [44+esi]
+ add edx,edi
+ mov edi,eax
+ rol edx,11
+ add edx,eax
+ ; R2 34
+ xor edi,ebx
+ xor edi,edx
+ lea ecx,[1839030562+ebp*1+ecx]
+ add ecx,edi
+ mov ebp,DWORD [56+esi]
+ rol ecx,16
+ mov edi,edx
+ ; R2 35
+ add ecx,edx
+ xor edi,eax
+ lea ebx,[4259657740+ebp*1+ebx]
+ xor edi,ecx
+ mov ebp,DWORD [4+esi]
+ add ebx,edi
+ mov edi,ecx
+ rol ebx,23
+ add ebx,ecx
+ ; R2 36
+ xor edi,edx
+ xor edi,ebx
+ lea eax,[2763975236+ebp*1+eax]
+ add eax,edi
+ mov ebp,DWORD [16+esi]
+ rol eax,4
+ mov edi,ebx
+ ; R2 37
+ add eax,ebx
+ xor edi,ecx
+ lea edx,[1272893353+ebp*1+edx]
+ xor edi,eax
+ mov ebp,DWORD [28+esi]
+ add edx,edi
+ mov edi,eax
+ rol edx,11
+ add edx,eax
+ ; R2 38
+ xor edi,ebx
+ xor edi,edx
+ lea ecx,[4139469664+ebp*1+ecx]
+ add ecx,edi
+ mov ebp,DWORD [40+esi]
+ rol ecx,16
+ mov edi,edx
+ ; R2 39
+ add ecx,edx
+ xor edi,eax
+ lea ebx,[3200236656+ebp*1+ebx]
+ xor edi,ecx
+ mov ebp,DWORD [52+esi]
+ add ebx,edi
+ mov edi,ecx
+ rol ebx,23
+ add ebx,ecx
+ ; R2 40
+ xor edi,edx
+ xor edi,ebx
+ lea eax,[681279174+ebp*1+eax]
+ add eax,edi
+ mov ebp,DWORD [esi]
+ rol eax,4
+ mov edi,ebx
+ ; R2 41
+ add eax,ebx
+ xor edi,ecx
+ lea edx,[3936430074+ebp*1+edx]
+ xor edi,eax
+ mov ebp,DWORD [12+esi]
+ add edx,edi
+ mov edi,eax
+ rol edx,11
+ add edx,eax
+ ; R2 42
+ xor edi,ebx
+ xor edi,edx
+ lea ecx,[3572445317+ebp*1+ecx]
+ add ecx,edi
+ mov ebp,DWORD [24+esi]
+ rol ecx,16
+ mov edi,edx
+ ; R2 43
+ add ecx,edx
+ xor edi,eax
+ lea ebx,[76029189+ebp*1+ebx]
+ xor edi,ecx
+ mov ebp,DWORD [36+esi]
+ add ebx,edi
+ mov edi,ecx
+ rol ebx,23
+ add ebx,ecx
+ ; R2 44
+ xor edi,edx
+ xor edi,ebx
+ lea eax,[3654602809+ebp*1+eax]
+ add eax,edi
+ mov ebp,DWORD [48+esi]
+ rol eax,4
+ mov edi,ebx
+ ; R2 45
+ add eax,ebx
+ xor edi,ecx
+ lea edx,[3873151461+ebp*1+edx]
+ xor edi,eax
+ mov ebp,DWORD [60+esi]
+ add edx,edi
+ mov edi,eax
+ rol edx,11
+ add edx,eax
+ ; R2 46
+ xor edi,ebx
+ xor edi,edx
+ lea ecx,[530742520+ebp*1+ecx]
+ add ecx,edi
+ mov ebp,DWORD [8+esi]
+ rol ecx,16
+ mov edi,edx
+ ; R2 47
+ add ecx,edx
+ xor edi,eax
+ lea ebx,[3299628645+ebp*1+ebx]
+ xor edi,ecx
+ mov ebp,DWORD [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,[4096336452+ebp*1+eax]
+ xor edi,ecx
+ mov ebp,DWORD [28+esi]
+ add eax,edi
+ mov edi,-1
+ rol eax,6
+ xor edi,ecx
+ add eax,ebx
+ ; R3 49
+ or edi,eax
+ lea edx,[1126891415+ebp*1+edx]
+ xor edi,ebx
+ mov ebp,DWORD [56+esi]
+ add edx,edi
+ mov edi,-1
+ rol edx,10
+ xor edi,ebx
+ add edx,eax
+ ; R3 50
+ or edi,edx
+ lea ecx,[2878612391+ebp*1+ecx]
+ xor edi,eax
+ mov ebp,DWORD [20+esi]
+ add ecx,edi
+ mov edi,-1
+ rol ecx,15
+ xor edi,eax
+ add ecx,edx
+ ; R3 51
+ or edi,ecx
+ lea ebx,[4237533241+ebp*1+ebx]
+ xor edi,edx
+ mov ebp,DWORD [48+esi]
+ add ebx,edi
+ mov edi,-1
+ rol ebx,21
+ xor edi,edx
+ add ebx,ecx
+ ; R3 52
+ or edi,ebx
+ lea eax,[1700485571+ebp*1+eax]
+ xor edi,ecx
+ mov ebp,DWORD [12+esi]
+ add eax,edi
+ mov edi,-1
+ rol eax,6
+ xor edi,ecx
+ add eax,ebx
+ ; R3 53
+ or edi,eax
+ lea edx,[2399980690+ebp*1+edx]
+ xor edi,ebx
+ mov ebp,DWORD [40+esi]
+ add edx,edi
+ mov edi,-1
+ rol edx,10
+ xor edi,ebx
+ add edx,eax
+ ; R3 54
+ or edi,edx
+ lea ecx,[4293915773+ebp*1+ecx]
+ xor edi,eax
+ mov ebp,DWORD [4+esi]
+ add ecx,edi
+ mov edi,-1
+ rol ecx,15
+ xor edi,eax
+ add ecx,edx
+ ; R3 55
+ or edi,ecx
+ lea ebx,[2240044497+ebp*1+ebx]
+ xor edi,edx
+ mov ebp,DWORD [32+esi]
+ add ebx,edi
+ mov edi,-1
+ rol ebx,21
+ xor edi,edx
+ add ebx,ecx
+ ; R3 56
+ or edi,ebx
+ lea eax,[1873313359+ebp*1+eax]
+ xor edi,ecx
+ mov ebp,DWORD [60+esi]
+ add eax,edi
+ mov edi,-1
+ rol eax,6
+ xor edi,ecx
+ add eax,ebx
+ ; R3 57
+ or edi,eax
+ lea edx,[4264355552+ebp*1+edx]
+ xor edi,ebx
+ mov ebp,DWORD [24+esi]
+ add edx,edi
+ mov edi,-1
+ rol edx,10
+ xor edi,ebx
+ add edx,eax
+ ; R3 58
+ or edi,edx
+ lea ecx,[2734768916+ebp*1+ecx]
+ xor edi,eax
+ mov ebp,DWORD [52+esi]
+ add ecx,edi
+ mov edi,-1
+ rol ecx,15
+ xor edi,eax
+ add ecx,edx
+ ; R3 59
+ or edi,ecx
+ lea ebx,[1309151649+ebp*1+ebx]
+ xor edi,edx
+ mov ebp,DWORD [16+esi]
+ add ebx,edi
+ mov edi,-1
+ rol ebx,21
+ xor edi,edx
+ add ebx,ecx
+ ; R3 60
+ or edi,ebx
+ lea eax,[4149444226+ebp*1+eax]
+ xor edi,ecx
+ mov ebp,DWORD [44+esi]
+ add eax,edi
+ mov edi,-1
+ rol eax,6
+ xor edi,ecx
+ add eax,ebx
+ ; R3 61
+ or edi,eax
+ lea edx,[3174756917+ebp*1+edx]
+ xor edi,ebx
+ mov ebp,DWORD [8+esi]
+ add edx,edi
+ mov edi,-1
+ rol edx,10
+ xor edi,ebx
+ add edx,eax
+ ; R3 62
+ or edi,edx
+ lea ecx,[718787259+ebp*1+ecx]
+ xor edi,eax
+ mov ebp,DWORD [36+esi]
+ add ecx,edi
+ mov edi,-1
+ rol ecx,15
+ xor edi,eax
+ add ecx,edx
+ ; R3 63
+ or edi,ecx
+ lea ebx,[3951481745+ebp*1+ebx]
+ xor edi,edx
+ mov ebp,DWORD [24+esp]
+ add ebx,edi
+ add esi,64
+ rol ebx,21
+ mov edi,DWORD [ebp]
+ add ebx,ecx
+ add eax,edi
+ mov edi,DWORD [4+ebp]
+ add ebx,edi
+ mov edi,DWORD [8+ebp]
+ add ecx,edi
+ mov edi,DWORD [12+ebp]
+ add edx,edi
+ mov DWORD [ebp],eax
+ mov DWORD [4+ebp],ebx
+ mov edi,DWORD [esp]
+ mov DWORD [8+ebp],ecx
+ mov DWORD [12+ebp],edx
+ cmp edi,esi
+ jae NEAR L$000start
+ pop eax
+ pop ebx
+ pop ebp
+ pop edi
+ pop esi
+ ret

+ 1960 - 1961
libs/openssl/crypto/ripemd/asm/rmd_586.asm

@@ -1,1970 +1,1969 @@
-
 %ifidn __OUTPUT_FORMAT__,obj
-section	code	use32 class=code align=256
+section code use32 class=code align=256
 %elifidn __OUTPUT_FORMAT__,win32
 [email protected] equ 1
-section	.text	code align=256
+section .text code align=256
 %else
-section	.text	code
+section .text code
 %endif
-global	_ripemd160_block_asm_data_order
-align	16
+global _ripemd160_block_asm_data_order
+align 16
 _ripemd160_block_asm_data_order:
 L$_ripemd160_block_asm_data_order_begin:
-	mov	edx,DWORD [4+esp]
-	mov	eax,DWORD [8+esp]
-	push	esi
-	mov	ecx,DWORD [edx]
-	push	edi
-	mov	esi,DWORD [4+edx]
-	push	ebp
-	mov	edi,DWORD [8+edx]
-	push	ebx
-	sub	esp,108
+ mov edx,DWORD [4+esp]
+ mov eax,DWORD [8+esp]
+ push esi
+ mov ecx,DWORD [edx]
+ push edi
+ mov esi,DWORD [4+edx]
+ push ebp
+ mov edi,DWORD [8+edx]
+ push ebx
+ sub esp,108
 L$000start:
-	; 
-	mov	ebx,DWORD [eax]
-	mov	ebp,DWORD [4+eax]
-	mov	DWORD [esp],ebx
-	mov	DWORD [4+esp],ebp
-	mov	ebx,DWORD [8+eax]
-	mov	ebp,DWORD [12+eax]
-	mov	DWORD [8+esp],ebx
-	mov	DWORD [12+esp],ebp
-	mov	ebx,DWORD [16+eax]
-	mov	ebp,DWORD [20+eax]
-	mov	DWORD [16+esp],ebx
-	mov	DWORD [20+esp],ebp
-	mov	ebx,DWORD [24+eax]
-	mov	ebp,DWORD [28+eax]
-	mov	DWORD [24+esp],ebx
-	mov	DWORD [28+esp],ebp
-	mov	ebx,DWORD [32+eax]
-	mov	ebp,DWORD [36+eax]
-	mov	DWORD [32+esp],ebx
-	mov	DWORD [36+esp],ebp
-	mov	ebx,DWORD [40+eax]
-	mov	ebp,DWORD [44+eax]
-	mov	DWORD [40+esp],ebx
-	mov	DWORD [44+esp],ebp
-	mov	ebx,DWORD [48+eax]
-	mov	ebp,DWORD [52+eax]
-	mov	DWORD [48+esp],ebx
-	mov	DWORD [52+esp],ebp
-	mov	ebx,DWORD [56+eax]
-	mov	ebp,DWORD [60+eax]
-	mov	DWORD [56+esp],ebx
-	mov	DWORD [60+esp],ebp
-	mov	eax,edi
-	mov	ebx,DWORD [12+edx]
-	mov	ebp,DWORD [16+edx]
-	; 0
-	xor	eax,ebx
-	mov	edx,DWORD [esp]
-	xor	eax,esi
-	add	ecx,edx
-	rol	edi,10
-	add	ecx,eax
-	mov	eax,esi
-	rol	ecx,11
-	add	ecx,ebp
-	; 1
-	xor	eax,edi
-	mov	edx,DWORD [4+esp]
-	xor	eax,ecx
-	add	ebp,eax
-	mov	eax,ecx
-	rol	esi,10
-	add	ebp,edx
-	xor	eax,esi
-	rol	ebp,14
-	add	ebp,ebx
-	; 2
-	mov	edx,DWORD [8+esp]
-	xor	eax,ebp
-	add	ebx,edx
-	rol	ecx,10
-	add	ebx,eax
-	mov	eax,ebp
-	rol	ebx,15
-	add	ebx,edi
-	; 3
-	xor	eax,ecx
-	mov	edx,DWORD [12+esp]
-	xor	eax,ebx
-	add	edi,eax
-	mov	eax,ebx
-	rol	ebp,10
-	add	edi,edx
-	xor	eax,ebp
-	rol	edi,12
-	add	edi,esi
-	; 4
-	mov	edx,DWORD [16+esp]
-	xor	eax,edi
-	add	esi,edx
-	rol	ebx,10
-	add	esi,eax
-	mov	eax,edi
-	rol	esi,5
-	add	esi,ecx
-	; 5
-	xor	eax,ebx
-	mov	edx,DWORD [20+esp]
-	xor	eax,esi
-	add	ecx,eax
-	mov	eax,esi
-	rol	edi,10
-	add	ecx,edx
-	xor	eax,edi
-	rol	ecx,8
-	add	ecx,ebp
-	; 6
-	mov	edx,DWORD [24+esp]
-	xor	eax,ecx
-	add	ebp,edx
-	rol	esi,10
-	add	ebp,eax
-	mov	eax,ecx
-	rol	ebp,7
-	add	ebp,ebx
-	; 7
-	xor	eax,esi
-	mov	edx,DWORD [28+esp]
-	xor	eax,ebp
-	add	ebx,eax
-	mov	eax,ebp
-	rol	ecx,10
-	add	ebx,edx
-	xor	eax,ecx
-	rol	ebx,9
-	add	ebx,edi
-	; 8
-	mov	edx,DWORD [32+esp]
-	xor	eax,ebx
-	add	edi,edx
-	rol	ebp,10
-	add	edi,eax
-	mov	eax,ebx
-	rol	edi,11
-	add	edi,esi
-	; 9
-	xor	eax,ebp
-	mov	edx,DWORD [36+esp]
-	xor	eax,edi
-	add	esi,eax
-	mov	eax,edi
-	rol	ebx,10
-	add	esi,edx
-	xor	eax,ebx
-	rol	esi,13
-	add	esi,ecx
-	; 10
-	mov	edx,DWORD [40+esp]
-	xor	eax,esi
-	add	ecx,edx
-	rol	edi,10
-	add	ecx,eax
-	mov	eax,esi
-	rol	ecx,14
-	add	ecx,ebp
-	; 11
-	xor	eax,edi
-	mov	edx,DWORD [44+esp]
-	xor	eax,ecx
-	add	ebp,eax
-	mov	eax,ecx
-	rol	esi,10
-	add	ebp,edx
-	xor	eax,esi
-	rol	ebp,15
-	add	ebp,ebx
-	; 12
-	mov	edx,DWORD [48+esp]
-	xor	eax,ebp
-	add	ebx,edx
-	rol	ecx,10
-	add	ebx,eax
-	mov	eax,ebp
-	rol	ebx,6
-	add	ebx,edi
-	; 13
-	xor	eax,ecx
-	mov	edx,DWORD [52+esp]
-	xor	eax,ebx
-	add	edi,eax
-	mov	eax,ebx
-	rol	ebp,10
-	add	edi,edx
-	xor	eax,ebp
-	rol	edi,7
-	add	edi,esi
-	; 14
-	mov	edx,DWORD [56+esp]
-	xor	eax,edi
-	add	esi,edx
-	rol	ebx,10
-	add	esi,eax
-	mov	eax,edi
-	rol	esi,9
-	add	esi,ecx
-	; 15
-	xor	eax,ebx
-	mov	edx,DWORD [60+esp]
-	xor	eax,esi
-	add	ecx,eax
-	mov	eax,-1
-	rol	edi,10
-	add	ecx,edx
-	mov	edx,DWORD [28+esp]
-	rol	ecx,8
-	add	ecx,ebp
-	; 16
-	add	ebp,edx
-	mov	edx,esi
-	sub	eax,ecx
-	and	edx,ecx
-	and	eax,edi
-	or	edx,eax
-	mov	eax,DWORD [16+esp]
-	rol	esi,10
-	lea	ebp,[1518500249+edx*1+ebp]
-	mov	edx,-1
-	rol	ebp,7
-	add	ebp,ebx
-	; 17
-	add	ebx,eax
-	mov	eax,ecx
-	sub	edx,ebp
-	and	eax,ebp
-	and	edx,esi
-	or	eax,edx
-	mov	edx,DWORD [52+esp]
-	rol	ecx,10
-	lea	ebx,[1518500249+eax*1+ebx]
-	mov	eax,-1
-	rol	ebx,6
-	add	ebx,edi
-	; 18
-	add	edi,edx
-	mov	edx,ebp
-	sub	eax,ebx
-	and	edx,ebx
-	and	eax,ecx
-	or	edx,eax
-	mov	eax,DWORD [4+esp]
-	rol	ebp,10
-	lea	edi,[1518500249+edx*1+edi]
-	mov	edx,-1
-	rol	edi,8
-	add	edi,esi
-	; 19
-	add	esi,eax
-	mov	eax,ebx
-	sub	edx,edi
-	and	eax,edi
-	and	edx,ebp
-	or	eax,edx
-	mov	edx,DWORD [40+esp]
-	rol	ebx,10
-	lea	esi,[1518500249+eax*1+esi]
-	mov	eax,-1
-	rol	esi,13
-	add	esi,ecx
-	; 20
-	add	ecx,edx
-	mov	edx,edi
-	sub	eax,esi
-	and	edx,esi
-	and	eax,ebx
-	or	edx,eax
-	mov	eax,DWORD [24+esp]
-	rol	edi,10
-	lea	ecx,[1518500249+edx*1+ecx]
-	mov	edx,-1
-	rol	ecx,11
-	add	ecx,ebp
-	; 21
-	add	ebp,eax
-	mov	eax,esi
-	sub	edx,ecx
-	and	eax,ecx
-	and	edx,edi
-	or	eax,edx
-	mov	edx,DWORD [60+esp]
-	rol	esi,10
-	lea	ebp,[1518500249+eax*1+ebp]
-	mov	eax,-1
-	rol	ebp,9
-	add	ebp,ebx
-	; 22
-	add	ebx,edx
-	mov	edx,ecx
-	sub	eax,ebp
-	and	edx,ebp
-	and	eax,esi
-	or	edx,eax
-	mov	eax,DWORD [12+esp]
-	rol	ecx,10
-	lea	ebx,[1518500249+edx*1+ebx]
-	mov	edx,-1
-	rol	ebx,7
-	add	ebx,edi
-	; 23
-	add	edi,eax
-	mov	eax,ebp
-	sub	edx,ebx
-	and	eax,ebx
-	and	edx,ecx
-	or	eax,edx
-	mov	edx,DWORD [48+esp]
-	rol	ebp,10
-	lea	edi,[1518500249+eax*1+edi]
-	mov	eax,-1
-	rol	edi,15
-	add	edi,esi
-	; 24
-	add	esi,edx
-	mov	edx,ebx
-	sub	eax,edi
-	and	edx,edi
-	and	eax,ebp
-	or	edx,eax
-	mov	eax,DWORD [esp]
-	rol	ebx,10
-	lea	esi,[1518500249+edx*1+esi]
-	mov	edx,-1
-	rol	esi,7
-	add	esi,ecx
-	; 25
-	add	ecx,eax
-	mov	eax,edi
-	sub	edx,esi
-	and	eax,esi
-	and	edx,ebx
-	or	eax,edx
-	mov	edx,DWORD [36+esp]
-	rol	edi,10
-	lea	ecx,[1518500249+eax*1+ecx]
-	mov	eax,-1
-	rol	ecx,12
-	add	ecx,ebp
-	; 26
-	add	ebp,edx
-	mov	edx,esi
-	sub	eax,ecx
-	and	edx,ecx
-	and	eax,edi
-	or	edx,eax
-	mov	eax,DWORD [20+esp]
-	rol	esi,10
-	lea	ebp,[1518500249+edx*1+ebp]
-	mov	edx,-1
-	rol	ebp,15
-	add	ebp,ebx
-	; 27
-	add	ebx,eax
-	mov	eax,ecx
-	sub	edx,ebp
-	and	eax,ebp
-	and	edx,esi
-	or	eax,edx
-	mov	edx,DWORD [8+esp]
-	rol	ecx,10
-	lea	ebx,[1518500249+eax*1+ebx]
-	mov	eax,-1
-	rol	ebx,9
-	add	ebx,edi
-	; 28
-	add	edi,edx
-	mov	edx,ebp
-	sub	eax,ebx
-	and	edx,ebx
-	and	eax,ecx
-	or	edx,eax
-	mov	eax,DWORD [56+esp]
-	rol	ebp,10
-	lea	edi,[1518500249+edx*1+edi]
-	mov	edx,-1
-	rol	edi,11
-	add	edi,esi
-	; 29
-	add	esi,eax
-	mov	eax,ebx
-	sub	edx,edi
-	and	eax,edi
-	and	edx,ebp
-	or	eax,edx
-	mov	edx,DWORD [44+esp]
-	rol	ebx,10
-	lea	esi,[1518500249+eax*1+esi]
-	mov	eax,-1
-	rol	esi,7
-	add	esi,ecx
-	; 30
-	add	ecx,edx
-	mov	edx,edi
-	sub	eax,esi
-	and	edx,esi
-	and	eax,ebx
-	or	edx,eax
-	mov	eax,DWORD [32+esp]
-	rol	edi,10
-	lea	ecx,[1518500249+edx*1+ecx]
-	mov	edx,-1
-	rol	ecx,13
-	add	ecx,ebp
-	; 31
-	add	ebp,eax
-	mov	eax,esi
-	sub	edx,ecx
-	and	eax,ecx
-	and	edx,edi
-	or	eax,edx
-	mov	edx,-1
-	rol	esi,10
-	lea	ebp,[1518500249+eax*1+ebp]
-	sub	edx,ecx
-	rol	ebp,12
-	add	ebp,ebx
-	; 32
-	mov	eax,DWORD [12+esp]
-	or	edx,ebp
-	add	ebx,eax
-	xor	edx,esi
-	mov	eax,-1
-	rol	ecx,10
-	lea	ebx,[1859775393+edx*1+ebx]
-	sub	eax,ebp
-	rol	ebx,11
-	add	ebx,edi
-	; 33
-	mov	edx,DWORD [40+esp]
-	or	eax,ebx
-	add	edi,edx
-	xor	eax,ecx
-	mov	edx,-1
-	rol	ebp,10
-	lea	edi,[1859775393+eax*1+edi]
-	sub	edx,ebx
-	rol	edi,13
-	add	edi,esi
-	; 34
-	mov	eax,DWORD [56+esp]
-	or	edx,edi
-	add	esi,eax
-	xor	edx,ebp
-	mov	eax,-1
-	rol	ebx,10
-	lea	esi,[1859775393+edx*1+esi]
-	sub	eax,edi
-	rol	esi,6
-	add	esi,ecx
-	; 35
-	mov	edx,DWORD [16+esp]
-	or	eax,esi
-	add	ecx,edx
-	xor	eax,ebx
-	mov	edx,-1
-	rol	edi,10
-	lea	ecx,[1859775393+eax*1+ecx]
-	sub	edx,esi
-	rol	ecx,7
-	add	ecx,ebp
-	; 36
-	mov	eax,DWORD [36+esp]
-	or	edx,ecx
-	add	ebp,eax
-	xor	edx,edi
-	mov	eax,-1
-	rol	esi,10
-	lea	ebp,[1859775393+edx*1+ebp]
-	sub	eax,ecx
-	rol	ebp,14
-	add	ebp,ebx
-	; 37
-	mov	edx,DWORD [60+esp]
-	or	eax,ebp
-	add	ebx,edx
-	xor	eax,esi
-	mov	edx,-1
-	rol	ecx,10
-	lea	ebx,[1859775393+eax*1+ebx]
-	sub	edx,ebp
-	rol	ebx,9
-	add	ebx,edi
-	; 38
-	mov	eax,DWORD [32+esp]
-	or	edx,ebx
-	add	edi,eax
-	xor	edx,ecx
-	mov	eax,-1
-	rol	ebp,10
-	lea	edi,[1859775393+edx*1+edi]
-	sub	eax,ebx
-	rol	edi,13
-	add	edi,esi
-	; 39
-	mov	edx,DWORD [4+esp]
-	or	eax,edi
-	add	esi,edx
-	xor	eax,ebp
-	mov	edx,-1
-	rol	ebx,10
-	lea	esi,[1859775393+eax*1+esi]
-	sub	edx,edi
-	rol	esi,15
-	add	esi,ecx
-	; 40
-	mov	eax,DWORD [8+esp]
-	or	edx,esi
-	add	ecx,eax
-	xor	edx,ebx
-	mov	eax,-1
-	rol	edi,10
-	lea	ecx,[1859775393+edx*1+ecx]
-	sub	eax,esi
-	rol	ecx,14
-	add	ecx,ebp
-	; 41
-	mov	edx,DWORD [28+esp]
-	or	eax,ecx
-	add	ebp,edx
-	xor	eax,edi
-	mov	edx,-1
-	rol	esi,10
-	lea	ebp,[1859775393+eax*1+ebp]
-	sub	edx,ecx
-	rol	ebp,8
-	add	ebp,ebx
-	; 42
-	mov	eax,DWORD [esp]
-	or	edx,ebp
-	add	ebx,eax
-	xor	edx,esi
-	mov	eax,-1
-	rol	ecx,10
-	lea	ebx,[1859775393+edx*1+ebx]
-	sub	eax,ebp
-	rol	ebx,13
-	add	ebx,edi
-	; 43
-	mov	edx,DWORD [24+esp]
-	or	eax,ebx
-	add	edi,edx
-	xor	eax,ecx
-	mov	edx,-1
-	rol	ebp,10
-	lea	edi,[1859775393+eax*1+edi]
-	sub	edx,ebx
-	rol	edi,6
-	add	edi,esi
-	; 44
-	mov	eax,DWORD [52+esp]
-	or	edx,edi
-	add	esi,eax
-	xor	edx,ebp
-	mov	eax,-1
-	rol	ebx,10
-	lea	esi,[1859775393+edx*1+esi]
-	sub	eax,edi
-	rol	esi,5
-	add	esi,ecx
-	; 45
-	mov	edx,DWORD [44+esp]
-	or	eax,esi
-	add	ecx,edx
-	xor	eax,ebx
-	mov	edx,-1
-	rol	edi,10
-	lea	ecx,[1859775393+eax*1+ecx]
-	sub	edx,esi
-	rol	ecx,12
-	add	ecx,ebp
-	; 46
-	mov	eax,DWORD [20+esp]
-	or	edx,ecx
-	add	ebp,eax
-	xor	edx,edi
-	mov	eax,-1
-	rol	esi,10
-	lea	ebp,[1859775393+edx*1+ebp]
-	sub	eax,ecx
-	rol	ebp,7
-	add	ebp,ebx
-	; 47
-	mov	edx,DWORD [48+esp]
-	or	eax,ebp
-	add	ebx,edx
-	xor	eax,esi
-	mov	edx,-1
-	rol	ecx,10
-	lea	ebx,[1859775393+eax*1+ebx]
-	mov	eax,ecx
-	rol	ebx,5
-	add	ebx,edi
-	; 48
-	sub	edx,ecx
-	and	eax,ebx
-	and	edx,ebp
-	or	edx,eax
-	mov	eax,DWORD [4+esp]
-	rol	ebp,10
-	lea	edi,[2400959708+edx*1+edi]
-	mov	edx,-1
-	add	edi,eax
-	mov	eax,ebp
-	rol	edi,11
-	add	edi,esi
-	; 49
-	sub	edx,ebp
-	and	eax,edi
-	and	edx,ebx
-	or	edx,eax
-	mov	eax,DWORD [36+esp]
-	rol	ebx,10
-	lea	esi,[2400959708+edx*1+esi]
-	mov	edx,-1
-	add	esi,eax
-	mov	eax,ebx
-	rol	esi,12
-	add	esi,ecx
-	; 50
-	sub	edx,ebx
-	and	eax,esi
-	and	edx,edi
-	or	edx,eax
-	mov	eax,DWORD [44+esp]
-	rol	edi,10
-	lea	ecx,[2400959708+edx*1+ecx]
-	mov	edx,-1
-	add	ecx,eax
-	mov	eax,edi
-	rol	ecx,14
-	add	ecx,ebp
-	; 51
-	sub	edx,edi
-	and	eax,ecx
-	and	edx,esi
-	or	edx,eax
-	mov	eax,DWORD [40+esp]
-	rol	esi,10
-	lea	ebp,[2400959708+edx*1+ebp]
-	mov	edx,-1
-	add	ebp,eax
-	mov	eax,esi
-	rol	ebp,15
-	add	ebp,ebx
-	; 52
-	sub	edx,esi
-	and	eax,ebp
-	and	edx,ecx
-	or	edx,eax
-	mov	eax,DWORD [esp]
-	rol	ecx,10
-	lea	ebx,[2400959708+edx*1+ebx]
-	mov	edx,-1
-	add	ebx,eax
-	mov	eax,ecx
-	rol	ebx,14
-	add	ebx,edi
-	; 53
-	sub	edx,ecx
-	and	eax,ebx
-	and	edx,ebp
-	or	edx,eax
-	mov	eax,DWORD [32+esp]
-	rol	ebp,10
-	lea	edi,[2400959708+edx*1+edi]
-	mov	edx,-1
-	add	edi,eax
-	mov	eax,ebp
-	rol	edi,15
-	add	edi,esi
-	; 54
-	sub	edx,ebp
-	and	eax,edi
-	and	edx,ebx
-	or	edx,eax
-	mov	eax,DWORD [48+esp]
-	rol	ebx,10
-	lea	esi,[2400959708+edx*1+esi]
-	mov	edx,-1
-	add	esi,eax
-	mov	eax,ebx
-	rol	esi,9
-	add	esi,ecx
-	; 55
-	sub	edx,ebx
-	and	eax,esi
-	and	edx,edi
-	or	edx,eax
-	mov	eax,DWORD [16+esp]
-	rol	edi,10
-	lea	ecx,[2400959708+edx*1+ecx]
-	mov	edx,-1
-	add	ecx,eax
-	mov	eax,edi
-	rol	ecx,8
-	add	ecx,ebp
-	; 56
-	sub	edx,edi
-	and	eax,ecx
-	and	edx,esi
-	or	edx,eax
-	mov	eax,DWORD [52+esp]
-	rol	esi,10
-	lea	ebp,[2400959708+edx*1+ebp]
-	mov	edx,-1
-	add	ebp,eax
-	mov	eax,esi
-	rol	ebp,9
-	add	ebp,ebx
-	; 57
-	sub	edx,esi
-	and	eax,ebp
-	and	edx,ecx
-	or	edx,eax
-	mov	eax,DWORD [12+esp]
-	rol	ecx,10
-	lea	ebx,[2400959708+edx*1+ebx]
-	mov	edx,-1
-	add	ebx,eax
-	mov	eax,ecx
-	rol	ebx,14
-	add	ebx,edi
-	; 58
-	sub	edx,ecx
-	and	eax,ebx
-	and	edx,ebp
-	or	edx,eax
-	mov	eax,DWORD [28+esp]
-	rol	ebp,10
-	lea	edi,[2400959708+edx*1+edi]
-	mov	edx,-1
-	add	edi,eax
-	mov	eax,ebp
-	rol	edi,5
-	add	edi,esi
-	; 59
-	sub	edx,ebp
-	and	eax,edi
-	and	edx,ebx
-	or	edx,eax
-	mov	eax,DWORD [60+esp]
-	rol	ebx,10
-	lea	esi,[2400959708+edx*1+esi]
-	mov	edx,-1
-	add	esi,eax
-	mov	eax,ebx
-	rol	esi,6
-	add	esi,ecx
-	; 60
-	sub	edx,ebx
-	and	eax,esi
-	and	edx,edi
-	or	edx,eax
-	mov	eax,DWORD [56+esp]
-	rol	edi,10
-	lea	ecx,[2400959708+edx*1+ecx]
-	mov	edx,-1
-	add	ecx,eax
-	mov	eax,edi
-	rol	ecx,8
-	add	ecx,ebp
-	; 61
-	sub	edx,edi
-	and	eax,ecx
-	and	edx,esi
-	or	edx,eax
-	mov	eax,DWORD [20+esp]
-	rol	esi,10
-	lea	ebp,[2400959708+edx*1+ebp]
-	mov	edx,-1
-	add	ebp,eax
-	mov	eax,esi
-	rol	ebp,6
-	add	ebp,ebx
-	; 62
-	sub	edx,esi
-	and	eax,ebp
-	and	edx,ecx
-	or	edx,eax
-	mov	eax,DWORD [24+esp]
-	rol	ecx,10
-	lea	ebx,[2400959708+edx*1+ebx]
-	mov	edx,-1
-	add	ebx,eax
-	mov	eax,ecx
-	rol	ebx,5
-	add	ebx,edi
-	; 63
-	sub	edx,ecx
-	and	eax,ebx
-	and	edx,ebp
-	or	edx,eax
-	mov	eax,DWORD [8+esp]
-	rol	ebp,10
-	lea	edi,[2400959708+edx*1+edi]
-	mov	edx,-1
-	add	edi,eax
-	sub	edx,ebp
-	rol	edi,12
-	add	edi,esi
-	; 64
-	mov	eax,DWORD [16+esp]
-	or	edx,ebx
-	add	esi,eax
-	xor	edx,edi
-	mov	eax,-1
-	rol	ebx,10
-	lea	esi,[2840853838+edx*1+esi]
-	sub	eax,ebx
-	rol	esi,9
-	add	esi,ecx
-	; 65
-	mov	edx,DWORD [esp]
-	or	eax,edi
-	add	ecx,edx
-	xor	eax,esi
-	mov	edx,-1
-	rol	edi,10
-	lea	ecx,[2840853838+eax*1+ecx]
-	sub	edx,edi
-	rol	ecx,15
-	add	ecx,ebp
-	; 66
-	mov	eax,DWORD [20+esp]
-	or	edx,esi
-	add	ebp,eax
-	xor	edx,ecx
-	mov	eax,-1
-	rol	esi,10
-	lea	ebp,[2840853838+edx*1+ebp]
-	sub	eax,esi
-	rol	ebp,5
-	add	ebp,ebx
-	; 67
-	mov	edx,DWORD [36+esp]
-	or	eax,ecx
-	add	ebx,edx
-	xor	eax,ebp
-	mov	edx,-1
-	rol	ecx,10
-	lea	ebx,[2840853838+eax*1+ebx]
-	sub	edx,ecx
-	rol	ebx,11
-	add	ebx,edi
-	; 68
-	mov	eax,DWORD [28+esp]
-	or	edx,ebp
-	add	edi,eax
-	xor	edx,ebx
-	mov	eax,-1
-	rol	ebp,10
-	lea	edi,[2840853838+edx*1+edi]
-	sub	eax,ebp
-	rol	edi,6
-	add	edi,esi
-	; 69
-	mov	edx,DWORD [48+esp]
-	or	eax,ebx
-	add	esi,edx
-	xor	eax,edi
-	mov	edx,-1
-	rol	ebx,10
-	lea	esi,[2840853838+eax*1+esi]
-	sub	edx,ebx
-	rol	esi,8
-	add	esi,ecx
-	; 70
-	mov	eax,DWORD [8+esp]
-	or	edx,edi
-	add	ecx,eax
-	xor	edx,esi
-	mov	eax,-1
-	rol	edi,10
-	lea	ecx,[2840853838+edx*1+ecx]
-	sub	eax,edi
-	rol	ecx,13
-	add	ecx,ebp
-	; 71
-	mov	edx,DWORD [40+esp]
-	or	eax,esi
-	add	ebp,edx
-	xor	eax,ecx
-	mov	edx,-1
-	rol	esi,10
-	lea	ebp,[2840853838+eax*1+ebp]
-	sub	edx,esi
-	rol	ebp,12
-	add	ebp,ebx
-	; 72
-	mov	eax,DWORD [56+esp]
-	or	edx,ecx
-	add	ebx,eax
-	xor	edx,ebp
-	mov	eax,-1
-	rol	ecx,10
-	lea	ebx,[2840853838+edx*1+ebx]
-	sub	eax,ecx
-	rol	ebx,5
-	add	ebx,edi
-	; 73
-	mov	edx,DWORD [4+esp]
-	or	eax,ebp
-	add	edi,edx
-	xor	eax,ebx
-	mov	edx,-1
-	rol	ebp,10
-	lea	edi,[2840853838+eax*1+edi]
-	sub	edx,ebp
-	rol	edi,12
-	add	edi,esi
-	; 74
-	mov	eax,DWORD [12+esp]
-	or	edx,ebx
-	add	esi,eax
-	xor	edx,edi
-	mov	eax,-1
-	rol	ebx,10
-	lea	esi,[2840853838+edx*1+esi]
-	sub	eax,ebx
-	rol	esi,13
-	add	esi,ecx
-	; 75
-	mov	edx,DWORD [32+esp]
-	or	eax,edi
-	add	ecx,edx
-	xor	eax,esi
-	mov	edx,-1
-	rol	edi,10
-	lea	ecx,[2840853838+eax*1+ecx]
-	sub	edx,edi
-	rol	ecx,14
-	add	ecx,ebp
-	; 76
-	mov	eax,DWORD [44+esp]
-	or	edx,esi
-	add	ebp,eax
-	xor	edx,ecx
-	mov	eax,-1
-	rol	esi,10
-	lea	ebp,[2840853838+edx*1+ebp]
-	sub	eax,esi
-	rol	ebp,11
-	add	ebp,ebx
-	; 77
-	mov	edx,DWORD [24+esp]
-	or	eax,ecx
-	add	ebx,edx
-	xor	eax,ebp
-	mov	edx,-1
-	rol	ecx,10
-	lea	ebx,[2840853838+eax*1+ebx]
-	sub	edx,ecx
-	rol	ebx,8
-	add	ebx,edi
-	; 78
-	mov	eax,DWORD [60+esp]
-	or	edx,ebp
-	add	edi,eax
-	xor	edx,ebx
-	mov	eax,-1
-	rol	ebp,10
-	lea	edi,[2840853838+edx*1+edi]
-	sub	eax,ebp
-	rol	edi,5
-	add	edi,esi
-	; 79
-	mov	edx,DWORD [52+esp]
-	or	eax,ebx
-	add	esi,edx
-	xor	eax,edi
-	mov	edx,DWORD [128+esp]
-	rol	ebx,10
-	lea	esi,[2840853838+eax*1+esi]
-	mov	DWORD [64+esp],ecx
-	rol	esi,6
-	add	esi,ecx
-	mov	ecx,DWORD [edx]
-	mov	DWORD [68+esp],esi
-	mov	DWORD [72+esp],edi
-	mov	esi,DWORD [4+edx]
-	mov	DWORD [76+esp],ebx
-	mov	edi,DWORD [8+edx]
-	mov	DWORD [80+esp],ebp
-	mov	ebx,DWORD [12+edx]
-	mov	ebp,DWORD [16+edx]
-	; 80
-	mov	edx,-1
-	sub	edx,ebx
-	mov	eax,DWORD [20+esp]
-	or	edx,edi
-	add	ecx,eax
-	xor	edx,esi
-	mov	eax,-1
-	rol	edi,10
-	lea	ecx,[1352829926+edx*1+ecx]
-	sub	eax,edi
-	rol	ecx,8
-	add	ecx,ebp
-	; 81
-	mov	edx,DWORD [56+esp]
-	or	eax,esi
-	add	ebp,edx
-	xor	eax,ecx
-	mov	edx,-1
-	rol	esi,10
-	lea	ebp,[1352829926+eax*1+ebp]
-	sub	edx,esi
-	rol	ebp,9
-	add	ebp,ebx
-	; 82
-	mov	eax,DWORD [28+esp]
-	or	edx,ecx
-	add	ebx,eax
-	xor	edx,ebp
-	mov	eax,-1
-	rol	ecx,10
-	lea	ebx,[1352829926+edx*1+ebx]
-	sub	eax,ecx
-	rol	ebx,9
-	add	ebx,edi
-	; 83
-	mov	edx,DWORD [esp]
-	or	eax,ebp
-	add	edi,edx
-	xor	eax,ebx
-	mov	edx,-1
-	rol	ebp,10
-	lea	edi,[1352829926+eax*1+edi]
-	sub	edx,ebp
-	rol	edi,11
-	add	edi,esi
-	; 84
-	mov	eax,DWORD [36+esp]
-	or	edx,ebx
-	add	esi,eax
-	xor	edx,edi
-	mov	eax,-1
-	rol	ebx,10
-	lea	esi,[1352829926+edx*1+esi]
-	sub	eax,ebx
-	rol	esi,13
-	add	esi,ecx
-	; 85
-	mov	edx,DWORD [8+esp]
-	or	eax,edi
-	add	ecx,edx
-	xor	eax,esi
-	mov	edx,-1
-	rol	edi,10
-	lea	ecx,[1352829926+eax*1+ecx]
-	sub	edx,edi
-	rol	ecx,15
-	add	ecx,ebp
-	; 86
-	mov	eax,DWORD [44+esp]
-	or	edx,esi
-	add	ebp,eax
-	xor	edx,ecx
-	mov	eax,-1
-	rol	esi,10
-	lea	ebp,[1352829926+edx*1+ebp]
-	sub	eax,esi
-	rol	ebp,15
-	add	ebp,ebx
-	; 87
-	mov	edx,DWORD [16+esp]
-	or	eax,ecx
-	add	ebx,edx
-	xor	eax,ebp
-	mov	edx,-1
-	rol	ecx,10
-	lea	ebx,[1352829926+eax*1+ebx]
-	sub	edx,ecx
-	rol	ebx,5
-	add	ebx,edi
-	; 88
-	mov	eax,DWORD [52+esp]
-	or	edx,ebp
-	add	edi,eax
-	xor	edx,ebx
-	mov	eax,-1
-	rol	ebp,10
-	lea	edi,[1352829926+edx*1+edi]
-	sub	eax,ebp
-	rol	edi,7
-	add	edi,esi
-	; 89
-	mov	edx,DWORD [24+esp]
-	or	eax,ebx
-	add	esi,edx
-	xor	eax,edi
-	mov	edx,-1
-	rol	ebx,10
-	lea	esi,[1352829926+eax*1+esi]
-	sub	edx,ebx
-	rol	esi,7
-	add	esi,ecx
-	; 90
-	mov	eax,DWORD [60+esp]
-	or	edx,edi
-	add	ecx,eax
-	xor	edx,esi
-	mov	eax,-1
-	rol	edi,10
-	lea	ecx,[1352829926+edx*1+ecx]
-	sub	eax,edi
-	rol	ecx,8
-	add	ecx,ebp
-	; 91
-	mov	edx,DWORD [32+esp]
-	or	eax,esi
-	add	ebp,edx
-	xor	eax,ecx
-	mov	edx,-1
-	rol	esi,10
-	lea	ebp,[1352829926+eax*1+ebp]
-	sub	edx,esi
-	rol	ebp,11
-	add	ebp,ebx
-	; 92
-	mov	eax,DWORD [4+esp]
-	or	edx,ecx
-	add	ebx,eax
-	xor	edx,ebp
-	mov	eax,-1
-	rol	ecx,10
-	lea	ebx,[1352829926+edx*1+ebx]
-	sub	eax,ecx
-	rol	ebx,14
-	add	ebx,edi
-	; 93
-	mov	edx,DWORD [40+esp]
-	or	eax,ebp
-	add	edi,edx
-	xor	eax,ebx
-	mov	edx,-1
-	rol	ebp,10
-	lea	edi,[1352829926+eax*1+edi]
-	sub	edx,ebp
-	rol	edi,14
-	add	edi,esi
-	; 94
-	mov	eax,DWORD [12+esp]
-	or	edx,ebx
-	add	esi,eax
-	xor	edx,edi
-	mov	eax,-1
-	rol	ebx,10
-	lea	esi,[1352829926+edx*1+esi]
-	sub	eax,ebx
-	rol	esi,12
-	add	esi,ecx
-	; 95
-	mov	edx,DWORD [48+esp]
-	or	eax,edi
-	add	ecx,edx
-	xor	eax,esi
-	mov	edx,-1
-	rol	edi,10
-	lea	ecx,[1352829926+eax*1+ecx]
-	mov	eax,edi
-	rol	ecx,6
-	add	ecx,ebp
-	; 96
-	sub	edx,edi
-	and	eax,ecx
-	and	edx,esi
-	or	edx,eax
-	mov	eax,DWORD [24+esp]
-	rol	esi,10
-	lea	ebp,[1548603684+edx*1+ebp]
-	mov	edx,-1
-	add	ebp,eax
-	mov	eax,esi
-	rol	ebp,9
-	add	ebp,ebx
-	; 97
-	sub	edx,esi
-	and	eax,ebp
-	and	edx,ecx
-	or	edx,eax
-	mov	eax,DWORD [44+esp]
-	rol	ecx,10
-	lea	ebx,[1548603684+edx*1+ebx]
-	mov	edx,-1
-	add	ebx,eax
-	mov	eax,ecx
-	rol	ebx,13
-	add	ebx,edi
-	; 98
-	sub	edx,ecx
-	and	eax,ebx
-	and	edx,ebp
-	or	edx,eax
-	mov	eax,DWORD [12+esp]
-	rol	ebp,10
-	lea	edi,[1548603684+edx*1+edi]
-	mov	edx,-1
-	add	edi,eax
-	mov	eax,ebp
-	rol	edi,15
-	add	edi,esi
-	; 99
-	sub	edx,ebp
-	and	eax,edi
-	and	edx,ebx
-	or	edx,eax
-	mov	eax,DWORD [28+esp]
-	rol	ebx,10
-	lea	esi,[1548603684+edx*1+esi]
-	mov	edx,-1
-	add	esi,eax
-	mov	eax,ebx
-	rol	esi,7
-	add	esi,ecx
-	; 100
-	sub	edx,ebx
-	and	eax,esi
-	and	edx,edi
-	or	edx,eax
-	mov	eax,DWORD [esp]
-	rol	edi,10
-	lea	ecx,[1548603684+edx*1+ecx]
-	mov	edx,-1
-	add	ecx,eax
-	mov	eax,edi
-	rol	ecx,12
-	add	ecx,ebp
-	; 101
-	sub	edx,edi
-	and	eax,ecx
-	and	edx,esi
-	or	edx,eax
-	mov	eax,DWORD [52+esp]
-	rol	esi,10
-	lea	ebp,[1548603684+edx*1+ebp]
-	mov	edx,-1
-	add	ebp,eax
-	mov	eax,esi
-	rol	ebp,8
-	add	ebp,ebx
-	; 102
-	sub	edx,esi
-	and	eax,ebp
-	and	edx,ecx
-	or	edx,eax
-	mov	eax,DWORD [20+esp]
-	rol	ecx,10
-	lea	ebx,[1548603684+edx*1+ebx]
-	mov	edx,-1
-	add	ebx,eax
-	mov	eax,ecx
-	rol	ebx,9
-	add	ebx,edi
-	; 103
-	sub	edx,ecx
-	and	eax,ebx
-	and	edx,ebp
-	or	edx,eax
-	mov	eax,DWORD [40+esp]
-	rol	ebp,10
-	lea	edi,[1548603684+edx*1+edi]
-	mov	edx,-1
-	add	edi,eax
-	mov	eax,ebp
-	rol	edi,11
-	add	edi,esi
-	; 104
-	sub	edx,ebp
-	and	eax,edi
-	and	edx,ebx
-	or	edx,eax
-	mov	eax,DWORD [56+esp]
-	rol	ebx,10
-	lea	esi,[1548603684+edx*1+esi]
-	mov	edx,-1
-	add	esi,eax
-	mov	eax,ebx
-	rol	esi,7
-	add	esi,ecx
-	; 105
-	sub	edx,ebx
-	and	eax,esi
-	and	edx,edi
-	or	edx,eax
-	mov	eax,DWORD [60+esp]
-	rol	edi,10
-	lea	ecx,[1548603684+edx*1+ecx]
-	mov	edx,-1
-	add	ecx,eax
-	mov	eax,edi
-	rol	ecx,7
-	add	ecx,ebp
-	; 106
-	sub	edx,edi
-	and	eax,ecx
-	and	edx,esi
-	or	edx,eax
-	mov	eax,DWORD [32+esp]
-	rol	esi,10
-	lea	ebp,[1548603684+edx*1+ebp]
-	mov	edx,-1
-	add	ebp,eax
-	mov	eax,esi
-	rol	ebp,12
-	add	ebp,ebx
-	; 107
-	sub	edx,esi
-	and	eax,ebp
-	and	edx,ecx
-	or	edx,eax
-	mov	eax,DWORD [48+esp]
-	rol	ecx,10
-	lea	ebx,[1548603684+edx*1+ebx]
-	mov	edx,-1
-	add	ebx,eax
-	mov	eax,ecx
-	rol	ebx,7
-	add	ebx,edi
-	; 108
-	sub	edx,ecx
-	and	eax,ebx
-	and	edx,ebp
-	or	edx,eax
-	mov	eax,DWORD [16+esp]
-	rol	ebp,10
-	lea	edi,[1548603684+edx*1+edi]
-	mov	edx,-1
-	add	edi,eax
-	mov	eax,ebp
-	rol	edi,6
-	add	edi,esi
-	; 109
-	sub	edx,ebp
-	and	eax,edi
-	and	edx,ebx
-	or	edx,eax
-	mov	eax,DWORD [36+esp]
-	rol	ebx,10
-	lea	esi,[1548603684+edx*1+esi]
-	mov	edx,-1
-	add	esi,eax
-	mov	eax,ebx
-	rol	esi,15
-	add	esi,ecx
-	; 110
-	sub	edx,ebx
-	and	eax,esi
-	and	edx,edi
-	or	edx,eax
-	mov	eax,DWORD [4+esp]
-	rol	edi,10
-	lea	ecx,[1548603684+edx*1+ecx]
-	mov	edx,-1
-	add	ecx,eax
-	mov	eax,edi
-	rol	ecx,13
-	add	ecx,ebp
-	; 111
-	sub	edx,edi
-	and	eax,ecx
-	and	edx,esi
-	or	edx,eax
-	mov	eax,DWORD [8+esp]
-	rol	esi,10
-	lea	ebp,[1548603684+edx*1+ebp]
-	mov	edx,-1
-	add	ebp,eax
-	sub	edx,ecx
-	rol	ebp,11
-	add	ebp,ebx
-	; 112
-	mov	eax,DWORD [60+esp]
-	or	edx,ebp
-	add	ebx,eax
-	xor	edx,esi
-	mov	eax,-1
-	rol	ecx,10
-	lea	ebx,[1836072691+edx*1+ebx]
-	sub	eax,ebp
-	rol	ebx,9
-	add	ebx,edi
-	; 113
-	mov	edx,DWORD [20+esp]
-	or	eax,ebx
-	add	edi,edx
-	xor	eax,ecx
-	mov	edx,-1
-	rol	ebp,10
-	lea	edi,[1836072691+eax*1+edi]
-	sub	edx,ebx
-	rol	edi,7
-	add	edi,esi
-	; 114
-	mov	eax,DWORD [4+esp]
-	or	edx,edi
-	add	esi,eax
-	xor	edx,ebp
-	mov	eax,-1
-	rol	ebx,10
-	lea	esi,[1836072691+edx*1+esi]
-	sub	eax,edi
-	rol	esi,15
-	add	esi,ecx
-	; 115
-	mov	edx,DWORD [12+esp]
-	or	eax,esi
-	add	ecx,edx
-	xor	eax,ebx
-	mov	edx,-1
-	rol	edi,10
-	lea	ecx,[1836072691+eax*1+ecx]
-	sub	edx,esi
-	rol	ecx,11
-	add	ecx,ebp
-	; 116
-	mov	eax,DWORD [28+esp]
-	or	edx,ecx
-	add	ebp,eax
-	xor	edx,edi
-	mov	eax,-1
-	rol	esi,10
-	lea	ebp,[1836072691+edx*1+ebp]
-	sub	eax,ecx
-	rol	ebp,8
-	add	ebp,ebx
-	; 117
-	mov	edx,DWORD [56+esp]
-	or	eax,ebp
-	add	ebx,edx
-	xor	eax,esi
-	mov	edx,-1
-	rol	ecx,10
-	lea	ebx,[1836072691+eax*1+ebx]
-	sub	edx,ebp
-	rol	ebx,6
-	add	ebx,edi
-	; 118
-	mov	eax,DWORD [24+esp]
-	or	edx,ebx
-	add	edi,eax
-	xor	edx,ecx
-	mov	eax,-1
-	rol	ebp,10
-	lea	edi,[1836072691+edx*1+edi]
-	sub	eax,ebx
-	rol	edi,6
-	add	edi,esi
-	; 119
-	mov	edx,DWORD [36+esp]
-	or	eax,edi
-	add	esi,edx
-	xor	eax,ebp
-	mov	edx,-1
-	rol	ebx,10
-	lea	esi,[1836072691+eax*1+esi]
-	sub	edx,edi
-	rol	esi,14
-	add	esi,ecx
-	; 120
-	mov	eax,DWORD [44+esp]
-	or	edx,esi
-	add	ecx,eax
-	xor	edx,ebx
-	mov	eax,-1
-	rol	edi,10
-	lea	ecx,[1836072691+edx*1+ecx]
-	sub	eax,esi
-	rol	ecx,12
-	add	ecx,ebp
-	; 121
-	mov	edx,DWORD [32+esp]
-	or	eax,ecx
-	add	ebp,edx
-	xor	eax,edi
-	mov	edx,-1
-	rol	esi,10
-	lea	ebp,[1836072691+eax*1+ebp]
-	sub	edx,ecx
-	rol	ebp,13
-	add	ebp,ebx
-	; 122
-	mov	eax,DWORD [48+esp]
-	or	edx,ebp
-	add	ebx,eax
-	xor	edx,esi
-	mov	eax,-1
-	rol	ecx,10
-	lea	ebx,[1836072691+edx*1+ebx]
-	sub	eax,ebp
-	rol	ebx,5
-	add	ebx,edi
-	; 123
-	mov	edx,DWORD [8+esp]
-	or	eax,ebx
-	add	edi,edx
-	xor	eax,ecx
-	mov	edx,-1
-	rol	ebp,10
-	lea	edi,[1836072691+eax*1+edi]
-	sub	edx,ebx
-	rol	edi,14
-	add	edi,esi
-	; 124
-	mov	eax,DWORD [40+esp]
-	or	edx,edi
-	add	esi,eax
-	xor	edx,ebp
-	mov	eax,-1
-	rol	ebx,10
-	lea	esi,[1836072691+edx*1+esi]
-	sub	eax,edi
-	rol	esi,13
-	add	esi,ecx
-	; 125
-	mov	edx,DWORD [esp]
-	or	eax,esi
-	add	ecx,edx
-	xor	eax,ebx
-	mov	edx,-1
-	rol	edi,10
-	lea	ecx,[1836072691+eax*1+ecx]
-	sub	edx,esi
-	rol	ecx,13
-	add	ecx,ebp
-	; 126
-	mov	eax,DWORD [16+esp]
-	or	edx,ecx
-	add	ebp,eax
-	xor	edx,edi
-	mov	eax,-1
-	rol	esi,10
-	lea	ebp,[1836072691+edx*1+ebp]
-	sub	eax,ecx
-	rol	ebp,7
-	add	ebp,ebx
-	; 127
-	mov	edx,DWORD [52+esp]
-	or	eax,ebp
-	add	ebx,edx
-	xor	eax,esi
-	mov	edx,DWORD [32+esp]
-	rol	ecx,10
-	lea	ebx,[1836072691+eax*1+ebx]
-	mov	eax,-1
-	rol	ebx,5
-	add	ebx,edi
-	; 128
-	add	edi,edx
-	mov	edx,ebp
-	sub	eax,ebx
-	and	edx,ebx
-	and	eax,ecx
-	or	edx,eax
-	mov	eax,DWORD [24+esp]
-	rol	ebp,10
-	lea	edi,[2053994217+edx*1+edi]
-	mov	edx,-1
-	rol	edi,15
-	add	edi,esi
-	; 129
-	add	esi,eax
-	mov	eax,ebx
-	sub	edx,edi
-	and	eax,edi
-	and	edx,ebp
-	or	eax,edx
-	mov	edx,DWORD [16+esp]
-	rol	ebx,10
-	lea	esi,[2053994217+eax*1+esi]
-	mov	eax,-1
-	rol	esi,5
-	add	esi,ecx
-	; 130
-	add	ecx,edx
-	mov	edx,edi
-	sub	eax,esi
-	and	edx,esi
-	and	eax,ebx
-	or	edx,eax
-	mov	eax,DWORD [4+esp]
-	rol	edi,10
-	lea	ecx,[2053994217+edx*1+ecx]
-	mov	edx,-1
-	rol	ecx,8
-	add	ecx,ebp
-	; 131
-	add	ebp,eax
-	mov	eax,esi
-	sub	edx,ecx
-	and	eax,ecx
-	and	edx,edi
-	or	eax,edx
-	mov	edx,DWORD [12+esp]
-	rol	esi,10
-	lea	ebp,[2053994217+eax*1+ebp]
-	mov	eax,-1
-	rol	ebp,11
-	add	ebp,ebx
-	; 132
-	add	ebx,edx
-	mov	edx,ecx
-	sub	eax,ebp
-	and	edx,ebp
-	and	eax,esi
-	or	edx,eax
-	mov	eax,DWORD [44+esp]
-	rol	ecx,10
-	lea	ebx,[2053994217+edx*1+ebx]
-	mov	edx,-1
-	rol	ebx,14
-	add	ebx,edi
-	; 133
-	add	edi,eax
-	mov	eax,ebp
-	sub	edx,ebx
-	and	eax,ebx
-	and	edx,ecx
-	or	eax,edx
-	mov	edx,DWORD [60+esp]
-	rol	ebp,10
-	lea	edi,[2053994217+eax*1+edi]
-	mov	eax,-1
-	rol	edi,14
-	add	edi,esi
-	; 134
-	add	esi,edx
-	mov	edx,ebx
-	sub	eax,edi
-	and	edx,edi
-	and	eax,ebp
-	or	edx,eax
-	mov	eax,DWORD [esp]
-	rol	ebx,10
-	lea	esi,[2053994217+edx*1+esi]
-	mov	edx,-1
-	rol	esi,6
-	add	esi,ecx
-	; 135
-	add	ecx,eax
-	mov	eax,edi
-	sub	edx,esi
-	and	eax,esi
-	and	edx,ebx
-	or	eax,edx
-	mov	edx,DWORD [20+esp]
-	rol	edi,10
-	lea	ecx,[2053994217+eax*1+ecx]
-	mov	eax,-1
-	rol	ecx,14
-	add	ecx,ebp
-	; 136
-	add	ebp,edx
-	mov	edx,esi
-	sub	eax,ecx
-	and	edx,ecx
-	and	eax,edi
-	or	edx,eax
-	mov	eax,DWORD [48+esp]
-	rol	esi,10
-	lea	ebp,[2053994217+edx*1+ebp]
-	mov	edx,-1
-	rol	ebp,6
-	add	ebp,ebx
-	; 137
-	add	ebx,eax
-	mov	eax,ecx
-	sub	edx,ebp
-	and	eax,ebp
-	and	edx,esi
-	or	eax,edx
-	mov	edx,DWORD [8+esp]
-	rol	ecx,10
-	lea	ebx,[2053994217+eax*1+ebx]
-	mov	eax,-1
-	rol	ebx,9
-	add	ebx,edi
-	; 138
-	add	edi,edx
-	mov	edx,ebp
-	sub	eax,ebx
-	and	edx,ebx
-	and	eax,ecx
-	or	edx,eax
-	mov	eax,DWORD [52+esp]
-	rol	ebp,10
-	lea	edi,[2053994217+edx*1+edi]
-	mov	edx,-1
-	rol	edi,12
-	add	edi,esi
-	; 139
-	add	esi,eax
-	mov	eax,ebx
-	sub	edx,edi
-	and	eax,edi
-	and	edx,ebp
-	or	eax,edx
-	mov	edx,DWORD [36+esp]
-	rol	ebx,10
-	lea	esi,[2053994217+eax*1+esi]
-	mov	eax,-1
-	rol	esi,9
-	add	esi,ecx
-	; 140
-	add	ecx,edx
-	mov	edx,edi
-	sub	eax,esi
-	and	edx,esi
-	and	eax,ebx
-	or	edx,eax
-	mov	eax,DWORD [28+esp]
-	rol	edi,10
-	lea	ecx,[2053994217+edx*1+ecx]
-	mov	edx,-1
-	rol	ecx,12
-	add	ecx,ebp
-	; 141
-	add	ebp,eax
-	mov	eax,esi
-	sub	edx,ecx
-	and	eax,ecx
-	and	edx,edi
-	or	eax,edx
-	mov	edx,DWORD [40+esp]
-	rol	esi,10
-	lea	ebp,[2053994217+eax*1+ebp]
-	mov	eax,-1
-	rol	ebp,5
-	add	ebp,ebx
-	; 142
-	add	ebx,edx
-	mov	edx,ecx
-	sub	eax,ebp
-	and	edx,ebp
-	and	eax,esi
-	or	edx,eax
-	mov	eax,DWORD [56+esp]
-	rol	ecx,10
-	lea	ebx,[2053994217+edx*1+ebx]
-	mov	edx,-1
-	rol	ebx,15
-	add	ebx,edi
-	; 143
-	add	edi,eax
-	mov	eax,ebp
-	sub	edx,ebx
-	and	eax,ebx
-	and	edx,ecx
-	or	edx,eax
-	mov	eax,ebx
-	rol	ebp,10
-	lea	edi,[2053994217+edx*1+edi]
-	xor	eax,ebp
-	rol	edi,8
-	add	edi,esi
-	; 144
-	mov	edx,DWORD [48+esp]
-	xor	eax,edi
-	add	esi,edx
-	rol	ebx,10
-	add	esi,eax
-	mov	eax,edi
-	rol	esi,8
-	add	esi,ecx
-	; 145
-	xor	eax,ebx
-	mov	edx,DWORD [60+esp]
-	xor	eax,esi
-	add	ecx,eax
-	mov	eax,esi
-	rol	edi,10
-	add	ecx,edx
-	xor	eax,edi
-	rol	ecx,5
-	add	ecx,ebp
-	; 146
-	mov	edx,DWORD [40+esp]
-	xor	eax,ecx
-	add	ebp,edx
-	rol	esi,10
-	add	ebp,eax
-	mov	eax,ecx
-	rol	ebp,12
-	add	ebp,ebx
-	; 147
-	xor	eax,esi
-	mov	edx,DWORD [16+esp]
-	xor	eax,ebp
-	add	ebx,eax
-	mov	eax,ebp
-	rol	ecx,10
-	add	ebx,edx
-	xor	eax,ecx
-	rol	ebx,9
-	add	ebx,edi
-	; 148
-	mov	edx,DWORD [4+esp]
-	xor	eax,ebx
-	add	edi,edx
-	rol	ebp,10
-	add	edi,eax
-	mov	eax,ebx
-	rol	edi,12
-	add	edi,esi
-	; 149
-	xor	eax,ebp
-	mov	edx,DWORD [20+esp]
-	xor	eax,edi
-	add	esi,eax
-	mov	eax,edi
-	rol	ebx,10
-	add	esi,edx
-	xor	eax,ebx
-	rol	esi,5
-	add	esi,ecx
-	; 150
-	mov	edx,DWORD [32+esp]
-	xor	eax,esi
-	add	ecx,edx
-	rol	edi,10
-	add	ecx,eax
-	mov	eax,esi
-	rol	ecx,14
-	add	ecx,ebp
-	; 151
-	xor	eax,edi
-	mov	edx,DWORD [28+esp]
-	xor	eax,ecx
-	add	ebp,eax
-	mov	eax,ecx
-	rol	esi,10
-	add	ebp,edx
-	xor	eax,esi
-	rol	ebp,6
-	add	ebp,ebx
-	; 152
-	mov	edx,DWORD [24+esp]
-	xor	eax,ebp
-	add	ebx,edx
-	rol	ecx,10
-	add	ebx,eax
-	mov	eax,ebp
-	rol	ebx,8
-	add	ebx,edi
-	; 153
-	xor	eax,ecx
-	mov	edx,DWORD [8+esp]
-	xor	eax,ebx
-	add	edi,eax
-	mov	eax,ebx
-	rol	ebp,10
-	add	edi,edx
-	xor	eax,ebp
-	rol	edi,13
-	add	edi,esi
-	; 154
-	mov	edx,DWORD [52+esp]
-	xor	eax,edi
-	add	esi,edx
-	rol	ebx,10
-	add	esi,eax
-	mov	eax,edi
-	rol	esi,6
-	add	esi,ecx
-	; 155
-	xor	eax,ebx
-	mov	edx,DWORD [56+esp]
-	xor	eax,esi
-	add	ecx,eax
-	mov	eax,esi
-	rol	edi,10
-	add	ecx,edx
-	xor	eax,edi
-	rol	ecx,5
-	add	ecx,ebp
-	; 156
-	mov	edx,DWORD [esp]
-	xor	eax,ecx
-	add	ebp,edx
-	rol	esi,10
-	add	ebp,eax
-	mov	eax,ecx
-	rol	ebp,15
-	add	ebp,ebx
-	; 157
-	xor	eax,esi
-	mov	edx,DWORD [12+esp]
-	xor	eax,ebp
-	add	ebx,eax
-	mov	eax,ebp
-	rol	ecx,10
-	add	ebx,edx
-	xor	eax,ecx
-	rol	ebx,13
-	add	ebx,edi
-	; 158
-	mov	edx,DWORD [36+esp]
-	xor	eax,ebx
-	add	edi,edx
-	rol	ebp,10
-	add	edi,eax
-	mov	eax,ebx
-	rol	edi,11
-	add	edi,esi
-	; 159
-	xor	eax,ebp
-	mov	edx,DWORD [44+esp]
-	xor	eax,edi
-	add	esi,eax
-	rol	ebx,10
-	add	esi,edx
-	mov	edx,DWORD [128+esp]
-	rol	esi,11
-	add	esi,ecx
-	mov	eax,DWORD [4+edx]
-	add	ebx,eax
-	mov	eax,DWORD [72+esp]
-	add	ebx,eax
-	mov	eax,DWORD [8+edx]
-	add	ebp,eax
-	mov	eax,DWORD [76+esp]
-	add	ebp,eax
-	mov	eax,DWORD [12+edx]
-	add	ecx,eax
-	mov	eax,DWORD [80+esp]
-	add	ecx,eax
-	mov	eax,DWORD [16+edx]
-	add	esi,eax
-	mov	eax,DWORD [64+esp]
-	add	esi,eax
-	mov	eax,DWORD [edx]
-	add	edi,eax
-	mov	eax,DWORD [68+esp]
-	add	edi,eax
-	mov	eax,DWORD [136+esp]
-	mov	DWORD [edx],ebx
-	mov	DWORD [4+edx],ebp
-	mov	DWORD [8+edx],ecx
-	sub	eax,1
-	mov	DWORD [12+edx],esi
-	mov	DWORD [16+edx],edi
-	jle	NEAR L$001get_out
-	mov	DWORD [136+esp],eax
-	mov	edi,ecx
-	mov	eax,DWORD [132+esp]
-	mov	ecx,ebx
-	add	eax,64
-	mov	esi,ebp
-	mov	DWORD [132+esp],eax
-	jmp	NEAR L$000start
+ ;
+ mov ebx,DWORD [eax]
+ mov ebp,DWORD [4+eax]
+ mov DWORD [esp],ebx
+ mov DWORD [4+esp],ebp
+ mov ebx,DWORD [8+eax]
+ mov ebp,DWORD [12+eax]
+ mov DWORD [8+esp],ebx
+ mov DWORD [12+esp],ebp
+ mov ebx,DWORD [16+eax]
+ mov ebp,DWORD [20+eax]
+ mov DWORD [16+esp],ebx
+ mov DWORD [20+esp],ebp
+ mov ebx,DWORD [24+eax]
+ mov ebp,DWORD [28+eax]
+ mov DWORD [24+esp],ebx
+ mov DWORD [28+esp],ebp
+ mov ebx,DWORD [32+eax]
+ mov ebp,DWORD [36+eax]
+ mov DWORD [32+esp],ebx
+ mov DWORD [36+esp],ebp
+ mov ebx,DWORD [40+eax]
+ mov ebp,DWORD [44+eax]
+ mov DWORD [40+esp],ebx
+ mov DWORD [44+esp],ebp
+ mov ebx,DWORD [48+eax]
+ mov ebp,DWORD [52+eax]
+ mov DWORD [48+esp],ebx
+ mov DWORD [52+esp],ebp
+ mov ebx,DWORD [56+eax]
+ mov ebp,DWORD [60+eax]
+ mov DWORD [56+esp],ebx
+ mov DWORD [60+esp],ebp
+ mov eax,edi
+ mov ebx,DWORD [12+edx]
+ mov ebp,DWORD [16+edx]
+ ; 0
+ xor eax,ebx
+ mov edx,DWORD [esp]
+ xor eax,esi
+ add ecx,edx
+ rol edi,10
+ add ecx,eax
+ mov eax,esi
+ rol ecx,11
+ add ecx,ebp
+ ; 1
+ xor eax,edi
+ mov edx,DWORD [4+esp]
+ xor eax,ecx
+ add ebp,eax
+ mov eax,ecx
+ rol esi,10
+ add ebp,edx
+ xor eax,esi
+ rol ebp,14
+ add ebp,ebx
+ ; 2
+ mov edx,DWORD [8+esp]
+ xor eax,ebp
+ add ebx,edx
+ rol ecx,10
+ add ebx,eax
+ mov eax,ebp
+ rol ebx,15
+ add ebx,edi
+ ; 3
+ xor eax,ecx
+ mov edx,DWORD [12+esp]
+ xor eax,ebx
+ add edi,eax
+ mov eax,ebx
+ rol ebp,10
+ add edi,edx
+ xor eax,ebp
+ rol edi,12
+ add edi,esi
+ ; 4
+ mov edx,DWORD [16+esp]
+ xor eax,edi
+ add esi,edx
+ rol ebx,10
+ add esi,eax
+ mov eax,edi
+ rol esi,5
+ add esi,ecx
+ ; 5
+ xor eax,ebx
+ mov edx,DWORD [20+esp]
+ xor eax,esi
+ add ecx,eax
+ mov eax,esi
+ rol edi,10
+ add ecx,edx
+ xor eax,edi
+ rol ecx,8
+ add ecx,ebp
+ ; 6
+ mov edx,DWORD [24+esp]
+ xor eax,ecx
+ add ebp,edx
+ rol esi,10
+ add ebp,eax
+ mov eax,ecx
+ rol ebp,7
+ add ebp,ebx
+ ; 7
+ xor eax,esi
+ mov edx,DWORD [28+esp]
+ xor eax,ebp
+ add ebx,eax
+ mov eax,ebp
+ rol ecx,10
+ add ebx,edx
+ xor eax,ecx
+ rol ebx,9
+ add ebx,edi
+ ; 8
+ mov edx,DWORD [32+esp]
+ xor eax,ebx
+ add edi,edx
+ rol ebp,10
+ add edi,eax
+ mov eax,ebx
+ rol edi,11
+ add edi,esi
+ ; 9
+ xor eax,ebp
+ mov edx,DWORD [36+esp]
+ xor eax,edi
+ add esi,eax
+ mov eax,edi
+ rol ebx,10
+ add esi,edx
+ xor eax,ebx
+ rol esi,13
+ add esi,ecx
+ ; 10
+ mov edx,DWORD [40+esp]
+ xor eax,esi
+ add ecx,edx
+ rol edi,10
+ add ecx,eax
+ mov eax,esi
+ rol ecx,14
+ add ecx,ebp
+ ; 11
+ xor eax,edi
+ mov edx,DWORD [44+esp]
+ xor eax,ecx
+ add ebp,eax
+ mov eax,ecx
+ rol esi,10
+ add ebp,edx
+ xor eax,esi
+ rol ebp,15
+ add ebp,ebx
+ ; 12
+ mov edx,DWORD [48+esp]
+ xor eax,ebp
+ add ebx,edx
+ rol ecx,10
+ add ebx,eax
+ mov eax,ebp
+ rol ebx,6
+ add ebx,edi
+ ; 13
+ xor eax,ecx
+ mov edx,DWORD [52+esp]
+ xor eax,ebx
+ add edi,eax
+ mov eax,ebx
+ rol ebp,10
+ add edi,edx
+ xor eax,ebp
+ rol edi,7
+ add edi,esi
+ ; 14
+ mov edx,DWORD [56+esp]
+ xor eax,edi
+ add esi,edx
+ rol ebx,10
+ add esi,eax
+ mov eax,edi
+ rol esi,9
+ add esi,ecx
+ ; 15
+ xor eax,ebx
+ mov edx,DWORD [60+esp]
+ xor eax,esi
+ add ecx,eax
+ mov eax,-1
+ rol edi,10
+ add ecx,edx
+ mov edx,DWORD [28+esp]
+ rol ecx,8
+ add ecx,ebp
+ ; 16
+ add ebp,edx
+ mov edx,esi
+ sub eax,ecx
+ and edx,ecx
+ and eax,edi
+ or edx,eax
+ mov eax,DWORD [16+esp]
+ rol esi,10
+ lea ebp,[1518500249+edx*1+ebp]
+ mov edx,-1
+ rol ebp,7
+ add ebp,ebx
+ ; 17
+ add ebx,eax
+ mov eax,ecx
+ sub edx,ebp
+ and eax,ebp
+ and edx,esi
+ or eax,edx
+ mov edx,DWORD [52+esp]
+ rol ecx,10
+ lea ebx,[1518500249+eax*1+ebx]
+ mov eax,-1
+ rol ebx,6
+ add ebx,edi
+ ; 18
+ add edi,edx
+ mov edx,ebp
+ sub eax,ebx
+ and edx,ebx
+ and eax,ecx
+ or edx,eax
+ mov eax,DWORD [4+esp]
+ rol ebp,10
+ lea edi,[1518500249+edx*1+edi]
+ mov edx,-1
+ rol edi,8
+ add edi,esi
+ ; 19
+ add esi,eax
+ mov eax,ebx
+ sub edx,edi
+ and eax,edi
+ and edx,ebp
+ or eax,edx
+ mov edx,DWORD [40+esp]
+ rol ebx,10
+ lea esi,[1518500249+eax*1+esi]
+ mov eax,-1
+ rol esi,13
+ add esi,ecx
+ ; 20
+ add ecx,edx
+ mov edx,edi
+ sub eax,esi
+ and edx,esi
+ and eax,ebx
+ or edx,eax
+ mov eax,DWORD [24+esp]
+ rol edi,10
+ lea ecx,[1518500249+edx*1+ecx]
+ mov edx,-1
+ rol ecx,11
+ add ecx,ebp
+ ; 21
+ add ebp,eax
+ mov eax,esi
+ sub edx,ecx
+ and eax,ecx
+ and edx,edi
+ or eax,edx
+ mov edx,DWORD [60+esp]
+ rol esi,10
+ lea ebp,[1518500249+eax*1+ebp]
+ mov eax,-1
+ rol ebp,9
+ add ebp,ebx
+ ; 22
+ add ebx,edx
+ mov edx,ecx
+ sub eax,ebp
+ and edx,ebp
+ and eax,esi
+ or edx,eax
+ mov eax,DWORD [12+esp]
+ rol ecx,10
+ lea ebx,[1518500249+edx*1+ebx]
+ mov edx,-1
+ rol ebx,7
+ add ebx,edi
+ ; 23
+ add edi,eax
+ mov eax,ebp
+ sub edx,ebx
+ and eax,ebx
+ and edx,ecx
+ or eax,edx
+ mov edx,DWORD [48+esp]
+ rol ebp,10
+ lea edi,[1518500249+eax*1+edi]
+ mov eax,-1
+ rol edi,15
+ add edi,esi
+ ; 24
+ add esi,edx
+ mov edx,ebx
+ sub eax,edi
+ and edx,edi
+ and eax,ebp
+ or edx,eax
+ mov eax,DWORD [esp]
+ rol ebx,10
+ lea esi,[1518500249+edx*1+esi]
+ mov edx,-1
+ rol esi,7
+ add esi,ecx
+ ; 25
+ add ecx,eax
+ mov eax,edi
+ sub edx,esi
+ and eax,esi
+ and edx,ebx
+ or eax,edx
+ mov edx,DWORD [36+esp]
+ rol edi,10
+ lea ecx,[1518500249+eax*1+ecx]
+ mov eax,-1
+ rol ecx,12
+ add ecx,ebp
+ ; 26
+ add ebp,edx
+ mov edx,esi
+ sub eax,ecx
+ and edx,ecx
+ and eax,edi
+ or edx,eax
+ mov eax,DWORD [20+esp]
+ rol esi,10
+ lea ebp,[1518500249+edx*1+ebp]
+ mov edx,-1
+ rol ebp,15
+ add ebp,ebx
+ ; 27
+ add ebx,eax
+ mov eax,ecx
+ sub edx,ebp
+ and eax,ebp
+ and edx,esi
+ or eax,edx
+ mov edx,DWORD [8+esp]
+ rol ecx,10
+ lea ebx,[1518500249+eax*1+ebx]
+ mov eax,-1
+ rol ebx,9
+ add ebx,edi
+ ; 28
+ add edi,edx
+ mov edx,ebp
+ sub eax,ebx
+ and edx,ebx
+ and eax,ecx
+ or edx,eax
+ mov eax,DWORD [56+esp]
+ rol ebp,10
+ lea edi,[1518500249+edx*1+edi]
+ mov edx,-1
+ rol edi,11
+ add edi,esi
+ ; 29
+ add esi,eax
+ mov eax,ebx
+ sub edx,edi
+ and eax,edi
+ and edx,ebp
+ or eax,edx
+ mov edx,DWORD [44+esp]
+ rol ebx,10
+ lea esi,[1518500249+eax*1+esi]
+ mov eax,-1
+ rol esi,7
+ add esi,ecx
+ ; 30
+ add ecx,edx
+ mov edx,edi
+ sub eax,esi
+ and edx,esi
+ and eax,ebx
+ or edx,eax
+ mov eax,DWORD [32+esp]
+ rol edi,10
+ lea ecx,[1518500249+edx*1+ecx]
+ mov edx,-1
+ rol ecx,13
+ add ecx,ebp
+ ; 31
+ add ebp,eax
+ mov eax,esi
+ sub edx,ecx
+ and eax,ecx
+ and edx,edi
+ or eax,edx
+ mov edx,-1
+ rol esi,10
+ lea ebp,[1518500249+eax*1+ebp]
+ sub edx,ecx
+ rol ebp,12
+ add ebp,ebx
+ ; 32
+ mov eax,DWORD [12+esp]
+ or edx,ebp
+ add ebx,eax
+ xor edx,esi
+ mov eax,-1
+ rol ecx,10
+ lea ebx,[1859775393+edx*1+ebx]
+ sub eax,ebp
+ rol ebx,11
+ add ebx,edi
+ ; 33
+ mov edx,DWORD [40+esp]
+ or eax,ebx
+ add edi,edx
+ xor eax,ecx
+ mov edx,-1
+ rol ebp,10
+ lea edi,[1859775393+eax*1+edi]
+ sub edx,ebx
+ rol edi,13
+ add edi,esi
+ ; 34
+ mov eax,DWORD [56+esp]
+ or edx,edi
+ add esi,eax
+ xor edx,ebp
+ mov eax,-1
+ rol ebx,10
+ lea esi,[1859775393+edx*1+esi]
+ sub eax,edi
+ rol esi,6
+ add esi,ecx
+ ; 35
+ mov edx,DWORD [16+esp]
+ or eax,esi
+ add ecx,edx
+ xor eax,ebx
+ mov edx,-1
+ rol edi,10
+ lea ecx,[1859775393+eax*1+ecx]
+ sub edx,esi
+ rol ecx,7
+ add ecx,ebp
+ ; 36
+ mov eax,DWORD [36+esp]
+ or edx,ecx
+ add ebp,eax
+ xor edx,edi
+ mov eax,-1
+ rol esi,10
+ lea ebp,[1859775393+edx*1+ebp]
+ sub eax,ecx
+ rol ebp,14
+ add ebp,ebx
+ ; 37
+ mov edx,DWORD [60+esp]
+ or eax,ebp
+ add ebx,edx
+ xor eax,esi
+ mov edx,-1
+ rol ecx,10
+ lea ebx,[1859775393+eax*1+ebx]
+ sub edx,ebp
+ rol ebx,9
+ add ebx,edi
+ ; 38
+ mov eax,DWORD [32+esp]
+ or edx,ebx
+ add edi,eax
+ xor edx,ecx
+ mov eax,-1
+ rol ebp,10
+ lea edi,[1859775393+edx*1+edi]
+ sub eax,ebx
+ rol edi,13
+ add edi,esi
+ ; 39
+ mov edx,DWORD [4+esp]
+ or eax,edi
+ add esi,edx
+ xor eax,ebp
+ mov edx,-1
+ rol ebx,10
+ lea esi,[1859775393+eax*1+esi]
+ sub edx,edi
+ rol esi,15
+ add esi,ecx
+ ; 40
+ mov eax,DWORD [8+esp]
+ or edx,esi
+ add ecx,eax
+ xor edx,ebx
+ mov eax,-1
+ rol edi,10
+ lea ecx,[1859775393+edx*1+ecx]
+ sub eax,esi
+ rol ecx,14
+ add ecx,ebp
+ ; 41
+ mov edx,DWORD [28+esp]
+ or eax,ecx
+ add ebp,edx
+ xor eax,edi
+ mov edx,-1
+ rol esi,10
+ lea ebp,[1859775393+eax*1+ebp]
+ sub edx,ecx
+ rol ebp,8
+ add ebp,ebx
+ ; 42
+ mov eax,DWORD [esp]
+ or edx,ebp
+ add ebx,eax
+ xor edx,esi
+ mov eax,-1
+ rol ecx,10
+ lea ebx,[1859775393+edx*1+ebx]
+ sub eax,ebp
+ rol ebx,13
+ add ebx,edi
+ ; 43
+ mov edx,DWORD [24+esp]
+ or eax,ebx
+ add edi,edx
+ xor eax,ecx
+ mov edx,-1
+ rol ebp,10
+ lea edi,[1859775393+eax*1+edi]
+ sub edx,ebx
+ rol edi,6
+ add edi,esi
+ ; 44
+ mov eax,DWORD [52+esp]
+ or edx,edi
+ add esi,eax
+ xor edx,ebp
+ mov eax,-1
+ rol ebx,10
+ lea esi,[1859775393+edx*1+esi]
+ sub eax,edi
+ rol esi,5
+ add esi,ecx
+ ; 45
+ mov edx,DWORD [44+esp]
+ or eax,esi
+ add ecx,edx
+ xor eax,ebx
+ mov edx,-1
+ rol edi,10
+ lea ecx,[1859775393+eax*1+ecx]
+ sub edx,esi
+ rol ecx,12
+ add ecx,ebp
+ ; 46
+ mov eax,DWORD [20+esp]
+ or edx,ecx
+ add ebp,eax
+ xor edx,edi
+ mov eax,-1
+ rol esi,10
+ lea ebp,[1859775393+edx*1+ebp]
+ sub eax,ecx
+ rol ebp,7
+ add ebp,ebx
+ ; 47
+ mov edx,DWORD [48+esp]
+ or eax,ebp
+ add ebx,edx
+ xor eax,esi
+ mov edx,-1
+ rol ecx,10
+ lea ebx,[1859775393+eax*1+ebx]
+ mov eax,ecx
+ rol ebx,5
+ add ebx,edi
+ ; 48
+ sub edx,ecx
+ and eax,ebx
+ and edx,ebp
+ or edx,eax
+ mov eax,DWORD [4+esp]
+ rol ebp,10
+ lea edi,[2400959708+edx*1+edi]
+ mov edx,-1
+ add edi,eax
+ mov eax,ebp
+ rol edi,11
+ add edi,esi
+ ; 49
+ sub edx,ebp
+ and eax,edi
+ and edx,ebx
+ or edx,eax
+ mov eax,DWORD [36+esp]
+ rol ebx,10
+ lea esi,[2400959708+edx*1+esi]
+ mov edx,-1
+ add esi,eax
+ mov eax,ebx
+ rol esi,12
+ add esi,ecx
+ ; 50
+ sub edx,ebx
+ and eax,esi
+ and edx,edi
+ or edx,eax
+ mov eax,DWORD [44+esp]
+ rol edi,10
+ lea ecx,[2400959708+edx*1+ecx]
+ mov edx,-1
+ add ecx,eax
+ mov eax,edi
+ rol ecx,14
+ add ecx,ebp
+ ; 51
+ sub edx,edi
+ and eax,ecx
+ and edx,esi
+ or edx,eax
+ mov eax,DWORD [40+esp]
+ rol esi,10
+ lea ebp,[2400959708+edx*1+ebp]
+ mov edx,-1
+ add ebp,eax
+ mov eax,esi
+ rol ebp,15
+ add ebp,ebx
+ ; 52
+ sub edx,esi
+ and eax,ebp
+ and edx,ecx
+ or edx,eax
+ mov eax,DWORD [esp]
+ rol ecx,10
+ lea ebx,[2400959708+edx*1+ebx]
+ mov edx,-1
+ add ebx,eax
+ mov eax,ecx
+ rol ebx,14
+ add ebx,edi
+ ; 53
+ sub edx,ecx
+ and eax,ebx
+ and edx,ebp
+ or edx,eax
+ mov eax,DWORD [32+esp]
+ rol ebp,10
+ lea edi,[2400959708+edx*1+edi]
+ mov edx,-1
+ add edi,eax
+ mov eax,ebp
+ rol edi,15
+ add edi,esi
+ ; 54
+ sub edx,ebp
+ and eax,edi
+ and edx,ebx
+ or edx,eax
+ mov eax,DWORD [48+esp]
+ rol ebx,10
+ lea esi,[2400959708+edx*1+esi]
+ mov edx,-1
+ add esi,eax
+ mov eax,ebx
+ rol esi,9
+ add esi,ecx
+ ; 55
+ sub edx,ebx
+ and eax,esi
+ and edx,edi
+ or edx,eax
+ mov eax,DWORD [16+esp]
+ rol edi,10
+ lea ecx,[2400959708+edx*1+ecx]
+ mov edx,-1
+ add ecx,eax
+ mov eax,edi
+ rol ecx,8
+ add ecx,ebp
+ ; 56
+ sub edx,edi
+ and eax,ecx
+ and edx,esi
+ or edx,eax
+ mov eax,DWORD [52+esp]
+ rol esi,10
+ lea ebp,[2400959708+edx*1+ebp]
+ mov edx,-1
+ add ebp,eax
+ mov eax,esi
+ rol ebp,9
+ add ebp,ebx
+ ; 57
+ sub edx,esi
+ and eax,ebp
+ and edx,ecx
+ or edx,eax
+ mov eax,DWORD [12+esp]
+ rol ecx,10
+ lea ebx,[2400959708+edx*1+ebx]
+ mov edx,-1
+ add ebx,eax
+ mov eax,ecx
+ rol ebx,14
+ add ebx,edi
+ ; 58
+ sub edx,ecx
+ and eax,ebx
+ and edx,ebp
+ or edx,eax
+ mov eax,DWORD [28+esp]
+ rol ebp,10
+ lea edi,[2400959708+edx*1+edi]
+ mov edx,-1
+ add edi,eax
+ mov eax,ebp
+ rol edi,5
+ add edi,esi
+ ; 59
+ sub edx,ebp
+ and eax,edi
+ and edx,ebx
+ or edx,eax
+ mov eax,DWORD [60+esp]
+ rol ebx,10
+ lea esi,[2400959708+edx*1+esi]
+ mov edx,-1
+ add esi,eax
+ mov eax,ebx
+ rol esi,6
+ add esi,ecx
+ ; 60
+ sub edx,ebx
+ and eax,esi
+ and edx,edi
+ or edx,eax
+ mov eax,DWORD [56+esp]
+ rol edi,10
+ lea ecx,[2400959708+edx*1+ecx]
+ mov edx,-1
+ add ecx,eax
+ mov eax,edi
+ rol ecx,8
+ add ecx,ebp
+ ; 61
+ sub edx,edi
+ and eax,ecx
+ and edx,esi
+ or edx,eax
+ mov eax,DWORD [20+esp]
+ rol esi,10
+ lea ebp,[2400959708+edx*1+ebp]
+ mov edx,-1
+ add ebp,eax
+ mov eax,esi
+ rol ebp,6
+ add ebp,ebx
+ ; 62
+ sub edx,esi
+ and eax,ebp
+ and edx,ecx
+ or edx,eax
+ mov eax,DWORD [24+esp]
+ rol ecx,10
+ lea ebx,[2400959708+edx*1+ebx]
+ mov edx,-1
+ add ebx,eax
+ mov eax,ecx
+ rol ebx,5
+ add ebx,edi
+ ; 63
+ sub edx,ecx
+ and eax,ebx
+ and edx,ebp
+ or edx,eax
+ mov eax,DWORD [8+esp]
+ rol ebp,10
+ lea edi,[2400959708+edx*1+edi]
+ mov edx,-1
+ add edi,eax
+ sub edx,ebp
+ rol edi,12
+ add edi,esi
+ ; 64
+ mov eax,DWORD [16+esp]
+ or edx,ebx
+ add esi,eax
+ xor edx,edi
+ mov eax,-1
+ rol ebx,10
+ lea esi,[2840853838+edx*1+esi]
+ sub eax,ebx
+ rol esi,9
+ add esi,ecx
+ ; 65
+ mov edx,DWORD [esp]
+ or eax,edi
+ add ecx,edx
+ xor eax,esi
+ mov edx,-1
+ rol edi,10
+ lea ecx,[2840853838+eax*1+ecx]
+ sub edx,edi
+ rol ecx,15
+ add ecx,ebp
+ ; 66
+ mov eax,DWORD [20+esp]
+ or edx,esi
+ add ebp,eax
+ xor edx,ecx
+ mov eax,-1
+ rol esi,10
+ lea ebp,[2840853838+edx*1+ebp]
+ sub eax,esi
+ rol ebp,5
+ add ebp,ebx
+ ; 67
+ mov edx,DWORD [36+esp]
+ or eax,ecx
+ add ebx,edx
+ xor eax,ebp
+ mov edx,-1
+ rol ecx,10
+ lea ebx,[2840853838+eax*1+ebx]
+ sub edx,ecx
+ rol ebx,11
+ add ebx,edi
+ ; 68
+ mov eax,DWORD [28+esp]
+ or edx,ebp
+ add edi,eax
+ xor edx,ebx
+ mov eax,-1
+ rol ebp,10
+ lea edi,[2840853838+edx*1+edi]
+ sub eax,ebp
+ rol edi,6
+ add edi,esi
+ ; 69
+ mov edx,DWORD [48+esp]
+ or eax,ebx
+ add esi,edx
+ xor eax,edi
+ mov edx,-1
+ rol ebx,10
+ lea esi,[2840853838+eax*1+esi]
+ sub edx,ebx
+ rol esi,8
+ add esi,ecx
+ ; 70
+ mov eax,DWORD [8+esp]
+ or edx,edi
+ add ecx,eax
+ xor edx,esi
+ mov eax,-1
+ rol edi,10
+ lea ecx,[2840853838+edx*1+ecx]
+ sub eax,edi
+ rol ecx,13
+ add ecx,ebp
+ ; 71
+ mov edx,DWORD [40+esp]
+ or eax,esi
+ add ebp,edx
+ xor eax,ecx
+ mov edx,-1
+ rol esi,10
+ lea ebp,[2840853838+eax*1+ebp]
+ sub edx,esi
+ rol ebp,12
+ add ebp,ebx
+ ; 72
+ mov eax,DWORD [56+esp]
+ or edx,ecx
+ add ebx,eax
+ xor edx,ebp
+ mov eax,-1
+ rol ecx,10
+ lea ebx,[2840853838+edx*1+ebx]
+ sub eax,ecx
+ rol ebx,5
+ add ebx,edi
+ ; 73
+ mov edx,DWORD [4+esp]
+ or eax,ebp
+ add edi,edx
+ xor eax,ebx
+ mov edx,-1
+ rol ebp,10
+ lea edi,[2840853838+eax*1+edi]
+ sub edx,ebp
+ rol edi,12
+ add edi,esi
+ ; 74
+ mov eax,DWORD [12+esp]
+ or edx,ebx
+ add esi,eax
+ xor edx,edi
+ mov eax,-1
+ rol ebx,10
+ lea esi,[2840853838+edx*1+esi]
+ sub eax,ebx
+ rol esi,13
+ add esi,ecx
+ ; 75
+ mov edx,DWORD [32+esp]
+ or eax,edi
+ add ecx,edx
+ xor eax,esi
+ mov edx,-1
+ rol edi,10
+ lea ecx,[2840853838+eax*1+ecx]
+ sub edx,edi
+ rol ecx,14
+ add ecx,ebp
+ ; 76
+ mov eax,DWORD [44+esp]
+ or edx,esi
+ add ebp,eax
+ xor edx,ecx
+ mov eax,-1
+ rol esi,10
+ lea ebp,[2840853838+edx*1+ebp]
+ sub eax,esi
+ rol ebp,11
+ add ebp,ebx
+ ; 77
+ mov edx,DWORD [24+esp]
+ or eax,ecx
+ add ebx,edx
+ xor eax,ebp
+ mov edx,-1
+ rol ecx,10
+ lea ebx,[2840853838+eax*1+ebx]
+ sub edx,ecx
+ rol ebx,8
+ add ebx,edi
+ ; 78
+ mov eax,DWORD [60+esp]
+ or edx,ebp
+ add edi,eax
+ xor edx,ebx
+ mov eax,-1
+ rol ebp,10
+ lea edi,[2840853838+edx*1+edi]
+ sub eax,ebp
+ rol edi,5
+ add edi,esi
+ ; 79
+ mov edx,DWORD [52+esp]
+ or eax,ebx
+ add esi,edx
+ xor eax,edi
+ mov edx,DWORD [128+esp]
+ rol ebx,10
+ lea esi,[2840853838+eax*1+esi]
+ mov DWORD [64+esp],ecx
+ rol esi,6
+ add esi,ecx
+ mov ecx,DWORD [edx]
+ mov DWORD [68+esp],esi
+ mov DWORD [72+esp],edi
+ mov esi,DWORD [4+edx]
+ mov DWORD [76+esp],ebx
+ mov edi,DWORD [8+edx]
+ mov DWORD [80+esp],ebp
+ mov ebx,DWORD [12+edx]
+ mov ebp,DWORD [16+edx]
+ ; 80
+ mov edx,-1
+ sub edx,ebx
+ mov eax,DWORD [20+esp]
+ or edx,edi
+ add ecx,eax
+ xor edx,esi
+ mov eax,-1
+ rol edi,10
+ lea ecx,[1352829926+edx*1+ecx]
+ sub eax,edi
+ rol ecx,8
+ add ecx,ebp
+ ; 81
+ mov edx,DWORD [56+esp]
+ or eax,esi
+ add ebp,edx
+ xor eax,ecx
+ mov edx,-1
+ rol esi,10
+ lea ebp,[1352829926+eax*1+ebp]
+ sub edx,esi
+ rol ebp,9
+ add ebp,ebx
+ ; 82
+ mov eax,DWORD [28+esp]
+ or edx,ecx
+ add ebx,eax
+ xor edx,ebp
+ mov eax,-1
+ rol ecx,10
+ lea ebx,[1352829926+edx*1+ebx]
+ sub eax,ecx
+ rol ebx,9
+ add ebx,edi
+ ; 83
+ mov edx,DWORD [esp]
+ or eax,ebp
+ add edi,edx
+ xor eax,ebx
+ mov edx,-1
+ rol ebp,10
+ lea edi,[1352829926+eax*1+edi]
+ sub edx,ebp
+ rol edi,11
+ add edi,esi
+ ; 84
+ mov eax,DWORD [36+esp]
+ or edx,ebx
+ add esi,eax
+ xor edx,edi
+ mov eax,-1
+ rol ebx,10
+ lea esi,[1352829926+edx*1+esi]
+ sub eax,ebx
+ rol esi,13
+ add esi,ecx
+ ; 85
+ mov edx,DWORD [8+esp]
+ or eax,edi
+ add ecx,edx
+ xor eax,esi
+ mov edx,-1
+ rol edi,10
+ lea ecx,[1352829926+eax*1+ecx]
+ sub edx,edi
+ rol ecx,15
+ add ecx,ebp
+ ; 86
+ mov eax,DWORD [44+esp]
+ or edx,esi
+ add ebp,eax
+ xor edx,ecx
+ mov eax,-1
+ rol esi,10
+ lea ebp,[1352829926+edx*1+ebp]
+ sub eax,esi
+ rol ebp,15
+ add ebp,ebx
+ ; 87
+ mov edx,DWORD [16+esp]
+ or eax,ecx
+ add ebx,edx
+ xor eax,ebp
+ mov edx,-1
+ rol ecx,10
+ lea ebx,[1352829926+eax*1+ebx]
+ sub edx,ecx
+ rol ebx,5
+ add ebx,edi
+ ; 88
+ mov eax,DWORD [52+esp]
+ or edx,ebp
+ add edi,eax
+ xor edx,ebx
+ mov eax,-1
+ rol ebp,10
+ lea edi,[1352829926+edx*1+edi]
+ sub eax,ebp
+ rol edi,7
+ add edi,esi
+ ; 89
+ mov edx,DWORD [24+esp]
+ or eax,ebx
+ add esi,edx
+ xor eax,edi
+ mov edx,-1
+ rol ebx,10
+ lea esi,[1352829926+eax*1+esi]
+ sub edx,ebx
+ rol esi,7
+ add esi,ecx
+ ; 90
+ mov eax,DWORD [60+esp]
+ or edx,edi
+ add ecx,eax
+ xor edx,esi
+ mov eax,-1
+ rol edi,10
+ lea ecx,[1352829926+edx*1+ecx]
+ sub eax,edi
+ rol ecx,8
+ add ecx,ebp
+ ; 91
+ mov edx,DWORD [32+esp]
+ or eax,esi
+ add ebp,edx
+ xor eax,ecx
+ mov edx,-1
+ rol esi,10
+ lea ebp,[1352829926+eax*1+ebp]
+ sub edx,esi
+ rol ebp,11
+ add ebp,ebx
+ ; 92
+ mov eax,DWORD [4+esp]
+ or edx,ecx
+ add ebx,eax
+ xor edx,ebp
+ mov eax,-1
+ rol ecx,10
+ lea ebx,[1352829926+edx*1+ebx]
+ sub eax,ecx
+ rol ebx,14
+ add ebx,edi
+ ; 93
+ mov edx,DWORD [40+esp]
+ or eax,ebp
+ add edi,edx
+ xor eax,ebx
+ mov edx,-1
+ rol ebp,10
+ lea edi,[1352829926+eax*1+edi]
+ sub edx,ebp
+ rol edi,14
+ add edi,esi
+ ; 94
+ mov eax,DWORD [12+esp]
+ or edx,ebx
+ add esi,eax
+ xor edx,edi
+ mov eax,-1
+ rol ebx,10
+ lea esi,[1352829926+edx*1+esi]
+ sub eax,ebx
+ rol esi,12
+ add esi,ecx
+ ; 95
+ mov edx,DWORD [48+esp]
+ or eax,edi
+ add ecx,edx
+ xor eax,esi
+ mov edx,-1
+ rol edi,10
+ lea ecx,[1352829926+eax*1+ecx]
+ mov eax,edi
+ rol ecx,6
+ add ecx,ebp
+ ; 96
+ sub edx,edi
+ and eax,ecx
+ and edx,esi
+ or edx,eax
+ mov eax,DWORD [24+esp]
+ rol esi,10
+ lea ebp,[1548603684+edx*1+ebp]
+ mov edx,-1
+ add ebp,eax
+ mov eax,esi
+ rol ebp,9
+ add ebp,ebx
+ ; 97
+ sub edx,esi
+ and eax,ebp
+ and edx,ecx
+ or edx,eax
+ mov eax,DWORD [44+esp]
+ rol ecx,10
+ lea ebx,[1548603684+edx*1+ebx]
+ mov edx,-1
+ add ebx,eax
+ mov eax,ecx
+ rol ebx,13
+ add ebx,edi
+ ; 98
+ sub edx,ecx
+ and eax,ebx
+ and edx,ebp
+ or edx,eax
+ mov eax,DWORD [12+esp]
+ rol ebp,10
+ lea edi,[1548603684+edx*1+edi]
+ mov edx,-1
+ add edi,eax
+ mov eax,ebp
+ rol edi,15
+ add edi,esi
+ ; 99
+ sub edx,ebp
+ and eax,edi
+ and edx,ebx
+ or edx,eax
+ mov eax,DWORD [28+esp]
+ rol ebx,10
+ lea esi,[1548603684+edx*1+esi]
+ mov edx,-1
+ add esi,eax
+ mov eax,ebx
+ rol esi,7
+ add esi,ecx
+ ; 100
+ sub edx,ebx
+ and eax,esi
+ and edx,edi
+ or edx,eax
+ mov eax,DWORD [esp]
+ rol edi,10
+ lea ecx,[1548603684+edx*1+ecx]
+ mov edx,-1
+ add ecx,eax
+ mov eax,edi
+ rol ecx,12
+ add ecx,ebp
+ ; 101
+ sub edx,edi
+ and eax,ecx
+ and edx,esi
+ or edx,eax
+ mov eax,DWORD [52+esp]
+ rol esi,10
+ lea ebp,[1548603684+edx*1+ebp]
+ mov edx,-1
+ add ebp,eax
+ mov eax,esi
+ rol ebp,8
+ add ebp,ebx
+ ; 102
+ sub edx,esi
+ and eax,ebp
+ and edx,ecx
+ or edx,eax
+ mov eax,DWORD [20+esp]
+ rol ecx,10
+ lea ebx,[1548603684+edx*1+ebx]
+ mov edx,-1
+ add ebx,eax
+ mov eax,ecx
+ rol ebx,9
+ add ebx,edi
+ ; 103
+ sub edx,ecx
+ and eax,ebx
+ and edx,ebp
+ or edx,eax
+ mov eax,DWORD [40+esp]
+ rol ebp,10
+ lea edi,[1548603684+edx*1+edi]
+ mov edx,-1
+ add edi,eax
+ mov eax,ebp
+ rol edi,11
+ add edi,esi
+ ; 104
+ sub edx,ebp
+ and eax,edi
+ and edx,ebx
+ or edx,eax
+ mov eax,DWORD [56+esp]
+ rol ebx,10
+ lea esi,[1548603684+edx*1+esi]
+ mov edx,-1
+ add esi,eax
+ mov eax,ebx
+ rol esi,7
+ add esi,ecx
+ ; 105
+ sub edx,ebx
+ and eax,esi
+ and edx,edi
+ or edx,eax
+ mov eax,DWORD [60+esp]
+ rol edi,10
+ lea ecx,[1548603684+edx*1+ecx]
+ mov edx,-1
+ add ecx,eax
+ mov eax,edi
+ rol ecx,7
+ add ecx,ebp
+ ; 106
+ sub edx,edi
+ and eax,ecx
+ and edx,esi
+ or edx,eax
+ mov eax,DWORD [32+esp]
+ rol esi,10
+ lea ebp,[1548603684+edx*1+ebp]
+ mov edx,-1
+ add ebp,eax
+ mov eax,esi
+ rol ebp,12
+ add ebp,ebx
+ ; 107
+ sub edx,esi
+ and eax,ebp
+ and edx,ecx
+ or edx,eax
+ mov eax,DWORD [48+esp]
+ rol ecx,10
+ lea ebx,[1548603684+edx*1+ebx]
+ mov edx,-1
+ add ebx,eax
+ mov eax,ecx
+ rol ebx,7
+ add ebx,edi
+ ; 108
+ sub edx,ecx
+ and eax,ebx
+ and edx,ebp
+ or edx,eax
+ mov eax,DWORD [16+esp]
+ rol ebp,10
+ lea edi,[1548603684+edx*1+edi]
+ mov edx,-1
+ add edi,eax
+ mov eax,ebp
+ rol edi,6
+ add edi,esi
+ ; 109
+ sub edx,ebp
+ and eax,edi
+ and edx,ebx
+ or edx,eax
+ mov eax,DWORD [36+esp]
+ rol ebx,10
+ lea esi,[1548603684+edx*1+esi]
+ mov edx,-1
+ add esi,eax
+ mov eax,ebx
+ rol esi,15
+ add esi,ecx
+ ; 110
+ sub edx,ebx
+ and eax,esi
+ and edx,edi
+ or edx,eax
+ mov eax,DWORD [4+esp]
+ rol edi,10
+ lea ecx,[1548603684+edx*1+ecx]
+ mov edx,-1
+ add ecx,eax
+ mov eax,edi
+ rol ecx,13
+ add ecx,ebp
+ ; 111
+ sub edx,edi
+ and eax,ecx
+ and edx,esi
+ or edx,eax
+ mov eax,DWORD [8+esp]
+ rol esi,10
+ lea ebp,[1548603684+edx*1+ebp]
+ mov edx,-1
+ add ebp,eax
+ sub edx,ecx
+ rol ebp,11
+ add ebp,ebx
+ ; 112
+ mov eax,DWORD [60+esp]
+ or edx,ebp
+ add ebx,eax
+ xor edx,esi
+ mov eax,-1
+ rol ecx,10
+ lea ebx,[1836072691+edx*1+ebx]
+ sub eax,ebp
+ rol ebx,9
+ add ebx,edi
+ ; 113
+ mov edx,DWORD [20+esp]
+ or eax,ebx
+ add edi,edx
+ xor eax,ecx
+ mov edx,-1
+ rol ebp,10
+ lea edi,[1836072691+eax*1+edi]
+ sub edx,ebx
+ rol edi,7
+ add edi,esi
+ ; 114
+ mov eax,DWORD [4+esp]
+ or edx,edi
+ add esi,eax
+ xor edx,ebp
+ mov eax,-1
+ rol ebx,10
+ lea esi,[1836072691+edx*1+esi]
+ sub eax,edi
+ rol esi,15
+ add esi,ecx
+ ; 115
+ mov edx,DWORD [12+esp]
+ or eax,esi
+ add ecx,edx
+ xor eax,ebx
+ mov edx,-1
+ rol edi,10
+ lea ecx,[1836072691+eax*1+ecx]
+ sub edx,esi
+ rol ecx,11
+ add ecx,ebp
+ ; 116
+ mov eax,DWORD [28+esp]
+ or edx,ecx
+ add ebp,eax
+ xor edx,edi
+ mov eax,-1
+ rol esi,10
+ lea ebp,[1836072691+edx*1+ebp]
+ sub eax,ecx
+ rol ebp,8
+ add ebp,ebx
+ ; 117
+ mov edx,DWORD [56+esp]
+ or eax,ebp
+ add ebx,edx
+ xor eax,esi
+ mov edx,-1
+ rol ecx,10
+ lea ebx,[1836072691+eax*1+ebx]
+ sub edx,ebp
+ rol ebx,6
+ add ebx,edi
+ ; 118
+ mov eax,DWORD [24+esp]
+ or edx,ebx
+ add edi,eax
+ xor edx,ecx
+ mov eax,-1
+ rol ebp,10
+ lea edi,[1836072691+edx*1+edi]
+ sub eax,ebx
+ rol edi,6
+ add edi,esi
+ ; 119
+ mov edx,DWORD [36+esp]
+ or eax,edi
+ add esi,edx
+ xor eax,ebp
+ mov edx,-1
+ rol ebx,10
+ lea esi,[1836072691+eax*1+esi]
+ sub edx,edi
+ rol esi,14
+ add esi,ecx
+ ; 120
+ mov eax,DWORD [44+esp]
+ or edx,esi
+ add ecx,eax
+ xor edx,ebx
+ mov eax,-1
+ rol edi,10
+ lea ecx,[1836072691+edx*1+ecx]
+ sub eax,esi
+ rol ecx,12
+ add ecx,ebp
+ ; 121
+ mov edx,DWORD [32+esp]
+ or eax,ecx
+ add ebp,edx
+ xor eax,edi
+ mov edx,-1
+ rol esi,10
+ lea ebp,[1836072691+eax*1+ebp]
+ sub edx,ecx
+ rol ebp,13
+ add ebp,ebx
+ ; 122
+ mov eax,DWORD [48+esp]
+ or edx,ebp
+ add ebx,eax
+ xor edx,esi
+ mov eax,-1
+ rol ecx,10
+ lea ebx,[1836072691+edx*1+ebx]
+ sub eax,ebp
+ rol ebx,5
+ add ebx,edi
+ ; 123
+ mov edx,DWORD [8+esp]
+ or eax,ebx
+ add edi,edx
+ xor eax,ecx
+ mov edx,-1
+ rol ebp,10
+ lea edi,[1836072691+eax*1+edi]
+ sub edx,ebx
+ rol edi,14
+ add edi,esi
+ ; 124
+ mov eax,DWORD [40+esp]
+ or edx,edi
+ add esi,eax
+ xor edx,ebp
+ mov eax,-1
+ rol ebx,10
+ lea esi,[1836072691+edx*1+esi]
+ sub eax,edi
+ rol esi,13
+ add esi,ecx
+ ; 125
+ mov edx,DWORD [esp]
+ or eax,esi
+ add ecx,edx
+ xor eax,ebx
+ mov edx,-1
+ rol edi,10
+ lea ecx,[1836072691+eax*1+ecx]
+ sub edx,esi
+ rol ecx,13
+ add ecx,ebp
+ ; 126
+ mov eax,DWORD [16+esp]
+ or edx,ecx
+ add ebp,eax
+ xor edx,edi
+ mov eax,-1
+ rol esi,10
+ lea ebp,[1836072691+edx*1+ebp]
+ sub eax,ecx
+ rol ebp,7
+ add ebp,ebx
+ ; 127
+ mov edx,DWORD [52+esp]
+ or eax,ebp
+ add ebx,edx
+ xor eax,esi
+ mov edx,DWORD [32+esp]
+ rol ecx,10
+ lea ebx,[1836072691+eax*1+ebx]
+ mov eax,-1
+ rol ebx,5
+ add ebx,edi
+ ; 128
+ add edi,edx
+ mov edx,ebp
+ sub eax,ebx
+ and edx,ebx
+ and eax,ecx
+ or edx,eax
+ mov eax,DWORD [24+esp]
+ rol ebp,10
+ lea edi,[2053994217+edx*1+edi]
+ mov edx,-1
+ rol edi,15
+ add edi,esi
+ ; 129
+ add esi,eax
+ mov eax,ebx
+ sub edx,edi
+ and eax,edi
+ and edx,ebp
+ or eax,edx
+ mov edx,DWORD [16+esp]
+ rol ebx,10
+ lea esi,[2053994217+eax*1+esi]
+ mov eax,-1
+ rol esi,5
+ add esi,ecx
+ ; 130
+ add ecx,edx
+ mov edx,edi
+ sub eax,esi
+ and edx,esi
+ and eax,ebx
+ or edx,eax
+ mov eax,DWORD [4+esp]
+ rol edi,10
+ lea ecx,[2053994217+edx*1+ecx]
+ mov edx,-1
+ rol ecx,8
+ add ecx,ebp
+ ; 131
+ add ebp,eax
+ mov eax,esi
+ sub edx,ecx
+ and eax,ecx
+ and edx,edi
+ or eax,edx
+ mov edx,DWORD [12+esp]
+ rol esi,10
+ lea ebp,[2053994217+eax*1+ebp]
+ mov eax,-1
+ rol ebp,11
+ add ebp,ebx
+ ; 132
+ add ebx,edx
+ mov edx,ecx
+ sub eax,ebp
+ and edx,ebp
+ and eax,esi
+ or edx,eax
+ mov eax,DWORD [44+esp]
+ rol ecx,10
+ lea ebx,[2053994217+edx*1+ebx]
+ mov edx,-1
+ rol ebx,14
+ add ebx,edi
+ ; 133
+ add edi,eax
+ mov eax,ebp
+ sub edx,ebx
+ and eax,ebx
+ and edx,ecx
+ or eax,edx
+ mov edx,DWORD [60+esp]
+ rol ebp,10
+ lea edi,[2053994217+eax*1+edi]
+ mov eax,-1
+ rol edi,14
+ add edi,esi
+ ; 134
+ add esi,edx
+ mov edx,ebx
+ sub eax,edi
+ and edx,edi
+ and eax,ebp
+ or edx,eax
+ mov eax,DWORD [esp]
+ rol ebx,10
+ lea esi,[2053994217+edx*1+esi]
+ mov edx,-1
+ rol esi,6
+ add esi,ecx
+ ; 135
+ add ecx,eax
+ mov eax,edi
+ sub edx,esi
+ and eax,esi
+ and edx,ebx
+ or eax,edx
+ mov edx,DWORD [20+esp]
+ rol edi,10
+ lea ecx,[2053994217+eax*1+ecx]
+ mov eax,-1
+ rol ecx,14
+ add ecx,ebp
+ ; 136
+ add ebp,edx
+ mov edx,esi
+ sub eax,ecx
+ and edx,ecx
+ and eax,edi
+ or edx,eax
+ mov eax,DWORD [48+esp]
+ rol esi,10
+ lea ebp,[2053994217+edx*1+ebp]
+ mov edx,-1
+ rol ebp,6
+ add ebp,ebx
+ ; 137
+ add ebx,eax
+ mov eax,ecx
+ sub edx,ebp
+ and eax,ebp
+ and edx,esi
+ or eax,edx
+ mov edx,DWORD [8+esp]
+ rol ecx,10
+ lea ebx,[2053994217+eax*1+ebx]
+ mov eax,-1
+ rol ebx,9
+ add ebx,edi
+ ; 138
+ add edi,edx
+ mov edx,ebp
+ sub eax,ebx
+ and edx,ebx
+ and eax,ecx
+ or edx,eax
+ mov eax,DWORD [52+esp]
+ rol ebp,10
+ lea edi,[2053994217+edx*1+edi]
+ mov edx,-1
+ rol edi,12
+ add edi,esi
+ ; 139
+ add esi,eax
+ mov eax,ebx
+ sub edx,edi
+ and eax,edi
+ and edx,ebp
+ or eax,edx
+ mov edx,DWORD [36+esp]
+ rol ebx,10
+ lea esi,[2053994217+eax*1+esi]
+ mov eax,-1
+ rol esi,9
+ add esi,ecx
+ ; 140
+ add ecx,edx
+ mov edx,edi
+ sub eax,esi
+ and edx,esi
+ and eax,ebx
+ or edx,eax
+ mov eax,DWORD [28+esp]
+ rol edi,10
+ lea ecx,[2053994217+edx*1+ecx]
+ mov edx,-1
+ rol ecx,12
+ add ecx,ebp
+ ; 141
+ add ebp,eax
+ mov eax,esi
+ sub edx,ecx
+ and eax,ecx
+ and edx,edi
+ or eax,edx
+ mov edx,DWORD [40+esp]
+ rol esi,10
+ lea ebp,[2053994217+eax*1+ebp]
+ mov eax,-1
+ rol ebp,5
+ add ebp,ebx
+ ; 142
+ add ebx,edx
+ mov edx,ecx
+ sub eax,ebp
+ and edx,ebp
+ and eax,esi
+ or edx,eax
+ mov eax,DWORD [56+esp]
+ rol ecx,10
+ lea ebx,[2053994217+edx*1+ebx]
+ mov edx,-1
+ rol ebx,15
+ add ebx,edi
+ ; 143
+ add edi,eax
+ mov eax,ebp
+ sub edx,ebx
+ and eax,ebx
+ and edx,ecx
+ or edx,eax
+ mov eax,ebx
+ rol ebp,10
+ lea edi,[2053994217+edx*1+edi]
+ xor eax,ebp
+ rol edi,8
+ add edi,esi
+ ; 144
+ mov edx,DWORD [48+esp]
+ xor eax,edi
+ add esi,edx
+ rol ebx,10
+ add esi,eax
+ mov eax,edi
+ rol esi,8
+ add esi,ecx
+ ; 145
+ xor eax,ebx
+ mov edx,DWORD [60+esp]
+ xor eax,esi
+ add ecx,eax
+ mov eax,esi
+ rol edi,10
+ add ecx,edx
+ xor eax,edi
+ rol ecx,5
+ add ecx,ebp
+ ; 146
+ mov edx,DWORD [40+esp]
+ xor eax,ecx
+ add ebp,edx
+ rol esi,10
+ add ebp,eax
+ mov eax,ecx
+ rol ebp,12
+ add ebp,ebx
+ ; 147
+ xor eax,esi
+ mov edx,DWORD [16+esp]
+ xor eax,ebp
+ add ebx,eax
+ mov eax,ebp
+ rol ecx,10
+ add ebx,edx
+ xor eax,ecx
+ rol ebx,9
+ add ebx,edi
+ ; 148
+ mov edx,DWORD [4+esp]
+ xor eax,ebx
+ add edi,edx
+ rol ebp,10
+ add edi,eax
+ mov eax,ebx
+ rol edi,12
+ add edi,esi
+ ; 149
+ xor eax,ebp
+ mov edx,DWORD [20+esp]
+ xor eax,edi
+ add esi,eax
+ mov eax,edi
+ rol ebx,10
+ add esi,edx
+ xor eax,ebx
+ rol esi,5
+ add esi,ecx
+ ; 150
+ mov edx,DWORD [32+esp]
+ xor eax,esi
+ add ecx,edx
+ rol edi,10
+ add ecx,eax
+ mov eax,esi
+ rol ecx,14
+ add ecx,ebp
+ ; 151
+ xor eax,edi
+ mov edx,DWORD [28+esp]
+ xor eax,ecx
+ add ebp,eax
+ mov eax,ecx
+ rol esi,10
+ add ebp,edx
+ xor eax,esi
+ rol ebp,6
+ add ebp,ebx
+ ; 152
+ mov edx,DWORD [24+esp]
+ xor eax,ebp
+ add ebx,edx
+ rol ecx,10
+ add ebx,eax
+ mov eax,ebp
+ rol ebx,8
+ add ebx,edi
+ ; 153
+ xor eax,ecx
+ mov edx,DWORD [8+esp]
+ xor eax,ebx
+ add edi,eax
+ mov eax,ebx
+ rol ebp,10
+ add edi,edx
+ xor eax,ebp
+ rol edi,13
+ add edi,esi
+ ; 154
+ mov edx,DWORD [52+esp]
+ xor eax,edi
+ add esi,edx
+ rol ebx,10
+ add esi,eax
+ mov eax,edi
+ rol esi,6
+ add esi,ecx
+ ; 155
+ xor eax,ebx
+ mov edx,DWORD [56+esp]
+ xor eax,esi
+ add ecx,eax
+ mov eax,esi
+ rol edi,10
+ add ecx,edx
+ xor eax,edi
+ rol ecx,5
+ add ecx,ebp
+ ; 156
+ mov edx,DWORD [esp]
+ xor eax,ecx
+ add ebp,edx
+ rol esi,10
+ add ebp,eax
+ mov eax,ecx
+ rol ebp,15
+ add ebp,ebx
+ ; 157
+ xor eax,esi
+ mov edx,DWORD [12+esp]
+ xor eax,ebp
+ add ebx,eax
+ mov eax,ebp
+ rol ecx,10
+ add ebx,edx
+ xor eax,ecx
+ rol ebx,13
+ add ebx,edi
+ ; 158
+ mov edx,DWORD [36+esp]
+ xor eax,ebx
+ add edi,edx
+ rol ebp,10
+ add edi,eax
+ mov eax,ebx
+ rol edi,11
+ add edi,esi
+ ; 159
+ xor eax,ebp
+ mov edx,DWORD [44+esp]
+ xor eax,edi
+ add esi,eax
+ rol ebx,10
+ add esi,edx
+ mov edx,DWORD [128+esp]
+ rol esi,11
+ add esi,ecx
+ mov eax,DWORD [4+edx]
+ add ebx,eax
+ mov eax,DWORD [72+esp]
+ add ebx,eax
+ mov eax,DWORD [8+edx]
+ add ebp,eax
+ mov eax,DWORD [76+esp]
+ add ebp,eax
+ mov eax,DWORD [12+edx]
+ add ecx,eax
+ mov eax,DWORD [80+esp]
+ add ecx,eax
+ mov eax,DWORD [16+edx]
+ add esi,eax
+ mov eax,DWORD [64+esp]
+ add esi,eax
+ mov eax,DWORD [edx]
+ add edi,eax
+ mov eax,DWORD [68+esp]
+ add edi,eax
+ mov eax,DWORD [136+esp]
+ mov DWORD [edx],ebx
+ mov DWORD [4+edx],ebp
+ mov DWORD [8+edx],ecx
+ sub eax,1
+ mov DWORD [12+edx],esi
+ mov DWORD [16+edx],edi
+ jle NEAR L$001get_out
+ mov DWORD [136+esp],eax
+ mov edi,ecx
+ mov eax,DWORD [132+esp]
+ mov ecx,ebx
+ add eax,64
+ mov esi,ebp
+ mov DWORD [132+esp],eax
+ jmp NEAR L$000start
 L$001get_out:
-	add	esp,108
-	pop	ebx
-	pop	ebp
-	pop	edi
-	pop	esi
-	ret
+ add esp,108
+ pop ebx
+ pop ebp
+ pop edi
+ pop esi
+ ret

+ 1424 - 1425
libs/openssl/crypto/sha/asm/sha1_586.asm

@@ -1,1433 +1,1432 @@
-
 %ifidn __OUTPUT_FORMAT__,obj
-section	code	use32 class=code align=256
+section code use32 class=code align=256
 %elifidn __OUTPUT_FORMAT__,win32
 [email protected] equ 1
-section	.text	code align=256
+section .text code align=256
 %else
-section	.text	code
+section .text code
 %endif
-global	_sha1_block_data_order
-align	16
+global _sha1_block_data_order
+align 16
 _sha1_block_data_order:
 L$_sha1_block_data_order_begin:
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	mov	ebp,DWORD [20+esp]
-	mov	esi,DWORD [24+esp]
-	mov	eax,DWORD [28+esp]
-	sub	esp,76
-	shl	eax,6
-	add	eax,esi
-	mov	DWORD [104+esp],eax
-	mov	edi,DWORD [16+ebp]
-	jmp	NEAR L$000loop
-align	16
+ push ebp
+ push ebx
+ push esi
+ push edi
+ mov ebp,DWORD [20+esp]
+ mov esi,DWORD [24+esp]
+ mov eax,DWORD [28+esp]
+ sub esp,76
+ shl eax,6
+ add eax,esi
+ mov DWORD [104+esp],eax
+ mov edi,DWORD [16+ebp]
+ jmp NEAR L$000loop
+align 16
 L$000loop:
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	mov	ecx,DWORD [8+esi]
-	mov	edx,DWORD [12+esi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	mov	DWORD [esp],eax
-	mov	DWORD [4+esp],ebx
-	mov	DWORD [8+esp],ecx
-	mov	DWORD [12+esp],edx
-	mov	eax,DWORD [16+esi]
-	mov	ebx,DWORD [20+esi]
-	mov	ecx,DWORD [24+esi]
-	mov	edx,DWORD [28+esi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	mov	DWORD [16+esp],eax
-	mov	DWORD [20+esp],ebx
-	mov	DWORD [24+esp],ecx
-	mov	DWORD [28+esp],edx
-	mov	eax,DWORD [32+esi]
-	mov	ebx,DWORD [36+esi]
-	mov	ecx,DWORD [40+esi]
-	mov	edx,DWORD [44+esi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	mov	DWORD [32+esp],eax
-	mov	DWORD [36+esp],ebx
-	mov	DWORD [40+esp],ecx
-	mov	DWORD [44+esp],edx
-	mov	eax,DWORD [48+esi]
-	mov	ebx,DWORD [52+esi]
-	mov	ecx,DWORD [56+esi]
-	mov	edx,DWORD [60+esi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	mov	DWORD [48+esp],eax
-	mov	DWORD [52+esp],ebx
-	mov	DWORD [56+esp],ecx
-	mov	DWORD [60+esp],edx
-	mov	DWORD [100+esp],esi
-	mov	eax,DWORD [ebp]
-	mov	ebx,DWORD [4+ebp]
-	mov	ecx,DWORD [8+ebp]
-	mov	edx,DWORD [12+ebp]
-	; 00_15 0
-	mov	esi,ecx
-	mov	ebp,eax
-	rol	ebp,5
-	xor	esi,edx
-	add	ebp,edi
-	mov	edi,DWORD [esp]
-	and	esi,ebx
-	ror	ebx,2
-	xor	esi,edx
-	lea	ebp,[1518500249+edi*1+ebp]
-	add	ebp,esi
-	; 00_15 1
-	mov	edi,ebx
-	mov	esi,ebp
-	rol	ebp,5
-	xor	edi,ecx
-	add	ebp,edx
-	mov	edx,DWORD [4+esp]
-	and	edi,eax
-	ror	eax,2
-	xor	edi,ecx
-	lea	ebp,[1518500249+edx*1+ebp]
-	add	ebp,edi
-	; 00_15 2
-	mov	edx,eax
-	mov	edi,ebp
-	rol	ebp,5
-	xor	edx,ebx
-	add	ebp,ecx
-	mov	ecx,DWORD [8+esp]
-	and	edx,esi
-	ror	esi,2
-	xor	edx,ebx
-	lea	ebp,[1518500249+ecx*1+ebp]
-	add	ebp,edx
-	; 00_15 3
-	mov	ecx,esi
-	mov	edx,ebp
-	rol	ebp,5
-	xor	ecx,eax
-	add	ebp,ebx
-	mov	ebx,DWORD [12+esp]
-	and	ecx,edi
-	ror	edi,2
-	xor	ecx,eax
-	lea	ebp,[1518500249+ebx*1+ebp]
-	add	ebp,ecx
-	; 00_15 4
-	mov	ebx,edi
-	mov	ecx,ebp
-	rol	ebp,5
-	xor	ebx,esi
-	add	ebp,eax
-	mov	eax,DWORD [16+esp]
-	and	ebx,edx
-	ror	edx,2
-	xor	ebx,esi
-	lea	ebp,[1518500249+eax*1+ebp]
-	add	ebp,ebx
-	; 00_15 5
-	mov	eax,edx
-	mov	ebx,ebp
-	rol	ebp,5
-	xor	eax,edi
-	add	ebp,esi
-	mov	esi,DWORD [20+esp]
-	and	eax,ecx
-	ror	ecx,2
-	xor	eax,edi
-	lea	ebp,[1518500249+esi*1+ebp]
-	add	ebp,eax
-	; 00_15 6
-	mov	esi,ecx
-	mov	eax,ebp
-	rol	ebp,5
-	xor	esi,edx
-	add	ebp,edi
-	mov	edi,DWORD [24+esp]
-	and	esi,ebx
-	ror	ebx,2
-	xor	esi,edx
-	lea	ebp,[1518500249+edi*1+ebp]
-	add	ebp,esi
-	; 00_15 7
-	mov	edi,ebx
-	mov	esi,ebp
-	rol	ebp,5
-	xor	edi,ecx
-	add	ebp,edx
-	mov	edx,DWORD [28+esp]
-	and	edi,eax
-	ror	eax,2
-	xor	edi,ecx
-	lea	ebp,[1518500249+edx*1+ebp]
-	add	ebp,edi
-	; 00_15 8
-	mov	edx,eax
-	mov	edi,ebp
-	rol	ebp,5
-	xor	edx,ebx
-	add	ebp,ecx
-	mov	ecx,DWORD [32+esp]
-	and	edx,esi
-	ror	esi,2
-	xor	edx,ebx
-	lea	ebp,[1518500249+ecx*1+ebp]
-	add	ebp,edx
-	; 00_15 9
-	mov	ecx,esi
-	mov	edx,ebp
-	rol	ebp,5
-	xor	ecx,eax
-	add	ebp,ebx
-	mov	ebx,DWORD [36+esp]
-	and	ecx,edi
-	ror	edi,2
-	xor	ecx,eax
-	lea	ebp,[1518500249+ebx*1+ebp]
-	add	ebp,ecx
-	; 00_15 10
-	mov	ebx,edi
-	mov	ecx,ebp
-	rol	ebp,5
-	xor	ebx,esi
-	add	ebp,eax
-	mov	eax,DWORD [40+esp]
-	and	ebx,edx
-	ror	edx,2
-	xor	ebx,esi
-	lea	ebp,[1518500249+eax*1+ebp]
-	add	ebp,ebx
-	; 00_15 11
-	mov	eax,edx
-	mov	ebx,ebp
-	rol	ebp,5
-	xor	eax,edi
-	add	ebp,esi
-	mov	esi,DWORD [44+esp]
-	and	eax,ecx
-	ror	ecx,2
-	xor	eax,edi
-	lea	ebp,[1518500249+esi*1+ebp]
-	add	ebp,eax
-	; 00_15 12
-	mov	esi,ecx
-	mov	eax,ebp
-	rol	ebp,5
-	xor	esi,edx
-	add	ebp,edi
-	mov	edi,DWORD [48+esp]
-	and	esi,ebx
-	ror	ebx,2
-	xor	esi,edx
-	lea	ebp,[1518500249+edi*1+ebp]
-	add	ebp,esi
-	; 00_15 13
-	mov	edi,ebx
-	mov	esi,ebp
-	rol	ebp,5
-	xor	edi,ecx
-	add	ebp,edx
-	mov	edx,DWORD [52+esp]
-	and	edi,eax
-	ror	eax,2
-	xor	edi,ecx
-	lea	ebp,[1518500249+edx*1+ebp]
-	add	ebp,edi
-	; 00_15 14
-	mov	edx,eax
-	mov	edi,ebp
-	rol	ebp,5
-	xor	edx,ebx
-	add	ebp,ecx
-	mov	ecx,DWORD [56+esp]
-	and	edx,esi
-	ror	esi,2
-	xor	edx,ebx
-	lea	ebp,[1518500249+ecx*1+ebp]
-	add	ebp,edx
-	; 00_15 15
-	mov	ecx,esi
-	mov	edx,ebp
-	rol	ebp,5
-	xor	ecx,eax
-	add	ebp,ebx
-	mov	ebx,DWORD [60+esp]
-	and	ecx,edi
-	ror	edi,2
-	xor	ecx,eax
-	lea	ebp,[1518500249+ebx*1+ebp]
-	mov	ebx,DWORD [esp]
-	add	ecx,ebp
-	; 16_19 16
-	mov	ebp,edi
-	xor	ebx,DWORD [8+esp]
-	xor	ebp,esi
-	xor	ebx,DWORD [32+esp]
-	and	ebp,edx
-	xor	ebx,DWORD [52+esp]
-	rol	ebx,1
-	xor	ebp,esi
-	add	eax,ebp
-	mov	ebp,ecx
-	ror	edx,2
-	mov	DWORD [esp],ebx
-	rol	ebp,5
-	lea	ebx,[1518500249+eax*1+ebx]
-	mov	eax,DWORD [4+esp]
-	add	ebx,ebp
-	; 16_19 17
-	mov	ebp,edx
-	xor	eax,DWORD [12+esp]
-	xor	ebp,edi
-	xor	eax,DWORD [36+esp]
-	and	ebp,ecx
-	xor	eax,DWORD [56+esp]
-	rol	eax,1
-	xor	ebp,edi
-	add	esi,ebp
-	mov	ebp,ebx
-	ror	ecx,2
-	mov	DWORD [4+esp],eax
-	rol	ebp,5
-	lea	eax,[1518500249+esi*1+eax]
-	mov	esi,DWORD [8+esp]
-	add	eax,ebp
-	; 16_19 18
-	mov	ebp,ecx
-	xor	esi,DWORD [16+esp]
-	xor	ebp,edx
-	xor	esi,DWORD [40+esp]
-	and	ebp,ebx
-	xor	esi,DWORD [60+esp]
-	rol	esi,1
-	xor	ebp,edx
-	add	edi,ebp
-	mov	ebp,eax
-	ror	ebx,2
-	mov	DWORD [8+esp],esi
-	rol	ebp,5
-	lea	esi,[1518500249+edi*1+esi]
-	mov	edi,DWORD [12+esp]
-	add	esi,ebp
-	; 16_19 19
-	mov	ebp,ebx
-	xor	edi,DWORD [20+esp]
-	xor	ebp,ecx
-	xor	edi,DWORD [44+esp]
-	and	ebp,eax
-	xor	edi,DWORD [esp]
-	rol	edi,1
-	xor	ebp,ecx
-	add	edx,ebp
-	mov	ebp,esi
-	ror	eax,2
-	mov	DWORD [12+esp],edi
-	rol	ebp,5
-	lea	edi,[1518500249+edx*1+edi]
-	mov	edx,DWORD [16+esp]
-	add	edi,ebp
-	; 20_39 20
-	mov	ebp,esi
-	xor	edx,DWORD [24+esp]
-	xor	ebp,eax
-	xor	edx,DWORD [48+esp]
-	xor	ebp,ebx
-	xor	edx,DWORD [4+esp]
-	rol	edx,1
-	add	ecx,ebp
-	ror	esi,2
-	mov	ebp,edi
-	rol	ebp,5
-	mov	DWORD [16+esp],edx
-	lea	edx,[1859775393+ecx*1+edx]
-	mov	ecx,DWORD [20+esp]
-	add	edx,ebp
-	; 20_39 21
-	mov	ebp,edi
-	xor	ecx,DWORD [28+esp]
-	xor	ebp,esi
-	xor	ecx,DWORD [52+esp]
-	xor	ebp,eax
-	xor	ecx,DWORD [8+esp]
-	rol	ecx,1
-	add	ebx,ebp
-	ror	edi,2
-	mov	ebp,edx
-	rol	ebp,5
-	mov	DWORD [20+esp],ecx
-	lea	ecx,[1859775393+ebx*1+ecx]
-	mov	ebx,DWORD [24+esp]
-	add	ecx,ebp
-	; 20_39 22
-	mov	ebp,edx
-	xor	ebx,DWORD [32+esp]
-	xor	ebp,edi
-	xor	ebx,DWORD [56+esp]
-	xor	ebp,esi
-	xor	ebx,DWORD [12+esp]
-	rol	ebx,1
-	add	eax,ebp
-	ror	edx,2
-	mov	ebp,ecx
-	rol	ebp,5
-	mov	DWORD [24+esp],ebx
-	lea	ebx,[1859775393+eax*1+ebx]
-	mov	eax,DWORD [28+esp]
-	add	ebx,ebp
-	; 20_39 23
-	mov	ebp,ecx
-	xor	eax,DWORD [36+esp]
-	xor	ebp,edx
-	xor	eax,DWORD [60+esp]
-	xor	ebp,edi
-	xor	eax,DWORD [16+esp]
-	rol	eax,1
-	add	esi,ebp
-	ror	ecx,2
-	mov	ebp,ebx
-	rol	ebp,5
-	mov	DWORD [28+esp],eax
-	lea	eax,[1859775393+esi*1+eax]
-	mov	esi,DWORD [32+esp]
-	add	eax,ebp
-	; 20_39 24
-	mov	ebp,ebx
-	xor	esi,DWORD [40+esp]
-	xor	ebp,ecx
-	xor	esi,DWORD [esp]
-	xor	ebp,edx
-	xor	esi,DWORD [20+esp]
-	rol	esi,1
-	add	edi,ebp
-	ror	ebx,2
-	mov	ebp,eax
-	rol	ebp,5
-	mov	DWORD [32+esp],esi
-	lea	esi,[1859775393+edi*1+esi]
-	mov	edi,DWORD [36+esp]
-	add	esi,ebp
-	; 20_39 25
-	mov	ebp,eax
-	xor	edi,DWORD [44+esp]
-	xor	ebp,ebx
-	xor	edi,DWORD [4+esp]
-	xor	ebp,ecx
-	xor	edi,DWORD [24+esp]
-	rol	edi,1
-	add	edx,ebp
-	ror	eax,2
-	mov	ebp,esi
-	rol	ebp,5
-	mov	DWORD [36+esp],edi
-	lea	edi,[1859775393+edx*1+edi]
-	mov	edx,DWORD [40+esp]
-	add	edi,ebp
-	; 20_39 26
-	mov	ebp,esi
-	xor	edx,DWORD [48+esp]
-	xor	ebp,eax
-	xor	edx,DWORD [8+esp]
-	xor	ebp,ebx
-	xor	edx,DWORD [28+esp]
-	rol	edx,1
-	add	ecx,ebp
-	ror	esi,2
-	mov	ebp,edi
-	rol	ebp,5
-	mov	DWORD [40+esp],edx
-	lea	edx,[1859775393+ecx*1+edx]
-	mov	ecx,DWORD [44+esp]
-	add	edx,ebp
-	; 20_39 27
-	mov	ebp,edi
-	xor	ecx,DWORD [52+esp]
-	xor	ebp,esi
-	xor	ecx,DWORD [12+esp]
-	xor	ebp,eax
-	xor	ecx,DWORD [32+esp]
-	rol	ecx,1
-	add	ebx,ebp
-	ror	edi,2
-	mov	ebp,edx
-	rol	ebp,5
-	mov	DWORD [44+esp],ecx
-	lea	ecx,[1859775393+ebx*1+ecx]
-	mov	ebx,DWORD [48+esp]
-	add	ecx,ebp
-	; 20_39 28
-	mov	ebp,edx
-	xor	ebx,DWORD [56+esp]
-	xor	ebp,edi
-	xor	ebx,DWORD [16+esp]
-	xor	ebp,esi
-	xor	ebx,DWORD [36+esp]
-	rol	ebx,1
-	add	eax,ebp
-	ror	edx,2
-	mov	ebp,ecx
-	rol	ebp,5
-	mov	DWORD [48+esp],ebx
-	lea	ebx,[1859775393+eax*1+ebx]
-	mov	eax,DWORD [52+esp]
-	add	ebx,ebp
-	; 20_39 29
-	mov	ebp,ecx
-	xor	eax,DWORD [60+esp]
-	xor	ebp,edx
-	xor	eax,DWORD [20+esp]
-	xor	ebp,edi
-	xor	eax,DWORD [40+esp]
-	rol	eax,1
-	add	esi,ebp
-	ror	ecx,2
-	mov	ebp,ebx
-	rol	ebp,5
-	mov	DWORD [52+esp],eax
-	lea	eax,[1859775393+esi*1+eax]
-	mov	esi,DWORD [56+esp]
-	add	eax,ebp
-	; 20_39 30
-	mov	ebp,ebx
-	xor	esi,DWORD [esp]
-	xor	ebp,ecx
-	xor	esi,DWORD [24+esp]
-	xor	ebp,edx
-	xor	esi,DWORD [44+esp]
-	rol	esi,1
-	add	edi,ebp
-	ror	ebx,2
-	mov	ebp,eax
-	rol	ebp,5
-	mov	DWORD [56+esp],esi
-	lea	esi,[1859775393+edi*1+esi]
-	mov	edi,DWORD [60+esp]
-	add	esi,ebp
-	; 20_39 31
-	mov	ebp,eax
-	xor	edi,DWORD [4+esp]
-	xor	ebp,ebx
-	xor	edi,DWORD [28+esp]
-	xor	ebp,ecx
-	xor	edi,DWORD [48+esp]
-	rol	edi,1
-	add	edx,ebp
-	ror	eax,2
-	mov	ebp,esi
-	rol	ebp,5
-	mov	DWORD [60+esp],edi
-	lea	edi,[1859775393+edx*1+edi]
-	mov	edx,DWORD [esp]
-	add	edi,ebp
-	; 20_39 32
-	mov	ebp,esi
-	xor	edx,DWORD [8+esp]
-	xor	ebp,eax
-	xor	edx,DWORD [32+esp]
-	xor	ebp,ebx
-	xor	edx,DWORD [52+esp]
-	rol	edx,1
-	add	ecx,ebp
-	ror	esi,2
-	mov	ebp,edi
-	rol	ebp,5
-	mov	DWORD [esp],edx
-	lea	edx,[1859775393+ecx*1+edx]
-	mov	ecx,DWORD [4+esp]
-	add	edx,ebp
-	; 20_39 33
-	mov	ebp,edi
-	xor	ecx,DWORD [12+esp]
-	xor	ebp,esi
-	xor	ecx,DWORD [36+esp]
-	xor	ebp,eax
-	xor	ecx,DWORD [56+esp]
-	rol	ecx,1
-	add	ebx,ebp
-	ror	edi,2
-	mov	ebp,edx
-	rol	ebp,5
-	mov	DWORD [4+esp],ecx
-	lea	ecx,[1859775393+ebx*1+ecx]
-	mov	ebx,DWORD [8+esp]
-	add	ecx,ebp
-	; 20_39 34
-	mov	ebp,edx
-	xor	ebx,DWORD [16+esp]
-	xor	ebp,edi
-	xor	ebx,DWORD [40+esp]
-	xor	ebp,esi
-	xor	ebx,DWORD [60+esp]
-	rol	ebx,1
-	add	eax,ebp
-	ror	edx,2
-	mov	ebp,ecx
-	rol	ebp,5
-	mov	DWORD [8+esp],ebx
-	lea	ebx,[1859775393+eax*1+ebx]
-	mov	eax,DWORD [12+esp]
-	add	ebx,ebp
-	; 20_39 35
-	mov	ebp,ecx
-	xor	eax,DWORD [20+esp]
-	xor	ebp,edx
-	xor	eax,DWORD [44+esp]
-	xor	ebp,edi
-	xor	eax,DWORD [esp]
-	rol	eax,1
-	add	esi,ebp
-	ror	ecx,2
-	mov	ebp,ebx
-	rol	ebp,5
-	mov	DWORD [12+esp],eax
-	lea	eax,[1859775393+esi*1+eax]
-	mov	esi,DWORD [16+esp]
-	add	eax,ebp
-	; 20_39 36
-	mov	ebp,ebx
-	xor	esi,DWORD [24+esp]
-	xor	ebp,ecx
-	xor	esi,DWORD [48+esp]
-	xor	ebp,edx
-	xor	esi,DWORD [4+esp]
-	rol	esi,1
-	add	edi,ebp
-	ror	ebx,2
-	mov	ebp,eax
-	rol	ebp,5
-	mov	DWORD [16+esp],esi
-	lea	esi,[1859775393+edi*1+esi]
-	mov	edi,DWORD [20+esp]
-	add	esi,ebp
-	; 20_39 37
-	mov	ebp,eax
-	xor	edi,DWORD [28+esp]
-	xor	ebp,ebx
-	xor	edi,DWORD [52+esp]
-	xor	ebp,ecx
-	xor	edi,DWORD [8+esp]
-	rol	edi,1
-	add	edx,ebp
-	ror	eax,2
-	mov	ebp,esi
-	rol	ebp,5
-	mov	DWORD [20+esp],edi
-	lea	edi,[1859775393+edx*1+edi]
-	mov	edx,DWORD [24+esp]
-	add	edi,ebp
-	; 20_39 38
-	mov	ebp,esi
-	xor	edx,DWORD [32+esp]
-	xor	ebp,eax
-	xor	edx,DWORD [56+esp]
-	xor	ebp,ebx
-	xor	edx,DWORD [12+esp]
-	rol	edx,1
-	add	ecx,ebp
-	ror	esi,2
-	mov	ebp,edi
-	rol	ebp,5
-	mov	DWORD [24+esp],edx
-	lea	edx,[1859775393+ecx*1+edx]
-	mov	ecx,DWORD [28+esp]
-	add	edx,ebp
-	; 20_39 39
-	mov	ebp,edi
-	xor	ecx,DWORD [36+esp]
-	xor	ebp,esi
-	xor	ecx,DWORD [60+esp]
-	xor	ebp,eax
-	xor	ecx,DWORD [16+esp]
-	rol	ecx,1
-	add	ebx,ebp
-	ror	edi,2
-	mov	ebp,edx
-	rol	ebp,5
-	mov	DWORD [28+esp],ecx
-	lea	ecx,[1859775393+ebx*1+ecx]
-	mov	ebx,DWORD [32+esp]
-	add	ecx,ebp
-	; 40_59 40
-	mov	ebp,edi
-	xor	ebx,DWORD [40+esp]
-	xor	ebp,esi
-	xor	ebx,DWORD [esp]
-	and	ebp,edx
-	xor	ebx,DWORD [20+esp]
-	rol	ebx,1
-	add	ebp,eax
-	ror	edx,2
-	mov	eax,ecx
-	rol	eax,5
-	mov	DWORD [32+esp],ebx
-	lea	ebx,[2400959708+ebp*1+ebx]
-	mov	ebp,edi
-	add	ebx,eax
-	and	ebp,esi
-	mov	eax,DWORD [36+esp]
-	add	ebx,ebp
-	; 40_59 41
-	mov	ebp,edx
-	xor	eax,DWORD [44+esp]
-	xor	ebp,edi
-	xor	eax,DWORD [4+esp]
-	and	ebp,ecx
-	xor	eax,DWORD [24+esp]
-	rol	eax,1
-	add	ebp,esi
-	ror	ecx,2
-	mov	esi,ebx
-	rol	esi,5
-	mov	DWORD [36+esp],eax
-	lea	eax,[2400959708+ebp*1+eax]
-	mov	ebp,edx
-	add	eax,esi
-	and	ebp,edi
-	mov	esi,DWORD [40+esp]
-	add	eax,ebp
-	; 40_59 42
-	mov	ebp,ecx
-	xor	esi,DWORD [48+esp]
-	xor	ebp,edx
-	xor	esi,DWORD [8+esp]
-	and	ebp,ebx
-	xor	esi,DWORD [28+esp]
-	rol	esi,1
-	add	ebp,edi
-	ror	ebx,2
-	mov	edi,eax
-	rol	edi,5
-	mov	DWORD [40+esp],esi
-	lea	esi,[2400959708+ebp*1+esi]
-	mov	ebp,ecx
-	add	esi,edi
-	and	ebp,edx
-	mov	edi,DWORD [44+esp]
-	add	esi,ebp
-	; 40_59 43
-	mov	ebp,ebx
-	xor	edi,DWORD [52+esp]
-	xor	ebp,ecx
-	xor	edi,DWORD [12+esp]
-	and	ebp,eax
-	xor	edi,DWORD [32+esp]
-	rol	edi,1
-	add	ebp,edx
-	ror	eax,2
-	mov	edx,esi
-	rol	edx,5
-	mov	DWORD [44+esp],edi
-	lea	edi,[2400959708+ebp*1+edi]
-	mov	ebp,ebx
-	add	edi,edx
-	and	ebp,ecx
-	mov	edx,DWORD [48+esp]
-	add	edi,ebp
-	; 40_59 44
-	mov	ebp,eax
-	xor	edx,DWORD [56+esp]
-	xor	ebp,ebx
-	xor	edx,DWORD [16+esp]
-	and	ebp,esi
-	xor	edx,DWORD [36+esp]
-	rol	edx,1
-	add	ebp,ecx
-	ror	esi,2
-	mov	ecx,edi
-	rol	ecx,5
-	mov	DWORD [48+esp],edx
-	lea	edx,[2400959708+ebp*1+edx]
-	mov	ebp,eax
-	add	edx,ecx
-	and	ebp,ebx
-	mov	ecx,DWORD [52+esp]
-	add	edx,ebp
-	; 40_59 45
-	mov	ebp,esi
-	xor	ecx,DWORD [60+esp]
-	xor	ebp,eax
-	xor	ecx,DWORD [20+esp]
-	and	ebp,edi
-	xor	ecx,DWORD [40+esp]
-	rol	ecx,1
-	add	ebp,ebx
-	ror	edi,2
-	mov	ebx,edx
-	rol	ebx,5
-	mov	DWORD [52+esp],ecx
-	lea	ecx,[2400959708+ebp*1+ecx]
-	mov	ebp,esi
-	add	ecx,ebx
-	and	ebp,eax
-	mov	ebx,DWORD [56+esp]
-	add	ecx,ebp
-	; 40_59 46
-	mov	ebp,edi
-	xor	ebx,DWORD [esp]
-	xor	ebp,esi
-	xor	ebx,DWORD [24+esp]
-	and	ebp,edx
-	xor	ebx,DWORD [44+esp]
-	rol	ebx,1
-	add	ebp,eax
-	ror	edx,2
-	mov	eax,ecx
-	rol	eax,5
-	mov	DWORD [56+esp],ebx
-	lea	ebx,[2400959708+ebp*1+ebx]
-	mov	ebp,edi
-	add	ebx,eax
-	and	ebp,esi
-	mov	eax,DWORD [60+esp]
-	add	ebx,ebp
-	; 40_59 47
-	mov	ebp,edx
-	xor	eax,DWORD [4+esp]
-	xor	ebp,edi
-	xor	eax,DWORD [28+esp]
-	and	ebp,ecx
-	xor	eax,DWORD [48+esp]
-	rol	eax,1
-	add	ebp,esi
-	ror	ecx,2
-	mov	esi,ebx
-	rol	esi,5
-	mov	DWORD [60+esp],eax
-	lea	eax,[2400959708+ebp*1+eax]
-	mov	ebp,edx
-	add	eax,esi
-	and	ebp,edi
-	mov	esi,DWORD [esp]
-	add	eax,ebp
-	; 40_59 48
-	mov	ebp,ecx
-	xor	esi,DWORD [8+esp]
-	xor	ebp,edx
-	xor	esi,DWORD [32+esp]
-	and	ebp,ebx
-	xor	esi,DWORD [52+esp]
-	rol	esi,1
-	add	ebp,edi
-	ror	ebx,2
-	mov	edi,eax
-	rol	edi,5
-	mov	DWORD [esp],esi
-	lea	esi,[2400959708+ebp*1+esi]
-	mov	ebp,ecx
-	add	esi,edi
-	and	ebp,edx
-	mov	edi,DWORD [4+esp]
-	add	esi,ebp
-	; 40_59 49
-	mov	ebp,ebx
-	xor	edi,DWORD [12+esp]
-	xor	ebp,ecx
-	xor	edi,DWORD [36+esp]
-	and	ebp,eax
-	xor	edi,DWORD [56+esp]
-	rol	edi,1
-	add	ebp,edx
-	ror	eax,2
-	mov	edx,esi
-	rol	edx,5
-	mov	DWORD [4+esp],edi
-	lea	edi,[2400959708+ebp*1+edi]
-	mov	ebp,ebx
-	add	edi,edx
-	and	ebp,ecx
-	mov	edx,DWORD [8+esp]
-	add	edi,ebp
-	; 40_59 50
-	mov	ebp,eax
-	xor	edx,DWORD [16+esp]
-	xor	ebp,ebx
-	xor	edx,DWORD [40+esp]
-	and	ebp,esi
-	xor	edx,DWORD [60+esp]
-	rol	edx,1
-	add	ebp,ecx
-	ror	esi,2
-	mov	ecx,edi
-	rol	ecx,5
-	mov	DWORD [8+esp],edx
-	lea	edx,[2400959708+ebp*1+edx]
-	mov	ebp,eax
-	add	edx,ecx
-	and	ebp,ebx
-	mov	ecx,DWORD [12+esp]
-	add	edx,ebp
-	; 40_59 51
-	mov	ebp,esi
-	xor	ecx,DWORD [20+esp]
-	xor	ebp,eax
-	xor	ecx,DWORD [44+esp]
-	and	ebp,edi
-	xor	ecx,DWORD [esp]
-	rol	ecx,1
-	add	ebp,ebx
-	ror	edi,2
-	mov	ebx,edx
-	rol	ebx,5
-	mov	DWORD [12+esp],ecx
-	lea	ecx,[2400959708+ebp*1+ecx]
-	mov	ebp,esi
-	add	ecx,ebx
-	and	ebp,eax
-	mov	ebx,DWORD [16+esp]
-	add	ecx,ebp
-	; 40_59 52
-	mov	ebp,edi
-	xor	ebx,DWORD [24+esp]
-	xor	ebp,esi
-	xor	ebx,DWORD [48+esp]
-	and	ebp,edx
-	xor	ebx,DWORD [4+esp]
-	rol	ebx,1
-	add	ebp,eax
-	ror	edx,2
-	mov	eax,ecx
-	rol	eax,5
-	mov	DWORD [16+esp],ebx
-	lea	ebx,[2400959708+ebp*1+ebx]
-	mov	ebp,edi
-	add	ebx,eax
-	and	ebp,esi
-	mov	eax,DWORD [20+esp]
-	add	ebx,ebp
-	; 40_59 53
-	mov	ebp,edx
-	xor	eax,DWORD [28+esp]
-	xor	ebp,edi
-	xor	eax,DWORD [52+esp]
-	and	ebp,ecx
-	xor	eax,DWORD [8+esp]
-	rol	eax,1
-	add	ebp,esi
-	ror	ecx,2
-	mov	esi,ebx
-	rol	esi,5
-	mov	DWORD [20+esp],eax
-	lea	eax,[2400959708+ebp*1+eax]
-	mov	ebp,edx
-	add	eax,esi
-	and	ebp,edi
-	mov	esi,DWORD [24+esp]
-	add	eax,ebp
-	; 40_59 54
-	mov	ebp,ecx
-	xor	esi,DWORD [32+esp]
-	xor	ebp,edx
-	xor	esi,DWORD [56+esp]
-	and	ebp,ebx
-	xor	esi,DWORD [12+esp]
-	rol	esi,1
-	add	ebp,edi
-	ror	ebx,2
-	mov	edi,eax
-	rol	edi,5
-	mov	DWORD [24+esp],esi
-	lea	esi,[2400959708+ebp*1+esi]
-	mov	ebp,ecx
-	add	esi,edi
-	and	ebp,edx
-	mov	edi,DWORD [28+esp]
-	add	esi,ebp
-	; 40_59 55
-	mov	ebp,ebx
-	xor	edi,DWORD [36+esp]
-	xor	ebp,ecx
-	xor	edi,DWORD [60+esp]
-	and	ebp,eax
-	xor	edi,DWORD [16+esp]
-	rol	edi,1
-	add	ebp,edx
-	ror	eax,2
-	mov	edx,esi
-	rol	edx,5
-	mov	DWORD [28+esp],edi
-	lea	edi,[2400959708+ebp*1+edi]
-	mov	ebp,ebx
-	add	edi,edx
-	and	ebp,ecx
-	mov	edx,DWORD [32+esp]
-	add	edi,ebp
-	; 40_59 56
-	mov	ebp,eax
-	xor	edx,DWORD [40+esp]
-	xor	ebp,ebx
-	xor	edx,DWORD [esp]
-	and	ebp,esi
-	xor	edx,DWORD [20+esp]
-	rol	edx,1
-	add	ebp,ecx
-	ror	esi,2
-	mov	ecx,edi
-	rol	ecx,5
-	mov	DWORD [32+esp],edx
-	lea	edx,[2400959708+ebp*1+edx]
-	mov	ebp,eax
-	add	edx,ecx
-	and	ebp,ebx
-	mov	ecx,DWORD [36+esp]
-	add	edx,ebp
-	; 40_59 57
-	mov	ebp,esi
-	xor	ecx,DWORD [44+esp]
-	xor	ebp,eax
-	xor	ecx,DWORD [4+esp]
-	and	ebp,edi
-	xor	ecx,DWORD [24+esp]
-	rol	ecx,1
-	add	ebp,ebx
-	ror	edi,2
-	mov	ebx,edx
-	rol	ebx,5
-	mov	DWORD [36+esp],ecx
-	lea	ecx,[2400959708+ebp*1+ecx]
-	mov	ebp,esi
-	add	ecx,ebx
-	and	ebp,eax
-	mov	ebx,DWORD [40+esp]
-	add	ecx,ebp
-	; 40_59 58
-	mov	ebp,edi
-	xor	ebx,DWORD [48+esp]
-	xor	ebp,esi
-	xor	ebx,DWORD [8+esp]
-	and	ebp,edx
-	xor	ebx,DWORD [28+esp]
-	rol	ebx,1
-	add	ebp,eax
-	ror	edx,2
-	mov	eax,ecx
-	rol	eax,5
-	mov	DWORD [40+esp],ebx
-	lea	ebx,[2400959708+ebp*1+ebx]
-	mov	ebp,edi
-	add	ebx,eax
-	and	ebp,esi
-	mov	eax,DWORD [44+esp]
-	add	ebx,ebp
-	; 40_59 59
-	mov	ebp,edx
-	xor	eax,DWORD [52+esp]
-	xor	ebp,edi
-	xor	eax,DWORD [12+esp]
-	and	ebp,ecx
-	xor	eax,DWORD [32+esp]
-	rol	eax,1
-	add	ebp,esi
-	ror	ecx,2
-	mov	esi,ebx
-	rol	esi,5
-	mov	DWORD [44+esp],eax
-	lea	eax,[2400959708+ebp*1+eax]
-	mov	ebp,edx
-	add	eax,esi
-	and	ebp,edi
-	mov	esi,DWORD [48+esp]
-	add	eax,ebp
-	; 20_39 60
-	mov	ebp,ebx
-	xor	esi,DWORD [56+esp]
-	xor	ebp,ecx
-	xor	esi,DWORD [16+esp]
-	xor	ebp,edx
-	xor	esi,DWORD [36+esp]
-	rol	esi,1
-	add	edi,ebp
-	ror	ebx,2
-	mov	ebp,eax
-	rol	ebp,5
-	mov	DWORD [48+esp],esi
-	lea	esi,[3395469782+edi*1+esi]
-	mov	edi,DWORD [52+esp]
-	add	esi,ebp
-	; 20_39 61
-	mov	ebp,eax
-	xor	edi,DWORD [60+esp]
-	xor	ebp,ebx
-	xor	edi,DWORD [20+esp]
-	xor	ebp,ecx
-	xor	edi,DWORD [40+esp]
-	rol	edi,1
-	add	edx,ebp
-	ror	eax,2
-	mov	ebp,esi
-	rol	ebp,5
-	mov	DWORD [52+esp],edi
-	lea	edi,[3395469782+edx*1+edi]
-	mov	edx,DWORD [56+esp]
-	add	edi,ebp
-	; 20_39 62
-	mov	ebp,esi
-	xor	edx,DWORD [esp]
-	xor	ebp,eax
-	xor	edx,DWORD [24+esp]
-	xor	ebp,ebx
-	xor	edx,DWORD [44+esp]
-	rol	edx,1
-	add	ecx,ebp
-	ror	esi,2
-	mov	ebp,edi
-	rol	ebp,5
-	mov	DWORD [56+esp],edx
-	lea	edx,[3395469782+ecx*1+edx]
-	mov	ecx,DWORD [60+esp]
-	add	edx,ebp
-	; 20_39 63
-	mov	ebp,edi
-	xor	ecx,DWORD [4+esp]
-	xor	ebp,esi
-	xor	ecx,DWORD [28+esp]
-	xor	ebp,eax
-	xor	ecx,DWORD [48+esp]
-	rol	ecx,1
-	add	ebx,ebp
-	ror	edi,2
-	mov	ebp,edx
-	rol	ebp,5
-	mov	DWORD [60+esp],ecx
-	lea	ecx,[3395469782+ebx*1+ecx]
-	mov	ebx,DWORD [esp]
-	add	ecx,ebp
-	; 20_39 64
-	mov	ebp,edx
-	xor	ebx,DWORD [8+esp]
-	xor	ebp,edi
-	xor	ebx,DWORD [32+esp]
-	xor	ebp,esi
-	xor	ebx,DWORD [52+esp]
-	rol	ebx,1
-	add	eax,ebp
-	ror	edx,2
-	mov	ebp,ecx
-	rol	ebp,5
-	mov	DWORD [esp],ebx
-	lea	ebx,[3395469782+eax*1+ebx]
-	mov	eax,DWORD [4+esp]
-	add	ebx,ebp
-	; 20_39 65
-	mov	ebp,ecx
-	xor	eax,DWORD [12+esp]
-	xor	ebp,edx
-	xor	eax,DWORD [36+esp]
-	xor	ebp,edi
-	xor	eax,DWORD [56+esp]
-	rol	eax,1
-	add	esi,ebp
-	ror	ecx,2
-	mov	ebp,ebx
-	rol	ebp,5
-	mov	DWORD [4+esp],eax
-	lea	eax,[3395469782+esi*1+eax]
-	mov	esi,DWORD [8+esp]
-	add	eax,ebp
-	; 20_39 66
-	mov	ebp,ebx
-	xor	esi,DWORD [16+esp]
-	xor	ebp,ecx
-	xor	esi,DWORD [40+esp]
-	xor	ebp,edx
-	xor	esi,DWORD [60+esp]
-	rol	esi,1
-	add	edi,ebp
-	ror	ebx,2
-	mov	ebp,eax
-	rol	ebp,5
-	mov	DWORD [8+esp],esi
-	lea	esi,[3395469782+edi*1+esi]
-	mov	edi,DWORD [12+esp]
-	add	esi,ebp
-	; 20_39 67
-	mov	ebp,eax
-	xor	edi,DWORD [20+esp]
-	xor	ebp,ebx
-	xor	edi,DWORD [44+esp]
-	xor	ebp,ecx
-	xor	edi,DWORD [esp]
-	rol	edi,1
-	add	edx,ebp
-	ror	eax,2
-	mov	ebp,esi
-	rol	ebp,5
-	mov	DWORD [12+esp],edi
-	lea	edi,[3395469782+edx*1+edi]
-	mov	edx,DWORD [16+esp]
-	add	edi,ebp
-	; 20_39 68
-	mov	ebp,esi
-	xor	edx,DWORD [24+esp]
-	xor	ebp,eax
-	xor	edx,DWORD [48+esp]
-	xor	ebp,ebx
-	xor	edx,DWORD [4+esp]
-	rol	edx,1
-	add	ecx,ebp
-	ror	esi,2
-	mov	ebp,edi
-	rol	ebp,5
-	mov	DWORD [16+esp],edx
-	lea	edx,[3395469782+ecx*1+edx]
-	mov	ecx,DWORD [20+esp]
-	add	edx,ebp
-	; 20_39 69
-	mov	ebp,edi
-	xor	ecx,DWORD [28+esp]
-	xor	ebp,esi
-	xor	ecx,DWORD [52+esp]
-	xor	ebp,eax
-	xor	ecx,DWORD [8+esp]
-	rol	ecx,1
-	add	ebx,ebp
-	ror	edi,2
-	mov	ebp,edx
-	rol	ebp,5
-	mov	DWORD [20+esp],ecx
-	lea	ecx,[3395469782+ebx*1+ecx]
-	mov	ebx,DWORD [24+esp]
-	add	ecx,ebp
-	; 20_39 70
-	mov	ebp,edx
-	xor	ebx,DWORD [32+esp]
-	xor	ebp,edi
-	xor	ebx,DWORD [56+esp]
-	xor	ebp,esi
-	xor	ebx,DWORD [12+esp]
-	rol	ebx,1
-	add	eax,ebp
-	ror	edx,2
-	mov	ebp,ecx
-	rol	ebp,5
-	mov	DWORD [24+esp],ebx
-	lea	ebx,[3395469782+eax*1+ebx]
-	mov	eax,DWORD [28+esp]
-	add	ebx,ebp
-	; 20_39 71
-	mov	ebp,ecx
-	xor	eax,DWORD [36+esp]
-	xor	ebp,edx
-	xor	eax,DWORD [60+esp]
-	xor	ebp,edi
-	xor	eax,DWORD [16+esp]
-	rol	eax,1
-	add	esi,ebp
-	ror	ecx,2
-	mov	ebp,ebx
-	rol	ebp,5
-	mov	DWORD [28+esp],eax
-	lea	eax,[3395469782+esi*1+eax]
-	mov	esi,DWORD [32+esp]
-	add	eax,ebp
-	; 20_39 72
-	mov	ebp,ebx
-	xor	esi,DWORD [40+esp]
-	xor	ebp,ecx
-	xor	esi,DWORD [esp]
-	xor	ebp,edx
-	xor	esi,DWORD [20+esp]
-	rol	esi,1
-	add	edi,ebp
-	ror	ebx,2
-	mov	ebp,eax
-	rol	ebp,5
-	mov	DWORD [32+esp],esi
-	lea	esi,[3395469782+edi*1+esi]
-	mov	edi,DWORD [36+esp]
-	add	esi,ebp
-	; 20_39 73
-	mov	ebp,eax
-	xor	edi,DWORD [44+esp]
-	xor	ebp,ebx
-	xor	edi,DWORD [4+esp]
-	xor	ebp,ecx
-	xor	edi,DWORD [24+esp]
-	rol	edi,1
-	add	edx,ebp
-	ror	eax,2
-	mov	ebp,esi
-	rol	ebp,5
-	mov	DWORD [36+esp],edi
-	lea	edi,[3395469782+edx*1+edi]
-	mov	edx,DWORD [40+esp]
-	add	edi,ebp
-	; 20_39 74
-	mov	ebp,esi
-	xor	edx,DWORD [48+esp]
-	xor	ebp,eax
-	xor	edx,DWORD [8+esp]
-	xor	ebp,ebx
-	xor	edx,DWORD [28+esp]
-	rol	edx,1
-	add	ecx,ebp
-	ror	esi,2
-	mov	ebp,edi
-	rol	ebp,5
-	mov	DWORD [40+esp],edx
-	lea	edx,[3395469782+ecx*1+edx]
-	mov	ecx,DWORD [44+esp]
-	add	edx,ebp
-	; 20_39 75
-	mov	ebp,edi
-	xor	ecx,DWORD [52+esp]
-	xor	ebp,esi
-	xor	ecx,DWORD [12+esp]
-	xor	ebp,eax
-	xor	ecx,DWORD [32+esp]
-	rol	ecx,1
-	add	ebx,ebp
-	ror	edi,2
-	mov	ebp,edx
-	rol	ebp,5
-	mov	DWORD [44+esp],ecx
-	lea	ecx,[3395469782+ebx*1+ecx]
-	mov	ebx,DWORD [48+esp]
-	add	ecx,ebp
-	; 20_39 76
-	mov	ebp,edx
-	xor	ebx,DWORD [56+esp]
-	xor	ebp,edi
-	xor	ebx,DWORD [16+esp]
-	xor	ebp,esi
-	xor	ebx,DWORD [36+esp]
-	rol	ebx,1
-	add	eax,ebp
-	ror	edx,2
-	mov	ebp,ecx
-	rol	ebp,5
-	mov	DWORD [48+esp],ebx
-	lea	ebx,[3395469782+eax*1+ebx]
-	mov	eax,DWORD [52+esp]
-	add	ebx,ebp
-	; 20_39 77
-	mov	ebp,ecx
-	xor	eax,DWORD [60+esp]
-	xor	ebp,edx
-	xor	eax,DWORD [20+esp]
-	xor	ebp,edi
-	xor	eax,DWORD [40+esp]
-	rol	eax,1
-	add	esi,ebp
-	ror	ecx,2
-	mov	ebp,ebx
-	rol	ebp,5
-	lea	eax,[3395469782+esi*1+eax]
-	mov	esi,DWORD [56+esp]
-	add	eax,ebp
-	; 20_39 78
-	mov	ebp,ebx
-	xor	esi,DWORD [esp]
-	xor	ebp,ecx
-	xor	esi,DWORD [24+esp]
-	xor	ebp,edx
-	xor	esi,DWORD [44+esp]
-	rol	esi,1
-	add	edi,ebp
-	ror	ebx,2
-	mov	ebp,eax
-	rol	ebp,5
-	lea	esi,[3395469782+edi*1+esi]
-	mov	edi,DWORD [60+esp]
-	add	esi,ebp
-	; 20_39 79
-	mov	ebp,eax
-	xor	edi,DWORD [4+esp]
-	xor	ebp,ebx
-	xor	edi,DWORD [28+esp]
-	xor	ebp,ecx
-	xor	edi,DWORD [48+esp]
-	rol	edi,1
-	add	edx,ebp
-	ror	eax,2
-	mov	ebp,esi
-	rol	ebp,5
-	lea	edi,[3395469782+edx*1+edi]
-	add	edi,ebp
-	mov	ebp,DWORD [96+esp]
-	mov	edx,DWORD [100+esp]
-	add	edi,DWORD [ebp]
-	add	esi,DWORD [4+ebp]
-	add	eax,DWORD [8+ebp]
-	add	ebx,DWORD [12+ebp]
-	add	ecx,DWORD [16+ebp]
-	mov	DWORD [ebp],edi
-	add	edx,64
-	mov	DWORD [4+ebp],esi
-	cmp	edx,DWORD [104+esp]
-	mov	DWORD [8+ebp],eax
-	mov	edi,ecx
-	mov	DWORD [12+ebp],ebx
-	mov	esi,edx
-	mov	DWORD [16+ebp],ecx
-	jb	NEAR L$000loop
-	add	esp,76
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-db	83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
-db	102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82
-db	89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112
-db	114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ mov ecx,DWORD [8+esi]
+ mov edx,DWORD [12+esi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ mov DWORD [esp],eax
+ mov DWORD [4+esp],ebx
+ mov DWORD [8+esp],ecx
+ mov DWORD [12+esp],edx
+ mov eax,DWORD [16+esi]
+ mov ebx,DWORD [20+esi]
+ mov ecx,DWORD [24+esi]
+ mov edx,DWORD [28+esi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ mov DWORD [16+esp],eax
+ mov DWORD [20+esp],ebx
+ mov DWORD [24+esp],ecx
+ mov DWORD [28+esp],edx
+ mov eax,DWORD [32+esi]
+ mov ebx,DWORD [36+esi]
+ mov ecx,DWORD [40+esi]
+ mov edx,DWORD [44+esi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ mov DWORD [32+esp],eax
+ mov DWORD [36+esp],ebx
+ mov DWORD [40+esp],ecx
+ mov DWORD [44+esp],edx
+ mov eax,DWORD [48+esi]
+ mov ebx,DWORD [52+esi]
+ mov ecx,DWORD [56+esi]
+ mov edx,DWORD [60+esi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ mov DWORD [48+esp],eax
+ mov DWORD [52+esp],ebx
+ mov DWORD [56+esp],ecx
+ mov DWORD [60+esp],edx
+ mov DWORD [100+esp],esi
+ mov eax,DWORD [ebp]
+ mov ebx,DWORD [4+ebp]
+ mov ecx,DWORD [8+ebp]
+ mov edx,DWORD [12+ebp]
+ ; 00_15 0
+ mov esi,ecx
+ mov ebp,eax
+ rol ebp,5
+ xor esi,edx
+ add ebp,edi
+ mov edi,DWORD [esp]
+ and esi,ebx
+ ror ebx,2
+ xor esi,edx
+ lea ebp,[1518500249+edi*1+ebp]
+ add ebp,esi
+ ; 00_15 1
+ mov edi,ebx
+ mov esi,ebp
+ rol ebp,5
+ xor edi,ecx
+ add ebp,edx
+ mov edx,DWORD [4+esp]
+ and edi,eax
+ ror eax,2
+ xor edi,ecx
+ lea ebp,[1518500249+edx*1+ebp]
+ add ebp,edi
+ ; 00_15 2
+ mov edx,eax
+ mov edi,ebp
+ rol ebp,5
+ xor edx,ebx
+ add ebp,ecx
+ mov ecx,DWORD [8+esp]
+ and edx,esi
+ ror esi,2
+ xor edx,ebx
+ lea ebp,[1518500249+ecx*1+ebp]
+ add ebp,edx
+ ; 00_15 3
+ mov ecx,esi
+ mov edx,ebp
+ rol ebp,5
+ xor ecx,eax
+ add ebp,ebx
+ mov ebx,DWORD [12+esp]
+ and ecx,edi
+ ror edi,2
+ xor ecx,eax
+ lea ebp,[1518500249+ebx*1+ebp]
+ add ebp,ecx
+ ; 00_15 4
+ mov ebx,edi
+ mov ecx,ebp
+ rol ebp,5
+ xor ebx,esi
+ add ebp,eax
+ mov eax,DWORD [16+esp]
+ and ebx,edx
+ ror edx,2
+ xor ebx,esi
+ lea ebp,[1518500249+eax*1+ebp]
+ add ebp,ebx
+ ; 00_15 5
+ mov eax,edx
+ mov ebx,ebp
+ rol ebp,5
+ xor eax,edi
+ add ebp,esi
+ mov esi,DWORD [20+esp]
+ and eax,ecx
+ ror ecx,2
+ xor eax,edi
+ lea ebp,[1518500249+esi*1+ebp]
+ add ebp,eax
+ ; 00_15 6
+ mov esi,ecx
+ mov eax,ebp
+ rol ebp,5
+ xor esi,edx
+ add ebp,edi
+ mov edi,DWORD [24+esp]
+ and esi,ebx
+ ror ebx,2
+ xor esi,edx
+ lea ebp,[1518500249+edi*1+ebp]
+ add ebp,esi
+ ; 00_15 7
+ mov edi,ebx
+ mov esi,ebp
+ rol ebp,5
+ xor edi,ecx
+ add ebp,edx
+ mov edx,DWORD [28+esp]
+ and edi,eax
+ ror eax,2
+ xor edi,ecx
+ lea ebp,[1518500249+edx*1+ebp]
+ add ebp,edi
+ ; 00_15 8
+ mov edx,eax
+ mov edi,ebp
+ rol ebp,5
+ xor edx,ebx
+ add ebp,ecx
+ mov ecx,DWORD [32+esp]
+ and edx,esi
+ ror esi,2
+ xor edx,ebx
+ lea ebp,[1518500249+ecx*1+ebp]
+ add ebp,edx
+ ; 00_15 9
+ mov ecx,esi
+ mov edx,ebp
+ rol ebp,5
+ xor ecx,eax
+ add ebp,ebx
+ mov ebx,DWORD [36+esp]
+ and ecx,edi
+ ror edi,2
+ xor ecx,eax
+ lea ebp,[1518500249+ebx*1+ebp]
+ add ebp,ecx
+ ; 00_15 10
+ mov ebx,edi
+ mov ecx,ebp
+ rol ebp,5
+ xor ebx,esi
+ add ebp,eax
+ mov eax,DWORD [40+esp]
+ and ebx,edx
+ ror edx,2
+ xor ebx,esi
+ lea ebp,[1518500249+eax*1+ebp]
+ add ebp,ebx
+ ; 00_15 11
+ mov eax,edx
+ mov ebx,ebp
+ rol ebp,5
+ xor eax,edi
+ add ebp,esi
+ mov esi,DWORD [44+esp]
+ and eax,ecx
+ ror ecx,2
+ xor eax,edi
+ lea ebp,[1518500249+esi*1+ebp]
+ add ebp,eax
+ ; 00_15 12
+ mov esi,ecx
+ mov eax,ebp
+ rol ebp,5
+ xor esi,edx
+ add ebp,edi
+ mov edi,DWORD [48+esp]
+ and esi,ebx
+ ror ebx,2
+ xor esi,edx
+ lea ebp,[1518500249+edi*1+ebp]
+ add ebp,esi
+ ; 00_15 13
+ mov edi,ebx
+ mov esi,ebp
+ rol ebp,5
+ xor edi,ecx
+ add ebp,edx
+ mov edx,DWORD [52+esp]
+ and edi,eax
+ ror eax,2
+ xor edi,ecx
+ lea ebp,[1518500249+edx*1+ebp]
+ add ebp,edi
+ ; 00_15 14
+ mov edx,eax
+ mov edi,ebp
+ rol ebp,5
+ xor edx,ebx
+ add ebp,ecx
+ mov ecx,DWORD [56+esp]
+ and edx,esi
+ ror esi,2
+ xor edx,ebx
+ lea ebp,[1518500249+ecx*1+ebp]
+ add ebp,edx
+ ; 00_15 15
+ mov ecx,esi
+ mov edx,ebp
+ rol ebp,5
+ xor ecx,eax
+ add ebp,ebx
+ mov ebx,DWORD [60+esp]
+ and ecx,edi
+ ror edi,2
+ xor ecx,eax
+ lea ebp,[1518500249+ebx*1+ebp]
+ mov ebx,DWORD [esp]
+ add ecx,ebp
+ ; 16_19 16
+ mov ebp,edi
+ xor ebx,DWORD [8+esp]
+ xor ebp,esi
+ xor ebx,DWORD [32+esp]
+ and ebp,edx
+ xor ebx,DWORD [52+esp]
+ rol ebx,1
+ xor ebp,esi
+ add eax,ebp
+ mov ebp,ecx
+ ror edx,2
+ mov DWORD [esp],ebx
+ rol ebp,5
+ lea ebx,[1518500249+eax*1+ebx]
+ mov eax,DWORD [4+esp]
+ add ebx,ebp
+ ; 16_19 17
+ mov ebp,edx
+ xor eax,DWORD [12+esp]
+ xor ebp,edi
+ xor eax,DWORD [36+esp]
+ and ebp,ecx
+ xor eax,DWORD [56+esp]
+ rol eax,1
+ xor ebp,edi
+ add esi,ebp
+ mov ebp,ebx
+ ror ecx,2
+ mov DWORD [4+esp],eax
+ rol ebp,5
+ lea eax,[1518500249+esi*1+eax]
+ mov esi,DWORD [8+esp]
+ add eax,ebp
+ ; 16_19 18
+ mov ebp,ecx
+ xor esi,DWORD [16+esp]
+ xor ebp,edx
+ xor esi,DWORD [40+esp]
+ and ebp,ebx
+ xor esi,DWORD [60+esp]
+ rol esi,1
+ xor ebp,edx
+ add edi,ebp
+ mov ebp,eax
+ ror ebx,2
+ mov DWORD [8+esp],esi
+ rol ebp,5
+ lea esi,[1518500249+edi*1+esi]
+ mov edi,DWORD [12+esp]
+ add esi,ebp
+ ; 16_19 19
+ mov ebp,ebx
+ xor edi,DWORD [20+esp]
+ xor ebp,ecx
+ xor edi,DWORD [44+esp]
+ and ebp,eax
+ xor edi,DWORD [esp]
+ rol edi,1
+ xor ebp,ecx
+ add edx,ebp
+ mov ebp,esi
+ ror eax,2
+ mov DWORD [12+esp],edi
+ rol ebp,5
+ lea edi,[1518500249+edx*1+edi]
+ mov edx,DWORD [16+esp]
+ add edi,ebp
+ ; 20_39 20
+ mov ebp,esi
+ xor edx,DWORD [24+esp]
+ xor ebp,eax
+ xor edx,DWORD [48+esp]
+ xor ebp,ebx
+ xor edx,DWORD [4+esp]
+ rol edx,1
+ add ecx,ebp
+ ror esi,2
+ mov ebp,edi
+ rol ebp,5
+ mov DWORD [16+esp],edx
+ lea edx,[1859775393+ecx*1+edx]
+ mov ecx,DWORD [20+esp]
+ add edx,ebp
+ ; 20_39 21
+ mov ebp,edi
+ xor ecx,DWORD [28+esp]
+ xor ebp,esi
+ xor ecx,DWORD [52+esp]
+ xor ebp,eax
+ xor ecx,DWORD [8+esp]
+ rol ecx,1
+ add ebx,ebp
+ ror edi,2
+ mov ebp,edx
+ rol ebp,5
+ mov DWORD [20+esp],ecx
+ lea ecx,[1859775393+ebx*1+ecx]
+ mov ebx,DWORD [24+esp]
+ add ecx,ebp
+ ; 20_39 22
+ mov ebp,edx
+ xor ebx,DWORD [32+esp]
+ xor ebp,edi
+ xor ebx,DWORD [56+esp]
+ xor ebp,esi
+ xor ebx,DWORD [12+esp]
+ rol ebx,1
+ add eax,ebp
+ ror edx,2
+ mov ebp,ecx
+ rol ebp,5
+ mov DWORD [24+esp],ebx
+ lea ebx,[1859775393+eax*1+ebx]
+ mov eax,DWORD [28+esp]
+ add ebx,ebp
+ ; 20_39 23
+ mov ebp,ecx
+ xor eax,DWORD [36+esp]
+ xor ebp,edx
+ xor eax,DWORD [60+esp]
+ xor ebp,edi
+ xor eax,DWORD [16+esp]
+ rol eax,1
+ add esi,ebp
+ ror ecx,2
+ mov ebp,ebx
+ rol ebp,5
+ mov DWORD [28+esp],eax
+ lea eax,[1859775393+esi*1+eax]
+ mov esi,DWORD [32+esp]
+ add eax,ebp
+ ; 20_39 24
+ mov ebp,ebx
+ xor esi,DWORD [40+esp]
+ xor ebp,ecx
+ xor esi,DWORD [esp]
+ xor ebp,edx
+ xor esi,DWORD [20+esp]
+ rol esi,1
+ add edi,ebp
+ ror ebx,2
+ mov ebp,eax
+ rol ebp,5
+ mov DWORD [32+esp],esi
+ lea esi,[1859775393+edi*1+esi]
+ mov edi,DWORD [36+esp]
+ add esi,ebp
+ ; 20_39 25
+ mov ebp,eax
+ xor edi,DWORD [44+esp]
+ xor ebp,ebx
+ xor edi,DWORD [4+esp]
+ xor ebp,ecx
+ xor edi,DWORD [24+esp]
+ rol edi,1
+ add edx,ebp
+ ror eax,2
+ mov ebp,esi
+ rol ebp,5
+ mov DWORD [36+esp],edi
+ lea edi,[1859775393+edx*1+edi]
+ mov edx,DWORD [40+esp]
+ add edi,ebp
+ ; 20_39 26
+ mov ebp,esi
+ xor edx,DWORD [48+esp]
+ xor ebp,eax
+ xor edx,DWORD [8+esp]
+ xor ebp,ebx
+ xor edx,DWORD [28+esp]
+ rol edx,1
+ add ecx,ebp
+ ror esi,2
+ mov ebp,edi
+ rol ebp,5
+ mov DWORD [40+esp],edx
+ lea edx,[1859775393+ecx*1+edx]
+ mov ecx,DWORD [44+esp]
+ add edx,ebp
+ ; 20_39 27
+ mov ebp,edi
+ xor ecx,DWORD [52+esp]
+ xor ebp,esi
+ xor ecx,DWORD [12+esp]
+ xor ebp,eax
+ xor ecx,DWORD [32+esp]
+ rol ecx,1
+ add ebx,ebp
+ ror edi,2
+ mov ebp,edx
+ rol ebp,5
+ mov DWORD [44+esp],ecx
+ lea ecx,[1859775393+ebx*1+ecx]
+ mov ebx,DWORD [48+esp]
+ add ecx,ebp
+ ; 20_39 28
+ mov ebp,edx
+ xor ebx,DWORD [56+esp]
+ xor ebp,edi
+ xor ebx,DWORD [16+esp]
+ xor ebp,esi
+ xor ebx,DWORD [36+esp]
+ rol ebx,1
+ add eax,ebp
+ ror edx,2
+ mov ebp,ecx
+ rol ebp,5
+ mov DWORD [48+esp],ebx
+ lea ebx,[1859775393+eax*1+ebx]
+ mov eax,DWORD [52+esp]
+ add ebx,ebp
+ ; 20_39 29
+ mov ebp,ecx
+ xor eax,DWORD [60+esp]
+ xor ebp,edx
+ xor eax,DWORD [20+esp]
+ xor ebp,edi
+ xor eax,DWORD [40+esp]
+ rol eax,1
+ add esi,ebp
+ ror ecx,2
+ mov ebp,ebx
+ rol ebp,5
+ mov DWORD [52+esp],eax
+ lea eax,[1859775393+esi*1+eax]
+ mov esi,DWORD [56+esp]
+ add eax,ebp
+ ; 20_39 30
+ mov ebp,ebx
+ xor esi,DWORD [esp]
+ xor ebp,ecx
+ xor esi,DWORD [24+esp]
+ xor ebp,edx
+ xor esi,DWORD [44+esp]
+ rol esi,1
+ add edi,ebp
+ ror ebx,2
+ mov ebp,eax
+ rol ebp,5
+ mov DWORD [56+esp],esi
+ lea esi,[1859775393+edi*1+esi]
+ mov edi,DWORD [60+esp]
+ add esi,ebp
+ ; 20_39 31
+ mov ebp,eax
+ xor edi,DWORD [4+esp]
+ xor ebp,ebx
+ xor edi,DWORD [28+esp]
+ xor ebp,ecx
+ xor edi,DWORD [48+esp]
+ rol edi,1
+ add edx,ebp
+ ror eax,2
+ mov ebp,esi
+ rol ebp,5
+ mov DWORD [60+esp],edi
+ lea edi,[1859775393+edx*1+edi]
+ mov edx,DWORD [esp]
+ add edi,ebp
+ ; 20_39 32
+ mov ebp,esi
+ xor edx,DWORD [8+esp]
+ xor ebp,eax
+ xor edx,DWORD [32+esp]
+ xor ebp,ebx
+ xor edx,DWORD [52+esp]
+ rol edx,1
+ add ecx,ebp
+ ror esi,2
+ mov ebp,edi
+ rol ebp,5
+ mov DWORD [esp],edx
+ lea edx,[1859775393+ecx*1+edx]
+ mov ecx,DWORD [4+esp]
+ add edx,ebp
+ ; 20_39 33
+ mov ebp,edi
+ xor ecx,DWORD [12+esp]
+ xor ebp,esi
+ xor ecx,DWORD [36+esp]
+ xor ebp,eax
+ xor ecx,DWORD [56+esp]
+ rol ecx,1
+ add ebx,ebp
+ ror edi,2
+ mov ebp,edx
+ rol ebp,5
+ mov DWORD [4+esp],ecx
+ lea ecx,[1859775393+ebx*1+ecx]
+ mov ebx,DWORD [8+esp]
+ add ecx,ebp
+ ; 20_39 34
+ mov ebp,edx
+ xor ebx,DWORD [16+esp]
+ xor ebp,edi
+ xor ebx,DWORD [40+esp]
+ xor ebp,esi
+ xor ebx,DWORD [60+esp]
+ rol ebx,1
+ add eax,ebp
+ ror edx,2
+ mov ebp,ecx
+ rol ebp,5
+ mov DWORD [8+esp],ebx
+ lea ebx,[1859775393+eax*1+ebx]
+ mov eax,DWORD [12+esp]
+ add ebx,ebp
+ ; 20_39 35
+ mov ebp,ecx
+ xor eax,DWORD [20+esp]
+ xor ebp,edx
+ xor eax,DWORD [44+esp]
+ xor ebp,edi
+ xor eax,DWORD [esp]
+ rol eax,1
+ add esi,ebp
+ ror ecx,2
+ mov ebp,ebx
+ rol ebp,5
+ mov DWORD [12+esp],eax
+ lea eax,[1859775393+esi*1+eax]
+ mov esi,DWORD [16+esp]
+ add eax,ebp
+ ; 20_39 36
+ mov ebp,ebx
+ xor esi,DWORD [24+esp]
+ xor ebp,ecx
+ xor esi,DWORD [48+esp]
+ xor ebp,edx
+ xor esi,DWORD [4+esp]
+ rol esi,1
+ add edi,ebp
+ ror ebx,2
+ mov ebp,eax
+ rol ebp,5
+ mov DWORD [16+esp],esi
+ lea esi,[1859775393+edi*1+esi]
+ mov edi,DWORD [20+esp]
+ add esi,ebp
+ ; 20_39 37
+ mov ebp,eax
+ xor edi,DWORD [28+esp]
+ xor ebp,ebx
+ xor edi,DWORD [52+esp]
+ xor ebp,ecx
+ xor edi,DWORD [8+esp]
+ rol edi,1
+ add edx,ebp
+ ror eax,2
+ mov ebp,esi
+ rol ebp,5
+ mov DWORD [20+esp],edi
+ lea edi,[1859775393+edx*1+edi]
+ mov edx,DWORD [24+esp]
+ add edi,ebp
+ ; 20_39 38
+ mov ebp,esi
+ xor edx,DWORD [32+esp]
+ xor ebp,eax
+ xor edx,DWORD [56+esp]
+ xor ebp,ebx
+ xor edx,DWORD [12+esp]
+ rol edx,1
+ add ecx,ebp
+ ror esi,2
+ mov ebp,edi
+ rol ebp,5
+ mov DWORD [24+esp],edx
+ lea edx,[1859775393+ecx*1+edx]
+ mov ecx,DWORD [28+esp]
+ add edx,ebp
+ ; 20_39 39
+ mov ebp,edi
+ xor ecx,DWORD [36+esp]
+ xor ebp,esi
+ xor ecx,DWORD [60+esp]
+ xor ebp,eax
+ xor ecx,DWORD [16+esp]
+ rol ecx,1
+ add ebx,ebp
+ ror edi,2
+ mov ebp,edx
+ rol ebp,5
+ mov DWORD [28+esp],ecx
+ lea ecx,[1859775393+ebx*1+ecx]
+ mov ebx,DWORD [32+esp]
+ add ecx,ebp
+ ; 40_59 40
+ mov ebp,edi
+ xor ebx,DWORD [40+esp]
+ xor ebp,esi
+ xor ebx,DWORD [esp]
+ and ebp,edx
+ xor ebx,DWORD [20+esp]
+ rol ebx,1
+ add ebp,eax
+ ror edx,2
+ mov eax,ecx
+ rol eax,5
+ mov DWORD [32+esp],ebx
+ lea ebx,[2400959708+ebp*1+ebx]
+ mov ebp,edi
+ add ebx,eax
+ and ebp,esi
+ mov eax,DWORD [36+esp]
+ add ebx,ebp
+ ; 40_59 41
+ mov ebp,edx
+ xor eax,DWORD [44+esp]
+ xor ebp,edi
+ xor eax,DWORD [4+esp]
+ and ebp,ecx
+ xor eax,DWORD [24+esp]
+ rol eax,1
+ add ebp,esi
+ ror ecx,2
+ mov esi,ebx
+ rol esi,5
+ mov DWORD [36+esp],eax
+ lea eax,[2400959708+ebp*1+eax]
+ mov ebp,edx
+ add eax,esi
+ and ebp,edi
+ mov esi,DWORD [40+esp]
+ add eax,ebp
+ ; 40_59 42
+ mov ebp,ecx
+ xor esi,DWORD [48+esp]
+ xor ebp,edx
+ xor esi,DWORD [8+esp]
+ and ebp,ebx
+ xor esi,DWORD [28+esp]
+ rol esi,1
+ add ebp,edi
+ ror ebx,2
+ mov edi,eax
+ rol edi,5
+ mov DWORD [40+esp],esi
+ lea esi,[2400959708+ebp*1+esi]
+ mov ebp,ecx
+ add esi,edi
+ and ebp,edx
+ mov edi,DWORD [44+esp]
+ add esi,ebp
+ ; 40_59 43
+ mov ebp,ebx
+ xor edi,DWORD [52+esp]
+ xor ebp,ecx
+ xor edi,DWORD [12+esp]
+ and ebp,eax
+ xor edi,DWORD [32+esp]
+ rol edi,1
+ add ebp,edx
+ ror eax,2
+ mov edx,esi
+ rol edx,5
+ mov DWORD [44+esp],edi
+ lea edi,[2400959708+ebp*1+edi]
+ mov ebp,ebx
+ add edi,edx
+ and ebp,ecx
+ mov edx,DWORD [48+esp]
+ add edi,ebp
+ ; 40_59 44
+ mov ebp,eax
+ xor edx,DWORD [56+esp]
+ xor ebp,ebx
+ xor edx,DWORD [16+esp]
+ and ebp,esi
+ xor edx,DWORD [36+esp]
+ rol edx,1
+ add ebp,ecx
+ ror esi,2
+ mov ecx,edi
+ rol ecx,5
+ mov DWORD [48+esp],edx
+ lea edx,[2400959708+ebp*1+edx]
+ mov ebp,eax
+ add edx,ecx
+ and ebp,ebx
+ mov ecx,DWORD [52+esp]
+ add edx,ebp
+ ; 40_59 45
+ mov ebp,esi
+ xor ecx,DWORD [60+esp]
+ xor ebp,eax
+ xor ecx,DWORD [20+esp]
+ and ebp,edi
+ xor ecx,DWORD [40+esp]
+ rol ecx,1
+ add ebp,ebx
+ ror edi,2
+ mov ebx,edx
+ rol ebx,5
+ mov DWORD [52+esp],ecx
+ lea ecx,[2400959708+ebp*1+ecx]
+ mov ebp,esi
+ add ecx,ebx
+ and ebp,eax
+ mov ebx,DWORD [56+esp]
+ add ecx,ebp
+ ; 40_59 46
+ mov ebp,edi
+ xor ebx,DWORD [esp]
+ xor ebp,esi
+ xor ebx,DWORD [24+esp]
+ and ebp,edx
+ xor ebx,DWORD [44+esp]
+ rol ebx,1
+ add ebp,eax
+ ror edx,2
+ mov eax,ecx
+ rol eax,5
+ mov DWORD [56+esp],ebx
+ lea ebx,[2400959708+ebp*1+ebx]
+ mov ebp,edi
+ add ebx,eax
+ and ebp,esi
+ mov eax,DWORD [60+esp]
+ add ebx,ebp
+ ; 40_59 47
+ mov ebp,edx
+ xor eax,DWORD [4+esp]
+ xor ebp,edi
+ xor eax,DWORD [28+esp]
+ and ebp,ecx
+ xor eax,DWORD [48+esp]
+ rol eax,1
+ add ebp,esi
+ ror ecx,2
+ mov esi,ebx
+ rol esi,5
+ mov DWORD [60+esp],eax
+ lea eax,[2400959708+ebp*1+eax]
+ mov ebp,edx
+ add eax,esi
+ and ebp,edi
+ mov esi,DWORD [esp]
+ add eax,ebp
+ ; 40_59 48
+ mov ebp,ecx
+ xor esi,DWORD [8+esp]
+ xor ebp,edx
+ xor esi,DWORD [32+esp]
+ and ebp,ebx
+ xor esi,DWORD [52+esp]
+ rol esi,1
+ add ebp,edi
+ ror ebx,2
+ mov edi,eax
+ rol edi,5
+ mov DWORD [esp],esi
+ lea esi,[2400959708+ebp*1+esi]
+ mov ebp,ecx
+ add esi,edi
+ and ebp,edx
+ mov edi,DWORD [4+esp]
+ add esi,ebp
+ ; 40_59 49
+ mov ebp,ebx
+ xor edi,DWORD [12+esp]
+ xor ebp,ecx
+ xor edi,DWORD [36+esp]
+ and ebp,eax
+ xor edi,DWORD [56+esp]
+ rol edi,1
+ add ebp,edx
+ ror eax,2
+ mov edx,esi
+ rol edx,5
+ mov DWORD [4+esp],edi
+ lea edi,[2400959708+ebp*1+edi]
+ mov ebp,ebx
+ add edi,edx
+ and ebp,ecx
+ mov edx,DWORD [8+esp]
+ add edi,ebp
+ ; 40_59 50
+ mov ebp,eax
+ xor edx,DWORD [16+esp]
+ xor ebp,ebx
+ xor edx,DWORD [40+esp]
+ and ebp,esi
+ xor edx,DWORD [60+esp]
+ rol edx,1
+ add ebp,ecx
+ ror esi,2
+ mov ecx,edi
+ rol ecx,5
+ mov DWORD [8+esp],edx
+ lea edx,[2400959708+ebp*1+edx]
+ mov ebp,eax
+ add edx,ecx
+ and ebp,ebx
+ mov ecx,DWORD [12+esp]
+ add edx,ebp
+ ; 40_59 51
+ mov ebp,esi
+ xor ecx,DWORD [20+esp]
+ xor ebp,eax
+ xor ecx,DWORD [44+esp]
+ and ebp,edi
+ xor ecx,DWORD [esp]
+ rol ecx,1
+ add ebp,ebx
+ ror edi,2
+ mov ebx,edx
+ rol ebx,5
+ mov DWORD [12+esp],ecx
+ lea ecx,[2400959708+ebp*1+ecx]
+ mov ebp,esi
+ add ecx,ebx
+ and ebp,eax
+ mov ebx,DWORD [16+esp]
+ add ecx,ebp
+ ; 40_59 52
+ mov ebp,edi
+ xor ebx,DWORD [24+esp]
+ xor ebp,esi
+ xor ebx,DWORD [48+esp]
+ and ebp,edx
+ xor ebx,DWORD [4+esp]
+ rol ebx,1
+ add ebp,eax
+ ror edx,2
+ mov eax,ecx
+ rol eax,5
+ mov DWORD [16+esp],ebx
+ lea ebx,[2400959708+ebp*1+ebx]
+ mov ebp,edi
+ add ebx,eax
+ and ebp,esi
+ mov eax,DWORD [20+esp]
+ add ebx,ebp
+ ; 40_59 53
+ mov ebp,edx
+ xor eax,DWORD [28+esp]
+ xor ebp,edi
+ xor eax,DWORD [52+esp]
+ and ebp,ecx
+ xor eax,DWORD [8+esp]
+ rol eax,1
+ add ebp,esi
+ ror ecx,2
+ mov esi,ebx
+ rol esi,5
+ mov DWORD [20+esp],eax
+ lea eax,[2400959708+ebp*1+eax]
+ mov ebp,edx
+ add eax,esi
+ and ebp,edi
+ mov esi,DWORD [24+esp]
+ add eax,ebp
+ ; 40_59 54
+ mov ebp,ecx
+ xor esi,DWORD [32+esp]
+ xor ebp,edx
+ xor esi,DWORD [56+esp]
+ and ebp,ebx
+ xor esi,DWORD [12+esp]
+ rol esi,1
+ add ebp,edi
+ ror ebx,2
+ mov edi,eax
+ rol edi,5
+ mov DWORD [24+esp],esi
+ lea esi,[2400959708+ebp*1+esi]
+ mov ebp,ecx
+ add esi,edi
+ and ebp,edx
+ mov edi,DWORD [28+esp]
+ add esi,ebp
+ ; 40_59 55
+ mov ebp,ebx
+ xor edi,DWORD [36+esp]
+ xor ebp,ecx
+ xor edi,DWORD [60+esp]
+ and ebp,eax
+ xor edi,DWORD [16+esp]
+ rol edi,1
+ add ebp,edx
+ ror eax,2
+ mov edx,esi
+ rol edx,5
+ mov DWORD [28+esp],edi
+ lea edi,[2400959708+ebp*1+edi]
+ mov ebp,ebx
+ add edi,edx
+ and ebp,ecx
+ mov edx,DWORD [32+esp]
+ add edi,ebp
+ ; 40_59 56
+ mov ebp,eax
+ xor edx,DWORD [40+esp]
+ xor ebp,ebx
+ xor edx,DWORD [esp]
+ and ebp,esi
+ xor edx,DWORD [20+esp]
+ rol edx,1
+ add ebp,ecx
+ ror esi,2
+ mov ecx,edi
+ rol ecx,5
+ mov DWORD [32+esp],edx
+ lea edx,[2400959708+ebp*1+edx]
+ mov ebp,eax
+ add edx,ecx
+ and ebp,ebx
+ mov ecx,DWORD [36+esp]
+ add edx,ebp
+ ; 40_59 57
+ mov ebp,esi
+ xor ecx,DWORD [44+esp]
+ xor ebp,eax
+ xor ecx,DWORD [4+esp]
+ and ebp,edi
+ xor ecx,DWORD [24+esp]
+ rol ecx,1
+ add ebp,ebx
+ ror edi,2
+ mov ebx,edx
+ rol ebx,5
+ mov DWORD [36+esp],ecx
+ lea ecx,[2400959708+ebp*1+ecx]
+ mov ebp,esi
+ add ecx,ebx
+ and ebp,eax
+ mov ebx,DWORD [40+esp]
+ add ecx,ebp
+ ; 40_59 58
+ mov ebp,edi
+ xor ebx,DWORD [48+esp]
+ xor ebp,esi
+ xor ebx,DWORD [8+esp]
+ and ebp,edx
+ xor ebx,DWORD [28+esp]
+ rol ebx,1
+ add ebp,eax
+ ror edx,2
+ mov eax,ecx
+ rol eax,5
+ mov DWORD [40+esp],ebx
+ lea ebx,[2400959708+ebp*1+ebx]
+ mov ebp,edi
+ add ebx,eax
+ and ebp,esi
+ mov eax,DWORD [44+esp]
+ add ebx,ebp
+ ; 40_59 59
+ mov ebp,edx
+ xor eax,DWORD [52+esp]
+ xor ebp,edi
+ xor eax,DWORD [12+esp]
+ and ebp,ecx
+ xor eax,DWORD [32+esp]
+ rol eax,1
+ add ebp,esi
+ ror ecx,2
+ mov esi,ebx
+ rol esi,5
+ mov DWORD [44+esp],eax
+ lea eax,[2400959708+ebp*1+eax]
+ mov ebp,edx
+ add eax,esi
+ and ebp,edi
+ mov esi,DWORD [48+esp]
+ add eax,ebp
+ ; 20_39 60
+ mov ebp,ebx
+ xor esi,DWORD [56+esp]
+ xor ebp,ecx
+ xor esi,DWORD [16+esp]
+ xor ebp,edx
+ xor esi,DWORD [36+esp]
+ rol esi,1
+ add edi,ebp
+ ror ebx,2
+ mov ebp,eax
+ rol ebp,5
+ mov DWORD [48+esp],esi
+ lea esi,[3395469782+edi*1+esi]
+ mov edi,DWORD [52+esp]
+ add esi,ebp
+ ; 20_39 61
+ mov ebp,eax
+ xor edi,DWORD [60+esp]
+ xor ebp,ebx
+ xor edi,DWORD [20+esp]
+ xor ebp,ecx
+ xor edi,DWORD [40+esp]
+ rol edi,1
+ add edx,ebp
+ ror eax,2
+ mov ebp,esi
+ rol ebp,5
+ mov DWORD [52+esp],edi
+ lea edi,[3395469782+edx*1+edi]
+ mov edx,DWORD [56+esp]
+ add edi,ebp
+ ; 20_39 62
+ mov ebp,esi
+ xor edx,DWORD [esp]
+ xor ebp,eax
+ xor edx,DWORD [24+esp]
+ xor ebp,ebx
+ xor edx,DWORD [44+esp]
+ rol edx,1
+ add ecx,ebp
+ ror esi,2
+ mov ebp,edi
+ rol ebp,5
+ mov DWORD [56+esp],edx
+ lea edx,[3395469782+ecx*1+edx]
+ mov ecx,DWORD [60+esp]
+ add edx,ebp
+ ; 20_39 63
+ mov ebp,edi
+ xor ecx,DWORD [4+esp]
+ xor ebp,esi
+ xor ecx,DWORD [28+esp]
+ xor ebp,eax
+ xor ecx,DWORD [48+esp]
+ rol ecx,1
+ add ebx,ebp
+ ror edi,2
+ mov ebp,edx
+ rol ebp,5
+ mov DWORD [60+esp],ecx
+ lea ecx,[3395469782+ebx*1+ecx]
+ mov ebx,DWORD [esp]
+ add ecx,ebp
+ ; 20_39 64
+ mov ebp,edx
+ xor ebx,DWORD [8+esp]
+ xor ebp,edi
+ xor ebx,DWORD [32+esp]
+ xor ebp,esi
+ xor ebx,DWORD [52+esp]
+ rol ebx,1
+ add eax,ebp
+ ror edx,2
+ mov ebp,ecx
+ rol ebp,5
+ mov DWORD [esp],ebx
+ lea ebx,[3395469782+eax*1+ebx]
+ mov eax,DWORD [4+esp]
+ add ebx,ebp
+ ; 20_39 65
+ mov ebp,ecx
+ xor eax,DWORD [12+esp]
+ xor ebp,edx
+ xor eax,DWORD [36+esp]
+ xor ebp,edi
+ xor eax,DWORD [56+esp]
+ rol eax,1
+ add esi,ebp
+ ror ecx,2
+ mov ebp,ebx
+ rol ebp,5
+ mov DWORD [4+esp],eax
+ lea eax,[3395469782+esi*1+eax]
+ mov esi,DWORD [8+esp]
+ add eax,ebp
+ ; 20_39 66
+ mov ebp,ebx
+ xor esi,DWORD [16+esp]
+ xor ebp,ecx
+ xor esi,DWORD [40+esp]
+ xor ebp,edx
+ xor esi,DWORD [60+esp]
+ rol esi,1
+ add edi,ebp
+ ror ebx,2
+ mov ebp,eax
+ rol ebp,5
+ mov DWORD [8+esp],esi
+ lea esi,[3395469782+edi*1+esi]
+ mov edi,DWORD [12+esp]
+ add esi,ebp
+ ; 20_39 67
+ mov ebp,eax
+ xor edi,DWORD [20+esp]
+ xor ebp,ebx
+ xor edi,DWORD [44+esp]
+ xor ebp,ecx
+ xor edi,DWORD [esp]
+ rol edi,1
+ add edx,ebp
+ ror eax,2
+ mov ebp,esi
+ rol ebp,5
+ mov DWORD [12+esp],edi
+ lea edi,[3395469782+edx*1+edi]
+ mov edx,DWORD [16+esp]
+ add edi,ebp
+ ; 20_39 68
+ mov ebp,esi
+ xor edx,DWORD [24+esp]
+ xor ebp,eax
+ xor edx,DWORD [48+esp]
+ xor ebp,ebx
+ xor edx,DWORD [4+esp]
+ rol edx,1
+ add ecx,ebp
+ ror esi,2
+ mov ebp,edi
+ rol ebp,5
+ mov DWORD [16+esp],edx
+ lea edx,[3395469782+ecx*1+edx]
+ mov ecx,DWORD [20+esp]
+ add edx,ebp
+ ; 20_39 69
+ mov ebp,edi
+ xor ecx,DWORD [28+esp]
+ xor ebp,esi
+ xor ecx,DWORD [52+esp]
+ xor ebp,eax
+ xor ecx,DWORD [8+esp]
+ rol ecx,1
+ add ebx,ebp
+ ror edi,2
+ mov ebp,edx
+ rol ebp,5
+ mov DWORD [20+esp],ecx
+ lea ecx,[3395469782+ebx*1+ecx]
+ mov ebx,DWORD [24+esp]
+ add ecx,ebp
+ ; 20_39 70
+ mov ebp,edx
+ xor ebx,DWORD [32+esp]
+ xor ebp,edi
+ xor ebx,DWORD [56+esp]
+ xor ebp,esi
+ xor ebx,DWORD [12+esp]
+ rol ebx,1
+ add eax,ebp
+ ror edx,2
+ mov ebp,ecx
+ rol ebp,5
+ mov DWORD [24+esp],ebx
+ lea ebx,[3395469782+eax*1+ebx]
+ mov eax,DWORD [28+esp]
+ add ebx,ebp
+ ; 20_39 71
+ mov ebp,ecx
+ xor eax,DWORD [36+esp]
+ xor ebp,edx
+ xor eax,DWORD [60+esp]
+ xor ebp,edi
+ xor eax,DWORD [16+esp]
+ rol eax,1
+ add esi,ebp
+ ror ecx,2
+ mov ebp,ebx
+ rol ebp,5
+ mov DWORD [28+esp],eax
+ lea eax,[3395469782+esi*1+eax]
+ mov esi,DWORD [32+esp]
+ add eax,ebp
+ ; 20_39 72
+ mov ebp,ebx
+ xor esi,DWORD [40+esp]
+ xor ebp,ecx
+ xor esi,DWORD [esp]
+ xor ebp,edx
+ xor esi,DWORD [20+esp]
+ rol esi,1
+ add edi,ebp
+ ror ebx,2
+ mov ebp,eax
+ rol ebp,5
+ mov DWORD [32+esp],esi
+ lea esi,[3395469782+edi*1+esi]
+ mov edi,DWORD [36+esp]
+ add esi,ebp
+ ; 20_39 73
+ mov ebp,eax
+ xor edi,DWORD [44+esp]
+ xor ebp,ebx
+ xor edi,DWORD [4+esp]
+ xor ebp,ecx
+ xor edi,DWORD [24+esp]
+ rol edi,1
+ add edx,ebp
+ ror eax,2
+ mov ebp,esi
+ rol ebp,5
+ mov DWORD [36+esp],edi
+ lea edi,[3395469782+edx*1+edi]
+ mov edx,DWORD [40+esp]
+ add edi,ebp
+ ; 20_39 74
+ mov ebp,esi
+ xor edx,DWORD [48+esp]
+ xor ebp,eax
+ xor edx,DWORD [8+esp]
+ xor ebp,ebx
+ xor edx,DWORD [28+esp]
+ rol edx,1
+ add ecx,ebp
+ ror esi,2
+ mov ebp,edi
+ rol ebp,5
+ mov DWORD [40+esp],edx
+ lea edx,[3395469782+ecx*1+edx]
+ mov ecx,DWORD [44+esp]
+ add edx,ebp
+ ; 20_39 75
+ mov ebp,edi
+ xor ecx,DWORD [52+esp]
+ xor ebp,esi
+ xor ecx,DWORD [12+esp]
+ xor ebp,eax
+ xor ecx,DWORD [32+esp]
+ rol ecx,1
+ add ebx,ebp
+ ror edi,2
+ mov ebp,edx
+ rol ebp,5
+ mov DWORD [44+esp],ecx
+ lea ecx,[3395469782+ebx*1+ecx]
+ mov ebx,DWORD [48+esp]
+ add ecx,ebp
+ ; 20_39 76
+ mov ebp,edx
+ xor ebx,DWORD [56+esp]
+ xor ebp,edi
+ xor ebx,DWORD [16+esp]
+ xor ebp,esi
+ xor ebx,DWORD [36+esp]
+ rol ebx,1
+ add eax,ebp
+ ror edx,2
+ mov ebp,ecx
+ rol ebp,5
+ mov DWORD [48+esp],ebx
+ lea ebx,[3395469782+eax*1+ebx]
+ mov eax,DWORD [52+esp]
+ add ebx,ebp
+ ; 20_39 77
+ mov ebp,ecx
+ xor eax,DWORD [60+esp]
+ xor ebp,edx
+ xor eax,DWORD [20+esp]
+ xor ebp,edi
+ xor eax,DWORD [40+esp]
+ rol eax,1
+ add esi,ebp
+ ror ecx,2
+ mov ebp,ebx
+ rol ebp,5
+ lea eax,[3395469782+esi*1+eax]
+ mov esi,DWORD [56+esp]
+ add eax,ebp
+ ; 20_39 78
+ mov ebp,ebx
+ xor esi,DWORD [esp]
+ xor ebp,ecx
+ xor esi,DWORD [24+esp]
+ xor ebp,edx
+ xor esi,DWORD [44+esp]
+ rol esi,1
+ add edi,ebp
+ ror ebx,2
+ mov ebp,eax
+ rol ebp,5
+ lea esi,[3395469782+edi*1+esi]
+ mov edi,DWORD [60+esp]
+ add esi,ebp
+ ; 20_39 79
+ mov ebp,eax
+ xor edi,DWORD [4+esp]
+ xor ebp,ebx
+ xor edi,DWORD [28+esp]
+ xor ebp,ecx
+ xor edi,DWORD [48+esp]
+ rol edi,1
+ add edx,ebp
+ ror eax,2
+ mov ebp,esi
+ rol ebp,5
+ lea edi,[3395469782+edx*1+edi]
+ add edi,ebp
+ mov ebp,DWORD [96+esp]
+ mov edx,DWORD [100+esp]
+ add edi,DWORD [ebp]
+ add esi,DWORD [4+ebp]
+ add eax,DWORD [8+ebp]
+ add ebx,DWORD [12+ebp]
+ add ecx,DWORD [16+ebp]
+ mov DWORD [ebp],edi
+ add edx,64
+ mov DWORD [4+ebp],esi
+ cmp edx,DWORD [104+esp]
+ mov DWORD [8+ebp],eax
+ mov edi,ecx
+ mov DWORD [12+ebp],ebx
+ mov esi,edx
+ mov DWORD [16+ebp],ecx
+ jb NEAR L$000loop
+ add esp,76
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+db 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
+db 102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82
+db 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112
+db 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0

+ 279 - 280
libs/openssl/crypto/sha/asm/sha256_586.asm

@@ -1,292 +1,291 @@
-
 %ifidn __OUTPUT_FORMAT__,obj
-section	code	use32 class=code align=256
+section code use32 class=code align=256
 %elifidn __OUTPUT_FORMAT__,win32
 [email protected] equ 1
-section	.text	code align=256
+section .text code align=256
 %else
-section	.text	code
+section .text code
 %endif
-global	_sha256_block_data_order
-align	16
+global _sha256_block_data_order
+align 16
 _sha256_block_data_order:
 L$_sha256_block_data_order_begin:
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	mov	esi,DWORD [20+esp]
-	mov	edi,DWORD [24+esp]
-	mov	eax,DWORD [28+esp]
-	mov	ebx,esp
-	call	L$000pic_point
+ push ebp
+ push ebx
+ push esi
+ push edi
+ mov esi,DWORD [20+esp]
+ mov edi,DWORD [24+esp]
+ mov eax,DWORD [28+esp]
+ mov ebx,esp
+ call L$000pic_point
 L$000pic_point:
-	pop	ebp
-	lea	ebp,[(L$001K256-L$000pic_point)+ebp]
-	sub	esp,16
-	and	esp,-64
-	shl	eax,6
-	add	eax,edi
-	mov	DWORD [esp],esi
-	mov	DWORD [4+esp],edi
-	mov	DWORD [8+esp],eax
-	mov	DWORD [12+esp],ebx
-	jmp	NEAR L$002loop
-align	16
+ pop ebp
+ lea ebp,[(L$001K256-L$000pic_point)+ebp]
+ sub esp,16
+ and esp,-64
+ shl eax,6
+ add eax,edi
+ mov DWORD [esp],esi
+ mov DWORD [4+esp],edi
+ mov DWORD [8+esp],eax
+ mov DWORD [12+esp],ebx
+ jmp NEAR L$002loop
+align 16
 L$002loop:
-	mov	eax,DWORD [edi]
-	mov	ebx,DWORD [4+edi]
-	mov	ecx,DWORD [8+edi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	mov	edx,DWORD [12+edi]
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	push	eax
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	push	ebx
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	push	ecx
-	push	edx
-	mov	eax,DWORD [16+edi]
-	mov	ebx,DWORD [20+edi]
-	mov	ecx,DWORD [24+edi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	mov	edx,DWORD [28+edi]
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	push	eax
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	push	ebx
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	push	ecx
-	push	edx
-	mov	eax,DWORD [32+edi]
-	mov	ebx,DWORD [36+edi]
-	mov	ecx,DWORD [40+edi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	mov	edx,DWORD [44+edi]
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	push	eax
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	push	ebx
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	push	ecx
-	push	edx
-	mov	eax,DWORD [48+edi]
-	mov	ebx,DWORD [52+edi]
-	mov	ecx,DWORD [56+edi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	mov	edx,DWORD [60+edi]
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	push	eax
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	push	ebx
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	push	ecx
-	push	edx
-	add	edi,64
-	lea	esp,[esp-36]
-	mov	DWORD [104+esp],edi
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	mov	ecx,DWORD [8+esi]
-	mov	edi,DWORD [12+esi]
-	mov	DWORD [8+esp],ebx
-	xor	ebx,ecx
-	mov	DWORD [12+esp],ecx
-	mov	DWORD [16+esp],edi
-	mov	DWORD [esp],ebx
-	mov	edx,DWORD [16+esi]
-	mov	ebx,DWORD [20+esi]
-	mov	ecx,DWORD [24+esi]
-	mov	edi,DWORD [28+esi]
-	mov	DWORD [24+esp],ebx
-	mov	DWORD [28+esp],ecx
-	mov	DWORD [32+esp],edi
-align	16
+ mov eax,DWORD [edi]
+ mov ebx,DWORD [4+edi]
+ mov ecx,DWORD [8+edi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ mov edx,DWORD [12+edi]
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ push eax
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ push ebx
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ push ecx
+ push edx
+ mov eax,DWORD [16+edi]
+ mov ebx,DWORD [20+edi]
+ mov ecx,DWORD [24+edi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ mov edx,DWORD [28+edi]
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ push eax
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ push ebx
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ push ecx
+ push edx
+ mov eax,DWORD [32+edi]
+ mov ebx,DWORD [36+edi]
+ mov ecx,DWORD [40+edi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ mov edx,DWORD [44+edi]
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ push eax
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ push ebx
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ push ecx
+ push edx
+ mov eax,DWORD [48+edi]
+ mov ebx,DWORD [52+edi]
+ mov ecx,DWORD [56+edi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ mov edx,DWORD [60+edi]
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ push eax
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ push ebx
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ push ecx
+ push edx
+ add edi,64
+ lea esp,[esp-36]
+ mov DWORD [104+esp],edi
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ mov ecx,DWORD [8+esi]
+ mov edi,DWORD [12+esi]
+ mov DWORD [8+esp],ebx
+ xor ebx,ecx
+ mov DWORD [12+esp],ecx
+ mov DWORD [16+esp],edi
+ mov DWORD [esp],ebx
+ mov edx,DWORD [16+esi]
+ mov ebx,DWORD [20+esi]
+ mov ecx,DWORD [24+esi]
+ mov edi,DWORD [28+esi]
+ mov DWORD [24+esp],ebx
+ mov DWORD [28+esp],ecx
+ mov DWORD [32+esp],edi
+align 16
 L$00300_15:
-	mov	ecx,edx
-	mov	esi,DWORD [24+esp]
-	ror	ecx,14
-	mov	edi,DWORD [28+esp]
-	xor	ecx,edx
-	xor	esi,edi
-	mov	ebx,DWORD [96+esp]
-	ror	ecx,5
-	and	esi,edx
-	mov	DWORD [20+esp],edx
-	xor	edx,ecx
-	add	ebx,DWORD [32+esp]
-	xor	esi,edi
-	ror	edx,6
-	mov	ecx,eax
-	add	ebx,esi
-	ror	ecx,9
-	add	ebx,edx
-	mov	edi,DWORD [8+esp]
-	xor	ecx,eax
-	mov	DWORD [4+esp],eax
-	lea	esp,[esp-4]
-	ror	ecx,11
-	mov	esi,DWORD [ebp]
-	xor	ecx,eax
-	mov	edx,DWORD [20+esp]
-	xor	eax,edi
-	ror	ecx,2
-	add	ebx,esi
-	mov	DWORD [esp],eax
-	add	edx,ebx
-	and	eax,DWORD [4+esp]
-	add	ebx,ecx
-	xor	eax,edi
-	add	ebp,4
-	add	eax,ebx
-	cmp	esi,3248222580
-	jne	NEAR L$00300_15
-	mov	ecx,DWORD [156+esp]
-	jmp	NEAR L$00416_63
-align	16
+ mov ecx,edx
+ mov esi,DWORD [24+esp]
+ ror ecx,14
+ mov edi,DWORD [28+esp]
+ xor ecx,edx
+ xor esi,edi
+ mov ebx,DWORD [96+esp]
+ ror ecx,5
+ and esi,edx
+ mov DWORD [20+esp],edx
+ xor edx,ecx
+ add ebx,DWORD [32+esp]
+ xor esi,edi
+ ror edx,6
+ mov ecx,eax
+ add ebx,esi
+ ror ecx,9
+ add ebx,edx
+ mov edi,DWORD [8+esp]
+ xor ecx,eax
+ mov DWORD [4+esp],eax
+ lea esp,[esp-4]
+ ror ecx,11
+ mov esi,DWORD [ebp]
+ xor ecx,eax
+ mov edx,DWORD [20+esp]
+ xor eax,edi
+ ror ecx,2
+ add ebx,esi
+ mov DWORD [esp],eax
+ add edx,ebx
+ and eax,DWORD [4+esp]
+ add ebx,ecx
+ xor eax,edi
+ add ebp,4
+ add eax,ebx
+ cmp esi,3248222580
+ jne NEAR L$00300_15
+ mov ecx,DWORD [156+esp]
+ jmp NEAR L$00416_63
+align 16
 L$00416_63:
-	mov	ebx,ecx
-	mov	esi,DWORD [104+esp]
-	ror	ecx,11
-	mov	edi,esi
-	ror	esi,2
-	xor	ecx,ebx
-	shr	ebx,3
-	ror	ecx,7
-	xor	esi,edi
-	xor	ebx,ecx
-	ror	esi,17
-	add	ebx,DWORD [160+esp]
-	shr	edi,10
-	add	ebx,DWORD [124+esp]
-	mov	ecx,edx
-	xor	edi,esi
-	mov	esi,DWORD [24+esp]
-	ror	ecx,14
-	add	ebx,edi
-	mov	edi,DWORD [28+esp]
-	xor	ecx,edx
-	xor	esi,edi
-	mov	DWORD [96+esp],ebx
-	ror	ecx,5
-	and	esi,edx
-	mov	DWORD [20+esp],edx
-	xor	edx,ecx
-	add	ebx,DWORD [32+esp]
-	xor	esi,edi
-	ror	edx,6
-	mov	ecx,eax
-	add	ebx,esi
-	ror	ecx,9
-	add	ebx,edx
-	mov	edi,DWORD [8+esp]
-	xor	ecx,eax
-	mov	DWORD [4+esp],eax
-	lea	esp,[esp-4]
-	ror	ecx,11
-	mov	esi,DWORD [ebp]
-	xor	ecx,eax
-	mov	edx,DWORD [20+esp]
-	xor	eax,edi
-	ror	ecx,2
-	add	ebx,esi
-	mov	DWORD [esp],eax
-	add	edx,ebx
-	and	eax,DWORD [4+esp]
-	add	ebx,ecx
-	xor	eax,edi
-	mov	ecx,DWORD [156+esp]
-	add	ebp,4
-	add	eax,ebx
-	cmp	esi,3329325298
-	jne	NEAR L$00416_63
-	mov	esi,DWORD [356+esp]
-	mov	ebx,DWORD [8+esp]
-	mov	ecx,DWORD [16+esp]
-	add	eax,DWORD [esi]
-	add	ebx,DWORD [4+esi]
-	add	edi,DWORD [8+esi]
-	add	ecx,DWORD [12+esi]
-	mov	DWORD [esi],eax
-	mov	DWORD [4+esi],ebx
-	mov	DWORD [8+esi],edi
-	mov	DWORD [12+esi],ecx
-	mov	eax,DWORD [24+esp]
-	mov	ebx,DWORD [28+esp]
-	mov	ecx,DWORD [32+esp]
-	mov	edi,DWORD [360+esp]
-	add	edx,DWORD [16+esi]
-	add	eax,DWORD [20+esi]
-	add	ebx,DWORD [24+esi]
-	add	ecx,DWORD [28+esi]
-	mov	DWORD [16+esi],edx
-	mov	DWORD [20+esi],eax
-	mov	DWORD [24+esi],ebx
-	mov	DWORD [28+esi],ecx
-	lea	esp,[356+esp]
-	sub	ebp,256
-	cmp	edi,DWORD [8+esp]
-	jb	NEAR L$002loop
-	mov	esp,DWORD [12+esp]
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-align	64
+ mov ebx,ecx
+ mov esi,DWORD [104+esp]
+ ror ecx,11
+ mov edi,esi
+ ror esi,2
+ xor ecx,ebx
+ shr ebx,3
+ ror ecx,7
+ xor esi,edi
+ xor ebx,ecx
+ ror esi,17
+ add ebx,DWORD [160+esp]
+ shr edi,10
+ add ebx,DWORD [124+esp]
+ mov ecx,edx
+ xor edi,esi
+ mov esi,DWORD [24+esp]
+ ror ecx,14
+ add ebx,edi
+ mov edi,DWORD [28+esp]
+ xor ecx,edx
+ xor esi,edi
+ mov DWORD [96+esp],ebx
+ ror ecx,5
+ and esi,edx
+ mov DWORD [20+esp],edx
+ xor edx,ecx
+ add ebx,DWORD [32+esp]
+ xor esi,edi
+ ror edx,6
+ mov ecx,eax
+ add ebx,esi
+ ror ecx,9
+ add ebx,edx
+ mov edi,DWORD [8+esp]
+ xor ecx,eax
+ mov DWORD [4+esp],eax
+ lea esp,[esp-4]
+ ror ecx,11
+ mov esi,DWORD [ebp]
+ xor ecx,eax
+ mov edx,DWORD [20+esp]
+ xor eax,edi
+ ror ecx,2
+ add ebx,esi
+ mov DWORD [esp],eax
+ add edx,ebx
+ and eax,DWORD [4+esp]
+ add ebx,ecx
+ xor eax,edi
+ mov ecx,DWORD [156+esp]
+ add ebp,4
+ add eax,ebx
+ cmp esi,3329325298
+ jne NEAR L$00416_63
+ mov esi,DWORD [356+esp]
+ mov ebx,DWORD [8+esp]
+ mov ecx,DWORD [16+esp]
+ add eax,DWORD [esi]
+ add ebx,DWORD [4+esi]
+ add edi,DWORD [8+esi]
+ add ecx,DWORD [12+esi]
+ mov DWORD [esi],eax
+ mov DWORD [4+esi],ebx
+ mov DWORD [8+esi],edi
+ mov DWORD [12+esi],ecx
+ mov eax,DWORD [24+esp]
+ mov ebx,DWORD [28+esp]
+ mov ecx,DWORD [32+esp]
+ mov edi,DWORD [360+esp]
+ add edx,DWORD [16+esi]
+ add eax,DWORD [20+esi]
+ add ebx,DWORD [24+esi]
+ add ecx,DWORD [28+esi]
+ mov DWORD [16+esi],edx
+ mov DWORD [20+esi],eax
+ mov DWORD [24+esi],ebx
+ mov DWORD [28+esi],ecx
+ lea esp,[356+esp]
+ sub ebp,256
+ cmp edi,DWORD [8+esp]
+ jb NEAR L$002loop
+ mov esp,DWORD [12+esp]
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+align 64
 L$001K256:
-dd	1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298
-dd	66051,67438087,134810123,202182159
-db	83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97
-db	110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
-db	67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
-db	112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
-db	62,0
+dd 1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298
+dd 66051,67438087,134810123,202182159
+db 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97
+db 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
+db 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
+db 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
+db 62,0

+ 653 - 654
libs/openssl/crypto/sha/asm/sha512_586.asm

@@ -1,666 +1,665 @@
-
 %ifidn __OUTPUT_FORMAT__,obj
-section	code	use32 class=code align=256
+section code use32 class=code align=256
 %elifidn __OUTPUT_FORMAT__,win32
 [email protected] equ 1
-section	.text	code align=256
+section .text code align=256
 %else
-section	.text	code
+section .text code
 %endif
-global	_sha512_block_data_order
-align	16
+global _sha512_block_data_order
+align 16
 _sha512_block_data_order:
 L$_sha512_block_data_order_begin:
-	push	ebp
-	push	ebx
-	push	esi
-	push	edi
-	mov	esi,DWORD [20+esp]
-	mov	edi,DWORD [24+esp]
-	mov	eax,DWORD [28+esp]
-	mov	ebx,esp
-	call	L$000pic_point
+ push ebp
+ push ebx
+ push esi
+ push edi
+ mov esi,DWORD [20+esp]
+ mov edi,DWORD [24+esp]
+ mov eax,DWORD [28+esp]
+ mov ebx,esp
+ call L$000pic_point
 L$000pic_point:
-	pop	ebp
-	lea	ebp,[(L$001K512-L$000pic_point)+ebp]
-	sub	esp,16
-	and	esp,-64
-	shl	eax,7
-	add	eax,edi
-	mov	DWORD [esp],esi
-	mov	DWORD [4+esp],edi
-	mov	DWORD [8+esp],eax
-	mov	DWORD [12+esp],ebx
-align	16
+ pop ebp
+ lea ebp,[(L$001K512-L$000pic_point)+ebp]
+ sub esp,16
+ and esp,-64
+ shl eax,7
+ add eax,edi
+ mov DWORD [esp],esi
+ mov DWORD [4+esp],edi
+ mov DWORD [8+esp],eax
+ mov DWORD [12+esp],ebx
+align 16
 L$002loop_x86:
-	mov	eax,DWORD [edi]
-	mov	ebx,DWORD [4+edi]
-	mov	ecx,DWORD [8+edi]
-	mov	edx,DWORD [12+edi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	push	eax
-	push	ebx
-	push	ecx
-	push	edx
-	mov	eax,DWORD [16+edi]
-	mov	ebx,DWORD [20+edi]
-	mov	ecx,DWORD [24+edi]
-	mov	edx,DWORD [28+edi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	push	eax
-	push	ebx
-	push	ecx
-	push	edx
-	mov	eax,DWORD [32+edi]
-	mov	ebx,DWORD [36+edi]
-	mov	ecx,DWORD [40+edi]
-	mov	edx,DWORD [44+edi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	push	eax
-	push	ebx
-	push	ecx
-	push	edx
-	mov	eax,DWORD [48+edi]
-	mov	ebx,DWORD [52+edi]
-	mov	ecx,DWORD [56+edi]
-	mov	edx,DWORD [60+edi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	push	eax
-	push	ebx
-	push	ecx
-	push	edx
-	mov	eax,DWORD [64+edi]
-	mov	ebx,DWORD [68+edi]
-	mov	ecx,DWORD [72+edi]
-	mov	edx,DWORD [76+edi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	push	eax
-	push	ebx
-	push	ecx
-	push	edx
-	mov	eax,DWORD [80+edi]
-	mov	ebx,DWORD [84+edi]
-	mov	ecx,DWORD [88+edi]
-	mov	edx,DWORD [92+edi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	push	eax
-	push	ebx
-	push	ecx
-	push	edx
-	mov	eax,DWORD [96+edi]
-	mov	ebx,DWORD [100+edi]
-	mov	ecx,DWORD [104+edi]
-	mov	edx,DWORD [108+edi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	push	eax
-	push	ebx
-	push	ecx
-	push	edx
-	mov	eax,DWORD [112+edi]
-	mov	ebx,DWORD [116+edi]
-	mov	ecx,DWORD [120+edi]
-	mov	edx,DWORD [124+edi]
-	; bswap eax
-	xchg	ah,al
-	ror	eax,16
-	xchg	ah,al
-	; bswap ebx
-	xchg	bh,bl
-	ror	ebx,16
-	xchg	bh,bl
-	; bswap ecx
-	xchg	ch,cl
-	ror	ecx,16
-	xchg	ch,cl
-	; bswap edx
-	xchg	dh,dl
-	ror	edx,16
-	xchg	dh,dl
-	push	eax
-	push	ebx
-	push	ecx
-	push	edx
-	add	edi,128
-	sub	esp,72
-	mov	DWORD [204+esp],edi
-	lea	edi,[8+esp]
-	mov	ecx,16
-dd	2784229001
-align	16
+ mov eax,DWORD [edi]
+ mov ebx,DWORD [4+edi]
+ mov ecx,DWORD [8+edi]
+ mov edx,DWORD [12+edi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ push eax
+ push ebx
+ push ecx
+ push edx
+ mov eax,DWORD [16+edi]
+ mov ebx,DWORD [20+edi]
+ mov ecx,DWORD [24+edi]
+ mov edx,DWORD [28+edi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ push eax
+ push ebx
+ push ecx
+ push edx
+ mov eax,DWORD [32+edi]
+ mov ebx,DWORD [36+edi]
+ mov ecx,DWORD [40+edi]
+ mov edx,DWORD [44+edi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ push eax
+ push ebx
+ push ecx
+ push edx
+ mov eax,DWORD [48+edi]
+ mov ebx,DWORD [52+edi]
+ mov ecx,DWORD [56+edi]
+ mov edx,DWORD [60+edi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ push eax
+ push ebx
+ push ecx
+ push edx
+ mov eax,DWORD [64+edi]
+ mov ebx,DWORD [68+edi]
+ mov ecx,DWORD [72+edi]
+ mov edx,DWORD [76+edi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ push eax
+ push ebx
+ push ecx
+ push edx
+ mov eax,DWORD [80+edi]
+ mov ebx,DWORD [84+edi]
+ mov ecx,DWORD [88+edi]
+ mov edx,DWORD [92+edi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ push eax
+ push ebx
+ push ecx
+ push edx
+ mov eax,DWORD [96+edi]
+ mov ebx,DWORD [100+edi]
+ mov ecx,DWORD [104+edi]
+ mov edx,DWORD [108+edi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ push eax
+ push ebx
+ push ecx
+ push edx
+ mov eax,DWORD [112+edi]
+ mov ebx,DWORD [116+edi]
+ mov ecx,DWORD [120+edi]
+ mov edx,DWORD [124+edi]
+ ; bswap eax
+ xchg ah,al
+ ror eax,16
+ xchg ah,al
+ ; bswap ebx
+ xchg bh,bl
+ ror ebx,16
+ xchg bh,bl
+ ; bswap ecx
+ xchg ch,cl
+ ror ecx,16
+ xchg ch,cl
+ ; bswap edx
+ xchg dh,dl
+ ror edx,16
+ xchg dh,dl
+ push eax
+ push ebx
+ push ecx
+ push edx
+ add edi,128
+ sub esp,72
+ mov DWORD [204+esp],edi
+ lea edi,[8+esp]
+ mov ecx,16
+dd 2784229001
+align 16
 L$00300_15_x86:
-	mov	ecx,DWORD [40+esp]
-	mov	edx,DWORD [44+esp]
-	mov	esi,ecx
-	shr	ecx,9
-	mov	edi,edx
-	shr	edx,9
-	mov	ebx,ecx
-	shl	esi,14
-	mov	eax,edx
-	shl	edi,14
-	xor	ebx,esi
-	shr	ecx,5
-	xor	eax,edi
-	shr	edx,5
-	xor	eax,ecx
-	shl	esi,4
-	xor	ebx,edx
-	shl	edi,4
-	xor	ebx,esi
-	shr	ecx,4
-	xor	eax,edi
-	shr	edx,4
-	xor	eax,ecx
-	shl	esi,5
-	xor	ebx,edx
-	shl	edi,5
-	xor	eax,esi
-	xor	ebx,edi
-	mov	ecx,DWORD [48+esp]
-	mov	edx,DWORD [52+esp]
-	mov	esi,DWORD [56+esp]
-	mov	edi,DWORD [60+esp]
-	add	eax,DWORD [64+esp]
-	adc	ebx,DWORD [68+esp]
-	xor	ecx,esi
-	xor	edx,edi
-	and	ecx,DWORD [40+esp]
-	and	edx,DWORD [44+esp]
-	add	eax,DWORD [192+esp]
-	adc	ebx,DWORD [196+esp]
-	xor	ecx,esi
-	xor	edx,edi
-	mov	esi,DWORD [ebp]
-	mov	edi,DWORD [4+ebp]
-	add	eax,ecx
-	adc	ebx,edx
-	mov	ecx,DWORD [32+esp]
-	mov	edx,DWORD [36+esp]
-	add	eax,esi
-	adc	ebx,edi
-	mov	DWORD [esp],eax
-	mov	DWORD [4+esp],ebx
-	add	eax,ecx
-	adc	ebx,edx
-	mov	ecx,DWORD [8+esp]
-	mov	edx,DWORD [12+esp]
-	mov	DWORD [32+esp],eax
-	mov	DWORD [36+esp],ebx
-	mov	esi,ecx
-	shr	ecx,2
-	mov	edi,edx
-	shr	edx,2
-	mov	ebx,ecx
-	shl	esi,4
-	mov	eax,edx
-	shl	edi,4
-	xor	ebx,esi
-	shr	ecx,5
-	xor	eax,edi
-	shr	edx,5
-	xor	ebx,ecx
-	shl	esi,21
-	xor	eax,edx
-	shl	edi,21
-	xor	eax,esi
-	shr	ecx,21
-	xor	ebx,edi
-	shr	edx,21
-	xor	eax,ecx
-	shl	esi,5
-	xor	ebx,edx
-	shl	edi,5
-	xor	eax,esi
-	xor	ebx,edi
-	mov	ecx,DWORD [8+esp]
-	mov	edx,DWORD [12+esp]
-	mov	esi,DWORD [16+esp]
-	mov	edi,DWORD [20+esp]
-	add	eax,DWORD [esp]
-	adc	ebx,DWORD [4+esp]
-	or	ecx,esi
-	or	edx,edi
-	and	ecx,DWORD [24+esp]
-	and	edx,DWORD [28+esp]
-	and	esi,DWORD [8+esp]
-	and	edi,DWORD [12+esp]
-	or	ecx,esi
-	or	edx,edi
-	add	eax,ecx
-	adc	ebx,edx
-	mov	DWORD [esp],eax
-	mov	DWORD [4+esp],ebx
-	mov	dl,BYTE [ebp]
-	sub	esp,8
-	lea	ebp,[8+ebp]
-	cmp	dl,148
-	jne	NEAR L$00300_15_x86
-align	16
+ mov ecx,DWORD [40+esp]
+ mov edx,DWORD [44+esp]
+ mov esi,ecx
+ shr ecx,9
+ mov edi,edx
+ shr edx,9
+ mov ebx,ecx
+ shl esi,14
+ mov eax,edx
+ shl edi,14
+ xor ebx,esi
+ shr ecx,5
+ xor eax,edi
+ shr edx,5
+ xor eax,ecx
+ shl esi,4
+ xor ebx,edx
+ shl edi,4
+ xor ebx,esi
+ shr ecx,4
+ xor eax,edi
+ shr edx,4
+ xor eax,ecx
+ shl esi,5
+ xor ebx,edx
+ shl edi,5
+ xor eax,esi
+ xor ebx,edi
+ mov ecx,DWORD [48+esp]
+ mov edx,DWORD [52+esp]
+ mov esi,DWORD [56+esp]
+ mov edi,DWORD [60+esp]
+ add eax,DWORD [64+esp]
+ adc ebx,DWORD [68+esp]
+ xor ecx,esi
+ xor edx,edi
+ and ecx,DWORD [40+esp]
+ and edx,DWORD [44+esp]
+ add eax,DWORD [192+esp]
+ adc ebx,DWORD [196+esp]
+ xor ecx,esi
+ xor edx,edi
+ mov esi,DWORD [ebp]
+ mov edi,DWORD [4+ebp]
+ add eax,ecx
+ adc ebx,edx
+ mov ecx,DWORD [32+esp]
+ mov edx,DWORD [36+esp]
+ add eax,esi
+ adc ebx,edi
+ mov DWORD [esp],eax
+ mov DWORD [4+esp],ebx
+ add eax,ecx
+ adc ebx,edx
+ mov ecx,DWORD [8+esp]
+ mov edx,DWORD [12+esp]
+ mov DWORD [32+esp],eax
+ mov DWORD [36+esp],ebx
+ mov esi,ecx
+ shr ecx,2
+ mov edi,edx
+ shr edx,2
+ mov ebx,ecx
+ shl esi,4
+ mov eax,edx
+ shl edi,4
+ xor ebx,esi
+ shr ecx,5
+ xor eax,edi
+ shr edx,5
+ xor ebx,ecx
+ shl esi,21
+ xor eax,edx
+ shl edi,21
+ xor eax,esi
+ shr ecx,21
+ xor ebx,edi
+ shr edx,21
+ xor eax,ecx
+ shl esi,5
+ xor ebx,edx
+ shl edi,5
+ xor eax,esi
+ xor ebx,edi
+ mov ecx,DWORD [8+esp]
+ mov edx,DWORD [12+esp]
+ mov esi,DWORD [16+esp]
+ mov edi,DWORD [20+esp]
+ add eax,DWORD [esp]
+ adc ebx,DWORD [4+esp]
+ or ecx,esi
+ or edx,edi
+ and ecx,DWORD [24+esp]
+ and edx,DWORD [28+esp]
+ and esi,DWORD [8+esp]
+ and edi,DWORD [12+esp]
+ or ecx,esi
+ or edx,edi
+ add eax,ecx
+ adc ebx,edx
+ mov DWORD [esp],eax
+ mov DWORD [4+esp],ebx
+ mov dl,BYTE [ebp]
+ sub esp,8
+ lea ebp,[8+ebp]
+ cmp dl,148
+ jne NEAR L$00300_15_x86
+align 16
 L$00416_79_x86:
-	mov	ecx,DWORD [312+esp]
-	mov	edx,DWORD [316+esp]
-	mov	esi,ecx
-	shr	ecx,1
-	mov	edi,edx
-	shr	edx,1
-	mov	eax,ecx
-	shl	esi,24
-	mov	ebx,edx
-	shl	edi,24
-	xor	ebx,esi
-	shr	ecx,6
-	xor	eax,edi
-	shr	edx,6
-	xor	eax,ecx
-	shl	esi,7
-	xor	ebx,edx
-	shl	edi,1
-	xor	ebx,esi
-	shr	ecx,1
-	xor	eax,edi
-	shr	edx,1
-	xor	eax,ecx
-	shl	edi,6
-	xor	ebx,edx
-	xor	eax,edi
-	mov	DWORD [esp],eax
-	mov	DWORD [4+esp],ebx
-	mov	ecx,DWORD [208+esp]
-	mov	edx,DWORD [212+esp]
-	mov	esi,ecx
-	shr	ecx,6
-	mov	edi,edx
-	shr	edx,6
-	mov	eax,ecx
-	shl	esi,3
-	mov	ebx,edx
-	shl	edi,3
-	xor	eax,esi
-	shr	ecx,13
-	xor	ebx,edi
-	shr	edx,13
-	xor	eax,ecx
-	shl	esi,10
-	xor	ebx,edx
-	shl	edi,10
-	xor	ebx,esi
-	shr	ecx,10
-	xor	eax,edi
-	shr	edx,10
-	xor	ebx,ecx
-	shl	edi,13
-	xor	eax,edx
-	xor	eax,edi
-	mov	ecx,DWORD [320+esp]
-	mov	edx,DWORD [324+esp]
-	add	eax,DWORD [esp]
-	adc	ebx,DWORD [4+esp]
-	mov	esi,DWORD [248+esp]
-	mov	edi,DWORD [252+esp]
-	add	eax,ecx
-	adc	ebx,edx
-	add	eax,esi
-	adc	ebx,edi
-	mov	DWORD [192+esp],eax
-	mov	DWORD [196+esp],ebx
-	mov	ecx,DWORD [40+esp]
-	mov	edx,DWORD [44+esp]
-	mov	esi,ecx
-	shr	ecx,9
-	mov	edi,edx
-	shr	edx,9
-	mov	ebx,ecx
-	shl	esi,14
-	mov	eax,edx
-	shl	edi,14
-	xor	ebx,esi
-	shr	ecx,5
-	xor	eax,edi
-	shr	edx,5
-	xor	eax,ecx
-	shl	esi,4
-	xor	ebx,edx
-	shl	edi,4
-	xor	ebx,esi
-	shr	ecx,4
-	xor	eax,edi
-	shr	edx,4
-	xor	eax,ecx
-	shl	esi,5
-	xor	ebx,edx
-	shl	edi,5
-	xor	eax,esi
-	xor	ebx,edi
-	mov	ecx,DWORD [48+esp]
-	mov	edx,DWORD [52+esp]
-	mov	esi,DWORD [56+esp]
-	mov	edi,DWORD [60+esp]
-	add	eax,DWORD [64+esp]
-	adc	ebx,DWORD [68+esp]
-	xor	ecx,esi
-	xor	edx,edi
-	and	ecx,DWORD [40+esp]
-	and	edx,DWORD [44+esp]
-	add	eax,DWORD [192+esp]
-	adc	ebx,DWORD [196+esp]
-	xor	ecx,esi
-	xor	edx,edi
-	mov	esi,DWORD [ebp]
-	mov	edi,DWORD [4+ebp]
-	add	eax,ecx
-	adc	ebx,edx
-	mov	ecx,DWORD [32+esp]
-	mov	edx,DWORD [36+esp]
-	add	eax,esi
-	adc	ebx,edi
-	mov	DWORD [esp],eax
-	mov	DWORD [4+esp],ebx
-	add	eax,ecx
-	adc	ebx,edx
-	mov	ecx,DWORD [8+esp]
-	mov	edx,DWORD [12+esp]
-	mov	DWORD [32+esp],eax
-	mov	DWORD [36+esp],ebx
-	mov	esi,ecx
-	shr	ecx,2
-	mov	edi,edx
-	shr	edx,2
-	mov	ebx,ecx
-	shl	esi,4
-	mov	eax,edx
-	shl	edi,4
-	xor	ebx,esi
-	shr	ecx,5
-	xor	eax,edi
-	shr	edx,5
-	xor	ebx,ecx
-	shl	esi,21
-	xor	eax,edx
-	shl	edi,21
-	xor	eax,esi
-	shr	ecx,21
-	xor	ebx,edi
-	shr	edx,21
-	xor	eax,ecx
-	shl	esi,5
-	xor	ebx,edx
-	shl	edi,5
-	xor	eax,esi
-	xor	ebx,edi
-	mov	ecx,DWORD [8+esp]
-	mov	edx,DWORD [12+esp]
-	mov	esi,DWORD [16+esp]
-	mov	edi,DWORD [20+esp]
-	add	eax,DWORD [esp]
-	adc	ebx,DWORD [4+esp]
-	or	ecx,esi
-	or	edx,edi
-	and	ecx,DWORD [24+esp]
-	and	edx,DWORD [28+esp]
-	and	esi,DWORD [8+esp]
-	and	edi,DWORD [12+esp]
-	or	ecx,esi
-	or	edx,edi
-	add	eax,ecx
-	adc	ebx,edx
-	mov	DWORD [esp],eax
-	mov	DWORD [4+esp],ebx
-	mov	dl,BYTE [ebp]
-	sub	esp,8
-	lea	ebp,[8+ebp]
-	cmp	dl,23
-	jne	NEAR L$00416_79_x86
-	mov	esi,DWORD [840+esp]
-	mov	edi,DWORD [844+esp]
-	mov	eax,DWORD [esi]
-	mov	ebx,DWORD [4+esi]
-	mov	ecx,DWORD [8+esi]
-	mov	edx,DWORD [12+esi]
-	add	eax,DWORD [8+esp]
-	adc	ebx,DWORD [12+esp]
-	mov	DWORD [esi],eax
-	mov	DWORD [4+esi],ebx
-	add	ecx,DWORD [16+esp]
-	adc	edx,DWORD [20+esp]
-	mov	DWORD [8+esi],ecx
-	mov	DWORD [12+esi],edx
-	mov	eax,DWORD [16+esi]
-	mov	ebx,DWORD [20+esi]
-	mov	ecx,DWORD [24+esi]
-	mov	edx,DWORD [28+esi]
-	add	eax,DWORD [24+esp]
-	adc	ebx,DWORD [28+esp]
-	mov	DWORD [16+esi],eax
-	mov	DWORD [20+esi],ebx
-	add	ecx,DWORD [32+esp]
-	adc	edx,DWORD [36+esp]
-	mov	DWORD [24+esi],ecx
-	mov	DWORD [28+esi],edx
-	mov	eax,DWORD [32+esi]
-	mov	ebx,DWORD [36+esi]
-	mov	ecx,DWORD [40+esi]
-	mov	edx,DWORD [44+esi]
-	add	eax,DWORD [40+esp]
-	adc	ebx,DWORD [44+esp]
-	mov	DWORD [32+esi],eax
-	mov	DWORD [36+esi],ebx
-	add	ecx,DWORD [48+esp]
-	adc	edx,DWORD [52+esp]
-	mov	DWORD [40+esi],ecx
-	mov	DWORD [44+esi],edx
-	mov	eax,DWORD [48+esi]
-	mov	ebx,DWORD [52+esi]
-	mov	ecx,DWORD [56+esi]
-	mov	edx,DWORD [60+esi]
-	add	eax,DWORD [56+esp]
-	adc	ebx,DWORD [60+esp]
-	mov	DWORD [48+esi],eax
-	mov	DWORD [52+esi],ebx
-	add	ecx,DWORD [64+esp]
-	adc	edx,DWORD [68+esp]
-	mov	DWORD [56+esi],ecx
-	mov	DWORD [60+esi],edx
-	add	esp,840
-	sub	ebp,640
-	cmp	edi,DWORD [8+esp]
-	jb	NEAR L$002loop_x86
-	mov	esp,DWORD [12+esp]
-	pop	edi
-	pop	esi
-	pop	ebx
-	pop	ebp
-	ret
-align	64
+ mov ecx,DWORD [312+esp]
+ mov edx,DWORD [316+esp]
+ mov esi,ecx
+ shr ecx,1
+ mov edi,edx
+ shr edx,1
+ mov eax,ecx
+ shl esi,24
+ mov ebx,edx
+ shl edi,24
+ xor ebx,esi
+ shr ecx,6
+ xor eax,edi
+ shr edx,6
+ xor eax,ecx
+ shl esi,7
+ xor ebx,edx
+ shl edi,1
+ xor ebx,esi
+ shr ecx,1
+ xor eax,edi
+ shr edx,1
+ xor eax,ecx
+ shl edi,6
+ xor ebx,edx
+ xor eax,edi
+ mov DWORD [esp],eax
+ mov DWORD [4+esp],ebx
+ mov ecx,DWORD [208+esp]
+ mov edx,DWORD [212+esp]
+ mov esi,ecx
+ shr ecx,6
+ mov edi,edx
+ shr edx,6
+ mov eax,ecx
+ shl esi,3
+ mov ebx,edx
+ shl edi,3
+ xor eax,esi
+ shr ecx,13
+ xor ebx,edi
+ shr edx,13
+ xor eax,ecx
+ shl esi,10
+ xor ebx,edx
+ shl edi,10
+ xor ebx,esi
+ shr ecx,10
+ xor eax,edi
+ shr edx,10
+ xor ebx,ecx
+ shl edi,13
+ xor eax,edx
+ xor eax,edi
+ mov ecx,DWORD [320+esp]
+ mov edx,DWORD [324+esp]
+ add eax,DWORD [esp]
+ adc ebx,DWORD [4+esp]
+ mov esi,DWORD [248+esp]
+ mov edi,DWORD [252+esp]
+ add eax,ecx
+ adc ebx,edx
+ add eax,esi
+ adc ebx,edi
+ mov DWORD [192+esp],eax
+ mov DWORD [196+esp],ebx
+ mov ecx,DWORD [40+esp]
+ mov edx,DWORD [44+esp]
+ mov esi,ecx
+ shr ecx,9
+ mov edi,edx
+ shr edx,9
+ mov ebx,ecx
+ shl esi,14
+ mov eax,edx
+ shl edi,14
+ xor ebx,esi
+ shr ecx,5
+ xor eax,edi
+ shr edx,5
+ xor eax,ecx
+ shl esi,4
+ xor ebx,edx
+ shl edi,4
+ xor ebx,esi
+ shr ecx,4
+ xor eax,edi
+ shr edx,4
+ xor eax,ecx
+ shl esi,5
+ xor ebx,edx
+ shl edi,5
+ xor eax,esi
+ xor ebx,edi
+ mov ecx,DWORD [48+esp]
+ mov edx,DWORD [52+esp]
+ mov esi,DWORD [56+esp]
+ mov edi,DWORD [60+esp]
+ add eax,DWORD [64+esp]
+ adc ebx,DWORD [68+esp]
+ xor ecx,esi
+ xor edx,edi
+ and ecx,DWORD [40+esp]
+ and edx,DWORD [44+esp]
+ add eax,DWORD [192+esp]
+ adc ebx,DWORD [196+esp]
+ xor ecx,esi
+ xor edx,edi
+ mov esi,DWORD [ebp]
+ mov edi,DWORD [4+ebp]
+ add eax,ecx
+ adc ebx,edx
+ mov ecx,DWORD [32+esp]
+ mov edx,DWORD [36+esp]
+ add eax,esi
+ adc ebx,edi
+ mov DWORD [esp],eax
+ mov DWORD [4+esp],ebx
+ add eax,ecx
+ adc ebx,edx
+ mov ecx,DWORD [8+esp]
+ mov edx,DWORD [12+esp]
+ mov DWORD [32+esp],eax
+ mov DWORD [36+esp],ebx
+ mov esi,ecx
+ shr ecx,2
+ mov edi,edx
+ shr edx,2
+ mov ebx,ecx
+ shl esi,4
+ mov eax,edx
+ shl edi,4
+ xor ebx,esi
+ shr ecx,5
+ xor eax,edi
+ shr edx,5
+ xor ebx,ecx
+ shl esi,21
+ xor eax,edx
+ shl edi,21
+ xor eax,esi
+ shr ecx,21
+ xor ebx,edi
+ shr edx,21
+ xor eax,ecx
+ shl esi,5
+ xor ebx,edx
+ shl edi,5
+ xor eax,esi
+ xor ebx,edi
+ mov ecx,DWORD [8+esp]
+ mov edx,DWORD [12+esp]
+ mov esi,DWORD [16+esp]
+ mov edi,DWORD [20+esp]
+ add eax,DWORD [esp]
+ adc ebx,DWORD [4+esp]
+ or ecx,esi
+ or edx,edi
+ and ecx,DWORD [24+esp]
+ and edx,DWORD [28+esp]
+ and esi,DWORD [8+esp]
+ and edi,DWORD [12+esp]
+ or ecx,esi
+ or edx,edi
+ add eax,ecx
+ adc ebx,edx
+ mov DWORD [esp],eax
+ mov DWORD [4+esp],ebx
+ mov dl,BYTE [ebp]
+ sub esp,8
+ lea ebp,[8+ebp]
+ cmp dl,23
+ jne NEAR L$00416_79_x86
+ mov esi,DWORD [840+esp]
+ mov edi,DWORD [844+esp]
+ mov eax,DWORD [esi]
+ mov ebx,DWORD [4+esi]
+ mov ecx,DWORD [8+esi]
+ mov edx,DWORD [12+esi]
+ add eax,DWORD [8+esp]
+ adc ebx,DWORD [12+esp]
+ mov DWORD [esi],eax
+ mov DWORD [4+esi],ebx
+ add ecx,DWORD [16+esp]
+ adc edx,DWORD [20+esp]
+ mov DWORD [8+esi],ecx
+ mov DWORD [12+esi],edx
+ mov eax,DWORD [16+esi]
+ mov ebx,DWORD [20+esi]
+ mov ecx,DWORD [24+esi]
+ mov edx,DWORD [28+esi]
+ add eax,DWORD [24+esp]
+ adc ebx,DWORD [28+esp]
+ mov DWORD [16+esi],eax
+ mov DWORD [20+esi],ebx
+ add ecx,DWORD [32+esp]
+ adc edx,DWORD [36+esp]
+ mov DWORD [24+esi],ecx
+ mov DWORD [28+esi],edx
+ mov eax,DWORD [32+esi]
+ mov ebx,DWORD [36+esi]
+ mov ecx,DWORD [40+esi]
+ mov edx,DWORD [44+esi]
+ add eax,DWORD [40+esp]
+ adc ebx,DWORD [44+esp]
+ mov DWORD [32+esi],eax
+ mov DWORD [36+esi],ebx
+ add ecx,DWORD [48+esp]
+ adc edx,DWORD [52+esp]
+ mov DWORD [40+esi],ecx
+ mov DWORD [44+esi],edx
+ mov eax,DWORD [48+esi]
+ mov ebx,DWORD [52+esi]
+ mov ecx,DWORD [56+esi]
+ mov edx,DWORD [60+esi]
+ add eax,DWORD [56+esp]
+ adc ebx,DWORD [60+esp]
+ mov DWORD [48+esi],eax
+ mov DWORD [52+esi],ebx
+ add ecx,DWORD [64+esp]
+ adc edx,DWORD [68+esp]
+ mov DWORD [56+esi],ecx
+ mov DWORD [60+esi],edx
+ add esp,840
+ sub ebp,640
+ cmp edi,DWORD [8+esp]
+ jb NEAR L$002loop_x86
+ mov esp,DWORD [12+esp]
+ pop edi
+ pop esi
+ pop ebx
+ pop ebp
+ ret
+align 64
 L$001K512:
-dd	3609767458,1116352408
-dd	602891725,1899447441
-dd	3964484399,3049323471
-dd	2173295548,3921009573
-dd	4081628472,961987163
-dd	3053834265,1508970993
-dd	2937671579,2453635748
-dd	3664609560,2870763221
-dd	2734883394,3624381080
-dd	1164996542,310598401
-dd	1323610764,607225278
-dd	3590304994,1426881987
-dd	4068182383,1925078388
-dd	991336113,2162078206
-dd	633803317,2614888103
-dd	3479774868,3248222580
-dd	2666613458,3835390401
-dd	944711139,4022224774
-dd	2341262773,264347078
-dd	2007800933,604807628
-dd	1495990901,770255983
-dd	1856431235,1249150122
-dd	3175218132,1555081692
-dd	2198950837,1996064986
-dd	3999719339,2554220882
-dd	766784016,2821834349
-dd	2566594879,2952996808
-dd	3203337956,3210313671
-dd	1034457026,3336571891
-dd	2466948901,3584528711
-dd	3758326383,113926993
-dd	168717936,338241895
-dd	1188179964,666307205
-dd	1546045734,773529912
-dd	1522805485,1294757372
-dd	2643833823,1396182291
-dd	2343527390,1695183700
-dd	1014477480,1986661051
-dd	1206759142,2177026350
-dd	344077627,2456956037
-dd	1290863460,2730485921
-dd	3158454273,2820302411
-dd	3505952657,3259730800
-dd	106217008,3345764771
-dd	3606008344,3516065817
-dd	1432725776,3600352804
-dd	1467031594,4094571909
-dd	851169720,275423344
-dd	3100823752,430227734
-dd	1363258195,506948616
-dd	3750685593,659060556
-dd	3785050280,883997877
-dd	3318307427,958139571
-dd	3812723403,1322822218
-dd	2003034995,1537002063
-dd	3602036899,1747873779
-dd	1575990012,1955562222
-dd	1125592928,2024104815
-dd	2716904306,2227730452
-dd	442776044,2361852424
-dd	593698344,2428436474
-dd	3733110249,2756734187
-dd	2999351573,3204031479
-dd	3815920427,3329325298
-dd	3928383900,3391569614
-dd	566280711,3515267271
-dd	3454069534,3940187606
-dd	4000239992,4118630271
-dd	1914138554,116418474
-dd	2731055270,174292421
-dd	3203993006,289380356
-dd	320620315,460393269
-dd	587496836,685471733
-dd	1086792851,852142971
-dd	365543100,1017036298
-dd	2618297676,1126000580
-dd	3409855158,1288033470
-dd	4234509866,1501505948
-dd	987167468,1607167915
-dd	1246189591,1816402316
-dd	67438087,66051
-dd	202182159,134810123
-db	83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97
-db	110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
-db	67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
-db	112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
-db	62,0
+dd 3609767458,1116352408
+dd 602891725,1899447441
+dd 3964484399,3049323471
+dd 2173295548,3921009573
+dd 4081628472,961987163
+dd 3053834265,1508970993
+dd 2937671579,2453635748
+dd 3664609560,2870763221
+dd 2734883394,3624381080
+dd 1164996542,310598401
+dd 1323610764,607225278
+dd 3590304994,1426881987
+dd 4068182383,1925078388
+dd 991336113,2162078206
+dd 633803317,2614888103
+dd 3479774868,3248222580
+dd 2666613458,3835390401
+dd 944711139,4022224774
+dd 2341262773,264347078
+dd 2007800933,604807628
+dd 1495990901,770255983
+dd 1856431235,1249150122
+dd 3175218132,1555081692
+dd 2198950837,1996064986
+dd 3999719339,2554220882
+dd 766784016,2821834349
+dd 2566594879,2952996808
+dd 3203337956,3210313671
+dd 1034457026,3336571891
+dd 2466948901,3584528711
+dd 3758326383,113926993
+dd 168717936,338241895
+dd 1188179964,666307205
+dd 1546045734,773529912
+dd 1522805485,1294757372
+dd 2643833823,1396182291
+dd 2343527390,1695183700
+dd 1014477480,1986661051
+dd 1206759142,2177026350
+dd 344077627,2456956037
+dd 1290863460,2730485921
+dd 3158454273,2820302411
+dd 3505952657,3259730800
+dd 106217008,3345764771
+dd 3606008344,3516065817
+dd 1432725776,3600352804
+dd 1467031594,4094571909
+dd 851169720,275423344
+dd 3100823752,430227734
+dd 1363258195,506948616
+dd 3750685593,659060556
+dd 3785050280,883997877
+dd 3318307427,958139571
+dd 3812723403,1322822218
+dd 2003034995,1537002063
+dd 3602036899,1747873779
+dd 1575990012,1955562222
+dd 1125592928,2024104815
+dd 2716904306,2227730452
+dd 442776044,2361852424
+dd 593698344,2428436474
+dd 3733110249,2756734187
+dd 2999351573,3204031479
+dd 3815920427,3329325298
+dd 3928383900,3391569614
+dd 566280711,3515267271
+dd 3454069534,3940187606
+dd 4000239992,4118630271
+dd 1914138554,116418474
+dd 2731055270,174292421
+dd 3203993006,289380356
+dd 320620315,460393269
+dd 587496836,685471733
+dd 1086792851,852142971
+dd 365543100,1017036298
+dd 2618297676,1126000580
+dd 3409855158,1288033470
+dd 4234509866,1501505948
+dd 987167468,1607167915
+dd 1246189591,1816402316
+dd 67438087,66051
+dd 202182159,134810123
+db 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97
+db 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
+db 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
+db 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
+db 62,0