aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/rc5/asm/r5-win32.asm
diff options
context:
space:
mode:
authorRalf S. Engelschall <rse@openssl.org>1998-12-21 10:56:39 +0000
committerRalf S. Engelschall <rse@openssl.org>1998-12-21 10:56:39 +0000
commit58964a492275ca9a59a0cd9c8155cb2491b4b909 (patch)
treec7b16876a5789463bbbb468ef4829c8129b3d718 /crypto/rc5/asm/r5-win32.asm
parentd02b48c63a58ea4367a0e905979f140b7d090f86 (diff)
downloadopenssl-58964a492275ca9a59a0cd9c8155cb2491b4b909.tar.gz
Import of old SSLeay release: SSLeay 0.9.0b
Diffstat (limited to 'crypto/rc5/asm/r5-win32.asm')
-rw-r--r--crypto/rc5/asm/r5-win32.asm574
1 files changed, 574 insertions, 0 deletions
diff --git a/crypto/rc5/asm/r5-win32.asm b/crypto/rc5/asm/r5-win32.asm
new file mode 100644
index 0000000000..f43d3711f0
--- /dev/null
+++ b/crypto/rc5/asm/r5-win32.asm
@@ -0,0 +1,574 @@
+ ; 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