📄 c-win32.asm
字号:
; 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 SEGMENTPUBLIC _CAST_encryptEXTERN _CAST_S_table0:DWORDEXTERN _CAST_S_table1:DWORDEXTERN _CAST_S_table2:DWORDEXTERN _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 SEGMENTPUBLIC _CAST_decryptEXTERN _CAST_S_table0:DWORDEXTERN _CAST_S_table1:DWORDEXTERN _CAST_S_table2:DWORDEXTERN _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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -