]> git.proxmox.com Git - mirror_edk2.git/blobdiff - CryptoPkg/Library/OpensslLib/IA32/crypto/aes/vpaes-x86.nasm
CryptoPkg/OpensslLib: Commit the auto-generated assembly files for IA32
[mirror_edk2.git] / CryptoPkg / Library / OpensslLib / IA32 / crypto / aes / vpaes-x86.nasm
diff --git a/CryptoPkg/Library/OpensslLib/IA32/crypto/aes/vpaes-x86.nasm b/CryptoPkg/Library/OpensslLib/IA32/crypto/aes/vpaes-x86.nasm
new file mode 100644 (file)
index 0000000..cf2e13f
--- /dev/null
@@ -0,0 +1,651 @@
+; 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