choice of parameters) when they are needed.
+++ /dev/null
- ; Don't even think of reading this code
- ; It was automatically generated by bf-586.pl
- ; Which is a perl program used to generate the x86 assember for
- ; any of elf, a.out, BSDI,Win32, or Solaris
- ; eric <eay@cryptsoft.com>
- ;
- TITLE bf-586.asm
- .486
-.model FLAT
-_TEXT SEGMENT
-PUBLIC _BF_encrypt
-
-_BF_encrypt PROC NEAR
- ;
- push ebp
- push ebx
- mov ebx, DWORD PTR 12[esp]
- mov ebp, DWORD PTR 16[esp]
- push esi
- push edi
- ; Load the 2 words
- mov edi, DWORD PTR [ebx]
- mov esi, DWORD PTR 4[ebx]
- xor eax, eax
- mov ebx, DWORD PTR [ebp]
- xor ecx, ecx
- xor edi, ebx
- ;
- ; Round 0
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 1
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor edi, ebx
- ;
- ; Round 2
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 3
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor edi, ebx
- ;
- ; Round 4
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 5
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor edi, ebx
- ;
- ; Round 6
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 7
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor edi, ebx
- ;
- ; Round 8
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 9
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor edi, ebx
- ;
- ; Round 10
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 11
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor edi, ebx
- ;
- ; Round 12
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 13
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor edi, ebx
- ;
- ; Round 14
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 15
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- ; Load parameter 0 (16) enc=1
- mov eax, DWORD PTR 20[esp]
- xor edi, ebx
- mov edx, DWORD PTR 68[ebp]
- xor esi, edx
- mov DWORD PTR 4[eax],edi
- mov DWORD PTR [eax],esi
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_BF_encrypt ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _BF_decrypt
-
-_BF_decrypt PROC NEAR
- ;
- push ebp
- push ebx
- mov ebx, DWORD PTR 12[esp]
- mov ebp, DWORD PTR 16[esp]
- push esi
- push edi
- ; Load the 2 words
- mov edi, DWORD PTR [ebx]
- mov esi, DWORD PTR 4[ebx]
- xor eax, eax
- mov ebx, DWORD PTR 68[ebp]
- xor ecx, ecx
- xor edi, ebx
- ;
- ; Round 16
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 15
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor edi, ebx
- ;
- ; Round 14
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 13
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor edi, ebx
- ;
- ; Round 12
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 11
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor edi, ebx
- ;
- ; Round 10
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 9
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor edi, ebx
- ;
- ; Round 8
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 7
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor edi, ebx
- ;
- ; Round 6
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 5
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor edi, ebx
- ;
- ; Round 4
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 3
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor edi, ebx
- ;
- ; Round 2
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- xor eax, eax
- xor esi, ebx
- ;
- ; Round 1
- mov edx, DWORD PTR 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 PTR 72[eax*4+ebp]
- mov ebx, DWORD PTR 1096[ebx*4+ebp]
- add ebx, eax
- mov eax, DWORD PTR 2120[ecx*4+ebp]
- xor ebx, eax
- mov edx, DWORD PTR 3144[edx*4+ebp]
- add ebx, edx
- ; Load parameter 0 (1) enc=0
- mov eax, DWORD PTR 20[esp]
- xor edi, ebx
- mov edx, DWORD PTR [ebp]
- xor esi, edx
- mov DWORD PTR 4[eax],edi
- mov DWORD PTR [eax],esi
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_BF_decrypt ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _BF_cbc_encrypt
-
-_BF_cbc_encrypt PROC NEAR
- ;
- push ebp
- push ebx
- push esi
- push edi
- mov ebp, DWORD PTR 28[esp]
- ; getting iv ptr from parameter 4
- mov ebx, DWORD PTR 36[esp]
- mov esi, DWORD PTR [ebx]
- mov edi, DWORD PTR 4[ebx]
- push edi
- push esi
- push edi
- push esi
- mov ebx, esp
- mov esi, DWORD PTR 36[esp]
- mov edi, DWORD PTR 40[esp]
- ; getting encrypt flag from parameter 5
- mov ecx, DWORD PTR 56[esp]
- ; get and push parameter 3
- mov eax, DWORD PTR 48[esp]
- push eax
- push ebx
- cmp ecx, 0
- jz $L000decrypt
- and ebp, 4294967288
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- jz $L001encrypt_finish
-L002encrypt_loop:
- mov ecx, DWORD PTR [esi]
- mov edx, DWORD PTR 4[esi]
- xor eax, ecx
- xor ebx, edx
- bswap eax
- bswap ebx
- mov DWORD PTR 8[esp],eax
- mov DWORD PTR 12[esp],ebx
- call _BF_encrypt
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- bswap eax
- bswap ebx
- mov DWORD PTR [edi],eax
- mov DWORD PTR 4[edi],ebx
- add esi, 8
- add edi, 8
- sub ebp, 8
- jnz L002encrypt_loop
-$L001encrypt_finish:
- mov ebp, DWORD PTR 52[esp]
- and ebp, 7
- jz $L003finish
- xor ecx, ecx
- xor edx, edx
- mov ebp, DWORD PTR $L004cbc_enc_jmp_table[ebp*4]
- jmp ebp
-L005ej7:
- mov dh, BYTE PTR 6[esi]
- shl edx, 8
-L006ej6:
- mov dh, BYTE PTR 5[esi]
-L007ej5:
- mov dl, BYTE PTR 4[esi]
-L008ej4:
- mov ecx, DWORD PTR [esi]
- jmp $L009ejend
-L010ej3:
- mov ch, BYTE PTR 2[esi]
- shl ecx, 8
-L011ej2:
- mov ch, BYTE PTR 1[esi]
-L012ej1:
- mov cl, BYTE PTR [esi]
-$L009ejend:
- xor eax, ecx
- xor ebx, edx
- bswap eax
- bswap ebx
- mov DWORD PTR 8[esp],eax
- mov DWORD PTR 12[esp],ebx
- call _BF_encrypt
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- bswap eax
- bswap ebx
- mov DWORD PTR [edi],eax
- mov DWORD PTR 4[edi],ebx
- jmp $L003finish
-$L000decrypt:
- and ebp, 4294967288
- mov eax, DWORD PTR 16[esp]
- mov ebx, DWORD PTR 20[esp]
- jz $L013decrypt_finish
-L014decrypt_loop:
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- bswap eax
- bswap ebx
- mov DWORD PTR 8[esp],eax
- mov DWORD PTR 12[esp],ebx
- call _BF_decrypt
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- bswap eax
- bswap ebx
- mov ecx, DWORD PTR 16[esp]
- mov edx, DWORD PTR 20[esp]
- xor ecx, eax
- xor edx, ebx
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- mov DWORD PTR [edi],ecx
- mov DWORD PTR 4[edi],edx
- mov DWORD PTR 16[esp],eax
- mov DWORD PTR 20[esp],ebx
- add esi, 8
- add edi, 8
- sub ebp, 8
- jnz L014decrypt_loop
-$L013decrypt_finish:
- mov ebp, DWORD PTR 52[esp]
- and ebp, 7
- jz $L003finish
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- bswap eax
- bswap ebx
- mov DWORD PTR 8[esp],eax
- mov DWORD PTR 12[esp],ebx
- call _BF_decrypt
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- bswap eax
- bswap ebx
- mov ecx, DWORD PTR 16[esp]
- mov edx, DWORD PTR 20[esp]
- xor ecx, eax
- xor edx, ebx
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
-L015dj7:
- ror edx, 16
- mov BYTE PTR 6[edi],dl
- shr edx, 16
-L016dj6:
- mov BYTE PTR 5[edi],dh
-L017dj5:
- mov BYTE PTR 4[edi],dl
-L018dj4:
- mov DWORD PTR [edi],ecx
- jmp $L019djend
-L020dj3:
- ror ecx, 16
- mov BYTE PTR 2[edi],cl
- shl ecx, 16
-L021dj2:
- mov BYTE PTR 1[esi],ch
-L022dj1:
- mov BYTE PTR [esi], cl
-$L019djend:
- jmp $L003finish
-$L003finish:
- mov ecx, DWORD PTR 60[esp]
- add esp, 24
- mov DWORD PTR [ecx],eax
- mov DWORD PTR 4[ecx],ebx
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-$L004cbc_enc_jmp_table:
- DD 0
- DD L012ej1
- DD L011ej2
- DD L010ej3
- DD L008ej4
- DD L007ej5
- DD L006ej6
- DD L005ej7
-L023cbc_dec_jmp_table:
- DD 0
- DD L022dj1
- DD L021dj2
- DD L020dj3
- DD L018dj4
- DD L017dj5
- DD L016dj6
- DD L015dj7
-_BF_cbc_encrypt ENDP
-_TEXT ENDS
-END
+++ /dev/null
- ; Don't even think of reading this code
- ; It was automatically generated by bn-586.pl
- ; Which is a perl program used to generate the x86 assember for
- ; any of elf, a.out, BSDI,Win32, or Solaris
- ; eric <eay@cryptsoft.com>
- ;
- TITLE bn-586.asm
- .386
-.model FLAT
-_TEXT SEGMENT
-PUBLIC _bn_mul_add_words
-
-_bn_mul_add_words PROC NEAR
- push ebp
- push ebx
- push esi
- push edi
- ;
- xor esi, esi
- mov edi, DWORD PTR 20[esp]
- mov ecx, DWORD PTR 28[esp]
- mov ebx, DWORD PTR 24[esp]
- and ecx, 4294967288
- mov ebp, DWORD PTR 32[esp]
- push ecx
- jz $L000maw_finish
-L001maw_loop:
- mov DWORD PTR [esp],ecx
- ; Round 0
- mov eax, DWORD PTR [ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR [edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- mov DWORD PTR [edi],eax
- mov esi, edx
- ; Round 4
- mov eax, DWORD PTR 4[ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR 4[edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- mov DWORD PTR 4[edi],eax
- mov esi, edx
- ; Round 8
- mov eax, DWORD PTR 8[ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR 8[edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- mov DWORD PTR 8[edi],eax
- mov esi, edx
- ; Round 12
- mov eax, DWORD PTR 12[ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR 12[edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- mov DWORD PTR 12[edi],eax
- mov esi, edx
- ; Round 16
- mov eax, DWORD PTR 16[ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR 16[edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- mov DWORD PTR 16[edi],eax
- mov esi, edx
- ; Round 20
- mov eax, DWORD PTR 20[ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR 20[edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- mov DWORD PTR 20[edi],eax
- mov esi, edx
- ; Round 24
- mov eax, DWORD PTR 24[ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR 24[edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- mov DWORD PTR 24[edi],eax
- mov esi, edx
- ; Round 28
- mov eax, DWORD PTR 28[ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR 28[edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- mov DWORD PTR 28[edi],eax
- mov esi, edx
- ;
- mov ecx, DWORD PTR [esp]
- add ebx, 32
- add edi, 32
- sub ecx, 8
- jnz L001maw_loop
-$L000maw_finish:
- mov ecx, DWORD PTR 32[esp]
- and ecx, 7
- jnz $L002maw_finish2
- jmp $L003maw_end
-$L002maw_finish2:
- ; Tail Round 0
- mov eax, DWORD PTR [ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR [edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- dec ecx
- mov DWORD PTR [edi],eax
- mov esi, edx
- jz $L003maw_end
- ; Tail Round 1
- mov eax, DWORD PTR 4[ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR 4[edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- dec ecx
- mov DWORD PTR 4[edi],eax
- mov esi, edx
- jz $L003maw_end
- ; Tail Round 2
- mov eax, DWORD PTR 8[ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR 8[edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- dec ecx
- mov DWORD PTR 8[edi],eax
- mov esi, edx
- jz $L003maw_end
- ; Tail Round 3
- mov eax, DWORD PTR 12[ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR 12[edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- dec ecx
- mov DWORD PTR 12[edi],eax
- mov esi, edx
- jz $L003maw_end
- ; Tail Round 4
- mov eax, DWORD PTR 16[ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR 16[edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- dec ecx
- mov DWORD PTR 16[edi],eax
- mov esi, edx
- jz $L003maw_end
- ; Tail Round 5
- mov eax, DWORD PTR 20[ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR 20[edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- dec ecx
- mov DWORD PTR 20[edi],eax
- mov esi, edx
- jz $L003maw_end
- ; Tail Round 6
- mov eax, DWORD PTR 24[ebx]
- mul ebp
- add eax, esi
- mov esi, DWORD PTR 24[edi]
- adc edx, 0
- add eax, esi
- adc edx, 0
- mov DWORD PTR 24[edi],eax
- mov esi, edx
-$L003maw_end:
- mov eax, esi
- pop ecx
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_bn_mul_add_words ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _bn_mul_words
-
-_bn_mul_words PROC NEAR
- push ebp
- push ebx
- push esi
- push edi
- ;
- xor esi, esi
- mov edi, DWORD PTR 20[esp]
- mov ebx, DWORD PTR 24[esp]
- mov ebp, DWORD PTR 28[esp]
- mov ecx, DWORD PTR 32[esp]
- and ebp, 4294967288
- jz $L004mw_finish
-L005mw_loop:
- ; Round 0
- mov eax, DWORD PTR [ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR [edi],eax
- mov esi, edx
- ; Round 4
- mov eax, DWORD PTR 4[ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR 4[edi],eax
- mov esi, edx
- ; Round 8
- mov eax, DWORD PTR 8[ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR 8[edi],eax
- mov esi, edx
- ; Round 12
- mov eax, DWORD PTR 12[ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR 12[edi],eax
- mov esi, edx
- ; Round 16
- mov eax, DWORD PTR 16[ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR 16[edi],eax
- mov esi, edx
- ; Round 20
- mov eax, DWORD PTR 20[ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR 20[edi],eax
- mov esi, edx
- ; Round 24
- mov eax, DWORD PTR 24[ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR 24[edi],eax
- mov esi, edx
- ; Round 28
- mov eax, DWORD PTR 28[ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR 28[edi],eax
- mov esi, edx
- ;
- add ebx, 32
- add edi, 32
- sub ebp, 8
- jz $L004mw_finish
- jmp L005mw_loop
-$L004mw_finish:
- mov ebp, DWORD PTR 28[esp]
- and ebp, 7
- jnz $L006mw_finish2
- jmp $L007mw_end
-$L006mw_finish2:
- ; Tail Round 0
- mov eax, DWORD PTR [ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR [edi],eax
- mov esi, edx
- dec ebp
- jz $L007mw_end
- ; Tail Round 1
- mov eax, DWORD PTR 4[ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR 4[edi],eax
- mov esi, edx
- dec ebp
- jz $L007mw_end
- ; Tail Round 2
- mov eax, DWORD PTR 8[ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR 8[edi],eax
- mov esi, edx
- dec ebp
- jz $L007mw_end
- ; Tail Round 3
- mov eax, DWORD PTR 12[ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR 12[edi],eax
- mov esi, edx
- dec ebp
- jz $L007mw_end
- ; Tail Round 4
- mov eax, DWORD PTR 16[ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR 16[edi],eax
- mov esi, edx
- dec ebp
- jz $L007mw_end
- ; Tail Round 5
- mov eax, DWORD PTR 20[ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR 20[edi],eax
- mov esi, edx
- dec ebp
- jz $L007mw_end
- ; Tail Round 6
- mov eax, DWORD PTR 24[ebx]
- mul ecx
- add eax, esi
- adc edx, 0
- mov DWORD PTR 24[edi],eax
- mov esi, edx
-$L007mw_end:
- mov eax, esi
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_bn_mul_words ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _bn_sqr_words
-
-_bn_sqr_words PROC NEAR
- push ebp
- push ebx
- push esi
- push edi
- ;
- mov esi, DWORD PTR 20[esp]
- mov edi, DWORD PTR 24[esp]
- mov ebx, DWORD PTR 28[esp]
- and ebx, 4294967288
- jz $L008sw_finish
-L009sw_loop:
- ; Round 0
- mov eax, DWORD PTR [edi]
- mul eax
- mov DWORD PTR [esi],eax
- mov DWORD PTR 4[esi],edx
- ; Round 4
- mov eax, DWORD PTR 4[edi]
- mul eax
- mov DWORD PTR 8[esi],eax
- mov DWORD PTR 12[esi],edx
- ; Round 8
- mov eax, DWORD PTR 8[edi]
- mul eax
- mov DWORD PTR 16[esi],eax
- mov DWORD PTR 20[esi],edx
- ; Round 12
- mov eax, DWORD PTR 12[edi]
- mul eax
- mov DWORD PTR 24[esi],eax
- mov DWORD PTR 28[esi],edx
- ; Round 16
- mov eax, DWORD PTR 16[edi]
- mul eax
- mov DWORD PTR 32[esi],eax
- mov DWORD PTR 36[esi],edx
- ; Round 20
- mov eax, DWORD PTR 20[edi]
- mul eax
- mov DWORD PTR 40[esi],eax
- mov DWORD PTR 44[esi],edx
- ; Round 24
- mov eax, DWORD PTR 24[edi]
- mul eax
- mov DWORD PTR 48[esi],eax
- mov DWORD PTR 52[esi],edx
- ; Round 28
- mov eax, DWORD PTR 28[edi]
- mul eax
- mov DWORD PTR 56[esi],eax
- mov DWORD PTR 60[esi],edx
- ;
- add edi, 32
- add esi, 64
- sub ebx, 8
- jnz L009sw_loop
-$L008sw_finish:
- mov ebx, DWORD PTR 28[esp]
- and ebx, 7
- jz $L010sw_end
- ; Tail Round 0
- mov eax, DWORD PTR [edi]
- mul eax
- mov DWORD PTR [esi],eax
- dec ebx
- mov DWORD PTR 4[esi],edx
- jz $L010sw_end
- ; Tail Round 1
- mov eax, DWORD PTR 4[edi]
- mul eax
- mov DWORD PTR 8[esi],eax
- dec ebx
- mov DWORD PTR 12[esi],edx
- jz $L010sw_end
- ; Tail Round 2
- mov eax, DWORD PTR 8[edi]
- mul eax
- mov DWORD PTR 16[esi],eax
- dec ebx
- mov DWORD PTR 20[esi],edx
- jz $L010sw_end
- ; Tail Round 3
- mov eax, DWORD PTR 12[edi]
- mul eax
- mov DWORD PTR 24[esi],eax
- dec ebx
- mov DWORD PTR 28[esi],edx
- jz $L010sw_end
- ; Tail Round 4
- mov eax, DWORD PTR 16[edi]
- mul eax
- mov DWORD PTR 32[esi],eax
- dec ebx
- mov DWORD PTR 36[esi],edx
- jz $L010sw_end
- ; Tail Round 5
- mov eax, DWORD PTR 20[edi]
- mul eax
- mov DWORD PTR 40[esi],eax
- dec ebx
- mov DWORD PTR 44[esi],edx
- jz $L010sw_end
- ; Tail Round 6
- mov eax, DWORD PTR 24[edi]
- mul eax
- mov DWORD PTR 48[esi],eax
- mov DWORD PTR 52[esi],edx
-$L010sw_end:
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_bn_sqr_words ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _bn_div_words
-
-_bn_div_words PROC NEAR
- push ebp
- push ebx
- push esi
- push edi
- mov edx, DWORD PTR 20[esp]
- mov eax, DWORD PTR 24[esp]
- mov ebx, DWORD PTR 28[esp]
- div ebx
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_bn_div_words ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _bn_add_words
-
-_bn_add_words PROC NEAR
- push ebp
- push ebx
- push esi
- push edi
- ;
- mov ebx, DWORD PTR 20[esp]
- mov esi, DWORD PTR 24[esp]
- mov edi, DWORD PTR 28[esp]
- mov ebp, DWORD PTR 32[esp]
- xor eax, eax
- and ebp, 4294967288
- jz $L011aw_finish
-L012aw_loop:
- ; Round 0
- mov ecx, DWORD PTR [esi]
- mov edx, DWORD PTR [edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- mov DWORD PTR [ebx],ecx
- ; Round 1
- mov ecx, DWORD PTR 4[esi]
- mov edx, DWORD PTR 4[edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- mov DWORD PTR 4[ebx],ecx
- ; Round 2
- mov ecx, DWORD PTR 8[esi]
- mov edx, DWORD PTR 8[edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- mov DWORD PTR 8[ebx],ecx
- ; Round 3
- mov ecx, DWORD PTR 12[esi]
- mov edx, DWORD PTR 12[edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- mov DWORD PTR 12[ebx],ecx
- ; Round 4
- mov ecx, DWORD PTR 16[esi]
- mov edx, DWORD PTR 16[edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- mov DWORD PTR 16[ebx],ecx
- ; Round 5
- mov ecx, DWORD PTR 20[esi]
- mov edx, DWORD PTR 20[edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- mov DWORD PTR 20[ebx],ecx
- ; Round 6
- mov ecx, DWORD PTR 24[esi]
- mov edx, DWORD PTR 24[edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- mov DWORD PTR 24[ebx],ecx
- ; Round 7
- mov ecx, DWORD PTR 28[esi]
- mov edx, DWORD PTR 28[edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- mov DWORD PTR 28[ebx],ecx
- ;
- add esi, 32
- add edi, 32
- add ebx, 32
- sub ebp, 8
- jnz L012aw_loop
-$L011aw_finish:
- mov ebp, DWORD PTR 32[esp]
- and ebp, 7
- jz $L013aw_end
- ; Tail Round 0
- mov ecx, DWORD PTR [esi]
- mov edx, DWORD PTR [edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- dec ebp
- mov DWORD PTR [ebx],ecx
- jz $L013aw_end
- ; Tail Round 1
- mov ecx, DWORD PTR 4[esi]
- mov edx, DWORD PTR 4[edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- dec ebp
- mov DWORD PTR 4[ebx],ecx
- jz $L013aw_end
- ; Tail Round 2
- mov ecx, DWORD PTR 8[esi]
- mov edx, DWORD PTR 8[edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- dec ebp
- mov DWORD PTR 8[ebx],ecx
- jz $L013aw_end
- ; Tail Round 3
- mov ecx, DWORD PTR 12[esi]
- mov edx, DWORD PTR 12[edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- dec ebp
- mov DWORD PTR 12[ebx],ecx
- jz $L013aw_end
- ; Tail Round 4
- mov ecx, DWORD PTR 16[esi]
- mov edx, DWORD PTR 16[edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- dec ebp
- mov DWORD PTR 16[ebx],ecx
- jz $L013aw_end
- ; Tail Round 5
- mov ecx, DWORD PTR 20[esi]
- mov edx, DWORD PTR 20[edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- dec ebp
- mov DWORD PTR 20[ebx],ecx
- jz $L013aw_end
- ; Tail Round 6
- mov ecx, DWORD PTR 24[esi]
- mov edx, DWORD PTR 24[edi]
- add ecx, eax
- mov eax, 0
- adc eax, eax
- add ecx, edx
- adc eax, 0
- mov DWORD PTR 24[ebx],ecx
-$L013aw_end:
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_bn_add_words ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _bn_sub_words
-
-_bn_sub_words PROC NEAR
- push ebp
- push ebx
- push esi
- push edi
- ;
- mov ebx, DWORD PTR 20[esp]
- mov esi, DWORD PTR 24[esp]
- mov edi, DWORD PTR 28[esp]
- mov ebp, DWORD PTR 32[esp]
- xor eax, eax
- and ebp, 4294967288
- jz $L014aw_finish
-L015aw_loop:
- ; Round 0
- mov ecx, DWORD PTR [esi]
- mov edx, DWORD PTR [edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- mov DWORD PTR [ebx],ecx
- ; Round 1
- mov ecx, DWORD PTR 4[esi]
- mov edx, DWORD PTR 4[edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- mov DWORD PTR 4[ebx],ecx
- ; Round 2
- mov ecx, DWORD PTR 8[esi]
- mov edx, DWORD PTR 8[edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- mov DWORD PTR 8[ebx],ecx
- ; Round 3
- mov ecx, DWORD PTR 12[esi]
- mov edx, DWORD PTR 12[edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- mov DWORD PTR 12[ebx],ecx
- ; Round 4
- mov ecx, DWORD PTR 16[esi]
- mov edx, DWORD PTR 16[edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- mov DWORD PTR 16[ebx],ecx
- ; Round 5
- mov ecx, DWORD PTR 20[esi]
- mov edx, DWORD PTR 20[edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- mov DWORD PTR 20[ebx],ecx
- ; Round 6
- mov ecx, DWORD PTR 24[esi]
- mov edx, DWORD PTR 24[edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- mov DWORD PTR 24[ebx],ecx
- ; Round 7
- mov ecx, DWORD PTR 28[esi]
- mov edx, DWORD PTR 28[edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- mov DWORD PTR 28[ebx],ecx
- ;
- add esi, 32
- add edi, 32
- add ebx, 32
- sub ebp, 8
- jnz L015aw_loop
-$L014aw_finish:
- mov ebp, DWORD PTR 32[esp]
- and ebp, 7
- jz $L016aw_end
- ; Tail Round 0
- mov ecx, DWORD PTR [esi]
- mov edx, DWORD PTR [edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- dec ebp
- mov DWORD PTR [ebx],ecx
- jz $L016aw_end
- ; Tail Round 1
- mov ecx, DWORD PTR 4[esi]
- mov edx, DWORD PTR 4[edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- dec ebp
- mov DWORD PTR 4[ebx],ecx
- jz $L016aw_end
- ; Tail Round 2
- mov ecx, DWORD PTR 8[esi]
- mov edx, DWORD PTR 8[edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- dec ebp
- mov DWORD PTR 8[ebx],ecx
- jz $L016aw_end
- ; Tail Round 3
- mov ecx, DWORD PTR 12[esi]
- mov edx, DWORD PTR 12[edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- dec ebp
- mov DWORD PTR 12[ebx],ecx
- jz $L016aw_end
- ; Tail Round 4
- mov ecx, DWORD PTR 16[esi]
- mov edx, DWORD PTR 16[edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- dec ebp
- mov DWORD PTR 16[ebx],ecx
- jz $L016aw_end
- ; Tail Round 5
- mov ecx, DWORD PTR 20[esi]
- mov edx, DWORD PTR 20[edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- dec ebp
- mov DWORD PTR 20[ebx],ecx
- jz $L016aw_end
- ; Tail Round 6
- mov ecx, DWORD PTR 24[esi]
- mov edx, DWORD PTR 24[edi]
- sub ecx, eax
- mov eax, 0
- adc eax, eax
- sub ecx, edx
- adc eax, 0
- mov DWORD PTR 24[ebx],ecx
-$L016aw_end:
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_bn_sub_words ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _bn_mul_comba8
-
-_bn_mul_comba8 PROC NEAR
- push esi
- mov esi, DWORD PTR 12[esp]
- push edi
- mov edi, DWORD PTR 20[esp]
- push ebp
- push ebx
- xor ebx, ebx
- mov eax, DWORD PTR [esi]
- xor ecx, ecx
- mov edx, DWORD PTR [edi]
- ; ################## Calculate word 0
- xor ebp, ebp
- ; mul a[0]*b[0]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 20[esp]
- adc ecx, edx
- mov edx, DWORD PTR [edi]
- adc ebp, 0
- mov DWORD PTR [eax],ebx
- mov eax, DWORD PTR 4[esi]
- ; saved r[0]
- ; ################## Calculate word 1
- xor ebx, ebx
- ; mul a[1]*b[0]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR [esi]
- adc ebp, edx
- mov edx, DWORD PTR 4[edi]
- adc ebx, 0
- ; mul a[0]*b[1]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 20[esp]
- adc ebp, edx
- mov edx, DWORD PTR [edi]
- adc ebx, 0
- mov DWORD PTR 4[eax],ecx
- mov eax, DWORD PTR 8[esi]
- ; saved r[1]
- ; ################## Calculate word 2
- xor ecx, ecx
- ; mul a[2]*b[0]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 4[esi]
- adc ebx, edx
- mov edx, DWORD PTR 4[edi]
- adc ecx, 0
- ; mul a[1]*b[1]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR [esi]
- adc ebx, edx
- mov edx, DWORD PTR 8[edi]
- adc ecx, 0
- ; mul a[0]*b[2]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 20[esp]
- adc ebx, edx
- mov edx, DWORD PTR [edi]
- adc ecx, 0
- mov DWORD PTR 8[eax],ebp
- mov eax, DWORD PTR 12[esi]
- ; saved r[2]
- ; ################## Calculate word 3
- xor ebp, ebp
- ; mul a[3]*b[0]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 8[esi]
- adc ecx, edx
- mov edx, DWORD PTR 4[edi]
- adc ebp, 0
- ; mul a[2]*b[1]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 4[esi]
- adc ecx, edx
- mov edx, DWORD PTR 8[edi]
- adc ebp, 0
- ; mul a[1]*b[2]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR [esi]
- adc ecx, edx
- mov edx, DWORD PTR 12[edi]
- adc ebp, 0
- ; mul a[0]*b[3]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 20[esp]
- adc ecx, edx
- mov edx, DWORD PTR [edi]
- adc ebp, 0
- mov DWORD PTR 12[eax],ebx
- mov eax, DWORD PTR 16[esi]
- ; saved r[3]
- ; ################## Calculate word 4
- xor ebx, ebx
- ; mul a[4]*b[0]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 12[esi]
- adc ebp, edx
- mov edx, DWORD PTR 4[edi]
- adc ebx, 0
- ; mul a[3]*b[1]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 8[esi]
- adc ebp, edx
- mov edx, DWORD PTR 8[edi]
- adc ebx, 0
- ; mul a[2]*b[2]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 4[esi]
- adc ebp, edx
- mov edx, DWORD PTR 12[edi]
- adc ebx, 0
- ; mul a[1]*b[3]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR [esi]
- adc ebp, edx
- mov edx, DWORD PTR 16[edi]
- adc ebx, 0
- ; mul a[0]*b[4]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 20[esp]
- adc ebp, edx
- mov edx, DWORD PTR [edi]
- adc ebx, 0
- mov DWORD PTR 16[eax],ecx
- mov eax, DWORD PTR 20[esi]
- ; saved r[4]
- ; ################## Calculate word 5
- xor ecx, ecx
- ; mul a[5]*b[0]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 16[esi]
- adc ebx, edx
- mov edx, DWORD PTR 4[edi]
- adc ecx, 0
- ; mul a[4]*b[1]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 12[esi]
- adc ebx, edx
- mov edx, DWORD PTR 8[edi]
- adc ecx, 0
- ; mul a[3]*b[2]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 8[esi]
- adc ebx, edx
- mov edx, DWORD PTR 12[edi]
- adc ecx, 0
- ; mul a[2]*b[3]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 4[esi]
- adc ebx, edx
- mov edx, DWORD PTR 16[edi]
- adc ecx, 0
- ; mul a[1]*b[4]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR [esi]
- adc ebx, edx
- mov edx, DWORD PTR 20[edi]
- adc ecx, 0
- ; mul a[0]*b[5]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 20[esp]
- adc ebx, edx
- mov edx, DWORD PTR [edi]
- adc ecx, 0
- mov DWORD PTR 20[eax],ebp
- mov eax, DWORD PTR 24[esi]
- ; saved r[5]
- ; ################## Calculate word 6
- xor ebp, ebp
- ; mul a[6]*b[0]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 20[esi]
- adc ecx, edx
- mov edx, DWORD PTR 4[edi]
- adc ebp, 0
- ; mul a[5]*b[1]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 16[esi]
- adc ecx, edx
- mov edx, DWORD PTR 8[edi]
- adc ebp, 0
- ; mul a[4]*b[2]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 12[esi]
- adc ecx, edx
- mov edx, DWORD PTR 12[edi]
- adc ebp, 0
- ; mul a[3]*b[3]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 8[esi]
- adc ecx, edx
- mov edx, DWORD PTR 16[edi]
- adc ebp, 0
- ; mul a[2]*b[4]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 4[esi]
- adc ecx, edx
- mov edx, DWORD PTR 20[edi]
- adc ebp, 0
- ; mul a[1]*b[5]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR [esi]
- adc ecx, edx
- mov edx, DWORD PTR 24[edi]
- adc ebp, 0
- ; mul a[0]*b[6]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 20[esp]
- adc ecx, edx
- mov edx, DWORD PTR [edi]
- adc ebp, 0
- mov DWORD PTR 24[eax],ebx
- mov eax, DWORD PTR 28[esi]
- ; saved r[6]
- ; ################## Calculate word 7
- xor ebx, ebx
- ; mul a[7]*b[0]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 24[esi]
- adc ebp, edx
- mov edx, DWORD PTR 4[edi]
- adc ebx, 0
- ; mul a[6]*b[1]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 20[esi]
- adc ebp, edx
- mov edx, DWORD PTR 8[edi]
- adc ebx, 0
- ; mul a[5]*b[2]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 16[esi]
- adc ebp, edx
- mov edx, DWORD PTR 12[edi]
- adc ebx, 0
- ; mul a[4]*b[3]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 12[esi]
- adc ebp, edx
- mov edx, DWORD PTR 16[edi]
- adc ebx, 0
- ; mul a[3]*b[4]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 8[esi]
- adc ebp, edx
- mov edx, DWORD PTR 20[edi]
- adc ebx, 0
- ; mul a[2]*b[5]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 4[esi]
- adc ebp, edx
- mov edx, DWORD PTR 24[edi]
- adc ebx, 0
- ; mul a[1]*b[6]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR [esi]
- adc ebp, edx
- mov edx, DWORD PTR 28[edi]
- adc ebx, 0
- ; mul a[0]*b[7]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 20[esp]
- adc ebp, edx
- mov edx, DWORD PTR 4[edi]
- adc ebx, 0
- mov DWORD PTR 28[eax],ecx
- mov eax, DWORD PTR 28[esi]
- ; saved r[7]
- ; ################## Calculate word 8
- xor ecx, ecx
- ; mul a[7]*b[1]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 24[esi]
- adc ebx, edx
- mov edx, DWORD PTR 8[edi]
- adc ecx, 0
- ; mul a[6]*b[2]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 20[esi]
- adc ebx, edx
- mov edx, DWORD PTR 12[edi]
- adc ecx, 0
- ; mul a[5]*b[3]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 16[esi]
- adc ebx, edx
- mov edx, DWORD PTR 16[edi]
- adc ecx, 0
- ; mul a[4]*b[4]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 12[esi]
- adc ebx, edx
- mov edx, DWORD PTR 20[edi]
- adc ecx, 0
- ; mul a[3]*b[5]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 8[esi]
- adc ebx, edx
- mov edx, DWORD PTR 24[edi]
- adc ecx, 0
- ; mul a[2]*b[6]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 4[esi]
- adc ebx, edx
- mov edx, DWORD PTR 28[edi]
- adc ecx, 0
- ; mul a[1]*b[7]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 20[esp]
- adc ebx, edx
- mov edx, DWORD PTR 8[edi]
- adc ecx, 0
- mov DWORD PTR 32[eax],ebp
- mov eax, DWORD PTR 28[esi]
- ; saved r[8]
- ; ################## Calculate word 9
- xor ebp, ebp
- ; mul a[7]*b[2]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 24[esi]
- adc ecx, edx
- mov edx, DWORD PTR 12[edi]
- adc ebp, 0
- ; mul a[6]*b[3]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 20[esi]
- adc ecx, edx
- mov edx, DWORD PTR 16[edi]
- adc ebp, 0
- ; mul a[5]*b[4]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 16[esi]
- adc ecx, edx
- mov edx, DWORD PTR 20[edi]
- adc ebp, 0
- ; mul a[4]*b[5]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 12[esi]
- adc ecx, edx
- mov edx, DWORD PTR 24[edi]
- adc ebp, 0
- ; mul a[3]*b[6]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 8[esi]
- adc ecx, edx
- mov edx, DWORD PTR 28[edi]
- adc ebp, 0
- ; mul a[2]*b[7]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 20[esp]
- adc ecx, edx
- mov edx, DWORD PTR 12[edi]
- adc ebp, 0
- mov DWORD PTR 36[eax],ebx
- mov eax, DWORD PTR 28[esi]
- ; saved r[9]
- ; ################## Calculate word 10
- xor ebx, ebx
- ; mul a[7]*b[3]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 24[esi]
- adc ebp, edx
- mov edx, DWORD PTR 16[edi]
- adc ebx, 0
- ; mul a[6]*b[4]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 20[esi]
- adc ebp, edx
- mov edx, DWORD PTR 20[edi]
- adc ebx, 0
- ; mul a[5]*b[5]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 16[esi]
- adc ebp, edx
- mov edx, DWORD PTR 24[edi]
- adc ebx, 0
- ; mul a[4]*b[6]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 12[esi]
- adc ebp, edx
- mov edx, DWORD PTR 28[edi]
- adc ebx, 0
- ; mul a[3]*b[7]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 20[esp]
- adc ebp, edx
- mov edx, DWORD PTR 16[edi]
- adc ebx, 0
- mov DWORD PTR 40[eax],ecx
- mov eax, DWORD PTR 28[esi]
- ; saved r[10]
- ; ################## Calculate word 11
- xor ecx, ecx
- ; mul a[7]*b[4]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 24[esi]
- adc ebx, edx
- mov edx, DWORD PTR 20[edi]
- adc ecx, 0
- ; mul a[6]*b[5]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 20[esi]
- adc ebx, edx
- mov edx, DWORD PTR 24[edi]
- adc ecx, 0
- ; mul a[5]*b[6]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 16[esi]
- adc ebx, edx
- mov edx, DWORD PTR 28[edi]
- adc ecx, 0
- ; mul a[4]*b[7]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 20[esp]
- adc ebx, edx
- mov edx, DWORD PTR 20[edi]
- adc ecx, 0
- mov DWORD PTR 44[eax],ebp
- mov eax, DWORD PTR 28[esi]
- ; saved r[11]
- ; ################## Calculate word 12
- xor ebp, ebp
- ; mul a[7]*b[5]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 24[esi]
- adc ecx, edx
- mov edx, DWORD PTR 24[edi]
- adc ebp, 0
- ; mul a[6]*b[6]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 20[esi]
- adc ecx, edx
- mov edx, DWORD PTR 28[edi]
- adc ebp, 0
- ; mul a[5]*b[7]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 20[esp]
- adc ecx, edx
- mov edx, DWORD PTR 24[edi]
- adc ebp, 0
- mov DWORD PTR 48[eax],ebx
- mov eax, DWORD PTR 28[esi]
- ; saved r[12]
- ; ################## Calculate word 13
- xor ebx, ebx
- ; mul a[7]*b[6]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 24[esi]
- adc ebp, edx
- mov edx, DWORD PTR 28[edi]
- adc ebx, 0
- ; mul a[6]*b[7]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 20[esp]
- adc ebp, edx
- mov edx, DWORD PTR 28[edi]
- adc ebx, 0
- mov DWORD PTR 52[eax],ecx
- mov eax, DWORD PTR 28[esi]
- ; saved r[13]
- ; ################## Calculate word 14
- xor ecx, ecx
- ; mul a[7]*b[7]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 20[esp]
- adc ebx, edx
- adc ecx, 0
- mov DWORD PTR 56[eax],ebp
- ; saved r[14]
- ; save r[15]
- mov DWORD PTR 60[eax],ebx
- pop ebx
- pop ebp
- pop edi
- pop esi
- ret
-_bn_mul_comba8 ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _bn_mul_comba4
-
-_bn_mul_comba4 PROC NEAR
- push esi
- mov esi, DWORD PTR 12[esp]
- push edi
- mov edi, DWORD PTR 20[esp]
- push ebp
- push ebx
- xor ebx, ebx
- mov eax, DWORD PTR [esi]
- xor ecx, ecx
- mov edx, DWORD PTR [edi]
- ; ################## Calculate word 0
- xor ebp, ebp
- ; mul a[0]*b[0]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 20[esp]
- adc ecx, edx
- mov edx, DWORD PTR [edi]
- adc ebp, 0
- mov DWORD PTR [eax],ebx
- mov eax, DWORD PTR 4[esi]
- ; saved r[0]
- ; ################## Calculate word 1
- xor ebx, ebx
- ; mul a[1]*b[0]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR [esi]
- adc ebp, edx
- mov edx, DWORD PTR 4[edi]
- adc ebx, 0
- ; mul a[0]*b[1]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 20[esp]
- adc ebp, edx
- mov edx, DWORD PTR [edi]
- adc ebx, 0
- mov DWORD PTR 4[eax],ecx
- mov eax, DWORD PTR 8[esi]
- ; saved r[1]
- ; ################## Calculate word 2
- xor ecx, ecx
- ; mul a[2]*b[0]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 4[esi]
- adc ebx, edx
- mov edx, DWORD PTR 4[edi]
- adc ecx, 0
- ; mul a[1]*b[1]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR [esi]
- adc ebx, edx
- mov edx, DWORD PTR 8[edi]
- adc ecx, 0
- ; mul a[0]*b[2]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 20[esp]
- adc ebx, edx
- mov edx, DWORD PTR [edi]
- adc ecx, 0
- mov DWORD PTR 8[eax],ebp
- mov eax, DWORD PTR 12[esi]
- ; saved r[2]
- ; ################## Calculate word 3
- xor ebp, ebp
- ; mul a[3]*b[0]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 8[esi]
- adc ecx, edx
- mov edx, DWORD PTR 4[edi]
- adc ebp, 0
- ; mul a[2]*b[1]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 4[esi]
- adc ecx, edx
- mov edx, DWORD PTR 8[edi]
- adc ebp, 0
- ; mul a[1]*b[2]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR [esi]
- adc ecx, edx
- mov edx, DWORD PTR 12[edi]
- adc ebp, 0
- ; mul a[0]*b[3]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 20[esp]
- adc ecx, edx
- mov edx, DWORD PTR 4[edi]
- adc ebp, 0
- mov DWORD PTR 12[eax],ebx
- mov eax, DWORD PTR 12[esi]
- ; saved r[3]
- ; ################## Calculate word 4
- xor ebx, ebx
- ; mul a[3]*b[1]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 8[esi]
- adc ebp, edx
- mov edx, DWORD PTR 8[edi]
- adc ebx, 0
- ; mul a[2]*b[2]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 4[esi]
- adc ebp, edx
- mov edx, DWORD PTR 12[edi]
- adc ebx, 0
- ; mul a[1]*b[3]
- mul edx
- add ecx, eax
- mov eax, DWORD PTR 20[esp]
- adc ebp, edx
- mov edx, DWORD PTR 8[edi]
- adc ebx, 0
- mov DWORD PTR 16[eax],ecx
- mov eax, DWORD PTR 12[esi]
- ; saved r[4]
- ; ################## Calculate word 5
- xor ecx, ecx
- ; mul a[3]*b[2]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 8[esi]
- adc ebx, edx
- mov edx, DWORD PTR 12[edi]
- adc ecx, 0
- ; mul a[2]*b[3]
- mul edx
- add ebp, eax
- mov eax, DWORD PTR 20[esp]
- adc ebx, edx
- mov edx, DWORD PTR 12[edi]
- adc ecx, 0
- mov DWORD PTR 20[eax],ebp
- mov eax, DWORD PTR 12[esi]
- ; saved r[5]
- ; ################## Calculate word 6
- xor ebp, ebp
- ; mul a[3]*b[3]
- mul edx
- add ebx, eax
- mov eax, DWORD PTR 20[esp]
- adc ecx, edx
- adc ebp, 0
- mov DWORD PTR 24[eax],ebx
- ; saved r[6]
- ; save r[7]
- mov DWORD PTR 28[eax],ecx
- pop ebx
- pop ebp
- pop edi
- pop esi
- ret
-_bn_mul_comba4 ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _bn_sqr_comba8
-
-_bn_sqr_comba8 PROC NEAR
- push esi
- push edi
- push ebp
- push ebx
- mov edi, DWORD PTR 20[esp]
- mov esi, DWORD PTR 24[esp]
- xor ebx, ebx
- xor ecx, ecx
- mov eax, DWORD PTR [esi]
- ; ############### Calculate word 0
- xor ebp, ebp
- ; sqr a[0]*a[0]
- mul eax
- add ebx, eax
- adc ecx, edx
- mov edx, DWORD PTR [esi]
- adc ebp, 0
- mov DWORD PTR [edi],ebx
- mov eax, DWORD PTR 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 PTR 8[esi]
- adc ebx, 0
- mov DWORD PTR 4[edi],ecx
- mov edx, DWORD PTR [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 PTR 4[esi]
- adc ecx, 0
- ; sqr a[1]*a[1]
- mul eax
- add ebp, eax
- adc ebx, edx
- mov edx, DWORD PTR [esi]
- adc ecx, 0
- mov DWORD PTR 8[edi],ebp
- mov eax, DWORD PTR 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 PTR 8[esi]
- adc ebp, 0
- mov edx, DWORD PTR 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 PTR 16[esi]
- adc ebp, 0
- mov DWORD PTR 12[edi],ebx
- mov edx, DWORD PTR [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 PTR 12[esi]
- adc ebx, 0
- mov edx, DWORD PTR 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 PTR 8[esi]
- adc ebx, 0
- ; sqr a[2]*a[2]
- mul eax
- add ecx, eax
- adc ebp, edx
- mov edx, DWORD PTR [esi]
- adc ebx, 0
- mov DWORD PTR 16[edi],ecx
- mov eax, DWORD PTR 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 PTR 16[esi]
- adc ecx, 0
- mov edx, DWORD PTR 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 PTR 12[esi]
- adc ecx, 0
- mov edx, DWORD PTR 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 PTR 24[esi]
- adc ecx, 0
- mov DWORD PTR 20[edi],ebp
- mov edx, DWORD PTR [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 PTR 20[esi]
- adc ebp, 0
- mov edx, DWORD PTR 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 PTR 16[esi]
- adc ebp, 0
- mov edx, DWORD PTR 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 PTR 12[esi]
- adc ebp, 0
- ; sqr a[3]*a[3]
- mul eax
- add ebx, eax
- adc ecx, edx
- mov edx, DWORD PTR [esi]
- adc ebp, 0
- mov DWORD PTR 24[edi],ebx
- mov eax, DWORD PTR 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 PTR 24[esi]
- adc ebx, 0
- mov edx, DWORD PTR 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 PTR 20[esi]
- adc ebx, 0
- mov edx, DWORD PTR 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 PTR 16[esi]
- adc ebx, 0
- mov edx, DWORD PTR 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 PTR 28[esi]
- adc ebx, 0
- mov DWORD PTR 28[edi],ecx
- mov edx, DWORD PTR 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 PTR 24[esi]
- adc ecx, 0
- mov edx, DWORD PTR 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 PTR 20[esi]
- adc ecx, 0
- mov edx, DWORD PTR 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 PTR 16[esi]
- adc ecx, 0
- ; sqr a[4]*a[4]
- mul eax
- add ebp, eax
- adc ebx, edx
- mov edx, DWORD PTR 8[esi]
- adc ecx, 0
- mov DWORD PTR 32[edi],ebp
- mov eax, DWORD PTR 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 PTR 24[esi]
- adc ebp, 0
- mov edx, DWORD PTR 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 PTR 20[esi]
- adc ebp, 0
- mov edx, DWORD PTR 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 PTR 28[esi]
- adc ebp, 0
- mov DWORD PTR 36[edi],ebx
- mov edx, DWORD PTR 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 PTR 24[esi]
- adc ebx, 0
- mov edx, DWORD PTR 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 PTR 20[esi]
- adc ebx, 0
- ; sqr a[5]*a[5]
- mul eax
- add ecx, eax
- adc ebp, edx
- mov edx, DWORD PTR 16[esi]
- adc ebx, 0
- mov DWORD PTR 40[edi],ecx
- mov eax, DWORD PTR 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 PTR 24[esi]
- adc ecx, 0
- mov edx, DWORD PTR 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 PTR 28[esi]
- adc ecx, 0
- mov DWORD PTR 44[edi],ebp
- mov edx, DWORD PTR 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 PTR 24[esi]
- adc ebp, 0
- ; sqr a[6]*a[6]
- mul eax
- add ebx, eax
- adc ecx, edx
- mov edx, DWORD PTR 24[esi]
- adc ebp, 0
- mov DWORD PTR 48[edi],ebx
- mov eax, DWORD PTR 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 PTR 28[esi]
- adc ebx, 0
- mov DWORD PTR 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 PTR 56[edi],ebp
- ; saved r[14]
- mov DWORD PTR 60[edi],ebx
- pop ebx
- pop ebp
- pop edi
- pop esi
- ret
-_bn_sqr_comba8 ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _bn_sqr_comba4
-
-_bn_sqr_comba4 PROC NEAR
- push esi
- push edi
- push ebp
- push ebx
- mov edi, DWORD PTR 20[esp]
- mov esi, DWORD PTR 24[esp]
- xor ebx, ebx
- xor ecx, ecx
- mov eax, DWORD PTR [esi]
- ; ############### Calculate word 0
- xor ebp, ebp
- ; sqr a[0]*a[0]
- mul eax
- add ebx, eax
- adc ecx, edx
- mov edx, DWORD PTR [esi]
- adc ebp, 0
- mov DWORD PTR [edi],ebx
- mov eax, DWORD PTR 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 PTR 8[esi]
- adc ebx, 0
- mov DWORD PTR 4[edi],ecx
- mov edx, DWORD PTR [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 PTR 4[esi]
- adc ecx, 0
- ; sqr a[1]*a[1]
- mul eax
- add ebp, eax
- adc ebx, edx
- mov edx, DWORD PTR [esi]
- adc ecx, 0
- mov DWORD PTR 8[edi],ebp
- mov eax, DWORD PTR 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 PTR 8[esi]
- adc ebp, 0
- mov edx, DWORD PTR 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 PTR 12[esi]
- adc ebp, 0
- mov DWORD PTR 12[edi],ebx
- mov edx, DWORD PTR 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 PTR 8[esi]
- adc ebx, 0
- ; sqr a[2]*a[2]
- mul eax
- add ecx, eax
- adc ebp, edx
- mov edx, DWORD PTR 8[esi]
- adc ebx, 0
- mov DWORD PTR 16[edi],ecx
- mov eax, DWORD PTR 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 PTR 12[esi]
- adc ecx, 0
- mov DWORD PTR 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 PTR 24[edi],ebx
- ; saved r[6]
- mov DWORD PTR 28[edi],ecx
- pop ebx
- pop ebp
- pop edi
- pop esi
- ret
-_bn_sqr_comba4 ENDP
-_TEXT ENDS
-END
+++ /dev/null
-; Static Name Aliases
-;
- TITLE bn_mulw.c
- .8087
-F_TEXT SEGMENT WORD PUBLIC 'CODE'
-F_TEXT ENDS
-_DATA SEGMENT WORD PUBLIC 'DATA'
-_DATA ENDS
-_CONST SEGMENT WORD PUBLIC 'CONST'
-_CONST ENDS
-_BSS SEGMENT WORD PUBLIC 'BSS'
-_BSS ENDS
-DGROUP GROUP _CONST, _BSS, _DATA
- ASSUME DS: DGROUP, SS: DGROUP
-F_TEXT SEGMENT
- ASSUME CS: F_TEXT
- PUBLIC _bn_mul_add_words
-_bn_mul_add_words PROC FAR
-; Line 58
- push bp
- push bx
- push si
- push di
- push ds
- push es
- mov bp,sp
-; w = 26
-; num = 24
-; ap = 20
-; rp = 16
- xor si,si ;c=0;
- mov di,WORD PTR [bp+16] ; load r
- mov ds,WORD PTR [bp+18] ; load r
- mov bx,WORD PTR [bp+20] ; load a
- mov es,WORD PTR [bp+22] ; load a
- mov cx,WORD PTR [bp+26] ; load w
- mov bp,WORD PTR [bp+24] ; load num
-
- shr bp,1 ; div count by 4 and do groups of 4
- shr bp,1
- je $L555
-
-$L546:
- mov ax,cx
- mul WORD PTR es:[bx] ; w* *a
- add ax,WORD PTR ds:[di] ; + *r
- adc dx,0
- adc ax,si
- adc dx,0
- mov WORD PTR ds:[di],ax
- mov si,dx
- ;
- mov ax,cx
- mul WORD PTR es:[bx+2] ; w* *a
- add ax,WORD PTR ds:[di+2] ; + *r
- adc dx,0
- adc ax,si
- adc dx,0
- mov WORD PTR ds:[di+2],ax
- mov si,dx
- ;
- mov ax,cx
- mul WORD PTR es:[bx+4] ; w* *a
- add ax,WORD PTR ds:[di+4] ; + *r
- adc dx,0
- adc ax,si
- adc dx,0
- mov WORD PTR ds:[di+4],ax
- mov si,dx
- ;
- mov ax,cx
- mul WORD PTR es:[bx+6] ; w* *a
- add ax,WORD PTR ds:[di+6] ; + *r
- adc dx,0
- adc ax,si
- adc dx,0
- mov WORD PTR ds:[di+6],ax
- mov si,dx
- ;
- add bx,8
- add di,8
- ;
- dec bp
- je $L555
- jmp $L546
-;
-;
-$L555:
- mov bp,sp
- mov bp,WORD PTR [bp+24] ; load num
- and bp,3
- dec bp
- js $L547
-
- mov ax,cx
- mul WORD PTR es:[bx] ; w* *a
- add ax,WORD PTR ds:[di] ; + *r
- adc dx,0
- adc ax,si
- adc dx,0
- mov WORD PTR ds:[di],ax
- mov si,dx
- dec bp
- js $L547 ; Note that we are now testing for -1
- ;
- mov ax,cx
- mul WORD PTR es:[bx+2] ; w* *a
- add ax,WORD PTR ds:[di+2] ; + *r
- adc dx,0
- adc ax,si
- adc dx,0
- mov WORD PTR ds:[di+2],ax
- mov si,dx
- dec bp
- js $L547
- ;
- mov ax,cx
- mul WORD PTR es:[bx+4] ; w* *a
- add ax,WORD PTR ds:[di+4] ; + *r
- adc dx,0
- adc ax,si
- adc dx,0
- mov WORD PTR ds:[di+4],ax
- mov si,dx
-$L547:
- mov ax,si
- pop es
- pop ds
- pop di
- pop si
- pop bx
- pop bp
- ret
- nop
-
-_bn_mul_add_words ENDP
- PUBLIC _bn_mul_words
-_bn_mul_words PROC FAR
-; Line 76
- push bp
- push bx
- push si
- push di
- push ds
- push es
- xor si,si
- mov bp,sp
- mov di,WORD PTR [bp+16] ; r
- mov ds,WORD PTR [bp+18]
- mov bx,WORD PTR [bp+20] ; a
- mov es,WORD PTR [bp+22]
- mov cx,WORD PTR [bp+26] ; w
- mov bp,WORD PTR [bp+24] ; num
-$FC743:
- mov ax,cx
- mul WORD PTR es:[bx]
- add ax,si
- adc dx,0
- mov WORD PTR ds:[di],ax
- mov si,dx
- dec bp
- je $L764
- ;
- mov ax,cx
- mul WORD PTR es:[bx+2]
- add ax,si
- adc dx,0
- mov WORD PTR ds:[di+2],ax
- mov si,dx
- dec bp
- je $L764
- ;
- mov ax,cx
- mul WORD PTR es:[bx+4]
- add ax,si
- adc dx,0
- mov WORD PTR ds:[di+4],ax
- mov si,dx
- dec bp
- je $L764
- ;
- mov ax,cx
- mul WORD PTR es:[bx+6]
- add ax,si
- adc dx,0
- mov WORD PTR ds:[di+6],ax
- mov si,dx
- dec bp
- je $L764
- ;
- add bx,8
- add di,8
- jmp $FC743
- nop
-$L764:
- mov ax,si
- pop es
- pop ds
- pop di
- pop si
- pop bx
- pop bp
- ret
- nop
-_bn_mul_words ENDP
- PUBLIC _bn_sqr_words
-_bn_sqr_words PROC FAR
-; Line 92
- push bp
- push bx
- push si
- push di
- push ds
- push es
- mov bp,sp
- mov si,WORD PTR [bp+16]
- mov ds,WORD PTR [bp+18]
- mov di,WORD PTR [bp+20]
- mov es,WORD PTR [bp+22]
- mov bx,WORD PTR [bp+24]
-
- mov bp,bx ; save a memory lookup later
- shr bx,1 ; div count by 4 and do groups of 4
- shr bx,1
- je $L666
-
-$L765:
- mov ax,WORD PTR es:[di]
- mul ax
- mov WORD PTR ds:[si],ax
- mov WORD PTR ds:[si+2],dx
- ;
- mov ax,WORD PTR es:[di+2]
- mul ax
- mov WORD PTR ds:[si+4],ax
- mov WORD PTR ds:[si+6],dx
- ;
- mov ax,WORD PTR es:[di+4]
- mul ax
- mov WORD PTR ds:[si+8],ax
- mov WORD PTR ds:[si+10],dx
- ;
- mov ax,WORD PTR es:[di+6]
- mul ax
- mov WORD PTR ds:[si+12],ax
- mov WORD PTR ds:[si+14],dx
- ;
- add di,8
- add si,16
- dec bx
- je $L666
- jmp $L765
-$L666:
- and bp,3
- dec bp ; The copied value of bx (num)
- js $L645
- ;
- mov ax,WORD PTR es:[di]
- mul ax
- mov WORD PTR ds:[si],ax
- mov WORD PTR ds:[si+2],dx
- dec bp
- js $L645
- ;
- mov ax,WORD PTR es:[di+2]
- mul ax
- mov WORD PTR ds:[si+4],ax
- mov WORD PTR ds:[si+6],dx
- dec bp
- js $L645
- ;
- mov ax,WORD PTR es:[di+4]
- mul ax
- mov WORD PTR ds:[si+8],ax
- mov WORD PTR ds:[si+10],dx
-$L645:
- pop es
- pop ds
- pop di
- pop si
- pop bx
- pop bp
- ret
-
-_bn_sqr_words ENDP
- PUBLIC _bn_div64
-_bn_div64 PROC FAR
- push bp
- mov bp,sp
- mov dx, WORD PTR [bp+6]
- mov ax, WORD PTR [bp+8]
- div WORD PTR [bp+10]
- pop bp
- ret
-_bn_div64 ENDP
-F_TEXT ENDS
-END
+++ /dev/null
-; Static Name Aliases
-;
- TITLE bn_mulw.c
- .386
-F_TEXT SEGMENT WORD USE16 PUBLIC 'CODE'
-F_TEXT ENDS
-_DATA SEGMENT WORD USE16 PUBLIC 'DATA'
-_DATA ENDS
-_CONST SEGMENT WORD USE16 PUBLIC 'CONST'
-_CONST ENDS
-_BSS SEGMENT WORD USE16 PUBLIC 'BSS'
-_BSS ENDS
-DGROUP GROUP _CONST, _BSS, _DATA
- ASSUME DS: DGROUP, SS: DGROUP
-F_TEXT SEGMENT
- ASSUME CS: F_TEXT
- PUBLIC _bn_mul_add_words
-_bn_mul_add_words PROC FAR
-; Line 58
- push bp
- push bx
- push esi
- push di
- push ds
- push es
- mov bp,sp
-; w = 28
-; num = 26
-; ap = 22
-; rp = 18
- xor esi,esi ;c=0;
- mov di,WORD PTR [bp+18] ; load r
- mov ds,WORD PTR [bp+20] ; load r
- mov bx,WORD PTR [bp+22] ; load a
- mov es,WORD PTR [bp+24] ; load a
- mov ecx,DWORD PTR [bp+28] ; load w
- mov bp,WORD PTR [bp+26] ; load num
- shr bp,1 ; div count by 4 and do groups of 4
- shr bp,1
- je $L555
-
-$L546:
- mov eax,ecx
- mul DWORD PTR es:[bx] ; w* *a
- add eax,DWORD PTR ds:[di] ; + *r
- adc edx,0
- adc eax,esi
- adc edx,0
- mov DWORD PTR ds:[di],eax
- mov esi,edx
- ;
- mov eax,ecx
- mul DWORD PTR es:[bx+4] ; w* *a
- add eax,DWORD PTR ds:[di+4] ; + *r
- adc edx,0
- adc eax,esi
- adc edx,0
- mov DWORD PTR ds:[di+4],eax
- mov esi,edx
- ;
- mov eax,ecx
- mul DWORD PTR es:[bx+8] ; w* *a
- add eax,DWORD PTR ds:[di+8] ; + *r
- adc edx,0
- adc eax,esi
- adc edx,0
- mov DWORD PTR ds:[di+8],eax
- mov esi,edx
- ;
- mov eax,ecx
- mul DWORD PTR es:[bx+12] ; w* *a
- add eax,DWORD PTR ds:[di+12] ; + *r
- adc edx,0
- adc eax,esi
- adc edx,0
- mov DWORD PTR ds:[di+12],eax
- mov esi,edx
- ;
- add bx,16
- add di,16
- ;
- dec bp
- je $L555
- jmp $L546
-;
-;
-$L555:
- mov bp,sp
- mov bp,WORD PTR [bp+26] ; load num
- and bp,3
- dec bp
- js $L547m
-
- mov eax,ecx
- mul DWORD PTR es:[bx] ; w* *a
- add eax,DWORD PTR ds:[di] ; + *r
- adc edx,0
- adc eax,esi
- adc edx,0
- mov DWORD PTR ds:[di],eax
- mov esi,edx
- dec bp
- js $L547m ; Note that we are now testing for -1
- ;
- mov eax,ecx
- mul DWORD PTR es:[bx+4] ; w* *a
- add eax,DWORD PTR ds:[di+4] ; + *r
- adc edx,0
- adc eax,esi
- adc edx,0
- mov DWORD PTR ds:[di+4],eax
- mov esi,edx
- dec bp
- js $L547m
- ;
- mov eax,ecx
- mul DWORD PTR es:[bx+8] ; w* *a
- add eax,DWORD PTR ds:[di+8] ; + *r
- adc edx,0
- adc eax,esi
- adc edx,0
- mov DWORD PTR ds:[di+8],eax
- mov esi,edx
-$L547m:
- mov eax,esi
- mov edx,esi
- shr edx,16
- pop es
- pop ds
- pop di
- pop esi
- pop bx
- pop bp
- ret
- nop
-_bn_mul_add_words ENDP
-
- PUBLIC _bn_mul_words
-_bn_mul_words PROC FAR
-; Line 76
- push bp
- push bx
- push esi
- push di
- push ds
- push es
- xor esi,esi
- mov bp,sp
- mov di,WORD PTR [bp+18] ; r
- mov ds,WORD PTR [bp+20]
- mov bx,WORD PTR [bp+22] ; a
- mov es,WORD PTR [bp+24]
- mov ecx,DWORD PTR [bp+28] ; w
- mov bp,WORD PTR [bp+26] ; num
-
-$FC743:
- mov eax,ecx
- mul DWORD PTR es:[bx]
- add eax,esi
- adc edx,0
- mov DWORD PTR ds:[di],eax
- mov esi,edx
- dec bp
- je $L764
- ;
- mov eax,ecx
- mul DWORD PTR es:[bx+4]
- add eax,esi
- adc edx,0
- mov DWORD PTR ds:[di+4],eax
- mov esi,edx
- dec bp
- je $L764
- ;
- mov eax,ecx
- mul DWORD PTR es:[bx+8]
- add eax,esi
- adc edx,0
- mov DWORD PTR ds:[di+8],eax
- mov esi,edx
- dec bp
- je $L764
- ;
- mov eax,ecx
- mul DWORD PTR es:[bx+12]
- add eax,esi
- adc edx,0
- mov DWORD PTR ds:[di+12],eax
- mov esi,edx
- dec bp
- je $L764
- ;
- add bx,16
- add di,16
- jmp $FC743
- nop
-$L764:
- mov eax,esi
- mov edx,esi
- shr edx,16
- pop es
- pop ds
- pop di
- pop esi
- pop bx
- pop bp
- ret
- nop
-_bn_mul_words ENDP
- PUBLIC _bn_sqr_words
-_bn_sqr_words PROC FAR
-; Line 92
- push bp
- push bx
- push si
- push di
- push ds
- push es
- mov bp,sp
- mov si,WORD PTR [bp+16]
- mov ds,WORD PTR [bp+18]
- mov di,WORD PTR [bp+20]
- mov es,WORD PTR [bp+22]
- mov bx,WORD PTR [bp+24]
-
- mov bp,bx ; save a memory lookup later
- shr bx,1 ; div count by 4 and do groups of 4
- shr bx,1
- je $L666
-
-$L765:
- mov eax,DWORD PTR es:[di]
- mul eax
- mov DWORD PTR ds:[si],eax
- mov DWORD PTR ds:[si+4],edx
- ;
- mov eax,DWORD PTR es:[di+4]
- mul eax
- mov DWORD PTR ds:[si+8],eax
- mov DWORD PTR ds:[si+12],edx
- ;
- mov eax,DWORD PTR es:[di+8]
- mul eax
- mov DWORD PTR ds:[si+16],eax
- mov DWORD PTR ds:[si+20],edx
- ;
- mov eax,DWORD PTR es:[di+12]
- mul eax
- mov DWORD PTR ds:[si+24],eax
- mov DWORD PTR ds:[si+28],edx
- ;
- add di,16
- add si,32
- dec bx
- je $L666
- jmp $L765
-$L666:
- and bp,3
- dec bp ; The copied value of bx (num)
- js $L645
- ;
- mov eax,DWORD PTR es:[di]
- mul eax
- mov DWORD PTR ds:[si],eax
- mov DWORD PTR ds:[si+4],edx
- dec bp
- js $L645
- ;
- mov eax,DWORD PTR es:[di+4]
- mul eax
- mov DWORD PTR ds:[si+8],eax
- mov DWORD PTR ds:[si+12],edx
- dec bp
- js $L645
- ;
- mov eax,DWORD PTR es:[di+8]
- mul eax
- mov DWORD PTR ds:[si+16],eax
- mov DWORD PTR ds:[si+20],edx
-$L645:
- pop es
- pop ds
- pop di
- pop si
- pop bx
- pop bp
- ret
-_bn_sqr_words ENDP
-
- PUBLIC _bn_div64
-_bn_div64 PROC FAR
- push bp
- mov bp,sp
- mov edx, DWORD PTR [bp+6]
- mov eax, DWORD PTR [bp+10]
- div DWORD PTR [bp+14]
- mov edx,eax
- shr edx,16
- pop bp
- ret
-_bn_div64 ENDP
-
- PUBLIC _bn_add_words
-_bn_add_words PROC FAR
-; Line 58
- push bp
- push bx
- push esi
- push di
- push ds
- push es
- mov bp,sp
-; w = 28
-; num = 26
-; ap = 22
-; rp = 18
- xor esi,esi ;c=0;
- mov bx,WORD PTR [bp+18] ; load low r
- mov si,WORD PTR [bp+22] ; load a
- mov es,WORD PTR [bp+24] ; load a
- mov di,WORD PTR [bp+26] ; load b
- mov ds,WORD PTR [bp+28] ; load b
-
- mov dx,WORD PTR [bp+30] ; load num
- xor ecx,ecx
- dec dx
- js $L547a
-
-$L5477:
- mov eax,DWORD PTR es:[si] ; *a
- add eax,ecx
- mov ecx,0
- adc ecx,0
- add si,4 ; a++
- add eax,DWORD PTR ds:[di] ; + *b
- adc ecx,0
- mov ds,WORD PTR [bp+20]
- add di,4
- mov DWORD PTR ds:[bx],eax
- mov ds,WORD PTR [bp+28]
- add bx,4
- dec dx
- js $L547a ; Note that we are now testing for -1
- jmp $L5477
- ;
-$L547a:
- mov eax,ecx
- mov edx,ecx
- shr edx,16
- pop es
- pop ds
- pop di
- pop esi
- pop bx
- pop bp
- ret
- nop
-_bn_add_words ENDP
-F_TEXT ENDS
-END
+++ /dev/null
- ; Don't even think of reading this code
- ; It was automatically generated by cast-586.pl
- ; Which is a perl program used to generate the x86 assember for
- ; any of elf, a.out, BSDI,Win32, or Solaris
- ; eric <eay@cryptsoft.com>
- ;
- TITLE cast-586.asm
- .486
-.model FLAT
-_TEXT SEGMENT
-PUBLIC _CAST_encrypt
-EXTERN _CAST_S_table0:DWORD
-EXTERN _CAST_S_table1:DWORD
-EXTERN _CAST_S_table2:DWORD
-EXTERN _CAST_S_table3:DWORD
-
-_CAST_encrypt PROC NEAR
- ;
- push ebp
- push ebx
- mov ebx, DWORD PTR 12[esp]
- mov ebp, DWORD PTR 16[esp]
- push esi
- push edi
- ; Load the 2 words
- mov edi, DWORD PTR [ebx]
- mov esi, DWORD PTR 4[ebx]
- ; Get short key flag
- mov eax, DWORD PTR 128[ebp]
- push eax
- xor eax, eax
- ; round 0
- mov edx, DWORD PTR [ebp]
- mov ecx, DWORD PTR 4[ebp]
- add edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- add ecx, ebx
- xor edi, ecx
- ; round 1
- mov edx, DWORD PTR 8[ebp]
- mov ecx, DWORD PTR 12[ebp]
- xor edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- xor ecx, ebx
- xor esi, ecx
- ; round 2
- mov edx, DWORD PTR 16[ebp]
- mov ecx, DWORD PTR 20[ebp]
- sub edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- sub ecx, ebx
- xor edi, ecx
- ; round 3
- mov edx, DWORD PTR 24[ebp]
- mov ecx, DWORD PTR 28[ebp]
- add edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- add ecx, ebx
- xor esi, ecx
- ; round 4
- mov edx, DWORD PTR 32[ebp]
- mov ecx, DWORD PTR 36[ebp]
- xor edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- xor ecx, ebx
- xor edi, ecx
- ; round 5
- mov edx, DWORD PTR 40[ebp]
- mov ecx, DWORD PTR 44[ebp]
- sub edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- sub ecx, ebx
- xor esi, ecx
- ; round 6
- mov edx, DWORD PTR 48[ebp]
- mov ecx, DWORD PTR 52[ebp]
- add edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- add ecx, ebx
- xor edi, ecx
- ; round 7
- mov edx, DWORD PTR 56[ebp]
- mov ecx, DWORD PTR 60[ebp]
- xor edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- xor ecx, ebx
- xor esi, ecx
- ; round 8
- mov edx, DWORD PTR 64[ebp]
- mov ecx, DWORD PTR 68[ebp]
- sub edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- sub ecx, ebx
- xor edi, ecx
- ; round 9
- mov edx, DWORD PTR 72[ebp]
- mov ecx, DWORD PTR 76[ebp]
- add edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- add ecx, ebx
- xor esi, ecx
- ; round 10
- mov edx, DWORD PTR 80[ebp]
- mov ecx, DWORD PTR 84[ebp]
- xor edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- xor ecx, ebx
- xor edi, ecx
- ; round 11
- mov edx, DWORD PTR 88[ebp]
- mov ecx, DWORD PTR 92[ebp]
- sub edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- sub ecx, ebx
- xor esi, ecx
- ; test short key flag
- pop edx
- or edx, edx
- jnz $L000cast_enc_done
- ; round 12
- mov edx, DWORD PTR 96[ebp]
- mov ecx, DWORD PTR 100[ebp]
- add edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- add ecx, ebx
- xor edi, ecx
- ; round 13
- mov edx, DWORD PTR 104[ebp]
- mov ecx, DWORD PTR 108[ebp]
- xor edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- xor ecx, ebx
- xor esi, ecx
- ; round 14
- mov edx, DWORD PTR 112[ebp]
- mov ecx, DWORD PTR 116[ebp]
- sub edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- sub ecx, ebx
- xor edi, ecx
- ; round 15
- mov edx, DWORD PTR 120[ebp]
- mov ecx, DWORD PTR 124[ebp]
- add edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- add ecx, ebx
- xor esi, ecx
-$L000cast_enc_done:
- nop
- mov eax, DWORD PTR 20[esp]
- mov DWORD PTR 4[eax],edi
- mov DWORD PTR [eax],esi
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_CAST_encrypt ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _CAST_decrypt
-EXTERN _CAST_S_table0:DWORD
-EXTERN _CAST_S_table1:DWORD
-EXTERN _CAST_S_table2:DWORD
-EXTERN _CAST_S_table3:DWORD
-
-_CAST_decrypt PROC NEAR
- ;
- push ebp
- push ebx
- mov ebx, DWORD PTR 12[esp]
- mov ebp, DWORD PTR 16[esp]
- push esi
- push edi
- ; Load the 2 words
- mov edi, DWORD PTR [ebx]
- mov esi, DWORD PTR 4[ebx]
- ; Get short key flag
- mov eax, DWORD PTR 128[ebp]
- or eax, eax
- jnz $L001cast_dec_skip
- xor eax, eax
- ; round 15
- mov edx, DWORD PTR 120[ebp]
- mov ecx, DWORD PTR 124[ebp]
- add edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- add ecx, ebx
- xor edi, ecx
- ; round 14
- mov edx, DWORD PTR 112[ebp]
- mov ecx, DWORD PTR 116[ebp]
- sub edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- sub ecx, ebx
- xor esi, ecx
- ; round 13
- mov edx, DWORD PTR 104[ebp]
- mov ecx, DWORD PTR 108[ebp]
- xor edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- xor ecx, ebx
- xor edi, ecx
- ; round 12
- mov edx, DWORD PTR 96[ebp]
- mov ecx, DWORD PTR 100[ebp]
- add edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- add ecx, ebx
- xor esi, ecx
-$L001cast_dec_skip:
- ; round 11
- mov edx, DWORD PTR 88[ebp]
- mov ecx, DWORD PTR 92[ebp]
- sub edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- sub ecx, ebx
- xor edi, ecx
- ; round 10
- mov edx, DWORD PTR 80[ebp]
- mov ecx, DWORD PTR 84[ebp]
- xor edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- xor ecx, ebx
- xor esi, ecx
- ; round 9
- mov edx, DWORD PTR 72[ebp]
- mov ecx, DWORD PTR 76[ebp]
- add edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- add ecx, ebx
- xor edi, ecx
- ; round 8
- mov edx, DWORD PTR 64[ebp]
- mov ecx, DWORD PTR 68[ebp]
- sub edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- sub ecx, ebx
- xor esi, ecx
- ; round 7
- mov edx, DWORD PTR 56[ebp]
- mov ecx, DWORD PTR 60[ebp]
- xor edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- xor ecx, ebx
- xor edi, ecx
- ; round 6
- mov edx, DWORD PTR 48[ebp]
- mov ecx, DWORD PTR 52[ebp]
- add edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- add ecx, ebx
- xor esi, ecx
- ; round 5
- mov edx, DWORD PTR 40[ebp]
- mov ecx, DWORD PTR 44[ebp]
- sub edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- sub ecx, ebx
- xor edi, ecx
- ; round 4
- mov edx, DWORD PTR 32[ebp]
- mov ecx, DWORD PTR 36[ebp]
- xor edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- xor ecx, ebx
- xor esi, ecx
- ; round 3
- mov edx, DWORD PTR 24[ebp]
- mov ecx, DWORD PTR 28[ebp]
- add edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- add ecx, ebx
- xor edi, ecx
- ; round 2
- mov edx, DWORD PTR 16[ebp]
- mov ecx, DWORD PTR 20[ebp]
- sub edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- sub ecx, ebx
- xor esi, ecx
- ; round 1
- mov edx, DWORD PTR 8[ebp]
- mov ecx, DWORD PTR 12[ebp]
- xor edx, esi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- add ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- xor ecx, ebx
- xor edi, ecx
- ; round 0
- mov edx, DWORD PTR [ebp]
- mov ecx, DWORD PTR 4[ebp]
- add edx, edi
- rol edx, cl
- mov ebx, edx
- xor ecx, ecx
- mov cl, dh
- and ebx, 255
- shr edx, 16
- xor eax, eax
- mov al, dh
- and edx, 255
- mov ecx, DWORD PTR _CAST_S_table0[ecx*4]
- mov ebx, DWORD PTR _CAST_S_table1[ebx*4]
- xor ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table2[eax*4]
- sub ecx, ebx
- mov ebx, DWORD PTR _CAST_S_table3[edx*4]
- add ecx, ebx
- xor esi, ecx
- nop
- mov eax, DWORD PTR 20[esp]
- mov DWORD PTR 4[eax],edi
- mov DWORD PTR [eax],esi
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_CAST_decrypt ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _CAST_cbc_encrypt
-
-_CAST_cbc_encrypt PROC NEAR
- ;
- push ebp
- push ebx
- push esi
- push edi
- mov ebp, DWORD PTR 28[esp]
- ; getting iv ptr from parameter 4
- mov ebx, DWORD PTR 36[esp]
- mov esi, DWORD PTR [ebx]
- mov edi, DWORD PTR 4[ebx]
- push edi
- push esi
- push edi
- push esi
- mov ebx, esp
- mov esi, DWORD PTR 36[esp]
- mov edi, DWORD PTR 40[esp]
- ; getting encrypt flag from parameter 5
- mov ecx, DWORD PTR 56[esp]
- ; get and push parameter 3
- mov eax, DWORD PTR 48[esp]
- push eax
- push ebx
- cmp ecx, 0
- jz $L002decrypt
- and ebp, 4294967288
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- jz $L003encrypt_finish
-L004encrypt_loop:
- mov ecx, DWORD PTR [esi]
- mov edx, DWORD PTR 4[esi]
- xor eax, ecx
- xor ebx, edx
- bswap eax
- bswap ebx
- mov DWORD PTR 8[esp],eax
- mov DWORD PTR 12[esp],ebx
- call _CAST_encrypt
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- bswap eax
- bswap ebx
- mov DWORD PTR [edi],eax
- mov DWORD PTR 4[edi],ebx
- add esi, 8
- add edi, 8
- sub ebp, 8
- jnz L004encrypt_loop
-$L003encrypt_finish:
- mov ebp, DWORD PTR 52[esp]
- and ebp, 7
- jz $L005finish
- xor ecx, ecx
- xor edx, edx
- mov ebp, DWORD PTR $L006cbc_enc_jmp_table[ebp*4]
- jmp ebp
-L007ej7:
- xor edx, edx
- mov dh, BYTE PTR 6[esi]
- shl edx, 8
-L008ej6:
- mov dh, BYTE PTR 5[esi]
-L009ej5:
- mov dl, BYTE PTR 4[esi]
-L010ej4:
- mov ecx, DWORD PTR [esi]
- jmp $L011ejend
-L012ej3:
- mov ch, BYTE PTR 2[esi]
- xor ecx, ecx
- shl ecx, 8
-L013ej2:
- mov ch, BYTE PTR 1[esi]
-L014ej1:
- mov cl, BYTE PTR [esi]
-$L011ejend:
- xor eax, ecx
- xor ebx, edx
- bswap eax
- bswap ebx
- mov DWORD PTR 8[esp],eax
- mov DWORD PTR 12[esp],ebx
- call _CAST_encrypt
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- bswap eax
- bswap ebx
- mov DWORD PTR [edi],eax
- mov DWORD PTR 4[edi],ebx
- jmp $L005finish
-$L002decrypt:
- and ebp, 4294967288
- mov eax, DWORD PTR 16[esp]
- mov ebx, DWORD PTR 20[esp]
- jz $L015decrypt_finish
-L016decrypt_loop:
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- bswap eax
- bswap ebx
- mov DWORD PTR 8[esp],eax
- mov DWORD PTR 12[esp],ebx
- call _CAST_decrypt
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- bswap eax
- bswap ebx
- mov ecx, DWORD PTR 16[esp]
- mov edx, DWORD PTR 20[esp]
- xor ecx, eax
- xor edx, ebx
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- mov DWORD PTR [edi],ecx
- mov DWORD PTR 4[edi],edx
- mov DWORD PTR 16[esp],eax
- mov DWORD PTR 20[esp],ebx
- add esi, 8
- add edi, 8
- sub ebp, 8
- jnz L016decrypt_loop
-$L015decrypt_finish:
- mov ebp, DWORD PTR 52[esp]
- and ebp, 7
- jz $L005finish
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- bswap eax
- bswap ebx
- mov DWORD PTR 8[esp],eax
- mov DWORD PTR 12[esp],ebx
- call _CAST_decrypt
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- bswap eax
- bswap ebx
- mov ecx, DWORD PTR 16[esp]
- mov edx, DWORD PTR 20[esp]
- xor ecx, eax
- xor edx, ebx
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
-L017dj7:
- ror edx, 16
- mov BYTE PTR 6[edi],dl
- shr edx, 16
-L018dj6:
- mov BYTE PTR 5[edi],dh
-L019dj5:
- mov BYTE PTR 4[edi],dl
-L020dj4:
- mov DWORD PTR [edi],ecx
- jmp $L021djend
-L022dj3:
- ror ecx, 16
- mov BYTE PTR 2[edi],cl
- shl ecx, 16
-L023dj2:
- mov BYTE PTR 1[esi],ch
-L024dj1:
- mov BYTE PTR [esi], cl
-$L021djend:
- jmp $L005finish
-$L005finish:
- mov ecx, DWORD PTR 60[esp]
- add esp, 24
- mov DWORD PTR [ecx],eax
- mov DWORD PTR 4[ecx],ebx
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-$L006cbc_enc_jmp_table:
- DD 0
- DD L014ej1
- DD L013ej2
- DD L012ej3
- DD L010ej4
- DD L009ej5
- DD L008ej6
- DD L007ej7
-L025cbc_dec_jmp_table:
- DD 0
- DD L024dj1
- DD L023dj2
- DD L022dj3
- DD L020dj4
- DD L019dj5
- DD L018dj6
- DD L017dj7
-_CAST_cbc_encrypt ENDP
-_TEXT ENDS
-END
+++ /dev/null
- ; Don't even think of reading this code
- ; It was automatically generated by des-586.pl
- ; Which is a perl program used to generate the x86 assember for
- ; any of elf, a.out, BSDI,Win32, or Solaris
- ; eric <eay@cryptsoft.com>
- ;
- TITLE des-586.asm
- .386
-.model FLAT
-_TEXT SEGMENT
-PUBLIC _des_encrypt
-EXTRN _des_SPtrans:DWORD
-_des_encrypt PROC NEAR
- push esi
- push edi
- ;
- ; Load the 2 words
- mov esi, DWORD PTR 12[esp]
- xor ecx, ecx
- push ebx
- push ebp
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 28[esp]
- mov edi, DWORD PTR 4[esi]
- ;
- ; IP
- rol eax, 4
- mov esi, eax
- xor eax, edi
- and eax, 0f0f0f0f0h
- xor esi, eax
- xor edi, eax
- ;
- rol edi, 20
- mov eax, edi
- xor edi, esi
- and edi, 0fff0000fh
- xor eax, edi
- xor esi, edi
- ;
- rol eax, 14
- mov edi, eax
- xor eax, esi
- and eax, 033333333h
- xor edi, eax
- xor esi, eax
- ;
- rol esi, 22
- mov eax, esi
- xor esi, edi
- and esi, 003fc03fch
- xor eax, esi
- xor edi, esi
- ;
- rol eax, 9
- mov esi, eax
- xor eax, edi
- and eax, 0aaaaaaaah
- xor esi, eax
- xor edi, eax
- ;
- rol edi, 1
- mov ebp, DWORD PTR 24[esp]
- cmp ebx, 0
- je $L000start_decrypt
- ;
- ; Round 0
- mov eax, DWORD PTR [ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 4[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 1
- mov eax, DWORD PTR 8[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 12[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 2
- mov eax, DWORD PTR 16[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 20[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 3
- mov eax, DWORD PTR 24[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 28[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 4
- mov eax, DWORD PTR 32[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 36[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 5
- mov eax, DWORD PTR 40[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 44[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 6
- mov eax, DWORD PTR 48[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 52[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 7
- mov eax, DWORD PTR 56[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 60[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 8
- mov eax, DWORD PTR 64[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 68[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 9
- mov eax, DWORD PTR 72[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 76[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 10
- mov eax, DWORD PTR 80[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 84[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 11
- mov eax, DWORD PTR 88[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 92[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 12
- mov eax, DWORD PTR 96[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 100[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 13
- mov eax, DWORD PTR 104[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 108[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 14
- mov eax, DWORD PTR 112[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 116[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 15
- mov eax, DWORD PTR 120[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 124[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- jmp $L001end
-$L000start_decrypt:
- ;
- ; Round 15
- mov eax, DWORD PTR 120[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 124[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 14
- mov eax, DWORD PTR 112[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 116[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 13
- mov eax, DWORD PTR 104[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 108[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 12
- mov eax, DWORD PTR 96[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 100[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 11
- mov eax, DWORD PTR 88[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 92[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 10
- mov eax, DWORD PTR 80[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 84[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 9
- mov eax, DWORD PTR 72[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 76[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 8
- mov eax, DWORD PTR 64[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 68[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 7
- mov eax, DWORD PTR 56[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 60[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 6
- mov eax, DWORD PTR 48[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 52[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 5
- mov eax, DWORD PTR 40[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 44[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 4
- mov eax, DWORD PTR 32[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 36[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 3
- mov eax, DWORD PTR 24[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 28[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 2
- mov eax, DWORD PTR 16[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 20[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 1
- mov eax, DWORD PTR 8[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 12[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 0
- mov eax, DWORD PTR [ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 4[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
-$L001end:
- ;
- ; FP
- mov edx, DWORD PTR 20[esp]
- ror esi, 1
- mov eax, edi
- xor edi, esi
- and edi, 0aaaaaaaah
- xor eax, edi
- xor esi, edi
- ;
- rol eax, 23
- mov edi, eax
- xor eax, esi
- and eax, 003fc03fch
- xor edi, eax
- xor esi, eax
- ;
- rol edi, 10
- mov eax, edi
- xor edi, esi
- and edi, 033333333h
- xor eax, edi
- xor esi, edi
- ;
- rol esi, 18
- mov edi, esi
- xor esi, eax
- and esi, 0fff0000fh
- xor edi, esi
- xor eax, esi
- ;
- rol edi, 12
- mov esi, edi
- xor edi, eax
- and edi, 0f0f0f0f0h
- xor esi, edi
- xor eax, edi
- ;
- ror eax, 4
- mov DWORD PTR [edx],eax
- mov DWORD PTR 4[edx],esi
- pop ebp
- pop ebx
- pop edi
- pop esi
- ret
-_des_encrypt ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _des_encrypt2
-EXTRN _des_SPtrans:DWORD
-_des_encrypt2 PROC NEAR
- push esi
- push edi
- ;
- ; Load the 2 words
- mov eax, DWORD PTR 12[esp]
- xor ecx, ecx
- push ebx
- push ebp
- mov esi, DWORD PTR [eax]
- mov ebx, DWORD PTR 28[esp]
- rol esi, 3
- mov edi, DWORD PTR 4[eax]
- rol edi, 3
- mov ebp, DWORD PTR 24[esp]
- cmp ebx, 0
- je $L002start_decrypt
- ;
- ; Round 0
- mov eax, DWORD PTR [ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 4[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 1
- mov eax, DWORD PTR 8[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 12[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 2
- mov eax, DWORD PTR 16[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 20[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 3
- mov eax, DWORD PTR 24[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 28[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 4
- mov eax, DWORD PTR 32[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 36[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 5
- mov eax, DWORD PTR 40[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 44[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 6
- mov eax, DWORD PTR 48[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 52[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 7
- mov eax, DWORD PTR 56[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 60[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 8
- mov eax, DWORD PTR 64[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 68[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 9
- mov eax, DWORD PTR 72[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 76[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 10
- mov eax, DWORD PTR 80[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 84[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 11
- mov eax, DWORD PTR 88[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 92[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 12
- mov eax, DWORD PTR 96[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 100[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 13
- mov eax, DWORD PTR 104[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 108[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 14
- mov eax, DWORD PTR 112[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 116[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 15
- mov eax, DWORD PTR 120[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 124[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- jmp $L003end
-$L002start_decrypt:
- ;
- ; Round 15
- mov eax, DWORD PTR 120[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 124[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 14
- mov eax, DWORD PTR 112[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 116[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 13
- mov eax, DWORD PTR 104[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 108[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 12
- mov eax, DWORD PTR 96[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 100[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 11
- mov eax, DWORD PTR 88[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 92[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 10
- mov eax, DWORD PTR 80[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 84[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 9
- mov eax, DWORD PTR 72[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 76[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 8
- mov eax, DWORD PTR 64[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 68[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 7
- mov eax, DWORD PTR 56[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 60[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 6
- mov eax, DWORD PTR 48[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 52[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 5
- mov eax, DWORD PTR 40[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 44[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 4
- mov eax, DWORD PTR 32[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 36[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 3
- mov eax, DWORD PTR 24[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 28[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 2
- mov eax, DWORD PTR 16[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 20[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 1
- mov eax, DWORD PTR 8[ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 12[ebp]
- xor eax, esi
- xor edx, esi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 0
- mov eax, DWORD PTR [ebp]
- xor ebx, ebx
- mov edx, DWORD PTR 4[ebp]
- xor eax, edi
- xor edx, edi
- and eax, 0fcfcfcfch
- and edx, 0cfcfcfcfh
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
-$L003end:
- ;
- ; Fixup
- ror edi, 3
- mov eax, DWORD PTR 20[esp]
- ror esi, 3
- mov DWORD PTR [eax],edi
- mov DWORD PTR 4[eax],esi
- pop ebp
- pop ebx
- pop edi
- pop esi
- ret
-_des_encrypt2 ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _des_encrypt3
-
-_des_encrypt3 PROC NEAR
- push ebx
- mov ebx, DWORD PTR 8[esp]
- push ebp
- push esi
- push edi
- ;
- ; Load the data words
- mov edi, DWORD PTR [ebx]
- mov esi, DWORD PTR 4[ebx]
- sub esp, 12
- ;
- ; IP
- rol edi, 4
- mov edx, edi
- xor edi, esi
- and edi, 0f0f0f0f0h
- xor edx, edi
- xor esi, edi
- ;
- rol esi, 20
- mov edi, esi
- xor esi, edx
- and esi, 0fff0000fh
- xor edi, esi
- xor edx, esi
- ;
- rol edi, 14
- mov esi, edi
- xor edi, edx
- and edi, 033333333h
- xor esi, edi
- xor edx, edi
- ;
- rol edx, 22
- mov edi, edx
- xor edx, esi
- and edx, 003fc03fch
- xor edi, edx
- xor esi, edx
- ;
- rol edi, 9
- mov edx, edi
- xor edi, esi
- and edi, 0aaaaaaaah
- xor edx, edi
- xor esi, edi
- ;
- ror edx, 3
- ror esi, 2
- mov DWORD PTR 4[ebx],esi
- mov eax, DWORD PTR 36[esp]
- mov DWORD PTR [ebx],edx
- mov edi, DWORD PTR 40[esp]
- mov esi, DWORD PTR 44[esp]
- mov DWORD PTR 8[esp],1
- mov DWORD PTR 4[esp],eax
- mov DWORD PTR [esp],ebx
- call _des_encrypt2
- mov DWORD PTR 8[esp],0
- mov DWORD PTR 4[esp],edi
- mov DWORD PTR [esp],ebx
- call _des_encrypt2
- mov DWORD PTR 8[esp],1
- mov DWORD PTR 4[esp],esi
- mov DWORD PTR [esp],ebx
- call _des_encrypt2
- add esp, 12
- mov edi, DWORD PTR [ebx]
- mov esi, DWORD PTR 4[ebx]
- ;
- ; FP
- rol esi, 2
- rol edi, 3
- mov eax, edi
- xor edi, esi
- and edi, 0aaaaaaaah
- xor eax, edi
- xor esi, edi
- ;
- rol eax, 23
- mov edi, eax
- xor eax, esi
- and eax, 003fc03fch
- xor edi, eax
- xor esi, eax
- ;
- rol edi, 10
- mov eax, edi
- xor edi, esi
- and edi, 033333333h
- xor eax, edi
- xor esi, edi
- ;
- rol esi, 18
- mov edi, esi
- xor esi, eax
- and esi, 0fff0000fh
- xor edi, esi
- xor eax, esi
- ;
- rol edi, 12
- mov esi, edi
- xor edi, eax
- and edi, 0f0f0f0f0h
- xor esi, edi
- xor eax, edi
- ;
- ror eax, 4
- mov DWORD PTR [ebx],eax
- mov DWORD PTR 4[ebx],esi
- pop edi
- pop esi
- pop ebp
- pop ebx
- ret
-_des_encrypt3 ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _des_decrypt3
-
-_des_decrypt3 PROC NEAR
- push ebx
- mov ebx, DWORD PTR 8[esp]
- push ebp
- push esi
- push edi
- ;
- ; Load the data words
- mov edi, DWORD PTR [ebx]
- mov esi, DWORD PTR 4[ebx]
- sub esp, 12
- ;
- ; IP
- rol edi, 4
- mov edx, edi
- xor edi, esi
- and edi, 0f0f0f0f0h
- xor edx, edi
- xor esi, edi
- ;
- rol esi, 20
- mov edi, esi
- xor esi, edx
- and esi, 0fff0000fh
- xor edi, esi
- xor edx, esi
- ;
- rol edi, 14
- mov esi, edi
- xor edi, edx
- and edi, 033333333h
- xor esi, edi
- xor edx, edi
- ;
- rol edx, 22
- mov edi, edx
- xor edx, esi
- and edx, 003fc03fch
- xor edi, edx
- xor esi, edx
- ;
- rol edi, 9
- mov edx, edi
- xor edi, esi
- and edi, 0aaaaaaaah
- xor edx, edi
- xor esi, edi
- ;
- ror edx, 3
- ror esi, 2
- mov DWORD PTR 4[ebx],esi
- mov esi, DWORD PTR 36[esp]
- mov DWORD PTR [ebx],edx
- mov edi, DWORD PTR 40[esp]
- mov eax, DWORD PTR 44[esp]
- mov DWORD PTR 8[esp],0
- mov DWORD PTR 4[esp],eax
- mov DWORD PTR [esp],ebx
- call _des_encrypt2
- mov DWORD PTR 8[esp],1
- mov DWORD PTR 4[esp],edi
- mov DWORD PTR [esp],ebx
- call _des_encrypt2
- mov DWORD PTR 8[esp],0
- mov DWORD PTR 4[esp],esi
- mov DWORD PTR [esp],ebx
- call _des_encrypt2
- add esp, 12
- mov edi, DWORD PTR [ebx]
- mov esi, DWORD PTR 4[ebx]
- ;
- ; FP
- rol esi, 2
- rol edi, 3
- mov eax, edi
- xor edi, esi
- and edi, 0aaaaaaaah
- xor eax, edi
- xor esi, edi
- ;
- rol eax, 23
- mov edi, eax
- xor eax, esi
- and eax, 003fc03fch
- xor edi, eax
- xor esi, eax
- ;
- rol edi, 10
- mov eax, edi
- xor edi, esi
- and edi, 033333333h
- xor eax, edi
- xor esi, edi
- ;
- rol esi, 18
- mov edi, esi
- xor esi, eax
- and esi, 0fff0000fh
- xor edi, esi
- xor eax, esi
- ;
- rol edi, 12
- mov esi, edi
- xor edi, eax
- and edi, 0f0f0f0f0h
- xor esi, edi
- xor eax, edi
- ;
- ror eax, 4
- mov DWORD PTR [ebx],eax
- mov DWORD PTR 4[ebx],esi
- pop edi
- pop esi
- pop ebp
- pop ebx
- ret
-_des_decrypt3 ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _des_ncbc_encrypt
-
-_des_ncbc_encrypt PROC NEAR
- ;
- push ebp
- push ebx
- push esi
- push edi
- mov ebp, DWORD PTR 28[esp]
- ; getting iv ptr from parameter 4
- mov ebx, DWORD PTR 36[esp]
- mov esi, DWORD PTR [ebx]
- mov edi, DWORD PTR 4[ebx]
- push edi
- push esi
- push edi
- push esi
- mov ebx, esp
- mov esi, DWORD PTR 36[esp]
- mov edi, DWORD PTR 40[esp]
- ; getting encrypt flag from parameter 5
- mov ecx, DWORD PTR 56[esp]
- ; get and push parameter 5
- push ecx
- ; get and push parameter 3
- mov eax, DWORD PTR 52[esp]
- push eax
- push ebx
- cmp ecx, 0
- jz $L004decrypt
- and ebp, 4294967288
- mov eax, DWORD PTR 12[esp]
- mov ebx, DWORD PTR 16[esp]
- jz $L005encrypt_finish
-L006encrypt_loop:
- mov ecx, DWORD PTR [esi]
- mov edx, DWORD PTR 4[esi]
- xor eax, ecx
- xor ebx, edx
- mov DWORD PTR 12[esp],eax
- mov DWORD PTR 16[esp],ebx
- call _des_encrypt
- mov eax, DWORD PTR 12[esp]
- mov ebx, DWORD PTR 16[esp]
- mov DWORD PTR [edi],eax
- mov DWORD PTR 4[edi],ebx
- add esi, 8
- add edi, 8
- sub ebp, 8
- jnz L006encrypt_loop
-$L005encrypt_finish:
- mov ebp, DWORD PTR 56[esp]
- and ebp, 7
- jz $L007finish
- xor ecx, ecx
- xor edx, edx
- mov ebp, DWORD PTR $L008cbc_enc_jmp_table[ebp*4]
- jmp ebp
-L009ej7:
- mov dh, BYTE PTR 6[esi]
- shl edx, 8
-L010ej6:
- mov dh, BYTE PTR 5[esi]
-L011ej5:
- mov dl, BYTE PTR 4[esi]
-L012ej4:
- mov ecx, DWORD PTR [esi]
- jmp $L013ejend
-L014ej3:
- mov ch, BYTE PTR 2[esi]
- shl ecx, 8
-L015ej2:
- mov ch, BYTE PTR 1[esi]
-L016ej1:
- mov cl, BYTE PTR [esi]
-$L013ejend:
- xor eax, ecx
- xor ebx, edx
- mov DWORD PTR 12[esp],eax
- mov DWORD PTR 16[esp],ebx
- call _des_encrypt
- mov eax, DWORD PTR 12[esp]
- mov ebx, DWORD PTR 16[esp]
- mov DWORD PTR [edi],eax
- mov DWORD PTR 4[edi],ebx
- jmp $L007finish
-$L004decrypt:
- and ebp, 4294967288
- mov eax, DWORD PTR 20[esp]
- mov ebx, DWORD PTR 24[esp]
- jz $L017decrypt_finish
-L018decrypt_loop:
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- mov DWORD PTR 12[esp],eax
- mov DWORD PTR 16[esp],ebx
- call _des_encrypt
- mov eax, DWORD PTR 12[esp]
- mov ebx, DWORD PTR 16[esp]
- mov ecx, DWORD PTR 20[esp]
- mov edx, DWORD PTR 24[esp]
- xor ecx, eax
- xor edx, ebx
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- mov DWORD PTR [edi],ecx
- mov DWORD PTR 4[edi],edx
- mov DWORD PTR 20[esp],eax
- mov DWORD PTR 24[esp],ebx
- add esi, 8
- add edi, 8
- sub ebp, 8
- jnz L018decrypt_loop
-$L017decrypt_finish:
- mov ebp, DWORD PTR 56[esp]
- and ebp, 7
- jz $L007finish
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- mov DWORD PTR 12[esp],eax
- mov DWORD PTR 16[esp],ebx
- call _des_encrypt
- mov eax, DWORD PTR 12[esp]
- mov ebx, DWORD PTR 16[esp]
- mov ecx, DWORD PTR 20[esp]
- mov edx, DWORD PTR 24[esp]
- xor ecx, eax
- xor edx, ebx
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
-L019dj7:
- ror edx, 16
- mov BYTE PTR 6[edi],dl
- shr edx, 16
-L020dj6:
- mov BYTE PTR 5[edi],dh
-L021dj5:
- mov BYTE PTR 4[edi],dl
-L022dj4:
- mov DWORD PTR [edi],ecx
- jmp $L023djend
-L024dj3:
- ror ecx, 16
- mov BYTE PTR 2[edi],cl
- shl ecx, 16
-L025dj2:
- mov BYTE PTR 1[esi],ch
-L026dj1:
- mov BYTE PTR [esi], cl
-$L023djend:
- jmp $L007finish
-$L007finish:
- mov ecx, DWORD PTR 64[esp]
- add esp, 28
- mov DWORD PTR [ecx],eax
- mov DWORD PTR 4[ecx],ebx
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-$L008cbc_enc_jmp_table:
- DD 0
- DD L016ej1
- DD L015ej2
- DD L014ej3
- DD L012ej4
- DD L011ej5
- DD L010ej6
- DD L009ej7
-L027cbc_dec_jmp_table:
- DD 0
- DD L026dj1
- DD L025dj2
- DD L024dj3
- DD L022dj4
- DD L021dj5
- DD L020dj6
- DD L019dj7
-_des_ncbc_encrypt ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _des_ede3_cbc_encrypt
-
-_des_ede3_cbc_encrypt PROC NEAR
- ;
- push ebp
- push ebx
- push esi
- push edi
- mov ebp, DWORD PTR 28[esp]
- ; getting iv ptr from parameter 6
- mov ebx, DWORD PTR 44[esp]
- mov esi, DWORD PTR [ebx]
- mov edi, DWORD PTR 4[ebx]
- push edi
- push esi
- push edi
- push esi
- mov ebx, esp
- mov esi, DWORD PTR 36[esp]
- mov edi, DWORD PTR 40[esp]
- ; getting encrypt flag from parameter 7
- mov ecx, DWORD PTR 64[esp]
- ; get and push parameter 5
- mov eax, DWORD PTR 56[esp]
- push eax
- ; get and push parameter 4
- mov eax, DWORD PTR 56[esp]
- push eax
- ; get and push parameter 3
- mov eax, DWORD PTR 56[esp]
- push eax
- push ebx
- cmp ecx, 0
- jz $L028decrypt
- and ebp, 4294967288
- mov eax, DWORD PTR 16[esp]
- mov ebx, DWORD PTR 20[esp]
- jz $L029encrypt_finish
-L030encrypt_loop:
- mov ecx, DWORD PTR [esi]
- mov edx, DWORD PTR 4[esi]
- xor eax, ecx
- xor ebx, edx
- mov DWORD PTR 16[esp],eax
- mov DWORD PTR 20[esp],ebx
- call _des_encrypt3
- mov eax, DWORD PTR 16[esp]
- mov ebx, DWORD PTR 20[esp]
- mov DWORD PTR [edi],eax
- mov DWORD PTR 4[edi],ebx
- add esi, 8
- add edi, 8
- sub ebp, 8
- jnz L030encrypt_loop
-$L029encrypt_finish:
- mov ebp, DWORD PTR 60[esp]
- and ebp, 7
- jz $L031finish
- xor ecx, ecx
- xor edx, edx
- mov ebp, DWORD PTR $L032cbc_enc_jmp_table[ebp*4]
- jmp ebp
-L033ej7:
- mov dh, BYTE PTR 6[esi]
- shl edx, 8
-L034ej6:
- mov dh, BYTE PTR 5[esi]
-L035ej5:
- mov dl, BYTE PTR 4[esi]
-L036ej4:
- mov ecx, DWORD PTR [esi]
- jmp $L037ejend
-L038ej3:
- mov ch, BYTE PTR 2[esi]
- shl ecx, 8
-L039ej2:
- mov ch, BYTE PTR 1[esi]
-L040ej1:
- mov cl, BYTE PTR [esi]
-$L037ejend:
- xor eax, ecx
- xor ebx, edx
- mov DWORD PTR 16[esp],eax
- mov DWORD PTR 20[esp],ebx
- call _des_encrypt3
- mov eax, DWORD PTR 16[esp]
- mov ebx, DWORD PTR 20[esp]
- mov DWORD PTR [edi],eax
- mov DWORD PTR 4[edi],ebx
- jmp $L031finish
-$L028decrypt:
- and ebp, 4294967288
- mov eax, DWORD PTR 24[esp]
- mov ebx, DWORD PTR 28[esp]
- jz $L041decrypt_finish
-L042decrypt_loop:
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- mov DWORD PTR 16[esp],eax
- mov DWORD PTR 20[esp],ebx
- call _des_decrypt3
- mov eax, DWORD PTR 16[esp]
- mov ebx, DWORD PTR 20[esp]
- mov ecx, DWORD PTR 24[esp]
- mov edx, DWORD PTR 28[esp]
- xor ecx, eax
- xor edx, ebx
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- mov DWORD PTR [edi],ecx
- mov DWORD PTR 4[edi],edx
- mov DWORD PTR 24[esp],eax
- mov DWORD PTR 28[esp],ebx
- add esi, 8
- add edi, 8
- sub ebp, 8
- jnz L042decrypt_loop
-$L041decrypt_finish:
- mov ebp, DWORD PTR 60[esp]
- and ebp, 7
- jz $L031finish
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- mov DWORD PTR 16[esp],eax
- mov DWORD PTR 20[esp],ebx
- call _des_decrypt3
- mov eax, DWORD PTR 16[esp]
- mov ebx, DWORD PTR 20[esp]
- mov ecx, DWORD PTR 24[esp]
- mov edx, DWORD PTR 28[esp]
- xor ecx, eax
- xor edx, ebx
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
-L043dj7:
- ror edx, 16
- mov BYTE PTR 6[edi],dl
- shr edx, 16
-L044dj6:
- mov BYTE PTR 5[edi],dh
-L045dj5:
- mov BYTE PTR 4[edi],dl
-L046dj4:
- mov DWORD PTR [edi],ecx
- jmp $L047djend
-L048dj3:
- ror ecx, 16
- mov BYTE PTR 2[edi],cl
- shl ecx, 16
-L049dj2:
- mov BYTE PTR 1[esi],ch
-L050dj1:
- mov BYTE PTR [esi], cl
-$L047djend:
- jmp $L031finish
-$L031finish:
- mov ecx, DWORD PTR 76[esp]
- add esp, 32
- mov DWORD PTR [ecx],eax
- mov DWORD PTR 4[ecx],ebx
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-$L032cbc_enc_jmp_table:
- DD 0
- DD L040ej1
- DD L039ej2
- DD L038ej3
- DD L036ej4
- DD L035ej5
- DD L034ej6
- DD L033ej7
-L051cbc_dec_jmp_table:
- DD 0
- DD L050dj1
- DD L049dj2
- DD L048dj3
- DD L046dj4
- DD L045dj5
- DD L044dj6
- DD L043dj7
-_des_ede3_cbc_encrypt ENDP
-_TEXT ENDS
-END
+++ /dev/null
- ; Don't even think of reading this code
- ; It was automatically generated by crypt586.pl
- ; Which is a perl program used to generate the x86 assember for
- ; any of elf, a.out, BSDI,Win32, or Solaris
- ; eric <eay@cryptsoft.com>
- ;
- TITLE crypt586.asm
- .386
-.model FLAT
-_TEXT SEGMENT
-PUBLIC _fcrypt_body
-EXTRN _des_SPtrans:DWORD
-_fcrypt_body PROC NEAR
- push ebp
- push ebx
- push esi
- push edi
- ;
- ; Load the 2 words
- xor edi, edi
- xor esi, esi
- mov ebp, DWORD PTR 24[esp]
- push 25
-L000start:
- ;
- ; Round 0
- mov eax, DWORD PTR 32[esp]
- mov edx, esi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, esi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR [ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 4[ebp]
- xor eax, esi
- xor edx, esi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 1
- mov eax, DWORD PTR 32[esp]
- mov edx, edi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, edi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 8[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 12[ebp]
- xor eax, edi
- xor edx, edi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 2
- mov eax, DWORD PTR 32[esp]
- mov edx, esi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, esi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 16[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 20[ebp]
- xor eax, esi
- xor edx, esi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 3
- mov eax, DWORD PTR 32[esp]
- mov edx, edi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, edi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 24[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 28[ebp]
- xor eax, edi
- xor edx, edi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 4
- mov eax, DWORD PTR 32[esp]
- mov edx, esi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, esi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 32[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 36[ebp]
- xor eax, esi
- xor edx, esi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 5
- mov eax, DWORD PTR 32[esp]
- mov edx, edi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, edi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 40[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 44[ebp]
- xor eax, edi
- xor edx, edi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 6
- mov eax, DWORD PTR 32[esp]
- mov edx, esi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, esi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 48[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 52[ebp]
- xor eax, esi
- xor edx, esi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 7
- mov eax, DWORD PTR 32[esp]
- mov edx, edi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, edi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 56[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 60[ebp]
- xor eax, edi
- xor edx, edi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 8
- mov eax, DWORD PTR 32[esp]
- mov edx, esi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, esi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 64[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 68[ebp]
- xor eax, esi
- xor edx, esi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 9
- mov eax, DWORD PTR 32[esp]
- mov edx, edi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, edi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 72[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 76[ebp]
- xor eax, edi
- xor edx, edi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 10
- mov eax, DWORD PTR 32[esp]
- mov edx, esi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, esi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 80[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 84[ebp]
- xor eax, esi
- xor edx, esi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 11
- mov eax, DWORD PTR 32[esp]
- mov edx, edi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, edi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 88[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 92[ebp]
- xor eax, edi
- xor edx, edi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 12
- mov eax, DWORD PTR 32[esp]
- mov edx, esi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, esi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 96[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 100[ebp]
- xor eax, esi
- xor edx, esi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 13
- mov eax, DWORD PTR 32[esp]
- mov edx, edi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, edi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 104[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 108[ebp]
- xor eax, edi
- xor edx, edi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- ;
- ; Round 14
- mov eax, DWORD PTR 32[esp]
- mov edx, esi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, esi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 112[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 116[ebp]
- xor eax, esi
- xor edx, esi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor edi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor edi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor edi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor edi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor edi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor edi, ebx
- ;
- ; Round 15
- mov eax, DWORD PTR 32[esp]
- mov edx, edi
- shr edx, 16
- mov ecx, DWORD PTR 36[esp]
- xor edx, edi
- and eax, edx
- and edx, ecx
- mov ebx, eax
- shl ebx, 16
- mov ecx, edx
- shl ecx, 16
- xor eax, ebx
- xor edx, ecx
- mov ebx, DWORD PTR 120[ebp]
- xor eax, ebx
- mov ecx, DWORD PTR 124[ebp]
- xor eax, edi
- xor edx, edi
- xor edx, ecx
- and eax, 0fcfcfcfch
- xor ebx, ebx
- and edx, 0cfcfcfcfh
- xor ecx, ecx
- mov bl, al
- mov cl, ah
- ror edx, 4
- mov ebp, DWORD PTR _des_SPtrans[ebx]
- mov bl, dl
- xor esi, ebp
- mov ebp, DWORD PTR _des_SPtrans[0200h+ecx]
- xor esi, ebp
- mov cl, dh
- shr eax, 16
- mov ebp, DWORD PTR _des_SPtrans[0100h+ebx]
- xor esi, ebp
- mov bl, ah
- shr edx, 16
- mov ebp, DWORD PTR _des_SPtrans[0300h+ecx]
- xor esi, ebp
- mov ebp, DWORD PTR 28[esp]
- mov cl, dh
- and eax, 0ffh
- and edx, 0ffh
- mov ebx, DWORD PTR _des_SPtrans[0600h+ebx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0700h+ecx]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0400h+eax]
- xor esi, ebx
- mov ebx, DWORD PTR _des_SPtrans[0500h+edx]
- xor esi, ebx
- mov ebx, DWORD PTR [esp]
- mov eax, edi
- dec ebx
- mov edi, esi
- mov esi, eax
- mov DWORD PTR [esp],ebx
- jnz L000start
- ;
- ; FP
- mov edx, DWORD PTR 24[esp]
- ror edi, 1
- mov eax, esi
- xor esi, edi
- and esi, 0aaaaaaaah
- xor eax, esi
- xor edi, esi
- ;
- rol eax, 23
- mov esi, eax
- xor eax, edi
- and eax, 003fc03fch
- xor esi, eax
- xor edi, eax
- ;
- rol esi, 10
- mov eax, esi
- xor esi, edi
- and esi, 033333333h
- xor eax, esi
- xor edi, esi
- ;
- rol edi, 18
- mov esi, edi
- xor edi, eax
- and edi, 0fff0000fh
- xor esi, edi
- xor eax, edi
- ;
- rol esi, 12
- mov edi, esi
- xor esi, eax
- and esi, 0f0f0f0f0h
- xor edi, esi
- xor eax, esi
- ;
- ror eax, 4
- mov DWORD PTR [edx],eax
- mov DWORD PTR 4[edx],edi
- pop ecx
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_fcrypt_body ENDP
-_TEXT ENDS
-END
+++ /dev/null
- ; Don't even think of reading this code
- ; It was automatically generated by md5-586.pl
- ; Which is a perl program used to generate the x86 assember for
- ; any of elf, a.out, BSDI,Win32, or Solaris
- ; eric <eay@cryptsoft.com>
- ;
- TITLE md5-586.asm
- .386
-.model FLAT
-_TEXT SEGMENT
-PUBLIC _md5_block_asm_host_order
-
-_md5_block_asm_host_order PROC NEAR
- push esi
- push edi
- mov edi, DWORD PTR 12[esp]
- mov esi, DWORD PTR 16[esp]
- mov ecx, DWORD PTR 20[esp]
- push ebp
- shl ecx, 6
- push ebx
- add ecx, esi
- sub ecx, 64
- mov eax, DWORD PTR [edi]
- push ecx
- mov ebx, DWORD PTR 4[edi]
- mov ecx, DWORD PTR 8[edi]
- mov edx, DWORD PTR 12[edi]
-L000start:
- ;
- ; R0 section
- mov edi, ecx
- mov ebp, DWORD PTR [esi]
- ; R0 0
- xor edi, edx
- and edi, ebx
- lea eax, DWORD PTR 3614090360[ebp*1+eax]
- xor edi, edx
- add eax, edi
- mov edi, ebx
- rol eax, 7
- mov ebp, DWORD PTR 4[esi]
- add eax, ebx
- ; R0 1
- xor edi, ecx
- and edi, eax
- lea edx, DWORD PTR 3905402710[ebp*1+edx]
- xor edi, ecx
- add edx, edi
- mov edi, eax
- rol edx, 12
- mov ebp, DWORD PTR 8[esi]
- add edx, eax
- ; R0 2
- xor edi, ebx
- and edi, edx
- lea ecx, DWORD PTR 606105819[ebp*1+ecx]
- xor edi, ebx
- add ecx, edi
- mov edi, edx
- rol ecx, 17
- mov ebp, DWORD PTR 12[esi]
- add ecx, edx
- ; R0 3
- xor edi, eax
- and edi, ecx
- lea ebx, DWORD PTR 3250441966[ebp*1+ebx]
- xor edi, eax
- add ebx, edi
- mov edi, ecx
- rol ebx, 22
- mov ebp, DWORD PTR 16[esi]
- add ebx, ecx
- ; R0 4
- xor edi, edx
- and edi, ebx
- lea eax, DWORD PTR 4118548399[ebp*1+eax]
- xor edi, edx
- add eax, edi
- mov edi, ebx
- rol eax, 7
- mov ebp, DWORD PTR 20[esi]
- add eax, ebx
- ; R0 5
- xor edi, ecx
- and edi, eax
- lea edx, DWORD PTR 1200080426[ebp*1+edx]
- xor edi, ecx
- add edx, edi
- mov edi, eax
- rol edx, 12
- mov ebp, DWORD PTR 24[esi]
- add edx, eax
- ; R0 6
- xor edi, ebx
- and edi, edx
- lea ecx, DWORD PTR 2821735955[ebp*1+ecx]
- xor edi, ebx
- add ecx, edi
- mov edi, edx
- rol ecx, 17
- mov ebp, DWORD PTR 28[esi]
- add ecx, edx
- ; R0 7
- xor edi, eax
- and edi, ecx
- lea ebx, DWORD PTR 4249261313[ebp*1+ebx]
- xor edi, eax
- add ebx, edi
- mov edi, ecx
- rol ebx, 22
- mov ebp, DWORD PTR 32[esi]
- add ebx, ecx
- ; R0 8
- xor edi, edx
- and edi, ebx
- lea eax, DWORD PTR 1770035416[ebp*1+eax]
- xor edi, edx
- add eax, edi
- mov edi, ebx
- rol eax, 7
- mov ebp, DWORD PTR 36[esi]
- add eax, ebx
- ; R0 9
- xor edi, ecx
- and edi, eax
- lea edx, DWORD PTR 2336552879[ebp*1+edx]
- xor edi, ecx
- add edx, edi
- mov edi, eax
- rol edx, 12
- mov ebp, DWORD PTR 40[esi]
- add edx, eax
- ; R0 10
- xor edi, ebx
- and edi, edx
- lea ecx, DWORD PTR 4294925233[ebp*1+ecx]
- xor edi, ebx
- add ecx, edi
- mov edi, edx
- rol ecx, 17
- mov ebp, DWORD PTR 44[esi]
- add ecx, edx
- ; R0 11
- xor edi, eax
- and edi, ecx
- lea ebx, DWORD PTR 2304563134[ebp*1+ebx]
- xor edi, eax
- add ebx, edi
- mov edi, ecx
- rol ebx, 22
- mov ebp, DWORD PTR 48[esi]
- add ebx, ecx
- ; R0 12
- xor edi, edx
- and edi, ebx
- lea eax, DWORD PTR 1804603682[ebp*1+eax]
- xor edi, edx
- add eax, edi
- mov edi, ebx
- rol eax, 7
- mov ebp, DWORD PTR 52[esi]
- add eax, ebx
- ; R0 13
- xor edi, ecx
- and edi, eax
- lea edx, DWORD PTR 4254626195[ebp*1+edx]
- xor edi, ecx
- add edx, edi
- mov edi, eax
- rol edx, 12
- mov ebp, DWORD PTR 56[esi]
- add edx, eax
- ; R0 14
- xor edi, ebx
- and edi, edx
- lea ecx, DWORD PTR 2792965006[ebp*1+ecx]
- xor edi, ebx
- add ecx, edi
- mov edi, edx
- rol ecx, 17
- mov ebp, DWORD PTR 60[esi]
- add ecx, edx
- ; R0 15
- xor edi, eax
- and edi, ecx
- lea ebx, DWORD PTR 1236535329[ebp*1+ebx]
- xor edi, eax
- add ebx, edi
- mov edi, ecx
- rol ebx, 22
- mov ebp, DWORD PTR 4[esi]
- add ebx, ecx
- ;
- ; R1 section
- ; R1 16
- lea eax, DWORD PTR 4129170786[ebp*1+eax]
- xor edi, ebx
- and edi, edx
- mov ebp, DWORD PTR 24[esi]
- xor edi, ecx
- add eax, edi
- mov edi, ebx
- rol eax, 5
- add eax, ebx
- ; R1 17
- lea edx, DWORD PTR 3225465664[ebp*1+edx]
- xor edi, eax
- and edi, ecx
- mov ebp, DWORD PTR 44[esi]
- xor edi, ebx
- add edx, edi
- mov edi, eax
- rol edx, 9
- add edx, eax
- ; R1 18
- lea ecx, DWORD PTR 643717713[ebp*1+ecx]
- xor edi, edx
- and edi, ebx
- mov ebp, DWORD PTR [esi]
- xor edi, eax
- add ecx, edi
- mov edi, edx
- rol ecx, 14
- add ecx, edx
- ; R1 19
- lea ebx, DWORD PTR 3921069994[ebp*1+ebx]
- xor edi, ecx
- and edi, eax
- mov ebp, DWORD PTR 20[esi]
- xor edi, edx
- add ebx, edi
- mov edi, ecx
- rol ebx, 20
- add ebx, ecx
- ; R1 20
- lea eax, DWORD PTR 3593408605[ebp*1+eax]
- xor edi, ebx
- and edi, edx
- mov ebp, DWORD PTR 40[esi]
- xor edi, ecx
- add eax, edi
- mov edi, ebx
- rol eax, 5
- add eax, ebx
- ; R1 21
- lea edx, DWORD PTR 38016083[ebp*1+edx]
- xor edi, eax
- and edi, ecx
- mov ebp, DWORD PTR 60[esi]
- xor edi, ebx
- add edx, edi
- mov edi, eax
- rol edx, 9
- add edx, eax
- ; R1 22
- lea ecx, DWORD PTR 3634488961[ebp*1+ecx]
- xor edi, edx
- and edi, ebx
- mov ebp, DWORD PTR 16[esi]
- xor edi, eax
- add ecx, edi
- mov edi, edx
- rol ecx, 14
- add ecx, edx
- ; R1 23
- lea ebx, DWORD PTR 3889429448[ebp*1+ebx]
- xor edi, ecx
- and edi, eax
- mov ebp, DWORD PTR 36[esi]
- xor edi, edx
- add ebx, edi
- mov edi, ecx
- rol ebx, 20
- add ebx, ecx
- ; R1 24
- lea eax, DWORD PTR 568446438[ebp*1+eax]
- xor edi, ebx
- and edi, edx
- mov ebp, DWORD PTR 56[esi]
- xor edi, ecx
- add eax, edi
- mov edi, ebx
- rol eax, 5
- add eax, ebx
- ; R1 25
- lea edx, DWORD PTR 3275163606[ebp*1+edx]
- xor edi, eax
- and edi, ecx
- mov ebp, DWORD PTR 12[esi]
- xor edi, ebx
- add edx, edi
- mov edi, eax
- rol edx, 9
- add edx, eax
- ; R1 26
- lea ecx, DWORD PTR 4107603335[ebp*1+ecx]
- xor edi, edx
- and edi, ebx
- mov ebp, DWORD PTR 32[esi]
- xor edi, eax
- add ecx, edi
- mov edi, edx
- rol ecx, 14
- add ecx, edx
- ; R1 27
- lea ebx, DWORD PTR 1163531501[ebp*1+ebx]
- xor edi, ecx
- and edi, eax
- mov ebp, DWORD PTR 52[esi]
- xor edi, edx
- add ebx, edi
- mov edi, ecx
- rol ebx, 20
- add ebx, ecx
- ; R1 28
- lea eax, DWORD PTR 2850285829[ebp*1+eax]
- xor edi, ebx
- and edi, edx
- mov ebp, DWORD PTR 8[esi]
- xor edi, ecx
- add eax, edi
- mov edi, ebx
- rol eax, 5
- add eax, ebx
- ; R1 29
- lea edx, DWORD PTR 4243563512[ebp*1+edx]
- xor edi, eax
- and edi, ecx
- mov ebp, DWORD PTR 28[esi]
- xor edi, ebx
- add edx, edi
- mov edi, eax
- rol edx, 9
- add edx, eax
- ; R1 30
- lea ecx, DWORD PTR 1735328473[ebp*1+ecx]
- xor edi, edx
- and edi, ebx
- mov ebp, DWORD PTR 48[esi]
- xor edi, eax
- add ecx, edi
- mov edi, edx
- rol ecx, 14
- add ecx, edx
- ; R1 31
- lea ebx, DWORD PTR 2368359562[ebp*1+ebx]
- xor edi, ecx
- and edi, eax
- mov ebp, DWORD PTR 20[esi]
- xor edi, edx
- add ebx, edi
- mov edi, ecx
- rol ebx, 20
- add ebx, ecx
- ;
- ; R2 section
- ; R2 32
- xor edi, edx
- xor edi, ebx
- lea eax, DWORD PTR 4294588738[ebp*1+eax]
- add eax, edi
- rol eax, 4
- mov ebp, DWORD PTR 32[esi]
- mov edi, ebx
- ; R2 33
- lea edx, DWORD PTR 2272392833[ebp*1+edx]
- add eax, ebx
- xor edi, ecx
- xor edi, eax
- mov ebp, DWORD PTR 44[esi]
- add edx, edi
- mov edi, eax
- rol edx, 11
- add edx, eax
- ; R2 34
- xor edi, ebx
- xor edi, edx
- lea ecx, DWORD PTR 1839030562[ebp*1+ecx]
- add ecx, edi
- rol ecx, 16
- mov ebp, DWORD PTR 56[esi]
- mov edi, edx
- ; R2 35
- lea ebx, DWORD PTR 4259657740[ebp*1+ebx]
- add ecx, edx
- xor edi, eax
- xor edi, ecx
- mov ebp, DWORD PTR 4[esi]
- add ebx, edi
- mov edi, ecx
- rol ebx, 23
- add ebx, ecx
- ; R2 36
- xor edi, edx
- xor edi, ebx
- lea eax, DWORD PTR 2763975236[ebp*1+eax]
- add eax, edi
- rol eax, 4
- mov ebp, DWORD PTR 16[esi]
- mov edi, ebx
- ; R2 37
- lea edx, DWORD PTR 1272893353[ebp*1+edx]
- add eax, ebx
- xor edi, ecx
- xor edi, eax
- mov ebp, DWORD PTR 28[esi]
- add edx, edi
- mov edi, eax
- rol edx, 11
- add edx, eax
- ; R2 38
- xor edi, ebx
- xor edi, edx
- lea ecx, DWORD PTR 4139469664[ebp*1+ecx]
- add ecx, edi
- rol ecx, 16
- mov ebp, DWORD PTR 40[esi]
- mov edi, edx
- ; R2 39
- lea ebx, DWORD PTR 3200236656[ebp*1+ebx]
- add ecx, edx
- xor edi, eax
- xor edi, ecx
- mov ebp, DWORD PTR 52[esi]
- add ebx, edi
- mov edi, ecx
- rol ebx, 23
- add ebx, ecx
- ; R2 40
- xor edi, edx
- xor edi, ebx
- lea eax, DWORD PTR 681279174[ebp*1+eax]
- add eax, edi
- rol eax, 4
- mov ebp, DWORD PTR [esi]
- mov edi, ebx
- ; R2 41
- lea edx, DWORD PTR 3936430074[ebp*1+edx]
- add eax, ebx
- xor edi, ecx
- xor edi, eax
- mov ebp, DWORD PTR 12[esi]
- add edx, edi
- mov edi, eax
- rol edx, 11
- add edx, eax
- ; R2 42
- xor edi, ebx
- xor edi, edx
- lea ecx, DWORD PTR 3572445317[ebp*1+ecx]
- add ecx, edi
- rol ecx, 16
- mov ebp, DWORD PTR 24[esi]
- mov edi, edx
- ; R2 43
- lea ebx, DWORD PTR 76029189[ebp*1+ebx]
- add ecx, edx
- xor edi, eax
- xor edi, ecx
- mov ebp, DWORD PTR 36[esi]
- add ebx, edi
- mov edi, ecx
- rol ebx, 23
- add ebx, ecx
- ; R2 44
- xor edi, edx
- xor edi, ebx
- lea eax, DWORD PTR 3654602809[ebp*1+eax]
- add eax, edi
- rol eax, 4
- mov ebp, DWORD PTR 48[esi]
- mov edi, ebx
- ; R2 45
- lea edx, DWORD PTR 3873151461[ebp*1+edx]
- add eax, ebx
- xor edi, ecx
- xor edi, eax
- mov ebp, DWORD PTR 60[esi]
- add edx, edi
- mov edi, eax
- rol edx, 11
- add edx, eax
- ; R2 46
- xor edi, ebx
- xor edi, edx
- lea ecx, DWORD PTR 530742520[ebp*1+ecx]
- add ecx, edi
- rol ecx, 16
- mov ebp, DWORD PTR 8[esi]
- mov edi, edx
- ; R2 47
- lea ebx, DWORD PTR 3299628645[ebp*1+ebx]
- add ecx, edx
- xor edi, eax
- xor edi, ecx
- mov ebp, DWORD PTR [esi]
- add ebx, edi
- mov edi, -1
- rol ebx, 23
- add ebx, ecx
- ;
- ; R3 section
- ; R3 48
- xor edi, edx
- or edi, ebx
- lea eax, DWORD PTR 4096336452[ebp*1+eax]
- xor edi, ecx
- mov ebp, DWORD PTR 28[esi]
- add eax, edi
- mov edi, -1
- rol eax, 6
- xor edi, ecx
- add eax, ebx
- ; R3 49
- or edi, eax
- lea edx, DWORD PTR 1126891415[ebp*1+edx]
- xor edi, ebx
- mov ebp, DWORD PTR 56[esi]
- add edx, edi
- mov edi, -1
- rol edx, 10
- xor edi, ebx
- add edx, eax
- ; R3 50
- or edi, edx
- lea ecx, DWORD PTR 2878612391[ebp*1+ecx]
- xor edi, eax
- mov ebp, DWORD PTR 20[esi]
- add ecx, edi
- mov edi, -1
- rol ecx, 15
- xor edi, eax
- add ecx, edx
- ; R3 51
- or edi, ecx
- lea ebx, DWORD PTR 4237533241[ebp*1+ebx]
- xor edi, edx
- mov ebp, DWORD PTR 48[esi]
- add ebx, edi
- mov edi, -1
- rol ebx, 21
- xor edi, edx
- add ebx, ecx
- ; R3 52
- or edi, ebx
- lea eax, DWORD PTR 1700485571[ebp*1+eax]
- xor edi, ecx
- mov ebp, DWORD PTR 12[esi]
- add eax, edi
- mov edi, -1
- rol eax, 6
- xor edi, ecx
- add eax, ebx
- ; R3 53
- or edi, eax
- lea edx, DWORD PTR 2399980690[ebp*1+edx]
- xor edi, ebx
- mov ebp, DWORD PTR 40[esi]
- add edx, edi
- mov edi, -1
- rol edx, 10
- xor edi, ebx
- add edx, eax
- ; R3 54
- or edi, edx
- lea ecx, DWORD PTR 4293915773[ebp*1+ecx]
- xor edi, eax
- mov ebp, DWORD PTR 4[esi]
- add ecx, edi
- mov edi, -1
- rol ecx, 15
- xor edi, eax
- add ecx, edx
- ; R3 55
- or edi, ecx
- lea ebx, DWORD PTR 2240044497[ebp*1+ebx]
- xor edi, edx
- mov ebp, DWORD PTR 32[esi]
- add ebx, edi
- mov edi, -1
- rol ebx, 21
- xor edi, edx
- add ebx, ecx
- ; R3 56
- or edi, ebx
- lea eax, DWORD PTR 1873313359[ebp*1+eax]
- xor edi, ecx
- mov ebp, DWORD PTR 60[esi]
- add eax, edi
- mov edi, -1
- rol eax, 6
- xor edi, ecx
- add eax, ebx
- ; R3 57
- or edi, eax
- lea edx, DWORD PTR 4264355552[ebp*1+edx]
- xor edi, ebx
- mov ebp, DWORD PTR 24[esi]
- add edx, edi
- mov edi, -1
- rol edx, 10
- xor edi, ebx
- add edx, eax
- ; R3 58
- or edi, edx
- lea ecx, DWORD PTR 2734768916[ebp*1+ecx]
- xor edi, eax
- mov ebp, DWORD PTR 52[esi]
- add ecx, edi
- mov edi, -1
- rol ecx, 15
- xor edi, eax
- add ecx, edx
- ; R3 59
- or edi, ecx
- lea ebx, DWORD PTR 1309151649[ebp*1+ebx]
- xor edi, edx
- mov ebp, DWORD PTR 16[esi]
- add ebx, edi
- mov edi, -1
- rol ebx, 21
- xor edi, edx
- add ebx, ecx
- ; R3 60
- or edi, ebx
- lea eax, DWORD PTR 4149444226[ebp*1+eax]
- xor edi, ecx
- mov ebp, DWORD PTR 44[esi]
- add eax, edi
- mov edi, -1
- rol eax, 6
- xor edi, ecx
- add eax, ebx
- ; R3 61
- or edi, eax
- lea edx, DWORD PTR 3174756917[ebp*1+edx]
- xor edi, ebx
- mov ebp, DWORD PTR 8[esi]
- add edx, edi
- mov edi, -1
- rol edx, 10
- xor edi, ebx
- add edx, eax
- ; R3 62
- or edi, edx
- lea ecx, DWORD PTR 718787259[ebp*1+ecx]
- xor edi, eax
- mov ebp, DWORD PTR 36[esi]
- add ecx, edi
- mov edi, -1
- rol ecx, 15
- xor edi, eax
- add ecx, edx
- ; R3 63
- or edi, ecx
- lea ebx, DWORD PTR 3951481745[ebp*1+ebx]
- xor edi, edx
- mov ebp, DWORD PTR 24[esp]
- add ebx, edi
- add esi, 64
- rol ebx, 21
- mov edi, DWORD PTR [ebp]
- add ebx, ecx
- add eax, edi
- mov edi, DWORD PTR 4[ebp]
- add ebx, edi
- mov edi, DWORD PTR 8[ebp]
- add ecx, edi
- mov edi, DWORD PTR 12[ebp]
- add edx, edi
- mov DWORD PTR [ebp],eax
- mov DWORD PTR 4[ebp],ebx
- mov edi, DWORD PTR [esp]
- mov DWORD PTR 8[ebp],ecx
- mov DWORD PTR 12[ebp],edx
- cmp edi, esi
- jge L000start
- pop eax
- pop ebx
- pop ebp
- pop edi
- pop esi
- ret
-_md5_block_asm_host_order ENDP
-_TEXT ENDS
-END
+++ /dev/null
- ; Don't even think of reading this code
- ; It was automatically generated by rc4-586.pl
- ; Which is a perl program used to generate the x86 assember for
- ; any of elf, a.out, BSDI,Win32, or Solaris
- ; eric <eay@cryptsoft.com>
- ;
- TITLE rc4-586.asm
- .386
-.model FLAT
-_TEXT SEGMENT
-PUBLIC _RC4
-
-_RC4 PROC NEAR
- ;
- push ebp
- push ebx
- mov ebp, DWORD PTR 12[esp]
- mov ebx, DWORD PTR 16[esp]
- push esi
- push edi
- mov ecx, DWORD PTR [ebp]
- mov edx, DWORD PTR 4[ebp]
- mov esi, DWORD PTR 28[esp]
- inc ecx
- sub esp, 12
- add ebp, 8
- and ecx, 255
- lea ebx, DWORD PTR [esi+ebx-8]
- mov edi, DWORD PTR 44[esp]
- mov DWORD PTR 8[esp],ebx
- mov eax, DWORD PTR [ecx*4+ebp]
- cmp ebx, esi
- jl $L000end
-L001start:
- add esi, 8
- ; Round 0
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- mov eax, DWORD PTR [ecx*4+ebp]
- mov BYTE PTR [esp], bl
- ; Round 1
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- mov eax, DWORD PTR [ecx*4+ebp]
- mov BYTE PTR 1[esp],bl
- ; Round 2
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- mov eax, DWORD PTR [ecx*4+ebp]
- mov BYTE PTR 2[esp],bl
- ; Round 3
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- mov eax, DWORD PTR [ecx*4+ebp]
- mov BYTE PTR 3[esp],bl
- ; Round 4
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- mov eax, DWORD PTR [ecx*4+ebp]
- mov BYTE PTR 4[esp],bl
- ; Round 5
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- mov eax, DWORD PTR [ecx*4+ebp]
- mov BYTE PTR 5[esp],bl
- ; Round 6
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- mov eax, DWORD PTR [ecx*4+ebp]
- mov BYTE PTR 6[esp],bl
- ; Round 7
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- add edi, 8
- mov BYTE PTR 7[esp],bl
- ; apply the cipher text
- mov eax, DWORD PTR [esp]
- mov ebx, DWORD PTR [esi-8]
- xor eax, ebx
- mov ebx, DWORD PTR [esi-4]
- mov DWORD PTR [edi-8],eax
- mov eax, DWORD PTR 4[esp]
- xor eax, ebx
- mov ebx, DWORD PTR 8[esp]
- mov DWORD PTR [edi-4],eax
- mov eax, DWORD PTR [ecx*4+ebp]
- cmp esi, ebx
- jle L001start
-$L000end:
- ; Round 0
- add ebx, 8
- inc esi
- cmp ebx, esi
- jl $L002finished
- mov DWORD PTR 8[esp],ebx
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- mov eax, DWORD PTR [ecx*4+ebp]
- mov bh, BYTE PTR [esi-1]
- xor bl, bh
- mov BYTE PTR [edi], bl
- ; Round 1
- mov ebx, DWORD PTR 8[esp]
- cmp ebx, esi
- jle $L002finished
- inc esi
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- mov eax, DWORD PTR [ecx*4+ebp]
- mov bh, BYTE PTR [esi-1]
- xor bl, bh
- mov BYTE PTR 1[edi],bl
- ; Round 2
- mov ebx, DWORD PTR 8[esp]
- cmp ebx, esi
- jle $L002finished
- inc esi
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- mov eax, DWORD PTR [ecx*4+ebp]
- mov bh, BYTE PTR [esi-1]
- xor bl, bh
- mov BYTE PTR 2[edi],bl
- ; Round 3
- mov ebx, DWORD PTR 8[esp]
- cmp ebx, esi
- jle $L002finished
- inc esi
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- mov eax, DWORD PTR [ecx*4+ebp]
- mov bh, BYTE PTR [esi-1]
- xor bl, bh
- mov BYTE PTR 3[edi],bl
- ; Round 4
- mov ebx, DWORD PTR 8[esp]
- cmp ebx, esi
- jle $L002finished
- inc esi
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- mov eax, DWORD PTR [ecx*4+ebp]
- mov bh, BYTE PTR [esi-1]
- xor bl, bh
- mov BYTE PTR 4[edi],bl
- ; Round 5
- mov ebx, DWORD PTR 8[esp]
- cmp ebx, esi
- jle $L002finished
- inc esi
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- mov eax, DWORD PTR [ecx*4+ebp]
- mov bh, BYTE PTR [esi-1]
- xor bl, bh
- mov BYTE PTR 5[edi],bl
- ; Round 6
- mov ebx, DWORD PTR 8[esp]
- cmp ebx, esi
- jle $L002finished
- inc esi
- add edx, eax
- and edx, 255
- inc ecx
- mov ebx, DWORD PTR [edx*4+ebp]
- mov DWORD PTR [ecx*4+ebp-4],ebx
- add ebx, eax
- and ecx, 255
- and ebx, 255
- mov DWORD PTR [edx*4+ebp],eax
- nop
- mov ebx, DWORD PTR [ebx*4+ebp]
- mov bh, BYTE PTR [esi-1]
- xor bl, bh
- mov BYTE PTR 6[edi],bl
-$L002finished:
- dec ecx
- add esp, 12
- mov DWORD PTR [ebp-4],edx
- mov BYTE PTR [ebp-8],cl
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-_RC4 ENDP
-_TEXT ENDS
-END
+++ /dev/null
- ; Don't even think of reading this code
- ; It was automatically generated by rc5-586.pl
- ; Which is a perl program used to generate the x86 assember for
- ; any of elf, a.out, BSDI,Win32, or Solaris
- ; eric <eay@cryptsoft.com>
- ;
- TITLE rc5-586.asm
- .386
-.model FLAT
-_TEXT SEGMENT
-PUBLIC _RC5_32_encrypt
-
-_RC5_32_encrypt PROC NEAR
- ;
- push ebp
- push esi
- push edi
- mov edx, DWORD PTR 16[esp]
- mov ebp, DWORD PTR 20[esp]
- ; Load the 2 words
- mov edi, DWORD PTR [edx]
- mov esi, DWORD PTR 4[edx]
- push ebx
- mov ebx, DWORD PTR [ebp]
- add edi, DWORD PTR 4[ebp]
- add esi, DWORD PTR 8[ebp]
- xor edi, esi
- mov eax, DWORD PTR 12[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 16[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- xor edi, esi
- mov eax, DWORD PTR 20[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 24[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- xor edi, esi
- mov eax, DWORD PTR 28[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 32[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- xor edi, esi
- mov eax, DWORD PTR 36[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 40[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- xor edi, esi
- mov eax, DWORD PTR 44[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 48[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- xor edi, esi
- mov eax, DWORD PTR 52[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 56[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- xor edi, esi
- mov eax, DWORD PTR 60[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 64[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- xor edi, esi
- mov eax, DWORD PTR 68[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 72[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- cmp ebx, 8
- je $L000rc5_exit
- xor edi, esi
- mov eax, DWORD PTR 76[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 80[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- xor edi, esi
- mov eax, DWORD PTR 84[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 88[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- xor edi, esi
- mov eax, DWORD PTR 92[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 96[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- xor edi, esi
- mov eax, DWORD PTR 100[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 104[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- cmp ebx, 12
- je $L000rc5_exit
- xor edi, esi
- mov eax, DWORD PTR 108[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 112[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- xor edi, esi
- mov eax, DWORD PTR 116[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 120[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- xor edi, esi
- mov eax, DWORD PTR 124[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 128[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
- xor edi, esi
- mov eax, DWORD PTR 132[ebp]
- mov ecx, esi
- rol edi, cl
- add edi, eax
- xor esi, edi
- mov eax, DWORD PTR 136[ebp]
- mov ecx, edi
- rol esi, cl
- add esi, eax
-$L000rc5_exit:
- mov DWORD PTR [edx],edi
- mov DWORD PTR 4[edx],esi
- pop ebx
- pop edi
- pop esi
- pop ebp
- ret
-_RC5_32_encrypt ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _RC5_32_decrypt
-
-_RC5_32_decrypt PROC NEAR
- ;
- push ebp
- push esi
- push edi
- mov edx, DWORD PTR 16[esp]
- mov ebp, DWORD PTR 20[esp]
- ; Load the 2 words
- mov edi, DWORD PTR [edx]
- mov esi, DWORD PTR 4[edx]
- push ebx
- mov ebx, DWORD PTR [ebp]
- cmp ebx, 12
- je $L001rc5_dec_12
- cmp ebx, 8
- je $L002rc5_dec_8
- mov eax, DWORD PTR 136[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 132[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
- mov eax, DWORD PTR 128[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 124[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
- mov eax, DWORD PTR 120[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 116[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
- mov eax, DWORD PTR 112[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 108[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
-$L001rc5_dec_12:
- mov eax, DWORD PTR 104[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 100[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
- mov eax, DWORD PTR 96[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 92[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
- mov eax, DWORD PTR 88[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 84[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
- mov eax, DWORD PTR 80[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 76[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
-$L002rc5_dec_8:
- mov eax, DWORD PTR 72[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 68[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
- mov eax, DWORD PTR 64[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 60[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
- mov eax, DWORD PTR 56[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 52[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
- mov eax, DWORD PTR 48[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 44[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
- mov eax, DWORD PTR 40[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 36[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
- mov eax, DWORD PTR 32[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 28[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
- mov eax, DWORD PTR 24[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 20[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
- mov eax, DWORD PTR 16[ebp]
- sub esi, eax
- mov ecx, edi
- ror esi, cl
- xor esi, edi
- mov eax, DWORD PTR 12[ebp]
- sub edi, eax
- mov ecx, esi
- ror edi, cl
- xor edi, esi
- sub esi, DWORD PTR 8[ebp]
- sub edi, DWORD PTR 4[ebp]
-L003rc5_exit:
- mov DWORD PTR [edx],edi
- mov DWORD PTR 4[edx],esi
- pop ebx
- pop edi
- pop esi
- pop ebp
- ret
-_RC5_32_decrypt ENDP
-_TEXT ENDS
-_TEXT SEGMENT
-PUBLIC _RC5_32_cbc_encrypt
-
-_RC5_32_cbc_encrypt PROC NEAR
- ;
- push ebp
- push ebx
- push esi
- push edi
- mov ebp, DWORD PTR 28[esp]
- ; getting iv ptr from parameter 4
- mov ebx, DWORD PTR 36[esp]
- mov esi, DWORD PTR [ebx]
- mov edi, DWORD PTR 4[ebx]
- push edi
- push esi
- push edi
- push esi
- mov ebx, esp
- mov esi, DWORD PTR 36[esp]
- mov edi, DWORD PTR 40[esp]
- ; getting encrypt flag from parameter 5
- mov ecx, DWORD PTR 56[esp]
- ; get and push parameter 3
- mov eax, DWORD PTR 48[esp]
- push eax
- push ebx
- cmp ecx, 0
- jz $L004decrypt
- and ebp, 4294967288
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- jz $L005encrypt_finish
-L006encrypt_loop:
- mov ecx, DWORD PTR [esi]
- mov edx, DWORD PTR 4[esi]
- xor eax, ecx
- xor ebx, edx
- mov DWORD PTR 8[esp],eax
- mov DWORD PTR 12[esp],ebx
- call _RC5_32_encrypt
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- mov DWORD PTR [edi],eax
- mov DWORD PTR 4[edi],ebx
- add esi, 8
- add edi, 8
- sub ebp, 8
- jnz L006encrypt_loop
-$L005encrypt_finish:
- mov ebp, DWORD PTR 52[esp]
- and ebp, 7
- jz $L007finish
- xor ecx, ecx
- xor edx, edx
- mov ebp, DWORD PTR $L008cbc_enc_jmp_table[ebp*4]
- jmp ebp
-L009ej7:
- mov dh, BYTE PTR 6[esi]
- shl edx, 8
-L010ej6:
- mov dh, BYTE PTR 5[esi]
-L011ej5:
- mov dl, BYTE PTR 4[esi]
-L012ej4:
- mov ecx, DWORD PTR [esi]
- jmp $L013ejend
-L014ej3:
- mov ch, BYTE PTR 2[esi]
- shl ecx, 8
-L015ej2:
- mov ch, BYTE PTR 1[esi]
-L016ej1:
- mov cl, BYTE PTR [esi]
-$L013ejend:
- xor eax, ecx
- xor ebx, edx
- mov DWORD PTR 8[esp],eax
- mov DWORD PTR 12[esp],ebx
- call _RC5_32_encrypt
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- mov DWORD PTR [edi],eax
- mov DWORD PTR 4[edi],ebx
- jmp $L007finish
-$L004decrypt:
- and ebp, 4294967288
- mov eax, DWORD PTR 16[esp]
- mov ebx, DWORD PTR 20[esp]
- jz $L017decrypt_finish
-L018decrypt_loop:
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- mov DWORD PTR 8[esp],eax
- mov DWORD PTR 12[esp],ebx
- call _RC5_32_decrypt
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- mov ecx, DWORD PTR 16[esp]
- mov edx, DWORD PTR 20[esp]
- xor ecx, eax
- xor edx, ebx
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- mov DWORD PTR [edi],ecx
- mov DWORD PTR 4[edi],edx
- mov DWORD PTR 16[esp],eax
- mov DWORD PTR 20[esp],ebx
- add esi, 8
- add edi, 8
- sub ebp, 8
- jnz L018decrypt_loop
-$L017decrypt_finish:
- mov ebp, DWORD PTR 52[esp]
- and ebp, 7
- jz $L007finish
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
- mov DWORD PTR 8[esp],eax
- mov DWORD PTR 12[esp],ebx
- call _RC5_32_decrypt
- mov eax, DWORD PTR 8[esp]
- mov ebx, DWORD PTR 12[esp]
- mov ecx, DWORD PTR 16[esp]
- mov edx, DWORD PTR 20[esp]
- xor ecx, eax
- xor edx, ebx
- mov eax, DWORD PTR [esi]
- mov ebx, DWORD PTR 4[esi]
-L019dj7:
- ror edx, 16
- mov BYTE PTR 6[edi],dl
- shr edx, 16
-L020dj6:
- mov BYTE PTR 5[edi],dh
-L021dj5:
- mov BYTE PTR 4[edi],dl
-L022dj4:
- mov DWORD PTR [edi],ecx
- jmp $L023djend
-L024dj3:
- ror ecx, 16
- mov BYTE PTR 2[edi],cl
- shl ecx, 16
-L025dj2:
- mov BYTE PTR 1[esi],ch
-L026dj1:
- mov BYTE PTR [esi], cl
-$L023djend:
- jmp $L007finish
-$L007finish:
- mov ecx, DWORD PTR 60[esp]
- add esp, 24
- mov DWORD PTR [ecx],eax
- mov DWORD PTR 4[ecx],ebx
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-$L008cbc_enc_jmp_table:
- DD 0
- DD L016ej1
- DD L015ej2
- DD L014ej3
- DD L012ej4
- DD L011ej5
- DD L010ej6
- DD L009ej7
-L027cbc_dec_jmp_table:
- DD 0
- DD L026dj1
- DD L025dj2
- DD L024dj3
- DD L022dj4
- DD L021dj5
- DD L020dj6
- DD L019dj7
-_RC5_32_cbc_encrypt ENDP
-_TEXT ENDS
-END
+++ /dev/null
- ; Don't even think of reading this code
- ; It was automatically generated by rmd-586.pl
- ; Which is a perl program used to generate the x86 assember for
- ; any of elf, a.out, BSDI,Win32, or Solaris
- ; eric <eay@cryptsoft.com>
- ;
- TITLE rmd-586.asm
- .386
-.model FLAT
-_TEXT SEGMENT
-PUBLIC _ripemd160_block_asm_host_order
-
-_ripemd160_block_asm_host_order PROC NEAR
- mov edx, DWORD PTR 4[esp]
- mov eax, DWORD PTR 8[esp]
- push esi
- mov ecx, DWORD PTR [edx]
- push edi
- mov esi, DWORD PTR 4[edx]
- push ebp
- mov edi, DWORD PTR 8[edx]
- push ebx
- sub esp, 108
-L000start:
- ;
- mov ebx, DWORD PTR [eax]
- mov ebp, DWORD PTR 4[eax]
- mov DWORD PTR [esp],ebx
- mov DWORD PTR 4[esp],ebp
- mov ebx, DWORD PTR 8[eax]
- mov ebp, DWORD PTR 12[eax]
- mov DWORD PTR 8[esp],ebx
- mov DWORD PTR 12[esp],ebp
- mov ebx, DWORD PTR 16[eax]
- mov ebp, DWORD PTR 20[eax]
- mov DWORD PTR 16[esp],ebx
- mov DWORD PTR 20[esp],ebp
- mov ebx, DWORD PTR 24[eax]
- mov ebp, DWORD PTR 28[eax]
- mov DWORD PTR 24[esp],ebx
- mov DWORD PTR 28[esp],ebp
- mov ebx, DWORD PTR 32[eax]
- mov ebp, DWORD PTR 36[eax]
- mov DWORD PTR 32[esp],ebx
- mov DWORD PTR 36[esp],ebp
- mov ebx, DWORD PTR 40[eax]
- mov ebp, DWORD PTR 44[eax]
- mov DWORD PTR 40[esp],ebx
- mov DWORD PTR 44[esp],ebp
- mov ebx, DWORD PTR 48[eax]
- mov ebp, DWORD PTR 52[eax]
- mov DWORD PTR 48[esp],ebx
- mov DWORD PTR 52[esp],ebp
- mov ebx, DWORD PTR 56[eax]
- mov ebp, DWORD PTR 60[eax]
- mov DWORD PTR 56[esp],ebx
- mov DWORD PTR 60[esp],ebp
- mov eax, edi
- mov ebx, DWORD PTR 12[edx]
- mov ebp, DWORD PTR 16[edx]
- ; 0
- xor eax, ebx
- mov edx, DWORD PTR [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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 60[esp]
- xor eax, esi
- add ecx, eax
- mov eax, -1
- rol edi, 10
- add ecx, edx
- mov edx, DWORD PTR 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 PTR 16[esp]
- rol esi, 10
- lea ebp, DWORD PTR 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 PTR 52[esp]
- rol ecx, 10
- lea ebx, DWORD PTR 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 PTR 4[esp]
- rol ebp, 10
- lea edi, DWORD PTR 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 PTR 40[esp]
- rol ebx, 10
- lea esi, DWORD PTR 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 PTR 24[esp]
- rol edi, 10
- lea ecx, DWORD PTR 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 PTR 60[esp]
- rol esi, 10
- lea ebp, DWORD PTR 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 PTR 12[esp]
- rol ecx, 10
- lea ebx, DWORD PTR 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 PTR 48[esp]
- rol ebp, 10
- lea edi, DWORD PTR 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 PTR [esp]
- rol ebx, 10
- lea esi, DWORD PTR 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 PTR 36[esp]
- rol edi, 10
- lea ecx, DWORD PTR 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 PTR 20[esp]
- rol esi, 10
- lea ebp, DWORD PTR 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 PTR 8[esp]
- rol ecx, 10
- lea ebx, DWORD PTR 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 PTR 56[esp]
- rol ebp, 10
- lea edi, DWORD PTR 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 PTR 44[esp]
- rol ebx, 10
- lea esi, DWORD PTR 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 PTR 32[esp]
- rol edi, 10
- lea ecx, DWORD PTR 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, DWORD PTR 1518500249[eax*1+ebp]
- sub edx, ecx
- rol ebp, 12
- add ebp, ebx
- ; 32
- mov eax, DWORD PTR 12[esp]
- or edx, ebp
- add ebx, eax
- xor edx, esi
- mov eax, -1
- rol ecx, 10
- lea ebx, DWORD PTR 1859775393[edx*1+ebx]
- sub eax, ebp
- rol ebx, 11
- add ebx, edi
- ; 33
- mov edx, DWORD PTR 40[esp]
- or eax, ebx
- add edi, edx
- xor eax, ecx
- mov edx, -1
- rol ebp, 10
- lea edi, DWORD PTR 1859775393[eax*1+edi]
- sub edx, ebx
- rol edi, 13
- add edi, esi
- ; 34
- mov eax, DWORD PTR 56[esp]
- or edx, edi
- add esi, eax
- xor edx, ebp
- mov eax, -1
- rol ebx, 10
- lea esi, DWORD PTR 1859775393[edx*1+esi]
- sub eax, edi
- rol esi, 6
- add esi, ecx
- ; 35
- mov edx, DWORD PTR 16[esp]
- or eax, esi
- add ecx, edx
- xor eax, ebx
- mov edx, -1
- rol edi, 10
- lea ecx, DWORD PTR 1859775393[eax*1+ecx]
- sub edx, esi
- rol ecx, 7
- add ecx, ebp
- ; 36
- mov eax, DWORD PTR 36[esp]
- or edx, ecx
- add ebp, eax
- xor edx, edi
- mov eax, -1
- rol esi, 10
- lea ebp, DWORD PTR 1859775393[edx*1+ebp]
- sub eax, ecx
- rol ebp, 14
- add ebp, ebx
- ; 37
- mov edx, DWORD PTR 60[esp]
- or eax, ebp
- add ebx, edx
- xor eax, esi
- mov edx, -1
- rol ecx, 10
- lea ebx, DWORD PTR 1859775393[eax*1+ebx]
- sub edx, ebp
- rol ebx, 9
- add ebx, edi
- ; 38
- mov eax, DWORD PTR 32[esp]
- or edx, ebx
- add edi, eax
- xor edx, ecx
- mov eax, -1
- rol ebp, 10
- lea edi, DWORD PTR 1859775393[edx*1+edi]
- sub eax, ebx
- rol edi, 13
- add edi, esi
- ; 39
- mov edx, DWORD PTR 4[esp]
- or eax, edi
- add esi, edx
- xor eax, ebp
- mov edx, -1
- rol ebx, 10
- lea esi, DWORD PTR 1859775393[eax*1+esi]
- sub edx, edi
- rol esi, 15
- add esi, ecx
- ; 40
- mov eax, DWORD PTR 8[esp]
- or edx, esi
- add ecx, eax
- xor edx, ebx
- mov eax, -1
- rol edi, 10
- lea ecx, DWORD PTR 1859775393[edx*1+ecx]
- sub eax, esi
- rol ecx, 14
- add ecx, ebp
- ; 41
- mov edx, DWORD PTR 28[esp]
- or eax, ecx
- add ebp, edx
- xor eax, edi
- mov edx, -1
- rol esi, 10
- lea ebp, DWORD PTR 1859775393[eax*1+ebp]
- sub edx, ecx
- rol ebp, 8
- add ebp, ebx
- ; 42
- mov eax, DWORD PTR [esp]
- or edx, ebp
- add ebx, eax
- xor edx, esi
- mov eax, -1
- rol ecx, 10
- lea ebx, DWORD PTR 1859775393[edx*1+ebx]
- sub eax, ebp
- rol ebx, 13
- add ebx, edi
- ; 43
- mov edx, DWORD PTR 24[esp]
- or eax, ebx
- add edi, edx
- xor eax, ecx
- mov edx, -1
- rol ebp, 10
- lea edi, DWORD PTR 1859775393[eax*1+edi]
- sub edx, ebx
- rol edi, 6
- add edi, esi
- ; 44
- mov eax, DWORD PTR 52[esp]
- or edx, edi
- add esi, eax
- xor edx, ebp
- mov eax, -1
- rol ebx, 10
- lea esi, DWORD PTR 1859775393[edx*1+esi]
- sub eax, edi
- rol esi, 5
- add esi, ecx
- ; 45
- mov edx, DWORD PTR 44[esp]
- or eax, esi
- add ecx, edx
- xor eax, ebx
- mov edx, -1
- rol edi, 10
- lea ecx, DWORD PTR 1859775393[eax*1+ecx]
- sub edx, esi
- rol ecx, 12
- add ecx, ebp
- ; 46
- mov eax, DWORD PTR 20[esp]
- or edx, ecx
- add ebp, eax
- xor edx, edi
- mov eax, -1
- rol esi, 10
- lea ebp, DWORD PTR 1859775393[edx*1+ebp]
- sub eax, ecx
- rol ebp, 7
- add ebp, ebx
- ; 47
- mov edx, DWORD PTR 48[esp]
- or eax, ebp
- add ebx, edx
- xor eax, esi
- mov edx, -1
- rol ecx, 10
- lea ebx, DWORD PTR 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 PTR 4[esp]
- rol ebp, 10
- lea edi, DWORD PTR 2400959708[edx+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 PTR 36[esp]
- rol ebx, 10
- lea esi, DWORD PTR 2400959708[edx+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 PTR 44[esp]
- rol edi, 10
- lea ecx, DWORD PTR 2400959708[edx+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 PTR 40[esp]
- rol esi, 10
- lea ebp, DWORD PTR 2400959708[edx+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 PTR [esp]
- rol ecx, 10
- lea ebx, DWORD PTR 2400959708[edx+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 PTR 32[esp]
- rol ebp, 10
- lea edi, DWORD PTR 2400959708[edx+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 PTR 48[esp]
- rol ebx, 10
- lea esi, DWORD PTR 2400959708[edx+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 PTR 16[esp]
- rol edi, 10
- lea ecx, DWORD PTR 2400959708[edx+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 PTR 52[esp]
- rol esi, 10
- lea ebp, DWORD PTR 2400959708[edx+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 PTR 12[esp]
- rol ecx, 10
- lea ebx, DWORD PTR 2400959708[edx+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 PTR 28[esp]
- rol ebp, 10
- lea edi, DWORD PTR 2400959708[edx+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 PTR 60[esp]
- rol ebx, 10
- lea esi, DWORD PTR 2400959708[edx+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 PTR 56[esp]
- rol edi, 10
- lea ecx, DWORD PTR 2400959708[edx+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 PTR 20[esp]
- rol esi, 10
- lea ebp, DWORD PTR 2400959708[edx+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 PTR 24[esp]
- rol ecx, 10
- lea ebx, DWORD PTR 2400959708[edx+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 PTR 8[esp]
- rol ebp, 10
- lea edi, DWORD PTR 2400959708[edx+edi]
- mov edx, -1
- add edi, eax
- sub edx, ebp
- rol edi, 12
- add edi, esi
- ; 64
- mov eax, DWORD PTR 16[esp]
- or edx, ebx
- add esi, eax
- xor edx, edi
- mov eax, -1
- rol ebx, 10
- lea esi, DWORD PTR 2840853838[edx*1+esi]
- sub eax, ebx
- rol esi, 9
- add esi, ecx
- ; 65
- mov edx, DWORD PTR [esp]
- or eax, edi
- add ecx, edx
- xor eax, esi
- mov edx, -1
- rol edi, 10
- lea ecx, DWORD PTR 2840853838[eax*1+ecx]
- sub edx, edi
- rol ecx, 15
- add ecx, ebp
- ; 66
- mov eax, DWORD PTR 20[esp]
- or edx, esi
- add ebp, eax
- xor edx, ecx
- mov eax, -1
- rol esi, 10
- lea ebp, DWORD PTR 2840853838[edx*1+ebp]
- sub eax, esi
- rol ebp, 5
- add ebp, ebx
- ; 67
- mov edx, DWORD PTR 36[esp]
- or eax, ecx
- add ebx, edx
- xor eax, ebp
- mov edx, -1
- rol ecx, 10
- lea ebx, DWORD PTR 2840853838[eax*1+ebx]
- sub edx, ecx
- rol ebx, 11
- add ebx, edi
- ; 68
- mov eax, DWORD PTR 28[esp]
- or edx, ebp
- add edi, eax
- xor edx, ebx
- mov eax, -1
- rol ebp, 10
- lea edi, DWORD PTR 2840853838[edx*1+edi]
- sub eax, ebp
- rol edi, 6
- add edi, esi
- ; 69
- mov edx, DWORD PTR 48[esp]
- or eax, ebx
- add esi, edx
- xor eax, edi
- mov edx, -1
- rol ebx, 10
- lea esi, DWORD PTR 2840853838[eax*1+esi]
- sub edx, ebx
- rol esi, 8
- add esi, ecx
- ; 70
- mov eax, DWORD PTR 8[esp]
- or edx, edi
- add ecx, eax
- xor edx, esi
- mov eax, -1
- rol edi, 10
- lea ecx, DWORD PTR 2840853838[edx*1+ecx]
- sub eax, edi
- rol ecx, 13
- add ecx, ebp
- ; 71
- mov edx, DWORD PTR 40[esp]
- or eax, esi
- add ebp, edx
- xor eax, ecx
- mov edx, -1
- rol esi, 10
- lea ebp, DWORD PTR 2840853838[eax*1+ebp]
- sub edx, esi
- rol ebp, 12
- add ebp, ebx
- ; 72
- mov eax, DWORD PTR 56[esp]
- or edx, ecx
- add ebx, eax
- xor edx, ebp
- mov eax, -1
- rol ecx, 10
- lea ebx, DWORD PTR 2840853838[edx*1+ebx]
- sub eax, ecx
- rol ebx, 5
- add ebx, edi
- ; 73
- mov edx, DWORD PTR 4[esp]
- or eax, ebp
- add edi, edx
- xor eax, ebx
- mov edx, -1
- rol ebp, 10
- lea edi, DWORD PTR 2840853838[eax*1+edi]
- sub edx, ebp
- rol edi, 12
- add edi, esi
- ; 74
- mov eax, DWORD PTR 12[esp]
- or edx, ebx
- add esi, eax
- xor edx, edi
- mov eax, -1
- rol ebx, 10
- lea esi, DWORD PTR 2840853838[edx*1+esi]
- sub eax, ebx
- rol esi, 13
- add esi, ecx
- ; 75
- mov edx, DWORD PTR 32[esp]
- or eax, edi
- add ecx, edx
- xor eax, esi
- mov edx, -1
- rol edi, 10
- lea ecx, DWORD PTR 2840853838[eax*1+ecx]
- sub edx, edi
- rol ecx, 14
- add ecx, ebp
- ; 76
- mov eax, DWORD PTR 44[esp]
- or edx, esi
- add ebp, eax
- xor edx, ecx
- mov eax, -1
- rol esi, 10
- lea ebp, DWORD PTR 2840853838[edx*1+ebp]
- sub eax, esi
- rol ebp, 11
- add ebp, ebx
- ; 77
- mov edx, DWORD PTR 24[esp]
- or eax, ecx
- add ebx, edx
- xor eax, ebp
- mov edx, -1
- rol ecx, 10
- lea ebx, DWORD PTR 2840853838[eax*1+ebx]
- sub edx, ecx
- rol ebx, 8
- add ebx, edi
- ; 78
- mov eax, DWORD PTR 60[esp]
- or edx, ebp
- add edi, eax
- xor edx, ebx
- mov eax, -1
- rol ebp, 10
- lea edi, DWORD PTR 2840853838[edx*1+edi]
- sub eax, ebp
- rol edi, 5
- add edi, esi
- ; 79
- mov edx, DWORD PTR 52[esp]
- or eax, ebx
- add esi, edx
- xor eax, edi
- mov edx, DWORD PTR 128[esp]
- rol ebx, 10
- lea esi, DWORD PTR 2840853838[eax*1+esi]
- mov DWORD PTR 64[esp],ecx
- rol esi, 6
- add esi, ecx
- mov ecx, DWORD PTR [edx]
- mov DWORD PTR 68[esp],esi
- mov DWORD PTR 72[esp],edi
- mov esi, DWORD PTR 4[edx]
- mov DWORD PTR 76[esp],ebx
- mov edi, DWORD PTR 8[edx]
- mov DWORD PTR 80[esp],ebp
- mov ebx, DWORD PTR 12[edx]
- mov ebp, DWORD PTR 16[edx]
- ; 80
- mov edx, -1
- sub edx, ebx
- mov eax, DWORD PTR 20[esp]
- or edx, edi
- add ecx, eax
- xor edx, esi
- mov eax, -1
- rol edi, 10
- lea ecx, DWORD PTR 1352829926[edx*1+ecx]
- sub eax, edi
- rol ecx, 8
- add ecx, ebp
- ; 81
- mov edx, DWORD PTR 56[esp]
- or eax, esi
- add ebp, edx
- xor eax, ecx
- mov edx, -1
- rol esi, 10
- lea ebp, DWORD PTR 1352829926[eax*1+ebp]
- sub edx, esi
- rol ebp, 9
- add ebp, ebx
- ; 82
- mov eax, DWORD PTR 28[esp]
- or edx, ecx
- add ebx, eax
- xor edx, ebp
- mov eax, -1
- rol ecx, 10
- lea ebx, DWORD PTR 1352829926[edx*1+ebx]
- sub eax, ecx
- rol ebx, 9
- add ebx, edi
- ; 83
- mov edx, DWORD PTR [esp]
- or eax, ebp
- add edi, edx
- xor eax, ebx
- mov edx, -1
- rol ebp, 10
- lea edi, DWORD PTR 1352829926[eax*1+edi]
- sub edx, ebp
- rol edi, 11
- add edi, esi
- ; 84
- mov eax, DWORD PTR 36[esp]
- or edx, ebx
- add esi, eax
- xor edx, edi
- mov eax, -1
- rol ebx, 10
- lea esi, DWORD PTR 1352829926[edx*1+esi]
- sub eax, ebx
- rol esi, 13
- add esi, ecx
- ; 85
- mov edx, DWORD PTR 8[esp]
- or eax, edi
- add ecx, edx
- xor eax, esi
- mov edx, -1
- rol edi, 10
- lea ecx, DWORD PTR 1352829926[eax*1+ecx]
- sub edx, edi
- rol ecx, 15
- add ecx, ebp
- ; 86
- mov eax, DWORD PTR 44[esp]
- or edx, esi
- add ebp, eax
- xor edx, ecx
- mov eax, -1
- rol esi, 10
- lea ebp, DWORD PTR 1352829926[edx*1+ebp]
- sub eax, esi
- rol ebp, 15
- add ebp, ebx
- ; 87
- mov edx, DWORD PTR 16[esp]
- or eax, ecx
- add ebx, edx
- xor eax, ebp
- mov edx, -1
- rol ecx, 10
- lea ebx, DWORD PTR 1352829926[eax*1+ebx]
- sub edx, ecx
- rol ebx, 5
- add ebx, edi
- ; 88
- mov eax, DWORD PTR 52[esp]
- or edx, ebp
- add edi, eax
- xor edx, ebx
- mov eax, -1
- rol ebp, 10
- lea edi, DWORD PTR 1352829926[edx*1+edi]
- sub eax, ebp
- rol edi, 7
- add edi, esi
- ; 89
- mov edx, DWORD PTR 24[esp]
- or eax, ebx
- add esi, edx
- xor eax, edi
- mov edx, -1
- rol ebx, 10
- lea esi, DWORD PTR 1352829926[eax*1+esi]
- sub edx, ebx
- rol esi, 7
- add esi, ecx
- ; 90
- mov eax, DWORD PTR 60[esp]
- or edx, edi
- add ecx, eax
- xor edx, esi
- mov eax, -1
- rol edi, 10
- lea ecx, DWORD PTR 1352829926[edx*1+ecx]
- sub eax, edi
- rol ecx, 8
- add ecx, ebp
- ; 91
- mov edx, DWORD PTR 32[esp]
- or eax, esi
- add ebp, edx
- xor eax, ecx
- mov edx, -1
- rol esi, 10
- lea ebp, DWORD PTR 1352829926[eax*1+ebp]
- sub edx, esi
- rol ebp, 11
- add ebp, ebx
- ; 92
- mov eax, DWORD PTR 4[esp]
- or edx, ecx
- add ebx, eax
- xor edx, ebp
- mov eax, -1
- rol ecx, 10
- lea ebx, DWORD PTR 1352829926[edx*1+ebx]
- sub eax, ecx
- rol ebx, 14
- add ebx, edi
- ; 93
- mov edx, DWORD PTR 40[esp]
- or eax, ebp
- add edi, edx
- xor eax, ebx
- mov edx, -1
- rol ebp, 10
- lea edi, DWORD PTR 1352829926[eax*1+edi]
- sub edx, ebp
- rol edi, 14
- add edi, esi
- ; 94
- mov eax, DWORD PTR 12[esp]
- or edx, ebx
- add esi, eax
- xor edx, edi
- mov eax, -1
- rol ebx, 10
- lea esi, DWORD PTR 1352829926[edx*1+esi]
- sub eax, ebx
- rol esi, 12
- add esi, ecx
- ; 95
- mov edx, DWORD PTR 48[esp]
- or eax, edi
- add ecx, edx
- xor eax, esi
- mov edx, -1
- rol edi, 10
- lea ecx, DWORD PTR 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 PTR 24[esp]
- rol esi, 10
- lea ebp, DWORD PTR 1548603684[edx+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 PTR 44[esp]
- rol ecx, 10
- lea ebx, DWORD PTR 1548603684[edx+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 PTR 12[esp]
- rol ebp, 10
- lea edi, DWORD PTR 1548603684[edx+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 PTR 28[esp]
- rol ebx, 10
- lea esi, DWORD PTR 1548603684[edx+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 PTR [esp]
- rol edi, 10
- lea ecx, DWORD PTR 1548603684[edx+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 PTR 52[esp]
- rol esi, 10
- lea ebp, DWORD PTR 1548603684[edx+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 PTR 20[esp]
- rol ecx, 10
- lea ebx, DWORD PTR 1548603684[edx+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 PTR 40[esp]
- rol ebp, 10
- lea edi, DWORD PTR 1548603684[edx+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 PTR 56[esp]
- rol ebx, 10
- lea esi, DWORD PTR 1548603684[edx+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 PTR 60[esp]
- rol edi, 10
- lea ecx, DWORD PTR 1548603684[edx+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 PTR 32[esp]
- rol esi, 10
- lea ebp, DWORD PTR 1548603684[edx+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 PTR 48[esp]
- rol ecx, 10
- lea ebx, DWORD PTR 1548603684[edx+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 PTR 16[esp]
- rol ebp, 10
- lea edi, DWORD PTR 1548603684[edx+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 PTR 36[esp]
- rol ebx, 10
- lea esi, DWORD PTR 1548603684[edx+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 PTR 4[esp]
- rol edi, 10
- lea ecx, DWORD PTR 1548603684[edx+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 PTR 8[esp]
- rol esi, 10
- lea ebp, DWORD PTR 1548603684[edx+ebp]
- mov edx, -1
- add ebp, eax
- sub edx, ecx
- rol ebp, 11
- add ebp, ebx
- ; 112
- mov eax, DWORD PTR 60[esp]
- or edx, ebp
- add ebx, eax
- xor edx, esi
- mov eax, -1
- rol ecx, 10
- lea ebx, DWORD PTR 1836072691[edx*1+ebx]
- sub eax, ebp
- rol ebx, 9
- add ebx, edi
- ; 113
- mov edx, DWORD PTR 20[esp]
- or eax, ebx
- add edi, edx
- xor eax, ecx
- mov edx, -1
- rol ebp, 10
- lea edi, DWORD PTR 1836072691[eax*1+edi]
- sub edx, ebx
- rol edi, 7
- add edi, esi
- ; 114
- mov eax, DWORD PTR 4[esp]
- or edx, edi
- add esi, eax
- xor edx, ebp
- mov eax, -1
- rol ebx, 10
- lea esi, DWORD PTR 1836072691[edx*1+esi]
- sub eax, edi
- rol esi, 15
- add esi, ecx
- ; 115
- mov edx, DWORD PTR 12[esp]
- or eax, esi
- add ecx, edx
- xor eax, ebx
- mov edx, -1
- rol edi, 10
- lea ecx, DWORD PTR 1836072691[eax*1+ecx]
- sub edx, esi
- rol ecx, 11
- add ecx, ebp
- ; 116
- mov eax, DWORD PTR 28[esp]
- or edx, ecx
- add ebp, eax
- xor edx, edi
- mov eax, -1
- rol esi, 10
- lea ebp, DWORD PTR 1836072691[edx*1+ebp]
- sub eax, ecx
- rol ebp, 8
- add ebp, ebx
- ; 117
- mov edx, DWORD PTR 56[esp]
- or eax, ebp
- add ebx, edx
- xor eax, esi
- mov edx, -1
- rol ecx, 10
- lea ebx, DWORD PTR 1836072691[eax*1+ebx]
- sub edx, ebp
- rol ebx, 6
- add ebx, edi
- ; 118
- mov eax, DWORD PTR 24[esp]
- or edx, ebx
- add edi, eax
- xor edx, ecx
- mov eax, -1
- rol ebp, 10
- lea edi, DWORD PTR 1836072691[edx*1+edi]
- sub eax, ebx
- rol edi, 6
- add edi, esi
- ; 119
- mov edx, DWORD PTR 36[esp]
- or eax, edi
- add esi, edx
- xor eax, ebp
- mov edx, -1
- rol ebx, 10
- lea esi, DWORD PTR 1836072691[eax*1+esi]
- sub edx, edi
- rol esi, 14
- add esi, ecx
- ; 120
- mov eax, DWORD PTR 44[esp]
- or edx, esi
- add ecx, eax
- xor edx, ebx
- mov eax, -1
- rol edi, 10
- lea ecx, DWORD PTR 1836072691[edx*1+ecx]
- sub eax, esi
- rol ecx, 12
- add ecx, ebp
- ; 121
- mov edx, DWORD PTR 32[esp]
- or eax, ecx
- add ebp, edx
- xor eax, edi
- mov edx, -1
- rol esi, 10
- lea ebp, DWORD PTR 1836072691[eax*1+ebp]
- sub edx, ecx
- rol ebp, 13
- add ebp, ebx
- ; 122
- mov eax, DWORD PTR 48[esp]
- or edx, ebp
- add ebx, eax
- xor edx, esi
- mov eax, -1
- rol ecx, 10
- lea ebx, DWORD PTR 1836072691[edx*1+ebx]
- sub eax, ebp
- rol ebx, 5
- add ebx, edi
- ; 123
- mov edx, DWORD PTR 8[esp]
- or eax, ebx
- add edi, edx
- xor eax, ecx
- mov edx, -1
- rol ebp, 10
- lea edi, DWORD PTR 1836072691[eax*1+edi]
- sub edx, ebx
- rol edi, 14
- add edi, esi
- ; 124
- mov eax, DWORD PTR 40[esp]
- or edx, edi
- add esi, eax
- xor edx, ebp
- mov eax, -1
- rol ebx, 10
- lea esi, DWORD PTR 1836072691[edx*1+esi]
- sub eax, edi
- rol esi, 13
- add esi, ecx
- ; 125
- mov edx, DWORD PTR [esp]
- or eax, esi
- add ecx, edx
- xor eax, ebx
- mov edx, -1
- rol edi, 10
- lea ecx, DWORD PTR 1836072691[eax*1+ecx]
- sub edx, esi
- rol ecx, 13
- add ecx, ebp
- ; 126
- mov eax, DWORD PTR 16[esp]
- or edx, ecx
- add ebp, eax
- xor edx, edi
- mov eax, -1
- rol esi, 10
- lea ebp, DWORD PTR 1836072691[edx*1+ebp]
- sub eax, ecx
- rol ebp, 7
- add ebp, ebx
- ; 127
- mov edx, DWORD PTR 52[esp]
- or eax, ebp
- add ebx, edx
- xor eax, esi
- mov edx, DWORD PTR 32[esp]
- rol ecx, 10
- lea ebx, DWORD PTR 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 PTR 24[esp]
- rol ebp, 10
- lea edi, DWORD PTR 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 PTR 16[esp]
- rol ebx, 10
- lea esi, DWORD PTR 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 PTR 4[esp]
- rol edi, 10
- lea ecx, DWORD PTR 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 PTR 12[esp]
- rol esi, 10
- lea ebp, DWORD PTR 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 PTR 44[esp]
- rol ecx, 10
- lea ebx, DWORD PTR 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 PTR 60[esp]
- rol ebp, 10
- lea edi, DWORD PTR 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 PTR [esp]
- rol ebx, 10
- lea esi, DWORD PTR 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 PTR 20[esp]
- rol edi, 10
- lea ecx, DWORD PTR 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 PTR 48[esp]
- rol esi, 10
- lea ebp, DWORD PTR 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 PTR 8[esp]
- rol ecx, 10
- lea ebx, DWORD PTR 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 PTR 52[esp]
- rol ebp, 10
- lea edi, DWORD PTR 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 PTR 36[esp]
- rol ebx, 10
- lea esi, DWORD PTR 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 PTR 28[esp]
- rol edi, 10
- lea ecx, DWORD PTR 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 PTR 40[esp]
- rol esi, 10
- lea ebp, DWORD PTR 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 PTR 56[esp]
- rol ecx, 10
- lea ebx, DWORD PTR 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, DWORD PTR 2053994217[edx*1+edi]
- xor eax, ebp
- rol edi, 8
- add edi, esi
- ; 144
- mov edx, DWORD PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR 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 PTR [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 PTR 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 PTR 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 PTR 44[esp]
- xor eax, edi
- add esi, eax
- rol ebx, 10
- add esi, edx
- mov edx, DWORD PTR 128[esp]
- rol esi, 11
- add esi, ecx
- mov eax, DWORD PTR 4[edx]
- add ebx, eax
- mov eax, DWORD PTR 72[esp]
- add ebx, eax
- mov eax, DWORD PTR 8[edx]
- add ebp, eax
- mov eax, DWORD PTR 76[esp]
- add ebp, eax
- mov eax, DWORD PTR 12[edx]
- add ecx, eax
- mov eax, DWORD PTR 80[esp]
- add ecx, eax
- mov eax, DWORD PTR 16[edx]
- add esi, eax
- mov eax, DWORD PTR 64[esp]
- add esi, eax
- mov eax, DWORD PTR [edx]
- add edi, eax
- mov eax, DWORD PTR 68[esp]
- add edi, eax
- mov eax, DWORD PTR 136[esp]
- mov DWORD PTR [edx],ebx
- mov DWORD PTR 4[edx],ebp
- mov DWORD PTR 8[edx],ecx
- sub eax, 1
- mov DWORD PTR 12[edx],esi
- mov DWORD PTR 16[edx],edi
- jle $L001get_out
- mov DWORD PTR 136[esp],eax
- mov edi, ecx
- mov eax, DWORD PTR 132[esp]
- mov ecx, ebx
- add eax, 64
- mov esi, ebp
- mov DWORD PTR 132[esp],eax
- jmp L000start
-$L001get_out:
- add esp, 108
- pop ebx
- pop ebp
- pop edi
- pop esi
- ret
-_ripemd160_block_asm_host_order ENDP
-_TEXT ENDS
-END
+++ /dev/null
- ; Don't even think of reading this code
- ; It was automatically generated by sha1-586.pl
- ; Which is a perl program used to generate the x86 assember for
- ; any of elf, a.out, BSDI,Win32, or Solaris
- ; eric <eay@cryptsoft.com>
- ;
- TITLE sha1-586.asm
- .486
-.model FLAT
-_TEXT SEGMENT
-PUBLIC _sha1_block_asm_data_order
-
-_sha1_block_asm_data_order PROC NEAR
- mov ecx, DWORD PTR 12[esp]
- push esi
- shl ecx, 6
- mov esi, DWORD PTR 12[esp]
- push ebp
- add ecx, esi
- push ebx
- mov ebp, DWORD PTR 16[esp]
- push edi
- mov edx, DWORD PTR 12[ebp]
- sub esp, 108
- mov edi, DWORD PTR 16[ebp]
- mov ebx, DWORD PTR 8[ebp]
- mov DWORD PTR 68[esp],ecx
- ; First we need to setup the X array
-L000start:
- ; First, load the words onto the stack in network byte order
- mov eax, DWORD PTR [esi]
- mov ecx, DWORD PTR 4[esi]
- bswap eax
- bswap ecx
- mov DWORD PTR [esp],eax
- mov DWORD PTR 4[esp],ecx
- mov eax, DWORD PTR 8[esi]
- mov ecx, DWORD PTR 12[esi]
- bswap eax
- bswap ecx
- mov DWORD PTR 8[esp],eax
- mov DWORD PTR 12[esp],ecx
- mov eax, DWORD PTR 16[esi]
- mov ecx, DWORD PTR 20[esi]
- bswap eax
- bswap ecx
- mov DWORD PTR 16[esp],eax
- mov DWORD PTR 20[esp],ecx
- mov eax, DWORD PTR 24[esi]
- mov ecx, DWORD PTR 28[esi]
- bswap eax
- bswap ecx
- mov DWORD PTR 24[esp],eax
- mov DWORD PTR 28[esp],ecx
- mov eax, DWORD PTR 32[esi]
- mov ecx, DWORD PTR 36[esi]
- bswap eax
- bswap ecx
- mov DWORD PTR 32[esp],eax
- mov DWORD PTR 36[esp],ecx
- mov eax, DWORD PTR 40[esi]
- mov ecx, DWORD PTR 44[esi]
- bswap eax
- bswap ecx
- mov DWORD PTR 40[esp],eax
- mov DWORD PTR 44[esp],ecx
- mov eax, DWORD PTR 48[esi]
- mov ecx, DWORD PTR 52[esi]
- bswap eax
- bswap ecx
- mov DWORD PTR 48[esp],eax
- mov DWORD PTR 52[esp],ecx
- mov eax, DWORD PTR 56[esi]
- mov ecx, DWORD PTR 60[esi]
- bswap eax
- bswap ecx
- mov DWORD PTR 56[esp],eax
- mov DWORD PTR 60[esp],ecx
- ; We now have the X array on the stack
- ; starting at sp-4
- mov DWORD PTR 132[esp],esi
-L001shortcut:
- ;
- ; Start processing
- mov eax, DWORD PTR [ebp]
- mov ecx, DWORD PTR 4[ebp]
- ; 00_15 0
- mov esi, ebx
- mov ebp, eax
- xor esi, edx
- rol ebp, 5
- and esi, ecx
- add ebp, edi
- ror ecx, 1
- mov edi, DWORD PTR [esp]
- ror ecx, 1
- xor esi, edx
- lea ebp, DWORD PTR 1518500249[edi*1+ebp]
- mov edi, ecx
- add esi, ebp
- xor edi, ebx
- mov ebp, esi
- and edi, eax
- rol ebp, 5
- add ebp, edx
- mov edx, DWORD PTR 4[esp]
- ror eax, 1
- xor edi, ebx
- ror eax, 1
- lea ebp, DWORD PTR 1518500249[edx*1+ebp]
- add edi, ebp
- ; 00_15 2
- mov edx, eax
- mov ebp, edi
- xor edx, ecx
- rol ebp, 5
- and edx, esi
- add ebp, ebx
- ror esi, 1
- mov ebx, DWORD PTR 8[esp]
- ror esi, 1
- xor edx, ecx
- lea ebp, DWORD PTR 1518500249[ebx*1+ebp]
- mov ebx, esi
- add edx, ebp
- xor ebx, eax
- mov ebp, edx
- and ebx, edi
- rol ebp, 5
- add ebp, ecx
- mov ecx, DWORD PTR 12[esp]
- ror edi, 1
- xor ebx, eax
- ror edi, 1
- lea ebp, DWORD PTR 1518500249[ecx*1+ebp]
- add ebx, ebp
- ; 00_15 4
- mov ecx, edi
- mov ebp, ebx
- xor ecx, esi
- rol ebp, 5
- and ecx, edx
- add ebp, eax
- ror edx, 1
- mov eax, DWORD PTR 16[esp]
- ror edx, 1
- xor ecx, esi
- lea ebp, DWORD PTR 1518500249[eax*1+ebp]
- mov eax, edx
- add ecx, ebp
- xor eax, edi
- mov ebp, ecx
- and eax, ebx
- rol ebp, 5
- add ebp, esi
- mov esi, DWORD PTR 20[esp]
- ror ebx, 1
- xor eax, edi
- ror ebx, 1
- lea ebp, DWORD PTR 1518500249[esi*1+ebp]
- add eax, ebp
- ; 00_15 6
- mov esi, ebx
- mov ebp, eax
- xor esi, edx
- rol ebp, 5
- and esi, ecx
- add ebp, edi
- ror ecx, 1
- mov edi, DWORD PTR 24[esp]
- ror ecx, 1
- xor esi, edx
- lea ebp, DWORD PTR 1518500249[edi*1+ebp]
- mov edi, ecx
- add esi, ebp
- xor edi, ebx
- mov ebp, esi
- and edi, eax
- rol ebp, 5
- add ebp, edx
- mov edx, DWORD PTR 28[esp]
- ror eax, 1
- xor edi, ebx
- ror eax, 1
- lea ebp, DWORD PTR 1518500249[edx*1+ebp]
- add edi, ebp
- ; 00_15 8
- mov edx, eax
- mov ebp, edi
- xor edx, ecx
- rol ebp, 5
- and edx, esi
- add ebp, ebx
- ror esi, 1
- mov ebx, DWORD PTR 32[esp]
- ror esi, 1
- xor edx, ecx
- lea ebp, DWORD PTR 1518500249[ebx*1+ebp]
- mov ebx, esi
- add edx, ebp
- xor ebx, eax
- mov ebp, edx
- and ebx, edi
- rol ebp, 5
- add ebp, ecx
- mov ecx, DWORD PTR 36[esp]
- ror edi, 1
- xor ebx, eax
- ror edi, 1
- lea ebp, DWORD PTR 1518500249[ecx*1+ebp]
- add ebx, ebp
- ; 00_15 10
- mov ecx, edi
- mov ebp, ebx
- xor ecx, esi
- rol ebp, 5
- and ecx, edx
- add ebp, eax
- ror edx, 1
- mov eax, DWORD PTR 40[esp]
- ror edx, 1
- xor ecx, esi
- lea ebp, DWORD PTR 1518500249[eax*1+ebp]
- mov eax, edx
- add ecx, ebp
- xor eax, edi
- mov ebp, ecx
- and eax, ebx
- rol ebp, 5
- add ebp, esi
- mov esi, DWORD PTR 44[esp]
- ror ebx, 1
- xor eax, edi
- ror ebx, 1
- lea ebp, DWORD PTR 1518500249[esi*1+ebp]
- add eax, ebp
- ; 00_15 12
- mov esi, ebx
- mov ebp, eax
- xor esi, edx
- rol ebp, 5
- and esi, ecx
- add ebp, edi
- ror ecx, 1
- mov edi, DWORD PTR 48[esp]
- ror ecx, 1
- xor esi, edx
- lea ebp, DWORD PTR 1518500249[edi*1+ebp]
- mov edi, ecx
- add esi, ebp
- xor edi, ebx
- mov ebp, esi
- and edi, eax
- rol ebp, 5
- add ebp, edx
- mov edx, DWORD PTR 52[esp]
- ror eax, 1
- xor edi, ebx
- ror eax, 1
- lea ebp, DWORD PTR 1518500249[edx*1+ebp]
- add edi, ebp
- ; 00_15 14
- mov edx, eax
- mov ebp, edi
- xor edx, ecx
- rol ebp, 5
- and edx, esi
- add ebp, ebx
- ror esi, 1
- mov ebx, DWORD PTR 56[esp]
- ror esi, 1
- xor edx, ecx
- lea ebp, DWORD PTR 1518500249[ebx*1+ebp]
- mov ebx, esi
- add edx, ebp
- xor ebx, eax
- mov ebp, edx
- and ebx, edi
- rol ebp, 5
- add ebp, ecx
- mov ecx, DWORD PTR 60[esp]
- ror edi, 1
- xor ebx, eax
- ror edi, 1
- lea ebp, DWORD PTR 1518500249[ecx*1+ebp]
- add ebx, ebp
- ; 16_19 16
- nop
- mov ebp, DWORD PTR [esp]
- mov ecx, DWORD PTR 8[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 32[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 52[esp]
- xor ecx, ebp
- mov ebp, edi
- rol ecx, 1
- xor ebp, esi
- mov DWORD PTR [esp],ecx
- and ebp, edx
- lea ecx, DWORD PTR 1518500249[eax*1+ecx]
- xor ebp, esi
- mov eax, ebx
- add ecx, ebp
- rol eax, 5
- ror edx, 1
- add ecx, eax
- mov eax, DWORD PTR 4[esp]
- mov ebp, DWORD PTR 12[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 36[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 56[esp]
- ror edx, 1
- xor eax, ebp
- rol eax, 1
- mov ebp, edx
- xor ebp, edi
- mov DWORD PTR 4[esp],eax
- and ebp, ebx
- lea eax, DWORD PTR 1518500249[esi*1+eax]
- xor ebp, edi
- mov esi, ecx
- rol esi, 5
- ror ebx, 1
- add eax, esi
- ror ebx, 1
- add eax, ebp
- ; 16_19 18
- mov ebp, DWORD PTR 8[esp]
- mov esi, DWORD PTR 16[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 40[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 60[esp]
- xor esi, ebp
- mov ebp, ebx
- rol esi, 1
- xor ebp, edx
- mov DWORD PTR 8[esp],esi
- and ebp, ecx
- lea esi, DWORD PTR 1518500249[edi*1+esi]
- xor ebp, edx
- mov edi, eax
- add esi, ebp
- rol edi, 5
- ror ecx, 1
- add esi, edi
- mov edi, DWORD PTR 12[esp]
- mov ebp, DWORD PTR 20[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 44[esp]
- xor edi, ebp
- mov ebp, DWORD PTR [esp]
- ror ecx, 1
- xor edi, ebp
- rol edi, 1
- mov ebp, ecx
- xor ebp, ebx
- mov DWORD PTR 12[esp],edi
- and ebp, eax
- lea edi, DWORD PTR 1518500249[edx*1+edi]
- xor ebp, ebx
- mov edx, esi
- rol edx, 5
- ror eax, 1
- add edi, edx
- ror eax, 1
- add edi, ebp
- ; 20_39 20
- mov edx, DWORD PTR 16[esp]
- mov ebp, DWORD PTR 24[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 48[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 4[esp]
- xor edx, ebp
- mov ebp, esi
- rol edx, 1
- xor ebp, eax
- mov DWORD PTR 16[esp],edx
- xor ebp, ecx
- lea edx, DWORD PTR 1859775393[ebx*1+edx]
- mov ebx, edi
- rol ebx, 5
- ror esi, 1
- add ebx, ebp
- ror esi, 1
- add edx, ebx
- ; 20_39 21
- mov ebx, DWORD PTR 20[esp]
- mov ebp, DWORD PTR 28[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 52[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 8[esp]
- xor ebx, ebp
- mov ebp, edi
- rol ebx, 1
- xor ebp, esi
- mov DWORD PTR 20[esp],ebx
- xor ebp, eax
- lea ebx, DWORD PTR 1859775393[ecx*1+ebx]
- mov ecx, edx
- rol ecx, 5
- ror edi, 1
- add ecx, ebp
- ror edi, 1
- add ebx, ecx
- ; 20_39 22
- mov ecx, DWORD PTR 24[esp]
- mov ebp, DWORD PTR 32[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 56[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 12[esp]
- xor ecx, ebp
- mov ebp, edx
- rol ecx, 1
- xor ebp, edi
- mov DWORD PTR 24[esp],ecx
- xor ebp, esi
- lea ecx, DWORD PTR 1859775393[eax*1+ecx]
- mov eax, ebx
- rol eax, 5
- ror edx, 1
- add eax, ebp
- ror edx, 1
- add ecx, eax
- ; 20_39 23
- mov eax, DWORD PTR 28[esp]
- mov ebp, DWORD PTR 36[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 60[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 16[esp]
- xor eax, ebp
- mov ebp, ebx
- rol eax, 1
- xor ebp, edx
- mov DWORD PTR 28[esp],eax
- xor ebp, edi
- lea eax, DWORD PTR 1859775393[esi*1+eax]
- mov esi, ecx
- rol esi, 5
- ror ebx, 1
- add esi, ebp
- ror ebx, 1
- add eax, esi
- ; 20_39 24
- mov esi, DWORD PTR 32[esp]
- mov ebp, DWORD PTR 40[esp]
- xor esi, ebp
- mov ebp, DWORD PTR [esp]
- xor esi, ebp
- mov ebp, DWORD PTR 20[esp]
- xor esi, ebp
- mov ebp, ecx
- rol esi, 1
- xor ebp, ebx
- mov DWORD PTR 32[esp],esi
- xor ebp, edx
- lea esi, DWORD PTR 1859775393[edi*1+esi]
- mov edi, eax
- rol edi, 5
- ror ecx, 1
- add edi, ebp
- ror ecx, 1
- add esi, edi
- ; 20_39 25
- mov edi, DWORD PTR 36[esp]
- mov ebp, DWORD PTR 44[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 4[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- xor edi, ebp
- mov ebp, eax
- rol edi, 1
- xor ebp, ecx
- mov DWORD PTR 36[esp],edi
- xor ebp, ebx
- lea edi, DWORD PTR 1859775393[edx*1+edi]
- mov edx, esi
- rol edx, 5
- ror eax, 1
- add edx, ebp
- ror eax, 1
- add edi, edx
- ; 20_39 26
- mov edx, DWORD PTR 40[esp]
- mov ebp, DWORD PTR 48[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 8[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 28[esp]
- xor edx, ebp
- mov ebp, esi
- rol edx, 1
- xor ebp, eax
- mov DWORD PTR 40[esp],edx
- xor ebp, ecx
- lea edx, DWORD PTR 1859775393[ebx*1+edx]
- mov ebx, edi
- rol ebx, 5
- ror esi, 1
- add ebx, ebp
- ror esi, 1
- add edx, ebx
- ; 20_39 27
- mov ebx, DWORD PTR 44[esp]
- mov ebp, DWORD PTR 52[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 12[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 32[esp]
- xor ebx, ebp
- mov ebp, edi
- rol ebx, 1
- xor ebp, esi
- mov DWORD PTR 44[esp],ebx
- xor ebp, eax
- lea ebx, DWORD PTR 1859775393[ecx*1+ebx]
- mov ecx, edx
- rol ecx, 5
- ror edi, 1
- add ecx, ebp
- ror edi, 1
- add ebx, ecx
- ; 20_39 28
- mov ecx, DWORD PTR 48[esp]
- mov ebp, DWORD PTR 56[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 16[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 36[esp]
- xor ecx, ebp
- mov ebp, edx
- rol ecx, 1
- xor ebp, edi
- mov DWORD PTR 48[esp],ecx
- xor ebp, esi
- lea ecx, DWORD PTR 1859775393[eax*1+ecx]
- mov eax, ebx
- rol eax, 5
- ror edx, 1
- add eax, ebp
- ror edx, 1
- add ecx, eax
- ; 20_39 29
- mov eax, DWORD PTR 52[esp]
- mov ebp, DWORD PTR 60[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 20[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 40[esp]
- xor eax, ebp
- mov ebp, ebx
- rol eax, 1
- xor ebp, edx
- mov DWORD PTR 52[esp],eax
- xor ebp, edi
- lea eax, DWORD PTR 1859775393[esi*1+eax]
- mov esi, ecx
- rol esi, 5
- ror ebx, 1
- add esi, ebp
- ror ebx, 1
- add eax, esi
- ; 20_39 30
- mov esi, DWORD PTR 56[esp]
- mov ebp, DWORD PTR [esp]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 44[esp]
- xor esi, ebp
- mov ebp, ecx
- rol esi, 1
- xor ebp, ebx
- mov DWORD PTR 56[esp],esi
- xor ebp, edx
- lea esi, DWORD PTR 1859775393[edi*1+esi]
- mov edi, eax
- rol edi, 5
- ror ecx, 1
- add edi, ebp
- ror ecx, 1
- add esi, edi
- ; 20_39 31
- mov edi, DWORD PTR 60[esp]
- mov ebp, DWORD PTR 4[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 28[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 48[esp]
- xor edi, ebp
- mov ebp, eax
- rol edi, 1
- xor ebp, ecx
- mov DWORD PTR 60[esp],edi
- xor ebp, ebx
- lea edi, DWORD PTR 1859775393[edx*1+edi]
- mov edx, esi
- rol edx, 5
- ror eax, 1
- add edx, ebp
- ror eax, 1
- add edi, edx
- ; 20_39 32
- mov edx, DWORD PTR [esp]
- mov ebp, DWORD PTR 8[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 32[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 52[esp]
- xor edx, ebp
- mov ebp, esi
- rol edx, 1
- xor ebp, eax
- mov DWORD PTR [esp],edx
- xor ebp, ecx
- lea edx, DWORD PTR 1859775393[ebx*1+edx]
- mov ebx, edi
- rol ebx, 5
- ror esi, 1
- add ebx, ebp
- ror esi, 1
- add edx, ebx
- ; 20_39 33
- mov ebx, DWORD PTR 4[esp]
- mov ebp, DWORD PTR 12[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 36[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 56[esp]
- xor ebx, ebp
- mov ebp, edi
- rol ebx, 1
- xor ebp, esi
- mov DWORD PTR 4[esp],ebx
- xor ebp, eax
- lea ebx, DWORD PTR 1859775393[ecx*1+ebx]
- mov ecx, edx
- rol ecx, 5
- ror edi, 1
- add ecx, ebp
- ror edi, 1
- add ebx, ecx
- ; 20_39 34
- mov ecx, DWORD PTR 8[esp]
- mov ebp, DWORD PTR 16[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 40[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 60[esp]
- xor ecx, ebp
- mov ebp, edx
- rol ecx, 1
- xor ebp, edi
- mov DWORD PTR 8[esp],ecx
- xor ebp, esi
- lea ecx, DWORD PTR 1859775393[eax*1+ecx]
- mov eax, ebx
- rol eax, 5
- ror edx, 1
- add eax, ebp
- ror edx, 1
- add ecx, eax
- ; 20_39 35
- mov eax, DWORD PTR 12[esp]
- mov ebp, DWORD PTR 20[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 44[esp]
- xor eax, ebp
- mov ebp, DWORD PTR [esp]
- xor eax, ebp
- mov ebp, ebx
- rol eax, 1
- xor ebp, edx
- mov DWORD PTR 12[esp],eax
- xor ebp, edi
- lea eax, DWORD PTR 1859775393[esi*1+eax]
- mov esi, ecx
- rol esi, 5
- ror ebx, 1
- add esi, ebp
- ror ebx, 1
- add eax, esi
- ; 20_39 36
- mov esi, DWORD PTR 16[esp]
- mov ebp, DWORD PTR 24[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 48[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 4[esp]
- xor esi, ebp
- mov ebp, ecx
- rol esi, 1
- xor ebp, ebx
- mov DWORD PTR 16[esp],esi
- xor ebp, edx
- lea esi, DWORD PTR 1859775393[edi*1+esi]
- mov edi, eax
- rol edi, 5
- ror ecx, 1
- add edi, ebp
- ror ecx, 1
- add esi, edi
- ; 20_39 37
- mov edi, DWORD PTR 20[esp]
- mov ebp, DWORD PTR 28[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 52[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 8[esp]
- xor edi, ebp
- mov ebp, eax
- rol edi, 1
- xor ebp, ecx
- mov DWORD PTR 20[esp],edi
- xor ebp, ebx
- lea edi, DWORD PTR 1859775393[edx*1+edi]
- mov edx, esi
- rol edx, 5
- ror eax, 1
- add edx, ebp
- ror eax, 1
- add edi, edx
- ; 20_39 38
- mov edx, DWORD PTR 24[esp]
- mov ebp, DWORD PTR 32[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 56[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 12[esp]
- xor edx, ebp
- mov ebp, esi
- rol edx, 1
- xor ebp, eax
- mov DWORD PTR 24[esp],edx
- xor ebp, ecx
- lea edx, DWORD PTR 1859775393[ebx*1+edx]
- mov ebx, edi
- rol ebx, 5
- ror esi, 1
- add ebx, ebp
- ror esi, 1
- add edx, ebx
- ; 20_39 39
- mov ebx, DWORD PTR 28[esp]
- mov ebp, DWORD PTR 36[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 60[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 16[esp]
- xor ebx, ebp
- mov ebp, edi
- rol ebx, 1
- xor ebp, esi
- mov DWORD PTR 28[esp],ebx
- xor ebp, eax
- lea ebx, DWORD PTR 1859775393[ecx*1+ebx]
- mov ecx, edx
- rol ecx, 5
- ror edi, 1
- add ecx, ebp
- ror edi, 1
- add ebx, ecx
- ; 40_59 40
- mov ecx, DWORD PTR 32[esp]
- mov ebp, DWORD PTR 40[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR [esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 20[esp]
- xor ecx, ebp
- mov ebp, edx
- rol ecx, 1
- or ebp, edi
- mov DWORD PTR 32[esp],ecx
- and ebp, esi
- lea ecx, DWORD PTR 2400959708[eax*1+ecx]
- mov eax, edx
- ror edx, 1
- and eax, edi
- or ebp, eax
- mov eax, ebx
- rol eax, 5
- add ebp, eax
- mov eax, DWORD PTR 36[esp]
- add ecx, ebp
- mov ebp, DWORD PTR 44[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 4[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 24[esp]
- ror edx, 1
- xor eax, ebp
- rol eax, 1
- mov ebp, ebx
- mov DWORD PTR 36[esp],eax
- or ebp, edx
- lea eax, DWORD PTR 2400959708[esi*1+eax]
- mov esi, ebx
- and ebp, edi
- and esi, edx
- or ebp, esi
- mov esi, ecx
- rol esi, 5
- ror ebx, 1
- add ebp, esi
- ror ebx, 1
- add eax, ebp
- ; 40_59 41
- ; 40_59 42
- mov esi, DWORD PTR 40[esp]
- mov ebp, DWORD PTR 48[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 8[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 28[esp]
- xor esi, ebp
- mov ebp, ecx
- rol esi, 1
- or ebp, ebx
- mov DWORD PTR 40[esp],esi
- and ebp, edx
- lea esi, DWORD PTR 2400959708[edi*1+esi]
- mov edi, ecx
- ror ecx, 1
- and edi, ebx
- or ebp, edi
- mov edi, eax
- rol edi, 5
- add ebp, edi
- mov edi, DWORD PTR 44[esp]
- add esi, ebp
- mov ebp, DWORD PTR 52[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 12[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 32[esp]
- ror ecx, 1
- xor edi, ebp
- rol edi, 1
- mov ebp, eax
- mov DWORD PTR 44[esp],edi
- or ebp, ecx
- lea edi, DWORD PTR 2400959708[edx*1+edi]
- mov edx, eax
- and ebp, ebx
- and edx, ecx
- or ebp, edx
- mov edx, esi
- rol edx, 5
- ror eax, 1
- add ebp, edx
- ror eax, 1
- add edi, ebp
- ; 40_59 43
- ; 40_59 44
- mov edx, DWORD PTR 48[esp]
- mov ebp, DWORD PTR 56[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 16[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 36[esp]
- xor edx, ebp
- mov ebp, esi
- rol edx, 1
- or ebp, eax
- mov DWORD PTR 48[esp],edx
- and ebp, ecx
- lea edx, DWORD PTR 2400959708[ebx*1+edx]
- mov ebx, esi
- ror esi, 1
- and ebx, eax
- or ebp, ebx
- mov ebx, edi
- rol ebx, 5
- add ebp, ebx
- mov ebx, DWORD PTR 52[esp]
- add edx, ebp
- mov ebp, DWORD PTR 60[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 20[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 40[esp]
- ror esi, 1
- xor ebx, ebp
- rol ebx, 1
- mov ebp, edi
- mov DWORD PTR 52[esp],ebx
- or ebp, esi
- lea ebx, DWORD PTR 2400959708[ecx*1+ebx]
- mov ecx, edi
- and ebp, eax
- and ecx, esi
- or ebp, ecx
- mov ecx, edx
- rol ecx, 5
- ror edi, 1
- add ebp, ecx
- ror edi, 1
- add ebx, ebp
- ; 40_59 45
- ; 40_59 46
- mov ecx, DWORD PTR 56[esp]
- mov ebp, DWORD PTR [esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 24[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 44[esp]
- xor ecx, ebp
- mov ebp, edx
- rol ecx, 1
- or ebp, edi
- mov DWORD PTR 56[esp],ecx
- and ebp, esi
- lea ecx, DWORD PTR 2400959708[eax*1+ecx]
- mov eax, edx
- ror edx, 1
- and eax, edi
- or ebp, eax
- mov eax, ebx
- rol eax, 5
- add ebp, eax
- mov eax, DWORD PTR 60[esp]
- add ecx, ebp
- mov ebp, DWORD PTR 4[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 28[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 48[esp]
- ror edx, 1
- xor eax, ebp
- rol eax, 1
- mov ebp, ebx
- mov DWORD PTR 60[esp],eax
- or ebp, edx
- lea eax, DWORD PTR 2400959708[esi*1+eax]
- mov esi, ebx
- and ebp, edi
- and esi, edx
- or ebp, esi
- mov esi, ecx
- rol esi, 5
- ror ebx, 1
- add ebp, esi
- ror ebx, 1
- add eax, ebp
- ; 40_59 47
- ; 40_59 48
- mov esi, DWORD PTR [esp]
- mov ebp, DWORD PTR 8[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 32[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 52[esp]
- xor esi, ebp
- mov ebp, ecx
- rol esi, 1
- or ebp, ebx
- mov DWORD PTR [esp],esi
- and ebp, edx
- lea esi, DWORD PTR 2400959708[edi*1+esi]
- mov edi, ecx
- ror ecx, 1
- and edi, ebx
- or ebp, edi
- mov edi, eax
- rol edi, 5
- add ebp, edi
- mov edi, DWORD PTR 4[esp]
- add esi, ebp
- mov ebp, DWORD PTR 12[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 36[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 56[esp]
- ror ecx, 1
- xor edi, ebp
- rol edi, 1
- mov ebp, eax
- mov DWORD PTR 4[esp],edi
- or ebp, ecx
- lea edi, DWORD PTR 2400959708[edx*1+edi]
- mov edx, eax
- and ebp, ebx
- and edx, ecx
- or ebp, edx
- mov edx, esi
- rol edx, 5
- ror eax, 1
- add ebp, edx
- ror eax, 1
- add edi, ebp
- ; 40_59 49
- ; 40_59 50
- mov edx, DWORD PTR 8[esp]
- mov ebp, DWORD PTR 16[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 40[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 60[esp]
- xor edx, ebp
- mov ebp, esi
- rol edx, 1
- or ebp, eax
- mov DWORD PTR 8[esp],edx
- and ebp, ecx
- lea edx, DWORD PTR 2400959708[ebx*1+edx]
- mov ebx, esi
- ror esi, 1
- and ebx, eax
- or ebp, ebx
- mov ebx, edi
- rol ebx, 5
- add ebp, ebx
- mov ebx, DWORD PTR 12[esp]
- add edx, ebp
- mov ebp, DWORD PTR 20[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 44[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR [esp]
- ror esi, 1
- xor ebx, ebp
- rol ebx, 1
- mov ebp, edi
- mov DWORD PTR 12[esp],ebx
- or ebp, esi
- lea ebx, DWORD PTR 2400959708[ecx*1+ebx]
- mov ecx, edi
- and ebp, eax
- and ecx, esi
- or ebp, ecx
- mov ecx, edx
- rol ecx, 5
- ror edi, 1
- add ebp, ecx
- ror edi, 1
- add ebx, ebp
- ; 40_59 51
- ; 40_59 52
- mov ecx, DWORD PTR 16[esp]
- mov ebp, DWORD PTR 24[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 48[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 4[esp]
- xor ecx, ebp
- mov ebp, edx
- rol ecx, 1
- or ebp, edi
- mov DWORD PTR 16[esp],ecx
- and ebp, esi
- lea ecx, DWORD PTR 2400959708[eax*1+ecx]
- mov eax, edx
- ror edx, 1
- and eax, edi
- or ebp, eax
- mov eax, ebx
- rol eax, 5
- add ebp, eax
- mov eax, DWORD PTR 20[esp]
- add ecx, ebp
- mov ebp, DWORD PTR 28[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 52[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 8[esp]
- ror edx, 1
- xor eax, ebp
- rol eax, 1
- mov ebp, ebx
- mov DWORD PTR 20[esp],eax
- or ebp, edx
- lea eax, DWORD PTR 2400959708[esi*1+eax]
- mov esi, ebx
- and ebp, edi
- and esi, edx
- or ebp, esi
- mov esi, ecx
- rol esi, 5
- ror ebx, 1
- add ebp, esi
- ror ebx, 1
- add eax, ebp
- ; 40_59 53
- ; 40_59 54
- mov esi, DWORD PTR 24[esp]
- mov ebp, DWORD PTR 32[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 56[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 12[esp]
- xor esi, ebp
- mov ebp, ecx
- rol esi, 1
- or ebp, ebx
- mov DWORD PTR 24[esp],esi
- and ebp, edx
- lea esi, DWORD PTR 2400959708[edi*1+esi]
- mov edi, ecx
- ror ecx, 1
- and edi, ebx
- or ebp, edi
- mov edi, eax
- rol edi, 5
- add ebp, edi
- mov edi, DWORD PTR 28[esp]
- add esi, ebp
- mov ebp, DWORD PTR 36[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 60[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 16[esp]
- ror ecx, 1
- xor edi, ebp
- rol edi, 1
- mov ebp, eax
- mov DWORD PTR 28[esp],edi
- or ebp, ecx
- lea edi, DWORD PTR 2400959708[edx*1+edi]
- mov edx, eax
- and ebp, ebx
- and edx, ecx
- or ebp, edx
- mov edx, esi
- rol edx, 5
- ror eax, 1
- add ebp, edx
- ror eax, 1
- add edi, ebp
- ; 40_59 55
- ; 40_59 56
- mov edx, DWORD PTR 32[esp]
- mov ebp, DWORD PTR 40[esp]
- xor edx, ebp
- mov ebp, DWORD PTR [esp]
- xor edx, ebp
- mov ebp, DWORD PTR 20[esp]
- xor edx, ebp
- mov ebp, esi
- rol edx, 1
- or ebp, eax
- mov DWORD PTR 32[esp],edx
- and ebp, ecx
- lea edx, DWORD PTR 2400959708[ebx*1+edx]
- mov ebx, esi
- ror esi, 1
- and ebx, eax
- or ebp, ebx
- mov ebx, edi
- rol ebx, 5
- add ebp, ebx
- mov ebx, DWORD PTR 36[esp]
- add edx, ebp
- mov ebp, DWORD PTR 44[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 4[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 24[esp]
- ror esi, 1
- xor ebx, ebp
- rol ebx, 1
- mov ebp, edi
- mov DWORD PTR 36[esp],ebx
- or ebp, esi
- lea ebx, DWORD PTR 2400959708[ecx*1+ebx]
- mov ecx, edi
- and ebp, eax
- and ecx, esi
- or ebp, ecx
- mov ecx, edx
- rol ecx, 5
- ror edi, 1
- add ebp, ecx
- ror edi, 1
- add ebx, ebp
- ; 40_59 57
- ; 40_59 58
- mov ecx, DWORD PTR 40[esp]
- mov ebp, DWORD PTR 48[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 8[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 28[esp]
- xor ecx, ebp
- mov ebp, edx
- rol ecx, 1
- or ebp, edi
- mov DWORD PTR 40[esp],ecx
- and ebp, esi
- lea ecx, DWORD PTR 2400959708[eax*1+ecx]
- mov eax, edx
- ror edx, 1
- and eax, edi
- or ebp, eax
- mov eax, ebx
- rol eax, 5
- add ebp, eax
- mov eax, DWORD PTR 44[esp]
- add ecx, ebp
- mov ebp, DWORD PTR 52[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 12[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 32[esp]
- ror edx, 1
- xor eax, ebp
- rol eax, 1
- mov ebp, ebx
- mov DWORD PTR 44[esp],eax
- or ebp, edx
- lea eax, DWORD PTR 2400959708[esi*1+eax]
- mov esi, ebx
- and ebp, edi
- and esi, edx
- or ebp, esi
- mov esi, ecx
- rol esi, 5
- ror ebx, 1
- add ebp, esi
- ror ebx, 1
- add eax, ebp
- ; 40_59 59
- ; 20_39 60
- mov esi, DWORD PTR 48[esp]
- mov ebp, DWORD PTR 56[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 16[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 36[esp]
- xor esi, ebp
- mov ebp, ecx
- rol esi, 1
- xor ebp, ebx
- mov DWORD PTR 48[esp],esi
- xor ebp, edx
- lea esi, DWORD PTR 3395469782[edi*1+esi]
- mov edi, eax
- rol edi, 5
- ror ecx, 1
- add edi, ebp
- ror ecx, 1
- add esi, edi
- ; 20_39 61
- mov edi, DWORD PTR 52[esp]
- mov ebp, DWORD PTR 60[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 20[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 40[esp]
- xor edi, ebp
- mov ebp, eax
- rol edi, 1
- xor ebp, ecx
- mov DWORD PTR 52[esp],edi
- xor ebp, ebx
- lea edi, DWORD PTR 3395469782[edx*1+edi]
- mov edx, esi
- rol edx, 5
- ror eax, 1
- add edx, ebp
- ror eax, 1
- add edi, edx
- ; 20_39 62
- mov edx, DWORD PTR 56[esp]
- mov ebp, DWORD PTR [esp]
- xor edx, ebp
- mov ebp, DWORD PTR 24[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 44[esp]
- xor edx, ebp
- mov ebp, esi
- rol edx, 1
- xor ebp, eax
- mov DWORD PTR 56[esp],edx
- xor ebp, ecx
- lea edx, DWORD PTR 3395469782[ebx*1+edx]
- mov ebx, edi
- rol ebx, 5
- ror esi, 1
- add ebx, ebp
- ror esi, 1
- add edx, ebx
- ; 20_39 63
- mov ebx, DWORD PTR 60[esp]
- mov ebp, DWORD PTR 4[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 28[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 48[esp]
- xor ebx, ebp
- mov ebp, edi
- rol ebx, 1
- xor ebp, esi
- mov DWORD PTR 60[esp],ebx
- xor ebp, eax
- lea ebx, DWORD PTR 3395469782[ecx*1+ebx]
- mov ecx, edx
- rol ecx, 5
- ror edi, 1
- add ecx, ebp
- ror edi, 1
- add ebx, ecx
- ; 20_39 64
- mov ecx, DWORD PTR [esp]
- mov ebp, DWORD PTR 8[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 32[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 52[esp]
- xor ecx, ebp
- mov ebp, edx
- rol ecx, 1
- xor ebp, edi
- mov DWORD PTR [esp],ecx
- xor ebp, esi
- lea ecx, DWORD PTR 3395469782[eax*1+ecx]
- mov eax, ebx
- rol eax, 5
- ror edx, 1
- add eax, ebp
- ror edx, 1
- add ecx, eax
- ; 20_39 65
- mov eax, DWORD PTR 4[esp]
- mov ebp, DWORD PTR 12[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 36[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 56[esp]
- xor eax, ebp
- mov ebp, ebx
- rol eax, 1
- xor ebp, edx
- mov DWORD PTR 4[esp],eax
- xor ebp, edi
- lea eax, DWORD PTR 3395469782[esi*1+eax]
- mov esi, ecx
- rol esi, 5
- ror ebx, 1
- add esi, ebp
- ror ebx, 1
- add eax, esi
- ; 20_39 66
- mov esi, DWORD PTR 8[esp]
- mov ebp, DWORD PTR 16[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 40[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 60[esp]
- xor esi, ebp
- mov ebp, ecx
- rol esi, 1
- xor ebp, ebx
- mov DWORD PTR 8[esp],esi
- xor ebp, edx
- lea esi, DWORD PTR 3395469782[edi*1+esi]
- mov edi, eax
- rol edi, 5
- ror ecx, 1
- add edi, ebp
- ror ecx, 1
- add esi, edi
- ; 20_39 67
- mov edi, DWORD PTR 12[esp]
- mov ebp, DWORD PTR 20[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 44[esp]
- xor edi, ebp
- mov ebp, DWORD PTR [esp]
- xor edi, ebp
- mov ebp, eax
- rol edi, 1
- xor ebp, ecx
- mov DWORD PTR 12[esp],edi
- xor ebp, ebx
- lea edi, DWORD PTR 3395469782[edx*1+edi]
- mov edx, esi
- rol edx, 5
- ror eax, 1
- add edx, ebp
- ror eax, 1
- add edi, edx
- ; 20_39 68
- mov edx, DWORD PTR 16[esp]
- mov ebp, DWORD PTR 24[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 48[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 4[esp]
- xor edx, ebp
- mov ebp, esi
- rol edx, 1
- xor ebp, eax
- mov DWORD PTR 16[esp],edx
- xor ebp, ecx
- lea edx, DWORD PTR 3395469782[ebx*1+edx]
- mov ebx, edi
- rol ebx, 5
- ror esi, 1
- add ebx, ebp
- ror esi, 1
- add edx, ebx
- ; 20_39 69
- mov ebx, DWORD PTR 20[esp]
- mov ebp, DWORD PTR 28[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 52[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 8[esp]
- xor ebx, ebp
- mov ebp, edi
- rol ebx, 1
- xor ebp, esi
- mov DWORD PTR 20[esp],ebx
- xor ebp, eax
- lea ebx, DWORD PTR 3395469782[ecx*1+ebx]
- mov ecx, edx
- rol ecx, 5
- ror edi, 1
- add ecx, ebp
- ror edi, 1
- add ebx, ecx
- ; 20_39 70
- mov ecx, DWORD PTR 24[esp]
- mov ebp, DWORD PTR 32[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 56[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 12[esp]
- xor ecx, ebp
- mov ebp, edx
- rol ecx, 1
- xor ebp, edi
- mov DWORD PTR 24[esp],ecx
- xor ebp, esi
- lea ecx, DWORD PTR 3395469782[eax*1+ecx]
- mov eax, ebx
- rol eax, 5
- ror edx, 1
- add eax, ebp
- ror edx, 1
- add ecx, eax
- ; 20_39 71
- mov eax, DWORD PTR 28[esp]
- mov ebp, DWORD PTR 36[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 60[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 16[esp]
- xor eax, ebp
- mov ebp, ebx
- rol eax, 1
- xor ebp, edx
- mov DWORD PTR 28[esp],eax
- xor ebp, edi
- lea eax, DWORD PTR 3395469782[esi*1+eax]
- mov esi, ecx
- rol esi, 5
- ror ebx, 1
- add esi, ebp
- ror ebx, 1
- add eax, esi
- ; 20_39 72
- mov esi, DWORD PTR 32[esp]
- mov ebp, DWORD PTR 40[esp]
- xor esi, ebp
- mov ebp, DWORD PTR [esp]
- xor esi, ebp
- mov ebp, DWORD PTR 20[esp]
- xor esi, ebp
- mov ebp, ecx
- rol esi, 1
- xor ebp, ebx
- mov DWORD PTR 32[esp],esi
- xor ebp, edx
- lea esi, DWORD PTR 3395469782[edi*1+esi]
- mov edi, eax
- rol edi, 5
- ror ecx, 1
- add edi, ebp
- ror ecx, 1
- add esi, edi
- ; 20_39 73
- mov edi, DWORD PTR 36[esp]
- mov ebp, DWORD PTR 44[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 4[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 24[esp]
- xor edi, ebp
- mov ebp, eax
- rol edi, 1
- xor ebp, ecx
- mov DWORD PTR 36[esp],edi
- xor ebp, ebx
- lea edi, DWORD PTR 3395469782[edx*1+edi]
- mov edx, esi
- rol edx, 5
- ror eax, 1
- add edx, ebp
- ror eax, 1
- add edi, edx
- ; 20_39 74
- mov edx, DWORD PTR 40[esp]
- mov ebp, DWORD PTR 48[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 8[esp]
- xor edx, ebp
- mov ebp, DWORD PTR 28[esp]
- xor edx, ebp
- mov ebp, esi
- rol edx, 1
- xor ebp, eax
- mov DWORD PTR 40[esp],edx
- xor ebp, ecx
- lea edx, DWORD PTR 3395469782[ebx*1+edx]
- mov ebx, edi
- rol ebx, 5
- ror esi, 1
- add ebx, ebp
- ror esi, 1
- add edx, ebx
- ; 20_39 75
- mov ebx, DWORD PTR 44[esp]
- mov ebp, DWORD PTR 52[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 12[esp]
- xor ebx, ebp
- mov ebp, DWORD PTR 32[esp]
- xor ebx, ebp
- mov ebp, edi
- rol ebx, 1
- xor ebp, esi
- mov DWORD PTR 44[esp],ebx
- xor ebp, eax
- lea ebx, DWORD PTR 3395469782[ecx*1+ebx]
- mov ecx, edx
- rol ecx, 5
- ror edi, 1
- add ecx, ebp
- ror edi, 1
- add ebx, ecx
- ; 20_39 76
- mov ecx, DWORD PTR 48[esp]
- mov ebp, DWORD PTR 56[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 16[esp]
- xor ecx, ebp
- mov ebp, DWORD PTR 36[esp]
- xor ecx, ebp
- mov ebp, edx
- rol ecx, 1
- xor ebp, edi
- mov DWORD PTR 48[esp],ecx
- xor ebp, esi
- lea ecx, DWORD PTR 3395469782[eax*1+ecx]
- mov eax, ebx
- rol eax, 5
- ror edx, 1
- add eax, ebp
- ror edx, 1
- add ecx, eax
- ; 20_39 77
- mov eax, DWORD PTR 52[esp]
- mov ebp, DWORD PTR 60[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 20[esp]
- xor eax, ebp
- mov ebp, DWORD PTR 40[esp]
- xor eax, ebp
- mov ebp, ebx
- rol eax, 1
- xor ebp, edx
- mov DWORD PTR 52[esp],eax
- xor ebp, edi
- lea eax, DWORD PTR 3395469782[esi*1+eax]
- mov esi, ecx
- rol esi, 5
- ror ebx, 1
- add esi, ebp
- ror ebx, 1
- add eax, esi
- ; 20_39 78
- mov esi, DWORD PTR 56[esp]
- mov ebp, DWORD PTR [esp]
- xor esi, ebp
- mov ebp, DWORD PTR 24[esp]
- xor esi, ebp
- mov ebp, DWORD PTR 44[esp]
- xor esi, ebp
- mov ebp, ecx
- rol esi, 1
- xor ebp, ebx
- mov DWORD PTR 56[esp],esi
- xor ebp, edx
- lea esi, DWORD PTR 3395469782[edi*1+esi]
- mov edi, eax
- rol edi, 5
- ror ecx, 1
- add edi, ebp
- ror ecx, 1
- add esi, edi
- ; 20_39 79
- mov edi, DWORD PTR 60[esp]
- mov ebp, DWORD PTR 4[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 28[esp]
- xor edi, ebp
- mov ebp, DWORD PTR 48[esp]
- xor edi, ebp
- mov ebp, eax
- rol edi, 1
- xor ebp, ecx
- mov DWORD PTR 60[esp],edi
- xor ebp, ebx
- lea edi, DWORD PTR 3395469782[edx*1+edi]
- mov edx, esi
- rol edx, 5
- add edx, ebp
- mov ebp, DWORD PTR 128[esp]
- ror eax, 1
- add edi, edx
- ror eax, 1
- ; End processing
- ;
- mov edx, DWORD PTR 12[ebp]
- add edx, ecx
- mov ecx, DWORD PTR 4[ebp]
- add ecx, esi
- mov esi, eax
- mov eax, DWORD PTR [ebp]
- mov DWORD PTR 12[ebp],edx
- add eax, edi
- mov edi, DWORD PTR 16[ebp]
- add edi, ebx
- mov ebx, DWORD PTR 8[ebp]
- add ebx, esi
- mov DWORD PTR [ebp],eax
- mov esi, DWORD PTR 132[esp]
- mov DWORD PTR 8[ebp],ebx
- add esi, 64
- mov eax, DWORD PTR 68[esp]
- mov DWORD PTR 16[ebp],edi
- cmp esi, eax
- mov DWORD PTR 4[ebp],ecx
- jl L000start
- add esp, 108
- pop edi
- pop ebx
- pop ebp
- pop esi
- ret
-_TEXT SEGMENT
-PUBLIC _sha1_block_asm_host_order
-
-_sha1_block_asm_host_order PROC NEAR
- mov ecx, DWORD PTR 12[esp]
- push esi
- shl ecx, 6
- mov esi, DWORD PTR 12[esp]
- push ebp
- add ecx, esi
- push ebx
- mov ebp, DWORD PTR 16[esp]
- push edi
- mov edx, DWORD PTR 12[ebp]
- sub esp, 108
- mov edi, DWORD PTR 16[ebp]
- mov ebx, DWORD PTR 8[ebp]
- mov DWORD PTR 68[esp],ecx
- ; First we need to setup the X array
- mov eax, DWORD PTR [esi]
- mov ecx, DWORD PTR 4[esi]
- mov DWORD PTR [esp],eax
- mov DWORD PTR 4[esp],ecx
- mov eax, DWORD PTR 8[esi]
- mov ecx, DWORD PTR 12[esi]
- mov DWORD PTR 8[esp],eax
- mov DWORD PTR 12[esp],ecx
- mov eax, DWORD PTR 16[esi]
- mov ecx, DWORD PTR 20[esi]
- mov DWORD PTR 16[esp],eax
- mov DWORD PTR 20[esp],ecx
- mov eax, DWORD PTR 24[esi]
- mov ecx, DWORD PTR 28[esi]
- mov DWORD PTR 24[esp],eax
- mov DWORD PTR 28[esp],ecx
- mov eax, DWORD PTR 32[esi]
- mov ecx, DWORD PTR 36[esi]
- mov DWORD PTR 32[esp],eax
- mov DWORD PTR 36[esp],ecx
- mov eax, DWORD PTR 40[esi]
- mov ecx, DWORD PTR 44[esi]
- mov DWORD PTR 40[esp],eax
- mov DWORD PTR 44[esp],ecx
- mov eax, DWORD PTR 48[esi]
- mov ecx, DWORD PTR 52[esi]
- mov DWORD PTR 48[esp],eax
- mov DWORD PTR 52[esp],ecx
- mov eax, DWORD PTR 56[esi]
- mov ecx, DWORD PTR 60[esi]
- mov DWORD PTR 56[esp],eax
- mov DWORD PTR 60[esp],ecx
- jmp L001shortcut
-_sha1_block_asm_host_order ENDP
-_TEXT ENDS
-_sha1_block_asm_data_order ENDP
-_TEXT ENDS
-END