+; WARNING: do not edit!\r
+; Generated from openssl/crypto/aes/asm/vpaes-x86.pl\r
+;\r
+; Copyright 2011-2020 The OpenSSL Project Authors. All Rights Reserved.\r
+;\r
+; Licensed under the OpenSSL license (the "License"). You may not use\r
+; this file except in compliance with the License. You can obtain a copy\r
+; in the file LICENSE in the source distribution or at\r
+; https://www.openssl.org/source/license.html\r
+\r
+%ifidn __OUTPUT_FORMAT__,obj\r
+section code use32 class=code align=64\r
+%elifidn __OUTPUT_FORMAT__,win32\r
+$@feat.00 equ 1\r
+section .text code align=64\r
+%else\r
+section .text code\r
+%endif\r
+align 64\r
+L$_vpaes_consts:\r
+dd 218628480,235210255,168496130,67568393\r
+dd 252381056,17041926,33884169,51187212\r
+dd 252645135,252645135,252645135,252645135\r
+dd 1512730624,3266504856,1377990664,3401244816\r
+dd 830229760,1275146365,2969422977,3447763452\r
+dd 3411033600,2979783055,338359620,2782886510\r
+dd 4209124096,907596821,221174255,1006095553\r
+dd 191964160,3799684038,3164090317,1589111125\r
+dd 182528256,1777043520,2877432650,3265356744\r
+dd 1874708224,3503451415,3305285752,363511674\r
+dd 1606117888,3487855781,1093350906,2384367825\r
+dd 197121,67569157,134941193,202313229\r
+dd 67569157,134941193,202313229,197121\r
+dd 134941193,202313229,197121,67569157\r
+dd 202313229,197121,67569157,134941193\r
+dd 33619971,100992007,168364043,235736079\r
+dd 235736079,33619971,100992007,168364043\r
+dd 168364043,235736079,33619971,100992007\r
+dd 100992007,168364043,235736079,33619971\r
+dd 50462976,117835012,185207048,252579084\r
+dd 252314880,51251460,117574920,184942860\r
+dd 184682752,252054788,50987272,118359308\r
+dd 118099200,185467140,251790600,50727180\r
+dd 2946363062,528716217,1300004225,1881839624\r
+dd 1532713819,1532713819,1532713819,1532713819\r
+dd 3602276352,4288629033,3737020424,4153884961\r
+dd 1354558464,32357713,2958822624,3775749553\r
+dd 1201988352,132424512,1572796698,503232858\r
+dd 2213177600,1597421020,4103937655,675398315\r
+dd 2749646592,4273543773,1511898873,121693092\r
+dd 3040248576,1103263732,2871565598,1608280554\r
+dd 2236667136,2588920351,482954393,64377734\r
+dd 3069987328,291237287,2117370568,3650299247\r
+dd 533321216,3573750986,2572112006,1401264716\r
+dd 1339849704,2721158661,548607111,3445553514\r
+dd 2128193280,3054596040,2183486460,1257083700\r
+dd 655635200,1165381986,3923443150,2344132524\r
+dd 190078720,256924420,290342170,357187870\r
+dd 1610966272,2263057382,4103205268,309794674\r
+dd 2592527872,2233205587,1335446729,3402964816\r
+dd 3973531904,3225098121,3002836325,1918774430\r
+dd 3870401024,2102906079,2284471353,4117666579\r
+dd 617007872,1021508343,366931923,691083277\r
+dd 2528395776,3491914898,2968704004,1613121270\r
+dd 3445188352,3247741094,844474987,4093578302\r
+dd 651481088,1190302358,1689581232,574775300\r
+dd 4289380608,206939853,2555985458,2489840491\r
+dd 2130264064,327674451,3566485037,3349835193\r
+dd 2470714624,316102159,3636825756,3393945945\r
+db 86,101,99,116,111,114,32,80,101,114,109,117,116,97,116,105\r
+db 111,110,32,65,69,83,32,102,111,114,32,120,56,54,47,83\r
+db 83,83,69,51,44,32,77,105,107,101,32,72,97,109,98,117\r
+db 114,103,32,40,83,116,97,110,102,111,114,100,32,85,110,105\r
+db 118,101,114,115,105,116,121,41,0\r
+align 64\r
+align 16\r
+__vpaes_preheat:\r
+ add ebp,DWORD [esp]\r
+ movdqa xmm7,[ebp-48]\r
+ movdqa xmm6,[ebp-16]\r
+ ret\r
+align 16\r
+__vpaes_encrypt_core:\r
+ mov ecx,16\r
+ mov eax,DWORD [240+edx]\r
+ movdqa xmm1,xmm6\r
+ movdqa xmm2,[ebp]\r
+ pandn xmm1,xmm0\r
+ pand xmm0,xmm6\r
+ movdqu xmm5,[edx]\r
+db 102,15,56,0,208\r
+ movdqa xmm0,[16+ebp]\r
+ pxor xmm2,xmm5\r
+ psrld xmm1,4\r
+ add edx,16\r
+db 102,15,56,0,193\r
+ lea ebx,[192+ebp]\r
+ pxor xmm0,xmm2\r
+ jmp NEAR L$000enc_entry\r
+align 16\r
+L$001enc_loop:\r
+ movdqa xmm4,[32+ebp]\r
+ movdqa xmm0,[48+ebp]\r
+db 102,15,56,0,226\r
+db 102,15,56,0,195\r
+ pxor xmm4,xmm5\r
+ movdqa xmm5,[64+ebp]\r
+ pxor xmm0,xmm4\r
+ movdqa xmm1,[ecx*1+ebx-64]\r
+db 102,15,56,0,234\r
+ movdqa xmm2,[80+ebp]\r
+ movdqa xmm4,[ecx*1+ebx]\r
+db 102,15,56,0,211\r
+ movdqa xmm3,xmm0\r
+ pxor xmm2,xmm5\r
+db 102,15,56,0,193\r
+ add edx,16\r
+ pxor xmm0,xmm2\r
+db 102,15,56,0,220\r
+ add ecx,16\r
+ pxor xmm3,xmm0\r
+db 102,15,56,0,193\r
+ and ecx,48\r
+ sub eax,1\r
+ pxor xmm0,xmm3\r
+L$000enc_entry:\r
+ movdqa xmm1,xmm6\r
+ movdqa xmm5,[ebp-32]\r
+ pandn xmm1,xmm0\r
+ psrld xmm1,4\r
+ pand xmm0,xmm6\r
+db 102,15,56,0,232\r
+ movdqa xmm3,xmm7\r
+ pxor xmm0,xmm1\r
+db 102,15,56,0,217\r
+ movdqa xmm4,xmm7\r
+ pxor xmm3,xmm5\r
+db 102,15,56,0,224\r
+ movdqa xmm2,xmm7\r
+ pxor xmm4,xmm5\r
+db 102,15,56,0,211\r
+ movdqa xmm3,xmm7\r
+ pxor xmm2,xmm0\r
+db 102,15,56,0,220\r
+ movdqu xmm5,[edx]\r
+ pxor xmm3,xmm1\r
+ jnz NEAR L$001enc_loop\r
+ movdqa xmm4,[96+ebp]\r
+ movdqa xmm0,[112+ebp]\r
+db 102,15,56,0,226\r
+ pxor xmm4,xmm5\r
+db 102,15,56,0,195\r
+ movdqa xmm1,[64+ecx*1+ebx]\r
+ pxor xmm0,xmm4\r
+db 102,15,56,0,193\r
+ ret\r
+align 16\r
+__vpaes_decrypt_core:\r
+ lea ebx,[608+ebp]\r
+ mov eax,DWORD [240+edx]\r
+ movdqa xmm1,xmm6\r
+ movdqa xmm2,[ebx-64]\r
+ pandn xmm1,xmm0\r
+ mov ecx,eax\r
+ psrld xmm1,4\r
+ movdqu xmm5,[edx]\r
+ shl ecx,4\r
+ pand xmm0,xmm6\r
+db 102,15,56,0,208\r
+ movdqa xmm0,[ebx-48]\r
+ xor ecx,48\r
+db 102,15,56,0,193\r
+ and ecx,48\r
+ pxor xmm2,xmm5\r
+ movdqa xmm5,[176+ebp]\r
+ pxor xmm0,xmm2\r
+ add edx,16\r
+ lea ecx,[ecx*1+ebx-352]\r
+ jmp NEAR L$002dec_entry\r
+align 16\r
+L$003dec_loop:\r
+ movdqa xmm4,[ebx-32]\r
+ movdqa xmm1,[ebx-16]\r
+db 102,15,56,0,226\r
+db 102,15,56,0,203\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,[ebx]\r
+ pxor xmm0,xmm1\r
+ movdqa xmm1,[16+ebx]\r
+db 102,15,56,0,226\r
+db 102,15,56,0,197\r
+db 102,15,56,0,203\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,[32+ebx]\r
+ pxor xmm0,xmm1\r
+ movdqa xmm1,[48+ebx]\r
+db 102,15,56,0,226\r
+db 102,15,56,0,197\r
+db 102,15,56,0,203\r
+ pxor xmm0,xmm4\r
+ movdqa xmm4,[64+ebx]\r
+ pxor xmm0,xmm1\r
+ movdqa xmm1,[80+ebx]\r
+db 102,15,56,0,226\r
+db 102,15,56,0,197\r
+db 102,15,56,0,203\r
+ pxor xmm0,xmm4\r
+ add edx,16\r
+db 102,15,58,15,237,12\r
+ pxor xmm0,xmm1\r
+ sub eax,1\r
+L$002dec_entry:\r
+ movdqa xmm1,xmm6\r
+ movdqa xmm2,[ebp-32]\r
+ pandn xmm1,xmm0\r
+ pand xmm0,xmm6\r
+ psrld xmm1,4\r
+db 102,15,56,0,208\r
+ movdqa xmm3,xmm7\r
+ pxor xmm0,xmm1\r
+db 102,15,56,0,217\r
+ movdqa xmm4,xmm7\r
+ pxor xmm3,xmm2\r
+db 102,15,56,0,224\r
+ pxor xmm4,xmm2\r
+ movdqa xmm2,xmm7\r
+db 102,15,56,0,211\r
+ movdqa xmm3,xmm7\r
+ pxor xmm2,xmm0\r
+db 102,15,56,0,220\r
+ movdqu xmm0,[edx]\r
+ pxor xmm3,xmm1\r
+ jnz NEAR L$003dec_loop\r
+ movdqa xmm4,[96+ebx]\r
+db 102,15,56,0,226\r
+ pxor xmm4,xmm0\r
+ movdqa xmm0,[112+ebx]\r
+ movdqa xmm2,[ecx]\r
+db 102,15,56,0,195\r
+ pxor xmm0,xmm4\r
+db 102,15,56,0,194\r
+ ret\r
+align 16\r
+__vpaes_schedule_core:\r
+ add ebp,DWORD [esp]\r
+ movdqu xmm0,[esi]\r
+ movdqa xmm2,[320+ebp]\r
+ movdqa xmm3,xmm0\r
+ lea ebx,[ebp]\r
+ movdqa [4+esp],xmm2\r
+ call __vpaes_schedule_transform\r
+ movdqa xmm7,xmm0\r
+ test edi,edi\r
+ jnz NEAR L$004schedule_am_decrypting\r
+ movdqu [edx],xmm0\r
+ jmp NEAR L$005schedule_go\r
+L$004schedule_am_decrypting:\r
+ movdqa xmm1,[256+ecx*1+ebp]\r
+db 102,15,56,0,217\r
+ movdqu [edx],xmm3\r
+ xor ecx,48\r
+L$005schedule_go:\r
+ cmp eax,192\r
+ ja NEAR L$006schedule_256\r
+ je NEAR L$007schedule_192\r
+L$008schedule_128:\r
+ mov eax,10\r
+L$009loop_schedule_128:\r
+ call __vpaes_schedule_round\r
+ dec eax\r
+ jz NEAR L$010schedule_mangle_last\r
+ call __vpaes_schedule_mangle\r
+ jmp NEAR L$009loop_schedule_128\r
+align 16\r
+L$007schedule_192:\r
+ movdqu xmm0,[8+esi]\r
+ call __vpaes_schedule_transform\r
+ movdqa xmm6,xmm0\r
+ pxor xmm4,xmm4\r
+ movhlps xmm6,xmm4\r
+ mov eax,4\r
+L$011loop_schedule_192:\r
+ call __vpaes_schedule_round\r
+db 102,15,58,15,198,8\r
+ call __vpaes_schedule_mangle\r
+ call __vpaes_schedule_192_smear\r
+ call __vpaes_schedule_mangle\r
+ call __vpaes_schedule_round\r
+ dec eax\r
+ jz NEAR L$010schedule_mangle_last\r
+ call __vpaes_schedule_mangle\r
+ call __vpaes_schedule_192_smear\r
+ jmp NEAR L$011loop_schedule_192\r
+align 16\r
+L$006schedule_256:\r
+ movdqu xmm0,[16+esi]\r
+ call __vpaes_schedule_transform\r
+ mov eax,7\r
+L$012loop_schedule_256:\r
+ call __vpaes_schedule_mangle\r
+ movdqa xmm6,xmm0\r
+ call __vpaes_schedule_round\r
+ dec eax\r
+ jz NEAR L$010schedule_mangle_last\r
+ call __vpaes_schedule_mangle\r
+ pshufd xmm0,xmm0,255\r
+ movdqa [20+esp],xmm7\r
+ movdqa xmm7,xmm6\r
+ call L$_vpaes_schedule_low_round\r
+ movdqa xmm7,[20+esp]\r
+ jmp NEAR L$012loop_schedule_256\r
+align 16\r
+L$010schedule_mangle_last:\r
+ lea ebx,[384+ebp]\r
+ test edi,edi\r
+ jnz NEAR L$013schedule_mangle_last_dec\r
+ movdqa xmm1,[256+ecx*1+ebp]\r
+db 102,15,56,0,193\r
+ lea ebx,[352+ebp]\r
+ add edx,32\r
+L$013schedule_mangle_last_dec:\r
+ add edx,-16\r
+ pxor xmm0,[336+ebp]\r
+ call __vpaes_schedule_transform\r
+ movdqu [edx],xmm0\r
+ pxor xmm0,xmm0\r
+ pxor xmm1,xmm1\r
+ pxor xmm2,xmm2\r
+ pxor xmm3,xmm3\r
+ pxor xmm4,xmm4\r
+ pxor xmm5,xmm5\r
+ pxor xmm6,xmm6\r
+ pxor xmm7,xmm7\r
+ ret\r
+align 16\r
+__vpaes_schedule_192_smear:\r
+ pshufd xmm1,xmm6,128\r
+ pshufd xmm0,xmm7,254\r
+ pxor xmm6,xmm1\r
+ pxor xmm1,xmm1\r
+ pxor xmm6,xmm0\r
+ movdqa xmm0,xmm6\r
+ movhlps xmm6,xmm1\r
+ ret\r
+align 16\r
+__vpaes_schedule_round:\r
+ movdqa xmm2,[8+esp]\r
+ pxor xmm1,xmm1\r
+db 102,15,58,15,202,15\r
+db 102,15,58,15,210,15\r
+ pxor xmm7,xmm1\r
+ pshufd xmm0,xmm0,255\r
+db 102,15,58,15,192,1\r
+ movdqa [8+esp],xmm2\r
+L$_vpaes_schedule_low_round:\r
+ movdqa xmm1,xmm7\r
+ pslldq xmm7,4\r
+ pxor xmm7,xmm1\r
+ movdqa xmm1,xmm7\r
+ pslldq xmm7,8\r
+ pxor xmm7,xmm1\r
+ pxor xmm7,[336+ebp]\r
+ movdqa xmm4,[ebp-16]\r
+ movdqa xmm5,[ebp-48]\r
+ movdqa xmm1,xmm4\r
+ pandn xmm1,xmm0\r
+ psrld xmm1,4\r
+ pand xmm0,xmm4\r
+ movdqa xmm2,[ebp-32]\r
+db 102,15,56,0,208\r
+ pxor xmm0,xmm1\r
+ movdqa xmm3,xmm5\r
+db 102,15,56,0,217\r
+ pxor xmm3,xmm2\r
+ movdqa xmm4,xmm5\r
+db 102,15,56,0,224\r
+ pxor xmm4,xmm2\r
+ movdqa xmm2,xmm5\r
+db 102,15,56,0,211\r
+ pxor xmm2,xmm0\r
+ movdqa xmm3,xmm5\r
+db 102,15,56,0,220\r
+ pxor xmm3,xmm1\r
+ movdqa xmm4,[32+ebp]\r
+db 102,15,56,0,226\r
+ movdqa xmm0,[48+ebp]\r
+db 102,15,56,0,195\r
+ pxor xmm0,xmm4\r
+ pxor xmm0,xmm7\r
+ movdqa xmm7,xmm0\r
+ ret\r
+align 16\r
+__vpaes_schedule_transform:\r
+ movdqa xmm2,[ebp-16]\r
+ movdqa xmm1,xmm2\r
+ pandn xmm1,xmm0\r
+ psrld xmm1,4\r
+ pand xmm0,xmm2\r
+ movdqa xmm2,[ebx]\r
+db 102,15,56,0,208\r
+ movdqa xmm0,[16+ebx]\r
+db 102,15,56,0,193\r
+ pxor xmm0,xmm2\r
+ ret\r
+align 16\r
+__vpaes_schedule_mangle:\r
+ movdqa xmm4,xmm0\r
+ movdqa xmm5,[128+ebp]\r
+ test edi,edi\r
+ jnz NEAR L$014schedule_mangle_dec\r
+ add edx,16\r
+ pxor xmm4,[336+ebp]\r
+db 102,15,56,0,229\r
+ movdqa xmm3,xmm4\r
+db 102,15,56,0,229\r
+ pxor xmm3,xmm4\r
+db 102,15,56,0,229\r
+ pxor xmm3,xmm4\r
+ jmp NEAR L$015schedule_mangle_both\r
+align 16\r
+L$014schedule_mangle_dec:\r
+ movdqa xmm2,[ebp-16]\r
+ lea esi,[416+ebp]\r
+ movdqa xmm1,xmm2\r
+ pandn xmm1,xmm4\r
+ psrld xmm1,4\r
+ pand xmm4,xmm2\r
+ movdqa xmm2,[esi]\r
+db 102,15,56,0,212\r
+ movdqa xmm3,[16+esi]\r
+db 102,15,56,0,217\r
+ pxor xmm3,xmm2\r
+db 102,15,56,0,221\r
+ movdqa xmm2,[32+esi]\r
+db 102,15,56,0,212\r
+ pxor xmm2,xmm3\r
+ movdqa xmm3,[48+esi]\r
+db 102,15,56,0,217\r
+ pxor xmm3,xmm2\r
+db 102,15,56,0,221\r
+ movdqa xmm2,[64+esi]\r
+db 102,15,56,0,212\r
+ pxor xmm2,xmm3\r
+ movdqa xmm3,[80+esi]\r
+db 102,15,56,0,217\r
+ pxor xmm3,xmm2\r
+db 102,15,56,0,221\r
+ movdqa xmm2,[96+esi]\r
+db 102,15,56,0,212\r
+ pxor xmm2,xmm3\r
+ movdqa xmm3,[112+esi]\r
+db 102,15,56,0,217\r
+ pxor xmm3,xmm2\r
+ add edx,-16\r
+L$015schedule_mangle_both:\r
+ movdqa xmm1,[256+ecx*1+ebp]\r
+db 102,15,56,0,217\r
+ add ecx,-16\r
+ and ecx,48\r
+ movdqu [edx],xmm3\r
+ ret\r
+global _vpaes_set_encrypt_key\r
+align 16\r
+_vpaes_set_encrypt_key:\r
+L$_vpaes_set_encrypt_key_begin:\r
+ push ebp\r
+ push ebx\r
+ push esi\r
+ push edi\r
+ mov esi,DWORD [20+esp]\r
+ lea ebx,[esp-56]\r
+ mov eax,DWORD [24+esp]\r
+ and ebx,-16\r
+ mov edx,DWORD [28+esp]\r
+ xchg ebx,esp\r
+ mov DWORD [48+esp],ebx\r
+ mov ebx,eax\r
+ shr ebx,5\r
+ add ebx,5\r
+ mov DWORD [240+edx],ebx\r
+ mov ecx,48\r
+ mov edi,0\r
+ lea ebp,[(L$_vpaes_consts+0x30-L$016pic_point)]\r
+ call __vpaes_schedule_core\r
+L$016pic_point:\r
+ mov esp,DWORD [48+esp]\r
+ xor eax,eax\r
+ pop edi\r
+ pop esi\r
+ pop ebx\r
+ pop ebp\r
+ ret\r
+global _vpaes_set_decrypt_key\r
+align 16\r
+_vpaes_set_decrypt_key:\r
+L$_vpaes_set_decrypt_key_begin:\r
+ push ebp\r
+ push ebx\r
+ push esi\r
+ push edi\r
+ mov esi,DWORD [20+esp]\r
+ lea ebx,[esp-56]\r
+ mov eax,DWORD [24+esp]\r
+ and ebx,-16\r
+ mov edx,DWORD [28+esp]\r
+ xchg ebx,esp\r
+ mov DWORD [48+esp],ebx\r
+ mov ebx,eax\r
+ shr ebx,5\r
+ add ebx,5\r
+ mov DWORD [240+edx],ebx\r
+ shl ebx,4\r
+ lea edx,[16+ebx*1+edx]\r
+ mov edi,1\r
+ mov ecx,eax\r
+ shr ecx,1\r
+ and ecx,32\r
+ xor ecx,32\r
+ lea ebp,[(L$_vpaes_consts+0x30-L$017pic_point)]\r
+ call __vpaes_schedule_core\r
+L$017pic_point:\r
+ mov esp,DWORD [48+esp]\r
+ xor eax,eax\r
+ pop edi\r
+ pop esi\r
+ pop ebx\r
+ pop ebp\r
+ ret\r
+global _vpaes_encrypt\r
+align 16\r
+_vpaes_encrypt:\r
+L$_vpaes_encrypt_begin:\r
+ push ebp\r
+ push ebx\r
+ push esi\r
+ push edi\r
+ lea ebp,[(L$_vpaes_consts+0x30-L$018pic_point)]\r
+ call __vpaes_preheat\r
+L$018pic_point:\r
+ mov esi,DWORD [20+esp]\r
+ lea ebx,[esp-56]\r
+ mov edi,DWORD [24+esp]\r
+ and ebx,-16\r
+ mov edx,DWORD [28+esp]\r
+ xchg ebx,esp\r
+ mov DWORD [48+esp],ebx\r
+ movdqu xmm0,[esi]\r
+ call __vpaes_encrypt_core\r
+ movdqu [edi],xmm0\r
+ mov esp,DWORD [48+esp]\r
+ pop edi\r
+ pop esi\r
+ pop ebx\r
+ pop ebp\r
+ ret\r
+global _vpaes_decrypt\r
+align 16\r
+_vpaes_decrypt:\r
+L$_vpaes_decrypt_begin:\r
+ push ebp\r
+ push ebx\r
+ push esi\r
+ push edi\r
+ lea ebp,[(L$_vpaes_consts+0x30-L$019pic_point)]\r
+ call __vpaes_preheat\r
+L$019pic_point:\r
+ mov esi,DWORD [20+esp]\r
+ lea ebx,[esp-56]\r
+ mov edi,DWORD [24+esp]\r
+ and ebx,-16\r
+ mov edx,DWORD [28+esp]\r
+ xchg ebx,esp\r
+ mov DWORD [48+esp],ebx\r
+ movdqu xmm0,[esi]\r
+ call __vpaes_decrypt_core\r
+ movdqu [edi],xmm0\r
+ mov esp,DWORD [48+esp]\r
+ pop edi\r
+ pop esi\r
+ pop ebx\r
+ pop ebp\r
+ ret\r
+global _vpaes_cbc_encrypt\r
+align 16\r
+_vpaes_cbc_encrypt:\r
+L$_vpaes_cbc_encrypt_begin:\r
+ push ebp\r
+ push ebx\r
+ push esi\r
+ push edi\r
+ mov esi,DWORD [20+esp]\r
+ mov edi,DWORD [24+esp]\r
+ mov eax,DWORD [28+esp]\r
+ mov edx,DWORD [32+esp]\r
+ sub eax,16\r
+ jc NEAR L$020cbc_abort\r
+ lea ebx,[esp-56]\r
+ mov ebp,DWORD [36+esp]\r
+ and ebx,-16\r
+ mov ecx,DWORD [40+esp]\r
+ xchg ebx,esp\r
+ movdqu xmm1,[ebp]\r
+ sub edi,esi\r
+ mov DWORD [48+esp],ebx\r
+ mov DWORD [esp],edi\r
+ mov DWORD [4+esp],edx\r
+ mov DWORD [8+esp],ebp\r
+ mov edi,eax\r
+ lea ebp,[(L$_vpaes_consts+0x30-L$021pic_point)]\r
+ call __vpaes_preheat\r
+L$021pic_point:\r
+ cmp ecx,0\r
+ je NEAR L$022cbc_dec_loop\r
+ jmp NEAR L$023cbc_enc_loop\r
+align 16\r
+L$023cbc_enc_loop:\r
+ movdqu xmm0,[esi]\r
+ pxor xmm0,xmm1\r
+ call __vpaes_encrypt_core\r
+ mov ebx,DWORD [esp]\r
+ mov edx,DWORD [4+esp]\r
+ movdqa xmm1,xmm0\r
+ movdqu [esi*1+ebx],xmm0\r
+ lea esi,[16+esi]\r
+ sub edi,16\r
+ jnc NEAR L$023cbc_enc_loop\r
+ jmp NEAR L$024cbc_done\r
+align 16\r
+L$022cbc_dec_loop:\r
+ movdqu xmm0,[esi]\r
+ movdqa [16+esp],xmm1\r
+ movdqa [32+esp],xmm0\r
+ call __vpaes_decrypt_core\r
+ mov ebx,DWORD [esp]\r
+ mov edx,DWORD [4+esp]\r
+ pxor xmm0,[16+esp]\r
+ movdqa xmm1,[32+esp]\r
+ movdqu [esi*1+ebx],xmm0\r
+ lea esi,[16+esi]\r
+ sub edi,16\r
+ jnc NEAR L$022cbc_dec_loop\r
+L$024cbc_done:\r
+ mov ebx,DWORD [8+esp]\r
+ mov esp,DWORD [48+esp]\r
+ movdqu [ebx],xmm1\r
+L$020cbc_abort:\r
+ pop edi\r
+ pop esi\r
+ pop ebx\r
+ pop ebp\r
+ ret\r