diff options
Diffstat (limited to 'crypto/bf/asm/win32.asm')
-rw-r--r-- | crypto/bf/asm/win32.asm | 663 |
1 files changed, 663 insertions, 0 deletions
diff --git a/crypto/bf/asm/win32.asm b/crypto/bf/asm/win32.asm new file mode 100644 index 0000000000..6d2333f323 --- /dev/null +++ b/crypto/bf/asm/win32.asm @@ -0,0 +1,663 @@ + ; Don't even think of reading this code + ; It was automatically generated by bf586.pl + ; Which is a perl program used to generate the x86 assember for + ; any of elf, a.out, Win32, or Solaris + ; It can be found in SSLeay 0.7.0+ + ; eric <eay@cryptsoft.com> + ; + TITLE bfx86xxxx.asm + .386 +.model FLAT +_TEXT SEGMENT +PUBLIC _BF_encrypt +EXTRN _des_SPtrans:DWORD +_BF_encrypt PROC NEAR + push ebp + push ebx + push esi + push edi + ; + ; Load the 2 words + mov eax, DWORD PTR 20[esp] + mov ecx, DWORD PTR [eax] + mov edx, DWORD PTR 4[eax] + ; + ; P pointer, s and enc flag + mov edi, DWORD PTR 24[esp] + xor eax, eax + xor ebx, ebx + mov ebp, DWORD PTR 28[esp] + cmp ebp, 0 + je $L000start_decrypt + xor ecx, DWORD PTR [edi] + ; + ; Round 0 + ror ecx, 16 + mov esi, DWORD PTR 4[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 1 + ror edx, 16 + mov esi, DWORD PTR 8[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + ; + ; Round 2 + ror ecx, 16 + mov esi, DWORD PTR 12[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 3 + ror edx, 16 + mov esi, DWORD PTR 16[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + ; + ; Round 4 + ror ecx, 16 + mov esi, DWORD PTR 20[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 5 + ror edx, 16 + mov esi, DWORD PTR 24[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + ; + ; Round 6 + ror ecx, 16 + mov esi, DWORD PTR 28[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 7 + ror edx, 16 + mov esi, DWORD PTR 32[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + ; + ; Round 8 + ror ecx, 16 + mov esi, DWORD PTR 36[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 9 + ror edx, 16 + mov esi, DWORD PTR 40[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + ; + ; Round 10 + ror ecx, 16 + mov esi, DWORD PTR 44[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 11 + ror edx, 16 + mov esi, DWORD PTR 48[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + ; + ; Round 12 + ror ecx, 16 + mov esi, DWORD PTR 52[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 13 + ror edx, 16 + mov esi, DWORD PTR 56[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + ; + ; Round 14 + ror ecx, 16 + mov esi, DWORD PTR 60[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 15 + ror edx, 16 + mov esi, DWORD PTR 64[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + xor edx, DWORD PTR 68[edi] + mov eax, DWORD PTR 20[esp] + mov DWORD PTR [eax],edx + mov DWORD PTR 4[eax],ecx + pop edi + pop esi + pop ebx + pop ebp + ret +$L000start_decrypt: + xor ecx, DWORD PTR 68[edi] + ; + ; Round 16 + ror ecx, 16 + mov esi, DWORD PTR 64[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 15 + ror edx, 16 + mov esi, DWORD PTR 60[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + ; + ; Round 14 + ror ecx, 16 + mov esi, DWORD PTR 56[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 13 + ror edx, 16 + mov esi, DWORD PTR 52[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + ; + ; Round 12 + ror ecx, 16 + mov esi, DWORD PTR 48[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 11 + ror edx, 16 + mov esi, DWORD PTR 44[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + ; + ; Round 10 + ror ecx, 16 + mov esi, DWORD PTR 40[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 9 + ror edx, 16 + mov esi, DWORD PTR 36[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + ; + ; Round 8 + ror ecx, 16 + mov esi, DWORD PTR 32[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 7 + ror edx, 16 + mov esi, DWORD PTR 28[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + ; + ; Round 6 + ror ecx, 16 + mov esi, DWORD PTR 24[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 5 + ror edx, 16 + mov esi, DWORD PTR 20[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + ; + ; Round 4 + ror ecx, 16 + mov esi, DWORD PTR 16[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 3 + ror edx, 16 + mov esi, DWORD PTR 12[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + ; + ; Round 2 + ror ecx, 16 + mov esi, DWORD PTR 8[edi] + mov al, ch + mov bl, cl + ror ecx, 16 + xor edx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, ch + mov bl, cl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor edx, esi + ; + ; Round 1 + ror edx, 16 + mov esi, DWORD PTR 4[edi] + mov al, dh + mov bl, dl + ror edx, 16 + xor ecx, esi + mov esi, DWORD PTR 72[eax*4+edi] + mov ebp, DWORD PTR 1096[ebx*4+edi] + mov al, dh + mov bl, dl + add esi, ebp + mov eax, DWORD PTR 2120[eax*4+edi] + xor esi, eax + mov ebp, DWORD PTR 3144[ebx*4+edi] + add esi, ebp + xor eax, eax + xor ecx, esi + xor edx, DWORD PTR [edi] + mov eax, DWORD PTR 20[esp] + mov DWORD PTR [eax],edx + mov DWORD PTR 4[eax],ecx + pop edi + pop esi + pop ebx + pop ebp + ret +_BF_encrypt ENDP +_TEXT ENDS +END |