c-win32.asm
来自「openssl是ssl的开源项目」· 汇编 代码 · 共 941 行 · 第 1/2 页
ASM
941 行
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 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 mov eax, DWORD PTR 20[esp] xor esi, ecx nop 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 SEGMENTPUBLIC _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 $L000decrypt and ebp, 4294967288 mov eax, DWORD PTR 8[esp] mov ebx, DWORD PTR 12[esp] jz $L001encrypt_finishL002encrypt_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 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 ebpL005ej7: xor edx, edx mov dh, BYTE PTR 6[esi] shl edx, 8L006ej6: mov dh, BYTE PTR 5[esi]L007ej5: mov dl, BYTE PTR 4[esi]L008ej4: mov ecx, DWORD PTR [esi] jmp $L009ejendL010ej3: mov ch, BYTE PTR 2[esi] xor ecx, ecx shl ecx, 8L011ej2: 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 _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 $L003finish$L000decrypt: and ebp, 4294967288 mov eax, DWORD PTR 16[esp] mov ebx, DWORD PTR 20[esp] jz $L013decrypt_finishL014decrypt_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 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 _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]L015dj7: ror edx, 16 mov BYTE PTR 6[edi],dl shr edx, 16L016dj6: mov BYTE PTR 5[edi],dhL017dj5: mov BYTE PTR 4[edi],dlL018dj4: mov DWORD PTR [edi],ecx jmp $L019djendL020dj3: ror ecx, 16 mov BYTE PTR 2[edi],cl shl ecx, 16L021dj2: mov BYTE PTR 1[esi],chL022dj1: 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 L005ej7L023cbc_dec_jmp_table: DD 0 DD L022dj1 DD L021dj2 DD L020dj3 DD L018dj4 DD L017dj5 DD L016dj6 DD L015dj7_CAST_cbc_encrypt ENDP_TEXT ENDSEND
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?