📄 r5-win32.asm
字号:
; 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, gaswin (for GNU as on Win32) or Solaris ; eric <eay@cryptsoft.com> ; segment .textglobal _RC5_32_encrypt_RC5_32_encrypt: ; push ebp push esi push edi mov edx, [16+esp] mov ebp, [20+esp] ; Load the 2 words mov edi, [edx] mov esi, [4+edx] push ebx mov ebx, [ebp] add edi, [4+ebp] add esi, [8+ebp] xor edi, esi mov eax, [12+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [16+ebp] mov ecx, edi rol esi, cl add esi, eax xor edi, esi mov eax, [20+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [24+ebp] mov ecx, edi rol esi, cl add esi, eax xor edi, esi mov eax, [28+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [32+ebp] mov ecx, edi rol esi, cl add esi, eax xor edi, esi mov eax, [36+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [40+ebp] mov ecx, edi rol esi, cl add esi, eax xor edi, esi mov eax, [44+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [48+ebp] mov ecx, edi rol esi, cl add esi, eax xor edi, esi mov eax, [52+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [56+ebp] mov ecx, edi rol esi, cl add esi, eax xor edi, esi mov eax, [60+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [64+ebp] mov ecx, edi rol esi, cl add esi, eax xor edi, esi mov eax, [68+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [72+ebp] mov ecx, edi rol esi, cl add esi, eax cmp ebx, 8 je NEAR $L000rc5_exit xor edi, esi mov eax, [76+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [80+ebp] mov ecx, edi rol esi, cl add esi, eax xor edi, esi mov eax, [84+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [88+ebp] mov ecx, edi rol esi, cl add esi, eax xor edi, esi mov eax, [92+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [96+ebp] mov ecx, edi rol esi, cl add esi, eax xor edi, esi mov eax, [100+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [104+ebp] mov ecx, edi rol esi, cl add esi, eax cmp ebx, 12 je NEAR $L000rc5_exit xor edi, esi mov eax, [108+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [112+ebp] mov ecx, edi rol esi, cl add esi, eax xor edi, esi mov eax, [116+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [120+ebp] mov ecx, edi rol esi, cl add esi, eax xor edi, esi mov eax, [124+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [128+ebp] mov ecx, edi rol esi, cl add esi, eax xor edi, esi mov eax, [132+ebp] mov ecx, esi rol edi, cl add edi, eax xor esi, edi mov eax, [136+ebp] mov ecx, edi rol esi, cl add esi, eax$L000rc5_exit: mov [edx], edi mov [4+edx], esi pop ebx pop edi pop esi pop ebp retglobal _RC5_32_decrypt_RC5_32_decrypt: ; push ebp push esi push edi mov edx, [16+esp] mov ebp, [20+esp] ; Load the 2 words mov edi, [edx] mov esi, [4+edx] push ebx mov ebx, [ebp] cmp ebx, 12 je NEAR $L001rc5_dec_12 cmp ebx, 8 je NEAR $L002rc5_dec_8 mov eax, [136+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [132+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi mov eax, [128+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [124+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi mov eax, [120+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [116+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi mov eax, [112+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [108+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi$L001rc5_dec_12: mov eax, [104+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [100+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi mov eax, [96+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [92+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi mov eax, [88+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [84+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi mov eax, [80+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [76+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi$L002rc5_dec_8: mov eax, [72+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [68+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi mov eax, [64+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [60+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi mov eax, [56+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [52+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi mov eax, [48+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [44+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi mov eax, [40+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [36+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi mov eax, [32+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [28+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi mov eax, [24+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [20+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi mov eax, [16+ebp] sub esi, eax mov ecx, edi ror esi, cl xor esi, edi mov eax, [12+ebp] sub edi, eax mov ecx, esi ror edi, cl xor edi, esi sub esi, [8+ebp] sub edi, [4+ebp]L003rc5_exit: mov [edx], edi mov [4+edx], esi pop ebx pop edi pop esi pop ebp retglobal _RC5_32_cbc_encrypt_RC5_32_cbc_encrypt: ; push ebp push ebx push esi push edi mov ebp, [28+esp] ; getting iv ptr from parameter 4 mov ebx, [36+esp] mov esi, [ebx] mov edi, [4+ebx] push edi push esi push edi push esi mov ebx, esp mov esi, [36+esp] mov edi, [40+esp] ; getting encrypt flag from parameter 5 mov ecx, [56+esp] ; get and push parameter 3 mov eax, [48+esp] push eax push ebx cmp ecx, 0 jz NEAR $L004decrypt and ebp, 4294967288 mov eax, [8+esp] mov ebx, [12+esp] jz NEAR $L005encrypt_finishL006encrypt_loop: mov ecx, [esi] mov edx, [4+esi] xor eax, ecx xor ebx, edx mov [8+esp], eax mov [12+esp], ebx call _RC5_32_encrypt mov eax, [8+esp] mov ebx, [12+esp] mov [edi], eax mov [4+edi], ebx add esi, 8 add edi, 8 sub ebp, 8 jnz NEAR L006encrypt_loop$L005encrypt_finish: mov ebp, [52+esp] and ebp, 7 jz NEAR $L007finish xor ecx, ecx xor edx, edx mov ebp, [$L008cbc_enc_jmp_table+ebp*4] jmp ebpL009ej7: mov dh, [6+esi] shl edx, 8L010ej6: mov dh, [5+esi]L011ej5: mov dl, [4+esi]L012ej4: mov ecx, [esi] jmp $L013ejendL014ej3: mov ch, [2+esi] shl ecx, 8L015ej2: mov ch, [1+esi]L016ej1: mov cl, [esi]$L013ejend: xor eax, ecx xor ebx, edx mov [8+esp], eax mov [12+esp], ebx call _RC5_32_encrypt mov eax, [8+esp] mov ebx, [12+esp] mov [edi], eax mov [4+edi], ebx jmp $L007finish$L004decrypt: and ebp, 4294967288 mov eax, [16+esp] mov ebx, [20+esp] jz NEAR $L017decrypt_finishL018decrypt_loop: mov eax, [esi] mov ebx, [4+esi] mov [8+esp], eax mov [12+esp], ebx call _RC5_32_decrypt mov eax, [8+esp] mov ebx, [12+esp] mov ecx, [16+esp] mov edx, [20+esp] xor ecx, eax xor edx, ebx mov eax, [esi] mov ebx, [4+esi] mov [edi], ecx mov [4+edi], edx mov [16+esp], eax mov [20+esp], ebx add esi, 8 add edi, 8 sub ebp, 8 jnz NEAR L018decrypt_loop$L017decrypt_finish: mov ebp, [52+esp] and ebp, 7 jz NEAR $L007finish mov eax, [esi] mov ebx, [4+esi] mov [8+esp], eax mov [12+esp], ebx call _RC5_32_decrypt mov eax, [8+esp] mov ebx, [12+esp] mov ecx, [16+esp] mov edx, [20+esp] xor ecx, eax xor edx, ebx mov eax, [esi] mov ebx, [4+esi]L019dj7: ror edx, 16 mov [6+edi], dl shr edx, 16L020dj6: mov [5+edi], dhL021dj5: mov [4+edi], dlL022dj4: mov [edi], ecx jmp $L023djendL024dj3: ror ecx, 16 mov [2+edi], cl shl ecx, 16L025dj2: mov [1+esi], chL026dj1: mov [esi], cl$L023djend: jmp $L007finish$L007finish: mov ecx, [60+esp] add esp, 24 mov [ecx], eax mov [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 L009ej7L027cbc_dec_jmp_table: DD 0 DD L026dj1 DD L025dj2 DD L024dj3 DD L022dj4 DD L021dj5 DD L020dj6 DD L019dj7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -