| TITLE aes-586.asm |
| IF @Version LT 800 |
| ECHO MASM version 8.00 or later is strongly recommended. |
| ENDIF |
| .686 |
| .XMM |
| IF @Version LT 800 |
| XMMWORD STRUCT 16 |
| DQ 2 dup (?) |
| XMMWORD ENDS |
| ENDIF |
| |
| .MODEL FLAT |
| OPTION DOTNAME |
| IF @Version LT 800 |
| .text$ SEGMENT PAGE 'CODE' |
| ELSE |
| .text$ SEGMENT ALIGN(64) 'CODE' |
| ENDIF |
| ALIGN 16 |
| __x86_AES_encrypt_compact PROC PRIVATE |
| mov DWORD PTR 20[esp],edi |
| xor eax,DWORD PTR [edi] |
| xor ebx,DWORD PTR 4[edi] |
| xor ecx,DWORD PTR 8[edi] |
| xor edx,DWORD PTR 12[edi] |
| mov esi,DWORD PTR 240[edi] |
| lea esi,DWORD PTR [esi*1+esi-2] |
| lea esi,DWORD PTR [esi*8+edi] |
| mov DWORD PTR 24[esp],esi |
| mov edi,DWORD PTR [ebp-128] |
| mov esi,DWORD PTR [ebp-96] |
| mov edi,DWORD PTR [ebp-64] |
| mov esi,DWORD PTR [ebp-32] |
| mov edi,DWORD PTR [ebp] |
| mov esi,DWORD PTR 32[ebp] |
| mov edi,DWORD PTR 64[ebp] |
| mov esi,DWORD PTR 96[ebp] |
| ALIGN 16 |
| $L000loop: |
| mov esi,eax |
| and esi,255 |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| movzx edi,bh |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,8 |
| xor esi,edi |
| mov edi,ecx |
| shr edi,16 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,16 |
| xor esi,edi |
| mov edi,edx |
| shr edi,24 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,24 |
| xor esi,edi |
| mov DWORD PTR 4[esp],esi |
| mov esi,ebx |
| and esi,255 |
| shr ebx,16 |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| movzx edi,ch |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,8 |
| xor esi,edi |
| mov edi,edx |
| shr edi,16 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,16 |
| xor esi,edi |
| mov edi,eax |
| shr edi,24 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,24 |
| xor esi,edi |
| mov DWORD PTR 8[esp],esi |
| mov esi,ecx |
| and esi,255 |
| shr ecx,24 |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| movzx edi,dh |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,8 |
| xor esi,edi |
| mov edi,eax |
| shr edi,16 |
| and edx,255 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,16 |
| xor esi,edi |
| movzx edi,bh |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,24 |
| xor esi,edi |
| and edx,255 |
| movzx edx,BYTE PTR [edx*1+ebp-128] |
| movzx eax,ah |
| movzx eax,BYTE PTR [eax*1+ebp-128] |
| shl eax,8 |
| xor edx,eax |
| mov eax,DWORD PTR 4[esp] |
| and ebx,255 |
| movzx ebx,BYTE PTR [ebx*1+ebp-128] |
| shl ebx,16 |
| xor edx,ebx |
| mov ebx,DWORD PTR 8[esp] |
| movzx ecx,BYTE PTR [ecx*1+ebp-128] |
| shl ecx,24 |
| xor edx,ecx |
| mov ecx,esi |
| mov esi,ecx |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea edi,DWORD PTR [ecx*1+ecx] |
| sub esi,ebp |
| and edi,4278124286 |
| and esi,454761243 |
| mov ebp,ecx |
| xor esi,edi |
| xor ecx,esi |
| rol ecx,24 |
| xor ecx,esi |
| ror ebp,16 |
| xor ecx,ebp |
| ror ebp,8 |
| xor ecx,ebp |
| mov esi,edx |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea edi,DWORD PTR [edx*1+edx] |
| sub esi,ebp |
| and edi,4278124286 |
| and esi,454761243 |
| mov ebp,edx |
| xor esi,edi |
| xor edx,esi |
| rol edx,24 |
| xor edx,esi |
| ror ebp,16 |
| xor edx,ebp |
| ror ebp,8 |
| xor edx,ebp |
| mov esi,eax |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea edi,DWORD PTR [eax*1+eax] |
| sub esi,ebp |
| and edi,4278124286 |
| and esi,454761243 |
| mov ebp,eax |
| xor esi,edi |
| xor eax,esi |
| rol eax,24 |
| xor eax,esi |
| ror ebp,16 |
| xor eax,ebp |
| ror ebp,8 |
| xor eax,ebp |
| mov esi,ebx |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea edi,DWORD PTR [ebx*1+ebx] |
| sub esi,ebp |
| and edi,4278124286 |
| and esi,454761243 |
| mov ebp,ebx |
| xor esi,edi |
| xor ebx,esi |
| rol ebx,24 |
| xor ebx,esi |
| ror ebp,16 |
| xor ebx,ebp |
| ror ebp,8 |
| xor ebx,ebp |
| mov edi,DWORD PTR 20[esp] |
| mov ebp,DWORD PTR 28[esp] |
| add edi,16 |
| xor eax,DWORD PTR [edi] |
| xor ebx,DWORD PTR 4[edi] |
| xor ecx,DWORD PTR 8[edi] |
| xor edx,DWORD PTR 12[edi] |
| cmp edi,DWORD PTR 24[esp] |
| mov DWORD PTR 20[esp],edi |
| jb $L000loop |
| mov esi,eax |
| and esi,255 |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| movzx edi,bh |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,8 |
| xor esi,edi |
| mov edi,ecx |
| shr edi,16 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,16 |
| xor esi,edi |
| mov edi,edx |
| shr edi,24 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,24 |
| xor esi,edi |
| mov DWORD PTR 4[esp],esi |
| mov esi,ebx |
| and esi,255 |
| shr ebx,16 |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| movzx edi,ch |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,8 |
| xor esi,edi |
| mov edi,edx |
| shr edi,16 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,16 |
| xor esi,edi |
| mov edi,eax |
| shr edi,24 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,24 |
| xor esi,edi |
| mov DWORD PTR 8[esp],esi |
| mov esi,ecx |
| and esi,255 |
| shr ecx,24 |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| movzx edi,dh |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,8 |
| xor esi,edi |
| mov edi,eax |
| shr edi,16 |
| and edx,255 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,16 |
| xor esi,edi |
| movzx edi,bh |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,24 |
| xor esi,edi |
| mov edi,DWORD PTR 20[esp] |
| and edx,255 |
| movzx edx,BYTE PTR [edx*1+ebp-128] |
| movzx eax,ah |
| movzx eax,BYTE PTR [eax*1+ebp-128] |
| shl eax,8 |
| xor edx,eax |
| mov eax,DWORD PTR 4[esp] |
| and ebx,255 |
| movzx ebx,BYTE PTR [ebx*1+ebp-128] |
| shl ebx,16 |
| xor edx,ebx |
| mov ebx,DWORD PTR 8[esp] |
| movzx ecx,BYTE PTR [ecx*1+ebp-128] |
| shl ecx,24 |
| xor edx,ecx |
| mov ecx,esi |
| xor eax,DWORD PTR 16[edi] |
| xor ebx,DWORD PTR 20[edi] |
| xor ecx,DWORD PTR 24[edi] |
| xor edx,DWORD PTR 28[edi] |
| ret |
| __x86_AES_encrypt_compact ENDP |
| ALIGN 16 |
| __sse_AES_encrypt_compact PROC PRIVATE |
| pxor mm0,QWORD PTR [edi] |
| pxor mm4,QWORD PTR 8[edi] |
| mov esi,DWORD PTR 240[edi] |
| lea esi,DWORD PTR [esi*1+esi-2] |
| lea esi,DWORD PTR [esi*8+edi] |
| mov DWORD PTR 24[esp],esi |
| mov eax,454761243 |
| mov DWORD PTR 8[esp],eax |
| mov DWORD PTR 12[esp],eax |
| mov eax,DWORD PTR [ebp-128] |
| mov ebx,DWORD PTR [ebp-96] |
| mov ecx,DWORD PTR [ebp-64] |
| mov edx,DWORD PTR [ebp-32] |
| mov eax,DWORD PTR [ebp] |
| mov ebx,DWORD PTR 32[ebp] |
| mov ecx,DWORD PTR 64[ebp] |
| mov edx,DWORD PTR 96[ebp] |
| ALIGN 16 |
| $L001loop: |
| pshufw mm1,mm0,8 |
| pshufw mm5,mm4,13 |
| movd eax,mm1 |
| movd ebx,mm5 |
| movzx esi,al |
| movzx ecx,BYTE PTR [esi*1+ebp-128] |
| pshufw mm2,mm0,13 |
| movzx edx,ah |
| movzx edx,BYTE PTR [edx*1+ebp-128] |
| shl edx,8 |
| shr eax,16 |
| movzx esi,bl |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,16 |
| or ecx,esi |
| pshufw mm6,mm4,8 |
| movzx esi,bh |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,24 |
| or edx,esi |
| shr ebx,16 |
| movzx esi,ah |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,8 |
| or ecx,esi |
| movzx esi,bh |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,24 |
| or ecx,esi |
| movd mm0,ecx |
| movzx esi,al |
| movzx ecx,BYTE PTR [esi*1+ebp-128] |
| movd eax,mm2 |
| movzx esi,bl |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,16 |
| or ecx,esi |
| movd ebx,mm6 |
| movzx esi,ah |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,24 |
| or ecx,esi |
| movzx esi,bh |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,8 |
| or ecx,esi |
| movd mm1,ecx |
| movzx esi,bl |
| movzx ecx,BYTE PTR [esi*1+ebp-128] |
| shr ebx,16 |
| movzx esi,al |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,16 |
| or ecx,esi |
| shr eax,16 |
| punpckldq mm0,mm1 |
| movzx esi,ah |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,24 |
| or ecx,esi |
| and eax,255 |
| movzx eax,BYTE PTR [eax*1+ebp-128] |
| shl eax,16 |
| or edx,eax |
| movzx esi,bh |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,8 |
| or ecx,esi |
| movd mm4,ecx |
| and ebx,255 |
| movzx ebx,BYTE PTR [ebx*1+ebp-128] |
| or edx,ebx |
| movd mm5,edx |
| punpckldq mm4,mm5 |
| add edi,16 |
| cmp edi,DWORD PTR 24[esp] |
| ja $L002out |
| movq mm2,QWORD PTR 8[esp] |
| pxor mm3,mm3 |
| pxor mm7,mm7 |
| movq mm1,mm0 |
| movq mm5,mm4 |
| pcmpgtb mm3,mm0 |
| pcmpgtb mm7,mm4 |
| pand mm3,mm2 |
| pand mm7,mm2 |
| pshufw mm2,mm0,177 |
| pshufw mm6,mm4,177 |
| paddb mm0,mm0 |
| paddb mm4,mm4 |
| pxor mm0,mm3 |
| pxor mm4,mm7 |
| pshufw mm3,mm2,177 |
| pshufw mm7,mm6,177 |
| pxor mm1,mm0 |
| pxor mm5,mm4 |
| pxor mm0,mm2 |
| pxor mm4,mm6 |
| movq mm2,mm3 |
| movq mm6,mm7 |
| pslld mm3,8 |
| pslld mm7,8 |
| psrld mm2,24 |
| psrld mm6,24 |
| pxor mm0,mm3 |
| pxor mm4,mm7 |
| pxor mm0,mm2 |
| pxor mm4,mm6 |
| movq mm3,mm1 |
| movq mm7,mm5 |
| movq mm2,QWORD PTR [edi] |
| movq mm6,QWORD PTR 8[edi] |
| psrld mm1,8 |
| psrld mm5,8 |
| mov eax,DWORD PTR [ebp-128] |
| pslld mm3,24 |
| pslld mm7,24 |
| mov ebx,DWORD PTR [ebp-64] |
| pxor mm0,mm1 |
| pxor mm4,mm5 |
| mov ecx,DWORD PTR [ebp] |
| pxor mm0,mm3 |
| pxor mm4,mm7 |
| mov edx,DWORD PTR 64[ebp] |
| pxor mm0,mm2 |
| pxor mm4,mm6 |
| jmp $L001loop |
| ALIGN 16 |
| $L002out: |
| pxor mm0,QWORD PTR [edi] |
| pxor mm4,QWORD PTR 8[edi] |
| ret |
| __sse_AES_encrypt_compact ENDP |
| ALIGN 16 |
| __x86_AES_encrypt PROC PRIVATE |
| mov DWORD PTR 20[esp],edi |
| xor eax,DWORD PTR [edi] |
| xor ebx,DWORD PTR 4[edi] |
| xor ecx,DWORD PTR 8[edi] |
| xor edx,DWORD PTR 12[edi] |
| mov esi,DWORD PTR 240[edi] |
| lea esi,DWORD PTR [esi*1+esi-2] |
| lea esi,DWORD PTR [esi*8+edi] |
| mov DWORD PTR 24[esp],esi |
| ALIGN 16 |
| $L003loop: |
| mov esi,eax |
| and esi,255 |
| mov esi,DWORD PTR [esi*8+ebp] |
| movzx edi,bh |
| xor esi,DWORD PTR 3[edi*8+ebp] |
| mov edi,ecx |
| shr edi,16 |
| and edi,255 |
| xor esi,DWORD PTR 2[edi*8+ebp] |
| mov edi,edx |
| shr edi,24 |
| xor esi,DWORD PTR 1[edi*8+ebp] |
| mov DWORD PTR 4[esp],esi |
| mov esi,ebx |
| and esi,255 |
| shr ebx,16 |
| mov esi,DWORD PTR [esi*8+ebp] |
| movzx edi,ch |
| xor esi,DWORD PTR 3[edi*8+ebp] |
| mov edi,edx |
| shr edi,16 |
| and edi,255 |
| xor esi,DWORD PTR 2[edi*8+ebp] |
| mov edi,eax |
| shr edi,24 |
| xor esi,DWORD PTR 1[edi*8+ebp] |
| mov DWORD PTR 8[esp],esi |
| mov esi,ecx |
| and esi,255 |
| shr ecx,24 |
| mov esi,DWORD PTR [esi*8+ebp] |
| movzx edi,dh |
| xor esi,DWORD PTR 3[edi*8+ebp] |
| mov edi,eax |
| shr edi,16 |
| and edx,255 |
| and edi,255 |
| xor esi,DWORD PTR 2[edi*8+ebp] |
| movzx edi,bh |
| xor esi,DWORD PTR 1[edi*8+ebp] |
| mov edi,DWORD PTR 20[esp] |
| mov edx,DWORD PTR [edx*8+ebp] |
| movzx eax,ah |
| xor edx,DWORD PTR 3[eax*8+ebp] |
| mov eax,DWORD PTR 4[esp] |
| and ebx,255 |
| xor edx,DWORD PTR 2[ebx*8+ebp] |
| mov ebx,DWORD PTR 8[esp] |
| xor edx,DWORD PTR 1[ecx*8+ebp] |
| mov ecx,esi |
| add edi,16 |
| xor eax,DWORD PTR [edi] |
| xor ebx,DWORD PTR 4[edi] |
| xor ecx,DWORD PTR 8[edi] |
| xor edx,DWORD PTR 12[edi] |
| cmp edi,DWORD PTR 24[esp] |
| mov DWORD PTR 20[esp],edi |
| jb $L003loop |
| mov esi,eax |
| and esi,255 |
| mov esi,DWORD PTR 2[esi*8+ebp] |
| and esi,255 |
| movzx edi,bh |
| mov edi,DWORD PTR [edi*8+ebp] |
| and edi,65280 |
| xor esi,edi |
| mov edi,ecx |
| shr edi,16 |
| and edi,255 |
| mov edi,DWORD PTR [edi*8+ebp] |
| and edi,16711680 |
| xor esi,edi |
| mov edi,edx |
| shr edi,24 |
| mov edi,DWORD PTR 2[edi*8+ebp] |
| and edi,4278190080 |
| xor esi,edi |
| mov DWORD PTR 4[esp],esi |
| mov esi,ebx |
| and esi,255 |
| shr ebx,16 |
| mov esi,DWORD PTR 2[esi*8+ebp] |
| and esi,255 |
| movzx edi,ch |
| mov edi,DWORD PTR [edi*8+ebp] |
| and edi,65280 |
| xor esi,edi |
| mov edi,edx |
| shr edi,16 |
| and edi,255 |
| mov edi,DWORD PTR [edi*8+ebp] |
| and edi,16711680 |
| xor esi,edi |
| mov edi,eax |
| shr edi,24 |
| mov edi,DWORD PTR 2[edi*8+ebp] |
| and edi,4278190080 |
| xor esi,edi |
| mov DWORD PTR 8[esp],esi |
| mov esi,ecx |
| and esi,255 |
| shr ecx,24 |
| mov esi,DWORD PTR 2[esi*8+ebp] |
| and esi,255 |
| movzx edi,dh |
| mov edi,DWORD PTR [edi*8+ebp] |
| and edi,65280 |
| xor esi,edi |
| mov edi,eax |
| shr edi,16 |
| and edx,255 |
| and edi,255 |
| mov edi,DWORD PTR [edi*8+ebp] |
| and edi,16711680 |
| xor esi,edi |
| movzx edi,bh |
| mov edi,DWORD PTR 2[edi*8+ebp] |
| and edi,4278190080 |
| xor esi,edi |
| mov edi,DWORD PTR 20[esp] |
| and edx,255 |
| mov edx,DWORD PTR 2[edx*8+ebp] |
| and edx,255 |
| movzx eax,ah |
| mov eax,DWORD PTR [eax*8+ebp] |
| and eax,65280 |
| xor edx,eax |
| mov eax,DWORD PTR 4[esp] |
| and ebx,255 |
| mov ebx,DWORD PTR [ebx*8+ebp] |
| and ebx,16711680 |
| xor edx,ebx |
| mov ebx,DWORD PTR 8[esp] |
| mov ecx,DWORD PTR 2[ecx*8+ebp] |
| and ecx,4278190080 |
| xor edx,ecx |
| mov ecx,esi |
| add edi,16 |
| xor eax,DWORD PTR [edi] |
| xor ebx,DWORD PTR 4[edi] |
| xor ecx,DWORD PTR 8[edi] |
| xor edx,DWORD PTR 12[edi] |
| ret |
| ALIGN 64 |
| $LAES_Te:: |
| DD 2774754246,2774754246 |
| DD 2222750968,2222750968 |
| DD 2574743534,2574743534 |
| DD 2373680118,2373680118 |
| DD 234025727,234025727 |
| DD 3177933782,3177933782 |
| DD 2976870366,2976870366 |
| DD 1422247313,1422247313 |
| DD 1345335392,1345335392 |
| DD 50397442,50397442 |
| DD 2842126286,2842126286 |
| DD 2099981142,2099981142 |
| DD 436141799,436141799 |
| DD 1658312629,1658312629 |
| DD 3870010189,3870010189 |
| DD 2591454956,2591454956 |
| DD 1170918031,1170918031 |
| DD 2642575903,2642575903 |
| DD 1086966153,1086966153 |
| DD 2273148410,2273148410 |
| DD 368769775,368769775 |
| DD 3948501426,3948501426 |
| DD 3376891790,3376891790 |
| DD 200339707,200339707 |
| DD 3970805057,3970805057 |
| DD 1742001331,1742001331 |
| DD 4255294047,4255294047 |
| DD 3937382213,3937382213 |
| DD 3214711843,3214711843 |
| DD 4154762323,4154762323 |
| DD 2524082916,2524082916 |
| DD 1539358875,1539358875 |
| DD 3266819957,3266819957 |
| DD 486407649,486407649 |
| DD 2928907069,2928907069 |
| DD 1780885068,1780885068 |
| DD 1513502316,1513502316 |
| DD 1094664062,1094664062 |
| DD 49805301,49805301 |
| DD 1338821763,1338821763 |
| DD 1546925160,1546925160 |
| DD 4104496465,4104496465 |
| DD 887481809,887481809 |
| DD 150073849,150073849 |
| DD 2473685474,2473685474 |
| DD 1943591083,1943591083 |
| DD 1395732834,1395732834 |
| DD 1058346282,1058346282 |
| DD 201589768,201589768 |
| DD 1388824469,1388824469 |
| DD 1696801606,1696801606 |
| DD 1589887901,1589887901 |
| DD 672667696,672667696 |
| DD 2711000631,2711000631 |
| DD 251987210,251987210 |
| DD 3046808111,3046808111 |
| DD 151455502,151455502 |
| DD 907153956,907153956 |
| DD 2608889883,2608889883 |
| DD 1038279391,1038279391 |
| DD 652995533,652995533 |
| DD 1764173646,1764173646 |
| DD 3451040383,3451040383 |
| DD 2675275242,2675275242 |
| DD 453576978,453576978 |
| DD 2659418909,2659418909 |
| DD 1949051992,1949051992 |
| DD 773462580,773462580 |
| DD 756751158,756751158 |
| DD 2993581788,2993581788 |
| DD 3998898868,3998898868 |
| DD 4221608027,4221608027 |
| DD 4132590244,4132590244 |
| DD 1295727478,1295727478 |
| DD 1641469623,1641469623 |
| DD 3467883389,3467883389 |
| DD 2066295122,2066295122 |
| DD 1055122397,1055122397 |
| DD 1898917726,1898917726 |
| DD 2542044179,2542044179 |
| DD 4115878822,4115878822 |
| DD 1758581177,1758581177 |
| DD 0,0 |
| DD 753790401,753790401 |
| DD 1612718144,1612718144 |
| DD 536673507,536673507 |
| DD 3367088505,3367088505 |
| DD 3982187446,3982187446 |
| DD 3194645204,3194645204 |
| DD 1187761037,1187761037 |
| DD 3653156455,3653156455 |
| DD 1262041458,1262041458 |
| DD 3729410708,3729410708 |
| DD 3561770136,3561770136 |
| DD 3898103984,3898103984 |
| DD 1255133061,1255133061 |
| DD 1808847035,1808847035 |
| DD 720367557,720367557 |
| DD 3853167183,3853167183 |
| DD 385612781,385612781 |
| DD 3309519750,3309519750 |
| DD 3612167578,3612167578 |
| DD 1429418854,1429418854 |
| DD 2491778321,2491778321 |
| DD 3477423498,3477423498 |
| DD 284817897,284817897 |
| DD 100794884,100794884 |
| DD 2172616702,2172616702 |
| DD 4031795360,4031795360 |
| DD 1144798328,1144798328 |
| DD 3131023141,3131023141 |
| DD 3819481163,3819481163 |
| DD 4082192802,4082192802 |
| DD 4272137053,4272137053 |
| DD 3225436288,3225436288 |
| DD 2324664069,2324664069 |
| DD 2912064063,2912064063 |
| DD 3164445985,3164445985 |
| DD 1211644016,1211644016 |
| DD 83228145,83228145 |
| DD 3753688163,3753688163 |
| DD 3249976951,3249976951 |
| DD 1977277103,1977277103 |
| DD 1663115586,1663115586 |
| DD 806359072,806359072 |
| DD 452984805,452984805 |
| DD 250868733,250868733 |
| DD 1842533055,1842533055 |
| DD 1288555905,1288555905 |
| DD 336333848,336333848 |
| DD 890442534,890442534 |
| DD 804056259,804056259 |
| DD 3781124030,3781124030 |
| DD 2727843637,2727843637 |
| DD 3427026056,3427026056 |
| DD 957814574,957814574 |
| DD 1472513171,1472513171 |
| DD 4071073621,4071073621 |
| DD 2189328124,2189328124 |
| DD 1195195770,1195195770 |
| DD 2892260552,2892260552 |
| DD 3881655738,3881655738 |
| DD 723065138,723065138 |
| DD 2507371494,2507371494 |
| DD 2690670784,2690670784 |
| DD 2558624025,2558624025 |
| DD 3511635870,3511635870 |
| DD 2145180835,2145180835 |
| DD 1713513028,1713513028 |
| DD 2116692564,2116692564 |
| DD 2878378043,2878378043 |
| DD 2206763019,2206763019 |
| DD 3393603212,3393603212 |
| DD 703524551,703524551 |
| DD 3552098411,3552098411 |
| DD 1007948840,1007948840 |
| DD 2044649127,2044649127 |
| DD 3797835452,3797835452 |
| DD 487262998,487262998 |
| DD 1994120109,1994120109 |
| DD 1004593371,1004593371 |
| DD 1446130276,1446130276 |
| DD 1312438900,1312438900 |
| DD 503974420,503974420 |
| DD 3679013266,3679013266 |
| DD 168166924,168166924 |
| DD 1814307912,1814307912 |
| DD 3831258296,3831258296 |
| DD 1573044895,1573044895 |
| DD 1859376061,1859376061 |
| DD 4021070915,4021070915 |
| DD 2791465668,2791465668 |
| DD 2828112185,2828112185 |
| DD 2761266481,2761266481 |
| DD 937747667,937747667 |
| DD 2339994098,2339994098 |
| DD 854058965,854058965 |
| DD 1137232011,1137232011 |
| DD 1496790894,1496790894 |
| DD 3077402074,3077402074 |
| DD 2358086913,2358086913 |
| DD 1691735473,1691735473 |
| DD 3528347292,3528347292 |
| DD 3769215305,3769215305 |
| DD 3027004632,3027004632 |
| DD 4199962284,4199962284 |
| DD 133494003,133494003 |
| DD 636152527,636152527 |
| DD 2942657994,2942657994 |
| DD 2390391540,2390391540 |
| DD 3920539207,3920539207 |
| DD 403179536,403179536 |
| DD 3585784431,3585784431 |
| DD 2289596656,2289596656 |
| DD 1864705354,1864705354 |
| DD 1915629148,1915629148 |
| DD 605822008,605822008 |
| DD 4054230615,4054230615 |
| DD 3350508659,3350508659 |
| DD 1371981463,1371981463 |
| DD 602466507,602466507 |
| DD 2094914977,2094914977 |
| DD 2624877800,2624877800 |
| DD 555687742,555687742 |
| DD 3712699286,3712699286 |
| DD 3703422305,3703422305 |
| DD 2257292045,2257292045 |
| DD 2240449039,2240449039 |
| DD 2423288032,2423288032 |
| DD 1111375484,1111375484 |
| DD 3300242801,3300242801 |
| DD 2858837708,2858837708 |
| DD 3628615824,3628615824 |
| DD 84083462,84083462 |
| DD 32962295,32962295 |
| DD 302911004,302911004 |
| DD 2741068226,2741068226 |
| DD 1597322602,1597322602 |
| DD 4183250862,4183250862 |
| DD 3501832553,3501832553 |
| DD 2441512471,2441512471 |
| DD 1489093017,1489093017 |
| DD 656219450,656219450 |
| DD 3114180135,3114180135 |
| DD 954327513,954327513 |
| DD 335083755,335083755 |
| DD 3013122091,3013122091 |
| DD 856756514,856756514 |
| DD 3144247762,3144247762 |
| DD 1893325225,1893325225 |
| DD 2307821063,2307821063 |
| DD 2811532339,2811532339 |
| DD 3063651117,3063651117 |
| DD 572399164,572399164 |
| DD 2458355477,2458355477 |
| DD 552200649,552200649 |
| DD 1238290055,1238290055 |
| DD 4283782570,4283782570 |
| DD 2015897680,2015897680 |
| DD 2061492133,2061492133 |
| DD 2408352771,2408352771 |
| DD 4171342169,4171342169 |
| DD 2156497161,2156497161 |
| DD 386731290,386731290 |
| DD 3669999461,3669999461 |
| DD 837215959,837215959 |
| DD 3326231172,3326231172 |
| DD 3093850320,3093850320 |
| DD 3275833730,3275833730 |
| DD 2962856233,2962856233 |
| DD 1999449434,1999449434 |
| DD 286199582,286199582 |
| DD 3417354363,3417354363 |
| DD 4233385128,4233385128 |
| DD 3602627437,3602627437 |
| DD 974525996,974525996 |
| DB 99,124,119,123,242,107,111,197 |
| DB 48,1,103,43,254,215,171,118 |
| DB 202,130,201,125,250,89,71,240 |
| DB 173,212,162,175,156,164,114,192 |
| DB 183,253,147,38,54,63,247,204 |
| DB 52,165,229,241,113,216,49,21 |
| DB 4,199,35,195,24,150,5,154 |
| DB 7,18,128,226,235,39,178,117 |
| DB 9,131,44,26,27,110,90,160 |
| DB 82,59,214,179,41,227,47,132 |
| DB 83,209,0,237,32,252,177,91 |
| DB 106,203,190,57,74,76,88,207 |
| DB 208,239,170,251,67,77,51,133 |
| DB 69,249,2,127,80,60,159,168 |
| DB 81,163,64,143,146,157,56,245 |
| DB 188,182,218,33,16,255,243,210 |
| DB 205,12,19,236,95,151,68,23 |
| DB 196,167,126,61,100,93,25,115 |
| DB 96,129,79,220,34,42,144,136 |
| DB 70,238,184,20,222,94,11,219 |
| DB 224,50,58,10,73,6,36,92 |
| DB 194,211,172,98,145,149,228,121 |
| DB 231,200,55,109,141,213,78,169 |
| DB 108,86,244,234,101,122,174,8 |
| DB 186,120,37,46,28,166,180,198 |
| DB 232,221,116,31,75,189,139,138 |
| DB 112,62,181,102,72,3,246,14 |
| DB 97,53,87,185,134,193,29,158 |
| DB 225,248,152,17,105,217,142,148 |
| DB 155,30,135,233,206,85,40,223 |
| DB 140,161,137,13,191,230,66,104 |
| DB 65,153,45,15,176,84,187,22 |
| DB 99,124,119,123,242,107,111,197 |
| DB 48,1,103,43,254,215,171,118 |
| DB 202,130,201,125,250,89,71,240 |
| DB 173,212,162,175,156,164,114,192 |
| DB 183,253,147,38,54,63,247,204 |
| DB 52,165,229,241,113,216,49,21 |
| DB 4,199,35,195,24,150,5,154 |
| DB 7,18,128,226,235,39,178,117 |
| DB 9,131,44,26,27,110,90,160 |
| DB 82,59,214,179,41,227,47,132 |
| DB 83,209,0,237,32,252,177,91 |
| DB 106,203,190,57,74,76,88,207 |
| DB 208,239,170,251,67,77,51,133 |
| DB 69,249,2,127,80,60,159,168 |
| DB 81,163,64,143,146,157,56,245 |
| DB 188,182,218,33,16,255,243,210 |
| DB 205,12,19,236,95,151,68,23 |
| DB 196,167,126,61,100,93,25,115 |
| DB 96,129,79,220,34,42,144,136 |
| DB 70,238,184,20,222,94,11,219 |
| DB 224,50,58,10,73,6,36,92 |
| DB 194,211,172,98,145,149,228,121 |
| DB 231,200,55,109,141,213,78,169 |
| DB 108,86,244,234,101,122,174,8 |
| DB 186,120,37,46,28,166,180,198 |
| DB 232,221,116,31,75,189,139,138 |
| DB 112,62,181,102,72,3,246,14 |
| DB 97,53,87,185,134,193,29,158 |
| DB 225,248,152,17,105,217,142,148 |
| DB 155,30,135,233,206,85,40,223 |
| DB 140,161,137,13,191,230,66,104 |
| DB 65,153,45,15,176,84,187,22 |
| DB 99,124,119,123,242,107,111,197 |
| DB 48,1,103,43,254,215,171,118 |
| DB 202,130,201,125,250,89,71,240 |
| DB 173,212,162,175,156,164,114,192 |
| DB 183,253,147,38,54,63,247,204 |
| DB 52,165,229,241,113,216,49,21 |
| DB 4,199,35,195,24,150,5,154 |
| DB 7,18,128,226,235,39,178,117 |
| DB 9,131,44,26,27,110,90,160 |
| DB 82,59,214,179,41,227,47,132 |
| DB 83,209,0,237,32,252,177,91 |
| DB 106,203,190,57,74,76,88,207 |
| DB 208,239,170,251,67,77,51,133 |
| DB 69,249,2,127,80,60,159,168 |
| DB 81,163,64,143,146,157,56,245 |
| DB 188,182,218,33,16,255,243,210 |
| DB 205,12,19,236,95,151,68,23 |
| DB 196,167,126,61,100,93,25,115 |
| DB 96,129,79,220,34,42,144,136 |
| DB 70,238,184,20,222,94,11,219 |
| DB 224,50,58,10,73,6,36,92 |
| DB 194,211,172,98,145,149,228,121 |
| DB 231,200,55,109,141,213,78,169 |
| DB 108,86,244,234,101,122,174,8 |
| DB 186,120,37,46,28,166,180,198 |
| DB 232,221,116,31,75,189,139,138 |
| DB 112,62,181,102,72,3,246,14 |
| DB 97,53,87,185,134,193,29,158 |
| DB 225,248,152,17,105,217,142,148 |
| DB 155,30,135,233,206,85,40,223 |
| DB 140,161,137,13,191,230,66,104 |
| DB 65,153,45,15,176,84,187,22 |
| DB 99,124,119,123,242,107,111,197 |
| DB 48,1,103,43,254,215,171,118 |
| DB 202,130,201,125,250,89,71,240 |
| DB 173,212,162,175,156,164,114,192 |
| DB 183,253,147,38,54,63,247,204 |
| DB 52,165,229,241,113,216,49,21 |
| DB 4,199,35,195,24,150,5,154 |
| DB 7,18,128,226,235,39,178,117 |
| DB 9,131,44,26,27,110,90,160 |
| DB 82,59,214,179,41,227,47,132 |
| DB 83,209,0,237,32,252,177,91 |
| DB 106,203,190,57,74,76,88,207 |
| DB 208,239,170,251,67,77,51,133 |
| DB 69,249,2,127,80,60,159,168 |
| DB 81,163,64,143,146,157,56,245 |
| DB 188,182,218,33,16,255,243,210 |
| DB 205,12,19,236,95,151,68,23 |
| DB 196,167,126,61,100,93,25,115 |
| DB 96,129,79,220,34,42,144,136 |
| DB 70,238,184,20,222,94,11,219 |
| DB 224,50,58,10,73,6,36,92 |
| DB 194,211,172,98,145,149,228,121 |
| DB 231,200,55,109,141,213,78,169 |
| DB 108,86,244,234,101,122,174,8 |
| DB 186,120,37,46,28,166,180,198 |
| DB 232,221,116,31,75,189,139,138 |
| DB 112,62,181,102,72,3,246,14 |
| DB 97,53,87,185,134,193,29,158 |
| DB 225,248,152,17,105,217,142,148 |
| DB 155,30,135,233,206,85,40,223 |
| DB 140,161,137,13,191,230,66,104 |
| DB 65,153,45,15,176,84,187,22 |
| DD 1,2,4,8 |
| DD 16,32,64,128 |
| DD 27,54,0,0 |
| DD 0,0,0,0 |
| __x86_AES_encrypt ENDP |
| ALIGN 16 |
| _AES_encrypt PROC PUBLIC |
| $L_AES_encrypt_begin:: |
| push ebp |
| push ebx |
| push esi |
| push edi |
| mov esi,DWORD PTR 20[esp] |
| mov edi,DWORD PTR 28[esp] |
| mov eax,esp |
| sub esp,36 |
| and esp,-64 |
| lea ebx,DWORD PTR [edi-127] |
| sub ebx,esp |
| neg ebx |
| and ebx,960 |
| sub esp,ebx |
| add esp,4 |
| mov DWORD PTR 28[esp],eax |
| call $L004pic_point |
| $L004pic_point: |
| pop ebp |
| lea eax,DWORD PTR _OPENSSL_ia32cap_P |
| lea ebp,DWORD PTR ($LAES_Te-$L004pic_point)[ebp] |
| lea ebx,DWORD PTR 764[esp] |
| sub ebx,ebp |
| and ebx,768 |
| lea ebp,DWORD PTR 2176[ebx*1+ebp] |
| bt DWORD PTR [eax],25 |
| jnc $L005x86 |
| movq mm0,QWORD PTR [esi] |
| movq mm4,QWORD PTR 8[esi] |
| call __sse_AES_encrypt_compact |
| mov esp,DWORD PTR 28[esp] |
| mov esi,DWORD PTR 24[esp] |
| movq QWORD PTR [esi],mm0 |
| movq QWORD PTR 8[esi],mm4 |
| emms |
| pop edi |
| pop esi |
| pop ebx |
| pop ebp |
| ret |
| ALIGN 16 |
| $L005x86: |
| mov DWORD PTR 24[esp],ebp |
| mov eax,DWORD PTR [esi] |
| mov ebx,DWORD PTR 4[esi] |
| mov ecx,DWORD PTR 8[esi] |
| mov edx,DWORD PTR 12[esi] |
| call __x86_AES_encrypt_compact |
| mov esp,DWORD PTR 28[esp] |
| mov esi,DWORD PTR 24[esp] |
| mov DWORD PTR [esi],eax |
| mov DWORD PTR 4[esi],ebx |
| mov DWORD PTR 8[esi],ecx |
| mov DWORD PTR 12[esi],edx |
| pop edi |
| pop esi |
| pop ebx |
| pop ebp |
| ret |
| _AES_encrypt ENDP |
| ALIGN 16 |
| __x86_AES_decrypt_compact PROC PRIVATE |
| mov DWORD PTR 20[esp],edi |
| xor eax,DWORD PTR [edi] |
| xor ebx,DWORD PTR 4[edi] |
| xor ecx,DWORD PTR 8[edi] |
| xor edx,DWORD PTR 12[edi] |
| mov esi,DWORD PTR 240[edi] |
| lea esi,DWORD PTR [esi*1+esi-2] |
| lea esi,DWORD PTR [esi*8+edi] |
| mov DWORD PTR 24[esp],esi |
| mov edi,DWORD PTR [ebp-128] |
| mov esi,DWORD PTR [ebp-96] |
| mov edi,DWORD PTR [ebp-64] |
| mov esi,DWORD PTR [ebp-32] |
| mov edi,DWORD PTR [ebp] |
| mov esi,DWORD PTR 32[ebp] |
| mov edi,DWORD PTR 64[ebp] |
| mov esi,DWORD PTR 96[ebp] |
| ALIGN 16 |
| $L006loop: |
| mov esi,eax |
| and esi,255 |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| movzx edi,dh |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,8 |
| xor esi,edi |
| mov edi,ecx |
| shr edi,16 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,16 |
| xor esi,edi |
| mov edi,ebx |
| shr edi,24 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,24 |
| xor esi,edi |
| mov DWORD PTR 4[esp],esi |
| mov esi,ebx |
| and esi,255 |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| movzx edi,ah |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,8 |
| xor esi,edi |
| mov edi,edx |
| shr edi,16 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,16 |
| xor esi,edi |
| mov edi,ecx |
| shr edi,24 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,24 |
| xor esi,edi |
| mov DWORD PTR 8[esp],esi |
| mov esi,ecx |
| and esi,255 |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| movzx edi,bh |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,8 |
| xor esi,edi |
| mov edi,eax |
| shr edi,16 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,16 |
| xor esi,edi |
| mov edi,edx |
| shr edi,24 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,24 |
| xor esi,edi |
| and edx,255 |
| movzx edx,BYTE PTR [edx*1+ebp-128] |
| movzx ecx,ch |
| movzx ecx,BYTE PTR [ecx*1+ebp-128] |
| shl ecx,8 |
| xor edx,ecx |
| mov ecx,esi |
| shr ebx,16 |
| and ebx,255 |
| movzx ebx,BYTE PTR [ebx*1+ebp-128] |
| shl ebx,16 |
| xor edx,ebx |
| shr eax,24 |
| movzx eax,BYTE PTR [eax*1+ebp-128] |
| shl eax,24 |
| xor edx,eax |
| mov esi,ecx |
| and esi,2155905152 |
| mov edi,esi |
| shr edi,7 |
| lea eax,DWORD PTR [ecx*1+ecx] |
| sub esi,edi |
| and eax,4278124286 |
| and esi,454761243 |
| xor esi,eax |
| mov eax,esi |
| and esi,2155905152 |
| mov edi,esi |
| shr edi,7 |
| lea ebx,DWORD PTR [eax*1+eax] |
| sub esi,edi |
| and ebx,4278124286 |
| and esi,454761243 |
| xor eax,ecx |
| xor esi,ebx |
| mov ebx,esi |
| and esi,2155905152 |
| mov edi,esi |
| shr edi,7 |
| lea ebp,DWORD PTR [ebx*1+ebx] |
| sub esi,edi |
| and ebp,4278124286 |
| and esi,454761243 |
| xor ebx,ecx |
| rol ecx,8 |
| xor ebp,esi |
| xor ecx,eax |
| xor eax,ebp |
| rol eax,24 |
| xor ecx,ebx |
| xor ebx,ebp |
| rol ebx,16 |
| xor ecx,ebp |
| rol ebp,8 |
| xor ecx,eax |
| xor ecx,ebx |
| mov eax,DWORD PTR 4[esp] |
| xor ecx,ebp |
| mov DWORD PTR 12[esp],ecx |
| mov esi,edx |
| and esi,2155905152 |
| mov edi,esi |
| shr edi,7 |
| lea ebx,DWORD PTR [edx*1+edx] |
| sub esi,edi |
| and ebx,4278124286 |
| and esi,454761243 |
| xor esi,ebx |
| mov ebx,esi |
| and esi,2155905152 |
| mov edi,esi |
| shr edi,7 |
| lea ecx,DWORD PTR [ebx*1+ebx] |
| sub esi,edi |
| and ecx,4278124286 |
| and esi,454761243 |
| xor ebx,edx |
| xor esi,ecx |
| mov ecx,esi |
| and esi,2155905152 |
| mov edi,esi |
| shr edi,7 |
| lea ebp,DWORD PTR [ecx*1+ecx] |
| sub esi,edi |
| and ebp,4278124286 |
| and esi,454761243 |
| xor ecx,edx |
| rol edx,8 |
| xor ebp,esi |
| xor edx,ebx |
| xor ebx,ebp |
| rol ebx,24 |
| xor edx,ecx |
| xor ecx,ebp |
| rol ecx,16 |
| xor edx,ebp |
| rol ebp,8 |
| xor edx,ebx |
| xor edx,ecx |
| mov ebx,DWORD PTR 8[esp] |
| xor edx,ebp |
| mov DWORD PTR 16[esp],edx |
| mov esi,eax |
| and esi,2155905152 |
| mov edi,esi |
| shr edi,7 |
| lea ecx,DWORD PTR [eax*1+eax] |
| sub esi,edi |
| and ecx,4278124286 |
| and esi,454761243 |
| xor esi,ecx |
| mov ecx,esi |
| and esi,2155905152 |
| mov edi,esi |
| shr edi,7 |
| lea edx,DWORD PTR [ecx*1+ecx] |
| sub esi,edi |
| and edx,4278124286 |
| and esi,454761243 |
| xor ecx,eax |
| xor esi,edx |
| mov edx,esi |
| and esi,2155905152 |
| mov edi,esi |
| shr edi,7 |
| lea ebp,DWORD PTR [edx*1+edx] |
| sub esi,edi |
| and ebp,4278124286 |
| and esi,454761243 |
| xor edx,eax |
| rol eax,8 |
| xor ebp,esi |
| xor eax,ecx |
| xor ecx,ebp |
| rol ecx,24 |
| xor eax,edx |
| xor edx,ebp |
| rol edx,16 |
| xor eax,ebp |
| rol ebp,8 |
| xor eax,ecx |
| xor eax,edx |
| xor eax,ebp |
| mov esi,ebx |
| and esi,2155905152 |
| mov edi,esi |
| shr edi,7 |
| lea ecx,DWORD PTR [ebx*1+ebx] |
| sub esi,edi |
| and ecx,4278124286 |
| and esi,454761243 |
| xor esi,ecx |
| mov ecx,esi |
| and esi,2155905152 |
| mov edi,esi |
| shr edi,7 |
| lea edx,DWORD PTR [ecx*1+ecx] |
| sub esi,edi |
| and edx,4278124286 |
| and esi,454761243 |
| xor ecx,ebx |
| xor esi,edx |
| mov edx,esi |
| and esi,2155905152 |
| mov edi,esi |
| shr edi,7 |
| lea ebp,DWORD PTR [edx*1+edx] |
| sub esi,edi |
| and ebp,4278124286 |
| and esi,454761243 |
| xor edx,ebx |
| rol ebx,8 |
| xor ebp,esi |
| xor ebx,ecx |
| xor ecx,ebp |
| rol ecx,24 |
| xor ebx,edx |
| xor edx,ebp |
| rol edx,16 |
| xor ebx,ebp |
| rol ebp,8 |
| xor ebx,ecx |
| xor ebx,edx |
| mov ecx,DWORD PTR 12[esp] |
| xor ebx,ebp |
| mov edx,DWORD PTR 16[esp] |
| mov edi,DWORD PTR 20[esp] |
| mov ebp,DWORD PTR 28[esp] |
| add edi,16 |
| xor eax,DWORD PTR [edi] |
| xor ebx,DWORD PTR 4[edi] |
| xor ecx,DWORD PTR 8[edi] |
| xor edx,DWORD PTR 12[edi] |
| cmp edi,DWORD PTR 24[esp] |
| mov DWORD PTR 20[esp],edi |
| jb $L006loop |
| mov esi,eax |
| and esi,255 |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| movzx edi,dh |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,8 |
| xor esi,edi |
| mov edi,ecx |
| shr edi,16 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,16 |
| xor esi,edi |
| mov edi,ebx |
| shr edi,24 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,24 |
| xor esi,edi |
| mov DWORD PTR 4[esp],esi |
| mov esi,ebx |
| and esi,255 |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| movzx edi,ah |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,8 |
| xor esi,edi |
| mov edi,edx |
| shr edi,16 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,16 |
| xor esi,edi |
| mov edi,ecx |
| shr edi,24 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,24 |
| xor esi,edi |
| mov DWORD PTR 8[esp],esi |
| mov esi,ecx |
| and esi,255 |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| movzx edi,bh |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,8 |
| xor esi,edi |
| mov edi,eax |
| shr edi,16 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,16 |
| xor esi,edi |
| mov edi,edx |
| shr edi,24 |
| movzx edi,BYTE PTR [edi*1+ebp-128] |
| shl edi,24 |
| xor esi,edi |
| mov edi,DWORD PTR 20[esp] |
| and edx,255 |
| movzx edx,BYTE PTR [edx*1+ebp-128] |
| movzx ecx,ch |
| movzx ecx,BYTE PTR [ecx*1+ebp-128] |
| shl ecx,8 |
| xor edx,ecx |
| mov ecx,esi |
| shr ebx,16 |
| and ebx,255 |
| movzx ebx,BYTE PTR [ebx*1+ebp-128] |
| shl ebx,16 |
| xor edx,ebx |
| mov ebx,DWORD PTR 8[esp] |
| shr eax,24 |
| movzx eax,BYTE PTR [eax*1+ebp-128] |
| shl eax,24 |
| xor edx,eax |
| mov eax,DWORD PTR 4[esp] |
| xor eax,DWORD PTR 16[edi] |
| xor ebx,DWORD PTR 20[edi] |
| xor ecx,DWORD PTR 24[edi] |
| xor edx,DWORD PTR 28[edi] |
| ret |
| __x86_AES_decrypt_compact ENDP |
| ALIGN 16 |
| __sse_AES_decrypt_compact PROC PRIVATE |
| pxor mm0,QWORD PTR [edi] |
| pxor mm4,QWORD PTR 8[edi] |
| mov esi,DWORD PTR 240[edi] |
| lea esi,DWORD PTR [esi*1+esi-2] |
| lea esi,DWORD PTR [esi*8+edi] |
| mov DWORD PTR 24[esp],esi |
| mov eax,454761243 |
| mov DWORD PTR 8[esp],eax |
| mov DWORD PTR 12[esp],eax |
| mov eax,DWORD PTR [ebp-128] |
| mov ebx,DWORD PTR [ebp-96] |
| mov ecx,DWORD PTR [ebp-64] |
| mov edx,DWORD PTR [ebp-32] |
| mov eax,DWORD PTR [ebp] |
| mov ebx,DWORD PTR 32[ebp] |
| mov ecx,DWORD PTR 64[ebp] |
| mov edx,DWORD PTR 96[ebp] |
| ALIGN 16 |
| $L007loop: |
| pshufw mm1,mm0,12 |
| movd eax,mm1 |
| pshufw mm5,mm4,9 |
| movzx esi,al |
| movzx ecx,BYTE PTR [esi*1+ebp-128] |
| movd ebx,mm5 |
| movzx edx,ah |
| movzx edx,BYTE PTR [edx*1+ebp-128] |
| shl edx,8 |
| pshufw mm2,mm0,6 |
| movzx esi,bl |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,16 |
| or ecx,esi |
| shr eax,16 |
| movzx esi,bh |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,24 |
| or edx,esi |
| shr ebx,16 |
| pshufw mm6,mm4,3 |
| movzx esi,ah |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,24 |
| or ecx,esi |
| movzx esi,bh |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,8 |
| or ecx,esi |
| movd mm0,ecx |
| movzx esi,al |
| movd eax,mm2 |
| movzx ecx,BYTE PTR [esi*1+ebp-128] |
| shl ecx,16 |
| movzx esi,bl |
| movd ebx,mm6 |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| or ecx,esi |
| movzx esi,al |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| or edx,esi |
| movzx esi,bl |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,16 |
| or edx,esi |
| movd mm1,edx |
| movzx esi,ah |
| movzx edx,BYTE PTR [esi*1+ebp-128] |
| shl edx,8 |
| movzx esi,bh |
| shr eax,16 |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,24 |
| or edx,esi |
| shr ebx,16 |
| punpckldq mm0,mm1 |
| movzx esi,bh |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,8 |
| or ecx,esi |
| and ebx,255 |
| movzx ebx,BYTE PTR [ebx*1+ebp-128] |
| or edx,ebx |
| movzx esi,al |
| movzx esi,BYTE PTR [esi*1+ebp-128] |
| shl esi,16 |
| or edx,esi |
| movd mm4,edx |
| movzx eax,ah |
| movzx eax,BYTE PTR [eax*1+ebp-128] |
| shl eax,24 |
| or ecx,eax |
| movd mm5,ecx |
| punpckldq mm4,mm5 |
| add edi,16 |
| cmp edi,DWORD PTR 24[esp] |
| ja $L008out |
| movq mm3,mm0 |
| movq mm7,mm4 |
| pshufw mm2,mm0,228 |
| pshufw mm6,mm4,228 |
| movq mm1,mm0 |
| movq mm5,mm4 |
| pshufw mm0,mm0,177 |
| pshufw mm4,mm4,177 |
| pslld mm2,8 |
| pslld mm6,8 |
| psrld mm3,8 |
| psrld mm7,8 |
| pxor mm0,mm2 |
| pxor mm4,mm6 |
| pxor mm0,mm3 |
| pxor mm4,mm7 |
| pslld mm2,16 |
| pslld mm6,16 |
| psrld mm3,16 |
| psrld mm7,16 |
| pxor mm0,mm2 |
| pxor mm4,mm6 |
| pxor mm0,mm3 |
| pxor mm4,mm7 |
| movq mm3,QWORD PTR 8[esp] |
| pxor mm2,mm2 |
| pxor mm6,mm6 |
| pcmpgtb mm2,mm1 |
| pcmpgtb mm6,mm5 |
| pand mm2,mm3 |
| pand mm6,mm3 |
| paddb mm1,mm1 |
| paddb mm5,mm5 |
| pxor mm1,mm2 |
| pxor mm5,mm6 |
| movq mm3,mm1 |
| movq mm7,mm5 |
| movq mm2,mm1 |
| movq mm6,mm5 |
| pxor mm0,mm1 |
| pxor mm4,mm5 |
| pslld mm3,24 |
| pslld mm7,24 |
| psrld mm2,8 |
| psrld mm6,8 |
| pxor mm0,mm3 |
| pxor mm4,mm7 |
| pxor mm0,mm2 |
| pxor mm4,mm6 |
| movq mm2,QWORD PTR 8[esp] |
| pxor mm3,mm3 |
| pxor mm7,mm7 |
| pcmpgtb mm3,mm1 |
| pcmpgtb mm7,mm5 |
| pand mm3,mm2 |
| pand mm7,mm2 |
| paddb mm1,mm1 |
| paddb mm5,mm5 |
| pxor mm1,mm3 |
| pxor mm5,mm7 |
| pshufw mm3,mm1,177 |
| pshufw mm7,mm5,177 |
| pxor mm0,mm1 |
| pxor mm4,mm5 |
| pxor mm0,mm3 |
| pxor mm4,mm7 |
| pxor mm3,mm3 |
| pxor mm7,mm7 |
| pcmpgtb mm3,mm1 |
| pcmpgtb mm7,mm5 |
| pand mm3,mm2 |
| pand mm7,mm2 |
| paddb mm1,mm1 |
| paddb mm5,mm5 |
| pxor mm1,mm3 |
| pxor mm5,mm7 |
| pxor mm0,mm1 |
| pxor mm4,mm5 |
| movq mm3,mm1 |
| movq mm7,mm5 |
| pshufw mm2,mm1,177 |
| pshufw mm6,mm5,177 |
| pxor mm0,mm2 |
| pxor mm4,mm6 |
| pslld mm1,8 |
| pslld mm5,8 |
| psrld mm3,8 |
| psrld mm7,8 |
| movq mm2,QWORD PTR [edi] |
| movq mm6,QWORD PTR 8[edi] |
| pxor mm0,mm1 |
| pxor mm4,mm5 |
| pxor mm0,mm3 |
| pxor mm4,mm7 |
| mov eax,DWORD PTR [ebp-128] |
| pslld mm1,16 |
| pslld mm5,16 |
| mov ebx,DWORD PTR [ebp-64] |
| psrld mm3,16 |
| psrld mm7,16 |
| mov ecx,DWORD PTR [ebp] |
| pxor mm0,mm1 |
| pxor mm4,mm5 |
| mov edx,DWORD PTR 64[ebp] |
| pxor mm0,mm3 |
| pxor mm4,mm7 |
| pxor mm0,mm2 |
| pxor mm4,mm6 |
| jmp $L007loop |
| ALIGN 16 |
| $L008out: |
| pxor mm0,QWORD PTR [edi] |
| pxor mm4,QWORD PTR 8[edi] |
| ret |
| __sse_AES_decrypt_compact ENDP |
| ALIGN 16 |
| __x86_AES_decrypt PROC PRIVATE |
| mov DWORD PTR 20[esp],edi |
| xor eax,DWORD PTR [edi] |
| xor ebx,DWORD PTR 4[edi] |
| xor ecx,DWORD PTR 8[edi] |
| xor edx,DWORD PTR 12[edi] |
| mov esi,DWORD PTR 240[edi] |
| lea esi,DWORD PTR [esi*1+esi-2] |
| lea esi,DWORD PTR [esi*8+edi] |
| mov DWORD PTR 24[esp],esi |
| ALIGN 16 |
| $L009loop: |
| mov esi,eax |
| and esi,255 |
| mov esi,DWORD PTR [esi*8+ebp] |
| movzx edi,dh |
| xor esi,DWORD PTR 3[edi*8+ebp] |
| mov edi,ecx |
| shr edi,16 |
| and edi,255 |
| xor esi,DWORD PTR 2[edi*8+ebp] |
| mov edi,ebx |
| shr edi,24 |
| xor esi,DWORD PTR 1[edi*8+ebp] |
| mov DWORD PTR 4[esp],esi |
| mov esi,ebx |
| and esi,255 |
| mov esi,DWORD PTR [esi*8+ebp] |
| movzx edi,ah |
| xor esi,DWORD PTR 3[edi*8+ebp] |
| mov edi,edx |
| shr edi,16 |
| and edi,255 |
| xor esi,DWORD PTR 2[edi*8+ebp] |
| mov edi,ecx |
| shr edi,24 |
| xor esi,DWORD PTR 1[edi*8+ebp] |
| mov DWORD PTR 8[esp],esi |
| mov esi,ecx |
| and esi,255 |
| mov esi,DWORD PTR [esi*8+ebp] |
| movzx edi,bh |
| xor esi,DWORD PTR 3[edi*8+ebp] |
| mov edi,eax |
| shr edi,16 |
| and edi,255 |
| xor esi,DWORD PTR 2[edi*8+ebp] |
| mov edi,edx |
| shr edi,24 |
| xor esi,DWORD PTR 1[edi*8+ebp] |
| mov edi,DWORD PTR 20[esp] |
| and edx,255 |
| mov edx,DWORD PTR [edx*8+ebp] |
| movzx ecx,ch |
| xor edx,DWORD PTR 3[ecx*8+ebp] |
| mov ecx,esi |
| shr ebx,16 |
| and ebx,255 |
| xor edx,DWORD PTR 2[ebx*8+ebp] |
| mov ebx,DWORD PTR 8[esp] |
| shr eax,24 |
| xor edx,DWORD PTR 1[eax*8+ebp] |
| mov eax,DWORD PTR 4[esp] |
| add edi,16 |
| xor eax,DWORD PTR [edi] |
| xor ebx,DWORD PTR 4[edi] |
| xor ecx,DWORD PTR 8[edi] |
| xor edx,DWORD PTR 12[edi] |
| cmp edi,DWORD PTR 24[esp] |
| mov DWORD PTR 20[esp],edi |
| jb $L009loop |
| lea ebp,DWORD PTR 2176[ebp] |
| mov edi,DWORD PTR [ebp-128] |
| mov esi,DWORD PTR [ebp-96] |
| mov edi,DWORD PTR [ebp-64] |
| mov esi,DWORD PTR [ebp-32] |
| mov edi,DWORD PTR [ebp] |
| mov esi,DWORD PTR 32[ebp] |
| mov edi,DWORD PTR 64[ebp] |
| mov esi,DWORD PTR 96[ebp] |
| lea ebp,DWORD PTR [ebp-128] |
| mov esi,eax |
| and esi,255 |
| movzx esi,BYTE PTR [esi*1+ebp] |
| movzx edi,dh |
| movzx edi,BYTE PTR [edi*1+ebp] |
| shl edi,8 |
| xor esi,edi |
| mov edi,ecx |
| shr edi,16 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp] |
| shl edi,16 |
| xor esi,edi |
| mov edi,ebx |
| shr edi,24 |
| movzx edi,BYTE PTR [edi*1+ebp] |
| shl edi,24 |
| xor esi,edi |
| mov DWORD PTR 4[esp],esi |
| mov esi,ebx |
| and esi,255 |
| movzx esi,BYTE PTR [esi*1+ebp] |
| movzx edi,ah |
| movzx edi,BYTE PTR [edi*1+ebp] |
| shl edi,8 |
| xor esi,edi |
| mov edi,edx |
| shr edi,16 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp] |
| shl edi,16 |
| xor esi,edi |
| mov edi,ecx |
| shr edi,24 |
| movzx edi,BYTE PTR [edi*1+ebp] |
| shl edi,24 |
| xor esi,edi |
| mov DWORD PTR 8[esp],esi |
| mov esi,ecx |
| and esi,255 |
| movzx esi,BYTE PTR [esi*1+ebp] |
| movzx edi,bh |
| movzx edi,BYTE PTR [edi*1+ebp] |
| shl edi,8 |
| xor esi,edi |
| mov edi,eax |
| shr edi,16 |
| and edi,255 |
| movzx edi,BYTE PTR [edi*1+ebp] |
| shl edi,16 |
| xor esi,edi |
| mov edi,edx |
| shr edi,24 |
| movzx edi,BYTE PTR [edi*1+ebp] |
| shl edi,24 |
| xor esi,edi |
| mov edi,DWORD PTR 20[esp] |
| and edx,255 |
| movzx edx,BYTE PTR [edx*1+ebp] |
| movzx ecx,ch |
| movzx ecx,BYTE PTR [ecx*1+ebp] |
| shl ecx,8 |
| xor edx,ecx |
| mov ecx,esi |
| shr ebx,16 |
| and ebx,255 |
| movzx ebx,BYTE PTR [ebx*1+ebp] |
| shl ebx,16 |
| xor edx,ebx |
| mov ebx,DWORD PTR 8[esp] |
| shr eax,24 |
| movzx eax,BYTE PTR [eax*1+ebp] |
| shl eax,24 |
| xor edx,eax |
| mov eax,DWORD PTR 4[esp] |
| lea ebp,DWORD PTR [ebp-2048] |
| add edi,16 |
| xor eax,DWORD PTR [edi] |
| xor ebx,DWORD PTR 4[edi] |
| xor ecx,DWORD PTR 8[edi] |
| xor edx,DWORD PTR 12[edi] |
| ret |
| ALIGN 64 |
| $LAES_Td:: |
| DD 1353184337,1353184337 |
| DD 1399144830,1399144830 |
| DD 3282310938,3282310938 |
| DD 2522752826,2522752826 |
| DD 3412831035,3412831035 |
| DD 4047871263,4047871263 |
| DD 2874735276,2874735276 |
| DD 2466505547,2466505547 |
| DD 1442459680,1442459680 |
| DD 4134368941,4134368941 |
| DD 2440481928,2440481928 |
| DD 625738485,625738485 |
| DD 4242007375,4242007375 |
| DD 3620416197,3620416197 |
| DD 2151953702,2151953702 |
| DD 2409849525,2409849525 |
| DD 1230680542,1230680542 |
| DD 1729870373,1729870373 |
| DD 2551114309,2551114309 |
| DD 3787521629,3787521629 |
| DD 41234371,41234371 |
| DD 317738113,317738113 |
| DD 2744600205,2744600205 |
| DD 3338261355,3338261355 |
| DD 3881799427,3881799427 |
| DD 2510066197,2510066197 |
| DD 3950669247,3950669247 |
| DD 3663286933,3663286933 |
| DD 763608788,763608788 |
| DD 3542185048,3542185048 |
| DD 694804553,694804553 |
| DD 1154009486,1154009486 |
| DD 1787413109,1787413109 |
| DD 2021232372,2021232372 |
| DD 1799248025,1799248025 |
| DD 3715217703,3715217703 |
| DD 3058688446,3058688446 |
| DD 397248752,397248752 |
| DD 1722556617,1722556617 |
| DD 3023752829,3023752829 |
| DD 407560035,407560035 |
| DD 2184256229,2184256229 |
| DD 1613975959,1613975959 |
| DD 1165972322,1165972322 |
| DD 3765920945,3765920945 |
| DD 2226023355,2226023355 |
| DD 480281086,480281086 |
| DD 2485848313,2485848313 |
| DD 1483229296,1483229296 |
| DD 436028815,436028815 |
| DD 2272059028,2272059028 |
| DD 3086515026,3086515026 |
| DD 601060267,601060267 |
| DD 3791801202,3791801202 |
| DD 1468997603,1468997603 |
| DD 715871590,715871590 |
| DD 120122290,120122290 |
| DD 63092015,63092015 |
| DD 2591802758,2591802758 |
| DD 2768779219,2768779219 |
| DD 4068943920,4068943920 |
| DD 2997206819,2997206819 |
| DD 3127509762,3127509762 |
| DD 1552029421,1552029421 |
| DD 723308426,723308426 |
| DD 2461301159,2461301159 |
| DD 4042393587,4042393587 |
| DD 2715969870,2715969870 |
| DD 3455375973,3455375973 |
| DD 3586000134,3586000134 |
| DD 526529745,526529745 |
| DD 2331944644,2331944644 |
| DD 2639474228,2639474228 |
| DD 2689987490,2689987490 |
| DD 853641733,853641733 |
| DD 1978398372,1978398372 |
| DD 971801355,971801355 |
| DD 2867814464,2867814464 |
| DD 111112542,111112542 |
| DD 1360031421,1360031421 |
| DD 4186579262,4186579262 |
| DD 1023860118,1023860118 |
| DD 2919579357,2919579357 |
| DD 1186850381,1186850381 |
| DD 3045938321,3045938321 |
| DD 90031217,90031217 |
| DD 1876166148,1876166148 |
| DD 4279586912,4279586912 |
| DD 620468249,620468249 |
| DD 2548678102,2548678102 |
| DD 3426959497,3426959497 |
| DD 2006899047,2006899047 |
| DD 3175278768,3175278768 |
| DD 2290845959,2290845959 |
| DD 945494503,945494503 |
| DD 3689859193,3689859193 |
| DD 1191869601,1191869601 |
| DD 3910091388,3910091388 |
| DD 3374220536,3374220536 |
| DD 0,0 |
| DD 2206629897,2206629897 |
| DD 1223502642,1223502642 |
| DD 2893025566,2893025566 |
| DD 1316117100,1316117100 |
| DD 4227796733,4227796733 |
| DD 1446544655,1446544655 |
| DD 517320253,517320253 |
| DD 658058550,658058550 |
| DD 1691946762,1691946762 |
| DD 564550760,564550760 |
| DD 3511966619,3511966619 |
| DD 976107044,976107044 |
| DD 2976320012,2976320012 |
| DD 266819475,266819475 |
| DD 3533106868,3533106868 |
| DD 2660342555,2660342555 |
| DD 1338359936,1338359936 |
| DD 2720062561,2720062561 |
| DD 1766553434,1766553434 |
| DD 370807324,370807324 |
| DD 179999714,179999714 |
| DD 3844776128,3844776128 |
| DD 1138762300,1138762300 |
| DD 488053522,488053522 |
| DD 185403662,185403662 |
| DD 2915535858,2915535858 |
| DD 3114841645,3114841645 |
| DD 3366526484,3366526484 |
| DD 2233069911,2233069911 |
| DD 1275557295,1275557295 |
| DD 3151862254,3151862254 |
| DD 4250959779,4250959779 |
| DD 2670068215,2670068215 |
| DD 3170202204,3170202204 |
| DD 3309004356,3309004356 |
| DD 880737115,880737115 |
| DD 1982415755,1982415755 |
| DD 3703972811,3703972811 |
| DD 1761406390,1761406390 |
| DD 1676797112,1676797112 |
| DD 3403428311,3403428311 |
| DD 277177154,277177154 |
| DD 1076008723,1076008723 |
| DD 538035844,538035844 |
| DD 2099530373,2099530373 |
| DD 4164795346,4164795346 |
| DD 288553390,288553390 |
| DD 1839278535,1839278535 |
| DD 1261411869,1261411869 |
| DD 4080055004,4080055004 |
| DD 3964831245,3964831245 |
| DD 3504587127,3504587127 |
| DD 1813426987,1813426987 |
| DD 2579067049,2579067049 |
| DD 4199060497,4199060497 |
| DD 577038663,577038663 |
| DD 3297574056,3297574056 |
| DD 440397984,440397984 |
| DD 3626794326,3626794326 |
| DD 4019204898,4019204898 |
| DD 3343796615,3343796615 |
| DD 3251714265,3251714265 |
| DD 4272081548,4272081548 |
| DD 906744984,906744984 |
| DD 3481400742,3481400742 |
| DD 685669029,685669029 |
| DD 646887386,646887386 |
| DD 2764025151,2764025151 |
| DD 3835509292,3835509292 |
| DD 227702864,227702864 |
| DD 2613862250,2613862250 |
| DD 1648787028,1648787028 |
| DD 3256061430,3256061430 |
| DD 3904428176,3904428176 |
| DD 1593260334,1593260334 |
| DD 4121936770,4121936770 |
| DD 3196083615,3196083615 |
| DD 2090061929,2090061929 |
| DD 2838353263,2838353263 |
| DD 3004310991,3004310991 |
| DD 999926984,999926984 |
| DD 2809993232,2809993232 |
| DD 1852021992,1852021992 |
| DD 2075868123,2075868123 |
| DD 158869197,158869197 |
| DD 4095236462,4095236462 |
| DD 28809964,28809964 |
| DD 2828685187,2828685187 |
| DD 1701746150,1701746150 |
| DD 2129067946,2129067946 |
| DD 147831841,147831841 |
| DD 3873969647,3873969647 |
| DD 3650873274,3650873274 |
| DD 3459673930,3459673930 |
| DD 3557400554,3557400554 |
| DD 3598495785,3598495785 |
| DD 2947720241,2947720241 |
| DD 824393514,824393514 |
| DD 815048134,815048134 |
| DD 3227951669,3227951669 |
| DD 935087732,935087732 |
| DD 2798289660,2798289660 |
| DD 2966458592,2966458592 |
| DD 366520115,366520115 |
| DD 1251476721,1251476721 |
| DD 4158319681,4158319681 |
| DD 240176511,240176511 |
| DD 804688151,804688151 |
| DD 2379631990,2379631990 |
| DD 1303441219,1303441219 |
| DD 1414376140,1414376140 |
| DD 3741619940,3741619940 |
| DD 3820343710,3820343710 |
| DD 461924940,461924940 |
| DD 3089050817,3089050817 |
| DD 2136040774,2136040774 |
| DD 82468509,82468509 |
| DD 1563790337,1563790337 |
| DD 1937016826,1937016826 |
| DD 776014843,776014843 |
| DD 1511876531,1511876531 |
| DD 1389550482,1389550482 |
| DD 861278441,861278441 |
| DD 323475053,323475053 |
| DD 2355222426,2355222426 |
| DD 2047648055,2047648055 |
| DD 2383738969,2383738969 |
| DD 2302415851,2302415851 |
| DD 3995576782,3995576782 |
| DD 902390199,902390199 |
| DD 3991215329,3991215329 |
| DD 1018251130,1018251130 |
| DD 1507840668,1507840668 |
| DD 1064563285,1064563285 |
| DD 2043548696,2043548696 |
| DD 3208103795,3208103795 |
| DD 3939366739,3939366739 |
| DD 1537932639,1537932639 |
| DD 342834655,342834655 |
| DD 2262516856,2262516856 |
| DD 2180231114,2180231114 |
| DD 1053059257,1053059257 |
| DD 741614648,741614648 |
| DD 1598071746,1598071746 |
| DD 1925389590,1925389590 |
| DD 203809468,203809468 |
| DD 2336832552,2336832552 |
| DD 1100287487,1100287487 |
| DD 1895934009,1895934009 |
| DD 3736275976,3736275976 |
| DD 2632234200,2632234200 |
| DD 2428589668,2428589668 |
| DD 1636092795,1636092795 |
| DD 1890988757,1890988757 |
| DD 1952214088,1952214088 |
| DD 1113045200,1113045200 |
| DB 82,9,106,213,48,54,165,56 |
| DB 191,64,163,158,129,243,215,251 |
| DB 124,227,57,130,155,47,255,135 |
| DB 52,142,67,68,196,222,233,203 |
| DB 84,123,148,50,166,194,35,61 |
| DB 238,76,149,11,66,250,195,78 |
| DB 8,46,161,102,40,217,36,178 |
| DB 118,91,162,73,109,139,209,37 |
| DB 114,248,246,100,134,104,152,22 |
| DB 212,164,92,204,93,101,182,146 |
| DB 108,112,72,80,253,237,185,218 |
| DB 94,21,70,87,167,141,157,132 |
| DB 144,216,171,0,140,188,211,10 |
| DB 247,228,88,5,184,179,69,6 |
| DB 208,44,30,143,202,63,15,2 |
| DB 193,175,189,3,1,19,138,107 |
| DB 58,145,17,65,79,103,220,234 |
| DB 151,242,207,206,240,180,230,115 |
| DB 150,172,116,34,231,173,53,133 |
| DB 226,249,55,232,28,117,223,110 |
| DB 71,241,26,113,29,41,197,137 |
| DB 111,183,98,14,170,24,190,27 |
| DB 252,86,62,75,198,210,121,32 |
| DB 154,219,192,254,120,205,90,244 |
| DB 31,221,168,51,136,7,199,49 |
| DB 177,18,16,89,39,128,236,95 |
| DB 96,81,127,169,25,181,74,13 |
| DB 45,229,122,159,147,201,156,239 |
| DB 160,224,59,77,174,42,245,176 |
| DB 200,235,187,60,131,83,153,97 |
| DB 23,43,4,126,186,119,214,38 |
| DB 225,105,20,99,85,33,12,125 |
| DB 82,9,106,213,48,54,165,56 |
| DB 191,64,163,158,129,243,215,251 |
| DB 124,227,57,130,155,47,255,135 |
| DB 52,142,67,68,196,222,233,203 |
| DB 84,123,148,50,166,194,35,61 |
| DB 238,76,149,11,66,250,195,78 |
| DB 8,46,161,102,40,217,36,178 |
| DB 118,91,162,73,109,139,209,37 |
| DB 114,248,246,100,134,104,152,22 |
| DB 212,164,92,204,93,101,182,146 |
| DB 108,112,72,80,253,237,185,218 |
| DB 94,21,70,87,167,141,157,132 |
| DB 144,216,171,0,140,188,211,10 |
| DB 247,228,88,5,184,179,69,6 |
| DB 208,44,30,143,202,63,15,2 |
| DB 193,175,189,3,1,19,138,107 |
| DB 58,145,17,65,79,103,220,234 |
| DB 151,242,207,206,240,180,230,115 |
| DB 150,172,116,34,231,173,53,133 |
| DB 226,249,55,232,28,117,223,110 |
| DB 71,241,26,113,29,41,197,137 |
| DB 111,183,98,14,170,24,190,27 |
| DB 252,86,62,75,198,210,121,32 |
| DB 154,219,192,254,120,205,90,244 |
| DB 31,221,168,51,136,7,199,49 |
| DB 177,18,16,89,39,128,236,95 |
| DB 96,81,127,169,25,181,74,13 |
| DB 45,229,122,159,147,201,156,239 |
| DB 160,224,59,77,174,42,245,176 |
| DB 200,235,187,60,131,83,153,97 |
| DB 23,43,4,126,186,119,214,38 |
| DB 225,105,20,99,85,33,12,125 |
| DB 82,9,106,213,48,54,165,56 |
| DB 191,64,163,158,129,243,215,251 |
| DB 124,227,57,130,155,47,255,135 |
| DB 52,142,67,68,196,222,233,203 |
| DB 84,123,148,50,166,194,35,61 |
| DB 238,76,149,11,66,250,195,78 |
| DB 8,46,161,102,40,217,36,178 |
| DB 118,91,162,73,109,139,209,37 |
| DB 114,248,246,100,134,104,152,22 |
| DB 212,164,92,204,93,101,182,146 |
| DB 108,112,72,80,253,237,185,218 |
| DB 94,21,70,87,167,141,157,132 |
| DB 144,216,171,0,140,188,211,10 |
| DB 247,228,88,5,184,179,69,6 |
| DB 208,44,30,143,202,63,15,2 |
| DB 193,175,189,3,1,19,138,107 |
| DB 58,145,17,65,79,103,220,234 |
| DB 151,242,207,206,240,180,230,115 |
| DB 150,172,116,34,231,173,53,133 |
| DB 226,249,55,232,28,117,223,110 |
| DB 71,241,26,113,29,41,197,137 |
| DB 111,183,98,14,170,24,190,27 |
| DB 252,86,62,75,198,210,121,32 |
| DB 154,219,192,254,120,205,90,244 |
| DB 31,221,168,51,136,7,199,49 |
| DB 177,18,16,89,39,128,236,95 |
| DB 96,81,127,169,25,181,74,13 |
| DB 45,229,122,159,147,201,156,239 |
| DB 160,224,59,77,174,42,245,176 |
| DB 200,235,187,60,131,83,153,97 |
| DB 23,43,4,126,186,119,214,38 |
| DB 225,105,20,99,85,33,12,125 |
| DB 82,9,106,213,48,54,165,56 |
| DB 191,64,163,158,129,243,215,251 |
| DB 124,227,57,130,155,47,255,135 |
| DB 52,142,67,68,196,222,233,203 |
| DB 84,123,148,50,166,194,35,61 |
| DB 238,76,149,11,66,250,195,78 |
| DB 8,46,161,102,40,217,36,178 |
| DB 118,91,162,73,109,139,209,37 |
| DB 114,248,246,100,134,104,152,22 |
| DB 212,164,92,204,93,101,182,146 |
| DB 108,112,72,80,253,237,185,218 |
| DB 94,21,70,87,167,141,157,132 |
| DB 144,216,171,0,140,188,211,10 |
| DB 247,228,88,5,184,179,69,6 |
| DB 208,44,30,143,202,63,15,2 |
| DB 193,175,189,3,1,19,138,107 |
| DB 58,145,17,65,79,103,220,234 |
| DB 151,242,207,206,240,180,230,115 |
| DB 150,172,116,34,231,173,53,133 |
| DB 226,249,55,232,28,117,223,110 |
| DB 71,241,26,113,29,41,197,137 |
| DB 111,183,98,14,170,24,190,27 |
| DB 252,86,62,75,198,210,121,32 |
| DB 154,219,192,254,120,205,90,244 |
| DB 31,221,168,51,136,7,199,49 |
| DB 177,18,16,89,39,128,236,95 |
| DB 96,81,127,169,25,181,74,13 |
| DB 45,229,122,159,147,201,156,239 |
| DB 160,224,59,77,174,42,245,176 |
| DB 200,235,187,60,131,83,153,97 |
| DB 23,43,4,126,186,119,214,38 |
| DB 225,105,20,99,85,33,12,125 |
| __x86_AES_decrypt ENDP |
| ALIGN 16 |
| _AES_decrypt PROC PUBLIC |
| $L_AES_decrypt_begin:: |
| push ebp |
| push ebx |
| push esi |
| push edi |
| mov esi,DWORD PTR 20[esp] |
| mov edi,DWORD PTR 28[esp] |
| mov eax,esp |
| sub esp,36 |
| and esp,-64 |
| lea ebx,DWORD PTR [edi-127] |
| sub ebx,esp |
| neg ebx |
| and ebx,960 |
| sub esp,ebx |
| add esp,4 |
| mov DWORD PTR 28[esp],eax |
| call $L010pic_point |
| $L010pic_point: |
| pop ebp |
| lea eax,DWORD PTR _OPENSSL_ia32cap_P |
| lea ebp,DWORD PTR ($LAES_Td-$L010pic_point)[ebp] |
| lea ebx,DWORD PTR 764[esp] |
| sub ebx,ebp |
| and ebx,768 |
| lea ebp,DWORD PTR 2176[ebx*1+ebp] |
| bt DWORD PTR [eax],25 |
| jnc $L011x86 |
| movq mm0,QWORD PTR [esi] |
| movq mm4,QWORD PTR 8[esi] |
| call __sse_AES_decrypt_compact |
| mov esp,DWORD PTR 28[esp] |
| mov esi,DWORD PTR 24[esp] |
| movq QWORD PTR [esi],mm0 |
| movq QWORD PTR 8[esi],mm4 |
| emms |
| pop edi |
| pop esi |
| pop ebx |
| pop ebp |
| ret |
| ALIGN 16 |
| $L011x86: |
| mov DWORD PTR 24[esp],ebp |
| mov eax,DWORD PTR [esi] |
| mov ebx,DWORD PTR 4[esi] |
| mov ecx,DWORD PTR 8[esi] |
| mov edx,DWORD PTR 12[esi] |
| call __x86_AES_decrypt_compact |
| mov esp,DWORD PTR 28[esp] |
| mov esi,DWORD PTR 24[esp] |
| mov DWORD PTR [esi],eax |
| mov DWORD PTR 4[esi],ebx |
| mov DWORD PTR 8[esi],ecx |
| mov DWORD PTR 12[esi],edx |
| pop edi |
| pop esi |
| pop ebx |
| pop ebp |
| ret |
| _AES_decrypt ENDP |
| ALIGN 16 |
| _AES_cbc_encrypt PROC PUBLIC |
| $L_AES_cbc_encrypt_begin:: |
| push ebp |
| push ebx |
| push esi |
| push edi |
| mov ecx,DWORD PTR 28[esp] |
| cmp ecx,0 |
| je $L012drop_out |
| call $L013pic_point |
| $L013pic_point: |
| pop ebp |
| lea eax,DWORD PTR _OPENSSL_ia32cap_P |
| cmp DWORD PTR 40[esp],0 |
| lea ebp,DWORD PTR ($LAES_Te-$L013pic_point)[ebp] |
| jne $L014picked_te |
| lea ebp,DWORD PTR ($LAES_Td-$LAES_Te)[ebp] |
| $L014picked_te: |
| pushfd |
| cld |
| cmp ecx,512 |
| jb $L015slow_way |
| test ecx,15 |
| jnz $L015slow_way |
| lea esi,DWORD PTR [esp-324] |
| and esi,-64 |
| mov eax,ebp |
| lea ebx,DWORD PTR 2304[ebp] |
| mov edx,esi |
| and eax,4095 |
| and ebx,4095 |
| and edx,4095 |
| cmp edx,ebx |
| jb $L016tbl_break_out |
| sub edx,ebx |
| sub esi,edx |
| jmp $L017tbl_ok |
| ALIGN 4 |
| $L016tbl_break_out: |
| sub edx,eax |
| and edx,4095 |
| add edx,384 |
| sub esi,edx |
| ALIGN 4 |
| $L017tbl_ok: |
| lea edx,DWORD PTR 24[esp] |
| xchg esp,esi |
| add esp,4 |
| mov DWORD PTR 24[esp],ebp |
| mov DWORD PTR 28[esp],esi |
| mov eax,DWORD PTR [edx] |
| mov ebx,DWORD PTR 4[edx] |
| mov edi,DWORD PTR 12[edx] |
| mov esi,DWORD PTR 16[edx] |
| mov edx,DWORD PTR 20[edx] |
| mov DWORD PTR 32[esp],eax |
| mov DWORD PTR 36[esp],ebx |
| mov DWORD PTR 40[esp],ecx |
| mov DWORD PTR 44[esp],edi |
| mov DWORD PTR 48[esp],esi |
| mov DWORD PTR 316[esp],0 |
| mov ebx,edi |
| mov ecx,61 |
| sub ebx,ebp |
| mov esi,edi |
| and ebx,4095 |
| lea edi,DWORD PTR 76[esp] |
| cmp ebx,2304 |
| jb $L018do_copy |
| cmp ebx,3852 |
| jb $L019skip_copy |
| ALIGN 4 |
| $L018do_copy: |
| mov DWORD PTR 44[esp],edi |
| DD 2784229001 |
| $L019skip_copy: |
| mov edi,16 |
| ALIGN 4 |
| $L020prefetch_tbl: |
| mov eax,DWORD PTR [ebp] |
| mov ebx,DWORD PTR 32[ebp] |
| mov ecx,DWORD PTR 64[ebp] |
| mov esi,DWORD PTR 96[ebp] |
| lea ebp,DWORD PTR 128[ebp] |
| sub edi,1 |
| jnz $L020prefetch_tbl |
| sub ebp,2048 |
| mov esi,DWORD PTR 32[esp] |
| mov edi,DWORD PTR 48[esp] |
| cmp edx,0 |
| je $L021fast_decrypt |
| mov eax,DWORD PTR [edi] |
| mov ebx,DWORD PTR 4[edi] |
| ALIGN 16 |
| $L022fast_enc_loop: |
| mov ecx,DWORD PTR 8[edi] |
| mov edx,DWORD PTR 12[edi] |
| xor eax,DWORD PTR [esi] |
| xor ebx,DWORD PTR 4[esi] |
| xor ecx,DWORD PTR 8[esi] |
| xor edx,DWORD PTR 12[esi] |
| mov edi,DWORD PTR 44[esp] |
| call __x86_AES_encrypt |
| mov esi,DWORD PTR 32[esp] |
| mov edi,DWORD PTR 36[esp] |
| mov DWORD PTR [edi],eax |
| mov DWORD PTR 4[edi],ebx |
| mov DWORD PTR 8[edi],ecx |
| mov DWORD PTR 12[edi],edx |
| lea esi,DWORD PTR 16[esi] |
| mov ecx,DWORD PTR 40[esp] |
| mov DWORD PTR 32[esp],esi |
| lea edx,DWORD PTR 16[edi] |
| mov DWORD PTR 36[esp],edx |
| sub ecx,16 |
| mov DWORD PTR 40[esp],ecx |
| jnz $L022fast_enc_loop |
| mov esi,DWORD PTR 48[esp] |
| mov ecx,DWORD PTR 8[edi] |
| mov edx,DWORD PTR 12[edi] |
| mov DWORD PTR [esi],eax |
| mov DWORD PTR 4[esi],ebx |
| mov DWORD PTR 8[esi],ecx |
| mov DWORD PTR 12[esi],edx |
| cmp DWORD PTR 316[esp],0 |
| mov edi,DWORD PTR 44[esp] |
| je $L023skip_ezero |
| mov ecx,60 |
| xor eax,eax |
| ALIGN 4 |
| DD 2884892297 |
| $L023skip_ezero: |
| mov esp,DWORD PTR 28[esp] |
| popfd |
| $L012drop_out: |
| pop edi |
| pop esi |
| pop ebx |
| pop ebp |
| ret |
| pushfd |
| ALIGN 16 |
| $L021fast_decrypt: |
| cmp esi,DWORD PTR 36[esp] |
| je $L024fast_dec_in_place |
| mov DWORD PTR 52[esp],edi |
| ALIGN 4 |
| ALIGN 16 |
| $L025fast_dec_loop: |
| mov eax,DWORD PTR [esi] |
| mov ebx,DWORD PTR 4[esi] |
| mov ecx,DWORD PTR 8[esi] |
| mov edx,DWORD PTR 12[esi] |
| mov edi,DWORD PTR 44[esp] |
| call __x86_AES_decrypt |
| mov edi,DWORD PTR 52[esp] |
| mov esi,DWORD PTR 40[esp] |
| xor eax,DWORD PTR [edi] |
| xor ebx,DWORD PTR 4[edi] |
| xor ecx,DWORD PTR 8[edi] |
| xor edx,DWORD PTR 12[edi] |
| mov edi,DWORD PTR 36[esp] |
| mov esi,DWORD PTR 32[esp] |
| mov DWORD PTR [edi],eax |
| mov DWORD PTR 4[edi],ebx |
| mov DWORD PTR 8[edi],ecx |
| mov DWORD PTR 12[edi],edx |
| mov ecx,DWORD PTR 40[esp] |
| mov DWORD PTR 52[esp],esi |
| lea esi,DWORD PTR 16[esi] |
| mov DWORD PTR 32[esp],esi |
| lea edi,DWORD PTR 16[edi] |
| mov DWORD PTR 36[esp],edi |
| sub ecx,16 |
| mov DWORD PTR 40[esp],ecx |
| jnz $L025fast_dec_loop |
| mov edi,DWORD PTR 52[esp] |
| mov esi,DWORD PTR 48[esp] |
| mov eax,DWORD PTR [edi] |
| mov ebx,DWORD PTR 4[edi] |
| mov ecx,DWORD PTR 8[edi] |
| mov edx,DWORD PTR 12[edi] |
| mov DWORD PTR [esi],eax |
| mov DWORD PTR 4[esi],ebx |
| mov DWORD PTR 8[esi],ecx |
| mov DWORD PTR 12[esi],edx |
| jmp $L026fast_dec_out |
| ALIGN 16 |
| $L024fast_dec_in_place: |
| $L027fast_dec_in_place_loop: |
| mov eax,DWORD PTR [esi] |
| mov ebx,DWORD PTR 4[esi] |
| mov ecx,DWORD PTR 8[esi] |
| mov edx,DWORD PTR 12[esi] |
| lea edi,DWORD PTR 60[esp] |
| mov DWORD PTR [edi],eax |
| mov DWORD PTR 4[edi],ebx |
| mov DWORD PTR 8[edi],ecx |
| mov DWORD PTR 12[edi],edx |
| mov edi,DWORD PTR 44[esp] |
| call __x86_AES_decrypt |
| mov edi,DWORD PTR 48[esp] |
| mov esi,DWORD PTR 36[esp] |
| xor eax,DWORD PTR [edi] |
| xor ebx,DWORD PTR 4[edi] |
| xor ecx,DWORD PTR 8[edi] |
| xor edx,DWORD PTR 12[edi] |
| mov DWORD PTR [esi],eax |
| mov DWORD PTR 4[esi],ebx |
| mov DWORD PTR 8[esi],ecx |
| mov DWORD PTR 12[esi],edx |
| lea esi,DWORD PTR 16[esi] |
| mov DWORD PTR 36[esp],esi |
| lea esi,DWORD PTR 60[esp] |
| mov eax,DWORD PTR [esi] |
| mov ebx,DWORD PTR 4[esi] |
| mov ecx,DWORD PTR 8[esi] |
| mov edx,DWORD PTR 12[esi] |
| mov DWORD PTR [edi],eax |
| mov DWORD PTR 4[edi],ebx |
| mov DWORD PTR 8[edi],ecx |
| mov DWORD PTR 12[edi],edx |
| mov esi,DWORD PTR 32[esp] |
| mov ecx,DWORD PTR 40[esp] |
| lea esi,DWORD PTR 16[esi] |
| mov DWORD PTR 32[esp],esi |
| sub ecx,16 |
| mov DWORD PTR 40[esp],ecx |
| jnz $L027fast_dec_in_place_loop |
| ALIGN 4 |
| $L026fast_dec_out: |
| cmp DWORD PTR 316[esp],0 |
| mov edi,DWORD PTR 44[esp] |
| je $L028skip_dzero |
| mov ecx,60 |
| xor eax,eax |
| ALIGN 4 |
| DD 2884892297 |
| $L028skip_dzero: |
| mov esp,DWORD PTR 28[esp] |
| popfd |
| pop edi |
| pop esi |
| pop ebx |
| pop ebp |
| ret |
| pushfd |
| ALIGN 16 |
| $L015slow_way: |
| mov eax,DWORD PTR [eax] |
| mov edi,DWORD PTR 36[esp] |
| lea esi,DWORD PTR [esp-80] |
| and esi,-64 |
| lea ebx,DWORD PTR [edi-143] |
| sub ebx,esi |
| neg ebx |
| and ebx,960 |
| sub esi,ebx |
| lea ebx,DWORD PTR 768[esi] |
| sub ebx,ebp |
| and ebx,768 |
| lea ebp,DWORD PTR 2176[ebx*1+ebp] |
| lea edx,DWORD PTR 24[esp] |
| xchg esp,esi |
| add esp,4 |
| mov DWORD PTR 24[esp],ebp |
| mov DWORD PTR 28[esp],esi |
| mov DWORD PTR 52[esp],eax |
| mov eax,DWORD PTR [edx] |
| mov ebx,DWORD PTR 4[edx] |
| mov esi,DWORD PTR 16[edx] |
| mov edx,DWORD PTR 20[edx] |
| mov DWORD PTR 32[esp],eax |
| mov DWORD PTR 36[esp],ebx |
| mov DWORD PTR 40[esp],ecx |
| mov DWORD PTR 44[esp],edi |
| mov DWORD PTR 48[esp],esi |
| mov edi,esi |
| mov esi,eax |
| cmp edx,0 |
| je $L029slow_decrypt |
| cmp ecx,16 |
| mov edx,ebx |
| jb $L030slow_enc_tail |
| bt DWORD PTR 52[esp],25 |
| jnc $L031slow_enc_x86 |
| movq mm0,QWORD PTR [edi] |
| movq mm4,QWORD PTR 8[edi] |
| ALIGN 16 |
| $L032slow_enc_loop_sse: |
| pxor mm0,QWORD PTR [esi] |
| pxor mm4,QWORD PTR 8[esi] |
| mov edi,DWORD PTR 44[esp] |
| call __sse_AES_encrypt_compact |
| mov esi,DWORD PTR 32[esp] |
| mov edi,DWORD PTR 36[esp] |
| mov ecx,DWORD PTR 40[esp] |
| movq QWORD PTR [edi],mm0 |
| movq QWORD PTR 8[edi],mm4 |
| lea esi,DWORD PTR 16[esi] |
| mov DWORD PTR 32[esp],esi |
| lea edx,DWORD PTR 16[edi] |
| mov DWORD PTR 36[esp],edx |
| sub ecx,16 |
| cmp ecx,16 |
| mov DWORD PTR 40[esp],ecx |
| jae $L032slow_enc_loop_sse |
| test ecx,15 |
| jnz $L030slow_enc_tail |
| mov esi,DWORD PTR 48[esp] |
| movq QWORD PTR [esi],mm0 |
| movq QWORD PTR 8[esi],mm4 |
| emms |
| mov esp,DWORD PTR 28[esp] |
| popfd |
| pop edi |
| pop esi |
| pop ebx |
| pop ebp |
| ret |
| pushfd |
| ALIGN 16 |
| $L031slow_enc_x86: |
| mov eax,DWORD PTR [edi] |
| mov ebx,DWORD PTR 4[edi] |
| ALIGN 4 |
| $L033slow_enc_loop_x86: |
| mov ecx,DWORD PTR 8[edi] |
| mov edx,DWORD PTR 12[edi] |
| xor eax,DWORD PTR [esi] |
| xor ebx,DWORD PTR 4[esi] |
| xor ecx,DWORD PTR 8[esi] |
| xor edx,DWORD PTR 12[esi] |
| mov edi,DWORD PTR 44[esp] |
| call __x86_AES_encrypt_compact |
| mov esi,DWORD PTR 32[esp] |
| mov edi,DWORD PTR 36[esp] |
| mov DWORD PTR [edi],eax |
| mov DWORD PTR 4[edi],ebx |
| mov DWORD PTR 8[edi],ecx |
| mov DWORD PTR 12[edi],edx |
| mov ecx,DWORD PTR 40[esp] |
| lea esi,DWORD PTR 16[esi] |
| mov DWORD PTR 32[esp],esi |
| lea edx,DWORD PTR 16[edi] |
| mov DWORD PTR 36[esp],edx |
| sub ecx,16 |
| cmp ecx,16 |
| mov DWORD PTR 40[esp],ecx |
| jae $L033slow_enc_loop_x86 |
| test ecx,15 |
| jnz $L030slow_enc_tail |
| mov esi,DWORD PTR 48[esp] |
| mov ecx,DWORD PTR 8[edi] |
| mov edx,DWORD PTR 12[edi] |
| mov DWORD PTR [esi],eax |
| mov DWORD PTR 4[esi],ebx |
| mov DWORD PTR 8[esi],ecx |
| mov DWORD PTR 12[esi],edx |
| mov esp,DWORD PTR 28[esp] |
| popfd |
| pop edi |
| pop esi |
| pop ebx |
| pop ebp |
| ret |
| pushfd |
| ALIGN 16 |
| $L030slow_enc_tail: |
| emms |
| mov edi,edx |
| mov ebx,16 |
| sub ebx,ecx |
| cmp edi,esi |
| je $L034enc_in_place |
| ALIGN 4 |
| DD 2767451785 |
| jmp $L035enc_skip_in_place |
| $L034enc_in_place: |
| lea edi,DWORD PTR [ecx*1+edi] |
| $L035enc_skip_in_place: |
| mov ecx,ebx |
| xor eax,eax |
| ALIGN 4 |
| DD 2868115081 |
| mov edi,DWORD PTR 48[esp] |
| mov esi,edx |
| mov eax,DWORD PTR [edi] |
| mov ebx,DWORD PTR 4[edi] |
| mov DWORD PTR 40[esp],16 |
| jmp $L033slow_enc_loop_x86 |
| ALIGN 16 |
| $L029slow_decrypt: |
| bt DWORD PTR 52[esp],25 |
| jnc $L036slow_dec_loop_x86 |
| ALIGN 4 |
| $L037slow_dec_loop_sse: |
| movq mm0,QWORD PTR [esi] |
| movq mm4,QWORD PTR 8[esi] |
| mov edi,DWORD PTR 44[esp] |
| call __sse_AES_decrypt_compact |
| mov esi,DWORD PTR 32[esp] |
| lea eax,DWORD PTR 60[esp] |
| mov ebx,DWORD PTR 36[esp] |
| mov ecx,DWORD PTR 40[esp] |
| mov edi,DWORD PTR 48[esp] |
| movq mm1,QWORD PTR [esi] |
| movq mm5,QWORD PTR 8[esi] |
| pxor mm0,QWORD PTR [edi] |
| pxor mm4,QWORD PTR 8[edi] |
| movq QWORD PTR [edi],mm1 |
| movq QWORD PTR 8[edi],mm5 |
| sub ecx,16 |
| jc $L038slow_dec_partial_sse |
| movq QWORD PTR [ebx],mm0 |
| movq QWORD PTR 8[ebx],mm4 |
| lea ebx,DWORD PTR 16[ebx] |
| mov DWORD PTR 36[esp],ebx |
| lea esi,DWORD PTR 16[esi] |
| mov DWORD PTR 32[esp],esi |
| mov DWORD PTR 40[esp],ecx |
| jnz $L037slow_dec_loop_sse |
| emms |
| mov esp,DWORD PTR 28[esp] |
| popfd |
| pop edi |
| pop esi |
| pop ebx |
| pop ebp |
| ret |
| pushfd |
| ALIGN 16 |
| $L038slow_dec_partial_sse: |
| movq QWORD PTR [eax],mm0 |
| movq QWORD PTR 8[eax],mm4 |
| emms |
| add ecx,16 |
| mov edi,ebx |
| mov esi,eax |
| ALIGN 4 |
| DD 2767451785 |
| mov esp,DWORD PTR 28[esp] |
| popfd |
| pop edi |
| pop esi |
| pop ebx |
| pop ebp |
| ret |
| pushfd |
| ALIGN 16 |
| $L036slow_dec_loop_x86: |
| mov eax,DWORD PTR [esi] |
| mov ebx,DWORD PTR 4[esi] |
| mov ecx,DWORD PTR 8[esi] |
| mov edx,DWORD PTR 12[esi] |
| lea edi,DWORD PTR 60[esp] |
| mov DWORD PTR [edi],eax |
| mov DWORD PTR 4[edi],ebx |
| mov DWORD PTR 8[edi],ecx |
| mov DWORD PTR 12[edi],edx |
| mov edi,DWORD PTR 44[esp] |
| call __x86_AES_decrypt_compact |
| mov edi,DWORD PTR 48[esp] |
| mov esi,DWORD PTR 40[esp] |
| xor eax,DWORD PTR [edi] |
| xor ebx,DWORD PTR 4[edi] |
| xor ecx,DWORD PTR 8[edi] |
| xor edx,DWORD PTR 12[edi] |
| sub esi,16 |
| jc $L039slow_dec_partial_x86 |
| mov DWORD PTR 40[esp],esi |
| mov esi,DWORD PTR 36[esp] |
| mov DWORD PTR [esi],eax |
| mov DWORD PTR 4[esi],ebx |
| mov DWORD PTR 8[esi],ecx |
| mov DWORD PTR 12[esi],edx |
| lea esi,DWORD PTR 16[esi] |
| mov DWORD PTR 36[esp],esi |
| lea esi,DWORD PTR 60[esp] |
| mov eax,DWORD PTR [esi] |
| mov ebx,DWORD PTR 4[esi] |
| mov ecx,DWORD PTR 8[esi] |
| mov edx,DWORD PTR 12[esi] |
| mov DWORD PTR [edi],eax |
| mov DWORD PTR 4[edi],ebx |
| mov DWORD PTR 8[edi],ecx |
| mov DWORD PTR 12[edi],edx |
| mov esi,DWORD PTR 32[esp] |
| lea esi,DWORD PTR 16[esi] |
| mov DWORD PTR 32[esp],esi |
| jnz $L036slow_dec_loop_x86 |
| mov esp,DWORD PTR 28[esp] |
| popfd |
| pop edi |
| pop esi |
| pop ebx |
| pop ebp |
| ret |
| pushfd |
| ALIGN 16 |
| $L039slow_dec_partial_x86: |
| lea esi,DWORD PTR 60[esp] |
| mov DWORD PTR [esi],eax |
| mov DWORD PTR 4[esi],ebx |
| mov DWORD PTR 8[esi],ecx |
| mov DWORD PTR 12[esi],edx |
| mov esi,DWORD PTR 32[esp] |
| mov eax,DWORD PTR [esi] |
| mov ebx,DWORD PTR 4[esi] |
| mov ecx,DWORD PTR 8[esi] |
| mov edx,DWORD PTR 12[esi] |
| mov DWORD PTR [edi],eax |
| mov DWORD PTR 4[edi],ebx |
| mov DWORD PTR 8[edi],ecx |
| mov DWORD PTR 12[edi],edx |
| mov ecx,DWORD PTR 40[esp] |
| mov edi,DWORD PTR 36[esp] |
| lea esi,DWORD PTR 60[esp] |
| ALIGN 4 |
| DD 2767451785 |
| mov esp,DWORD PTR 28[esp] |
| popfd |
| pop edi |
| pop esi |
| pop ebx |
| pop ebp |
| ret |
| _AES_cbc_encrypt ENDP |
| ALIGN 16 |
| __x86_AES_set_encrypt_key PROC PRIVATE |
| push ebp |
| push ebx |
| push esi |
| push edi |
| mov esi,DWORD PTR 24[esp] |
| mov edi,DWORD PTR 32[esp] |
| test esi,-1 |
| jz $L040badpointer |
| test edi,-1 |
| jz $L040badpointer |
| call $L041pic_point |
| $L041pic_point: |
| pop ebp |
| lea ebp,DWORD PTR ($LAES_Te-$L041pic_point)[ebp] |
| lea ebp,DWORD PTR 2176[ebp] |
| mov eax,DWORD PTR [ebp-128] |
| mov ebx,DWORD PTR [ebp-96] |
| mov ecx,DWORD PTR [ebp-64] |
| mov edx,DWORD PTR [ebp-32] |
| mov eax,DWORD PTR [ebp] |
| mov ebx,DWORD PTR 32[ebp] |
| mov ecx,DWORD PTR 64[ebp] |
| mov edx,DWORD PTR 96[ebp] |
| mov ecx,DWORD PTR 28[esp] |
| cmp ecx,128 |
| je $L04210rounds |
| cmp ecx,192 |
| je $L04312rounds |
| cmp ecx,256 |
| je $L04414rounds |
| mov eax,-2 |
| jmp $L045exit |
| $L04210rounds: |
| mov eax,DWORD PTR [esi] |
| mov ebx,DWORD PTR 4[esi] |
| mov ecx,DWORD PTR 8[esi] |
| mov edx,DWORD PTR 12[esi] |
| mov DWORD PTR [edi],eax |
| mov DWORD PTR 4[edi],ebx |
| mov DWORD PTR 8[edi],ecx |
| mov DWORD PTR 12[edi],edx |
| xor ecx,ecx |
| jmp $L04610shortcut |
| ALIGN 4 |
| $L04710loop: |
| mov eax,DWORD PTR [edi] |
| mov edx,DWORD PTR 12[edi] |
| $L04610shortcut: |
| movzx esi,dl |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| movzx esi,dh |
| shl ebx,24 |
| xor eax,ebx |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| shr edx,16 |
| movzx esi,dl |
| xor eax,ebx |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| movzx esi,dh |
| shl ebx,8 |
| xor eax,ebx |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| shl ebx,16 |
| xor eax,ebx |
| xor eax,DWORD PTR 896[ecx*4+ebp] |
| mov DWORD PTR 16[edi],eax |
| xor eax,DWORD PTR 4[edi] |
| mov DWORD PTR 20[edi],eax |
| xor eax,DWORD PTR 8[edi] |
| mov DWORD PTR 24[edi],eax |
| xor eax,DWORD PTR 12[edi] |
| mov DWORD PTR 28[edi],eax |
| inc ecx |
| add edi,16 |
| cmp ecx,10 |
| jl $L04710loop |
| mov DWORD PTR 80[edi],10 |
| xor eax,eax |
| jmp $L045exit |
| $L04312rounds: |
| mov eax,DWORD PTR [esi] |
| mov ebx,DWORD PTR 4[esi] |
| mov ecx,DWORD PTR 8[esi] |
| mov edx,DWORD PTR 12[esi] |
| mov DWORD PTR [edi],eax |
| mov DWORD PTR 4[edi],ebx |
| mov DWORD PTR 8[edi],ecx |
| mov DWORD PTR 12[edi],edx |
| mov ecx,DWORD PTR 16[esi] |
| mov edx,DWORD PTR 20[esi] |
| mov DWORD PTR 16[edi],ecx |
| mov DWORD PTR 20[edi],edx |
| xor ecx,ecx |
| jmp $L04812shortcut |
| ALIGN 4 |
| $L04912loop: |
| mov eax,DWORD PTR [edi] |
| mov edx,DWORD PTR 20[edi] |
| $L04812shortcut: |
| movzx esi,dl |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| movzx esi,dh |
| shl ebx,24 |
| xor eax,ebx |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| shr edx,16 |
| movzx esi,dl |
| xor eax,ebx |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| movzx esi,dh |
| shl ebx,8 |
| xor eax,ebx |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| shl ebx,16 |
| xor eax,ebx |
| xor eax,DWORD PTR 896[ecx*4+ebp] |
| mov DWORD PTR 24[edi],eax |
| xor eax,DWORD PTR 4[edi] |
| mov DWORD PTR 28[edi],eax |
| xor eax,DWORD PTR 8[edi] |
| mov DWORD PTR 32[edi],eax |
| xor eax,DWORD PTR 12[edi] |
| mov DWORD PTR 36[edi],eax |
| cmp ecx,7 |
| je $L05012break |
| inc ecx |
| xor eax,DWORD PTR 16[edi] |
| mov DWORD PTR 40[edi],eax |
| xor eax,DWORD PTR 20[edi] |
| mov DWORD PTR 44[edi],eax |
| add edi,24 |
| jmp $L04912loop |
| $L05012break: |
| mov DWORD PTR 72[edi],12 |
| xor eax,eax |
| jmp $L045exit |
| $L04414rounds: |
| mov eax,DWORD PTR [esi] |
| mov ebx,DWORD PTR 4[esi] |
| mov ecx,DWORD PTR 8[esi] |
| mov edx,DWORD PTR 12[esi] |
| mov DWORD PTR [edi],eax |
| mov DWORD PTR 4[edi],ebx |
| mov DWORD PTR 8[edi],ecx |
| mov DWORD PTR 12[edi],edx |
| mov eax,DWORD PTR 16[esi] |
| mov ebx,DWORD PTR 20[esi] |
| mov ecx,DWORD PTR 24[esi] |
| mov edx,DWORD PTR 28[esi] |
| mov DWORD PTR 16[edi],eax |
| mov DWORD PTR 20[edi],ebx |
| mov DWORD PTR 24[edi],ecx |
| mov DWORD PTR 28[edi],edx |
| xor ecx,ecx |
| jmp $L05114shortcut |
| ALIGN 4 |
| $L05214loop: |
| mov edx,DWORD PTR 28[edi] |
| $L05114shortcut: |
| mov eax,DWORD PTR [edi] |
| movzx esi,dl |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| movzx esi,dh |
| shl ebx,24 |
| xor eax,ebx |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| shr edx,16 |
| movzx esi,dl |
| xor eax,ebx |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| movzx esi,dh |
| shl ebx,8 |
| xor eax,ebx |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| shl ebx,16 |
| xor eax,ebx |
| xor eax,DWORD PTR 896[ecx*4+ebp] |
| mov DWORD PTR 32[edi],eax |
| xor eax,DWORD PTR 4[edi] |
| mov DWORD PTR 36[edi],eax |
| xor eax,DWORD PTR 8[edi] |
| mov DWORD PTR 40[edi],eax |
| xor eax,DWORD PTR 12[edi] |
| mov DWORD PTR 44[edi],eax |
| cmp ecx,6 |
| je $L05314break |
| inc ecx |
| mov edx,eax |
| mov eax,DWORD PTR 16[edi] |
| movzx esi,dl |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| movzx esi,dh |
| xor eax,ebx |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| shr edx,16 |
| shl ebx,8 |
| movzx esi,dl |
| xor eax,ebx |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| movzx esi,dh |
| shl ebx,16 |
| xor eax,ebx |
| movzx ebx,BYTE PTR [esi*1+ebp-128] |
| shl ebx,24 |
| xor eax,ebx |
| mov DWORD PTR 48[edi],eax |
| xor eax,DWORD PTR 20[edi] |
| mov DWORD PTR 52[edi],eax |
| xor eax,DWORD PTR 24[edi] |
| mov DWORD PTR 56[edi],eax |
| xor eax,DWORD PTR 28[edi] |
| mov DWORD PTR 60[edi],eax |
| add edi,32 |
| jmp $L05214loop |
| $L05314break: |
| mov DWORD PTR 48[edi],14 |
| xor eax,eax |
| jmp $L045exit |
| $L040badpointer: |
| mov eax,-1 |
| $L045exit: |
| pop edi |
| pop esi |
| pop ebx |
| pop ebp |
| ret |
| __x86_AES_set_encrypt_key ENDP |
| ALIGN 16 |
| _private_AES_set_encrypt_key PROC PUBLIC |
| $L_private_AES_set_encrypt_key_begin:: |
| call __x86_AES_set_encrypt_key |
| ret |
| _private_AES_set_encrypt_key ENDP |
| ALIGN 16 |
| _private_AES_set_decrypt_key PROC PUBLIC |
| $L_private_AES_set_decrypt_key_begin:: |
| call __x86_AES_set_encrypt_key |
| cmp eax,0 |
| je $L054proceed |
| ret |
| $L054proceed: |
| push ebp |
| push ebx |
| push esi |
| push edi |
| mov esi,DWORD PTR 28[esp] |
| mov ecx,DWORD PTR 240[esi] |
| lea ecx,DWORD PTR [ecx*4] |
| lea edi,DWORD PTR [ecx*4+esi] |
| ALIGN 4 |
| $L055invert: |
| mov eax,DWORD PTR [esi] |
| mov ebx,DWORD PTR 4[esi] |
| mov ecx,DWORD PTR [edi] |
| mov edx,DWORD PTR 4[edi] |
| mov DWORD PTR [edi],eax |
| mov DWORD PTR 4[edi],ebx |
| mov DWORD PTR [esi],ecx |
| mov DWORD PTR 4[esi],edx |
| mov eax,DWORD PTR 8[esi] |
| mov ebx,DWORD PTR 12[esi] |
| mov ecx,DWORD PTR 8[edi] |
| mov edx,DWORD PTR 12[edi] |
| mov DWORD PTR 8[edi],eax |
| mov DWORD PTR 12[edi],ebx |
| mov DWORD PTR 8[esi],ecx |
| mov DWORD PTR 12[esi],edx |
| add esi,16 |
| sub edi,16 |
| cmp esi,edi |
| jne $L055invert |
| mov edi,DWORD PTR 28[esp] |
| mov esi,DWORD PTR 240[edi] |
| lea esi,DWORD PTR [esi*1+esi-2] |
| lea esi,DWORD PTR [esi*8+edi] |
| mov DWORD PTR 28[esp],esi |
| mov eax,DWORD PTR 16[edi] |
| ALIGN 4 |
| $L056permute: |
| add edi,16 |
| mov esi,eax |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea ebx,DWORD PTR [eax*1+eax] |
| sub esi,ebp |
| and ebx,4278124286 |
| and esi,454761243 |
| xor esi,ebx |
| mov ebx,esi |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea ecx,DWORD PTR [ebx*1+ebx] |
| sub esi,ebp |
| and ecx,4278124286 |
| and esi,454761243 |
| xor ebx,eax |
| xor esi,ecx |
| mov ecx,esi |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea edx,DWORD PTR [ecx*1+ecx] |
| xor ecx,eax |
| sub esi,ebp |
| and edx,4278124286 |
| and esi,454761243 |
| rol eax,8 |
| xor edx,esi |
| mov ebp,DWORD PTR 4[edi] |
| xor eax,ebx |
| xor ebx,edx |
| xor eax,ecx |
| rol ebx,24 |
| xor ecx,edx |
| xor eax,edx |
| rol ecx,16 |
| xor eax,ebx |
| rol edx,8 |
| xor eax,ecx |
| mov ebx,ebp |
| xor eax,edx |
| mov DWORD PTR [edi],eax |
| mov esi,ebx |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea ecx,DWORD PTR [ebx*1+ebx] |
| sub esi,ebp |
| and ecx,4278124286 |
| and esi,454761243 |
| xor esi,ecx |
| mov ecx,esi |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea edx,DWORD PTR [ecx*1+ecx] |
| sub esi,ebp |
| and edx,4278124286 |
| and esi,454761243 |
| xor ecx,ebx |
| xor esi,edx |
| mov edx,esi |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea eax,DWORD PTR [edx*1+edx] |
| xor edx,ebx |
| sub esi,ebp |
| and eax,4278124286 |
| and esi,454761243 |
| rol ebx,8 |
| xor eax,esi |
| mov ebp,DWORD PTR 8[edi] |
| xor ebx,ecx |
| xor ecx,eax |
| xor ebx,edx |
| rol ecx,24 |
| xor edx,eax |
| xor ebx,eax |
| rol edx,16 |
| xor ebx,ecx |
| rol eax,8 |
| xor ebx,edx |
| mov ecx,ebp |
| xor ebx,eax |
| mov DWORD PTR 4[edi],ebx |
| mov esi,ecx |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea edx,DWORD PTR [ecx*1+ecx] |
| sub esi,ebp |
| and edx,4278124286 |
| and esi,454761243 |
| xor esi,edx |
| mov edx,esi |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea eax,DWORD PTR [edx*1+edx] |
| sub esi,ebp |
| and eax,4278124286 |
| and esi,454761243 |
| xor edx,ecx |
| xor esi,eax |
| mov eax,esi |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea ebx,DWORD PTR [eax*1+eax] |
| xor eax,ecx |
| sub esi,ebp |
| and ebx,4278124286 |
| and esi,454761243 |
| rol ecx,8 |
| xor ebx,esi |
| mov ebp,DWORD PTR 12[edi] |
| xor ecx,edx |
| xor edx,ebx |
| xor ecx,eax |
| rol edx,24 |
| xor eax,ebx |
| xor ecx,ebx |
| rol eax,16 |
| xor ecx,edx |
| rol ebx,8 |
| xor ecx,eax |
| mov edx,ebp |
| xor ecx,ebx |
| mov DWORD PTR 8[edi],ecx |
| mov esi,edx |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea eax,DWORD PTR [edx*1+edx] |
| sub esi,ebp |
| and eax,4278124286 |
| and esi,454761243 |
| xor esi,eax |
| mov eax,esi |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea ebx,DWORD PTR [eax*1+eax] |
| sub esi,ebp |
| and ebx,4278124286 |
| and esi,454761243 |
| xor eax,edx |
| xor esi,ebx |
| mov ebx,esi |
| and esi,2155905152 |
| mov ebp,esi |
| shr ebp,7 |
| lea ecx,DWORD PTR [ebx*1+ebx] |
| xor ebx,edx |
| sub esi,ebp |
| and ecx,4278124286 |
| and esi,454761243 |
| rol edx,8 |
| xor ecx,esi |
| mov ebp,DWORD PTR 16[edi] |
| xor edx,eax |
| xor eax,ecx |
| xor edx,ebx |
| rol eax,24 |
| xor ebx,ecx |
| xor edx,ecx |
| rol ebx,16 |
| xor edx,eax |
| rol ecx,8 |
| xor edx,ebx |
| mov eax,ebp |
| xor edx,ecx |
| mov DWORD PTR 12[edi],edx |
| cmp edi,DWORD PTR 28[esp] |
| jb $L056permute |
| xor eax,eax |
| pop edi |
| pop esi |
| pop ebx |
| pop ebp |
| ret |
| _private_AES_set_decrypt_key ENDP |
| DB 65,69,83,32,102,111,114,32,120,56,54,44,32,67,82,89 |
| DB 80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114 |
| DB 111,64,111,112,101,110,115,115,108,46,111,114,103,62,0 |
| .text$ ENDS |
| .bss SEGMENT 'BSS' |
| COMM _OPENSSL_ia32cap_P:QWORD |
| .bss ENDS |
| END |